/********************************************************************************************************* ** 函数名称: 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; }
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(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; }