Merge branch 'master' of http://git.komect.net/ISG/secogateway
This commit is contained in:
commit
31a50ce4d9
|
@ -5,6 +5,7 @@ ret_code dhcp_client_config_chk(uint source, uint *config_type,
|
||||||
pointer output, int *output_len)
|
pointer output, int *output_len)
|
||||||
{
|
{
|
||||||
ret_code ret = RET_OK;
|
ret_code ret = RET_OK;
|
||||||
|
/*
|
||||||
cJSON *root=NULL, *operate=NULL;
|
cJSON *root=NULL, *operate=NULL;
|
||||||
root = cJSON_Parse(input);
|
root = cJSON_Parse(input);
|
||||||
if(NULL == root)
|
if(NULL == root)
|
||||||
|
@ -15,7 +16,7 @@ ret_code dhcp_client_config_chk(uint source, uint *config_type,
|
||||||
operate = cJSON_GetObjectItem(root, "operate");
|
operate = cJSON_GetObjectItem(root, "operate");
|
||||||
if(operate){
|
if(operate){
|
||||||
*config_type = CM_CONFIG_SET;
|
*config_type = CM_CONFIG_SET;
|
||||||
}
|
}*/
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -503,3 +503,23 @@ int check_mask(char *mask)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
char *wan_if_str(){
|
||||||
|
char ifname[MAX_IF_NUM][INTERFACE_NAMSIZ];
|
||||||
|
memset(ifname, 0, sizeof(ifname));
|
||||||
|
//printf("ifname size: %d\n", sizeof(ifname));
|
||||||
|
int wan_count = if_wan_get(ifname, MAX_IF_NUM);
|
||||||
|
char *wanif;
|
||||||
|
memset(wanif, 0, sizeof(ifname)+wan_count+1);
|
||||||
|
//printf("wan get cnt %d\n", wan_count);
|
||||||
|
int i;
|
||||||
|
for(i = 0; i < wan_count; i++)
|
||||||
|
{
|
||||||
|
strcat(wanif, " ");
|
||||||
|
strcat(wanif, ifname[i]);
|
||||||
|
}
|
||||||
|
free(ifname);
|
||||||
|
if(!strcmp(wanif, "")){
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
return wanif;
|
||||||
|
}
|
||||||
|
|
|
@ -5,7 +5,7 @@ ret_code dhcp_relay_config_chk(uint source,uint *config_type,
|
||||||
pointer output, int *output_len)
|
pointer output, int *output_len)
|
||||||
{
|
{
|
||||||
ret_code ret = RET_OK;
|
ret_code ret = RET_OK;
|
||||||
*config_type = CM_CONFIG_SET;
|
//*config_type = CM_CONFIG_SET;
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -44,6 +44,7 @@ ret_code dhcp_relay_config_proc(uint source, uint config_type,
|
||||||
|
|
||||||
if(!strcmp(operate->valuestring, "close relay")){
|
if(!strcmp(operate->valuestring, "close relay")){
|
||||||
//删除配置文件
|
//删除配置文件
|
||||||
|
/*
|
||||||
memset(cmd, 0, len + 1);
|
memset(cmd, 0, len + 1);
|
||||||
snprintf(cmd, len, "sed -r -i 's/SERVERS=\"[ \\t0-9\\.]*\"/SERVERS=\"\"/g' /etc/default/isc-dhcp-relay"); //\" 不能写成\\"
|
snprintf(cmd, len, "sed -r -i 's/SERVERS=\"[ \\t0-9\\.]*\"/SERVERS=\"\"/g' /etc/default/isc-dhcp-relay"); //\" 不能写成\\"
|
||||||
system(cmd);
|
system(cmd);
|
||||||
|
@ -51,6 +52,16 @@ ret_code dhcp_relay_config_proc(uint source, uint config_type,
|
||||||
snprintf(cmd, len, "sed -r -i 's/INTERFACES=\"[ \\ta-zA-Z0-9\\.]*\"/INTERFACES=\"\"/g' /etc/default/isc-dhcp-relay"); //\" 不能写成\\"
|
snprintf(cmd, len, "sed -r -i 's/INTERFACES=\"[ \\ta-zA-Z0-9\\.]*\"/INTERFACES=\"\"/g' /etc/default/isc-dhcp-relay"); //\" 不能写成\\"
|
||||||
system(cmd);
|
system(cmd);
|
||||||
system("service isc-dhcp-relay stop");
|
system("service isc-dhcp-relay stop");
|
||||||
|
dhcp_relay_info_save("","");*/
|
||||||
|
|
||||||
|
memset(cmd, 0, len + 1);
|
||||||
|
snprintf(cmd, len, "sed -r -i 's/SERVERS=/#SERVERS/g' /etc/default/isc-dhcp-relay"); //\" 不能写成\\"
|
||||||
|
system(cmd);
|
||||||
|
memset(cmd, 0, len + 1);
|
||||||
|
snprintf(cmd, len, "sed -r -i 's/INTERFACES=/#INTERFACES=/g' /etc/default/isc-dhcp-relay"); //\" 不能写成\\"
|
||||||
|
system(cmd);
|
||||||
|
system("sed -r -i '/#/d' /etc/default/isc-dhcp-relay");
|
||||||
|
system("systemctl stop isc-dhcp-relay.service");
|
||||||
}
|
}
|
||||||
if(!strcmp(operate->valuestring, "start relay")){
|
if(!strcmp(operate->valuestring, "start relay")){
|
||||||
interfaces = cJSON_GetObjectItem(root, "interfaces");
|
interfaces = cJSON_GetObjectItem(root, "interfaces");
|
||||||
|
@ -67,22 +78,50 @@ ret_code dhcp_relay_config_proc(uint source, uint config_type,
|
||||||
goto INPUT_ERROR;
|
goto INPUT_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
memset(cmd, 0, len + 1);
|
memset(cmd, 0, len + 1);
|
||||||
snprintf(cmd, len, "sed -r -i 's/SERVERS=\"[ \\t0-9\\.]*\"/SERVERS=\"%s\"/g' /etc/default/isc-dhcp-relay", servers->valuestring); //\" 不能写成\\"
|
snprintf(cmd, len, "sed -r -i 's/SERVERS=\"[ \\t0-9\\.]*\"/SERVERS=\"%s\"/g' /etc/default/isc-dhcp-relay", servers->valuestring); //\" 不能写成\\"
|
||||||
system(cmd);
|
system(cmd);
|
||||||
|
|
||||||
|
if(!wan_if_str()){
|
||||||
|
ret = RET_INPUTERR;
|
||||||
|
goto INPUT_ERROR;
|
||||||
|
}
|
||||||
memset(cmd, 0, len + 1);
|
memset(cmd, 0, len + 1);
|
||||||
snprintf(cmd, len, "sed -r -i 's/INTERFACES=\"[ \\ta-zA-Z0-9\\.]*\"/INTERFACES=\"%s\"/g' /etc/default/isc-dhcp-relay", interfaces->valuestring); //\" 不能写成\\"
|
snprintf(cmd, len, "sed -r -i 's/INTERFACES=\"[ \\ta-zA-Z0-9\\.]*\"/INTERFACES=\"%s%s\"/g' /etc/default/isc-dhcp-relay", interfaces->valuestring, wan_if_str()); //\" 不能写成\\"
|
||||||
system(cmd);
|
system(cmd);
|
||||||
/*运行配置文件*/
|
|
||||||
//system("service isc-dhcp-relay restart");
|
//system("service isc-dhcp-relay restart");
|
||||||
system("systemctl restart isc-dhcp-relay.service");
|
system("systemctl restart isc-dhcp-relay.service");
|
||||||
|
dhcp_relay_info_save(servers->valuestring, interfaces->valuestring);*/
|
||||||
|
|
||||||
|
if(!wan_if_str()){
|
||||||
|
ret = RET_INPUTERR;
|
||||||
|
goto INPUT_ERROR;
|
||||||
|
}
|
||||||
|
memset(cmd, 0, len + 1);
|
||||||
|
snprintf(cmd, len, "echo 'SERVERS=\"%s\"' >> /etc/default/isc-dhcp-relay", servers->valuestring);
|
||||||
|
system(cmd);
|
||||||
|
memset(cmd, 0, len + 1);
|
||||||
|
snprintf(cmd, len, "echo 'INTERFACES=\"%s%s\"' >> /etc/default/isc-dhcp-relay", interfaces->valuestring, wan_if_str());
|
||||||
|
system(cmd);
|
||||||
|
|
||||||
|
//save relay info
|
||||||
|
memset(cmd, 0, len + 1);
|
||||||
|
snprintf(cmd, len, "echo '#serversINFO=%s;' >> /etc/default/isc-dhcp-relay", servers->valuestring);
|
||||||
|
system(cmd);
|
||||||
|
memset(cmd, 0, len + 1);
|
||||||
|
snprintf(cmd, len, "echo '#ifINFO=%s;' >> /etc/default/isc-dhcp-relay", interfaces->valuestring);
|
||||||
|
system(cmd);
|
||||||
|
|
||||||
|
//resatrt service
|
||||||
|
system("systemctl restart isc-dhcp-relay.service");
|
||||||
}
|
}
|
||||||
|
|
||||||
INPUT_ERROR:
|
INPUT_ERROR:
|
||||||
if(cmd)
|
if(cmd)
|
||||||
{
|
{
|
||||||
memset(cmd, 0, len + 1);
|
|
||||||
free(cmd);
|
free(cmd);
|
||||||
|
cmd = NULL;
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
|
@ -91,6 +130,51 @@ ret_code dhcp_relay_config_get_all(uint source, pointer output, int *output_len)
|
||||||
ret_code ret = RET_OK;
|
ret_code ret = RET_OK;
|
||||||
char *fname="/etc/default/isc-dhcp-relay";
|
char *fname="/etc/default/isc-dhcp-relay";
|
||||||
FILE *fp;
|
FILE *fp;
|
||||||
|
char *servers = NULL, *interfaces = NULL;
|
||||||
|
cJSON *root = NULL;
|
||||||
|
char *out = NULL;
|
||||||
|
char line[1000] = {0};
|
||||||
|
if ((fp=fopen(fname,"r"))==NULL){
|
||||||
|
printf("open file %s failed\n",fname);
|
||||||
|
return RET_ERR;
|
||||||
|
}
|
||||||
|
fseek(fp,0,SEEK_END);
|
||||||
|
rewind(fp);
|
||||||
|
|
||||||
|
servers = (char *)malloc(50);
|
||||||
|
memset(servers, 0, 50);
|
||||||
|
interfaces = (char *)malloc(1000);
|
||||||
|
memset(interfaces, 0, 1000);
|
||||||
|
|
||||||
|
root = cJSON_CreateObject();
|
||||||
|
|
||||||
|
while((fgets(line,1000,fp))!=NULL){
|
||||||
|
char *startSERVERS = strstr(line, "#serversINFO=");
|
||||||
|
char *endSERVERS = strstr(line, ";");
|
||||||
|
if((startSERVERS!=NULL) && (endSERVERS!=NULL)){
|
||||||
|
memcpy(servers,startSERVERS+13,endSERVERS-startSERVERS-13);
|
||||||
|
cJSON_AddStringToObject(root, "servers", servers);
|
||||||
|
}
|
||||||
|
char *startIF = strstr(line, "#ifINFO=");
|
||||||
|
char *endIF = strstr(line, ";");
|
||||||
|
if((startIF!=NULL) && (endIF!=NULL)){
|
||||||
|
memcpy(interfaces,startIF+8,endIF-startIF-8);
|
||||||
|
cJSON_AddStringToObject(root, "interfaces", interfaces);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(servers != NULL){
|
||||||
|
free(servers);
|
||||||
|
servers = NULL;
|
||||||
|
}
|
||||||
|
if(interfaces!= NULL){
|
||||||
|
free(interfaces);
|
||||||
|
interfaces= NULL;
|
||||||
|
}
|
||||||
|
fclose(fp);
|
||||||
|
out = cJSON_PrintUnformatted(root);
|
||||||
|
*output_len = strlen(out) + 1;
|
||||||
|
memcpy(output, out, *output_len);
|
||||||
|
free(out);
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -68,6 +68,7 @@ int check_segment(char *segment, char *mask);
|
||||||
|
|
||||||
int check_mask(char *mask);
|
int check_mask(char *mask);
|
||||||
|
|
||||||
|
char *wan_if_str();
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -47,9 +47,12 @@ typedef enum { WEBM_HANDLE_INVALID_INDEX = -1,
|
||||||
|
|
||||||
WEBM_HANDLE_CONFIG_HOST_SET,
|
WEBM_HANDLE_CONFIG_HOST_SET,
|
||||||
WEBM_HANDLE_CONFIG_HOST_GET,
|
WEBM_HANDLE_CONFIG_HOST_GET,
|
||||||
|
WEBM_HANDLE_CONFIG_HOST_GET_ALL,
|
||||||
WEBM_HANDLE_CONFIG_SUBNET_SET,
|
WEBM_HANDLE_CONFIG_SUBNET_SET,
|
||||||
WEBM_HANDLE_CONFIG_SUBNET_GET,
|
WEBM_HANDLE_CONFIG_SUBNET_GET,
|
||||||
|
WEBM_HANDLE_CONFIG_SUBNET_GET_ALL,
|
||||||
WEBM_HANDLE_CONFIG_RELAY_SET,
|
WEBM_HANDLE_CONFIG_RELAY_SET,
|
||||||
|
WEBM_HANDLE_CONFIG_RELAY_GET_ALL,
|
||||||
WEBM_HANDLE_CONFIG_CLIENT_SET,
|
WEBM_HANDLE_CONFIG_CLIENT_SET,
|
||||||
WEBM_HANDLE_CONFIG_CLIENT_GET,
|
WEBM_HANDLE_CONFIG_CLIENT_GET,
|
||||||
WEBM_HANDLE_CONFIG_DHCPD_LEASE_GET,
|
WEBM_HANDLE_CONFIG_DHCPD_LEASE_GET,
|
||||||
|
@ -241,6 +244,13 @@ extern int webm_config_send_proc(server *srv, uint32_t config_type, uint64 confg
|
||||||
DHCP_HOST_CONFIG, \
|
DHCP_HOST_CONFIG, \
|
||||||
webm_config_send_proc \
|
webm_config_send_proc \
|
||||||
}, \
|
}, \
|
||||||
|
{\
|
||||||
|
WEBM_HANDLE_CONFIG_HOST_GET_ALL, \
|
||||||
|
"/FSG-GF/host-get-all", \
|
||||||
|
CM_CONFIG_GET_ALL, \
|
||||||
|
DHCP_HOST_CONFIG, \
|
||||||
|
webm_config_send_proc \
|
||||||
|
}, \
|
||||||
{\
|
{\
|
||||||
WEBM_HANDLE_CONFIG_SUBNET_SET, \
|
WEBM_HANDLE_CONFIG_SUBNET_SET, \
|
||||||
"/FSG-CF/subnet-set", \
|
"/FSG-CF/subnet-set", \
|
||||||
|
@ -255,6 +265,13 @@ extern int webm_config_send_proc(server *srv, uint32_t config_type, uint64 confg
|
||||||
DHCP_SUBNET_CONFIG, \
|
DHCP_SUBNET_CONFIG, \
|
||||||
webm_config_send_proc \
|
webm_config_send_proc \
|
||||||
}, \
|
}, \
|
||||||
|
{\
|
||||||
|
WEBM_HANDLE_CONFIG_SUBNET_GET_ALL, \
|
||||||
|
"/FSG-GF/subnet-get-all", \
|
||||||
|
CM_CONFIG_GET_ALL, \
|
||||||
|
DHCP_SUBNET_CONFIG, \
|
||||||
|
webm_config_send_proc \
|
||||||
|
}, \
|
||||||
{\
|
{\
|
||||||
WEBM_HANDLE_CONFIG_RELAY_SET, \
|
WEBM_HANDLE_CONFIG_RELAY_SET, \
|
||||||
"/FSG-CF/relay-set", \
|
"/FSG-CF/relay-set", \
|
||||||
|
@ -262,6 +279,13 @@ extern int webm_config_send_proc(server *srv, uint32_t config_type, uint64 confg
|
||||||
DHCP_RELAY_CONFIG, \
|
DHCP_RELAY_CONFIG, \
|
||||||
webm_config_send_proc \
|
webm_config_send_proc \
|
||||||
}, \
|
}, \
|
||||||
|
{\
|
||||||
|
WEBM_HANDLE_CONFIG_RELAY_GET_ALL, \
|
||||||
|
"/FSG-GF/relay-get-all", \
|
||||||
|
CM_CONFIG_GET_ALL, \
|
||||||
|
DHCP_RELAY_CONFIG, \
|
||||||
|
webm_config_send_proc \
|
||||||
|
}, \
|
||||||
{\
|
{\
|
||||||
WEBM_HANDLE_CONFIG_CLIENT_SET, \
|
WEBM_HANDLE_CONFIG_CLIENT_SET, \
|
||||||
"/FSG-CF/client-set", \
|
"/FSG-CF/client-set", \
|
||||||
|
|
Loading…
Reference in New Issue