From: Christian Grothoff Date: Mon, 1 Aug 2011 20:55:56 +0000 (+0000) Subject: a bit cleanr X-Git-Tag: initial-import-from-subversion-38251~17541 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=de5f7ca7ed2e9aaca009c8015848b956bb23c11d;p=oweals%2Fgnunet.git a bit cleanr --- diff --git a/src/transport/gnunet-transport-certificate-creation b/src/transport/gnunet-transport-certificate-creation index 539035ad5..eeb550c09 100755 --- a/src/transport/gnunet-transport-certificate-creation +++ b/src/transport/gnunet-transport-certificate-creation @@ -1,27 +1,148 @@ -#!/bin/sh +#! /bin/bash -# GNUnet TLS certificate shell scricpt -# Creates a TSL certificate to use with HTTPS transport plugin +# gnunet-transport-certificate-creation - temporary wrapper script for .libs/gnunet-transport-certificate-creation +# Generated by ltmain.sh (GNU libtool) 2.2.6b Debian-2.2.6b-2ubuntu3 +# +# The gnunet-transport-certificate-creation program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. -if [ $# -ne 2 ]; then - exit 1 +# 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 +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command="(cd /home/grothoff/svn/gnunet/src/transport; { 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/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games; export PATH; gcc -fno-strict-aliasing -Wall -g -Wall -Werror -O0 -I/home/grothoff//include -o \$progdir/\$file gnunet-transport-certificate-creation.o -L/home/grothoff//lib ../../src/util/.libs/libgnunetutil.so -ldl -Wl,-rpath -Wl,/home/grothoff/svn/gnunet/src/util/.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' + notinst_deplibs=' ../../src/util/libgnunetutil.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 + fi + + # Find the directory that this script lives in. + thisdir=`$ECHO "X$file" | $Xsed -e '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%/[^/]*$%%'` + + # If there was a directory component, then change thisdir. + if test "x$destdir" != "x$file"; then + case "$destdir" in + [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;; + *) thisdir="$thisdir/$destdir" ;; + esac + fi + + file=`$ECHO "X$file" | $Xsed -e 's%^.*/%%'` + file=`ls -ld "$thisdir/$file" | /bin/sed -n 's/.*-> //p'` + done + -rm -f $1 $2 + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no + if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then + # special case for '.' + if test "$thisdir" = "."; then + thisdir=`pwd` + fi + # remove .libs from thisdir + case "$thisdir" in + *[\\/].libs ) thisdir=`$ECHO "X$thisdir" | $Xsed -e 's%[\\/][^\\/]*$%%'` ;; + .libs ) thisdir=. ;; + esac + fi -# Create RSA Private Key -openssl genrsa -out $1 1024 2> /dev/null -if [ $? -ne 0 ]; then - rm -f $1 $2 - exit 1 -fi -# Create a self-signed certificate in batch mode using rsa key - openssl req -batch -days 365 -out $2 -new -x509 -key $1 2> /dev/null -if [ $? -ne 0 ]; then - rm -f $1 $2 - exit 1 -fi + # Try to get the absolute directory name. + absdir=`cd "$thisdir" && pwd` + test -n "$absdir" && thisdir="$absdir" -chmod 0400 $1 $2 + program=lt-'gnunet-transport-certificate-creation' + progdir="$thisdir/.libs" -exit 0 + if test ! -f "$progdir/$program" || + { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /bin/sed 1q`; \ + test "X$file" != "X$progdir/$program"; }; then + + file="$$-$program" + + if test ! -d "$progdir"; then + mkdir "$progdir" + else + rm -f "$progdir/$file" + fi + + # relink executable if necessary + if test -n "$relink_command"; then + if relink_command_output=`eval $relink_command 2>&1`; then : + else + echo "$relink_command_output" >&2 + rm -f "$progdir/$file" + exit 1 + fi + fi + + mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null || + { rm -f "$progdir/$program"; + mv -f "$progdir/$file" "$progdir/$program"; } + rm -f "$progdir/$file" + fi + + 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 + 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 + exit 1 + fi +fi diff --git a/src/transport/plugin_transport_http.c b/src/transport/plugin_transport_http.c index 955b622b7..528098f05 100644 --- a/src/transport/plugin_transport_http.c +++ b/src/transport/plugin_transport_http.c @@ -3482,7 +3482,7 @@ LIBGNUNET_PLUGIN_TRANSPORT_INIT (void *cls) if ( (plugin->key==NULL) || (plugin->cert==NULL) ) { - struct GNUNET_OS_Process *certcreation = NULL; + struct GNUNET_OS_Process *certcreation; enum GNUNET_OS_ProcessStatusType status_type = GNUNET_OS_PROCESS_UNKNOWN; unsigned long code = 0; int ret = 0; @@ -3491,15 +3491,21 @@ LIBGNUNET_PLUGIN_TRANSPORT_INIT (void *cls) plugin->key = NULL; GNUNET_free_non_null (plugin->cert); plugin->cert = NULL; +#if DEBUG_HTTP GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "No usable TLS certificate found, creating certificate\n"); +#endif errno = 0; - certcreation = GNUNET_OS_start_process (NULL, NULL, "gnunet-transport-certificate-creation", "gnunet-transport-certificate-creation", key_file, cert_file, NULL); - if (certcreation == NULL - || (ret = 1) != 1 || GNUNET_OS_process_wait (certcreation) != GNUNET_OK - || (ret = 2) != 2 || (GNUNET_OS_process_status (certcreation, &status_type, &code) != GNUNET_OK - || (ret = 3) != 3 || status_type != GNUNET_OS_PROCESS_EXITED - || (ret = 4) != 4 || code != 0)) + certcreation = GNUNET_OS_start_process (NULL, NULL, + "gnunet-transport-certificate-creation", + "gnunet-transport-certificate-creation", + key_file, cert_file, + NULL); + if ( (certcreation == NULL) || + (1 != (ret = 1) ) || (GNUNET_OS_process_wait (certcreation) != GNUNET_OK) || + (2 != (ret = 2) ) || (GNUNET_OS_process_status (certcreation, &status_type, &code) != GNUNET_OK) || + (3 != (ret = 3) ) || (status_type != GNUNET_OS_PROCESS_EXITED) || + (4 != (ret = 4) ) || (code != 0) ) { GNUNET_log_from (GNUNET_ERROR_TYPE_ERROR, "https", @@ -3509,11 +3515,11 @@ LIBGNUNET_PLUGIN_TRANSPORT_INIT (void *cls) GNUNET_free (cert_file); GNUNET_free (component_name); if (certcreation != NULL) - { - GNUNET_OS_process_kill (certcreation, SIGTERM); - GNUNET_OS_process_close (certcreation); - } - LIBGNUNET_PLUGIN_TRANSPORT_DONE(api); + { + GNUNET_OS_process_kill (certcreation, SIGTERM); + GNUNET_OS_process_close (certcreation); + } + LIBGNUNET_PLUGIN_TRANSPORT_DONE (api); return NULL; } GNUNET_OS_process_close (certcreation); @@ -3537,8 +3543,10 @@ LIBGNUNET_PLUGIN_TRANSPORT_INIT (void *cls) GNUNET_free (cert_file); GNUNET_assert((plugin->key!=NULL) && (plugin->cert!=NULL)); +#if DEBUG_HTTP GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "TLS certificate loaded\n"); +#endif #endif GNUNET_assert ((port > 0) && (port <= 65535));