mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-28 14:23:30 +01:00
Merge branch 'bug8966_v5'
This commit is contained in:
commit
9b825ffc4f
19
.gitignore
vendored
19
.gitignore
vendored
@ -26,6 +26,7 @@
|
|||||||
*.bak
|
*.bak
|
||||||
# Python droppings
|
# Python droppings
|
||||||
*.pyc
|
*.pyc
|
||||||
|
*.pyo
|
||||||
|
|
||||||
# /
|
# /
|
||||||
/Makefile
|
/Makefile
|
||||||
@ -60,20 +61,10 @@
|
|||||||
/tor-*-win32.exe
|
/tor-*-win32.exe
|
||||||
|
|
||||||
# /contrib/
|
# /contrib/
|
||||||
/contrib/Makefile
|
/contrib/dist/tor.sh
|
||||||
/contrib/Makefile.in
|
/contrib/dist/torctl
|
||||||
/contrib/tor.sh
|
/contrib/operator-tools/tor.logrotate
|
||||||
/contrib/torctl
|
/contrib/dist/suse/tor.sh
|
||||||
/contrib/torify
|
|
||||||
/contrib/*.pyc
|
|
||||||
/contrib/*.pyo
|
|
||||||
/contrib/tor.logrotate
|
|
||||||
/contrib/tor.wxs
|
|
||||||
|
|
||||||
# /contrib/suse/
|
|
||||||
/contrib/suse/tor.sh
|
|
||||||
/contrib/suse/Makefile.in
|
|
||||||
/contrib/suse/Makefile
|
|
||||||
|
|
||||||
# /debian/
|
# /debian/
|
||||||
/debian/files
|
/debian/files
|
||||||
|
@ -77,7 +77,7 @@ reset-gcov:
|
|||||||
# Avoid strlcpy.c, strlcat.c, aes.c, OpenBSD_malloc_Linux.c, sha256.c,
|
# Avoid strlcpy.c, strlcat.c, aes.c, OpenBSD_malloc_Linux.c, sha256.c,
|
||||||
# eventdns.[hc], tinytest*.[ch]
|
# eventdns.[hc], tinytest*.[ch]
|
||||||
check-spaces:
|
check-spaces:
|
||||||
./contrib/checkSpace.pl -C \
|
./scripts/maint/checkSpace.pl -C \
|
||||||
src/common/*.[ch] \
|
src/common/*.[ch] \
|
||||||
src/or/*.[ch] \
|
src/or/*.[ch] \
|
||||||
src/test/*.[ch] \
|
src/test/*.[ch] \
|
||||||
@ -85,10 +85,10 @@ check-spaces:
|
|||||||
src/tools/tor-fw-helper/*.[ch]
|
src/tools/tor-fw-helper/*.[ch]
|
||||||
|
|
||||||
check-docs:
|
check-docs:
|
||||||
./contrib/checkOptionDocs.pl
|
./scripts/maint/checkOptionDocs.pl
|
||||||
|
|
||||||
check-logs:
|
check-logs:
|
||||||
./contrib/checkLogs.pl \
|
./scripts/maint/checkLogs.pl \
|
||||||
src/*/*.[ch] | sort -n
|
src/*/*.[ch] | sort -n
|
||||||
|
|
||||||
version:
|
version:
|
||||||
|
7
changes/ticket8966
Normal file
7
changes/ticket8966
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
o Package cleanup:
|
||||||
|
- The contrib directory has been sorted and tidy. Before, it was an
|
||||||
|
unsorted dumping ground for useful and not-so-useful things. Now,
|
||||||
|
it has been divided based on functionality, and the items which
|
||||||
|
seemed to be nonfunctional or useless have been removed. Resolves
|
||||||
|
ticket 8966; based on patches from "rl1987".
|
||||||
|
|
12
configure.ac
12
configure.ac
@ -1557,10 +1557,10 @@ CPPFLAGS="$CPPFLAGS $TOR_CPPFLAGS_libevent $TOR_CPPFLAGS_openssl $TOR_CPPFLAGS_z
|
|||||||
AC_CONFIG_FILES([
|
AC_CONFIG_FILES([
|
||||||
Doxyfile
|
Doxyfile
|
||||||
Makefile
|
Makefile
|
||||||
contrib/suse/tor.sh
|
contrib/dist/suse/tor.sh
|
||||||
contrib/tor.logrotate
|
contrib/operator-tools/tor.logrotate
|
||||||
contrib/tor.sh
|
contrib/dist/tor.sh
|
||||||
contrib/torctl
|
contrib/dist/torctl
|
||||||
src/config/torrc.sample
|
src/config/torrc.sample
|
||||||
])
|
])
|
||||||
|
|
||||||
@ -1582,6 +1582,6 @@ fi
|
|||||||
|
|
||||||
AC_OUTPUT
|
AC_OUTPUT
|
||||||
|
|
||||||
if test -x /usr/bin/perl && test -x ./contrib/updateVersions.pl ; then
|
if test -x /usr/bin/perl && test -x ./scripts/maint/updateVersions.pl ; then
|
||||||
./contrib/updateVersions.pl
|
./scripts/maint/updateVersions.pl
|
||||||
fi
|
fi
|
||||||
|
@ -1,6 +0,0 @@
|
|||||||
Tor directory authorities may maintain a binding of server identities
|
|
||||||
(their long term identity key) and nicknames.
|
|
||||||
|
|
||||||
The auto-naming scripts have been moved to svn in
|
|
||||||
projects/tor-naming/auto-naming/trunk/
|
|
||||||
|
|
@ -1,67 +0,0 @@
|
|||||||
!include "MUI.nsh"
|
|
||||||
!include "LogicLib.nsh"
|
|
||||||
!include "FileFunc.nsh"
|
|
||||||
|
|
||||||
!define VERSION "0.2.1.13"
|
|
||||||
!define INSTALLER "TorBundle.exe"
|
|
||||||
!define WEBSITE "https://www.torproject.org/"
|
|
||||||
!define LICENSE "LICENSE"
|
|
||||||
|
|
||||||
SetCompressor /SOLID BZIP2
|
|
||||||
RequestExecutionLevel user
|
|
||||||
OutFile ${INSTALLER}
|
|
||||||
InstallDir "$LOCALAPPDATA\TorInstPkgs"
|
|
||||||
SetOverWrite on
|
|
||||||
Name "Tor ${VERSION} Bundle"
|
|
||||||
Caption "Tor ${VERSION} Bundle Setup"
|
|
||||||
BrandingText "Tor Bundle Installer"
|
|
||||||
CRCCheck on
|
|
||||||
XPStyle on
|
|
||||||
ShowInstDetails hide
|
|
||||||
VIProductVersion "${VERSION}"
|
|
||||||
VIAddVersionKey "ProductName" "Tor"
|
|
||||||
VIAddVersionKey "Comments" "${WEBSITE}"
|
|
||||||
VIAddVersionKey "LegalTrademarks" "Three line BSD"
|
|
||||||
VIAddVersionKey "LegalCopyright" "©2004-2011, Roger Dingledine, Nick Mathewson, The Tor Project, Inc."
|
|
||||||
VIAddVersionKey "FileDescription" "Tor is an implementation of Onion Routing. You can read more at ${WEBSITE}"
|
|
||||||
VIAddVersionKey "FileVersion" "${VERSION}"
|
|
||||||
|
|
||||||
!define MUI_ICON "torinst32.ico"
|
|
||||||
!define MUI_HEADERIMAGE_BITMAP "${NSISDIR}\Contrib\Graphics\Header\win.bmp"
|
|
||||||
!insertmacro MUI_PAGE_INSTFILES
|
|
||||||
!insertmacro MUI_LANGUAGE "English"
|
|
||||||
|
|
||||||
Section "Tor" Tor
|
|
||||||
SectionIn RO
|
|
||||||
SetOutPath $INSTDIR
|
|
||||||
Call ExtractPackages
|
|
||||||
Call RunInstallers
|
|
||||||
Call LaunchVidalia
|
|
||||||
SectionEnd
|
|
||||||
|
|
||||||
Function ExtractPackages
|
|
||||||
File "license.msi"
|
|
||||||
File "tor.msi"
|
|
||||||
File "torbutton.msi"
|
|
||||||
File "thandy.msi"
|
|
||||||
File "polipo.msi"
|
|
||||||
File "vidalia.msi"
|
|
||||||
File "tbcheck.bat"
|
|
||||||
FunctionEnd
|
|
||||||
|
|
||||||
Function RunInstallers
|
|
||||||
ExecWait 'msiexec /i "$INSTDIR\license.msi" /qn'
|
|
||||||
ExecWait 'msiexec /i "$INSTDIR\tor.msi" NOSC=1 /qn'
|
|
||||||
ExecWait 'msiexec /i "$INSTDIR\thandy.msi" NOSC=1 /qn'
|
|
||||||
ExecWait 'msiexec /i "$INSTDIR\polipo.msi" NOSC=1 /qn'
|
|
||||||
ExecWait 'msiexec /i "$INSTDIR\torbutton.msi" /qn'
|
|
||||||
ExecWait 'msiexec /i "$INSTDIR\vidalia.msi" /qn'
|
|
||||||
ExpandEnvStrings $0 %COMSPEC%
|
|
||||||
Exec '"$0" /C "$INSTDIR\tbcheck.bat"'
|
|
||||||
FunctionEnd
|
|
||||||
|
|
||||||
Function LaunchVidalia
|
|
||||||
SetOutPath "$LOCALAPPDATA\Programs\Vidalia"
|
|
||||||
Exec 'vidalia.exe -loglevel info -logfile log.txt'
|
|
||||||
FunctionEnd
|
|
||||||
|
|
195
contrib/cross.sh
195
contrib/cross.sh
@ -1,195 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
# Copyright 2006 Michael Mohr with modifications by Roger Dingledine
|
|
||||||
# See LICENSE for licensing information.
|
|
||||||
|
|
||||||
#######################################################################
|
|
||||||
# Tor-cross: a tool to help cross-compile Tor
|
|
||||||
#
|
|
||||||
# The purpose of a cross-compiler is to produce an executable for
|
|
||||||
# one system (CPU) on another. This is useful, for example, when
|
|
||||||
# the target system does not have a native compiler available.
|
|
||||||
# You might, for example, wish to cross-compile a program on your
|
|
||||||
# host (the computer you're working on now) for a target such as
|
|
||||||
# a router or handheld computer.
|
|
||||||
#
|
|
||||||
# A number of environment variables must be set in order for this
|
|
||||||
# script to work:
|
|
||||||
# $PREFIX, $CROSSPATH, $HOST_TRIPLET, $HOST,
|
|
||||||
# and (optionally) $BUILD
|
|
||||||
# Please run the script for a description of each one. If automated
|
|
||||||
# builds are desired, the above variables can be exported at the top
|
|
||||||
# of this script.
|
|
||||||
#
|
|
||||||
# Recent releases of Tor include test programs in configure. Normally
|
|
||||||
# this is a good thing, since it catches a number of problems.
|
|
||||||
# However, this also presents a problem when cross compiling, since
|
|
||||||
# you can't run binary images for the target system on the host.
|
|
||||||
#
|
|
||||||
# Tor-cross assumes that you know what you're doing and removes a
|
|
||||||
# number of checks known to cause problems with this process.
|
|
||||||
# Note that this does not guarantee that the program will run or
|
|
||||||
# even compile; it simply allows configure to generate the Makefiles.
|
|
||||||
#
|
|
||||||
# Stripping the binaries should almost always be done for an
|
|
||||||
# embedded environment where space is at an exacting premium.
|
|
||||||
# However, the default is NOT to strip them since they are useful for
|
|
||||||
# debugging. If you do not plan to do any debugging and you
|
|
||||||
# don't care about the debugging symbols, set $STRIP to "yes" before
|
|
||||||
# running this script.
|
|
||||||
#
|
|
||||||
# Tor-cross was written by Michael Mohr. He can be contacted at
|
|
||||||
# m(dot)mohr(at)laposte(dot)net. Comments are appreciated, but
|
|
||||||
# flames go to /dev/null.
|
|
||||||
#
|
|
||||||
# The target with which this script is tested is little-endian
|
|
||||||
# MIPS Linux, built on an Athlon-based Linux desktop.
|
|
||||||
#
|
|
||||||
#######################################################################
|
|
||||||
|
|
||||||
# disable the platform-specific tests in configure
|
|
||||||
export CROSS_COMPILE=yes
|
|
||||||
|
|
||||||
# for error conditions
|
|
||||||
EXITVAL=0
|
|
||||||
|
|
||||||
if [ ! -f autogen.sh ]
|
|
||||||
then
|
|
||||||
echo "Please run this script from the root of the Tor distribution"
|
|
||||||
exit -1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ ! -f configure ]
|
|
||||||
then
|
|
||||||
if [ -z $GEN_BUILD ]
|
|
||||||
then
|
|
||||||
echo "To automatically generate the build environment, set \$GEN_BUILD"
|
|
||||||
echo "to yes; for example,"
|
|
||||||
echo " export GEN_BUILD=yes"
|
|
||||||
EXITVAL=-1
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -z $PREFIX ]
|
|
||||||
then
|
|
||||||
echo "You must define \$PREFIX since you are cross-compiling."
|
|
||||||
echo "Select a non-system location (i.e. /tmp/tor-cross):"
|
|
||||||
echo " export PREFIX=/tmp/tor-cross"
|
|
||||||
EXITVAL=-1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -z $CROSSPATH ]
|
|
||||||
then
|
|
||||||
echo "You must define the location of your cross-compiler's"
|
|
||||||
echo "directory using \$CROSSPATH; for example,"
|
|
||||||
echo " export CROSSPATH=/opt/cross/staging_dir_mipsel/bin"
|
|
||||||
EXITVAL=-1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -z $HOST_TRIPLET ]
|
|
||||||
then
|
|
||||||
echo "You must define \$HOST_TRIPLET to continue. For example,"
|
|
||||||
echo "if you normally cross-compile applications using"
|
|
||||||
echo "mipsel-linux-uclibc-gcc, you would set \$HOST_TRIPLET like so:"
|
|
||||||
echo " export HOST_TRIPLET=mipsel-linux-uclibc-"
|
|
||||||
EXITVAL=-1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -z $HOST ]
|
|
||||||
then
|
|
||||||
echo "You must specify a target processor with \$HOST; for example:"
|
|
||||||
echo " export HOST=mipsel-unknown-elf"
|
|
||||||
EXITVAL=-1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -z $BUILD ]
|
|
||||||
then
|
|
||||||
echo "You should specify the host machine's type with \$BUILD; for example:"
|
|
||||||
echo " export BUILD=i686-pc-linux-gnu"
|
|
||||||
echo "If you wish to let configure autodetect the host, set \$BUILD to 'auto':"
|
|
||||||
echo " export BUILD=auto"
|
|
||||||
EXITVAL=-1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ ! -x $CROSSPATH/$HOST_TRIPLETgcc ]
|
|
||||||
then
|
|
||||||
echo "The specified toolchain does not contain an executable C compiler."
|
|
||||||
echo "Please double-check your settings and rerun cross.sh."
|
|
||||||
EXITVAL=-1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ $EXITVAL -ne 0 ]
|
|
||||||
then
|
|
||||||
echo "Remember, you can hard-code these values in cross.sh if needed."
|
|
||||||
exit $EXITVAL
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ ! -z "$GEN_BUILD" -a ! -f configure ]
|
|
||||||
then
|
|
||||||
export NOCONF=yes
|
|
||||||
./autogen.sh
|
|
||||||
fi
|
|
||||||
|
|
||||||
# clean up any existing object files
|
|
||||||
if [ -f src/or/tor ]
|
|
||||||
then
|
|
||||||
make clean
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Set up the build environment and try to run configure
|
|
||||||
export PATH=$PATH:$CROSSPATH
|
|
||||||
export RANLIB=${HOST_TRIPLET}ranlib
|
|
||||||
export CC=${HOST_TRIPLET}gcc
|
|
||||||
|
|
||||||
if [ $BUILD == "auto" ]
|
|
||||||
then
|
|
||||||
./configure \
|
|
||||||
--enable-debug \
|
|
||||||
--enable-eventdns \
|
|
||||||
--prefix=$PREFIX \
|
|
||||||
--host=$HOST
|
|
||||||
else
|
|
||||||
./configure \
|
|
||||||
--enable-debug \
|
|
||||||
--enable-eventdns \
|
|
||||||
--prefix=$PREFIX \
|
|
||||||
--host=$HOST \
|
|
||||||
--build=$BUILD
|
|
||||||
fi
|
|
||||||
|
|
||||||
# has a problem occurred?
|
|
||||||
if [ $? -ne 0 ]
|
|
||||||
then
|
|
||||||
echo ""
|
|
||||||
echo "A problem has been detected with configure."
|
|
||||||
echo "Please check the output above and rerun cross.sh"
|
|
||||||
echo ""
|
|
||||||
exit -1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Now we're cookin'
|
|
||||||
|
|
||||||
make
|
|
||||||
|
|
||||||
# has a problem occurred?
|
|
||||||
if [ $? -ne 0 ]
|
|
||||||
then
|
|
||||||
echo ""
|
|
||||||
echo "A problem has been detected with make."
|
|
||||||
echo "Please check the output above and rerun make."
|
|
||||||
echo ""
|
|
||||||
exit -1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# if $STRIP has length (i.e. STRIP=yes), strip the binaries
|
|
||||||
if [ ! -z $STRIP ]
|
|
||||||
then
|
|
||||||
${HOST_TRIPLET}strip \
|
|
||||||
src/or/tor \
|
|
||||||
src/test/test \
|
|
||||||
src/tools/tor-resolve
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo ""
|
|
||||||
echo "Tor should be compiled at this point. Now run 'make install' to"
|
|
||||||
echo "install to $PREFIX"
|
|
||||||
echo ""
|
|
@ -1,3 +0,0 @@
|
|||||||
10 * * * * cd projects/tor-v2dir && ./fetch-all-v3
|
|
||||||
40 * * * * cd projects/tor-v2dir && ./fetch-all
|
|
||||||
15 3 6 * * cd projects/tor-v2dir && ./sort-into-month-folder > /dev/null && ./tar-them-up last > /dev/null
|
|
@ -1,77 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# Download all current v2 directory status documents, then download
|
|
||||||
# the descriptors and extra info documents.
|
|
||||||
|
|
||||||
# Copyright (c) 2005, 2006, 2007, 2008 Peter Palfrader
|
|
||||||
#
|
|
||||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
# of this software and associated documentation files (the "Software"), to deal
|
|
||||||
# in the Software without restriction, including without limitation the rights
|
|
||||||
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
# copies of the Software, and to permit persons to whom the Software is
|
|
||||||
# furnished to do so, subject to the following conditions:
|
|
||||||
#
|
|
||||||
# The above copyright notice and this permission notice shall be included in
|
|
||||||
# all copies or substantial portions of the Software.
|
|
||||||
#
|
|
||||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
||||||
# SOFTWARE.
|
|
||||||
|
|
||||||
TZ=UTC
|
|
||||||
export TZ
|
|
||||||
|
|
||||||
DIRSERVERS=""
|
|
||||||
DIRSERVERS="$DIRSERVERS 86.59.21.38:80" # tor26
|
|
||||||
DIRSERVERS="$DIRSERVERS 128.31.0.34:9031" # moria1
|
|
||||||
DIRSERVERS="$DIRSERVERS 128.31.0.34:9032" # moria2
|
|
||||||
DIRSERVERS="$DIRSERVERS 194.109.206.212:80" # dizum
|
|
||||||
|
|
||||||
DATEDIR=$(date "+%Y/%m/%d")
|
|
||||||
TIME=$(date "+%Y%m%d-%H%M%S")
|
|
||||||
|
|
||||||
. fetch-all-functions
|
|
||||||
|
|
||||||
statuses=""
|
|
||||||
for dirserver in $DIRSERVERS; do
|
|
||||||
authorities=$(wget -q -O - http://$dirserver/tor/status/all | egrep '^fingerprint ' | awk '{print $2}')
|
|
||||||
if [ "$authorities" == "" ]; then
|
|
||||||
echo "Did not get a list of authorities from $dirserver, going to next" 2>&1
|
|
||||||
continue
|
|
||||||
fi
|
|
||||||
|
|
||||||
dir="status/$DATEDIR"
|
|
||||||
[ -d "$dir" ] || mkdir -p "$dir"
|
|
||||||
|
|
||||||
authprefix="$dir/$TIME-"
|
|
||||||
for fp in $authorities; do
|
|
||||||
wget -q -O "$authprefix$fp" http://$dirserver/tor/status/fp/"$fp"
|
|
||||||
bzip2 "$authprefix$fp"
|
|
||||||
statuses="$statuses $authprefix$fp.bz2"
|
|
||||||
done
|
|
||||||
if [ "$statuses" == "" ]; then
|
|
||||||
echo "Did not get any statuses from $dirserver, going to next" 2>&1
|
|
||||||
continue
|
|
||||||
else
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
if [ "$statuses" = "" ]; then
|
|
||||||
echo "No statuses available" 2>&1
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
digests=$( for i in ` bzcat $statuses | awk '$1 == "r" {printf "%s=\n", $4}' | sort -u `; do
|
|
||||||
echo $i | \
|
|
||||||
base64-decode | \
|
|
||||||
perl -e 'undef $/; $a=<>; print unpack("H\*", $a),"\n";';
|
|
||||||
done )
|
|
||||||
for digest in $digests; do
|
|
||||||
fetch_digest "$digest" "server-descriptor"
|
|
||||||
done
|
|
@ -1,82 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# function used by fetch-all* to download server descriptors and
|
|
||||||
# extra info documents
|
|
||||||
|
|
||||||
# Copyright (c) 2005, 2006, 2007, 2008 Peter Palfrader
|
|
||||||
#
|
|
||||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
# of this software and associated documentation files (the "Software"), to deal
|
|
||||||
# in the Software without restriction, including without limitation the rights
|
|
||||||
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
# copies of the Software, and to permit persons to whom the Software is
|
|
||||||
# furnished to do so, subject to the following conditions:
|
|
||||||
#
|
|
||||||
# The above copyright notice and this permission notice shall be included in
|
|
||||||
# all copies or substantial portions of the Software.
|
|
||||||
#
|
|
||||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
||||||
# SOFTWARE.
|
|
||||||
|
|
||||||
|
|
||||||
fetch_digest() {
|
|
||||||
local digest
|
|
||||||
local objecttype
|
|
||||||
local urlpart
|
|
||||||
local pathpart
|
|
||||||
local target
|
|
||||||
local targetdir
|
|
||||||
local dirserver
|
|
||||||
local ei
|
|
||||||
|
|
||||||
digest="$1"
|
|
||||||
objecttype="$2"
|
|
||||||
if [ "$objecttype" = "server-descriptor" ] ; then
|
|
||||||
urlpart="server"
|
|
||||||
pathpart="server-descriptor"
|
|
||||||
elif [ "$objecttype" = "extra-info" ] ; then
|
|
||||||
urlpart="extra"
|
|
||||||
pathpart="extra-info"
|
|
||||||
else
|
|
||||||
echo "Called fetch_digest with illegal objecttype '$objecttype'" >&2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
target=$( echo $digest | sed -e 's#^\(.\)\(.\)#'"$pathpart"'/\1/\2/\1\2#' )
|
|
||||||
targetdir=$( dirname $target )
|
|
||||||
[ -d "$targetdir" ] || mkdir -p "$targetdir"
|
|
||||||
if ! [ -e "$target" ]; then
|
|
||||||
for dirserver in $DIRSERVERS; do
|
|
||||||
wget -q -O "$target" http://$dirserver/tor/$urlpart/d/"$digest" || rm -f "$target"
|
|
||||||
if [ -s "$target" ]; then
|
|
||||||
if egrep '^opt extra-info-digest ' "$target" > /dev/null; then
|
|
||||||
ei=$( egrep '^opt extra-info-digest ' "$target" | awk '{print $3}' | tr 'A-F' 'a-f' )
|
|
||||||
fetch_digest "$ei" "extra-info"
|
|
||||||
elif egrep '^extra-info-digest ' "$target" > /dev/null; then
|
|
||||||
ei=$( egrep '^extra-info-digest ' "$target" | awk '{print $2}' | tr 'A-F' 'a-f' )
|
|
||||||
fetch_digest "$ei" "extra-info"
|
|
||||||
fi
|
|
||||||
break
|
|
||||||
else
|
|
||||||
rm -f "$target"
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
#if ! [ -e "$target" ]; then
|
|
||||||
# echo "$objecttype $digest" >> failed
|
|
||||||
#fi
|
|
||||||
}
|
|
||||||
|
|
||||||
if [ -x /usr/bin/base64 ] ; then
|
|
||||||
base64-decode() {
|
|
||||||
/usr/bin/base64 -d
|
|
||||||
}
|
|
||||||
else
|
|
||||||
base64-decode() {
|
|
||||||
perl -MMIME::Base64 -e 'print decode_base64(<>)'
|
|
||||||
}
|
|
||||||
fi
|
|
@ -1,111 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# Download all current v3 directory status votes and the consensus document,
|
|
||||||
# then download the descriptors and extra info documents.
|
|
||||||
|
|
||||||
# Copyright (c) 2005, 2006, 2007, 2008 Peter Palfrader
|
|
||||||
#
|
|
||||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
# of this software and associated documentation files (the "Software"), to deal
|
|
||||||
# in the Software without restriction, including without limitation the rights
|
|
||||||
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
# copies of the Software, and to permit persons to whom the Software is
|
|
||||||
# furnished to do so, subject to the following conditions:
|
|
||||||
#
|
|
||||||
# The above copyright notice and this permission notice shall be included in
|
|
||||||
# all copies or substantial portions of the Software.
|
|
||||||
#
|
|
||||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
||||||
# SOFTWARE.
|
|
||||||
|
|
||||||
TZ=UTC
|
|
||||||
export TZ
|
|
||||||
|
|
||||||
DIRSERVERS=""
|
|
||||||
DIRSERVERS="$DIRSERVERS 86.59.21.38:80" # tor26
|
|
||||||
DIRSERVERS="$DIRSERVERS 128.31.0.34:9031" # moria1
|
|
||||||
DIRSERVERS="$DIRSERVERS 216.224.124.114:9030" # ides
|
|
||||||
DIRSERVERS="$DIRSERVERS 80.190.246.100:80" # gabelmoo
|
|
||||||
#DIRSERVERS="$DIRSERVERS 140.247.60.64:80" # lefkada
|
|
||||||
DIRSERVERS="$DIRSERVERS 194.109.206.212:80" # dizum
|
|
||||||
#DIRSERVERS="$DIRSERVERS 128.31.0.34:9032" # moria2
|
|
||||||
DIRSERVERS="$DIRSERVERS 213.73.91.31:80" # dannenberg
|
|
||||||
DIRSERVERS="$DIRSERVERS 208.83.223.34:443" # urras
|
|
||||||
TIME=$(date "+%Y%m%d-%H%M%S")
|
|
||||||
|
|
||||||
. fetch-all-functions
|
|
||||||
|
|
||||||
consensus=""
|
|
||||||
tmpdir="consensus/tmp"
|
|
||||||
[ -d "$tmpdir" ] || mkdir -p "$tmpdir"
|
|
||||||
for dirserver in $DIRSERVERS; do
|
|
||||||
wget -q -O "$tmpdir/$TIME-consensus" http://$dirserver/tor/status-vote/current/consensus
|
|
||||||
if [ "$?" != 0 ]; then
|
|
||||||
rm -f "$tmpdir/$TIME-consensus"
|
|
||||||
continue
|
|
||||||
fi
|
|
||||||
|
|
||||||
freshconsensus="$tmpdir/$TIME-consensus"
|
|
||||||
|
|
||||||
timestamp=$(awk '$1=="valid-after" {printf "%s-%s", $2, $3}' < "$freshconsensus")
|
|
||||||
datedir=$(awk '$1=="valid-after" {printf "%s", $2}' < "$freshconsensus" | tr '-' '/')
|
|
||||||
dir="consensus/$datedir"
|
|
||||||
[ -d "$dir" ] || mkdir -p "$dir"
|
|
||||||
|
|
||||||
|
|
||||||
consensus="$dir/$timestamp-consensus.bz2"
|
|
||||||
if ! [ -e "$consensus" ]; then
|
|
||||||
# the consensus is new, or at least we don't have it yet
|
|
||||||
bzip2 "$freshconsensus"
|
|
||||||
mv "$freshconsensus.bz2" "$consensus"
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
|
|
||||||
rm -f "$freshconsensus"
|
|
||||||
echo "Consensus from $timestamp (gotten from $dirserver) already exists!" >&2
|
|
||||||
# maybe there is a newer one on a different authority, so try again.
|
|
||||||
done
|
|
||||||
|
|
||||||
if [ "$consensus" = "" ]; then
|
|
||||||
echo "No consensus available" 2>&1
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
votes=$(bzcat $consensus | awk '$1 == "vote-digest" {print $2}')
|
|
||||||
for vote in $votes; do
|
|
||||||
for dirserver in $DIRSERVERS; do
|
|
||||||
wget -q -O "$dir/$TIME-vote-$vote" http://$dirserver/tor/status-vote/current/d/$vote
|
|
||||||
if [ "$?" != 0 ]; then
|
|
||||||
rm -f "$dir/$TIME-vote-$vote"
|
|
||||||
continue
|
|
||||||
fi
|
|
||||||
break
|
|
||||||
done
|
|
||||||
if [ -e "$dir/$TIME-vote-$vote" ]; then
|
|
||||||
voteridentity=$(awk '$1=="fingerprint" {print $2}' < "$dir/$TIME-vote-$vote")
|
|
||||||
if [ -e "$dir/$timestamp-vote-$voteridentity-$vote.bz2" ]; then
|
|
||||||
echo "Vote $vote from $voteridentity already exists!" >&2
|
|
||||||
rm -f "$dir/$TIME-vote-$vote"
|
|
||||||
continue;
|
|
||||||
fi
|
|
||||||
mv "$dir/$TIME-vote-$vote" "$dir/$timestamp-vote-$voteridentity-$vote"
|
|
||||||
bzip2 "$dir/$timestamp-vote-$voteridentity-$vote"
|
|
||||||
else
|
|
||||||
echo "Failed to get vote $vote!" >&2
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
digests=$( for i in ` bzcat $consensus | awk '$1 == "r" {printf "%s=\n", $4}' | sort -u `; do
|
|
||||||
echo $i | \
|
|
||||||
base64-decode | \
|
|
||||||
perl -e 'undef $/; $a=<>; print unpack("H\*", $a),"\n";';
|
|
||||||
done )
|
|
||||||
for digest in $digests; do
|
|
||||||
fetch_digest "$digest" "server-descriptor"
|
|
||||||
done
|
|
@ -1,74 +0,0 @@
|
|||||||
#!/usr/bin/perl -w
|
|
||||||
|
|
||||||
# Sort dumped consensuses, statuses, descriptors etc into per-month folders.
|
|
||||||
|
|
||||||
# Copyright (c) 2006, 2007, 2008 Peter Palfrader
|
|
||||||
#
|
|
||||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
# of this software and associated documentation files (the "Software"), to deal
|
|
||||||
# in the Software without restriction, including without limitation the rights
|
|
||||||
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
# copies of the Software, and to permit persons to whom the Software is
|
|
||||||
# furnished to do so, subject to the following conditions:
|
|
||||||
#
|
|
||||||
# The above copyright notice and this permission notice shall be included in
|
|
||||||
# all copies or substantial portions of the Software.
|
|
||||||
#
|
|
||||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
||||||
# SOFTWARE.
|
|
||||||
|
|
||||||
use strict;
|
|
||||||
use File::Find;
|
|
||||||
use File::Basename;
|
|
||||||
use File::stat;
|
|
||||||
use Time::Local;
|
|
||||||
|
|
||||||
|
|
||||||
my $cutofftime;
|
|
||||||
|
|
||||||
|
|
||||||
sub wanted() {
|
|
||||||
return unless -f;
|
|
||||||
my $mtime = stat($_)->mtime;
|
|
||||||
return if $mtime >= $cutofftime;
|
|
||||||
|
|
||||||
my (undef,undef,undef,undef,$mon,$year,undef,undef,undef) = gmtime $mtime;
|
|
||||||
|
|
||||||
my $bn = basename $_;
|
|
||||||
my $dn = dirname $_;
|
|
||||||
my @path = split /\//, $dn;
|
|
||||||
$path[0] .= sprintf 's-%4d-%02d', 1900+$year, $mon+1;
|
|
||||||
$dn = join '/', @path;
|
|
||||||
|
|
||||||
if (! -d $dn) {
|
|
||||||
my $p = '.';
|
|
||||||
for my $component (@path) {
|
|
||||||
$p .= '/'.$component;
|
|
||||||
if (! -d $p) {
|
|
||||||
mkdir $p or die ("Cannot mkdir $p: $!\n");
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
print "$_ -> $dn/$bn\n";
|
|
||||||
rename $_, $dn.'/'.$bn or die ("Cannot rename $_ to $dn/$bn: $!\n");
|
|
||||||
};
|
|
||||||
|
|
||||||
my (undef,undef,undef,undef,$mon,$year,undef,undef,undef) = gmtime(time - 5*24*3600);
|
|
||||||
$cutofftime = timegm(0,0,0,1,$mon,$year);
|
|
||||||
find( {
|
|
||||||
wanted => \&wanted,
|
|
||||||
no_chdir => 1
|
|
||||||
},
|
|
||||||
'server-descriptor');
|
|
||||||
|
|
||||||
find( {
|
|
||||||
wanted => \&wanted,
|
|
||||||
no_chdir => 1
|
|
||||||
},
|
|
||||||
'extra-info');
|
|
@ -1,127 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
# Tar up dumped consensuses, statuses, descriptors etc from per-month folders
|
|
||||||
# into per-month tarballs.
|
|
||||||
|
|
||||||
# Copyright (c) 2006, 2007, 2008 Peter Palfrader
|
|
||||||
#
|
|
||||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
# of this software and associated documentation files (the "Software"), to deal
|
|
||||||
# in the Software without restriction, including without limitation the rights
|
|
||||||
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
# copies of the Software, and to permit persons to whom the Software is
|
|
||||||
# furnished to do so, subject to the following conditions:
|
|
||||||
#
|
|
||||||
# The above copyright notice and this permission notice shall be included in
|
|
||||||
# all copies or substantial portions of the Software.
|
|
||||||
#
|
|
||||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
||||||
# SOFTWARE.
|
|
||||||
|
|
||||||
set -e
|
|
||||||
set -x
|
|
||||||
set -u
|
|
||||||
|
|
||||||
usage() {
|
|
||||||
echo "Usage: $0 <year> <month>" >&2
|
|
||||||
echo " $0 last (does last month)" >&2
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
|
|
||||||
if [ -z "${1:-}" ]; then
|
|
||||||
usage
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$1" = "last" ]; then
|
|
||||||
year=`date --date="last month" +'%Y'`
|
|
||||||
month=`date --date="last month" +'%m'`
|
|
||||||
elif [ -z "${2:-}" ]; then
|
|
||||||
usage
|
|
||||||
else
|
|
||||||
year="$1"
|
|
||||||
month="$2"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$year" -lt 2000 ] || [ "$year" -gt 2020 ] ||
|
|
||||||
[ "$month" -lt 1 ] || [ "$month" -gt 12 ] ||
|
|
||||||
[ "`echo -n $month | wc -c`" != 2 ]; then
|
|
||||||
usage
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
this_year=`date --utc +'%Y'`
|
|
||||||
this_month=`date --utc +'%m'`
|
|
||||||
|
|
||||||
if [ "`date -d $this_year-$this_month-01 +%s`" -le "`date -d $year-$month-01 +%s`" ]; then
|
|
||||||
echo "Date in the future or current month?" >&2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
for file in \
|
|
||||||
"extra-infos-$year-$month.tar.bz2" \
|
|
||||||
"server-descriptors-$year-$month.tar.bz2" \
|
|
||||||
"consensuses-$year-$month.tar.bz2" \
|
|
||||||
"statuses-$year-$month.tar.bz2" \
|
|
||||||
; do
|
|
||||||
if [ -e "$file" ]; then
|
|
||||||
echo "$file already exists" >&2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
for dir in \
|
|
||||||
"extra-infos-$year-$month" \
|
|
||||||
"server-descriptors-$year-$month" \
|
|
||||||
"consensus/$year/$month" \
|
|
||||||
"status/$year/$month" \
|
|
||||||
; do
|
|
||||||
if ! [ -d "$dir" ]; then
|
|
||||||
echo "$dir not found" >&2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
for dir in \
|
|
||||||
"consensuses-$year-$month" \
|
|
||||||
"statuses-$year-$month" \
|
|
||||||
; do
|
|
||||||
if [ -e "$dir" ]; then
|
|
||||||
echo "$dir already exists" >&2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
for kind in consensus status; do
|
|
||||||
mv "$kind"/$year/$month "$kind"es-$year-$month
|
|
||||||
find "$kind"es-$year-$month -type f -name '*.bz2' -print0 | xargs -0 bunzip2 -v
|
|
||||||
tar cjvf "$kind"es-$year-$month.tar.bz2 "$kind"es-$year-$month
|
|
||||||
rm -rf "$kind"es-$year-$month
|
|
||||||
done
|
|
||||||
|
|
||||||
for kind in extra-infos server-descriptors; do
|
|
||||||
tar cjvf "$kind"-$year-$month.tar.bz2 "$kind"-$year-$month
|
|
||||||
rm -rf "$kind"-$year-$month
|
|
||||||
done
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
[ -d Archive ] || mkdir Archive
|
|
||||||
|
|
||||||
for kind in consensus status; do
|
|
||||||
t="$kind"es-$year-$month.tar.bz2
|
|
||||||
! [ -e Archive/"$t" ] && mv "$t" Archive/"$t"
|
|
||||||
done
|
|
||||||
|
|
||||||
for kind in extra-infos server-descriptors; do
|
|
||||||
t="$kind"-$year-$month.tar.bz2
|
|
||||||
! [ -e Archive/"$t" ] && mv "$t" Archive/"$t"
|
|
||||||
done
|
|
0
contrib/rc.subr → contrib/dist/rc.subr
vendored
0
contrib/rc.subr → contrib/dist/rc.subr
vendored
@ -1,18 +1,16 @@
|
|||||||
include contrib/suse/include.am
|
|
||||||
|
|
||||||
EXTRA_DIST+= \
|
EXTRA_DIST+= \
|
||||||
contrib/cross.sh \
|
contrib/client-tools/torify \
|
||||||
contrib/exitlist \
|
contrib/dist/rc.subr \
|
||||||
contrib/linux-tor-prio.sh \
|
contrib/dist/suse/tor.sh.in \
|
||||||
contrib/package_nsis-mingw.sh \
|
contrib/dist/tor.sh \
|
||||||
contrib/rc.subr \
|
contrib/dist/torctl \
|
||||||
contrib/tor-ctrl.sh \
|
contrib/operator-tools/linux-tor-prio.sh \
|
||||||
contrib/tor-exit-notice.html \
|
contrib/operator-tools/tor-exit-notice.html \
|
||||||
contrib/tor-mingw.nsi.in \
|
contrib/or-tools/exitlist \
|
||||||
contrib/tor.ico \
|
contrib/win32build/package_nsis-mingw.sh \
|
||||||
contrib/tor.nsi.in \
|
contrib/win32build/tor-mingw.nsi.in \
|
||||||
contrib/tor.sh \
|
contrib/win32build/tor.ico \
|
||||||
contrib/torify \
|
contrib/win32build/tor.nsi.in
|
||||||
contrib/torctl
|
|
||||||
|
|
||||||
bin_SCRIPTS+= contrib/torify
|
bin_SCRIPTS+= contrib/client-tools/torify
|
||||||
|
@ -1,79 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
set -eu
|
|
||||||
|
|
||||||
if test "$1" = "" ; then
|
|
||||||
echo "I need a package as an argument."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
PACKAGEFILE=$1
|
|
||||||
|
|
||||||
if test ! -f "$PACKAGEFILE" ; then
|
|
||||||
echo "$PACKAGEFILE is not a file."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
DIGESTNAME=sha256
|
|
||||||
DIGESTOUTPUT=`gpg --print-md $DIGESTNAME $PACKAGEFILE`
|
|
||||||
|
|
||||||
RAWDIGEST=`gpg --print-md $DIGESTNAME $PACKAGEFILE | sed -e 's/^[^ ]*: //' `
|
|
||||||
|
|
||||||
# These regexes are a little fragile, but I think they work for us.
|
|
||||||
VERSION=`echo $PACKAGEFILE | sed -e 's/^[a-z\-]*//' -e 's/\.[\.a-z]*$//' `
|
|
||||||
PACKAGE=`echo $PACKAGEFILE | sed -e 's/-[0-9].*//'`
|
|
||||||
SIGFILE_UNSIGNED="$PACKAGE-$VERSION-signature"
|
|
||||||
SIGNATUREFILE="$SIGFILE_UNSIGNED.asc"
|
|
||||||
|
|
||||||
cat >$SIGFILE_UNSIGNED <<EOF
|
|
||||||
This is the signature file for "$PACKAGEFILE",
|
|
||||||
which contains version "$VERSION" of "$PACKAGE".
|
|
||||||
|
|
||||||
Here's how to check this signature.
|
|
||||||
|
|
||||||
1) Make sure that this is really a signature file, and not a forgery,
|
|
||||||
with:
|
|
||||||
|
|
||||||
"gpg --verify $SIGNATUREFILE"
|
|
||||||
|
|
||||||
The key should be one of the keys that signs the Tor release; the
|
|
||||||
official Tor website has more information on those.
|
|
||||||
|
|
||||||
If this step fails, then either you are missing the correct key, or
|
|
||||||
this signature file was not really signed by a Tor packager.
|
|
||||||
Beware!
|
|
||||||
|
|
||||||
2) Make sure that the package you wanted is indeed "$PACKAGE", and that
|
|
||||||
its version you wanted is indeed "$VERSION". If you wanted a
|
|
||||||
different package, or a different version, this signature file is
|
|
||||||
not the right one!
|
|
||||||
|
|
||||||
3) Now that you're sure you have the right signature file, make sure
|
|
||||||
that you got the right package. Check its $DIGESTNAME digest with
|
|
||||||
|
|
||||||
"gpg --print-md $DIGESTNAME $PACKAGEFILE"
|
|
||||||
|
|
||||||
The output should match this, exactly:
|
|
||||||
|
|
||||||
$DIGESTOUTPUT
|
|
||||||
|
|
||||||
Make sure that every part of the output matches: don't just check the
|
|
||||||
first few characters. If the digest does not match, you do not have
|
|
||||||
the right package file. It could even be a forgery.
|
|
||||||
|
|
||||||
Frequently asked questions:
|
|
||||||
|
|
||||||
Q: Why not just sign the package file, like you used to do?
|
|
||||||
A: GPG signatures authenticate file contents, but not file names. If
|
|
||||||
somebody gave you a renamed file with a matching renamed signature
|
|
||||||
file, the signature would still be given as "valid".
|
|
||||||
|
|
||||||
--
|
|
||||||
FILENAME: $PACKAGEFILE
|
|
||||||
PACKAGE: $PACKAGE
|
|
||||||
VERSION: $VERSION
|
|
||||||
DIGESTALG: $DIGESTNAME
|
|
||||||
DIGEST: $RAWDIGEST
|
|
||||||
EOF
|
|
||||||
|
|
||||||
gpg --clearsign $SIGFILE_UNSIGNED
|
|
169
contrib/mdd.py
169
contrib/mdd.py
@ -1,169 +0,0 @@
|
|||||||
#!/usr/bin/env python2.3
|
|
||||||
|
|
||||||
import re, sys
|
|
||||||
import textwrap
|
|
||||||
|
|
||||||
files = sys.argv[1:]
|
|
||||||
funcDeclaredIn = {}
|
|
||||||
fileDeclares = {}
|
|
||||||
functionCalls = {}
|
|
||||||
funcCalledByFile = {}
|
|
||||||
funcCalledByFunc = {}
|
|
||||||
|
|
||||||
cpp_re = re.compile(r'//.*$')
|
|
||||||
c_re = re.compile(r'/[*]+(?:[^*]+|[*]+[^/*])*[*]+/', re.M|re.S)
|
|
||||||
|
|
||||||
for fname in files:
|
|
||||||
f = open(fname, 'r')
|
|
||||||
curFunc = "???"
|
|
||||||
functionCalls.setdefault(curFunc,{})
|
|
||||||
lineno = 0
|
|
||||||
body = f.read()
|
|
||||||
body = cpp_re.sub(" ",body)
|
|
||||||
body = c_re.sub(" ",body)
|
|
||||||
#if fname == 'dns.c': print body
|
|
||||||
for line in body.split("\n"):
|
|
||||||
lineno += 1
|
|
||||||
m = re.match(r'^[^\s/].*\s(\w+)\([^;]*$', line)
|
|
||||||
if m:
|
|
||||||
#print line, "->", m.group(1)
|
|
||||||
curFunc = m.group(1)
|
|
||||||
if curFunc[0] == '_': curFunc = curFunc[1:]
|
|
||||||
functionCalls.setdefault(curFunc,{})
|
|
||||||
funcDeclaredIn[m.group(1)] = fname
|
|
||||||
fileDeclares.setdefault(fname, {})[m.group(1)] = 1
|
|
||||||
continue
|
|
||||||
m = re.match(r'^(\w+)\([^;]', line)
|
|
||||||
if m:
|
|
||||||
#print line, "->", m.group(1)
|
|
||||||
curFunc = m.group(1)
|
|
||||||
if curFunc[0] == '_': curFunc = curFunc[1:]
|
|
||||||
functionCalls.setdefault(curFunc,{})
|
|
||||||
funcDeclaredIn[m.group(1)] = fname
|
|
||||||
fileDeclares.setdefault(fname, {})[m.group(1)] = 1
|
|
||||||
continue
|
|
||||||
while line:
|
|
||||||
m = re.search(r'(\w+)\(', line)
|
|
||||||
if not m: break
|
|
||||||
#print fname, line, curFunc, "->", m.group(1)
|
|
||||||
fn = m.group(1)
|
|
||||||
if fn[0] == '_':
|
|
||||||
fn = fn[1:]
|
|
||||||
functionCalls[curFunc][m.group(1)] = 1
|
|
||||||
#if curFunc == "???":
|
|
||||||
# print ">>!!!!! at %s:%s"%(fname,lineno)
|
|
||||||
funcCalledByFunc.setdefault(m.group(1), {})[curFunc]=1
|
|
||||||
funcCalledByFile.setdefault(m.group(1), {})[fname]=1
|
|
||||||
line = line[m.end():]
|
|
||||||
|
|
||||||
f.close()
|
|
||||||
|
|
||||||
fileUsers = {}
|
|
||||||
fileUses = {}
|
|
||||||
|
|
||||||
for fname in files:
|
|
||||||
print "%s:"%fname
|
|
||||||
users = {}
|
|
||||||
for func in fileDeclares[fname]:
|
|
||||||
cb = funcCalledByFile.get(func,{}).keys()
|
|
||||||
for f in cb: users[f] = 1
|
|
||||||
#print "users[%s] = %s"%(f,users[f])
|
|
||||||
users = users.keys()
|
|
||||||
users.sort()
|
|
||||||
fileUsers[fname] = users
|
|
||||||
for user in users:
|
|
||||||
fileUses.setdefault(user,[]).append(fname)
|
|
||||||
if user == fname: continue
|
|
||||||
print " from %s:"%user
|
|
||||||
for func in fileDeclares[fname]:
|
|
||||||
if funcCalledByFile.get(func,{}).get(user,0):
|
|
||||||
print " %s()"%func
|
|
||||||
|
|
||||||
def wrap(s, pre):
|
|
||||||
return textwrap.fill(s,
|
|
||||||
width=77, initial_indent=pre,
|
|
||||||
subsequent_indent=" "*len(pre))
|
|
||||||
|
|
||||||
for fname in files:
|
|
||||||
print
|
|
||||||
print "===== %s"%fname
|
|
||||||
print wrap(" ".join(fileUses[fname]),
|
|
||||||
" Calls: ")
|
|
||||||
print wrap(" ".join(fileUsers[fname]),
|
|
||||||
" Called by: ")
|
|
||||||
|
|
||||||
print "=============================="
|
|
||||||
|
|
||||||
funcnames = functionCalls.keys()
|
|
||||||
funcnames.sort()
|
|
||||||
|
|
||||||
if 1:
|
|
||||||
for func in funcnames:
|
|
||||||
print "===== %s"%func
|
|
||||||
callers = [c for c in funcCalledByFunc.get(func,{}).keys()
|
|
||||||
if c != "???"]
|
|
||||||
callers.sort()
|
|
||||||
called = [c for c in functionCalls[func].keys() if c != "???" and
|
|
||||||
c in funcnames]
|
|
||||||
called.sort()
|
|
||||||
print wrap(" ".join(callers),
|
|
||||||
" Called by:")
|
|
||||||
print wrap(" ".join(called),
|
|
||||||
" Calls:")
|
|
||||||
|
|
||||||
# simple topological sort.
|
|
||||||
functionDepth = {}
|
|
||||||
while 1:
|
|
||||||
BIG = 1000000
|
|
||||||
any = 0
|
|
||||||
for func in funcnames:
|
|
||||||
if functionDepth.has_key(func):
|
|
||||||
continue
|
|
||||||
called = [c for c in functionCalls[func] if c != func and
|
|
||||||
functionCalls.has_key(c)]
|
|
||||||
if len(called) == 0:
|
|
||||||
functionDepth[func] = 0
|
|
||||||
#print "Depth(%s)=%s"%(func,0)
|
|
||||||
any = 1
|
|
||||||
continue
|
|
||||||
calledDepths = [ functionDepth.get(c,BIG) for c in called ]
|
|
||||||
if max(calledDepths) < BIG:
|
|
||||||
d = functionDepth[func] = max(calledDepths)+1
|
|
||||||
#print "Depth(%s)=%s"%(func,d)
|
|
||||||
any = 1
|
|
||||||
continue
|
|
||||||
if not any:
|
|
||||||
break
|
|
||||||
|
|
||||||
# compute lexical closure.
|
|
||||||
cycCalls = {}
|
|
||||||
for func in funcnames:
|
|
||||||
if not functionDepth.has_key(func):
|
|
||||||
calls = [ c for c in functionCalls[func] if c != func and
|
|
||||||
functionCalls.has_key(c) and not functionDepth.has_key(c)]
|
|
||||||
cycCalls[func] = d = {}
|
|
||||||
for c in calls:
|
|
||||||
d[c]=1
|
|
||||||
|
|
||||||
cycNames = cycCalls.keys()
|
|
||||||
while 1:
|
|
||||||
any = 0
|
|
||||||
for func in cycNames:
|
|
||||||
L = len(cycCalls[func])
|
|
||||||
for called in cycCalls[func].keys():
|
|
||||||
cycCalls[func].update(cycCalls[called])
|
|
||||||
if L != len(cycCalls[func]):
|
|
||||||
any = 1
|
|
||||||
if not any:
|
|
||||||
break
|
|
||||||
|
|
||||||
depthList = [ (v,k) for k,v in functionDepth.items() ]
|
|
||||||
depthList.sort()
|
|
||||||
cycList = [ (len(v),k) for k,v in cycCalls.items() ]
|
|
||||||
cycList.sort()
|
|
||||||
for depth,name in depthList:
|
|
||||||
print "Depth[%s]=%s"%(name,depth)
|
|
||||||
for bredth,name in cycList:
|
|
||||||
print "Width[%s]=%s"%(name,bredth)
|
|
||||||
|
|
||||||
print "Sorted %s / %s"%(len(functionDepth),len(funcnames))
|
|
@ -1,74 +0,0 @@
|
|||||||
!include "MUI.nsh"
|
|
||||||
!include "LogicLib.nsh"
|
|
||||||
!include "FileFunc.nsh"
|
|
||||||
|
|
||||||
!define VERSION "0.2.1.13"
|
|
||||||
!define INSTALLER "TorNetInstaller.exe"
|
|
||||||
!define WEBSITE "https://www.torproject.org/"
|
|
||||||
!define LICENSE "LICENSE"
|
|
||||||
|
|
||||||
SetCompressor /SOLID BZIP2
|
|
||||||
RequestExecutionLevel user
|
|
||||||
OutFile ${INSTALLER}
|
|
||||||
InstallDir "$TEMP\TorInstTmp"
|
|
||||||
SetOverWrite on
|
|
||||||
Name "Tor Network Installer"
|
|
||||||
Caption "Tor Network Installer"
|
|
||||||
BrandingText "Tor Network Installer"
|
|
||||||
CRCCheck on
|
|
||||||
XPStyle on
|
|
||||||
ShowInstDetails hide
|
|
||||||
VIProductVersion "${VERSION}"
|
|
||||||
VIAddVersionKey "ProductName" "Tor"
|
|
||||||
VIAddVersionKey "Comments" "${WEBSITE}"
|
|
||||||
VIAddVersionKey "LegalTrademarks" "Three line BSD"
|
|
||||||
VIAddVersionKey "LegalCopyright" "©2004-2011, Roger Dingledine, Nick Mathewson, The Tor Project, Inc."
|
|
||||||
VIAddVersionKey "FileDescription" "Tor is an implementation of Onion Routing. You can read more at ${WEBSITE}"
|
|
||||||
VIAddVersionKey "FileVersion" "${VERSION}"
|
|
||||||
|
|
||||||
!define MUI_ICON "torinst32.ico"
|
|
||||||
!define MUI_HEADERIMAGE_BITMAP "${NSISDIR}\Contrib\Graphics\Header\win.bmp"
|
|
||||||
!insertmacro MUI_PAGE_INSTFILES
|
|
||||||
!insertmacro MUI_LANGUAGE "English"
|
|
||||||
|
|
||||||
Section "Tor" Tor
|
|
||||||
SectionIn RO
|
|
||||||
SetOutPath $INSTDIR
|
|
||||||
Call ExtractPackages
|
|
||||||
Call RunInstallers
|
|
||||||
Call LaunchVidalia
|
|
||||||
Call CleanUpTemp
|
|
||||||
SectionEnd
|
|
||||||
|
|
||||||
Function ExtractPackages
|
|
||||||
File "license.msi"
|
|
||||||
File "thandy.msi"
|
|
||||||
FunctionEnd
|
|
||||||
|
|
||||||
Function RunInstallers
|
|
||||||
ExecWait 'msiexec /i "$INSTDIR\license.msi" /qn'
|
|
||||||
ExecWait 'msiexec /i "$INSTDIR\thandy.msi" NOSC=1 /qn'
|
|
||||||
ExecWait '"$LOCALAPPDATA\Programs\Thandy\thandy.exe" update "--repo=$LOCALAPPDATA\Thandy\Tor Updates" /bundleinfo/tor/win32/'
|
|
||||||
ExecWait '"$LOCALAPPDATA\Programs\Thandy\thandy.exe" update "--repo=$LOCALAPPDATA\Thandy\Polipo Updates" /bundleinfo/polipo/win32/'
|
|
||||||
ExecWait '"$LOCALAPPDATA\Programs\Thandy\thandy.exe" update "--repo=$LOCALAPPDATA\Thandy\TorButton Updates" /bundleinfo/torbutton/win32/'
|
|
||||||
ExecWait '"$LOCALAPPDATA\Programs\Thandy\thandy.exe" update "--repo=$LOCALAPPDATA\Thandy\Vidalia Updates" /bundleinfo/vidalia/win32/'
|
|
||||||
ExecWait '"$LOCALAPPDATA\Programs\Thandy\thandy.exe" update --install "--repo=$LOCALAPPDATA\Thandy\Tor Updates" /bundleinfo/tor/win32/'
|
|
||||||
ExecWait '"$LOCALAPPDATA\Programs\Thandy\thandy.exe" update --install "--repo=$LOCALAPPDATA\Thandy\Polipo Updates" /bundleinfo/polipo/win32/'
|
|
||||||
ExecWait '"$LOCALAPPDATA\Programs\Thandy\thandy.exe" update --install "--repo=$LOCALAPPDATA\Thandy\TorButton Updates" /bundleinfo/torbutton/win32/'
|
|
||||||
ExecWait '"$LOCALAPPDATA\Programs\Thandy\thandy.exe" update --install "--repo=$LOCALAPPDATA\Thandy\Vidalia Updates" /bundleinfo/vidalia/win32/'
|
|
||||||
ExpandEnvStrings $0 %COMSPEC%
|
|
||||||
Exec '"$0" /C "$INSTDIR\tbcheck.bat"'
|
|
||||||
FunctionEnd
|
|
||||||
|
|
||||||
Function LaunchVidalia
|
|
||||||
SetOutPath "$LOCALAPPDATA\Programs\Vidalia"
|
|
||||||
Exec 'vidalia.exe -loglevel info -logfile log.txt'
|
|
||||||
FunctionEnd
|
|
||||||
|
|
||||||
Function CleanUpTemp
|
|
||||||
ExecWait '"del" "$INSTDIR\license.msi"'
|
|
||||||
ExecWait '"del" "$INSTDIR\thandy.msi"'
|
|
||||||
SetOutPath $TEMP
|
|
||||||
RMDir /r $TEMP\TorInstTmp
|
|
||||||
FunctionEnd
|
|
||||||
|
|
@ -1,90 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
set -e
|
|
||||||
|
|
||||||
#
|
|
||||||
# Script to package a Tor installer on win32. This script assumes that
|
|
||||||
# you have already built Tor, that you are running cygwin, and that your
|
|
||||||
# environment is basically exactly the same as Nick's.
|
|
||||||
|
|
||||||
if ! [ -d Win32Build ] || ! [ -d contrib ]; then
|
|
||||||
echo "No Win32Build and/or no contrib directory here. Are we in the right place?" >&2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
rm -rf win_tmp
|
|
||||||
mkdir win_tmp
|
|
||||||
mkdir win_tmp/bin
|
|
||||||
mkdir win_tmp/contrib
|
|
||||||
mkdir win_tmp/doc
|
|
||||||
mkdir win_tmp/doc/website
|
|
||||||
mkdir win_tmp/doc/design-paper
|
|
||||||
mkdir win_tmp/doc/contrib
|
|
||||||
mkdir win_tmp/src
|
|
||||||
mkdir win_tmp/src/config
|
|
||||||
mkdir win_tmp/tmp
|
|
||||||
|
|
||||||
cp Win32Build/vc7/Tor/Debug/Tor.exe win_tmp/bin/tor.exe
|
|
||||||
cp Win32Build/vc7/tor_resolve/Debug/tor_resolve.exe win_tmp/bin
|
|
||||||
cp ../c-windows-system32/libeay32.dll win_tmp/bin
|
|
||||||
cp ../c-windows-system32/ssleay32.dll win_tmp/bin
|
|
||||||
|
|
||||||
man2html doc/tor.1.in > win_tmp/tmp/tor-reference.html
|
|
||||||
man2html doc/tor-resolve.1 > win_tmp/tmp/tor-resolve.html
|
|
||||||
|
|
||||||
clean_newlines() {
|
|
||||||
perl -pe 's/^\n$/\r\n/mg; s/([^\r])\n$/\1\r\n/mg;' $1 >$2
|
|
||||||
}
|
|
||||||
|
|
||||||
clean_localstatedir() {
|
|
||||||
perl -pe 's/^\n$/\r\n/mg; s/([^\r])\n$/\1\r\n/mg; s{\@LOCALSTATEDIR\@/(lib|log)/tor/}{C:\\Documents and Settings\\Application Data\\Tor\\}' $1 >$2
|
|
||||||
}
|
|
||||||
|
|
||||||
for fn in \
|
|
||||||
doc/HACKING \
|
|
||||||
doc/control-spec.txt \
|
|
||||||
doc/dir-spec.txt \
|
|
||||||
doc/rend-spec.txt \
|
|
||||||
doc/socks-extensions.txt \
|
|
||||||
doc/tor-spec.txt \
|
|
||||||
doc/version-spec.txt \
|
|
||||||
\
|
|
||||||
doc/website/* \
|
|
||||||
; do
|
|
||||||
clean_newlines "$fn" win_tmp/"$fn"
|
|
||||||
done
|
|
||||||
mmv win_tmp/doc/website/"*.html.*" win_tmp/doc/website/"#1.#2.html"
|
|
||||||
|
|
||||||
cp doc/design-paper/tor-design.pdf win_tmp/doc/design-paper/tor-design.pdf
|
|
||||||
|
|
||||||
for fn in tor-reference.html tor-resolve.html; do \
|
|
||||||
clean_newlines win_tmp/tmp/$fn win_tmp/doc/$fn
|
|
||||||
done
|
|
||||||
|
|
||||||
for fn in README AUTHORS ChangeLog LICENSE; do \
|
|
||||||
clean_newlines $fn win_tmp/$fn
|
|
||||||
done
|
|
||||||
|
|
||||||
clean_localstatedir src/config/torrc.sample.in win_tmp/src/config/torrc.sample
|
|
||||||
|
|
||||||
cp contrib/tor.nsi.in win_tmp/contrib/tor.nsi
|
|
||||||
(
|
|
||||||
echo '/WEBSITE-FILES-HERE/'
|
|
||||||
echo 'a' # append
|
|
||||||
for fn in win_tmp/doc/website/*; do
|
|
||||||
echo -n 'File "..\doc\website\'
|
|
||||||
echo -n "`basename $fn`"
|
|
||||||
echo '"'
|
|
||||||
done
|
|
||||||
echo "." # end input
|
|
||||||
echo "w" # write
|
|
||||||
echo "q" # quit
|
|
||||||
) | ed win_tmp/contrib/tor.nsi
|
|
||||||
|
|
||||||
cd win_tmp/contrib
|
|
||||||
|
|
||||||
echo "Now run"
|
|
||||||
echo ' t:'
|
|
||||||
echo ' cd \tor\win_tmp\contrib'
|
|
||||||
echo ' c:\programme\nsis\makensis tor.nsi'
|
|
||||||
echo ' move tor-*.exe ../../..'
|
|
@ -1,57 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
#
|
|
||||||
# Script to package a Tor installer on win32. This script assumes that
|
|
||||||
# you have already built Tor, that you are running cygwin, and that your
|
|
||||||
# environment is basically exactly the same as Nick's.
|
|
||||||
|
|
||||||
# This file is obsolete.
|
|
||||||
|
|
||||||
rm -rf win_tmp
|
|
||||||
mkdir win_tmp
|
|
||||||
mkdir win_tmp/bin
|
|
||||||
mkdir win_tmp/contrib
|
|
||||||
mkdir win_tmp/doc
|
|
||||||
mkdir win_tmp/doc/design-paper
|
|
||||||
mkdir win_tmp/doc/contrib
|
|
||||||
mkdir win_tmp/src
|
|
||||||
mkdir win_tmp/src/config
|
|
||||||
mkdir win_tmp/tmp
|
|
||||||
|
|
||||||
cp Win32Build/vc7/Tor/Debug/Tor.exe win_tmp/bin/tor.exe
|
|
||||||
cp Win32Build/vc7/tor_resolve/Debug/tor_resolve.exe win_tmp/bin
|
|
||||||
cp c:/windows/system32/libeay32.dll win_tmp/bin
|
|
||||||
cp c:/windows/system32/ssleay32.dll win_tmp/bin
|
|
||||||
|
|
||||||
man2html doc/tor.1.in > win_tmp/tmp/tor-reference.html
|
|
||||||
man2html doc/tor-resolve.1 > win_tmp/tmp/tor-resolve.html
|
|
||||||
|
|
||||||
clean_newlines() {
|
|
||||||
perl -pe 's/^\n$/\r\n/mg; s/([^\r])\n$/\1\r\n/mg;' $1 >$2
|
|
||||||
}
|
|
||||||
|
|
||||||
clean_localstatedir() {
|
|
||||||
perl -pe 's/^\n$/\r\n/mg; s/([^\r])\n$/\1\r\n/mg; s{\@LOCALSTATEDIR\@/(lib|log)/tor/}{C:\\Documents and Settings\\Application Data\\Tor\\}' $1 >$2
|
|
||||||
}
|
|
||||||
|
|
||||||
for fn in tor-spec.txt HACKING rend-spec.txt control-spec.txt \
|
|
||||||
tor-doc.html tor-doc.css version-spec.txt; do
|
|
||||||
clean_newlines doc/$fn win_tmp/doc/$fn
|
|
||||||
done
|
|
||||||
|
|
||||||
cp doc/design-paper/tor-design.pdf win_tmp/doc/design-paper/tor-design.pdf
|
|
||||||
|
|
||||||
for fn in tor-reference.html tor-resolve.html; do \
|
|
||||||
clean_newlines win_tmp/tmp/$fn win_tmp/doc/$fn
|
|
||||||
done
|
|
||||||
|
|
||||||
for fn in README AUTHORS ChangeLog LICENSE; do \
|
|
||||||
clean_newlines $fn win_tmp/$fn
|
|
||||||
done
|
|
||||||
|
|
||||||
clean_localstatedir src/config/torrc.sample.in win_tmp/src/config/torrc.sample
|
|
||||||
|
|
||||||
cp contrib/tor.nsi win_tmp/contrib
|
|
||||||
|
|
||||||
cd win_tmp/contrib
|
|
||||||
makensis tor.nsi
|
|
||||||
mv tor-*.exe ../..
|
|
@ -1,100 +0,0 @@
|
|||||||
PREFIX = Polipo
|
|
||||||
BINDIR = $(PREFIX)\bin
|
|
||||||
MANDIR = $(PREFIX)\man
|
|
||||||
INFODIR = $(PREFIX)\info
|
|
||||||
LOCAL_ROOT = $(PREFIX)
|
|
||||||
DISK_CACHE_ROOT = $(PREFIX)\cache
|
|
||||||
|
|
||||||
# To compile with Unix CC:
|
|
||||||
|
|
||||||
# CDEBUGFLAGS=-O
|
|
||||||
|
|
||||||
# To compile with GCC:
|
|
||||||
|
|
||||||
# CC = gcc
|
|
||||||
# CDEBUGFLAGS = -Os -g -Wall -std=gnu99
|
|
||||||
CDEBUGFLAGS = -Os -g -Wall
|
|
||||||
# CDEBUGFLAGS = -Os -Wall
|
|
||||||
# CDEBUGFLAGS = -g -Wall
|
|
||||||
|
|
||||||
# To compile on a pure POSIX system:
|
|
||||||
|
|
||||||
# CC = c89
|
|
||||||
# CC = c99
|
|
||||||
# CDEBUGFLAGS=-O
|
|
||||||
|
|
||||||
# To compile with icc 7, you need -restrict. (Their bug.)
|
|
||||||
|
|
||||||
# CC=icc
|
|
||||||
# CDEBUGFLAGS = -O -restrict
|
|
||||||
|
|
||||||
# On System V (Solaris, HP/UX) you need the following:
|
|
||||||
|
|
||||||
# PLATFORM_DEFINES = -DSVR4
|
|
||||||
|
|
||||||
# On Solaris, you need the following:
|
|
||||||
|
|
||||||
# LDLIBS = -lsocket -lnsl -lresolv
|
|
||||||
|
|
||||||
# On mingw, you need
|
|
||||||
|
|
||||||
EXE=.exe
|
|
||||||
LDLIBS = -lwsock32 -lregex
|
|
||||||
|
|
||||||
FILE_DEFINES = -DHAVE_REGEX
|
|
||||||
|
|
||||||
# You may optionally also add any of the following to DEFINES:
|
|
||||||
#
|
|
||||||
# -DNO_DISK_CACHE to compile out the on-disk cache and local web server;
|
|
||||||
# -DNO_IPv6 to avoid using the RFC 3493 API and stick to stock
|
|
||||||
# Berkeley sockets;
|
|
||||||
# -DHAVE_IPv6 to force the use of the RFC 3493 API on systems other
|
|
||||||
# than GNU/Linux and BSD (let me know if it works);
|
|
||||||
# -DNO_FANCY_RESOLVER to compile out the asynchronous name resolution
|
|
||||||
# code;
|
|
||||||
# -DNO_STANDARD_RESOLVER to compile out the code that falls back to
|
|
||||||
# gethostbyname/getaddrinfo when DNS requests fail;
|
|
||||||
# -DNO_TUNNEL to compile out the code that handles CONNECT requests;
|
|
||||||
# -DNO_SOCKS to compile out the SOCKS gateway code.
|
|
||||||
# -DNO_FORBIDDEN to compile out the all of the forbidden URL code
|
|
||||||
# -DNO_REDIRECTOR to compile out the Squid-style redirector code
|
|
||||||
# -DNO_SYSLOG to compile out logging to syslog
|
|
||||||
|
|
||||||
DEFINES = $(FILE_DEFINES) $(PLATFORM_DEFINES)
|
|
||||||
|
|
||||||
CFLAGS = $(MD5INCLUDES) $(CDEBUGFLAGS) $(DEFINES) $(EXTRA_DEFINES)
|
|
||||||
|
|
||||||
SRCS = util.c event.c io.c chunk.c atom.c object.c log.c diskcache.c main.c \
|
|
||||||
config.c local.c http.c client.c server.c auth.c tunnel.c \
|
|
||||||
http_parse.c parse_time.c dns.c forbidden.c \
|
|
||||||
md5import.c md5.c ftsimport.c fts_compat.c socks.c mingw.c
|
|
||||||
|
|
||||||
OBJS = util.o event.o io.o chunk.o atom.o object.o log.o diskcache.o main.o \
|
|
||||||
config.o local.o http.o client.o server.o auth.o tunnel.o \
|
|
||||||
http_parse.o parse_time.o dns.o forbidden.o \
|
|
||||||
md5import.o ftsimport.o socks.o mingw.o
|
|
||||||
|
|
||||||
polipo$(EXE): $(OBJS)
|
|
||||||
$(CC) $(CFLAGS) $(LDFLAGS) -o polipo$(EXE) $(OBJS) $(MD5LIBS) $(LDLIBS)
|
|
||||||
|
|
||||||
ftsimport.o: ftsimport.c fts_compat.c
|
|
||||||
|
|
||||||
md5import.o: md5import.c md5.c
|
|
||||||
|
|
||||||
.PHONY: all install install.binary install.man
|
|
||||||
|
|
||||||
all: polipo$(EXE) polipo.info html/index.html localindex.html
|
|
||||||
|
|
||||||
TAGS: $(SRCS)
|
|
||||||
etags $(SRCS)
|
|
||||||
|
|
||||||
.PHONY: clean
|
|
||||||
|
|
||||||
clean:
|
|
||||||
-rm -f polipo$(EXE) *.o *~ core TAGS gmon.out
|
|
||||||
-rm -f polipo.cp polipo.fn polipo.log polipo.vr
|
|
||||||
-rm -f polipo.cps polipo.info* polipo.pg polipo.toc polipo.vrs
|
|
||||||
-rm -f polipo.aux polipo.dvi polipo.ky polipo.ps polipo.tp
|
|
||||||
-rm -f polipo.dvi polipo.ps polipo.ps.gz polipo.pdf polipo.html
|
|
||||||
-rm -rf ./html/
|
|
||||||
-rm -f polipo.man.html
|
|
@ -1,47 +0,0 @@
|
|||||||
Copyright 2007-2008, Andrew Lewman
|
|
||||||
Copyright 2009-2011, The Tor Project
|
|
||||||
|
|
||||||
----------------
|
|
||||||
General Comments
|
|
||||||
----------------
|
|
||||||
|
|
||||||
These are some hacks for making polipo work and install a package native
|
|
||||||
to Windows.
|
|
||||||
|
|
||||||
They need some work before they can be committed upstream:
|
|
||||||
- Change the Makefile so it has a specific build such as "make
|
|
||||||
dist-win32"
|
|
||||||
- Configure the options for tor in polipo config, just leave them
|
|
||||||
commented out for easy activation.
|
|
||||||
- Work out better polipo config options for Tor.
|
|
||||||
|
|
||||||
As always, I'm happy to accept patches.
|
|
||||||
|
|
||||||
--------------------------
|
|
||||||
Pre-requisites for Windows
|
|
||||||
--------------------------
|
|
||||||
|
|
||||||
Polipo for Win32 requires the mingw gnu regex library and dlls at
|
|
||||||
http://sourceforge.net/project/showfiles.php?group_id=2435&package_id=73286&release_id=140957
|
|
||||||
|
|
||||||
You'll need to download the -bin and -dev tarballs. And extract them
|
|
||||||
into your MinGW directory.
|
|
||||||
|
|
||||||
Instructions for building polipo under mingw32 for Windows:
|
|
||||||
1) Copy Makefile.mingw over Makefile.
|
|
||||||
2) Run 'make'.
|
|
||||||
|
|
||||||
You should have a polipo.exe in the current directory.
|
|
||||||
|
|
||||||
-------------------------------------------
|
|
||||||
Creating an installation package in Windows
|
|
||||||
-------------------------------------------
|
|
||||||
|
|
||||||
If you want to build an installer using the Nullsoft Installer, install
|
|
||||||
the NSI Compiler. In Windows Explorer, navigate to the directory in
|
|
||||||
which you placed polipo-mingw.nsi. Right click on polipo-mingw.nsi and
|
|
||||||
choose Compile NSIS Script. You'll then create a polipo installer.
|
|
||||||
|
|
||||||
The Polipo NSI installer assumes libgnurx-0.dll is in the same directory as polipo.exe.
|
|
||||||
You'll need to copy libgnurx-0.dll into "./" in order to make the
|
|
||||||
installation package.
|
|
@ -1,172 +0,0 @@
|
|||||||
;polipo-mingw.nsi - A basic win32 installer for Polipo
|
|
||||||
; Originally written by J Doe.
|
|
||||||
; Modified by Andrew Lewman
|
|
||||||
; This is licensed under a Modified BSD license.
|
|
||||||
;-----------------------------------------
|
|
||||||
;
|
|
||||||
!include "MUI.nsh"
|
|
||||||
|
|
||||||
!define VERSION "1.0.4.0-forbidden-1"
|
|
||||||
!define INSTALLER "polipo-${VERSION}-win32.exe"
|
|
||||||
!define WEBSITE "http://www.pps.jussieu.fr/~jch/software/polipo/"
|
|
||||||
|
|
||||||
!define LICENSE "COPYING"
|
|
||||||
;BIN is where it expects to find polipo.exe
|
|
||||||
!define BIN "."
|
|
||||||
|
|
||||||
SetCompressor lzma
|
|
||||||
OutFile ${INSTALLER}
|
|
||||||
InstallDir $PROGRAMFILES\Polipo
|
|
||||||
SetOverWrite ifnewer
|
|
||||||
|
|
||||||
Name "Polipo"
|
|
||||||
Caption "Polipo ${VERSION} Setup"
|
|
||||||
BrandingText "A Caching Web Proxy"
|
|
||||||
CRCCheck on
|
|
||||||
XPStyle on
|
|
||||||
VIProductVersion "${VERSION}"
|
|
||||||
VIAddVersionKey "ProductName" "Polipo: A caching web proxy"
|
|
||||||
VIAddVersionKey "Comments" "http://www.pps.jussieu.fr/~jch/software/polipo/"
|
|
||||||
VIAddVersionKey "LegalTrademarks" "See COPYING"
|
|
||||||
VIAddVersionKey "LegalCopyright" "©2008, Juliusz Chroboczek"
|
|
||||||
VIAddVersionKey "FileDescription" "Polipo is a caching web proxy."
|
|
||||||
VIAddVersionKey "FileVersion" "${VERSION}"
|
|
||||||
|
|
||||||
!define MUI_WELCOMEPAGE_TITLE "Welcome to the Polipo ${VERSION} Setup Wizard"
|
|
||||||
!define MUI_WELCOMEPAGE_TEXT "This wizard will guide you through the installation of Polipo ${VERSION}.\r\n\r\nIf you have previously installed Polipo and it is currently running, please exit Polipo first before continuing this installation.\r\n\r\n$_CLICK"
|
|
||||||
!define MUI_ABORTWARNING
|
|
||||||
!define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\win-install.ico"
|
|
||||||
!define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\win-uninstall.ico"
|
|
||||||
!define MUI_HEADERIMAGE_BITMAP "${NSISDIR}\Contrib\Graphics\Header\win.bmp"
|
|
||||||
!define MUI_HEADERIMAGE
|
|
||||||
;!define MUI_FINISHPAGE_RUN
|
|
||||||
!define MUI_FINISHPAGE_LINK "Visit the Polipo website for the latest updates."
|
|
||||||
!define MUI_FINISHPAGE_LINK_LOCATION ${WEBSITE}
|
|
||||||
|
|
||||||
!insertmacro MUI_PAGE_WELCOME
|
|
||||||
!insertmacro MUI_PAGE_COMPONENTS
|
|
||||||
!insertmacro MUI_PAGE_DIRECTORY
|
|
||||||
!insertmacro MUI_PAGE_INSTFILES
|
|
||||||
!insertmacro MUI_PAGE_FINISH
|
|
||||||
!insertmacro MUI_UNPAGE_WELCOME
|
|
||||||
!insertmacro MUI_UNPAGE_CONFIRM
|
|
||||||
!insertmacro MUI_UNPAGE_INSTFILES
|
|
||||||
!insertmacro MUI_UNPAGE_FINISH
|
|
||||||
!insertmacro MUI_LANGUAGE "English"
|
|
||||||
|
|
||||||
Var configfile
|
|
||||||
Var forbiddenfile
|
|
||||||
|
|
||||||
;Sections
|
|
||||||
;--------
|
|
||||||
|
|
||||||
Section "Polipo" Polipo
|
|
||||||
;Files that have to be installed for polipo to run and that the user
|
|
||||||
;cannot choose not to install
|
|
||||||
SectionIn RO
|
|
||||||
SetOutPath $INSTDIR
|
|
||||||
File "${BIN}\polipo.exe"
|
|
||||||
File "${BIN}\COPYING"
|
|
||||||
File "${BIN}\CHANGES"
|
|
||||||
File "${BIN}\config.sample"
|
|
||||||
File "${BIN}\forbidden.sample"
|
|
||||||
File "${BIN}\README.Windows"
|
|
||||||
File "${BIN}\libgnurx-0.dll"
|
|
||||||
WriteIniStr "$INSTDIR\Polipo Website.url" "InternetShortcut" "URL" ${WEBSITE}
|
|
||||||
|
|
||||||
StrCpy $configfile "config"
|
|
||||||
StrCpy $forbiddenfile "forbidden"
|
|
||||||
SetOutPath $INSTDIR
|
|
||||||
;If there's already a polipo config file, ask if they want to
|
|
||||||
;overwrite it with the new one.
|
|
||||||
IfFileExists "$INSTDIR\config" "" endifconfig
|
|
||||||
MessageBox MB_ICONQUESTION|MB_YESNO "You already have a Polipo config file.$\r$\nDo you want to overwrite it with the default sample config file?" IDNO yesreplace
|
|
||||||
Delete $INSTDIR\config
|
|
||||||
Goto endifconfig
|
|
||||||
yesreplace:
|
|
||||||
StrCpy $configfile ".\config.sample"
|
|
||||||
endifconfig:
|
|
||||||
File /oname=$configfile ".\config.sample"
|
|
||||||
;If there's already a polipo forbidden file, ask if they want to
|
|
||||||
;overwrite it with the new one.
|
|
||||||
IfFileExists "$INSTDIR\forbidden" "" endifforbidden
|
|
||||||
MessageBox MB_ICONQUESTION|MB_YESNO "You already have a Polipo forbidden file.$\r$\nDo you want to overwrite it with the default sample forbidden file?" IDNO forbidyesreplace
|
|
||||||
Delete $INSTDIR\forbidden
|
|
||||||
Goto endifforbidden
|
|
||||||
forbidyesreplace:
|
|
||||||
StrCpy $forbiddenfile ".\forbidden.sample"
|
|
||||||
endifforbidden:
|
|
||||||
File /oname=$forbiddenfile ".\forbidden.sample"
|
|
||||||
IfFileExists "$INSTDIR\bin\*.*" "" endifbinroot
|
|
||||||
CreateDirectory "$INSTDIR\bin"
|
|
||||||
endifbinroot:
|
|
||||||
CopyFiles "${BIN}\localindex.html" $INSTDIR\index.html
|
|
||||||
IfFileExists "$INSTDIR\cache\*.*" "" endifcache
|
|
||||||
CreateDirectory "$INSTDIR\cache"
|
|
||||||
endifcache:
|
|
||||||
SectionEnd
|
|
||||||
|
|
||||||
SubSection /e "Shortcuts" Shortcuts
|
|
||||||
|
|
||||||
Section "Start Menu" StartMenu
|
|
||||||
SetOutPath $INSTDIR
|
|
||||||
IfFileExists "$SMPROGRAMS\Polipo\*.*" "" +2
|
|
||||||
RMDir /r "$SMPROGRAMS\Polipo"
|
|
||||||
CreateDirectory "$SMPROGRAMS\Polipo"
|
|
||||||
CreateShortCut "$SMPROGRAMS\Polipo\Polipo.lnk" "$INSTDIR\polipo.exe" "-c config"
|
|
||||||
CreateShortCut "$SMPROGRAMS\Polipo\Poliporc.lnk" "Notepad.exe" "$INSTDIR\config"
|
|
||||||
CreateShortCut "$SMPROGRAMS\Polipo\Polipo Documentation.lnk" "$INSTDIR\www\index.html"
|
|
||||||
CreateShortCut "$SMPROGRAMS\Polipo\Polipo Website.lnk" "$INSTDIR\Polipo Website.url"
|
|
||||||
CreateShortCut "$SMPROGRAMS\Polipo\Uninstall.lnk" "$INSTDIR\Uninstall.exe"
|
|
||||||
SectionEnd
|
|
||||||
|
|
||||||
Section "Desktop" Desktop
|
|
||||||
SetOutPath $INSTDIR
|
|
||||||
CreateShortCut "$DESKTOP\Polipo.lnk" "$INSTDIR\polipo.exe" "-c config"
|
|
||||||
SectionEnd
|
|
||||||
|
|
||||||
Section /o "Run at startup" Startup
|
|
||||||
SetOutPath $INSTDIR
|
|
||||||
CreateShortCut "$SMSTARTUP\Polipo.lnk" "$INSTDIR\polipo.exe" "-c config -f forbidden" "" "" "" SW_SHOWMINIMIZED
|
|
||||||
SectionEnd
|
|
||||||
|
|
||||||
SubSectionEnd
|
|
||||||
|
|
||||||
Section "Uninstall"
|
|
||||||
Delete "$DESKTOP\Polipo.lnk"
|
|
||||||
Delete "$INSTDIR\polipo.exe"
|
|
||||||
Delete "$INSTDIR\Polipo Website.url"
|
|
||||||
Delete "$INSTDIR\config"
|
|
||||||
Delete "$INSTDIR\config.sample"
|
|
||||||
Delete "$INSTDIR\forbidden.sample"
|
|
||||||
Delete "$INSTDIR\libgnurx-0.dll"
|
|
||||||
Delete "$INSTDIR\COPYING"
|
|
||||||
Delete "$INSTDIR\CHANGES"
|
|
||||||
Delete "$INSTDIR\README.Windows"
|
|
||||||
StrCmp $INSTDIR $INSTDIR +2 ""
|
|
||||||
RMDir /r $INSTDIR
|
|
||||||
Delete "$INSTDIR\Uninstall.exe"
|
|
||||||
RMDir /r "$INSTDIR\Documents"
|
|
||||||
RMDir $INSTDIR
|
|
||||||
RMDir /r "$SMPROGRAMS\Polipo"
|
|
||||||
RMDir /r "$APPDATA\Polipo"
|
|
||||||
Delete "$SMSTARTUP\Polipo.lnk"
|
|
||||||
DeleteRegKey HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Polipo"
|
|
||||||
SectionEnd
|
|
||||||
|
|
||||||
Section -End
|
|
||||||
WriteUninstaller "$INSTDIR\Uninstall.exe"
|
|
||||||
;The registry entries simply add the Polipo uninstaller to the Windows
|
|
||||||
;uninstall list.
|
|
||||||
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Polipo" "DisplayName" "Polipo (remove only)"
|
|
||||||
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Polipo" "UninstallString" '"$INSTDIR\Uninstall.exe"'
|
|
||||||
SectionEnd
|
|
||||||
|
|
||||||
!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
|
|
||||||
!insertmacro MUI_DESCRIPTION_TEXT ${Polipo} "The core executable and config files needed for Polipo to run."
|
|
||||||
!insertmacro MUI_DESCRIPTION_TEXT ${ShortCuts} "Shortcuts to easily start Polipo"
|
|
||||||
!insertmacro MUI_DESCRIPTION_TEXT ${StartMenu} "Shortcuts to access Polipo and its documentation from the Start Menu"
|
|
||||||
!insertmacro MUI_DESCRIPTION_TEXT ${Desktop} "A shortcut to start Polipo from the desktop"
|
|
||||||
!insertmacro MUI_DESCRIPTION_TEXT ${Startup} "Launches Polipo automatically at startup in a minimized window"
|
|
||||||
!insertmacro MUI_FUNCTION_DESCRIPTION_END
|
|
||||||
|
|
84
contrib/sd
84
contrib/sd
@ -1,84 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
#
|
|
||||||
# Copyright (c) 2005, 2006, 2007, 2008 Peter Palfrader <peter@palfrader.org>
|
|
||||||
# Copyright (c) 2008, 2009 Jacob Appelbaum <jacob@appelbaum.net>
|
|
||||||
#
|
|
||||||
# Permission is hereby granted, free of charge, to any person obtaining
|
|
||||||
# a copy of this software and associated documentation files (the
|
|
||||||
# "Software"), to deal in the Software without restriction, including
|
|
||||||
# without limitation the rights to use, copy, modify, merge, publish,
|
|
||||||
# distribute, sublicense, and/or sell copies of the Software, and to
|
|
||||||
# permit persons to whom the Software is furnished to do so, subject to
|
|
||||||
# the following conditions:
|
|
||||||
#
|
|
||||||
# The above copyright notice and this permission notice shall be
|
|
||||||
# included in all copies or substantial portions of the Software.
|
|
||||||
#
|
|
||||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
||||||
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
||||||
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
||||||
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
|
||||||
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
|
||||||
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
|
||||||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
#
|
|
||||||
# This small script fetches information about a server when given a nickname.
|
|
||||||
# It currently uses the v2 dir information and not the v3 consensus by default.
|
|
||||||
# It requires wget, perl, awk to function properly. This is based on a zsh
|
|
||||||
# dotfile from weasel and adapted to be a small bash utility.
|
|
||||||
#
|
|
||||||
|
|
||||||
# Feel free to set any authority you desire, we're using weasel's by default
|
|
||||||
# You could also try the v3 directory infomation in weasel's dir authority:
|
|
||||||
# http://tor.noreply.org/tor/status-vote/current/consensus
|
|
||||||
#
|
|
||||||
|
|
||||||
# Users can select between the two
|
|
||||||
v3authority="http://tor.noreply.org/tor/status-vote/current/consensus";
|
|
||||||
v2authority="http://tor.noreply.org:80/tor/status/authority";
|
|
||||||
authority=$v2authority;
|
|
||||||
|
|
||||||
function usage {
|
|
||||||
echo "Usage: $0 [-2|-3] nodenickname";
|
|
||||||
}
|
|
||||||
|
|
||||||
if [ -z "$1" ];
|
|
||||||
then
|
|
||||||
usage;
|
|
||||||
exit;
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Are we switching between v2 or v3?
|
|
||||||
if [ "$1" == "-2" -o "$1" == "-3" ];
|
|
||||||
then
|
|
||||||
if [ "$1" == "-2" -a -n "$2" ];
|
|
||||||
then
|
|
||||||
authority=$v2authority;
|
|
||||||
nickname="$2";
|
|
||||||
elif [ "$1" == "-3" -a -n "$2" ];
|
|
||||||
then
|
|
||||||
authority=$v3authority;
|
|
||||||
nickname="$2";
|
|
||||||
else
|
|
||||||
usage;
|
|
||||||
exit;
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
nickname="$1";
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Fetch it and decode the fingerprint
|
|
||||||
fp=`wget -q -O - $authority | \
|
|
||||||
awk '$1 == "r" && $2 == "'$nickname'" {printf "%s===", $3}' | \
|
|
||||||
perl -MMIME::Base64 -e "print unpack(\"H*\", decode_base64(<>)),\"\n\"";`
|
|
||||||
|
|
||||||
# If we don't have a fingerprint, we don't have a match
|
|
||||||
if [ "$fp" != "" ];
|
|
||||||
then
|
|
||||||
wget -q -O - http://tor.noreply.org:80/tor/server/fp/$fp;
|
|
||||||
exit $?;
|
|
||||||
else
|
|
||||||
echo "It appears the nickname is not currently known by the directory" \
|
|
||||||
"authority."
|
|
||||||
exit 1;
|
|
||||||
fi
|
|
@ -1 +0,0 @@
|
|||||||
EXTRA_DIST+= contrib/suse/tor.sh
|
|
@ -1,212 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
#
|
|
||||||
# tor-ctrl is a commandline tool for executing commands on a tor server via
|
|
||||||
# the controlport. In order to get this to work, add "ControlPort 9051" and
|
|
||||||
# "CookieAuthentication 1" to your torrc and reload tor. Or - if you want a
|
|
||||||
# fixed password - leave out "CookieAuthentication 1" and use the following
|
|
||||||
# line to create the appropriate HashedControlPassword entry for your torrc
|
|
||||||
# (you need to change yourpassword, of course):
|
|
||||||
#
|
|
||||||
# echo "HashedControlPassword $(tor --hash-password yourpassword | tail -n 1)"
|
|
||||||
#
|
|
||||||
# tor-ctrl will return 0 if it was successful and 1 if not, 2 will be returned
|
|
||||||
# if something (telnet, xxd) is missing. 4 will be returned if it executed
|
|
||||||
# several commands from a file.
|
|
||||||
#
|
|
||||||
# For setting the bandwidth for specific times of the day, I suggest calling
|
|
||||||
# tor-ctrl via cron, e.g.:
|
|
||||||
#
|
|
||||||
# 0 22 * * * /path/to/tor-ctrl -c "SETCONF bandwidthrate=1mb"
|
|
||||||
# 0 7 * * * /path/to/tor-ctrl -c "SETCONF bandwidthrate=100kb"
|
|
||||||
#
|
|
||||||
# This would set the bandwidth to 100kb at 07:00 and to 1mb at 22:00. You can
|
|
||||||
# use notations like 1mb, 1kb or the number of bytes.
|
|
||||||
#
|
|
||||||
# Many, many other things are possible, see
|
|
||||||
# https://www.torproject.org/svn/trunk/doc/spec/control-spec.txt
|
|
||||||
#
|
|
||||||
# Copyright (c) 2007 by Stefan Behte
|
|
||||||
#
|
|
||||||
# tor-ctrl is free software; you can redistribute it and/or modify
|
|
||||||
# it under the terms of the GNU General Public License as published by
|
|
||||||
# the Free Software Foundation; either version 2 of the License, or
|
|
||||||
# (at your option) any later version.
|
|
||||||
#
|
|
||||||
# tor-ctrl is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
# GNU General Public License for more details.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU General Public License
|
|
||||||
# along with tor-ctrl; if not, write to the Free Software
|
|
||||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|
||||||
#
|
|
||||||
# Written by Stefan Behte
|
|
||||||
#
|
|
||||||
# Please send bugs, comments, wishes, thanks and success stories to:
|
|
||||||
# Stefan dot Behte at gmx dot net
|
|
||||||
#
|
|
||||||
# Also have a look at my page:
|
|
||||||
# http://ge.mine.nu/
|
|
||||||
#
|
|
||||||
# 2007-10-03: First version, only changing bandwidth possible.
|
|
||||||
# 2007-10-04: Renaming to "tor-ctrl", added a lot of functions, it's now a
|
|
||||||
# general-purpose tool.
|
|
||||||
# Added control_auth_cookie/controlpassword auth, getopts,
|
|
||||||
# program checks, reading from file etc.
|
|
||||||
|
|
||||||
VERSION=v1
|
|
||||||
TORCTLIP=127.0.0.1
|
|
||||||
TORCTLPORT=9051
|
|
||||||
TOR_COOKIE="/var/lib/tor/data/control_auth_cookie"
|
|
||||||
SLEEP_AFTER_CMD=1
|
|
||||||
VERBOSE=0
|
|
||||||
|
|
||||||
usage()
|
|
||||||
{
|
|
||||||
cat <<EOF
|
|
||||||
|
|
||||||
tor-ctrl $VERSION by Stefan Behte (http://ge.mine.nu)
|
|
||||||
You should have a look at
|
|
||||||
https://www.torproject.org/svn/trunk/doc/spec/control-spec.txt
|
|
||||||
|
|
||||||
usage: tor-ctrl [-switch] [variable]
|
|
||||||
|
|
||||||
[-c] [command] = command to execute
|
|
||||||
notice: always "quote" your command
|
|
||||||
|
|
||||||
[-f] [file] = file to execute commands from
|
|
||||||
notice: only one command per line
|
|
||||||
|
|
||||||
[-a] [path] = path to tor's control_auth_cookie
|
|
||||||
default: /var/lib/tor/data/control_auth_cookie
|
|
||||||
notice: do not forget to adjust your torrc
|
|
||||||
|
|
||||||
[-s] [time] = sleep [var] seconds after each command sent
|
|
||||||
default: 1 second
|
|
||||||
notice: for GETCONF, you can use smaller pause times
|
|
||||||
than for SETCONF; this is due to telnet's behaviour.
|
|
||||||
|
|
||||||
[-p] [pwd] = Use password [var] instead of tor's control_auth_cookie
|
|
||||||
default: not used
|
|
||||||
notice: do not forget to adjust your torrc
|
|
||||||
|
|
||||||
[-P] [port] = Tor ControlPort
|
|
||||||
default: 9051
|
|
||||||
|
|
||||||
[-v] = verbose
|
|
||||||
default: not set
|
|
||||||
notice: the default output is the return code ;)
|
|
||||||
You propably want to set -v when running manually
|
|
||||||
|
|
||||||
Examples: $0 -c "SETCONF bandwidthrate=1mb"
|
|
||||||
$0 -v -c "GETINFO version"
|
|
||||||
$0 -v -s 0 -P 9051 -p foobar -c "GETCONF bandwidthrate"
|
|
||||||
|
|
||||||
EOF
|
|
||||||
exit 2
|
|
||||||
}
|
|
||||||
|
|
||||||
checkprogs()
|
|
||||||
{
|
|
||||||
programs="telnet"
|
|
||||||
if [ "$PASSWORD" = "" ]
|
|
||||||
then
|
|
||||||
# you only need xxd when using control_auth_cookie
|
|
||||||
programs="$programs xxd"
|
|
||||||
fi
|
|
||||||
|
|
||||||
for p in $programs
|
|
||||||
do
|
|
||||||
which $p &>/dev/null # are you there?
|
|
||||||
if [ "$?" != "0" ]
|
|
||||||
then
|
|
||||||
echo "$p is missing."
|
|
||||||
exit 2
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
sendcmd()
|
|
||||||
{
|
|
||||||
echo "$@"
|
|
||||||
sleep ${SLEEP_AFTER_CMD}
|
|
||||||
}
|
|
||||||
|
|
||||||
login()
|
|
||||||
{
|
|
||||||
if [ "$PASSWORD" = "" ]
|
|
||||||
then
|
|
||||||
sendcmd "AUTHENTICATE $(xxd -c 32 -g 0 ${TOR_COOKIE} | awk '{print $2}')"
|
|
||||||
else
|
|
||||||
sendcmd "AUTHENTICATE \"${PASSWORD}\""
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
cmdpipe()
|
|
||||||
{
|
|
||||||
login
|
|
||||||
sendcmd "$@"
|
|
||||||
sendcmd "QUIT"
|
|
||||||
}
|
|
||||||
|
|
||||||
vecho()
|
|
||||||
{
|
|
||||||
if [ $VERBOSE -ge 1 ]
|
|
||||||
then
|
|
||||||
echo "$@"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
myecho()
|
|
||||||
{
|
|
||||||
STR=$(cat)
|
|
||||||
vecho "$STR"
|
|
||||||
|
|
||||||
echo "$STR" | if [ "$(grep -c ^"250 ")" = 3 ]
|
|
||||||
then
|
|
||||||
exit 0
|
|
||||||
else
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
filepipe()
|
|
||||||
{
|
|
||||||
login
|
|
||||||
cat "$1" | while read line
|
|
||||||
do
|
|
||||||
sendcmd "$line"
|
|
||||||
done
|
|
||||||
sendcmd "QUIT"
|
|
||||||
}
|
|
||||||
|
|
||||||
while getopts ":a:c:s:p:P:f:vh" Option
|
|
||||||
do
|
|
||||||
case $Option in
|
|
||||||
a) TOR_COOKIE="${OPTARG}";;
|
|
||||||
c) CMD="${OPTARG}";;
|
|
||||||
s) SLEEP_AFTER_CMD="${OPTARG}";;
|
|
||||||
p) PASSWORD="${OPTARG}";;
|
|
||||||
P) TORCTLPORT="${OPTARG}";;
|
|
||||||
f) FILE="${OPTARG}";;
|
|
||||||
v) VERBOSE=1;;
|
|
||||||
h) usage;;
|
|
||||||
*) usage;;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
|
|
||||||
if [ -e "$FILE" ]
|
|
||||||
then
|
|
||||||
checkprogs
|
|
||||||
filepipe "$FILE" | telnet $TORCTLIP $TORCTLPORT 2>/dev/null | myecho
|
|
||||||
exit 4
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$CMD" != "" ]
|
|
||||||
then
|
|
||||||
checkprogs
|
|
||||||
cmdpipe $CMD | telnet $TORCTLIP $TORCTLPORT 2>/dev/null | myecho
|
|
||||||
else
|
|
||||||
usage
|
|
||||||
fi
|
|
@ -1,27 +0,0 @@
|
|||||||
#!/usr/bin/perl
|
|
||||||
|
|
||||||
#require 'sys/syscall.ph';
|
|
||||||
$|=1;
|
|
||||||
|
|
||||||
$total = 1;
|
|
||||||
$target = "http://www.cnn.com/";
|
|
||||||
|
|
||||||
for($i=0;$i<$total;$i++) {
|
|
||||||
print "Starting client $i\n";
|
|
||||||
$pid = fork();
|
|
||||||
if(!$pid) {
|
|
||||||
open(FD,"wget -q -O - $target|");
|
|
||||||
$c = 0;
|
|
||||||
while(<FD>) {
|
|
||||||
$c += length($_);
|
|
||||||
}
|
|
||||||
# $TIMEVAL_T = "LL";
|
|
||||||
# $now = pack($TIMEVAL_T, ());
|
|
||||||
# syscall(&SYS_gettimeofday, $now, 0) != -1 or die "gettimeofday: $!";
|
|
||||||
# @now = unpack($TIMEVAL_T, $now);
|
|
||||||
print "Client $i exiting ($c chars).\n";
|
|
||||||
exit(0);
|
|
||||||
}
|
|
||||||
# sleep(1);
|
|
||||||
}
|
|
||||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 4.2 KiB |
@ -40,7 +40,7 @@
|
|||||||
# you know what you are doing.
|
# you know what you are doing.
|
||||||
|
|
||||||
# Start in the tor source directory after you've compiled tor.exe
|
# Start in the tor source directory after you've compiled tor.exe
|
||||||
# This means start as ./contrib/package_nsis-mingw.sh
|
# This means start as ./contrib/win32build/package_nsis-mingw.sh
|
||||||
|
|
||||||
rm -rf win_tmp
|
rm -rf win_tmp
|
||||||
mkdir win_tmp
|
mkdir win_tmp
|
||||||
@ -56,7 +56,7 @@ mkdir win_tmp/tmp
|
|||||||
|
|
||||||
cp src/or/tor.exe win_tmp/bin/
|
cp src/or/tor.exe win_tmp/bin/
|
||||||
cp src/tools/tor-resolve.exe win_tmp/bin/
|
cp src/tools/tor-resolve.exe win_tmp/bin/
|
||||||
cp contrib/tor.ico win_tmp/bin/
|
cp contrib/win32build/tor.ico win_tmp/bin/
|
||||||
cp src/config/geoip win_tmp/bin/
|
cp src/config/geoip win_tmp/bin/
|
||||||
strip win_tmp/bin/*.exe
|
strip win_tmp/bin/*.exe
|
||||||
|
|
||||||
@ -88,7 +88,7 @@ done
|
|||||||
|
|
||||||
clean_localstatedir src/config/torrc.sample.in win_tmp/src/config/torrc.sample
|
clean_localstatedir src/config/torrc.sample.in win_tmp/src/config/torrc.sample
|
||||||
|
|
||||||
cp contrib/tor-mingw.nsi.in win_tmp/contrib/
|
cp contrib/win32build/tor-mingw.nsi.in win_tmp/contrib/
|
||||||
|
|
||||||
cd win_tmp
|
cd win_tmp
|
||||||
makensis.exe contrib/tor-mingw.nsi.in
|
makensis.exe contrib/tor-mingw.nsi.in
|
Before Width: | Height: | Size: 81 KiB After Width: | Height: | Size: 81 KiB |
Binary file not shown.
Before Width: | Height: | Size: 1.1 KiB |
@ -122,7 +122,7 @@ Running gcov for unit test coverage
|
|||||||
make
|
make
|
||||||
make check
|
make check
|
||||||
mkdir coverage-output
|
mkdir coverage-output
|
||||||
./contrib/coverage coverage-output
|
./scripts/test/coverage coverage-output
|
||||||
-----
|
-----
|
||||||
|
|
||||||
(On OSX, you'll need to start with "--enable-coverage CC=clang".)
|
(On OSX, you'll need to start with "--enable-coverage CC=clang".)
|
||||||
@ -142,7 +142,7 @@ If you have two different "coverage-output" directories, and you want to see
|
|||||||
a meaningful diff between them, you can run:
|
a meaningful diff between them, you can run:
|
||||||
|
|
||||||
-----
|
-----
|
||||||
./contrib/cov-diff coverage-output1 coverage-output2 | less
|
./scripts/test/cov-diff coverage-output1 coverage-output2 | less
|
||||||
-----
|
-----
|
||||||
|
|
||||||
In this diff, any lines that were visited at least once will have coverage
|
In this diff, any lines that were visited at least once will have coverage
|
||||||
|
@ -1782,7 +1782,7 @@ if DirPort is non-zero):
|
|||||||
When this option is set, it takes an HTML file and publishes it as "/" on
|
When this option is set, it takes an HTML file and publishes it as "/" on
|
||||||
the DirPort. Now relay operators can provide a disclaimer without needing
|
the DirPort. Now relay operators can provide a disclaimer without needing
|
||||||
to set up a separate webserver. There's a sample disclaimer in
|
to set up a separate webserver. There's a sample disclaimer in
|
||||||
contrib/tor-exit-notice.html.
|
contrib/operator-tools/tor-exit-notice.html.
|
||||||
|
|
||||||
[[V3AuthoritativeDirectory]] **V3AuthoritativeDirectory** **0**|**1**::
|
[[V3AuthoritativeDirectory]] **V3AuthoritativeDirectory** **0**|**1**::
|
||||||
When this option is set in addition to **AuthoritativeDirectory**, Tor
|
When this option is set in addition to **AuthoritativeDirectory**, Tor
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
# to tell you where documentation should go!
|
# to tell you where documentation should go!
|
||||||
# To use me, edit the stuff below...
|
# To use me, edit the stuff below...
|
||||||
# ...and run 'make doxygen 2>doxygen.stderr' ...
|
# ...and run 'make doxygen 2>doxygen.stderr' ...
|
||||||
# ...and run ./contrib/redox.py < doxygen.stderr !
|
# ...and run ./scripts/maint/redox.py < doxygen.stderr !
|
||||||
# I'll make a bunch of new files by adding missing DOCDOC comments to your
|
# I'll make a bunch of new files by adding missing DOCDOC comments to your
|
||||||
# source. Those files will have names like ./src/common/util.c.newdoc.
|
# source. Those files will have names like ./src/common/util.c.newdoc.
|
||||||
# You will want to look over the changes by hand before checking them in.
|
# You will want to look over the changes by hand before checking them in.
|
||||||
@ -21,7 +21,7 @@
|
|||||||
# 1. make doxygen 1>doxygen.stdout 2>doxygen.stderr.
|
# 1. make doxygen 1>doxygen.stdout 2>doxygen.stderr.
|
||||||
# 2. grep Warning doxygen.stderr | grep -v 'is not documented' | less
|
# 2. grep Warning doxygen.stderr | grep -v 'is not documented' | less
|
||||||
# [This will tell you about all the bogus doxygen output you have]
|
# [This will tell you about all the bogus doxygen output you have]
|
||||||
# 3. python ./contrib/redox.py <doxygen.stderr
|
# 3. python ./scripts/maint/redox.py <doxygen.stderr
|
||||||
# [This will make lots of .newdoc files with DOCDOC comments for
|
# [This will make lots of .newdoc files with DOCDOC comments for
|
||||||
# whatever was missing documentation.]
|
# whatever was missing documentation.]
|
||||||
# 4. Look over those .newdoc files, and see which docdoc comments you
|
# 4. Look over those .newdoc files, and see which docdoc comments you
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
$CONFIGURE_IN = './configure.ac';
|
$CONFIGURE_IN = './configure.ac';
|
||||||
$ORCONFIG_H = './src/win32/orconfig.h';
|
$ORCONFIG_H = './src/win32/orconfig.h';
|
||||||
$TOR_NSI = './contrib/tor-mingw.nsi.in';
|
$TOR_NSI = './contrib/win32build/tor-mingw.nsi.in';
|
||||||
|
|
||||||
$quiet = 1;
|
$quiet = 1;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user