void common_redirect(void) { if (atoi(webcgi_safeget("_ajax", ""))) { send_header(200, NULL, mime_html, 0); web_puts("OK"); } else { redirect(webcgi_safeget("_redirect", "/")); } }
static void wo_service(char *url) { int n; exec_service(webcgi_safeget("_service", "")); if ((n = atoi(webcgi_safeget("_sleep", "2"))) <= 0) n = 2; sleep(n); common_redirect(); }
void wo_ping(char *url) { char cmd[256]; const char *addr; addr = webcgi_get("addr"); if (!check_addr(addr, 64)) return; killall("ping", SIGTERM); web_puts("\npingdata = '"); sprintf(cmd, "ping -c %d -s %d %s", atoi(webcgi_safeget("count", "0")), atoi(webcgi_safeget("size", "0")), addr); web_pipecmd(cmd, WOF_JAVASCRIPT); web_puts("';"); }
void asp_resmsg(int argc, char **argv) { char *p; if ((p = js_string(webcgi_safeget("resmsg", (argc > 0) ? argv[0] : ""))) == NULL) return; web_printf("\nresmsg='%s';\n", p); free(p); }
void wo_trace(char *url) { char cmd[256]; const char *addr; addr = webcgi_get("addr"); if (!check_addr(addr, 64)) return; killall("traceroute", SIGTERM); web_puts("\ntracedata = '"); sprintf(cmd, "traceroute -I -m %u -w %u %s", atoi(webcgi_safeget("hops", "0")), atoi(webcgi_safeget("wait", "0")), addr); web_pipecmd(cmd, WOF_JAVASCRIPT); web_puts("';"); }
static void wo_tomato(char *url) { char *v; int i; int ajax; int nvset; const char *red; int commit; // _dprintf("tomato.cgi\n"); red = webcgi_safeget("_redirect", ""); if (!*red) send_header(200, NULL, mime_html, 0); commit = atoi(webcgi_safeget("_commit", "1")); ajax = atoi(webcgi_safeget("_ajax", "0")); nvset = atoi(webcgi_safeget("_nvset", "1")); if (nvset) { if (!save_variables(0)) { if (ajax) { web_printf("@msg:%s", resmsg_get()); } else { parse_asp("error.asp"); } return; } commit = save_variables(1) && commit; resmsg_set("設定已儲存."); } rboot = atoi(webcgi_safeget("_reboot", "0")); if (rboot) { parse_asp("reboot.asp"); } else { if (ajax) { web_printf("@msg:%s", resmsg_get()); } else if (atoi(webcgi_safeget("_moveip", "0"))) { parse_asp("saved-moved.asp"); } else if (!*red) { parse_asp("saved.asp"); } } if (commit) { _dprintf("commit from tomato.cgi\n"); if (!nvram_match("debug_nocommit", "1")) { nvram_commit(); } } if ((v = webcgi_get("_service")) != NULL) { if (!*red) { if (ajax) web_printf(" 某些服務已重新啟動..."); web_close(); } sleep(1); if (*v == '*') { kill(1, SIGHUP); } else if (*v != 0) { exec_service(v); } } for (i = atoi(webcgi_safeget("_sleep", "0")); i > 0; --i) sleep(1); if (*red) redirect(red); if (rboot) { web_close(); sleep(1); kill(1, SIGTERM); } }
const char *resmsg_get(void) { return webcgi_safeget("resmsg", ""); }