Aslai

Untitled

Aug 25th, 2011
232
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.22 KB | None | 0 0
  1. void followURL( SOCKET sock, char* msg, char* sender, char* sendTo, bool appension )
  2. {
  3.     char url[1000];
  4.     //char* tSTR = "api.bitly.com/v3/expand?login=aslai&apiKey=R_8ea3e4af02d6c4ee6242a8ea7c9aba9b&shortUrl=http%3A%2F%2Fbit.ly%2F";
  5.     sprintf( url, msg );
  6.  
  7.     char newurl[2000];
  8.     memcpy( newurl, url, strlen( url ) + 1 );
  9.  
  10.  
  11.     int slashPos;
  12.     for( slashPos = 0; newurl[slashPos] != '/' && newurl[slashPos] != 0; slashPos ++ );
  13.     newurl[slashPos] = 0;
  14.  
  15.     char* sel = (char*) malloc( strlen( url ) - slashPos + 1 );
  16.     sel[0] = '/';
  17.     memcpy( sel + 1, newurl + 1 + slashPos, 1 + strlen( newurl + 1 + slashPos ) );
  18.  
  19.     unsigned long myhost = resolveAddr( newurl, 2 );
  20.  
  21.  
  22.     SOCKET addr = connectTCP(myhost, 80);
  23.  
  24.     if( addr == 0 ) {free(newurl); free(sel); return;}
  25.  
  26.     char packetSend[3000];
  27.     sprintf( packetSend, "GET %s HTTP/1.1\r\nHost: %s\r\nUser-Agent: Aslai-lol\r\n\r\n", sel, newurl );
  28.     send( addr, packetSend, strlen( packetSend ), 0 );
  29.  
  30.     char iobuf[10] = {0,0,0,0,0,0,0,0,0,0};
  31.  
  32.     char toSend[9900];
  33.     int writePos = 0;
  34.     int kk;
  35.  
  36.     char bufa[500];
  37.     int bufpos = 0;
  38.     if( !appension )
  39.     bufpos = sprintf( bufa, "Expanded: " );
  40.     else
  41.     bufpos = sprintf( bufa, " " );
  42.     int trk = 0;
  43.     while( true ){
  44.         recvb(addr, iobuf, 1, 0);
  45.         if( ( (trk == 0 || trk == 2) && iobuf[0] == '\r' ) || ( (trk == 1 || trk == 3) && iobuf[0] == '\n' ) )
  46.         trk++;
  47.         else trk = 0;
  48.         if ( trk == 4 )
  49.         {
  50.             sendMsg( sock, "PRIVMSG %s :Unexpected end of header.", sendTo );
  51.             return;
  52.         }
  53.  
  54.         int h = 0;
  55.         while( ("Location: ")[h] == iobuf[0] )
  56.         {
  57.             recvb(addr, iobuf, 1, 0);
  58.             h ++;
  59.         }
  60.         if( h == 10 )
  61.         {
  62.             h = 0;
  63.             //recvb(addr, iobuf, 1, 0);
  64.             while( iobuf[0] != '\r' ){
  65.                 toSend[writePos++] = iobuf[0];
  66.                 recvb(addr, iobuf, 1, 0);
  67.             }
  68.             toSend[writePos++] = 0;
  69.             if( check( sock, toSend, sender, sendTo, true ) == false )
  70.             sendMsg( sock, "PRIVMSG %s :Expanded: %s", sendTo, toSend );
  71.             return;
  72.         }
  73.         h = 0;
  74.     }
  75. }
Advertisement
Add Comment
Please, Sign In to add comment