Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int myconnect(SOCKET s, const struct sockaddr *name, int namelen) {
- unsigned int ip;
- unsigned short port;
- int cr = 0,
- lf = 0,
- len;
- unsigned char buff[100];
- ip = ((struct sockaddr_in *)name)->sin_addr.s_addr;
- port = ntohs(((struct sockaddr_in *)name)->sin_port);
- // skip local IP, Firefox REQUIRES at least that 127.0.0.1 is not proxified at the beginning
- if(((ip & 0xff) == 127) || ((ip & 0xff) == 192) || ((ip & 0xff) == 10)) return(0);
- ((struct sockaddr_in *)name)->sin_addr.s_addr = proxy_ip;
- ((struct sockaddr_in *)name)->sin_port = proxy_port;
- len = sprintf(buff,
- "CONNECT %u.%u.%u.%u:%hu HTTP/1.0rn"
- "rn",
- (ip & 0xff), ((ip >> 8) & 0xff), ((ip >> 16) & 0xff), ((ip >> 24) & 0xff),
- port);
- if(real_connect(s, name, namelen) == SOCKET_ERROR) goto quit_error;
- if(real_send(s, buff, len, 0) != len) goto quit_error;
- for(;;) {
- if(real_recv(s, buff, 1, 0) != 1) goto quit_error;
- switch(buff[0]) {
- case 'r': cr++; break;
- case 'n': lf++; break;
- default: cr = 0; lf = 0; break;
- }
- if(lf == 2) break;
- }
- // ignore the return number
- return(1); // > 0 skips the real connect()... it's REQUIRED Proxocket 0.1.4a or more!!!
- quit_error: // error, restore
- ((struct sockaddr_in *)name)->sin_addr.s_addr = ip;
- ((struct sockaddr_in *)name)->sin_port = htons(port);
- return(SOCKET_ERROR);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement