Browse Source

- cause configure to create a tor.sh which will have directories set
correctly based on how configure was run

- cause tor to guess the location of torrc more intelligently

- cause cause src/config/torrc and src/conf/sample-server-torrc to be
generated with contents that are correct for the way configure was
run

- cause "make install" to put torrc, sample-server-torrc, and
dirservers somewhere intelligent


svn:r587

Steven Hazel 20 years ago
parent
commit
a54a65dfb6
6 changed files with 138 additions and 4 deletions
  1. 26 1
      configure.in
  2. 3 1
      src/config/Makefile.am
  3. 20 0
      src/config/sample-server-torrc.in
  4. 12 0
      src/config/torrc.in
  5. 2 2
      src/or/config.c
  6. 75 0
      tor.sh.in

+ 26 - 1
configure.in

@@ -159,5 +159,30 @@ AC_CHECK_SIZEOF(long)
 AC_CHECK_SIZEOF(long long)
 AC_CHECK_SIZEOF(__int64)
 
-AC_OUTPUT(Makefile src/Makefile doc/Makefile src/config/Makefile src/common/Makefile src/or/Makefile)
+# $prefix stores the value of the --prefix command line option, or
+# NONE if the option wasn't set.  In the case that it wasn't set, make
+# it be the default, so that we can use it to expand directories now.
+if test "x$prefix" = "xNONE"; then
+  prefix=$ac_default_prefix
+fi
+
+# and similarly for $exec_prefix
+if test "x$exec_prefix" = "xNONE"; then
+  exec_prefix=$prefix
+fi
+
+CONFDIR=`eval echo $sysconfdir/tor`
+AC_SUBST(CONFDIR)
+AC_DEFINE_UNQUOTED(CONFDIR,"$CONFDIR")
+AC_DEFINE([CONFDIR], [], [tor's configuration directory])
+
+BINDIR=`eval echo $bindir`
+AC_SUBST(BINDIR)
+
+LOCALSTATEDIR=`eval echo $localstatedir`
+AC_SUBST(LOCALSTATEDIR)
+
+echo "confdir: $CONFDIR"
+
+AC_OUTPUT(Makefile tor.sh src/config/torrc src/config/sample-server-torrc src/Makefile doc/Makefile src/config/Makefile src/common/Makefile src/or/Makefile)
 

+ 3 - 1
src/config/Makefile.am

@@ -1,3 +1,5 @@
+confdir = $(sysconfdir)/tor
 
-EXTRA_DIST = dirservers oprc sample-orrc
+EXTRA_DIST = dirservers
 
+conf_DATA = dirservers torrc sample-server-torrc

+ 20 - 0
src/config/sample-server-torrc.in

@@ -0,0 +1,20 @@
+# Configuration file for a typical tor node
+
+# The directory for keeping all the config/data for this node
+DataDirectory @LOCALSTATEDIR@/lib/tor
+# A unique handle for this node
+Nickname moria4
+
+# Ports for various services. Comment out or set to 0 if you're not
+# offering that service.
+ORPort 9004 # listening for cell-speaking connections
+APPort 9024 # listening for socks-speaking connections
+#DirPort 0
+
+# Leave this set, or we'll be treated like a client.
+OnionRouter 1
+
+# List of routers. Tor nodes only know about the directory servers
+# at the beginning, and from them they get a list of currently up nodes.
+RouterFile @CONFDIR@/dirservers
+

+ 12 - 0
src/config/torrc.in

@@ -0,0 +1,12 @@
+# Configuration file for a typical tor client
+# (listen for applications only)
+
+# List of routers. Tor nodes only know about the directory servers
+# at the beginning, and from them they get a list of currently up nodes.
+RouterFile @CONFDIR@/dirservers
+
+# Ports for various services. Comment out if you're not running that
+# service.
+#ORPort 9001
+APPort 9050
+

+ 2 - 2
src/or/config.c

@@ -220,8 +220,8 @@ int getconfig(int argc, char **argv, or_options_t *options) {
   }
   if(i < argc-1) { /* we found one */
     fname = argv[i+1];
-  } else { /* didn't find one, try /etc/torrc */
-    fname = "/etc/torrc";
+  } else { /* didn't find one, try CONFDIR */
+    fname = CONFDIR "/torrc";
   }
   log(LOG_DEBUG,"Opening config file '%s'",fname);
 

+ 75 - 0
tor.sh.in

@@ -0,0 +1,75 @@
+#! /bin/sh
+
+TORBIN=@BINDIR@/tor
+TORPID=@LOCALSTATEDIR@/run/tor.pid
+TORLOG=@LOCALSTATEDIR@/log/tor/tor.log
+TORCONF=@CONFDIR@/torrc
+RETVAL=0
+
+case "$1" in
+
+    start)
+    if [ -f $TORPID ]; then
+        echo "tor appears to be already running (pid file exists)"
+        echo "Maybe you should run: $0 restart ?"
+        RETVAL=1
+    else 
+        echo -n "Starting tor..."
+        $TORBIN -f $TORCONF -l warning >$TORLOG 2>&1 &
+        RETVAL=$?
+        if [ $RETVAL -eq 0 ]; then
+            echo " ok"
+        else
+            echo " ERROR!"
+        fi
+    fi
+    ;;
+
+    stop)
+    if [ -f $TORPID ]; then
+        echo -n "Killing tor..."
+        kill `cat $TORPID`
+        RETVAL=$?
+        if [ $RETVAL -eq 0 ]; then
+            echo " ok"
+        else
+            echo " ERROR!"
+        fi
+    else
+        echo "Unable to kill tor: $TORPID does not exist"
+        RETVAL=1
+    fi
+    ;;
+
+    restart)
+    $0 stop
+    if [ -f $TORPID ]; then
+            rm -f $TORPID
+    fi
+    $0 start
+    ;;
+
+    status)
+    PID=`cat $TORPID 2>/dev/null`
+    if [ "$PID" != "" ]; then
+        torstat=`ps -p $PID | grep -c "^$PID"`
+        if [ $torstat ]; then
+            echo "tor is running ($PID)"
+        else
+            echo "tor is not running (looks like it crashed, look for core?  $PID)"
+        fi
+    else
+        echo "tor is not running (exited gracefully)"
+    fi
+    ;;
+
+    log)
+    cat $TORLOG
+    ;;
+    
+    *)
+    echo "Usage: $0 (start|stop|restart|status|log)"
+    exit 1
+esac
+
+exit $RETVAL