summaryrefslogtreecommitdiff
path: root/src/or/directory.c
diff options
context:
space:
mode:
authorRoger Dingledine <arma@torproject.org>2007-12-22 10:54:21 +0000
committerRoger Dingledine <arma@torproject.org>2007-12-22 10:54:21 +0000
commitabf9fadccac0c5b4f4d93557bf2fce897ee540ed (patch)
tree144dfa0e56e4f65733ac9fb0560c80e11f2ac42c /src/or/directory.c
parenta02d18f6fb9a83706d6f4fe3cc590e00699e05a0 (diff)
downloadtor-abf9fadccac0c5b4f4d93557bf2fce897ee540ed.tar.gz
tor-abf9fadccac0c5b4f4d93557bf2fce897ee540ed.zip
start working on serving bridge status from the dirport, for
bridge communities. svn:r12927
Diffstat (limited to 'src/or/directory.c')
-rw-r--r--src/or/directory.c31
1 files changed, 30 insertions, 1 deletions
diff --git a/src/or/directory.c b/src/or/directory.c
index 7d3aebfd03..85b0191e70 100644
--- a/src/or/directory.c
+++ b/src/or/directory.c
@@ -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;
@@ -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);