diff options
-rw-r--r-- | opentracker.c | 26 |
1 files changed, 11 insertions, 15 deletions
diff --git a/opentracker.c b/opentracker.c index a4c6304..8378824 100644 --- a/opentracker.c +++ b/opentracker.c | |||
@@ -248,6 +248,8 @@ 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; | ||
252 | if( !byte_diff( data, 2, "sc" ) ) goto SCRAPE_WORKAROUND; | ||
251 | if( byte_diff( data, 4, "sync") ) HTTPERROR_404; | 253 | if( byte_diff( data, 4, "sync") ) HTTPERROR_404; |
252 | if( NOTBLESSED( h ) ) HTTPERROR_403_IP; | 254 | if( NOTBLESSED( h ) ) HTTPERROR_403_IP; |
253 | 255 | ||
@@ -288,6 +290,8 @@ LOG_TO_STDERR( "sync: %d.%d.%d.%d\n", h->ip[0], h->ip[1], h->ip[2], h->ip[3] ); | |||
288 | * S T A T S * | 290 | * S T A T S * |
289 | ******************************/ | 291 | ******************************/ |
290 | case 5: /* stats ? */ | 292 | case 5: /* stats ? */ |
293 | if( !byte_diff( data, 2, "an" ) ) goto ANNOUNCE_WORKAROUND; | ||
294 | if( !byte_diff( data, 2, "sc" ) ) goto SCRAPE_WORKAROUND; | ||
291 | if( byte_diff(data,5,"stats")) HTTPERROR_404; | 295 | if( byte_diff(data,5,"stats")) HTTPERROR_404; |
292 | scanon = 1; | 296 | scanon = 1; |
293 | mode = STATS_MRTG; | 297 | mode = STATS_MRTG; |
@@ -376,6 +380,7 @@ LOG_TO_STDERR( "stats: %d.%d.%d.%d - mode: s24s old\n", h->ip[0], h->ip[1], h->i | |||
376 | * S C R A P E * | 380 | * S C R A P E * |
377 | ******************************/ | 381 | ******************************/ |
378 | case 6: /* scrape ? */ | 382 | case 6: /* scrape ? */ |
383 | if( !byte_diff( data, 2, "an" ) ) goto ANNOUNCE_WORKAROUND; | ||
379 | if( byte_diff( data, 6, "scrape") ) HTTPERROR_404; | 384 | if( byte_diff( data, 6, "scrape") ) HTTPERROR_404; |
380 | 385 | ||
381 | /* Full scrape... you might want to limit that */ | 386 | /* Full scrape... you might want to limit that */ |
@@ -429,12 +434,8 @@ SCRAPE_WORKAROUND: | |||
429 | /****************************** | 434 | /****************************** |
430 | * A N N O U N C E * | 435 | * A N N O U N C E * |
431 | ******************************/ | 436 | ******************************/ |
432 | case 7: | ||
433 | if( !byte_diff( data, 7, "announc" ) ) goto ANNOUNCE_WORKAROUND; | ||
434 | if( !byte_diff( data, 7, "anounce" ) ) goto ANNOUNCE_WORKAROUND; | ||
435 | if( !byte_diff( data, 7, "annouce" ) ) goto ANNOUNCE_WORKAROUND; | ||
436 | HTTPERROR_404; | ||
437 | case 8: | 437 | case 8: |
438 | if( !byte_diff( data, 2, "sc" ) ) goto SCRAPE_WORKAROUND; | ||
438 | if( byte_diff( data, 8, "announce" ) ) HTTPERROR_404; | 439 | if( byte_diff( data, 8, "announce" ) ) HTTPERROR_404; |
439 | 440 | ||
440 | ANNOUNCE_WORKAROUND: | 441 | ANNOUNCE_WORKAROUND: |
@@ -531,13 +532,9 @@ ANNOUNCE_WORKAROUND: | |||
531 | } | 532 | } |
532 | ot_overall_tcp_successfulannounces++; | 533 | ot_overall_tcp_successfulannounces++; |
533 | break; | 534 | break; |
534 | case 9: | ||
535 | if( !byte_diff( data, 8, "announce" ) ) goto ANNOUNCE_WORKAROUND; | ||
536 | HTTPERROR_404; | ||
537 | case 10: | ||
538 | if( byte_diff( data, 10, "scrape.php" ) ) HTTPERROR_404; | ||
539 | goto SCRAPE_WORKAROUND; | ||
540 | case 11: | 535 | case 11: |
536 | if( !byte_diff( data, 2, "an" ) ) goto ANNOUNCE_WORKAROUND; | ||
537 | if( !byte_diff( data, 2, "sc" ) ) goto SCRAPE_WORKAROUND; | ||
541 | if( byte_diff( data, 11, "mrtg_scrape" ) ) HTTPERROR_404; | 538 | if( byte_diff( data, 11, "mrtg_scrape" ) ) HTTPERROR_404; |
542 | 539 | ||
543 | t = time( NULL ) - ot_start_time; | 540 | t = time( NULL ) - ot_start_time; |
@@ -545,10 +542,9 @@ ANNOUNCE_WORKAROUND: | |||
545 | "%llu\n%llu\n%i seconds (%i hours)\nopentracker - Pretuned by german engineers, currently handling %llu connections per second.", | 542 | "%llu\n%llu\n%i seconds (%i hours)\nopentracker - Pretuned by german engineers, currently handling %llu connections per second.", |
546 | 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 ) ); | 543 | 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 ) ); |
547 | break; | 544 | break; |
548 | case 12: | 545 | default: |
549 | if( byte_diff( data, 12, "announce.php" ) ) HTTPERROR_404; | 546 | if( !byte_diff( data, 2, "an" ) ) goto ANNOUNCE_WORKAROUND; |
550 | goto ANNOUNCE_WORKAROUND; | 547 | if( !byte_diff( data, 2, "sc" ) ) goto SCRAPE_WORKAROUND; |
551 | default: /* neither *scrape nor announce */ | ||
552 | HTTPERROR_404; | 548 | HTTPERROR_404; |
553 | } | 549 | } |
554 | 550 | ||