selfcare init
This commit is contained in:
229
proxy_c/selfcare_config.c
Normal file
229
proxy_c/selfcare_config.c
Normal file
@@ -0,0 +1,229 @@
|
||||
#include "selfcare_config.h"
|
||||
#include "common.h"
|
||||
#include "log.h"
|
||||
|
||||
|
||||
#define SELFCARE_PROXY_DEFAULT_CONF_FILE "./conf/selfcare_proxy.conf"
|
||||
|
||||
#define MAX_ERRCODE (5000)
|
||||
#define MAX_MESSAGE_LEN (100)
|
||||
static char g_errcode_map_message[MAX_ERRCODE][MAX_MESSAGE_LEN];
|
||||
|
||||
|
||||
static selfcare_config_s g_selfcare_conf;
|
||||
|
||||
void _selfcare_config_str(const char* buffer, const char* key, char* val)
|
||||
{
|
||||
char *pos = NULL;
|
||||
char *pos_val_start = NULL;
|
||||
/* first address is start of the line */
|
||||
pos = strstr(buffer, key);
|
||||
if(NULL != pos && buffer == pos)
|
||||
{
|
||||
pos_val_start = strstr(pos, "=");
|
||||
|
||||
/* remove \r or \n which first appear */
|
||||
pos = pos_val_start;
|
||||
while(pos)
|
||||
{
|
||||
if(*pos == '\r' || *pos == '\n' || *pos == '\0')
|
||||
break;
|
||||
pos++;
|
||||
}
|
||||
if(pos)
|
||||
*pos = '\0';
|
||||
|
||||
if(NULL != pos_val_start)
|
||||
{
|
||||
strcpy(val, pos_val_start + 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void _selfcare_config_i16(const char* buffer, const char* key, short unsigned int* val)
|
||||
{
|
||||
char *pos = NULL;
|
||||
char *pos_val_start = NULL;
|
||||
/* first address is start of the line */
|
||||
pos = strstr(buffer, key);
|
||||
if(NULL != pos && buffer == pos)
|
||||
{
|
||||
pos_val_start = strstr(pos, "=");
|
||||
|
||||
/* remove \r or \n which first appear */
|
||||
pos = pos_val_start;
|
||||
while(pos)
|
||||
{
|
||||
if(*pos == '\r' || *pos == '\n' || *pos == '\0')
|
||||
break;
|
||||
pos++;
|
||||
}
|
||||
if(pos)
|
||||
*pos = '\0';
|
||||
|
||||
if(NULL != pos_val_start)
|
||||
{
|
||||
*val = atoi( pos_val_start + 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void _selfcare_config_i32(const char* buffer, const char* key, unsigned int* val)
|
||||
{
|
||||
char *pos = NULL;
|
||||
char *pos_val_start = NULL;
|
||||
/* first address is start of the line */
|
||||
pos = strstr(buffer, key);
|
||||
if(NULL != pos && buffer == pos)
|
||||
{
|
||||
pos_val_start = strstr(pos, "=");
|
||||
|
||||
/* remove \r or \n which first appear */
|
||||
pos = pos_val_start;
|
||||
while(pos)
|
||||
{
|
||||
if(*pos == '\r' || *pos == '\n' || *pos == '\0')
|
||||
break;
|
||||
pos++;
|
||||
}
|
||||
if(pos)
|
||||
*pos = '\0';
|
||||
|
||||
if(NULL != pos_val_start)
|
||||
{
|
||||
*val = atoi( pos_val_start + 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void _selfcare_config_ipport(const char* buffer,
|
||||
const char* key,
|
||||
unsigned int* ip,
|
||||
char* ip_str,
|
||||
unsigned short* port)
|
||||
{
|
||||
char buffer_ip[16] = {0};
|
||||
// char buffer_port[4] = {0};
|
||||
char *pos = NULL;
|
||||
char *pos_ip_start = NULL;
|
||||
char *pos_ip_end = NULL;
|
||||
/* first address is start of the line */
|
||||
pos = strstr(buffer, key);
|
||||
if(NULL != pos && buffer == pos)
|
||||
{
|
||||
pos_ip_start = strstr(pos, "=");
|
||||
if(NULL != pos_ip_start)
|
||||
{
|
||||
pos_ip_end = strstr(pos_ip_start + 1, ":");
|
||||
if(NULL != pos_ip_end)
|
||||
{
|
||||
memcpy(buffer_ip, pos_ip_start + 1, (pos_ip_end - 1) - (pos_ip_start + 1) + 1);
|
||||
if(ip_str)
|
||||
{
|
||||
strcpy(ip_str, buffer_ip);
|
||||
}
|
||||
*ip = inet_addr(buffer_ip);
|
||||
*port = atoi(pos_ip_end + 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
void _selfcare_config_errcodemapmsg(const char* buffer)
|
||||
{
|
||||
char buf_map[MAX_MESSAGE_LEN] = {0};
|
||||
|
||||
_selfcare_config_str(buffer, "errcode_map_message", buf_map);
|
||||
if(buf_map[0] != '\0')
|
||||
{
|
||||
char *p_1 = strstr(buf_map, "[");
|
||||
char *p_2 = strstr(buf_map, ",");
|
||||
char *p_3 = strstr(buf_map, "]");
|
||||
if(p_1 && p_2 && p_3)
|
||||
{
|
||||
char errcode_str[MAX_MESSAGE_LEN] = {0};
|
||||
memcpy(errcode_str, p_1 + 1, p_2 - (p_1 + 1) );
|
||||
|
||||
char errmsg_str[MAX_MESSAGE_LEN] = {0};
|
||||
memcpy(errmsg_str, p_2 + 1, p_3 - (p_2 + 1) );
|
||||
|
||||
int err_code = atoi(errcode_str);
|
||||
strcpy(g_errcode_map_message[err_code%MAX_ERRCODE], errmsg_str);
|
||||
|
||||
LOG_D("[rest_proxy] load errorcodemap. [%d,%s]\n", err_code, errmsg_str);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
char *rest_proxy_errcodemsg(const unsigned int errcode)
|
||||
{
|
||||
if(g_errcode_map_message[errcode%MAX_ERRCODE][0] == '\0')
|
||||
{
|
||||
return "unkow";
|
||||
}
|
||||
|
||||
return g_errcode_map_message[errcode%MAX_ERRCODE];
|
||||
}
|
||||
|
||||
int selfcare_config_init(const char *cnf_file)
|
||||
{
|
||||
#define BUFFER_LEN 1024
|
||||
FILE* fd;
|
||||
char buffer[BUFFER_LEN] = {0};
|
||||
|
||||
if(cnf_file == NULL)
|
||||
{
|
||||
g_selfcare_conf.cnf_file = SELFCARE_PROXY_DEFAULT_CONF_FILE;
|
||||
}
|
||||
|
||||
/* Create input file descriptor */
|
||||
fd = fopen (g_selfcare_conf.cnf_file, "r");
|
||||
if (fd == NULL)
|
||||
{
|
||||
perror ("open");
|
||||
return 2;
|
||||
}
|
||||
|
||||
/* Copy process */
|
||||
while((fgets(buffer, BUFFER_LEN, fd)) != NULL)
|
||||
{
|
||||
if(buffer[0] == '#')
|
||||
continue;
|
||||
_selfcare_config_ipport(buffer, "udp_localIPPort", &g_selfcare_conf.udp_local_ip, NULL, &g_selfcare_conf.udp_local_port);
|
||||
_selfcare_config_ipport(buffer, "udp_ocsIPPort", &g_selfcare_conf.udp_ocs_ip, NULL, &g_selfcare_conf.udp_ocs_port);
|
||||
_selfcare_config_i16(buffer, "http_localPort", &g_selfcare_conf.http_local_port);
|
||||
_selfcare_config_i32(buffer, "sms_notify_usage_75", &g_selfcare_conf.sms_notify_type);
|
||||
_selfcare_config_str(buffer, "authcode_url", g_selfcare_conf.authcode_url);
|
||||
_selfcare_config_str(buffer, "query_userdata_url", g_selfcare_conf.query_userdata_url);
|
||||
_selfcare_config_str(buffer, "bundle_subs_url", g_selfcare_conf.bundle_subs_url);
|
||||
_selfcare_config_str(buffer, "bundle_usage_url", g_selfcare_conf.bundle_usage_url);
|
||||
_selfcare_config_str(buffer, "recharge_url", g_selfcare_conf.recharge_url);
|
||||
_selfcare_config_str(buffer, "transfer_url", g_selfcare_conf.transfer_url);
|
||||
_selfcare_config_str(buffer, "recharge_card_url", g_selfcare_conf.recharge_card_url);
|
||||
_selfcare_config_str(buffer, "check_balance_url", g_selfcare_conf.check_balance_url);
|
||||
_selfcare_config_str(buffer, "query_balane_url", g_selfcare_conf.query_balane_url);
|
||||
_selfcare_config_str(buffer, "payment_url", g_selfcare_conf.payment_url);
|
||||
_selfcare_config_str(buffer, "sms_deliver_url", g_selfcare_conf.sms_deliver_url);
|
||||
_selfcare_config_str(buffer, "create_account_url", g_selfcare_conf.create_account_url);
|
||||
_selfcare_config_str(buffer, "update_subs_url", g_selfcare_conf.update_subs_url);
|
||||
_selfcare_config_str(buffer, "delete_subs_url", g_selfcare_conf.delete_subs_url);
|
||||
|
||||
|
||||
_selfcare_config_errcodemapmsg(buffer);
|
||||
|
||||
memset(buffer, 0x00, BUFFER_LEN);
|
||||
}
|
||||
|
||||
fclose (fd);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int selfcare_config_uninit(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
selfcare_config_s* selfcare_config_get(void)
|
||||
{
|
||||
return &g_selfcare_conf;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user