Loading src/or/config.c +1 −0 Original line number Diff line number Diff line Loading @@ -151,6 +151,7 @@ static config_var_t _option_vars[] = { V(BandwidthRate, MEMUNIT, "5 MB"), V(BridgeAuthoritativeDir, BOOL, "0"), VAR("Bridge", LINELIST, Bridges, NULL), V(BridgePassword, STRING, NULL), V(BridgeRecordUsageByCountry, BOOL, "1"), V(BridgeRelay, BOOL, "0"), V(CircuitBuildTimeout, INTERVAL, "1 minute"), Loading src/or/directory.c +30 −1 Original line number Diff line number Diff line Loading @@ -2290,7 +2290,7 @@ directory_handle_command_get(dir_connection_t *conn, const char *headers, if (!strcmpstart(url,"/tor/status-vote/current/") || !strcmpstart(url,"/tor/status-vote/next/")) { /* XXXX If-modified-since is only the implemented for the current /* XXXX If-modified-since is only implemented for the current * consensus: that's probably fine, since it's the only vote document * people fetch much.*/ int current = 1; Loading Loading @@ -2592,6 +2592,35 @@ directory_handle_command_get(dir_connection_t *conn, const char *headers, goto done; } if (options->BridgeAuthoritativeDir && options->BridgePassword && !strcmp(url,"/tor/networkstatus-bridges")) { char *status; size_t len; header = http_get_header(headers, "Authenticator: "); if (!header) { write_http_status_line(conn, 404, "Not found"); goto done; } /* now make sure the password is right */ if (1) { // check password_is_wrong(header) write_http_status_line(conn, 404, "Not found"); tor_free(header); goto done; } /* all happy now. send an answer. */ status = networkstatus_getinfo_by_purpose("bridge", time(NULL)); len = strlen(status); write_http_response_header(conn, len, 0, 0); connection_write_to_buf(status, len, TO_CONN(conn)); tor_free(status); goto done; } if (!strcmpstart(url,"/tor/bytes.txt")) { char *bytes = directory_dump_request_log(); size_t len = strlen(bytes); Loading src/or/or.h +6 −0 Original line number Diff line number Diff line Loading @@ -2089,6 +2089,12 @@ typedef struct { int BridgeAuthoritativeDir; /**< Boolean: is this an authoritative directory * that aggregates bridge descriptors? */ /** If set on a bridge authority, it will answer requests on its dirport * for bridge statuses -- but only if the requests use this password. * If set on a bridge user, request bridge statuses, and use this password * when doing so. */ char *BridgePassword; int UseBridges; /**< Boolean: should we start all circuits with a bridge? */ config_line_t *Bridges; /**< List of bootstrap bridge addresses. */ Loading Loading
src/or/config.c +1 −0 Original line number Diff line number Diff line Loading @@ -151,6 +151,7 @@ static config_var_t _option_vars[] = { V(BandwidthRate, MEMUNIT, "5 MB"), V(BridgeAuthoritativeDir, BOOL, "0"), VAR("Bridge", LINELIST, Bridges, NULL), V(BridgePassword, STRING, NULL), V(BridgeRecordUsageByCountry, BOOL, "1"), V(BridgeRelay, BOOL, "0"), V(CircuitBuildTimeout, INTERVAL, "1 minute"), Loading
src/or/directory.c +30 −1 Original line number Diff line number Diff line Loading @@ -2290,7 +2290,7 @@ directory_handle_command_get(dir_connection_t *conn, const char *headers, if (!strcmpstart(url,"/tor/status-vote/current/") || !strcmpstart(url,"/tor/status-vote/next/")) { /* XXXX If-modified-since is only the implemented for the current /* XXXX If-modified-since is only implemented for the current * consensus: that's probably fine, since it's the only vote document * people fetch much.*/ int current = 1; Loading Loading @@ -2592,6 +2592,35 @@ directory_handle_command_get(dir_connection_t *conn, const char *headers, goto done; } if (options->BridgeAuthoritativeDir && options->BridgePassword && !strcmp(url,"/tor/networkstatus-bridges")) { char *status; size_t len; header = http_get_header(headers, "Authenticator: "); if (!header) { write_http_status_line(conn, 404, "Not found"); goto done; } /* now make sure the password is right */ if (1) { // check password_is_wrong(header) write_http_status_line(conn, 404, "Not found"); tor_free(header); goto done; } /* all happy now. send an answer. */ status = networkstatus_getinfo_by_purpose("bridge", time(NULL)); len = strlen(status); write_http_response_header(conn, len, 0, 0); connection_write_to_buf(status, len, TO_CONN(conn)); tor_free(status); goto done; } if (!strcmpstart(url,"/tor/bytes.txt")) { char *bytes = directory_dump_request_log(); size_t len = strlen(bytes); Loading
src/or/or.h +6 −0 Original line number Diff line number Diff line Loading @@ -2089,6 +2089,12 @@ typedef struct { int BridgeAuthoritativeDir; /**< Boolean: is this an authoritative directory * that aggregates bridge descriptors? */ /** If set on a bridge authority, it will answer requests on its dirport * for bridge statuses -- but only if the requests use this password. * If set on a bridge user, request bridge statuses, and use this password * when doing so. */ char *BridgePassword; int UseBridges; /**< Boolean: should we start all circuits with a bridge? */ config_line_t *Bridges; /**< List of bootstrap bridge addresses. */ Loading