gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] r19232 - in gnunet/src: dns exit pt


From: gnunet
Subject: [GNUnet-SVN] r19232 - in gnunet/src: dns exit pt
Date: Wed, 18 Jan 2012 13:47:53 +0100

Author: grothoff
Date: 2012-01-18 13:47:52 +0100 (Wed, 18 Jan 2012)
New Revision: 19232

Modified:
   gnunet/src/dns/gnunet-helper-dns.c
   gnunet/src/exit/gnunet-helper-exit.c
   gnunet/src/pt/gnunet-daemon-pt
Log:
-fixing #2082 -- allow iptables/ip/sysctl to also be in /usr/sbin

Modified: gnunet/src/dns/gnunet-helper-dns.c
===================================================================
--- gnunet/src/dns/gnunet-helper-dns.c  2012-01-18 12:47:16 UTC (rev 19231)
+++ gnunet/src/dns/gnunet-helper-dns.c  2012-01-18 12:47:52 UTC (rev 19232)
@@ -95,12 +95,12 @@
 /**
  * Name and full path of IPTABLES binary.
  */
-#define SBIN_IPTABLES "/sbin/iptables"
+static const char *sbin_iptables;
 
 /**
  * Name and full path of IPTABLES binary.
  */
-#define SBIN_IP "/sbin/ip"
+static const char *sbin_ip;
 
 /**
  * Port for DNS traffic.
@@ -685,19 +685,25 @@
   }
 
   /* verify that the binaries were care about are executable */
-  if (0 != access (SBIN_IPTABLES, X_OK))
+  if (0 == access ("/sbin/iptables", X_OK))
+    sbin_iptables = "/sbin/iptables";
+  else if (0 == access ("/usr/sbin/iptables", X_OK))
+    sbin_iptables = "/usr/sbin/iptables";
+  else
   {
     fprintf (stderr, 
-            "`%s' is not executable: %s\n", 
-            SBIN_IPTABLES,
+            "Fatal: executable iptables not found in approved directories: 
%s\n",
             strerror (errno));
     return 3;
   }
-  if (0 != access (SBIN_IP, X_OK))
+  if (0 == access ("/sbin/ip", X_OK))
+    sbin_ip = "/sbin/ip";
+  else if (0 == access ("/usr/sbin/ip", X_OK))
+    sbin_ip = "/usr/sbin/ip";
+  else
   {
-    fprintf (stderr, 
-            "`%s' is not executable: %s\n", 
-            SBIN_IP,
+    fprintf (stderr,
+            "Fatal: executable ip not found in approved directories: %s\n",
             strerror (errno));
     return 4;
   }
@@ -825,7 +831,7 @@
        "udp", "--sport", localport, "--dport", DNS_PORT, "-j",
        "ACCEPT", NULL
       };
-    if (0 != fork_and_exec (SBIN_IPTABLES, mangle_args))
+    if (0 != fork_and_exec (sbin_iptables, mangle_args))
       goto cleanup_rest;
   }    
   /* Mark all of the other DNS traffic using our mark DNS_MARK */
@@ -836,7 +842,7 @@
        "udp", "--dport", DNS_PORT, "-j", "MARK", "--set-mark", DNS_MARK,
        NULL
       };
-    if (0 != fork_and_exec (SBIN_IPTABLES, mark_args))
+    if (0 != fork_and_exec (sbin_iptables, mark_args))
       goto cleanup_mangle_1;
   }
   /* Forward all marked DNS traffic to our DNS_TABLE */
@@ -845,7 +851,7 @@
       {
        "ip", "rule", "add", "fwmark", DNS_MARK, "table", DNS_TABLE, NULL
       };
-    if (0 != fork_and_exec (SBIN_IP, forward_args))
+    if (0 != fork_and_exec (sbin_ip, forward_args))
       goto cleanup_mark_2;
   }
   /* Finally, add rule in our forwarding table to pass to our virtual 
interface */
@@ -855,7 +861,7 @@
        "ip", "route", "add", "default", "dev", dev,
        "table", DNS_TABLE, NULL
       };
-    if (0 != fork_and_exec (SBIN_IP, route_args))
+    if (0 != fork_and_exec (sbin_ip, route_args))
       goto cleanup_forward_3;
   }
 
@@ -910,7 +916,7 @@
        "ip", "route", "del", "default", "dev", dev,
        "table", DNS_TABLE, NULL
       };
-    if (0 != fork_and_exec (SBIN_IP, route_clean_args))
+    if (0 != fork_and_exec (sbin_ip, route_clean_args))
       r += 1;
   }
  cleanup_forward_3:
@@ -919,7 +925,7 @@
       {
        "ip", "rule", "del", "fwmark", DNS_MARK, "table", DNS_TABLE, NULL
       };
-    if (0 != fork_and_exec (SBIN_IP, forward_clean_args))
+    if (0 != fork_and_exec (sbin_ip, forward_clean_args))
       r += 2;  
   }
  cleanup_mark_2:
@@ -929,7 +935,7 @@
        "iptables", "-t", "mangle", "-D", "OUTPUT", "-p", "udp",
        "--dport", DNS_PORT, "-j", "MARK", "--set-mark", DNS_MARK, NULL
       };
-    if (0 != fork_and_exec (SBIN_IPTABLES, mark_clean_args))
+    if (0 != fork_and_exec (sbin_iptables, mark_clean_args))
       r += 4;
   }    
  cleanup_mangle_1:
@@ -940,7 +946,7 @@
        "--sport", localport, "--dport", DNS_PORT, "-j", "ACCEPT",
        NULL
       };
-    if (0 != fork_and_exec (SBIN_IPTABLES, mangle_clean_args))
+    if (0 != fork_and_exec (sbin_iptables, mangle_clean_args))
       r += 8;
   }
 

Modified: gnunet/src/exit/gnunet-helper-exit.c
===================================================================
--- gnunet/src/exit/gnunet-helper-exit.c        2012-01-18 12:47:16 UTC (rev 
19231)
+++ gnunet/src/exit/gnunet-helper-exit.c        2012-01-18 12:47:52 UTC (rev 
19232)
@@ -62,12 +62,12 @@
 /**
  * Path to 'sysctl' binary.
  */
-#define SBIN_SYSCTL "/sbin/sysctl"
+static const char *sbin_sysctl;
 
 /**
  * Path to 'iptables' binary.
  */
-#define SBIN_IPTABLES "/sbin/iptables"
+static const char *sbin_iptables;
 
 
 #ifndef _LINUX_IN6_H
@@ -615,6 +615,28 @@
     fprintf (stderr, "Fatal: disabling both IPv4 and IPv6 makes no sense.\n");
     return 1;
   }
+  if (0 == access ("/sbin/iptables", X_OK))
+    sbin_iptables = "/sbin/iptables";
+  else if (0 == access ("/usr/sbin/iptables", X_OK))
+    sbin_iptables = "/usr/sbin/iptables";
+  else
+  {
+    fprintf (stderr, 
+            "Fatal: executable iptables not found in approved directories: 
%s\n",
+            strerror (errno));
+    return 1;
+  }
+  if (0 == access ("/sbin/sysctl", X_OK))
+    sbin_sysctl = "/sbin/sysctl";
+  else if (0 == access ("/usr/sbin/sysctl", X_OK))
+    sbin_sysctl = "/usr/sbin/sysctl";
+  else
+  {
+    fprintf (stderr,
+            "Fatal: executable sysctl not found in approved directories: %s\n",
+            strerror (errno));
+    return 1;
+  }
 
   strncpy (dev, argv[1], IFNAMSIZ);
   dev[IFNAMSIZ - 1] = '\0';
@@ -643,7 +665,7 @@
        {
          "sysctl", "-w", "net.ipv6.conf.all.forwarding=1", NULL
        };
-      if (0 != fork_and_exec (SBIN_SYSCTL,
+      if (0 != fork_and_exec (sbin_sysctl,
                              sysctl_args))
       {
        fprintf (stderr,
@@ -665,7 +687,7 @@
        {
          "sysctl", "-w", "net.ipv4.ip_forward=1", NULL
        };
-      if (0 != fork_and_exec (SBIN_SYSCTL,
+      if (0 != fork_and_exec (sbin_sysctl,
                              sysctl_args))
       {
        fprintf (stderr,
@@ -678,7 +700,7 @@
        {
          "iptables", "-t", "nat", "-A", "POSTROUTING", "-o", argv[2], "-j", 
"MASQUERADE", NULL
        };
-      if (0 != fork_and_exec (SBIN_IPTABLES,
+      if (0 != fork_and_exec (sbin_iptables,
                              iptables_args))
       {
        fprintf (stderr,

Modified: gnunet/src/pt/gnunet-daemon-pt
===================================================================
--- gnunet/src/pt/gnunet-daemon-pt      2012-01-18 12:47:16 UTC (rev 19231)
+++ gnunet/src/pt/gnunet-daemon-pt      2012-01-18 12:47:52 UTC (rev 19232)
@@ -1,7 +1,7 @@
 #! /bin/bash
 
 # gnunet-daemon-pt - temporary wrapper script for .libs/gnunet-daemon-pt
-# Generated by ltmain.sh (GNU libtool) 2.2.6b Debian-2.2.6b-2
+# Generated by libtool (GNU libtool) 2.4.2 Debian-2.4.2-1
 #
 # The gnunet-daemon-pt program cannot be directly executed until all the 
libtool
 # libraries that it depends on are installed.
@@ -11,7 +11,6 @@
 
 # Sed substitution that helps us do robust quoting.  It backslashifies
 # metacharacters that are still active within double-quoted strings.
-Xsed='/bin/sed -e 1s/^X//'
 sed_quote_subst='s/\([`"$\\]\)/\\\1/g'
 
 # Be Bourne compatible
@@ -32,39 +31,125 @@
 # if CDPATH is set.
 (unset CDPATH) >/dev/null 2>&1 && unset CDPATH
 
-relink_command="(cd /home/grothoff/svn/gnunet/src/pt; { test -z 
\"\${LIBRARY_PATH+set}\" || unset LIBRARY_PATH || { LIBRARY_PATH=; export 
LIBRARY_PATH; }; }; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH 
|| { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z 
\"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; 
export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset 
LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; 
LD_LIBRARY_PATH=/usr/lib/debug:/home/grothoff/lib; export LD_LIBRARY_PATH; 
PATH=/opt/jdk1.6.0_22/bin:/usr/lib/jvm/java-6-sun//bin:.:/home/grothoff/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games;
 export PATH; gcc -fno-strict-aliasing -Wall -g -Wall -Werror -O0 
-I/home/grothoff//include -o \$progdir/\$file gnunet-daemon-pt.o  
-L/home/grothoff//lib ../../src/vpn/.libs/libgnunetvpn.so 
../../src/dns/.libs/libgnunetdns.so ../../src/dns/.libs/libgnunetdnsparser.so 
../../src/statistics/.libs/libg
 nunetstatistics.so ../../src/util/.libs/libgnunetutil.so 
../../src/mesh/.libs/libgnunetmesh.so -ldl -Wl,-rpath 
-Wl,/home/grothoff/svn/gnunet/src/vpn/.libs -Wl,-rpath 
-Wl,/home/grothoff/svn/gnunet/src/dns/.libs -Wl,-rpath 
-Wl,/home/grothoff/svn/gnunet/src/statistics/.libs -Wl,-rpath 
-Wl,/home/grothoff/svn/gnunet/src/util/.libs -Wl,-rpath 
-Wl,/home/grothoff/svn/gnunet/src/mesh/.libs -Wl,-rpath -Wl,/home/grothoff/lib)"
+relink_command="(cd /home/grothoff/svn/gnunet/src/pt; { test -z 
\"\${LIBRARY_PATH+set}\" || unset LIBRARY_PATH || { LIBRARY_PATH=; export 
LIBRARY_PATH; }; }; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH 
|| { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z 
\"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; 
export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset 
LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; 
LD_LIBRARY_PATH=/home/grothoff/lib; export LD_LIBRARY_PATH; 
PATH=/opt/jdk1.6.0_22/bin/:/home/grothoff/bin/:/usr/local/bin:/usr/bin:/bin:/usr/games:.;
 export PATH; gcc -fno-strict-aliasing -Wall -g -O0 -Wall -o \$progdir/\$file 
gnunet-daemon-pt.o  -L/home/grothoff//lib ../../src/vpn/.libs/libgnunetvpn.so 
../../src/dns/.libs/libgnunetdns.so ../../src/dns/.libs/libgnunetdnsparser.so 
../../src/statistics/.libs/libgnunetstatistics.so 
../../src/util/.libs/libgnunetutil.so ../../src/mesh/.libs/libgnunetmesh.s
 o -lm -ldl -Wl,-rpath -Wl,/home/grothoff/svn/gnunet/src/vpn/.libs -Wl,-rpath 
-Wl,/home/grothoff/svn/gnunet/src/dns/.libs -Wl,-rpath 
-Wl,/home/grothoff/svn/gnunet/src/statistics/.libs -Wl,-rpath 
-Wl,/home/grothoff/svn/gnunet/src/util/.libs -Wl,-rpath 
-Wl,/home/grothoff/svn/gnunet/src/mesh/.libs -Wl,-rpath -Wl,/home/grothoff/lib)"
 
 # This environment variable determines our operation mode.
 if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then
   # install mode needs the following variables:
-  generated_by_libtool_version='2.2.6b'
+  generated_by_libtool_version='2.4.2'
   notinst_deplibs=' ../../src/vpn/libgnunetvpn.la 
../../src/dns/libgnunetdns.la ../../src/dns/libgnunetdnsparser.la 
../../src/statistics/libgnunetstatistics.la ../../src/util/libgnunetutil.la 
../../src/mesh/libgnunetmesh.la'
 else
   # When we are sourced in execute mode, $file and $ECHO are already set.
   if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then
-    ECHO="echo"
     file="$0"
-    # Make sure echo works.
-    if test "X$1" = X--no-reexec; then
-      # Discard the --no-reexec flag, and continue.
-      shift
-    elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t'; then
-      # Yippee, $ECHO works!
-      :
-    else
-      # Restart under the correct shell, and then maybe $ECHO will work.
-      exec /bin/bash "$0" --no-reexec ${1+"$@"}
-    fi
+
+# A function that is used when there is no print builtin or printf.
+func_fallback_echo ()
+{
+  eval 'cat <<_LTECHO_EOF
+$1
+_LTECHO_EOF'
+}
+    ECHO="printf %s\\n"
   fi
 
+# Very basic option parsing. These options are (a) specific to
+# the libtool wrapper, (b) are identical between the wrapper
+# /script/ and the wrapper /executable/ which is used only on
+# windows platforms, and (c) all begin with the string --lt-
+# (application programs are unlikely to have options which match
+# this pattern).
+#
+# There are only two supported options: --lt-debug and
+# --lt-dump-script. There is, deliberately, no --lt-help.
+#
+# The first argument to this parsing function should be the
+# script's ../../libtool value, followed by no.
+lt_option_debug=
+func_parse_lt_options ()
+{
+  lt_script_arg0=$0
+  shift
+  for lt_opt
+  do
+    case "$lt_opt" in
+    --lt-debug) lt_option_debug=1 ;;
+    --lt-dump-script)
+        lt_dump_D=`$ECHO "X$lt_script_arg0" | /bin/sed -e 's/^X//' -e 
's%/[^/]*$%%'`
+        test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=.
+        lt_dump_F=`$ECHO "X$lt_script_arg0" | /bin/sed -e 's/^X//' -e 
's%^.*/%%'`
+        cat "$lt_dump_D/$lt_dump_F"
+        exit 0
+      ;;
+    --lt-*)
+        $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2
+        exit 1
+      ;;
+    esac
+  done
+
+  # Print the debug banner immediately:
+  if test -n "$lt_option_debug"; then
+    echo "gnunet-daemon-pt:gnunet-daemon-pt:${LINENO}: libtool wrapper (GNU 
libtool) 2.4.2 Debian-2.4.2-1" 1>&2
+  fi
+}
+
+# Used when --lt-debug. Prints its arguments to stdout
+# (redirection is the responsibility of the caller)
+func_lt_dump_args ()
+{
+  lt_dump_args_N=1;
+  for lt_arg
+  do
+    $ECHO "gnunet-daemon-pt:gnunet-daemon-pt:${LINENO}: 
newargv[$lt_dump_args_N]: $lt_arg"
+    lt_dump_args_N=`expr $lt_dump_args_N + 1`
+  done
+}
+
+# Core function for launching the target application
+func_exec_program_core ()
+{
+
+      if test -n "$lt_option_debug"; then
+        $ECHO "gnunet-daemon-pt:gnunet-daemon-pt:${LINENO}: newargv[0]: 
$progdir/$program" 1>&2
+        func_lt_dump_args ${1+"$@"} 1>&2
+      fi
+      exec "$progdir/$program" ${1+"$@"}
+
+      $ECHO "$0: cannot exec $program $*" 1>&2
+      exit 1
+}
+
+# A function to encapsulate launching the target application
+# Strips options in the --lt-* namespace from $@ and
+# launches target application with the remaining arguments.
+func_exec_program ()
+{
+  case " $* " in
+  *\ --lt-*)
+    for lt_wr_arg
+    do
+      case $lt_wr_arg in
+      --lt-*) ;;
+      *) set x "$@" "$lt_wr_arg"; shift;;
+      esac
+      shift
+    done ;;
+  esac
+  func_exec_program_core ${1+"$@"}
+}
+
+  # Parse options
+  func_parse_lt_options "$0" ${1+"$@"}
+
   # Find the directory that this script lives in.
-  thisdir=`$ECHO "X$file" | $Xsed -e 's%/[^/]*$%%'`
+  thisdir=`$ECHO "$file" | /bin/sed 's%/[^/]*$%%'`
   test "x$thisdir" = "x$file" && thisdir=.
 
   # Follow symbolic links until we get to the real thisdir.
   file=`ls -ld "$file" | /bin/sed -n 's/.*-> //p'`
   while test -n "$file"; do
-    destdir=`$ECHO "X$file" | $Xsed -e 's%/[^/]*$%%'`
+    destdir=`$ECHO "$file" | /bin/sed 's%/[^/]*$%%'`
 
     # If there was a directory component, then change thisdir.
     if test "x$destdir" != "x$file"; then
@@ -74,11 +159,10 @@
       esac
     fi
 
-    file=`$ECHO "X$file" | $Xsed -e 's%^.*/%%'`
+    file=`$ECHO "$file" | /bin/sed 's%^.*/%%'`
     file=`ls -ld "$thisdir/$file" | /bin/sed -n 's/.*-> //p'`
   done
 
-
   # Usually 'no', except on cygwin/mingw when embedded into
   # the cwrapper.
   WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no
@@ -89,7 +173,7 @@
     fi
     # remove .libs from thisdir
     case "$thisdir" in
-    *[\\/].libs ) thisdir=`$ECHO "X$thisdir" | $Xsed -e 's%[\\/][^\\/]*$%%'` ;;
+    *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /bin/sed 's%[\\/][^\\/]*$%%'` ;;
     .libs )   thisdir=. ;;
     esac
   fi
@@ -117,7 +201,7 @@
     if test -n "$relink_command"; then
       if relink_command_output=`eval $relink_command 2>&1`; then :
       else
-       echo "$relink_command_output" >&2
+       printf %s\n "$relink_command_output" >&2
        rm -f "$progdir/$file"
        exit 1
       fi
@@ -132,17 +216,13 @@
   if test -f "$progdir/$program"; then
     if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then
       # Run the actual program with our arguments.
-
-      exec "$progdir/$program" ${1+"$@"}
-
-      $ECHO "$0: cannot exec $program $*" 1>&2
-      exit 1
+      func_exec_program ${1+"$@"}
     fi
   else
     # The program doesn't exist.
     $ECHO "$0: error: \`$progdir/$program' does not exist" 1>&2
     $ECHO "This script is just a wrapper for $program." 1>&2
-    echo "See the libtool documentation for more information." 1>&2
+    $ECHO "See the libtool documentation for more information." 1>&2
     exit 1
   fi
 fi




reply via email to

[Prev in Thread] Current Thread [Next in Thread]