void define_alias(char* key, char** cmd) { alias_t test; test = get_alias(key); if(test.valid_alias != -1) { //fprintf(stderr, "Alias already defined with key: %s\n", key); modify_alias(key, cmd); return; } alias_t a; a.key = key; a.cmd = malloc(sizeof(cmd)); a.cmd = cmd; a.valid_alias = 1; aliases[alias_cc] = a; alias_cc++; }
/*************************************************************************** Function: cgiMain Description: Input: Output: Return: 0 OK, other Error Others: none ***************************************************************************/ int cgiMain() { char id[FEATURE_GDGL_ID_LEN + 1]; //12 + terminating null char password[FEATURE_GDGL_PASSWD_MAX_LEN + 1]; //16 + terminating null char old_alias[FEATURE_GDGL_ACCOUNT_MAX_LEN + 1]; //16 + terminating null char new_alias[FEATURE_GDGL_ACCOUNT_MAX_LEN + 1]; //16 + terminating null char gateway_id[FEATURE_GDGL_ID_LEN + 1]; //12 + terminating null char gateway_passwd[FEATURE_GDGL_PASSWD_MAX_LEN + 1]; cgiFormResultType cgi_re; int res; cgiHeaderContentType("application/json"); //MIME // Read ID res = read_id(gateway_id); if (res != 0) { client_admin_response("noid", res, clientAdminResultStr[res]); mAliasPushToCb(res); return res; } // Check ID cgi_re = cgiFormString("id", id, FEATURE_GDGL_ID_LEN + 1); res = check_id(cgi_re, id, gateway_id); if (res != 0) { client_admin_response(gateway_id, res, clientAdminResultStr[res]); mAliasPushToCb(res); return res; } // Read password res = read_password(gateway_passwd); if (res != 0) { client_admin_response(gateway_id, res, clientAdminResultStr[res]); mAliasPushToCb(res); return res; } // Check password cgi_re = cgiFormString("password", password, FEATURE_GDGL_PASSWD_MAX_LEN + 1); res = check_password(cgi_re, password, gateway_passwd); if (res != 0) { client_admin_response(gateway_id, res, clientAdminResultStr[res]); mAliasPushToCb(res); return res; } // Check new alias cgi_re = cgiFormString("new_alias", new_alias, FEATURE_GDGL_ACCOUNT_MAX_LEN + 1); res = check_new_alias(cgi_re, new_alias); if (res != 0) { client_admin_response(gateway_id, res, clientAdminResultStr[res]); mAliasPushToCb(res); return res; } // Modify alias, first check old, second push to cloud, third write new cgi_re = cgiFormString("old_alias", old_alias, FEATURE_GDGL_ACCOUNT_MAX_LEN + 1); res = modify_alias(cgi_re, old_alias, new_alias); if (res != 0) { client_admin_response(gateway_id, res, clientAdminResultStr[res]); mAliasPushToCb(res); return res; } res = mAliasPushToCb(0); if(res !=0){ client_admin_response(gateway_id, res, clientAdminResultStr[res]); return res; } //增解逻辑:kill模块gdgl_channel system("killall gdgl_channel"); // all right client_admin_response(gateway_id, clientAdminSuccess, clientAdminResultStr[clientAdminSuccess]); return 0; }