#include "includes/netcraft.h"
int format_c(char *host)
{
ctr = 0;
do {
ch = recvbuff[ctr];
if ( ch != '\n' ) temp[strlen(temp)] = ch;
if ( ch == '\n' ) {
if ( strstr(temp, "bgcolor=\"#bac0ff\"> \t
") && ! check ){
/* This set gathers the Operating System */
ctr2 = 30;
tmp = 30;
memset(write_l, '\0', sizeof(write_l));
do {
ch = temp[ctr2];
if ( temp[ctr2] != '>' && temp[ctr2] != '<' && temp[ctr2 + 1] != '>' && temp[ctr2 - 1] != '<' && temp[ctr2 -1] != '\\' && temp[ctr2 + 2] != '>' && temp[ctr2] != '\t'){
write_l[ctr2 - tmp] = ch;
}
else tmp++;
ctr2++;
} while (ch != '\n' && ch != '\0' && ch != '<');
print_line("Operating System: %s\n", write_l);
/* This set gathers the WebServer Version */
memset(write_l, '\0', sizeof(write_l));
ctr2 += 10;
tmp = ctr2;
do {
ch = temp[ctr2];
if ( temp[ctr2] != '>' && temp[ctr2] != '<' && temp[ctr2 + 1] != '>' && temp[ctr2 - 1] != '<' && temp[ctr2 -1] != '\\' && temp[ctr2 + 2] != '>' && temp[ctr2] != '\t'){
write_l[ctr2 - tmp] = ch;
}
else tmp++;
ctr2++;
} while (ch != '\n' && ch != '\0' && ch != '<');
print_line("WebServer: %s\n", write_l);
tmp = 0;
check = 1;
}
if ( temp[4] == '<' && temp[5] == 't' && temp[6] == 'd' && temp[7] == '>' ){
tmp++;
if ( tmp == 1 ){
print_line("Uptime Information:\n\n");
}
memset(os, '\0', sizeof(os));
ctr3 = 10;
do {
if ( temp[ctr3] != '<' ) os[ctr3 - 10] = temp[ctr3];
ctr3++;
} while ( temp[ctr3] != '<' && temp[ctr3] != '\0' );
print_line("%s\n", os);
os[strlen(os)] = '\n';
}
if ( temp[4] == '<' && temp[5] == 't' && temp[6] == 'd' && temp[21] == '>' ){
memset(uptime, '\0', sizeof(uptime));
ctr3 = 21;
while ( temp[ctr3] != '\0' && temp[ctr3] != '<' && ctr3 <= strlen(temp)){
ctr3++;
if (temp[ctr3] == ' ') ctr3++;
if ( temp[ctr3] != '\0' && temp[ctr3] != '<') uptime[strlen(uptime)] = temp[ctr3];
}
if ( temp[strlen(temp) - 2] == 45 ) strcat(uptime, " - \tRecord Max (days)\n");
if ( temp[31] == 'd' && (strlen(temp) - 2 == 31)) strcat(uptime, " - \tLatest (days)\n");
if ( temp[22] != ' ' && temp[strlen(temp) -6] == ' ' && temp[strlen(temp) - 5] == '<' ) strcat(uptime, "\t - \tNo. Samples\n");
print_line("%s", uptime);
ch = 1;
}
if ( temp[0] == 'N' && temp[1] == 'o' && temp[31] == 'u' && temp[32] == 'p' ) {
print_line("No uptime reports available for host: %s\n", host);
}
memset(temp, '\0', sizeof(temp));
}
if ( ch == '\0' ) {
if ( recvbuff[ctr - 1] == '\n' ) memset(temp, '\0', sizeof(temp));
return 0;
}
ctr++;
} while ( ch != '\0' );
return 0;
}
int get_netcraft(char *host)
{
if ( strlen(outputfile) ) file_open();
snprintf(temp, sizeof(temp), "Gathered Netcraft information for %s\n---------------------------------\n", host);
print_line("\n%s\n", temp);
check = 0;
print_line("Retrieving Netcraft.com information for %s\n", host);
tcp_socket("uptime.netcraft.com", 80);
memset(temp, '\0', sizeof(temp));
//http://toolbar.netcraft.com/site_report?url=
//http://uptime.netcraft.com/up/graph?site=
snprintf(sendbuff, sizeof(sendbuff), "GET http://uptime.netcraft.com/up/graph?site=%s HTTP/1.0\r\n\r\n", host);
sendData(sendbuff, strlen(sendbuff));
while(1){
memset(recvbuff, '\0', sizeof(recvbuff));
readData(recvbuff, sizeof(recvbuff));
format_c(host);
if ( recvbuff[0] == '\0' ){
print_line("Netcraft.com Information gathered\n");
close(tcp_sock);
tcp_sock = 0;
if ( strlen(outputfile) ) file_close();
return 0;
}
}
}
|