|
|
@ -48,6 +48,8 @@ static char *accesslist_filename = NULL;
|
|
|
|
#define WANT_ACCESS_CONTROL
|
|
|
|
#define WANT_ACCESS_CONTROL
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#define LOG_TO_STDERR( ... ) fprintf( stderr, __VA_ARGS__ )
|
|
|
|
|
|
|
|
|
|
|
|
/* To always have space for error messages ;) */
|
|
|
|
/* To always have space for error messages ;) */
|
|
|
|
|
|
|
|
|
|
|
|
static char static_inbuf[8192];
|
|
|
|
static char static_inbuf[8192];
|
|
|
@ -220,6 +222,8 @@ static void httpresponse( const int64 s, char *data ) {
|
|
|
|
if( byte_diff( data, 4, "sync") ) HTTPERROR_404;
|
|
|
|
if( byte_diff( data, 4, "sync") ) HTTPERROR_404;
|
|
|
|
if( !h->blessed ) HTTPERROR_403_IP;
|
|
|
|
if( !h->blessed ) HTTPERROR_403_IP;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
LOG_TO_STDERR( "sync: %d.%d.%d.%d\n", h->ip[0], h->ip[1], h->ip[2], h->ip[3] );
|
|
|
|
|
|
|
|
|
|
|
|
mode = SYNC_OUT;
|
|
|
|
mode = SYNC_OUT;
|
|
|
|
scanon = 1;
|
|
|
|
scanon = 1;
|
|
|
|
|
|
|
|
|
|
|
@ -292,6 +296,8 @@ static void httpresponse( const int64 s, char *data ) {
|
|
|
|
switch( mode)
|
|
|
|
switch( mode)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
case STATS_DMEM:
|
|
|
|
case STATS_DMEM:
|
|
|
|
|
|
|
|
LOG_TO_STDERR( "stats: %d.%d.%d.%d - mode: dmem", h->ip[0], h->ip[1], h->ip[2], h->ip[3] );
|
|
|
|
|
|
|
|
|
|
|
|
if( !( reply_size = return_memstat_for_tracker( &reply ) ) ) HTTPERROR_500;
|
|
|
|
if( !( reply_size = return_memstat_for_tracker( &reply ) ) ) HTTPERROR_500;
|
|
|
|
return sendmallocdata( s, reply, reply_size );
|
|
|
|
return sendmallocdata( s, reply, reply_size );
|
|
|
|
|
|
|
|
|
|
|
@ -316,6 +322,8 @@ static void httpresponse( const int64 s, char *data ) {
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
case STATS_SLASH24S:
|
|
|
|
case STATS_SLASH24S:
|
|
|
|
{
|
|
|
|
{
|
|
|
|
|
|
|
|
LOG_TO_STDERR( "stats: %d.%d.%d.%d - mode: s24s", h->ip[0], h->ip[1], h->ip[2], h->ip[3] );
|
|
|
|
|
|
|
|
|
|
|
|
ot_dword diff; struct timeval tv1, tv2; gettimeofday( &tv1, NULL );
|
|
|
|
ot_dword diff; struct timeval tv1, tv2; gettimeofday( &tv1, NULL );
|
|
|
|
if( !( reply_size = return_stats_for_slash24s( SUCCESS_HTTP_HEADER_LENGTH + static_outbuf, 25, 16 ) ) ) HTTPERROR_500;
|
|
|
|
if( !( reply_size = return_stats_for_slash24s( SUCCESS_HTTP_HEADER_LENGTH + static_outbuf, 25, 16 ) ) ) HTTPERROR_500;
|
|
|
|
gettimeofday( &tv2, NULL ); diff = ( tv2.tv_sec - tv1.tv_sec ) * 1000000 + tv2.tv_usec - tv1.tv_usec;
|
|
|
|
gettimeofday( &tv2, NULL ); diff = ( tv2.tv_sec - tv1.tv_sec ) * 1000000 + tv2.tv_usec - tv1.tv_usec;
|
|
|
@ -324,6 +332,8 @@ static void httpresponse( const int64 s, char *data ) {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
case STATS_SLASH24S_OLD:
|
|
|
|
case STATS_SLASH24S_OLD:
|
|
|
|
{
|
|
|
|
{
|
|
|
|
|
|
|
|
LOG_TO_STDERR( "stats: %d.%d.%d.%d - mode: s24s old", h->ip[0], h->ip[1], h->ip[2], h->ip[3] );
|
|
|
|
|
|
|
|
|
|
|
|
ot_dword diff; struct timeval tv1, tv2; gettimeofday( &tv1, NULL );
|
|
|
|
ot_dword diff; struct timeval tv1, tv2; gettimeofday( &tv1, NULL );
|
|
|
|
if( !( reply_size = return_stats_for_slash24s_old( SUCCESS_HTTP_HEADER_LENGTH + static_outbuf, 25, 16 ) ) ) HTTPERROR_500;
|
|
|
|
if( !( reply_size = return_stats_for_slash24s_old( SUCCESS_HTTP_HEADER_LENGTH + static_outbuf, 25, 16 ) ) ) HTTPERROR_500;
|
|
|
|
gettimeofday( &tv2, NULL ); diff = ( tv2.tv_sec - tv1.tv_sec ) * 1000000 + tv2.tv_usec - tv1.tv_usec;
|
|
|
|
gettimeofday( &tv2, NULL ); diff = ( tv2.tv_sec - tv1.tv_sec ) * 1000000 + tv2.tv_usec - tv1.tv_usec;
|
|
|
@ -361,6 +371,8 @@ SCRAPE_WORKAROUND:
|
|
|
|
|
|
|
|
|
|
|
|
/* Scanned whole query string, no hash means full scrape... you might want to limit that */
|
|
|
|
/* Scanned whole query string, no hash means full scrape... you might want to limit that */
|
|
|
|
if( !hash ) {
|
|
|
|
if( !hash ) {
|
|
|
|
|
|
|
|
LOG_TO_STDERR( "scrp: %d.%d.%d.%d - FULL SCRAPE", h->ip[0], h->ip[1], h->ip[2], h->ip[3] );
|
|
|
|
|
|
|
|
|
|
|
|
if( !( reply_size = return_fullscrape_for_tracker( &reply ) ) ) HTTPERROR_500;
|
|
|
|
if( !( reply_size = return_fullscrape_for_tracker( &reply ) ) ) HTTPERROR_500;
|
|
|
|
ot_overall_tcp_successfulannounces++;
|
|
|
|
ot_overall_tcp_successfulannounces++;
|
|
|
|
return sendmallocdata( s, reply, reply_size );
|
|
|
|
return sendmallocdata( s, reply, reply_size );
|
|
|
|