📄 server.h
字号:
{ if(listAccess[c].LoginOKIP == IpAddr) { listAccess[c].LoginOKIP = 0; listAccess[c].LastAccessMS = 0; } login_status = 0; } owsServer_HTML_Header(sock, login_status); SEND(sock,"\r\n<div align='center'>Logged out!</div>\r\n"); owsServer_HTML_Footer(sock); return 1; } if( stricmp(key,"/pause")==0 ) { iStop = 1; owsServer_HTML_Header(sock, login_status); SEND(sock,"\r\n<div align='center'>Pause Mode: ON</div>\r\n"); owsServer_HTML_Footer(sock); return 1; } if( stricmp(key,"/play")==0 ) { iStop = 0; owsServer_HTML_Header(sock, login_status); SEND(sock,"\r\n<div align='center'>Pause Mode: OFF</div>\r\n"); owsServer_HTML_Footer(sock); return 1; } if( stricmp(key,"/exit")==0 ) { owsServer_HTML_Header(sock, login_status); SEND(sock,"\r\n<div align='center'>Bye bye</div>\r\n"); owsServer_HTML_Footer(sock); iQuit = 1; return 1; } if( stricmp(key,"/switch")==0) { owsServer_HTML_Header(sock, login_status); /* are we already switching? */ if(iDoNextHost == 1) { char* genURL; /* if nextHost is NOT NULL we are switching to a user-defined host*/ if(nextHost) { genURL = malloc( MAXURLSIZE + 1); GenerateURL(*nextHost,genURL); bufOut = malloc(100 + MAXURLSIZE ); sprintf(bufOut, "\r\n<div align='center'>Switching to %s ...</div>\r\n", genURL); SEND(sock, bufOut); FREE(bufOut); FREE(genURL); } /* we are switching to the next host in the DB*/ else SEND(sock,"\r\n<div align='center'>Switching to the next host...</div>\r\n"); owsServer_HTML_Footer(sock); return 1; } /* we aren't switching */ if(argument[0]==0 || strnicmp(argument,"http/1.",7)==0 ) { bufOut = malloc(10000); strcpy(bufOut,"<div align='center'><form name='switch_form' method='get'> \r\n"); strcat(bufOut," http://<input type='text' name='URL' size='50' maxlength='50'><br> \r\n"); strcat(bufOut," <input type='submit' name='submit' value='Crawl'> \r\n"); strcat(bufOut,"</form></div> \r\n"); strcat(bufOut,"<br><div align='center'><a href='/next'>Switch to the next URL in the DB</a></div> \r\n"); SEND(sock, bufOut); FREE(bufOut); owsServer_HTML_Footer(sock); return 1; } if(argument[0]!=0 && strnicmp(argument,"http/1.",7)!=0) { char *URL; char *httpURL; ReplaceChr(argument,'&','\0'); URL = malloc( strlen(argument) + 10); ReplaceStr(argument,URL,"URL="," "); /* control of length of URL */ if( strlen(URL) >= MAXURLSIZE) { SEND(sock,"\r\n<div align='center'>Wrong URL</div>\r\n"); FREE(URL); owsServer_HTML_Footer(sock); return 1; } httpURL = malloc( MAXURLSIZE + 10); strcpy(httpURL, "http://"); strcat(httpURL, URL); FREE(URL); /* nextHost is freed in ReturnFirstUrl() */ nextHost = malloc(sizeof(struct sHost)); if(ParseUrl(httpURL, nextHost, NULL)==-1) { FREE(nextHost); nextHost = NULL; SEND(sock,"\r\n<div align='center'>Wrong URL</div>\r\n"); } else { char* genURL; iDoNextHost = 1; genURL = malloc( MAXURLSIZE + 10); GenerateURL(*nextHost,genURL); bufOut = malloc( 100 + MAXURLSIZE ); sprintf(bufOut, "\r\n<div align='center'>Switching to %s ...</div>\r\n", genURL); SEND(sock, bufOut); FREE(bufOut); FREE(genURL); } FREE(httpURL); } owsServer_HTML_Footer(sock); return 1; } if( stricmp(key,"/next")==0 ) { iDoNextHost = 1; owsServer_HTML_Header(sock, login_status); SEND(sock,"\r\n<div align='center'>Switching to the next host...</div>\r\n"); owsServer_HTML_Footer(sock); return 1; } if( stricmp(key,"/search")==0) { if(argument[0]==0 || strnicmp(argument,"http/1.",7)==0 ) { owsServer_HTML_Header(sock, login_status); bufOut = malloc(10000); strcpy(bufOut,"<div align='center'><form name='search_form' method='get'> \r\n"); strcat(bufOut," <input type='text' name='query' size='40' maxlength='50'><br> \r\n"); strcat(bufOut," <input type='hidden' name='n' value='0'> \r\n"); strcat(bufOut," <input type='submit' name='submit' value='Search'> \r\n"); strcat(bufOut,"</form></div> \r\n"); SEND(sock, bufOut); FREE(bufOut); owsServer_HTML_Footer(sock); return 1; } if(argument[0]!=0 && strnicmp(argument,"http/1.",7)!=0) { char *query; ReplaceChr(argument,'&','\0'); query = malloc( strlen(argument) + 1); ReplaceStr(argument,query,"query="," "); strtrim(query,query); /* control of the length of query */ if(strlen(query)<MAXUSERQUERYSIZE) IndexedSearchXML2Sock(&gMysqlDB2,query, sock); FREE(query); } return 1; } if( stricmp(key,"/stats")==0 ) { owsServer_HTML_Header(sock, login_status); bufOut = malloc(10000); snprintf(bufOut,10000-1,"<pre>Status: %s\r\n - Host:\t\t%s\r\n - Pages:\t\t%i\r\n - Downloaded:\t\t%i Kb\r\n - Scan time: %is (%s - %i:%i:%i)</pre>\r\n\r\n",(iStop==1)?"PAUSED":"OK",IndexingHost.Host,nPagesViewed,(int)bytesDownloaded/1024,(int)((GetTickCount()-startTimeMS)/1000),startTime,newtime->tm_hour ,newtime->tm_min ,newtime->tm_sec); bufOut[10000-1]=0; SEND(sock, bufOut); FREE(bufOut); owsServer_HTML_Footer(sock); return 1; } return 0;}void owsServer_HTML_Header(SOCKET sock, unsigned int login_status){ char* bufOut; bufOut = malloc(10000); strcpy(bufOut,"<html> \r\n"); strcat(bufOut,"<head> \r\n"); strcat(bufOut,"<title>OWS Serverv0.6</title> \r\n"); strcat(bufOut,"<style type='text/css'> \r\n"); strcat(bufOut,"<!-- \r\n"); strcat(bufOut,".title { \r\n"); strcat(bufOut," font-size: 24px; \r\n"); strcat(bufOut," font-family: Geneva, Arial, Helvetica, sans-serif; \r\n"); strcat(bufOut,"} \r\n"); strcat(bufOut,".menu { \r\n"); strcat(bufOut," font-size: 16px; \r\n"); strcat(bufOut," font-family: Geneva, Arial, Helvetica, sans-serif; \r\n"); strcat(bufOut,"} \r\n"); strcat(bufOut,"--> \r\n"); strcat(bufOut,"</style> \r\n"); strcat(bufOut,"</head> \r\n"); strcat(bufOut,"<table style='border:1px dashed #000000; ' cellpadding='2' cellspacing='2' width='780' align='center'> \r\n"); strcat(bufOut," <tr> \r\n"); strcat(bufOut," <td bgcolor='#BBFFBB' colspan='2' align='center' style='border:1px dashed #000000; '><span class='title'>OWS Server Administration Panel</span></td> \r\n"); strcat(bufOut," </tr> \r\n"); strcat(bufOut," <tr> \r\n"); strcat(bufOut," <td class='menu' style='border:1px dashed #000000; width:60px; ' valign='top' bgcolor='#DFFFDF' width='60'> \r\n"); if(login_status == 0) { strcat(bufOut," <a href='login'>Login</a><br>\r\n"); } else { if(iStop==1) strcat(bufOut," <a href='/play'>Play</a><br> \r\n"); else strcat(bufOut," <a href=\"/pause\">Pause</a><br> \r\n"); strcat(bufOut," <a href=\"/switch\">Switch</a><br> \r\n"); strcat(bufOut," <a href=\"/stats\">Stats</a><br> \r\n"); strcat(bufOut," <a href=\"/search\">Search</a><br> \r\n"); strcat(bufOut," <a href=\"/help\">Help</a><br> \r\n"); /* this server isn't password protected! So we don't need to logout */ if(OWS_SERVER_PASSWORD[0]!=0) strcat(bufOut," <a href=\"/logout\">Logout</a><br> \r\n"); strcat(bufOut," <a href=\"/exit\">Exit</a><br></td> \r\n"); } strcat(bufOut," <td width='710' class='menu'> \r\n"); SEND(sock,bufOut); FREE(bufOut);}void owsServer_HTML_Footer(SOCKET sock){ char* bufOut; bufOut = malloc(1000); strcpy(bufOut," </td> \r\n"); strcat(bufOut," </tr> \r\n"); strcat(bufOut,"</table> \r\n"); strcat(bufOut,"<br> \r\n"); strcat(bufOut,"<br> \r\n"); strcat(bufOut,"<div align='center'>Official Web Site: <a href='http://www.openwebspider.org/'>http://www.openwebspider.org/</a></div> \r\n"); strcat(bufOut,"<br> \r\n"); strcat(bufOut,"<br> \r\n"); strcat(bufOut,"<body> \r\n"); strcat(bufOut,"</body> \r\n"); strcat(bufOut,"</html> \r\n"); SEND(sock,bufOut); FREE(bufOut);}void CheckSession(unsigned long IpAddr){ int c; for(c=0;c<OWSSERVERMAXLOGINS;c++) { /* current session */ /* set last access */ if(listAccess[c].LoginOKIP == IpAddr) listAccess[c].LastAccessMS = GetTickCount(); else /* check the other sessions */ if(listAccess[c].LoginOKIP != 0) { /* this IP last access is more then 10 minutes ago */ if( listAccess[c].LastAccessMS > GetTickCount() && listAccess[c].LastAccessMS - GetTickCount() > (10 * 60 * 1000) ) { /* logout */ listAccess[c].LoginOKIP = 0; listAccess[c].LastAccessMS = 0; } /* LastAccessMS < GetTickCount (update it) [simple solution] */ if( listAccess[c].LastAccessMS < GetTickCount() ) listAccess[c].LastAccessMS = GetTickCount(); } } }#endif/*EOF*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -