Browse Source

Add a compile-time #define to control whether Tor runs in 'tor2web mode'

The Tor2webMode torrc option is still required to run a Tor client in
'tor2web mode', but now it can't be turned on at runtime in a normal build
of Tor.  (And a tor2web build of Tor can't be used as a normal Tor client,
so we don't have to worry as much about someone distributing packages with
this particular pistol accessible to normal users.)
Robert Ransom 14 years ago
parent
commit
543a36a55b
2 changed files with 20 additions and 0 deletions
  1. 16 0
      src/or/config.c
  2. 4 0
      src/or/or.h

+ 16 - 0
src/or/config.c

@@ -1294,6 +1294,22 @@ options_act(const or_options_t *old_options)
   if (consider_adding_dir_authorities(options, old_options) < 0)
   if (consider_adding_dir_authorities(options, old_options) < 0)
     return -1;
     return -1;
 
 
+#ifdef ENABLE_TOR2WEB_MODE
+  if (!options->Tor2webMode) {
+    log_err(LD_CONFIG, "This copy of Tor was compiled to run in "
+            "'tor2web mode'. It can only be run with the Tor2webMode torrc "
+            "option enabled.");
+    return -1;
+  }
+#else
+  if (options->Tor2webMode) {
+    log_err(LD_CONFIG, "This copy of Tor was not compiled to run in "
+            "'tor2web mode'. It cannot be run with the Tor2webMode torrc "
+            "option enabled.");
+    return -1;
+  }
+#endif
+
   if (options->Bridges) {
   if (options->Bridges) {
     mark_bridge_list();
     mark_bridge_list();
     for (cl = options->Bridges; cl; cl = cl->next) {
     for (cl = options->Bridges; cl; cl = cl->next) {

+ 4 - 0
src/or/or.h

@@ -130,6 +130,10 @@
 #define cell_t tor_cell_t
 #define cell_t tor_cell_t
 #endif
 #endif
 
 
+#ifdef ENABLE_TOR2WEB_MODE
+#define NON_ANONYMOUS_MODE_ENABLED 1
+#endif
+
 /** Length of longest allowable configured nickname. */
 /** Length of longest allowable configured nickname. */
 #define MAX_NICKNAME_LEN 19
 #define MAX_NICKNAME_LEN 19
 /** Length of a router identity encoded as a hexadecimal digest, plus
 /** Length of a router identity encoded as a hexadecimal digest, plus