mirror of
git://erdgeist.org/opentracker
synced 2025-01-26 22:56:26 +00:00
add support for more stats:
1. stats for added and removed torrents 2. stats for start and stopped events from peers this should help to detect DoS attacks and is useful for profiling
This commit is contained in:
parent
c2cbe1dc27
commit
65c3b24045
@ -251,6 +251,10 @@ static ssize_t http_handle_stats( const int64 client_socket, char *data, char *d
|
||||
mode = TASK_STATS_TPB;
|
||||
else if( !byte_diff(data,4,"herr"))
|
||||
mode = TASK_STATS_HTTPERRORS;
|
||||
else if( !byte_diff(data,9,"startstop"))
|
||||
mode = TASK_STATS_STARTSTOP;
|
||||
else if( !byte_diff(data,10,"toraddrem"))
|
||||
mode = TASK_STATS_TORADDREM;
|
||||
else
|
||||
HTTPERROR_400_PARAM;
|
||||
break;
|
||||
|
@ -24,6 +24,8 @@ typedef enum {
|
||||
TASK_STATS_TPB = 0x0007,
|
||||
TASK_STATS_HTTPERRORS = 0x0008,
|
||||
TASK_STATS_TORRENTS = 0x0009,
|
||||
TASK_STATS_STARTSTOP = 0x000a,
|
||||
TASK_STATS_TORADDREM = 0x000b,
|
||||
|
||||
TASK_STATS_SLASH24S = 0x0100,
|
||||
|
||||
|
46
ot_stats.c
46
ot_stats.c
@ -264,6 +264,48 @@ static size_t stats_peers_mrtg( char * reply ) {
|
||||
);
|
||||
}
|
||||
|
||||
static size_t stats_startstop_mrtg( char * reply )
|
||||
{
|
||||
size_t torrent_count = 0;
|
||||
int bucket;
|
||||
|
||||
for( bucket=0; bucket<OT_BUCKET_COUNT; ++bucket )
|
||||
{
|
||||
ot_vector *torrents_list = mutex_bucket_lock( bucket );
|
||||
torrent_count += torrents_list->size;
|
||||
mutex_bucket_unlock( bucket );
|
||||
}
|
||||
|
||||
return sprintf( reply, "%zd\n%zd\nopentracker handling %zd torrents\nopentracker",
|
||||
(size_t)0,
|
||||
(size_t)0,
|
||||
torrent_count
|
||||
);
|
||||
}
|
||||
|
||||
static size_t stats_toraddrem_mrtg( char * reply )
|
||||
{
|
||||
size_t peer_count = 0, j;
|
||||
int bucket;
|
||||
|
||||
for( bucket=0; bucket<OT_BUCKET_COUNT; ++bucket )
|
||||
{
|
||||
ot_vector *torrents_list = mutex_bucket_lock( bucket );
|
||||
for( j=0; j<torrents_list->size; ++j )
|
||||
{
|
||||
ot_peerlist *peer_list = ( ((ot_torrent*)(torrents_list->data))[j] ).peer_list;
|
||||
peer_count += peer_list->peer_count;
|
||||
}
|
||||
mutex_bucket_unlock( bucket );
|
||||
}
|
||||
|
||||
return sprintf( reply, "%zd\n%zd\nopentracker handling %zd peers\nopentracker",
|
||||
(size_t)0,
|
||||
(size_t)0,
|
||||
peer_count
|
||||
);
|
||||
}
|
||||
|
||||
static size_t stats_torrents_mrtg( char * reply )
|
||||
{
|
||||
size_t torrent_count = 0;
|
||||
@ -305,6 +347,10 @@ size_t return_stats_for_tracker( char *reply, int mode, int format ) {
|
||||
return stats_peers_mrtg( reply );
|
||||
case TASK_STATS_TORRENTS:
|
||||
return stats_torrents_mrtg( reply );
|
||||
case TASK_STATS_TORADDREM:
|
||||
return stats_toraddrem_mrtg( reply );
|
||||
case TASK_STATS_STARTSTOP:
|
||||
return stats_startstop_mrtg( reply );
|
||||
case TASK_STATS_SLASH24S:
|
||||
return stats_slash24s_txt( reply, 25, 16 );
|
||||
case TASK_STATS_TOP5:
|
||||
|
Loading…
x
Reference in New Issue
Block a user