summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--opentracker.c6
-rw-r--r--opentracker.conf.sample5
-rw-r--r--ot_http.c5
-rw-r--r--ot_http.h3
-rw-r--r--trackerlogic.c7
5 files changed, 23 insertions, 3 deletions
diff --git a/opentracker.c b/opentracker.c
index e2e48f2..c36ceaa 100644
--- a/opentracker.c
+++ b/opentracker.c
@@ -35,12 +35,12 @@
35 35
36/* Globals */ 36/* Globals */
37time_t g_now_seconds; 37time_t g_now_seconds;
38char * g_redirecturl = NULL; 38char * g_redirecturl;
39uint32_t g_tracker_id; 39uint32_t g_tracker_id;
40volatile int g_opentracker_running = 1; 40volatile int g_opentracker_running = 1;
41int g_self_pipe[2]; 41int g_self_pipe[2];
42 42
43static char * g_serverdir = NULL; 43static char * g_serverdir;
44 44
45static void panic( const char *routine ) { 45static void panic( const char *routine ) {
46 fprintf( stderr, "%s: %s\n", routine, strerror(errno) ); 46 fprintf( stderr, "%s: %s\n", routine, strerror(errno) );
@@ -368,6 +368,8 @@ int parse_configfile( char * config_filename ) {
368 if( !scan_ip6( p+13, tmpip )) goto parse_error; 368 if( !scan_ip6( p+13, tmpip )) goto parse_error;
369 accesslist_blessip( tmpip, OT_PERMISSION_MAY_STAT ); 369 accesslist_blessip( tmpip, OT_PERMISSION_MAY_STAT );
370#endif 370#endif
371 } else if(!byte_diff(p, 17, "access.stats_path" ) && isspace(p[17])) {
372 set_config_option( &g_stats_path, p+18 );
371#ifdef WANT_IP_FROM_PROXY 373#ifdef WANT_IP_FROM_PROXY
372 } else if(!byte_diff(p, 12, "access.proxy" ) && isspace(p[12])) { 374 } else if(!byte_diff(p, 12, "access.proxy" ) && isspace(p[12])) {
373 if( !scan_ip6( p+13, tmpip )) goto parse_error; 375 if( !scan_ip6( p+13, tmpip )) goto parse_error;
diff --git a/opentracker.conf.sample b/opentracker.conf.sample
index 50cbd3c..9cad622 100644
--- a/opentracker.conf.sample
+++ b/opentracker.conf.sample
@@ -41,6 +41,11 @@
41# 41#
42# access.stats 192.168.0.23 42# access.stats 192.168.0.23
43# 43#
44# There is another way of hiding your stats. You can obfuscate the path
45# to them. Normally it is located at /stats but you can configure it to
46# appear anywhere on your tracker.
47#
48# access.stats_path stats
44 49
45# III) Live sync uses udp multicast packets to keep a cluster of opentrackers 50# III) Live sync uses udp multicast packets to keep a cluster of opentrackers
46# synchronized. This option tells opentracker which port to listen for 51# synchronized. This option tells opentracker which port to listen for
diff --git a/ot_http.c b/ot_http.c
index 7d78fec..7640676 100644
--- a/ot_http.c
+++ b/ot_http.c
@@ -30,6 +30,9 @@
30#define OT_MAXMULTISCRAPE_COUNT 64 30#define OT_MAXMULTISCRAPE_COUNT 64
31extern char *g_redirecturl; 31extern char *g_redirecturl;
32 32
33char *g_stats_path;
34ssize_t g_stats_path_len;
35
33enum { 36enum {
34 SUCCESS_HTTP_HEADER_LENGTH = 80, 37 SUCCESS_HTTP_HEADER_LENGTH = 80,
35 SUCCESS_HTTP_HEADER_LENGTH_CONTENT_ENCODING = 32, 38 SUCCESS_HTTP_HEADER_LENGTH_CONTENT_ENCODING = 32,
@@ -472,7 +475,7 @@ ssize_t http_handle_request( const int64 sock, struct ot_workstruct *ws ) {
472 else if( !memcmp( write_ptr, "sc", 2 ) ) 475 else if( !memcmp( write_ptr, "sc", 2 ) )
473 http_handle_scrape( sock, ws, read_ptr ); 476 http_handle_scrape( sock, ws, read_ptr );
474 /* All the rest is matched the standard way */ 477 /* All the rest is matched the standard way */
475 else if( !memcmp( write_ptr, "stats", 5) ) 478 else if( len == g_stats_path_len && !memcmp( write_ptr, g_stats_path, len ) )
476 http_handle_stats( sock, ws, read_ptr ); 479 http_handle_stats( sock, ws, read_ptr );
477 else 480 else
478 HTTPERROR_404; 481 HTTPERROR_404;
diff --git a/ot_http.h b/ot_http.h
index ced8160..84da0c2 100644
--- a/ot_http.h
+++ b/ot_http.h
@@ -27,4 +27,7 @@ ssize_t http_handle_request( const int64 s, struct ot_workstruct *ws );
27ssize_t http_sendiovecdata( const int64 s, struct ot_workstruct *ws, int iovec_entries, struct iovec *iovector ); 27ssize_t http_sendiovecdata( const int64 s, struct ot_workstruct *ws, int iovec_entries, struct iovec *iovector );
28ssize_t http_issue_error( const int64 s, struct ot_workstruct *ws, int code ); 28ssize_t http_issue_error( const int64 s, struct ot_workstruct *ws, int code );
29 29
30extern char *g_stats_path;
31extern ssize_t g_stats_path_len;
32
30#endif 33#endif
diff --git a/trackerlogic.c b/trackerlogic.c
index d1ef063..f6128fd 100644
--- a/trackerlogic.c
+++ b/trackerlogic.c
@@ -15,12 +15,15 @@
15/* Libowfat */ 15/* Libowfat */
16#include "byte.h" 16#include "byte.h"
17#include "io.h" 17#include "io.h"
18#include "iob.h"
19#include "array.h"
18 20
19/* Opentracker */ 21/* Opentracker */
20#include "trackerlogic.h" 22#include "trackerlogic.h"
21#include "ot_mutex.h" 23#include "ot_mutex.h"
22#include "ot_stats.h" 24#include "ot_stats.h"
23#include "ot_clean.h" 25#include "ot_clean.h"
26#include "ot_http.h"
24#include "ot_accesslist.h" 27#include "ot_accesslist.h"
25#include "ot_fullscrape.h" 28#include "ot_fullscrape.h"
26#include "ot_livesync.h" 29#include "ot_livesync.h"
@@ -394,6 +397,10 @@ void trackerlogic_init( ) {
394 srandom( time(NULL) ); 397 srandom( time(NULL) );
395 g_tracker_id = random(); 398 g_tracker_id = random();
396 399
400 if( !g_stats_path )
401 g_stats_path = "stats";
402 g_stats_path_len = strlen( g_stats_path );
403
397 /* Initialise background worker threads */ 404 /* Initialise background worker threads */
398 mutex_init( ); 405 mutex_init( );
399 clean_init( ); 406 clean_init( );