selfcare init
This commit is contained in:
234
proxy_c/mini_cli.c
Normal file
234
proxy_c/mini_cli.c
Normal file
@@ -0,0 +1,234 @@
|
||||
#include "common.h"
|
||||
#include "rest_proxy.h"
|
||||
|
||||
#define DEBUG_PORT 4865
|
||||
|
||||
static int sockfd = 0;
|
||||
static int client_fd = -1;
|
||||
|
||||
extern int init_socket(unsigned int local_addr, short local_port, char stype, int noblock_flag);
|
||||
extern int setnodelay(int fd);
|
||||
extern int printf_stat(FILE *fd);
|
||||
extern int reset_data_sn();
|
||||
|
||||
extern void rest_proxy_print_stat();
|
||||
extern int dba_verify_vc_with_pwd(const char *vc_pwd, char card_info[][1024], char *enc_password);
|
||||
extern int dba_db_sql_query_only_execute_real(const char *sql, char result[][1024], int MAX_ROWS, int MAX_FIELDS );
|
||||
extern void crm_set_notificaton_flag(int flag);
|
||||
extern void crm_set_test_mode_flag(int flag);
|
||||
|
||||
char cli_cmd[128];
|
||||
int cli_cmd_len = 0;
|
||||
int cli_read_cmd(char *buf)
|
||||
{
|
||||
int len = cli_cmd_len;
|
||||
|
||||
if(len>0)
|
||||
strcpy(buf, cli_cmd);
|
||||
cli_cmd_len = 0;
|
||||
|
||||
return len;
|
||||
}
|
||||
|
||||
int cli_send_debug(char *buf)
|
||||
{
|
||||
if(buf != NULL)
|
||||
send(client_fd,buf,strlen(buf),MSG_NOSIGNAL);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
int save_cli_cmd(char *cmd)
|
||||
{
|
||||
strcpy(cli_cmd, cmd);
|
||||
cli_cmd_len = strlen(cmd);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
#ifdef TEST_RESTPROXY
|
||||
extern int g_pps_sendquery_to_restproxy_num;
|
||||
extern int g_pps_sendtopup_to_restproxy_num;
|
||||
extern int g_pps_sendtrans_to_restproxy_num;
|
||||
#endif
|
||||
int recv_command()
|
||||
{
|
||||
int i = 0;
|
||||
socklen_t server_addr_len = 0;
|
||||
int nbytes/*, len*/;
|
||||
struct sockaddr_in sin;
|
||||
char buf[128],cmd;
|
||||
FILE *fp = NULL;
|
||||
|
||||
// len = sizeof(struct sockaddr);
|
||||
|
||||
nbytes = recvfrom(client_fd, buf, 128, 0,(struct sockaddr *) &sin, &server_addr_len);
|
||||
if(nbytes == 0)
|
||||
{
|
||||
client_fd = -1;
|
||||
return 0;
|
||||
}
|
||||
if(nbytes < 0)
|
||||
return 0;
|
||||
|
||||
if(toupper(buf[0]) == 'Q')
|
||||
{
|
||||
close(client_fd);
|
||||
client_fd = -1;
|
||||
return 0;
|
||||
}
|
||||
save_cli_cmd(buf);
|
||||
// send(client_fd,">",1,MSG_NOSIGNAL);
|
||||
// return 1;
|
||||
for(i = 0; i < nbytes; ++i)
|
||||
{
|
||||
if(buf[i] == '\r' && buf[i+1] == '\n')
|
||||
{
|
||||
buf[i] = '\0';
|
||||
}
|
||||
}
|
||||
if(strncasecmp(buf, "test query", 10) == 0)
|
||||
{
|
||||
send(client_fd, ">test query OK!\n", 16, MSG_NOSIGNAL);
|
||||
|
||||
#ifdef TEST_RESTPROXY
|
||||
if(!g_pps_sendquery_to_restproxy_num)
|
||||
g_pps_sendquery_to_restproxy_num = atoi(&buf[11]);
|
||||
#endif
|
||||
goto END;
|
||||
}
|
||||
if(strncasecmp(buf, "test topup", 10) == 0)
|
||||
{
|
||||
send(client_fd, ">test topup OK!\n", 16, MSG_NOSIGNAL);
|
||||
#ifdef TEST_RESTPROXY
|
||||
if(!g_pps_sendtopup_to_restproxy_num)
|
||||
g_pps_sendtopup_to_restproxy_num = atoi(&buf[11]);
|
||||
#endif
|
||||
goto END;
|
||||
}
|
||||
if(strncasecmp(buf, "test transfer", 13) == 0)
|
||||
{
|
||||
send(client_fd, ">test transfer OK!\n", 19, MSG_NOSIGNAL);
|
||||
#ifdef TEST_RESTPROXY
|
||||
if(!g_pps_sendtrans_to_restproxy_num)
|
||||
g_pps_sendtrans_to_restproxy_num = atoi(&buf[14]);
|
||||
#endif
|
||||
goto END;
|
||||
}
|
||||
if(strncasecmp(buf, "emu enable=", 11) == 0)
|
||||
{
|
||||
int ivalue = atoi(&buf[11]);
|
||||
if(ivalue == 0)
|
||||
send(client_fd, ">Disable Emulator, OK!\n", 23, MSG_NOSIGNAL);
|
||||
else
|
||||
send(client_fd, ">Enable Emulator, OK!\n", 22, MSG_NOSIGNAL);
|
||||
rest_conf_set_emulator_flag(ivalue);
|
||||
goto END;
|
||||
}
|
||||
if(strncasecmp(buf, "get stat", 8) == 0)
|
||||
{
|
||||
rest_proxy_print_stat();
|
||||
|
||||
send(client_fd, ">get stat OK!\n", 15, MSG_NOSIGNAL);
|
||||
goto END;
|
||||
}
|
||||
if(strncasecmp(buf, "test card=", 10) == 0)
|
||||
{
|
||||
dba_verify_vc_with_pwd(&buf[10], NULL, NULL);
|
||||
|
||||
send(client_fd, ">get stat OK!\n", 15, MSG_NOSIGNAL);
|
||||
goto END;
|
||||
}
|
||||
if(strncasecmp(buf, "test query", 10) == 0)
|
||||
{
|
||||
char sql[4096]="select * from tb_sms_info limt 1";
|
||||
char result[30][1024];
|
||||
dba_db_sql_query_only_execute_real(sql, result, 1, 30);
|
||||
|
||||
send(client_fd, ">test tariff query OK!\n", 15, MSG_NOSIGNAL);
|
||||
|
||||
goto END;
|
||||
}
|
||||
if(strncasecmp(buf, "enable notification", 19) == 0)
|
||||
{
|
||||
crm_set_notificaton_flag(1);
|
||||
goto END;
|
||||
}
|
||||
if(strncasecmp(buf, "disable notification", 20) == 0)
|
||||
{
|
||||
crm_set_notificaton_flag(0);
|
||||
goto END;
|
||||
}
|
||||
if(strncasecmp(buf, "test mode=", 10) == 0)
|
||||
{
|
||||
crm_set_test_mode_flag((int)(buf[10]));
|
||||
|
||||
send(client_fd, ">set test mode OK!\n", 15, MSG_NOSIGNAL);
|
||||
goto END;
|
||||
}
|
||||
|
||||
if(nbytes>0)
|
||||
{
|
||||
cmd = toupper(buf[0]);
|
||||
switch(cmd)
|
||||
{
|
||||
case 'P':
|
||||
fp = fopen("stat.txt","w");
|
||||
// printf_stat(fp);
|
||||
send(client_fd,">OK!\n",4,MSG_NOSIGNAL);
|
||||
fclose(fp);
|
||||
break;
|
||||
case 'S':
|
||||
send(client_fd,">OK!\n",4,MSG_NOSIGNAL);
|
||||
// reset_data_sn();
|
||||
break;
|
||||
case 'Q':
|
||||
close(client_fd);
|
||||
client_fd = -1;
|
||||
break;
|
||||
/*
|
||||
default:
|
||||
send(client_fd,">UNK CMD!\n",15,MSG_NOSIGNAL);
|
||||
send(client_fd,">",6,MSG_NOSIGNAL);
|
||||
break;
|
||||
*/
|
||||
}
|
||||
send(client_fd,">",1,MSG_NOSIGNAL);
|
||||
}
|
||||
END:
|
||||
return nbytes;
|
||||
}
|
||||
|
||||
int debug_init()
|
||||
{
|
||||
sockfd = init_socket(0, DEBUG_PORT,1,1);
|
||||
listen(sockfd, 2);
|
||||
return 1;
|
||||
}
|
||||
void debug_monitor(void *arg)
|
||||
{
|
||||
prctl(PR_SET_NAME, "debug_monitor");
|
||||
|
||||
socklen_t clilen;
|
||||
struct sockaddr_in cliaddr;
|
||||
|
||||
debug_init();
|
||||
|
||||
while(1)
|
||||
{
|
||||
if(client_fd<0)
|
||||
{
|
||||
client_fd = accept(sockfd,(struct sockaddr *)&cliaddr,&clilen);
|
||||
if(client_fd>0)
|
||||
{
|
||||
setnodelay(client_fd);
|
||||
send(client_fd, ">", 1, MSG_NOSIGNAL);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
recv_command();
|
||||
}
|
||||
usleep(10000);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user