summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorerdgeist <>2007-10-21 05:36:10 +0000
committererdgeist <>2007-10-21 05:36:10 +0000
commit6876e162429dda51c202e598c0b4c6faf50cb964 (patch)
tree37abeb27c39a8be6b7c4353bbd2eae983ea4ace6
parent3aa286d9b84f1f5ccb76a08e60fbf26ed30339aa (diff)
assume anything looking like GET /a to be an announce...
-rw-r--r--opentracker.c14
1 files changed, 8 insertions, 6 deletions
diff --git a/opentracker.c b/opentracker.c
index d4cfea4..5da9829 100644
--- a/opentracker.c
+++ b/opentracker.c
@@ -248,7 +248,7 @@ static void httpresponse( const int64 s, char *data, size_t l ) {
248 * S Y N C * 248 * S Y N C *
249 ******************************/ 249 ******************************/
250 case 4: /* sync ? */ 250 case 4: /* sync ? */
251 if( !byte_diff( data, 2, "an" ) ) goto ANNOUNCE_WORKAROUND; 251 if( *data == 'a' ) goto ANNOUNCE_WORKAROUND;
252 if( !byte_diff( data, 2, "sc" ) ) goto SCRAPE_WORKAROUND; 252 if( !byte_diff( data, 2, "sc" ) ) goto SCRAPE_WORKAROUND;
253 if( byte_diff( data, 4, "sync") ) HTTPERROR_404; 253 if( byte_diff( data, 4, "sync") ) HTTPERROR_404;
254 if( NOTBLESSED( h ) ) HTTPERROR_403_IP; 254 if( NOTBLESSED( h ) ) HTTPERROR_403_IP;
@@ -290,7 +290,7 @@ LOG_TO_STDERR( "sync: %d.%d.%d.%d\n", h->ip[0], h->ip[1], h->ip[2], h->ip[3] );
290 * S T A T S * 290 * S T A T S *
291 ******************************/ 291 ******************************/
292 case 5: /* stats ? */ 292 case 5: /* stats ? */
293 if( !byte_diff( data, 2, "an" ) ) goto ANNOUNCE_WORKAROUND; 293 if( *data == 'a' ) goto ANNOUNCE_WORKAROUND;
294 if( !byte_diff( data, 2, "sc" ) ) goto SCRAPE_WORKAROUND; 294 if( !byte_diff( data, 2, "sc" ) ) goto SCRAPE_WORKAROUND;
295 if( byte_diff(data,5,"stats")) HTTPERROR_404; 295 if( byte_diff(data,5,"stats")) HTTPERROR_404;
296 scanon = 1; 296 scanon = 1;
@@ -380,7 +380,7 @@ LOG_TO_STDERR( "stats: %d.%d.%d.%d - mode: s24s old\n", h->ip[0], h->ip[1], h->i
380 * S C R A P E * 380 * S C R A P E *
381 ******************************/ 381 ******************************/
382 case 6: /* scrape ? */ 382 case 6: /* scrape ? */
383 if( !byte_diff( data, 2, "an" ) ) goto ANNOUNCE_WORKAROUND; 383 if( *data == 'a' ) goto ANNOUNCE_WORKAROUND;
384 if( byte_diff( data, 6, "scrape") ) HTTPERROR_404; 384 if( byte_diff( data, 6, "scrape") ) HTTPERROR_404;
385 385
386 /* Full scrape... you might want to limit that */ 386 /* Full scrape... you might want to limit that */
@@ -401,6 +401,7 @@ SCRAPE_WORKAROUND:
401 if( c[-1] != '?' ) { 401 if( c[-1] != '?' ) {
402 while( ( *c != '?' ) && ( *c != '\n' ) ) ++c; 402 while( ( *c != '?' ) && ( *c != '\n' ) ) ++c;
403 if( *c == '\n' ) HTTPERROR_400_PARAM; 403 if( *c == '\n' ) HTTPERROR_400_PARAM;
404 ++c;
404 } 405 }
405 406
406 scanon = 1; 407 scanon = 1;
@@ -441,7 +442,7 @@ UTORRENT1600_WORKAROUND:
441 ******************************/ 442 ******************************/
442 case 8: 443 case 8:
443 if( !byte_diff( data, 2, "sc" ) ) goto SCRAPE_WORKAROUND; 444 if( !byte_diff( data, 2, "sc" ) ) goto SCRAPE_WORKAROUND;
444 if( byte_diff( data, 8, "announce" ) ) HTTPERROR_404; 445 if( *data != 'a' ) HTTPERROR_404;
445 446
446ANNOUNCE_WORKAROUND: 447ANNOUNCE_WORKAROUND:
447 448
@@ -449,6 +450,7 @@ ANNOUNCE_WORKAROUND:
449 if( c[-1] != '?' ) { 450 if( c[-1] != '?' ) {
450 while( ( *c != '?' ) && ( *c != '\n' ) ) ++c; 451 while( ( *c != '?' ) && ( *c != '\n' ) ) ++c;
451 if( *c == '\n' ) HTTPERROR_400_PARAM; 452 if( *c == '\n' ) HTTPERROR_400_PARAM;
453 ++c;
452 } 454 }
453 455
454 OT_SETIP( &peer, ((struct http_data*)io_getcookie( s ) )->ip ); 456 OT_SETIP( &peer, ((struct http_data*)io_getcookie( s ) )->ip );
@@ -538,7 +540,7 @@ ANNOUNCE_WORKAROUND:
538 ot_overall_tcp_successfulannounces++; 540 ot_overall_tcp_successfulannounces++;
539 break; 541 break;
540 case 11: 542 case 11:
541 if( !byte_diff( data, 2, "an" ) ) goto ANNOUNCE_WORKAROUND; 543 if( *data == 'a' ) goto ANNOUNCE_WORKAROUND;
542 if( !byte_diff( data, 2, "sc" ) ) goto SCRAPE_WORKAROUND; 544 if( !byte_diff( data, 2, "sc" ) ) goto SCRAPE_WORKAROUND;
543 if( byte_diff( data, 11, "mrtg_scrape" ) ) HTTPERROR_404; 545 if( byte_diff( data, 11, "mrtg_scrape" ) ) HTTPERROR_404;
544 546
@@ -548,7 +550,7 @@ ANNOUNCE_WORKAROUND:
548 ot_overall_tcp_connections+ot_overall_udp_connections, ot_overall_tcp_successfulannounces+ot_overall_udp_successfulannounces, (int)t, (int)(t / 3600), (ot_overall_tcp_connections+ot_overall_udp_connections) / ( (unsigned int)t ? (unsigned int)t : 1 ) ); 550 ot_overall_tcp_connections+ot_overall_udp_connections, ot_overall_tcp_successfulannounces+ot_overall_udp_successfulannounces, (int)t, (int)(t / 3600), (ot_overall_tcp_connections+ot_overall_udp_connections) / ( (unsigned int)t ? (unsigned int)t : 1 ) );
549 break; 551 break;
550 default: 552 default:
551 if( !byte_diff( data, 2, "an" ) ) goto ANNOUNCE_WORKAROUND; 553 if( *data == 'a' ) goto ANNOUNCE_WORKAROUND;
552 if( !byte_diff( data, 2, "sc" ) ) goto SCRAPE_WORKAROUND; 554 if( !byte_diff( data, 2, "sc" ) ) goto SCRAPE_WORKAROUND;
553 HTTPERROR_404; 555 HTTPERROR_404;
554 } 556 }