aboutsummaryrefslogtreecommitdiff
path: root/debian/patches
diff options
context:
space:
mode:
authorPeter Palfrader <peter@palfrader.org>2006-07-24 03:24:25 +0000
committerPeter Palfrader <peter@palfrader.org>2006-07-24 03:24:25 +0000
commitf968d38f3eacbc395b490ecba6f55e7d0943e047 (patch)
tree5bb5aed05a42ad29ea7cea6b7b094022ed47b994 /debian/patches
parent4fccf84004cba03ca777237fd76cba6cefd9137a (diff)
downloadtor-f968d38f3eacbc395b490ecba6f55e7d0943e047.tar.gz
tor-f968d38f3eacbc395b490ecba6f55e7d0943e047.zip
Previously our defaults for DataDirectory, PidFile, RunAsDaemon, and
Log differed from upstreams. Now Tor behaves just like before (with our own DataDirectory and all) only when run as the debian-tor user. If invoked as any other user, Tor will behave just like the pristine upstream version. svn:r6821
Diffstat (limited to 'debian/patches')
-rwxr-xr-xdebian/patches/06_add_compile_time_defaults.dpatch124
-rwxr-xr-xdebian/patches/07_log_to_file_by_default.dpatch18
2 files changed, 106 insertions, 36 deletions
diff --git a/debian/patches/06_add_compile_time_defaults.dpatch b/debian/patches/06_add_compile_time_defaults.dpatch
index 81e6034d3c..8b4e494246 100755
--- a/debian/patches/06_add_compile_time_defaults.dpatch
+++ b/debian/patches/06_add_compile_time_defaults.dpatch
@@ -23,33 +23,97 @@ esac
exit 0
@DPATCH@
-diff -urNad tor-0.1.1.5/src/or/config.c /tmp/dpep.Xv4cHn/tor-0.1.1.5/src/or/config.c
---- tor-0.1.1.9/src/or/config.c 2005-10-17 03:54:24.917618642 +0200
-+++ /tmp/foo/tor/src/or/config.c 2005-10-17 03:57:52.040022393 +0200
-@@ -111,7 +111,7 @@
- VAR("ContactInfo", STRING, ContactInfo, NULL),
- VAR("ControlPort", UINT, ControlPort, "0"),
- VAR("CookieAuthentication",BOOL, CookieAuthentication, "0"),
-- VAR("DataDirectory", STRING, DataDirectory, NULL),
-+ VAR("DataDirectory", STRING, DataDirectory, "/var/lib/tor"),
- VAR("DebugLogFile", STRING, DebugLogFile, NULL),
- VAR("DirAllowPrivateAddresses",BOOL, DirAllowPrivateAddresses, NULL),
- VAR("DirBindAddress", LINELIST, DirBindAddress, NULL),
-@@ -162,7 +162,7 @@
- VAR("ORPort", UINT, ORPort, "0"),
- VAR("OutboundBindAddress", STRING, OutboundBindAddress, NULL),
- VAR("PathlenCoinWeight", DOUBLE, PathlenCoinWeight, "0.3"),
-- VAR("PidFile", STRING, PidFile, NULL),
-+ VAR("PidFile", STRING, PidFile, "/var/run/tor/tor.pid"),
- VAR("ProtocolWarnings", BOOL, ProtocolWarnings, "0"),
- VAR("ReachableAddresses", LINELIST, ReachableAddresses, NULL),
- VAR("RecommendedVersions", LINELIST, RecommendedVersions, NULL),
-@@ -174,7 +174,7 @@
- VAR("RendPostPeriod", INTERVAL, RendPostPeriod, "20 minutes"),
- VAR("RephistTrackTime", INTERVAL, RephistTrackTime, "24 hours"),
- OBSOLETE("RouterFile"),
-- VAR("RunAsDaemon", BOOL, RunAsDaemon, "0"),
-+ VAR("RunAsDaemon", BOOL, RunAsDaemon, "1"),
- VAR("RunTesting", BOOL, RunTesting, "0"),
- VAR("SafeLogging", BOOL, SafeLogging, "1"),
- VAR("ShutdownWaitLength", INTERVAL, ShutdownWaitLength, "30 seconds"),
+diff -urNad tor~/src/or/config.c tor/src/or/config.c
+--- tor~/src/or/config.c 2006-07-23 19:31:29.000000000 +0200
++++ tor/src/or/config.c 2006-07-24 05:13:19.924871985 +0200
+@@ -12,6 +12,7 @@
+ **/
+
+ #include "or.h"
++#include <pwd.h>
+ #ifdef MS_WINDOWS
+ #include <shlobj.h>
+ #endif
+@@ -396,6 +397,10 @@
+ static void check_libevent_version(const char *m, const char *v, int server);
+ #endif
+
++static int debian_running_as_debiantor();
++static int debian_config_fix_defaults();
++
++
+ /*static*/ or_options_t *options_new(void);
+
+ #define OR_OPTIONS_MAGIC 9090909
+@@ -2663,7 +2668,7 @@
+ int
+ options_init_from_torrc(int argc, char **argv)
+ {
+- or_options_t *oldoptions, *newoptions;
++ or_options_t *oldoptions, *newoptions = NULL;
+ config_line_t *cl;
+ char *cf=NULL, *fname=NULL, *errmsg=NULL;
+ int i, retval;
+@@ -2671,6 +2676,9 @@
+ static char **backup_argv;
+ static int backup_argc;
+
++ if (debian_config_fix_defaults() < 0)
++ goto err;
++
+ if (argv) { /* first time we're called. save commandline args */
+ backup_argv = argv;
+ backup_argc = argc;
+@@ -3948,3 +3956,52 @@
+ puts(routerparse_c_id);
+ }
+
++/* Checks whether we are running as the debian-tor user.
++ * Returns -1 on error, 1 if we are debian-tor, 0 if not */
++static int
++debian_running_as_debiantor()
++{
++ struct passwd *pw = NULL;
++ int uid;
++
++ uid = getuid();
++ pw = getpwuid(uid);
++ if (!pw) {
++ log(LOG_WARN, LD_GENERAL, "Could not get passwd information for %d.", uid);
++ return -1;
++ }
++ assert(pw->pw_name);
++ if (strcmp(pw->pw_name, "debian-tor") == 0)
++ return 1;
++ else
++ return 0;
++}
++
++static int
++debian_config_fix_defaults()
++{
++ config_var_t *var;
++ static int fixed = 0;
++ int running_as_debian;
++
++ if (fixed) return 0;
++ fixed = 1;
++
++ running_as_debian = debian_running_as_debiantor();
++ if (running_as_debian < 0) return -1;
++ if (!running_as_debian) return 0;
++
++ var = config_find_option(&options_format, "DataDirectory");
++ tor_assert(var);
++ var->initvalue = tor_strdup("/var/lib/tor");
++
++ var = config_find_option(&options_format, "PidFile");
++ tor_assert(var);
++ var->initvalue = tor_strdup("/var/run/tor/tor.pid");
++
++ var = config_find_option(&options_format, "RunAsDaemon");
++ tor_assert(var);
++ var->initvalue = tor_strdup("1");
++
++ return 0;
++}
diff --git a/debian/patches/07_log_to_file_by_default.dpatch b/debian/patches/07_log_to_file_by_default.dpatch
index c925c5efe0..809c5ddcf3 100755
--- a/debian/patches/07_log_to_file_by_default.dpatch
+++ b/debian/patches/07_log_to_file_by_default.dpatch
@@ -23,16 +23,22 @@ esac
exit 0
@DPATCH@
-diff -urNad tor-0.1.2.0-alpha-cvs/src/or/config.c /tmp/dpep.YwfNhI/tor-0.1.2.0-alpha-cvs/src/or/config.c
---- tor-0.1.2.0-alpha-cvs/src/or/config.c
-+++ /tmp/dpep.YwfNhI/tor-0.1.2.0-alpha-cvs/src/or/config.c
-@@ -2079,7 +2079,7 @@
+diff -urNad tor~/src/or/config.c tor/src/or/config.c
+--- tor~/src/or/config.c 2006-07-24 05:15:02.576170550 +0200
++++ tor/src/or/config.c 2006-07-24 05:18:45.286651501 +0200
+@@ -2118,8 +2118,13 @@
+ REJECT("Failed to normalize old Log options. See logs for details.");
/* Special case on first boot if no Log options are given. */
- if (!options->Logs && !options->RunAsDaemon && !from_setconf)
- config_line_append(&options->Logs, "Log", "notice stdout");
-+ if (!options->Logs && !from_setconf)
-+ config_line_append(&options->Logs, "Log", "notice file /var/log/tor/log");
++ if (debian_running_as_debiantor()) {
++ if (!options->Logs && !from_setconf)
++ config_line_append(&options->Logs, "Log", "notice file /var/log/tor/log");
++ } else {
++ if (!options->Logs && !options->RunAsDaemon && !from_setconf)
++ config_line_append(&options->Logs, "Log", "notice stdout");
++ }
if (options_init_logs(options, 1)<0) /* Validate the log(s) */
REJECT("Failed to validate Log options. See logs for details.");