| verzia 1.3, 2001/09/28 16:57:04 |
verzia 1.4, 2001/10/24 19:24:49 |
|
|
| /* |
/* |
| * $Log$ |
* $Log$ |
| * Revision 1.3 2001/09/28 16:57:04 host8 |
* Revision 1.4 2001/10/24 19:24:49 host8 |
| * Source code formated better |
* Added parameter -p (look for password). |
| * |
* |
| * Revision 1.2 2001/09/28 15:39:21 host8 |
* Revision 1.3 2001/09/28 16:57:04 host8 |
| * Added keyword substitution |
* Source code formated better |
| * |
* |
| */ |
* Revision 1.2 2001/09/28 15:39:21 host8 |
| |
* Added keyword substitution |
| |
* |
| |
*/ |
| |
|
| #include <stdio.h> |
#include <stdio.h> |
| #include <stdlib.h> |
#include <stdlib.h> |
| Riadok 47 FILE *http_connect(void) |
|
| Riadok 50 FILE *http_connect(void) |
|
| FILE *f; |
FILE *f; |
| int s = 0; |
int s = 0; |
| int i; |
int i; |
| struct sockaddr_in sin; |
struct sockaddr_in sockaddrIn; |
| |
|
| |
sockaddrIn.sin_port = htons(servers[id].port); |
| |
sockaddrIn.sin_family = AF_INET; |
| |
sockaddrIn.sin_addr.s_addr = inet_addr(servers[id].ip); |
| |
s = socket(PF_INET, SOCK_STREAM, 0); |
| |
|
| if (g.gate == AZET) { |
|
| sin.sin_port = htons(AZET_PORT); |
|
| sin.sin_family = AF_INET; |
|
| sin.sin_addr.s_addr = inet_addr(AZET_SERVER); |
|
| s = socket(PF_INET, SOCK_STREAM, 0); |
|
| } |
|
| else if (g.gate == WHIZDIARY) { |
|
| sin.sin_port = htons(WHIZDIARY_PORT); |
|
| sin.sin_family = AF_INET; |
|
| sin.sin_addr.s_addr = inet_addr(WHIZDIARY_SERVER); |
|
| s = socket(PF_INET, SOCK_STREAM, 0); |
|
| } |
|
| else if (g.gate == SPISNET) { |
|
| sin.sin_port = htons(SPISNET_PORT); |
|
| sin.sin_family = AF_INET; |
|
| sin.sin_addr.s_addr = inet_addr(SPISNET_SERVER); |
|
| s = socket(PF_INET, SOCK_STREAM, 6); |
|
| } |
|
| if (s != -1) { |
if (s != -1) { |
| for (i=0; i<MAX_CONNECTS; i++) { |
for (i=0; i<MAX_CONNECTS; i++) { |
| if (connect(s, (struct sockaddr *)&sin, sizeof(sin)) != -1) |
if (connect(s, (struct sockaddr *)&sockaddrIn, |
| |
sizeof(sockaddrIn)) != -1) |
| break; |
break; |
| } |
} |
| if ((f = fdopen(s, "w+b")) != NULL) |
if ((f = fdopen(s, "w+b")) != NULL) |
| return (f); |
return (f); |
| } |
} |
| if (g.gate == AZET) { |
fprintf(stderr, "Can't connect to %s[%s]\n", servers[id].desc, |
| fprintf(stderr, "Nemozem sa pripojit na %s\n", AZET_SERVER); |
servers[id].ip); |
| } |
|
| else if (g.gate == WHIZDIARY) { |
|
| fprintf(stderr, "Nemozem sa pripojit na %s\n", WHIZDIARY_SERVER); |
|
| } |
|
| else if (g.gate == SPISNET) { |
|
| fprintf(stderr, "Nemozem sa pripojit na %s\n", SPISNET_SERVER); |
|
| } |
|
| return(NULL); |
return(NULL); |
| } // }}} |
} // }}} |
| // Function http_read_source() {{{ |
// Function http_read_source() {{{ |
| Riadok 100 void http_read_source(FILE *f, char *hos |
|
| Riadok 85 void http_read_source(FILE *f, char *hos |
|
| fprintf(stderr, "\t%.*s\n", (int)(strlen(bla)-2), bla); |
fprintf(stderr, "\t%.*s\n", (int)(strlen(bla)-2), bla); |
| info=0; |
info=0; |
| if (strstr(bla, "HTTP/1.") != NULL) { |
if (strstr(bla, "HTTP/1.") != NULL) { |
| if ((bla+8) == strstr(bla, " 200 OK")) |
if ((bla+8) == strstr(bla, " 200 OK")) { |
| http_set_referer(host, file); |
http_set_referer(host, file); |
| |
} |
| |
else if ((bla+8) == strstr(bla, " 302 Object Moved")) { |
| |
/* TODO: implement this error-handling |
| |
*/ |
| |
} |
| } |
} |
| } |
} |
| if (g.debug > 8 ) { |
if (g.debug > 8 ) { |
| Riadok 167 int http_request(int method, char *file, |
|
| Riadok 157 int http_request(int method, char *file, |
|
| fprintf(f, "Accept-Encoding: gzip, compress\r\n"); |
fprintf(f, "Accept-Encoding: gzip, compress\r\n"); |
| fprintf(f, "Accept-Language: en\r\n"); |
fprintf(f, "Accept-Language: en\r\n"); |
| |
|
| |
/* unused {{{ */ |
| //fprintf(f, "Accept: text/html, text/plain, audio/mod, image/*, video/*, video/mpeg, application/pgp, application/pgp, application/pdf, message/partial, message/external-body, application/postscript, x-be2, application/andrew-inset, text/richtext, text/enriched\r\nAccept: x-sun-attachment, audio-file, postscript-file, default, mail-file, sun-deskset-message, application/x-metamail-patch, text/sgml, video/mpeg, image/jpeg, image/tiff, image/x-rgb, image/png, image/x-xbitmap, image/x-xbm, image/gif\r\nAccept: application/postscript, */*;q=0.01\r\nAccept-Encoding: gzip, compress\r\nAccept-Language: en\r\n"); |
//fprintf(f, "Accept: text/html, text/plain, audio/mod, image/*, video/*, video/mpeg, application/pgp, application/pgp, application/pdf, message/partial, message/external-body, application/postscript, x-be2, application/andrew-inset, text/richtext, text/enriched\r\nAccept: x-sun-attachment, audio-file, postscript-file, default, mail-file, sun-deskset-message, application/x-metamail-patch, text/sgml, video/mpeg, image/jpeg, image/tiff, image/x-rgb, image/png, image/x-xbitmap, image/x-xbm, image/gif\r\nAccept: application/postscript, */*;q=0.01\r\nAccept-Encoding: gzip, compress\r\nAccept-Language: en\r\n"); |
| //fprintf(f, "Negotiate: trans\r\n"); |
//fprintf(f, "Negotiate: trans\r\n"); |
| |
/* }}} unused */ |
| if (method == HTTP_POST) { |
if (method == HTTP_POST) { |
| fprintf(f, "Pragma: no-cache\r\n"); |
fprintf(f, "Pragma: no-cache\r\n"); |
| fprintf(f, "Cache-Control: no-cache\r\n"); |
fprintf(f, "Cache-Control: no-cache\r\n"); |