static int initWebs() { struct hostent *hp; struct in_addr intaddr; char host[128], dir[128], webdir[128]; char *cp; char_t wbuf[128]; /* * Initialize the socket subsystem */ socketOpen(); #ifdef USER_MANAGEMENT_SUPPORT /* * Initialize the User Management database */ umOpen(); umRestore(T("umconfig.txt")); #endif /* * Define the local Ip address, host name, default home page and the * root web directory. */ if (gethostname(host, sizeof(host)) < 0) { error(E_L, E_LOG, T("Can't get hostname")); return -1; } if ((hp = gethostbyname(host)) == NULL) { error(E_L, E_LOG, T("Can't get host address")); return -1; } memcpy((char *) &intaddr, (char *) hp->h_addr_list[0], (size_t) hp->h_length); /* * Set ../web as the root web. Modify this to suit your needs */ getcwd(dir, sizeof(dir)); if ((cp = strrchr(dir, '/'))) { *cp = '\0'; } sprintf(webdir, "%s/%s", dir, rootWeb); /* * Configure the web server options before opening the web server */ websSetDefaultDir(webdir); cp = inet_ntoa(intaddr); ascToUni(wbuf, cp, min(strlen(cp) + 1, sizeof(wbuf))); websSetIpaddr(wbuf); ascToUni(wbuf, host, min(strlen(host) + 1, sizeof(wbuf))); websSetHost(wbuf); /* * Configure the web server options before opening the web server */ websSetDefaultPage(T("default.asp")); websSetPassword(password); /* * Open the web server on the given port. If that port is taken, try * the next sequential port for up to "retries" attempts. */ websOpenServer(port, retries); /* * First create the URL handlers. Note: handlers are called in sorted order * with the longest path handler examined first. Here we define the security * handler, forms handler and the default web page handler. */ websUrlHandlerDefine(T(""), NULL, 0, websSecurityHandler, WEBS_HANDLER_FIRST); websUrlHandlerDefine(T("/goform"), NULL, 0, websFormHandler, 0); websUrlHandlerDefine(T("/cgi-bin"), NULL, 0, websCgiHandler, 0); websUrlHandlerDefine(T(""), NULL, 0, websDefaultHandler, WEBS_HANDLER_LAST); /* * Now define two test procedures. Replace these with your application * relevant ASP script procedures and form functions. */ websAspDefine(T("aspTest"), aspTest); websFormDefine(T("formTest"), formTest); /* * Create the Form handlers for the User Management pages */ #ifdef USER_MANAGEMENT_SUPPORT formDefineUserMgmt(); #endif /* * Create a handler for the default home page */ websUrlHandlerDefine(T("/"), NULL, 0, websHomePageHandler, 0); return 0; }
static int initWebs(void) { struct in_addr intaddr; #ifdef GA_HOSTNAME_SUPPORT struct hostent *hp; char host[128]; #else //ROY: any ip addr const char *lan_ip = "0.0.0.0";//nvram_bufget(RT2860_NVRAM, "lan_ipaddr"); #endif char webdir[128]; char *cp; char_t wbuf[128]; /* * Initialize the socket subsystem */ socketOpen(); #ifdef USER_MANAGEMENT_SUPPORT /* * Initialize the User Management database */ char *admu = (char *) nvram_bufget(RT2860_NVRAM, "Login"); char *admp = (char *) nvram_bufget(RT2860_NVRAM, "Password"); umOpen(); //umRestore(T("umconfig.txt")); //winfred: instead of using umconfig.txt, we create 'the one' adm defined in nvram umAddGroup(T("adm"), 0x07, AM_DIGEST, FALSE, FALSE); if (admu && strcmp(admu, "") && admp && strcmp(admp, "")) { umAddUser(admu, admp, T("adm"), FALSE, FALSE); umAddAccessLimit(T("/"), AM_DIGEST, FALSE, T("adm")); } else error(E_L, E_LOG, T("gohead.c: Warning: empty administrator account or password")); #endif #ifdef GA_HOSTNAME_SUPPORT /* * Define the local Ip address, host name, default home page and the * root web directory. */ if (gethostname(host, sizeof(host)) < 0) { error(E_L, E_LOG, T("gohead.c: Can't get hostname")); return -1; } if ((hp = gethostbyname(host)) == NULL) { error(E_L, E_LOG, T("gohead.c: Can't get host address")); return -1; } memcpy((char *) &intaddr, (char *) hp->h_addr_list[0], (size_t) hp->h_length); #else /* * get ip address from nvram configuration (we executed initInternet) */ if (NULL == lan_ip) { error(E_L, E_LOG, T("initWebs: cannot find lan_ip in NVRAM")); return -1; } intaddr.s_addr = inet_addr(lan_ip); if (intaddr.s_addr == INADDR_NONE) { error(E_L, E_LOG, T("initWebs: failed to convert %s to binary ip data"), lan_ip); intaddr.s_addr = 0; //return -1; } #endif /* * Set rootWeb as the root web. Modify this to suit your needs */ sprintf(webdir, "%s", rootWeb); /* * Configure the web server options before opening the web server */ websSetDefaultDir(webdir); cp = inet_ntoa(intaddr); ascToUni(wbuf, cp, min(strlen(cp) + 1, sizeof(wbuf))); websSetIpaddr(wbuf); #ifdef GA_HOSTNAME_SUPPORT ascToUni(wbuf, host, min(strlen(host) + 1, sizeof(wbuf))); #else //use ip address (already in wbuf) as host #endif websSetHost(wbuf); /* * Configure the web server options before opening the web server */ websSetDefaultPage(T("default.asp")); websSetPassword(password); /* * Open the web server on the given port. If that port is taken, try * the next sequential port for up to "retries" attempts. */ websOpenServer(port, retries); /* * First create the URL handlers. Note: handlers are called in sorted order * with the longest path handler examined first. Here we define the security * handler, forms handler and the default web page handler. */ websUrlHandlerDefine(T(""), NULL, 0, websSecurityHandler, WEBS_HANDLER_FIRST); websUrlHandlerDefine(T("/goform"), NULL, 0, websFormHandler, 0); websUrlHandlerDefine(T("/cgi-bin"), NULL, 0, websCgiHandler, 0); websUrlHandlerDefine(T(""), NULL, 0, websDefaultHandler, WEBS_HANDLER_LAST); /* * Define our functions */ formDefineUtilities(); formDefineInternet(); #if defined CONFIG_RALINKAPP_SWQOS formDefineQoS(); #endif #if (defined CONFIG_USB) || (defined CONFIG_MMC) formDefineUSB(); #endif #if defined CONFIG_RALINKAPP_MPLAYER formDefineMedia(); #endif formDefineWireless(); #if defined (RTDEV_SUPPORT) formDefineInic(); #elif defined (CONFIG_RT2561_AP) || defined (CONFIG_RT2561_AP_MODULE) formDefineLegacy(); #endif #if defined CONFIG_RT2860V2_STA || defined CONFIG_RT2860V2_STA_MODULE formDefineStation(); #endif formDefineFirewall(); formDefineManagement(); /* * Create the Form handlers for the User Management pages */ #ifdef USER_MANAGEMENT_SUPPORT //formDefineUserMgmt(); winfred: we do it ourselves #endif /* * Create a handler for the default home page */ websUrlHandlerDefine(T("/"), NULL, 0, websHomePageHandler, 0); return 0; }
/********************************************************************************************************* ** 函数名称: initWebs ** 功能描述: 初始化 GoAhead web 服务器工作参数 ** 输 入 : addr 主机地址 ** path web 路径 ** port 端口号 ** 输 出 : ERROR CODE ** 全局变量: ** 调用模块: *********************************************************************************************************/ static int websInit(char *addr, char *path, int port) { int ret; char buffer[64]; char *string; char_t ubuf[128]; struct in_addr inaddr; ret = access(path, 0); if (ret < 0) { return -1; } gchdir(path); if (logFile == NULL) { logFile = fopen("log.txt", "a"); } /* * Configure the web server options before opening the web server */ inaddr.s_addr = inet_addr(addr); string = inet_ntoa_r(inaddr, buffer, sizeof(buffer)); ascToUni(ubuf, string, min(strlen(string) + 1, sizeof(ubuf))); websSetIpaddr(ubuf); ascToUni(ubuf, addr, min(strlen(addr) + 1, sizeof(ubuf))); websSetHost(ubuf); /* * Configure the web server options before opening the web server */ websSetDefaultDir(path); basicSetProductDir(path); websSetDefaultPage(T("home.asp")); #ifdef USER_MANAGEMENT_SUPPORT umOpen(); #endif /* * Open the web server on the given port. If that port is taken, try * the next sequential port for up to "retries" attempts. */ websOpenServer(port, 5); /* * First create the URL handlers. Note: handlers are called in sorted order * with the longest path handler examined first. Here we define the security * handler, forms handler and the default web page handler. */ websUrlHandlerDefine(T(""), NULL, 0, websSecurityHandler, WEBS_HANDLER_FIRST); websUrlHandlerDefine(T("/goform"), NULL, 0, websFormHandler, 0); websUrlHandlerDefine(T("/cgi-bin"), NULL, 0, websCgiHandler, 0); websUrlHandlerDefine(T(""), NULL, 0, websDefaultHandler, WEBS_HANDLER_LAST); /* * Now define two test procedures. Replace these with your application * relevant ASP script procedures and form functions. */ websAspDefine(T("aspTest"), aspTest); websFormDefine(T("formTest"), formTest); /* * Create the Form handlers for the User Management pages */ #ifdef USER_MANAGEMENT_SUPPORT formDefineUserMgmt(); #endif /* * Create a handler for the default home page */ websUrlHandlerDefine(T("/"), NULL, 0, websHomePageHandler, 0); return 0; }
int websPublish(char_t *urlPrefix, char_t *path) { return websUrlHandlerDefine(urlPrefix, path, 0, websPublishHandler, 0); }
MAIN(goahead, int argc, char **argv, char **envp) { char *argp, *auth, *home, *documents, *endpoints, *endpoint, *route, *tok; int argind; route = "route.txt"; auth = "auth.txt"; for (argind = 1; argind < argc; argind++) { argp = argv[argind]; if (*argp != '-') { break; } else if (smatch(argp, "--auth") || smatch(argp, "-a")) { if (argind >= argc) usage(); auth = argv[++argind]; } else if (smatch(argp, "--background") || smatch(argp, "-b")) { websSetBackground(1); } else if (smatch(argp, "--debugger") || smatch(argp, "-d") || smatch(argp, "-D")) { websSetDebug(1); } else if (smatch(argp, "--home")) { if (argind >= argc) usage(); home = argv[++argind]; if (chdir(home) < 0) { error("Can't change directory to %s", home); exit(-1); } } else if (smatch(argp, "--log") || smatch(argp, "-l")) { if (argind >= argc) usage(); logSetPath(argv[++argind]); } else if (smatch(argp, "--verbose") || smatch(argp, "-v")) { logSetPath("stdout:2"); } else if (smatch(argp, "--route") || smatch(argp, "-r")) { route = argv[++argind]; } else if (smatch(argp, "--version") || smatch(argp, "-V")) { printf("%s: %s-%s\n", BIT_PRODUCT, BIT_VERSION, BIT_BUILD_NUMBER); exit(0); } else { usage(); } } documents = BIT_GOAHEAD_DOCUMENTS; if (argc > argind) { documents = argv[argind++]; } initPlatform(); if (websOpen(documents, route) < 0) { error("Can't initialize server. Exiting."); return -1; } logHeader(); if (websLoad(auth) < 0) { error("Can't load %s", auth); return -1; } if (argind < argc) { while (argind < argc) { endpoint = argv[argind++]; if (websListen(endpoint) < 0) { return -1; } } } else { endpoints = sclone(BIT_GOAHEAD_LISTEN); for (endpoint = stok(endpoints, ", \t", &tok); endpoint; endpoint = stok(NULL, ", \t,", &tok)) { if (websListen(endpoint) < 0) { return -1; } } wfree(endpoints); } websDefineHandler("test", testHandler, 0, 0); websAddRoute("/test", "test", 0); #if BIT_GOAHEAD_LEGACY websUrlHandlerDefine("/legacy/", 0, 0, legacyTest, 0); #endif #if BIT_GOAHEAD_JAVASCRIPT websDefineJst("aspTest", aspTest); websDefineJst("bigTest", bigTest); #endif websDefineAction("test", actionTest); websDefineAction("sessionTest", sessionTest); websDefineAction("showTest", showTest); #if BIT_GOAHEAD_UPLOAD websDefineAction("uploadTest", uploadTest); #endif #if BIT_UNIX_LIKE /* Service events till terminated */ if (websGetBackground()) { if (daemon(0, 0) < 0) { error("Can't run as daemon"); return -1; } } #endif websServiceEvents(&finished); trace(1, "Instructed to exit\n"); websClose(); return 0; }
static int initWebs(int demo) { struct in_addr intaddr; char *pString; char host[64], webdir[128]; char_t wbuf[128]; /* * Initialize the socket and sym subsystems */ socketOpen(); symSubOpen(); #ifdef USER_MANAGEMENT_SUPPORT /* * Initialize the User Management database */ umOpen(); umRestore(T("umconfig.txt")); #endif /* * Define the local Ip address, host name, default home page and the * root web directory. */ if (gethostname(host, sizeof(host)) < 0) { error(E_L, E_LOG, T("Can't get hostname")); return -1; } intaddr.s_addr = (unsigned long) hostGetByName(host); /* * Set ../web as the root web. Modify this to suit your needs */ if (demo) { sprintf(webdir, "%s/%s", ROOT_DIR, demoWeb); } else { sprintf(webdir, "%s/%s", ROOT_DIR, rootWeb); } /* * Configure the web server options before opening the web server */ websSetDefaultDir(webdir); pString = inet_ntoa(intaddr); ascToUni(wbuf, pString, min(strlen(pString) + 1, sizeof(wbuf))); free(pString); websSetIpaddr(wbuf); ascToUni(wbuf, host, min(strlen(host) + 1, sizeof(wbuf))); websSetHost(wbuf); /* * Configure the web server options before opening the web server */ websSetDefaultPage(T("default.asp")); websSetPassword(password); /* * Open the web server on the given port. If that port is taken, try * the next sequential port for up to "retries" attempts. */ websOpenServer(port, retries); /* * First create the URL handlers. Note: handlers are called in sorted order * with the longest path handler examined first. Here we define the security * handler, forms handler and the default web page handler. */ websUrlHandlerDefine(T(""), NULL, 0, websSecurityHandler, WEBS_HANDLER_FIRST); websUrlHandlerDefine(T("/goform"), NULL, 0, websFormHandler, 0); websUrlHandlerDefine(T("/cgi-bin"), NULL, 0, websCgiHandler, 0); websUrlHandlerDefine(T(""), NULL, 0, websDefaultHandler, WEBS_HANDLER_LAST); /* * Now define two test procedures. Replace these with your application * relevant ASP script procedures and form functions. */ websAspDefine(T("aspTest"), aspTest); websFormDefine(T("formTest"), formTest); /* * Create the Form handlers for the User Management pages */ #ifdef USER_MANAGEMENT_SUPPORT formDefineUserMgmt(); #endif /* * Create a handler for the default home page */ websUrlHandlerDefine(T("/"), NULL, 0, websHomePageHandler, 0); /* * Provide signal for clean up on termination. */ signal(SIGTERM, websTermSigHandler); signal(SIGKILL, websTermSigHandler); return 0; }
static int initWebs(void) { struct hostent* hp; struct in_addr intaddr; char host[128], webdir[128]; char_t wbuf[128]; /* * Initialize the socket subsystem */ socketOpen(); /* * Define the local Ip address, host name, default home page and the * root web directory. */ if (gethostname(host, sizeof(host)) < 0) { error(E_L, E_LOG, T("Can't get hostname")); return -1; } /* intaddr.s_addr = (unsigned long) hostGetByName(host); */ if ((hp = gethostbyname(host)) == NULL) { error(E_L, E_LOG, T("Can't get host address")); return -1; } memcpy((char *) &intaddr, (char *) hp->h_addr_list[0], (size_t) hp->h_length); #if 0 /* * Set /TFTP/x.y.z.w/goahead as the root web. Modify to suit your needs */ sprintf(webdir, "/TFTP/%s/%s", tftpServer, rootWeb); #else sprintf(webdir, "/"); #endif /* * Configure the web server options before opening the web server */ websSetDefaultDir(webdir); ascToUni(wbuf, inet_ntoa(intaddr), sizeof(wbuf)); websSetIpaddr(wbuf); ascToUni(wbuf, host, sizeof(wbuf)); websSetHost(wbuf); /* * Configure the web server options before opening the web server */ #if 0 websSetDefaultPage(T("default.asp")); #else websSetDefaultPage(T("index.html")); #endif websSetPassword(password); /* * Open the web server on the given port. If that port is taken, try * the next sequential port for up to "retries" attempts. */ websOpenServer(port, retries); /* * First create the URL handlers. Note: handlers are called in sorted order * with the longest path handler examined first. Here we define the security * handler, forms handler and the default web page handler. */ websUrlHandlerDefine(T(""), NULL, 0, websSecurityHandler, WEBS_HANDLER_FIRST); websUrlHandlerDefine(T("/goform"), NULL, 0, websFormHandler, 0); websUrlHandlerDefine(T(""), NULL, 0, websDefaultHandler, WEBS_HANDLER_LAST); /* * Now define two test procedures. Replace these with your application * relevant ASP script procedures and form functions. */ websAspDefine(T("aspTest"), aspTest); websFormDefine(T("formTest"), formTest); /* * Create a handler for the default home page */ websUrlHandlerDefine(T("/"), NULL, 0, websHomePageHandler, 0); return 0; }
static int initWebs() { char host[128]; char *cp; char_t wbuf[128]; /* * Initialize networking. */ init_all_network_interfaces(); /* * Initialize the socket subsystem */ socketOpen(); /* * Configure the web server options before opening the web server */ websSetDefaultDir("/"); cp = inet_ntoa(eth0_bootp_data.bp_yiaddr); ascToUni(wbuf, cp, min(strlen(cp) + 1, sizeof(wbuf))); websSetIpaddr(wbuf); ascToUni(wbuf, host, min(strlen(host) + 1, sizeof(wbuf))); websSetHost(wbuf); /* * Configure the web server options before opening the web server */ websSetDefaultPage(T("default.asp")); websSetPassword(password); /* * Open the web server on the given port. If that port is taken, try * the next sequential port for up to "retries" attempts. */ websOpenServer(port, retries); /* * First create the URL handlers. Note: handlers are called in sorted order * with the longest path handler examined first. Here we define the security * handler, forms handler and the default web page handler. */ websUrlHandlerDefine(T(""), NULL, 0, websSecurityHandler, WEBS_HANDLER_FIRST); websUrlHandlerDefine(T("/goform"), NULL, 0, websFormHandler, 0); websUrlHandlerDefine(T(""), NULL, 0, websDefaultHandler, WEBS_HANDLER_LAST); /* * Now define two test procedures. Replace these with your application * relevant ASP script procedures and form functions. */ websAspDefine(T("aspTest"), aspTest); websFormDefine(T("formTest"), formTest); /* * Create a handler for the default home page */ websUrlHandlerDefine(T("/"), NULL, 0, websHomePageHandler, 0); return 0; }
MAIN(goahead, int argc, char **argv, char **envp) { char *argp, *auth, *home, *documents, *endpoints, *endpoint, *route, *tok, *lspec; int argind, duration; route = "route.txt"; auth = "auth.txt"; duration = 0; for (argind = 1; argind < argc; argind++) { argp = argv[argind]; if (*argp != '-') { break; } else if (smatch(argp, "--auth") || smatch(argp, "-a")) { if (argind >= argc) usage(); auth = argv[++argind]; #if ME_UNIX_LIKE && !MACOSX } else if (smatch(argp, "--background") || smatch(argp, "-b")) { websSetBackground(1); #endif } else if (smatch(argp, "--debugger") || smatch(argp, "-d") || smatch(argp, "-D")) { websSetDebug(1); } else if (smatch(argp, "--duration")) { if (argind >= argc) usage(); duration = atoi(argv[++argind]); } else if (smatch(argp, "--home")) { if (argind >= argc) usage(); home = argv[++argind]; if (chdir(home) < 0) { error("Cannot change directory to %s", home); exit(-1); } } else if (smatch(argp, "--log") || smatch(argp, "-l")) { if (argind >= argc) usage(); logSetPath(argv[++argind]); } else if (smatch(argp, "--verbose") || smatch(argp, "-v")) { logSetPath("stdout:2"); } else if (smatch(argp, "--route") || smatch(argp, "-r")) { route = argv[++argind]; } else if (smatch(argp, "--version") || smatch(argp, "-V")) { printf("%s\n", ME_VERSION); exit(0); } else if (*argp == '-' && isdigit((uchar) argp[1])) { lspec = sfmt("stdout:%s", &argp[1]); logSetPath(lspec); wfree(lspec); } else { usage(); } } documents = ME_GOAHEAD_DOCUMENTS; if (argc > argind) { documents = argv[argind++]; } initPlatform(); if (websOpen(documents, route) < 0) { error("Cannot initialize server. Exiting."); return -1; } logHeader(); if (websLoad(auth) < 0) { error("Cannot load %s", auth); return -1; } if (argind < argc) { while (argind < argc) { endpoint = argv[argind++]; if (websListen(endpoint) < 0) { return -1; } } } else { endpoints = sclone(ME_GOAHEAD_LISTEN); for (endpoint = stok(endpoints, ", \t", &tok); endpoint; endpoint = stok(NULL, ", \t,", &tok)) { if (websListen(endpoint) < 0) { return -1; } } wfree(endpoints); } websDefineHandler("test", testHandler, 0, 0, 0); websAddRoute("/test", "test", 0); #if ME_GOAHEAD_LEGACY websUrlHandlerDefine("/legacy/", 0, 0, legacyTest, 0); #endif #if ME_GOAHEAD_JAVASCRIPT websDefineJst("aspTest", aspTest); websDefineJst("bigTest", bigTest); #endif websDefineAction("test", actionTest); websDefineAction("sessionTest", sessionTest); websDefineAction("showTest", showTest); #if ME_GOAHEAD_UPLOAD && !ME_ROM websDefineAction("uploadTest", uploadTest); #endif #if ME_UNIX_LIKE && !MACOSX /* Service events till terminated */ if (websGetBackground()) { if (daemon(0, 0) < 0) { error("Cannot run as daemon"); return -1; } } #endif if (duration) { printf("Running for %d secs\n", duration); websStartEvent(duration * 1000, (WebsEventProc) exitProc, 0); } websServiceEvents(&finished); logmsg(1, "Instructed to exit\n"); websClose(); return 0; }