⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 server.h

📁 网页抓取程序
💻 H
📖 第 1 页 / 共 2 页
字号:
			{				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,"&nbsp;</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: &nbsp;&nbsp;<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 + -