From a2d9cbb2e82f568a0d4410d6b93922cded44b689 Mon Sep 17 00:00:00 2001 From: Peter Palfrader Date: Mon, 24 Jul 2006 03:24:25 +0000 Subject: 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 --- trunk/debian/README.Debian | 7 +- trunk/debian/changelog | 7 +- .../patches/06_add_compile_time_defaults.dpatch | 124 ++++++++++++++++----- .../patches/07_log_to_file_by_default.dpatch | 18 ++- 4 files changed, 116 insertions(+), 40 deletions(-) diff --git a/trunk/debian/README.Debian b/trunk/debian/README.Debian index 6c9730d6c3..cda020b9e7 100644 --- a/trunk/debian/README.Debian +++ b/trunk/debian/README.Debian @@ -1,13 +1,14 @@ This is the Debian package for Tor, The Onion Router. -The following changes have been made to the Tor source to integrate it better -into Debian: +Some changes have been made to the Tor source to integrate it better into +Debian. If Tor is started as the 'debian-tor' user, then: - RunAsDaemon is enabled by default. - PidFile is set to /var/run/tor/tor.pid. No default upstream. - default logging goes to /var/log/tor/log instead of stdout. - DataDirectory is set to /var/lib/tor by default. Uses $HOME/.tor upstream. +If Tor is started as any other user it behaves just like upstream's. -- -Peter Palfrader, Fri, 12 Nov 2004 18:08:54 +0100 +Peter Palfrader, Mon, 24 Jul 2006 05:20:30 +0200 diff --git a/trunk/debian/changelog b/trunk/debian/changelog index 078d6c7d52..8b0df71d27 100644 --- a/trunk/debian/changelog +++ b/trunk/debian/changelog @@ -2,8 +2,13 @@ tor (0.1.2.0-alpha-cvs-1) unstable; urgency=low * CVS snapshot. * Forward port 07_log_to_file_by_default.dpatch. + * 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. - -- Peter Palfrader Thu, 22 Jun 2006 00:12:44 +0200 + -- Peter Palfrader Mon, 24 Jul 2006 05:21:00 +0200 tor (0.1.1.21-1) unstable; urgency=low diff --git a/trunk/debian/patches/06_add_compile_time_defaults.dpatch b/trunk/debian/patches/06_add_compile_time_defaults.dpatch index 81e6034d3c..8b4e494246 100755 --- a/trunk/debian/patches/06_add_compile_time_defaults.dpatch +++ b/trunk/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 + #ifdef MS_WINDOWS + #include + #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/trunk/debian/patches/07_log_to_file_by_default.dpatch b/trunk/debian/patches/07_log_to_file_by_default.dpatch index c925c5efe0..809c5ddcf3 100755 --- a/trunk/debian/patches/07_log_to_file_by_default.dpatch +++ b/trunk/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."); -- cgit v1.2.3-54-g00ecf