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

📄 poll.c

📁 Linux内核监控工具。 Linux内核监控工具。 Linux内核监控工具。
💻 C
📖 第 1 页 / 共 2 页
字号:
 {  if(smtppointer->down==1)  {   send_to_server("HTTP","INFO", 1, smtppointer, "respmd: HTTP server: %s is up.", smtppointer->name);  }  smtppointer->down=0;  smtppointer->up=1; } else {  len=0;  len2=0;  while(len2!=2) //find end of the first line of response  {   if(*(tmp_buff+len)==' ')   len2++;   len++;  }  read_buf[0]='\0';  strncpy(read_buf,tmp_buff,len);  read_buf[len]='\0';  len2=len;  	//Lets see if we can find end of line   while(len2!=0) {   if(read_buf[len2]=='\r')    break;   else    len2--;  }  if(len2!=0)   read_buf[len2]='\0';  if(smtppointer->url[0]=='\0')   strcat(smtppointer->url,"/");  switch(return_code)  {   case 300:    send_to_server("HTTP","WARNING", 1, smtppointer, "respmd: (300) Multiple WWW page choices in: %s", smtppointer->name);    break;   case 301:    send_to_server("HTTP","WARNING", 1, smtppointer, "respmd: (301) WWW page %s from: %s Moved Permanently", smtppointer->url, smtppointer->name);    break;   case 302:    send_to_server("HTTP","WARNING", 1, smtppointer, "respmd: (302) WWW page %s from: %s Moved Temporarily", smtppointer->url, smtppointer->name);    break;   case 305:    send_to_server("HTTP","WARNING", 1, smtppointer, "respmd: (305) Use proxy to get WWW page %s from: %s", smtppointer->url, smtppointer->name);    break;   case 401:    send_to_server("HTTP","WARNING", 1, smtppointer, "respmd: (401) Unauthorized to get WWW page %s from: %s", smtppointer->url, smtppointer->name);    break;   case 403:    send_to_server("HTTP","WARNING", 1, smtppointer, "respmd: (403) Forbidden to get WWW page %s from: %s", smtppointer->url, smtppointer->name);    break;   case 404:    send_to_server("HTTP","WARNING", 1, smtppointer, "respmd: (404) WWW page %s not found from: %s", smtppointer->url, smtppointer->name);    break;   case 407:    send_to_server("HTTP","ERROR", 1, smtppointer, "respmd: (407) Proxy Authentication required to get WWW page %s from: %s", smtppointer->url, smtppointer->name);    break;   default :    send_to_server("HTTP","ERROR", 2, smtppointer, "respmd: Failed to get WWW page %s from: %s. %d %s", smtppointer->url, smtppointer->name,return_code,read_buf);  } } //Lets process the results ends close(sockfd);  //if(tmp_buff!=NULL)  free(p_tmp_buff); return(0);}/****************************************************************///NNTP POLL CODE/***************************************************************/int poll_nntp(struct smtps_t *smtppointer){ int sockfd;    // socket. int n=0,len=0,ok=0; char read_buf[301]="\0"; char response[4]="\0"; char error_msg[100]="\0";  //we use this to send entry to server char err_msg[100]="\0";  //store error we get from polled server char *serv="119"; struct addrinfo hints, *res, *ressave; struct timeval tv; tv.tv_sec = 40; tv.tv_usec = 0; bzero(&hints, sizeof(struct addrinfo)); hints.ai_family = AF_UNSPEC; hints.ai_socktype=SOCK_STREAM;  if(smtppointer->port[0] == '\0')  n = getaddrinfo(smtppointer->name,serv,&hints, &res); else  n = getaddrinfo(smtppointer->name,smtppointer->port,&hints, &res); if(n != 0) {  sprintf(error_msg,"respmd: getaddrinfo failed for NNTP server: %s, %s",smtppointer->name,gai_strerror(n));  if(client(SERVER_IP, SERVER_PORT, LOCALHOSTN, "ERROR", error_msg, smtppointer->name, "NONE", "DOWN", "NNTP") < 0)   slog(2, "poll.c:nntp: error while sending to server.");  else   slog(2,"poll.c: getaddrinfo failed for NNTP server: %s, %s",smtppointer->name,gai_strerror(n));  smtppointer->down=1;  smtppointer->up=0;  return 0; } n=0; ressave=res; do {  //connect loop starts  sockfd=socket(res->ai_family, res->ai_socktype, res->ai_protocol);  if(sockfd<0)  {   slog(2,"poll.c:nntp: Error socket: %s",strerror(errno));   return -1;  }  // 'Call' the server.  n = connect(sockfd, res->ai_addr,res->ai_addrlen);  if(n < 0)  {   if(errno == ETIMEDOUT || errno == EINTR)   {     //            status  1up 2down     send_to_server("NNTP","ERROR", 2, smtppointer, "respmd: NNTP server: %s is down. Connection timeout.", smtppointer->name);   } else    if(errno == ECONNREFUSED)    {     send_to_server("NNTP","ERROR", 2, smtppointer, "respmd: NNTP server: %s is down. Connection refused.", smtppointer->name);    } else {     sprintf(error_msg,"respmd: NNTP server: %s down. Unknown error.",smtppointer->name);     send_to_server("NNTP","ERROR", 2, smtppointer, "respmd: NNTP server: %s is down. %s", smtppointer->name,strerror(errno));    }   smtppointer->down=1;   smtppointer->up=0;   freeaddrinfo(ressave);   return 0;  } else {   break;  }  //alarm(0); } while( (res = res->ai_next) != NULL);  //connect loop end if(res == NULL)   slog(2,"poll.c:nntp: connection to: %s failed",smtppointer->name); freeaddrinfo(ressave); //set write timeout setsockopt(sockfd,SOL_SOCKET,SO_SNDTIMEO,&tv,sizeof(tv)); //set read timeout setsockopt(sockfd,SOL_SOCKET,SO_RCVTIMEO,&tv,sizeof(tv)); len=read(sockfd, read_buf, 300);    // Read from the server. if(len<0) {  len = send_to_server("NNTP","ERROR", 2, smtppointer, "poll.c: Error while reading from: %s %s", smtppointer->name,strerror(errno));  if(len!=0)   slog(2,"poll.c:nntp: Error while reading from: %s %s",smtppointer->name,strerror(errno));  close(sockfd);  return(0); } read_buf[len]='\0'; strncpy(response,read_buf,3); response[3]='\0';  //slog(1,"DEBUG RESPONSE1: %s",response); if(strcmp(response,"200")==0 || strcmp(response,"201")==0)  //did we get connection {  ok++;  read_buf[0]='\0';  strcat(read_buf,"mode reader");  //We request reader mode shud work allways  strcat(read_buf,"\r\n");  len=strlen(read_buf);  len=write(sockfd, read_buf, len);  read_buf[0]='\0';  len=read(sockfd, read_buf, 300);    // Read from the server.  if(len<0)  {   len = send_to_server("NNTP","ERROR", 2, smtppointer, "poll.c: Error while reading from: %s %s", smtppointer->name,strerror(errno));   if(len!=0)    slog(2,"poll.c:nntp: Error while reading from: %s %s",smtppointer->name,strerror(errno));   close(sockfd);   return(0);  }  read_buf[len]='\0';  strncpy(response,read_buf,3);  response[3]='\0';   //slog(1,"DEBUG RESPONSE2: %s   LEN: %d",read_buf,len);   if(strcmp(response,"200")==0 || strcmp(response,"201")==0)   ok++;  else    strncpy(err_msg,read_buf,99);  len=write(sockfd, "quit\r\n", 6); //We wantto close connection  read_buf[0]='\0';  len=read(sockfd, read_buf, 300);    // Read from the server  if(len<0)  {   len = send_to_server("NNTP","ERROR", 2, smtppointer, "poll.c: Error while reading from: %s %s", smtppointer->name,strerror(errno));   if(len!=0)    slog(2,"poll.c:nntp: Error while reading from: %s %s",smtppointer->name,strerror(errno));   close(sockfd);   return(0);  }  read_buf[len]='\0';  strncpy(response,read_buf,3);  response[3]='\0';  if(strcmp(response,"205")==0)  //did QUIT go ok   ok++;  else {   err_msg[0]='\0';   strncpy(err_msg,read_buf,99);  }  //slog(1,"DEBUG RESPONSE3: %s   LEN: %d",read_buf,len);     //Lets process the results  if(ok==3)  {   if(smtppointer->down==1) //if it has been down we tell its up now.   {    //            status  1up 2down    send_to_server("NNTP","INFO", 1, smtppointer, "respmd: NNTP server: %s is up.", smtppointer->name);   }   smtppointer->down=0;   smtppointer->up=1;  } else {   //            status  1up 2down   send_to_server("NNTP","ERROR", 2, smtppointer, "respmd: NNTP server: %s is down. %s", smtppointer->name,read_buf);  } //Lets process the results ends } else { //did we get connection else  if(strcmp(response,"400")==0)   send_to_server("NNTP","WARNING", 1, smtppointer, "respmd: NNTP server: %s Service discontinued. %s", smtppointer->name,read_buf);  else   send_to_server("NNTP","ERROR", 2, smtppointer, "respmd: NNTP server: %s is down. %s", smtppointer->name,read_buf); //1=up 2=down } //did we get connection ends   close(sockfd); return(0);}/****************************************************************///IMAP POLL CODE/***************************************************************/int poll_imap(struct smtps_t *smtppointer){ int sockfd;    // socket. int n=0,len=0,ok=0; char read_buf[301]="\0"; char response[4]="\0"; char error_msg[100]="\0";  //we use this to send entry to server char err_msg[100]="\0";  //store error we get from polled server char *serv="143"; struct addrinfo hints, *res, *ressave; struct timeval tv; tv.tv_sec = 40; tv.tv_usec = 0; bzero(&hints, sizeof(struct addrinfo)); hints.ai_family = AF_UNSPEC; hints.ai_socktype=SOCK_STREAM; if(smtppointer->port[0] == '\0')  n = getaddrinfo(smtppointer->name,serv,&hints, &res); else  n = getaddrinfo(smtppointer->name,smtppointer->port,&hints, &res); if(n != 0) {  sprintf(error_msg,"respmd: getaddrinfo failed for IMAP server: %s, %s",smtppointer->name,gai_strerror(n));  if(client(SERVER_IP, SERVER_PORT, LOCALHOSTN, "ERROR", error_msg, smtppointer->name, "NONE", "DOWN", "IMAP") < 0)   slog(2, "poll.c:imap: error while sending to server.");  //else  // slog(2,"poll.c: getaddrinfo failed for IMAP server: %s, %s",smtppointer->name,gai_strerror(n));  smtppointer->down=1;  smtppointer->up=0;  return 0; } n=0; ressave=res; do {  //connect loop starts  sockfd=socket(res->ai_family, res->ai_socktype, res->ai_protocol);  if(sockfd<0)  {   slog(2,"poll.c:imap: Error socket: %s",strerror(errno));   return -1;  }  // 'Call' the server.  n = connect(sockfd, res->ai_addr,res->ai_addrlen);  if(n < 0)  {   if(errno == ETIMEDOUT || errno == EINTR)   {     //            status  1up 2down     send_to_server("IMAP","ERROR", 2, smtppointer, "respmd: IMAP server: %s is down. Connection timeout.", smtppointer->name);   } else    if(errno == ECONNREFUSED)    {     send_to_server("IMAP","ERROR", 2, smtppointer, "respmd: IMAP server: %s is down. Connection refused.", smtppointer->name);    } else {     sprintf(error_msg,"respmd: IMAP server: %s down. Unknown error.",smtppointer->name);     send_to_server("IMAP","ERROR", 2, smtppointer, "respmd: IMAP server: %s is down. %s", smtppointer->name,strerror(errno));    }   smtppointer->down=1;   smtppointer->up=0;   freeaddrinfo(ressave);   return 0;  } else {   break;  }  //alarm(0); } while( (res = res->ai_next) != NULL);  //connect loop end if(res == NULL)   slog(2,"poll.c:imap: connection to: %s failed",smtppointer->name); freeaddrinfo(ressave); //set write timeout setsockopt(sockfd,SOL_SOCKET,SO_SNDTIMEO,&tv,sizeof(tv)); //set read timeout setsockopt(sockfd,SOL_SOCKET,SO_RCVTIMEO,&tv,sizeof(tv)); len=read(sockfd, read_buf, 300);    // Read from the server. if(len<0) {  len = send_to_server("IMAP","ERROR", 2, smtppointer, "poll.c: Error while reading from: %s %s", smtppointer->name,strerror(errno));  if(len!=0)   slog(2,"poll.c:imap: Error while reading from: %s %s",smtppointer->name,strerror(errno));  close(sockfd);  return(0); } read_buf[len]='\0'; strncpy(response,read_buf,4); response[4]='\0'; //slog(1,"DEBUG RESPONSE1: %s",response); if(strcmp(response,"* OK")==0)  //did we get connection {  ok++;  read_buf[0]='\0';  strcat(read_buf,"a100 NOOP");  //We request reader mode shud work allways  strcat(read_buf,"\r\n");  len=strlen(read_buf);  len=write(sockfd, read_buf, len);  read_buf[0]='\0';  len=read(sockfd, read_buf, 300);    // Read from the server.  if(len<0)  {   len = send_to_server("IMAP","ERROR", 2, smtppointer, "poll.c: Error while reading from: %s %s", smtppointer->name,strerror(errno));   if(len!=0)    slog(2,"poll.c:imap: Error while reading from: %s %s",smtppointer->name,strerror(errno));   close(sockfd);   return(0);  }  read_buf[len]='\0';  strncpy(response,read_buf,12);  response[12]='\0';  if(strcmp(response,"a100 OK NOOP")==0)   ok++;  else   strncpy(err_msg,read_buf,99);    len=write(sockfd, "a100 LOGOUT\r\n", 13); //We wantto close connection  read_buf[0]='\0';  len=read(sockfd, read_buf, 300);    // Read from the server  if(len<0)  {   len = send_to_server("IMAP","ERROR", 2, smtppointer, "poll.c: Error while reading from: %s %s", smtppointer->name,strerror(errno));   if(len!=0)    slog(2,"poll.c:imap: Error while reading from: %s %s",smtppointer->name,strerror(errno));   close(sockfd);   return(0);  }  read_buf[len]='\0';  strncpy(response,read_buf,6);  response[6]='\0';  if(strcmp(response,"* BYE ")==0)  //did QUIT go ok   ok++;  else {   err_msg[0]='\0';   strncpy(err_msg,read_buf,99);  }  //Lets process the results  if(ok==3)  {   if(smtppointer->down==1) //if it has been down we tell its up now.   {    //            status  1up 2down    send_to_server("IMAP","INFO", 1, smtppointer, "respmd: IMAP server: %s is up.", smtppointer->name);   }   smtppointer->down=0;   smtppointer->up=1;  } else {   //            status  1up 2down   send_to_server("IMAP","ERROR", 2, smtppointer, "respmd: IMAP server: %s is down. %s", smtppointer->name,read_buf);  } //Lets process the results ends } else { //did we get connection else   send_to_server("IMAP","ERROR", 2, smtppointer, "respmd: IMAP server: %s is down. %s", smtppointer->name,read_buf); //1=up 2=down } //did we get connection ends close(sockfd); return(0);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -