Clean the contrib directory with torch and machete.

We've accumulated a lot of cruft in this directory over the years: so
much, that it passed the point of being so disorganized that we no
longer browsed through it to see how bad it had gotten.

This patch (based on changes by rl1987) tries to remove the most
useless items, and split the others into reasonable directories.  It
creates a new scripts/ directory for maint and test scripts.

This patch was generated with the script below.  No other changes are made in
this patch.

#############
# new directories
mkdir -p contrib/test-tools
mkdir -p contrib/or-tools
mkdir -p contrib/dirauth-tools
mkdir -p contrib/operator-tools
mkdir -p contrib/client-tools
mkdir -p contrib/test-tools
mkdir -p contrib/dist
mkdir -p contrib/dist/suse
mkdir -p contrib/win32build

mkdir -p scripts/maint
mkdir -p scripts/test

############
# Deleted -- nobody who wants this is going to be looking for it here any
# longer.  Also, nobody wants it.
git rm contrib/auto-naming/README

# Deleted: We no longer do polipo.
git rm contrib/polipo/Makefile.mingw
git rm contrib/polipo/README
git rm contrib/polipo/polipo-mingw.nsi

# We haven't even tried to run this for ages. It is a relic of a bygone era
git rm contrib/mdd.py

# contrib/dir-tools/directory-archive/
# Tools for running a directory archive. No longer used - deleting them.
git rm contrib/directory-archive/crontab.sample
git rm contrib/directory-archive/fetch-all
git rm contrib/directory-archive/fetch-all-v3
git rm contrib/directory-archive/tar-them-up
git rm contrib/directory-archive/fetch-all-functions
git rm contrib/directory-archive/sort-into-month-folder

# This appears to be related to very old windows packaging stuff.
git rm contrib/bundle.nsi
git rm contrib/package_nsis-weasel.sh
git rm contrib/package_nsis.sh
git rm contrib/netinst.nsi
git rm contrib/torinst32.ico
git rm contrib/xenobite.ico

# This should not be needed for cross-compilation any more, should it?
git rm contrib/cross.sh

# I don't think anyone ever used this.
git rm contrib/make-signature.sh

# These are attempts to send tor controller commands from the command-line.
# They don't support modern authentication.
git rm contrib/tor-ctrl.sh

# this is for fetching about a tor server from a dirauth. But it
# doesn't authenticate the dirauth: yuck.
git rm contrib/sd

# wow, such unused, very perl4.
git rm contrib/tor-stress

####### contrib/dirauth-tools/
# Tools for running a directory authority

git mv contrib/add-tor contrib/dirauth-tools/
git mv contrib/nagios-check-tor-authority-cert contrib/dirauth-tools/

#######
# contrib/or-tools/
# Tools for examining relays
git mv contrib/check-tor contrib/or-tools/check-tor
git mv contrib/checksocks.pl contrib/or-tools/checksocks.pl
git mv contrib/exitlist contrib/or-tools/exitlist

#######
# contrib/operator-tools

# Tools for running a relay.
git mv contrib/linux-tor-prio.sh contrib/operator-tools/linux-tor-prio.sh
git mv contrib/tor-exit-notice.html contrib/operator-tools/tor-exit-notice.html
git mv contrib/tor.logrotate.in contrib/operator-tools/

######
# contrib/dist

git mv contrib/rc.subr contrib/dist/
git mv contrib/tor.sh.in contrib/dist/
git mv contrib/torctl.in contrib/dist/
git mv contrib/suse/* contrib/dist/suse/

######
# client-tools
git mv contrib/torify contrib/client-tools/torify
git mv contrib/tor-resolve.py contrib/client-tools/

######
# win32build

git mv contrib/package_nsis-mingw.sh contrib/win32build/
git mv contrib/tor.nsi.in contrib/win32build/
# Erinn didn't ask for this...
git mv contrib/tor-mingw.nsi.in contrib/win32build/
git mv contrib/tor.ico contrib/win32build/

######
# scripts/test
git mv contrib/cov-blame scripts/test/cov-blame
git mv contrib/cov-diff scripts/test/cov-diff
git mv contrib/coverage scripts/test/coverage
git mv contrib/scan-build.sh scripts/test/

######## scripts/maint
# Maintainance scripts
#
# These are scripts for developers to use when hacking on Tor.  They mostly
# look at the Tor source in one way or another.
git mv contrib/findMergedChanges.pl scripts/maint/findMergedChanges.pl
git mv contrib/checkOptionDocs.pl scripts/maint/checkOptionDocs.pl
git mv contrib/checkSpace.pl scripts/maint/checkSpace.pl
git mv contrib/redox.py scripts/maint/redox.py
git mv contrib/updateVersions.pl scripts/maint/updateVersions.pl
git mv contrib/checkLogs.pl scripts/maint/checkLogs.pl
git mv contrib/format_changelog.py scripts/maint/
This commit is contained in:
Nick Mathewson 2014-04-28 11:34:53 -04:00
parent 78b431d3e3
commit 9230bc7c65
52 changed files with 0 additions and 1853 deletions

View File

@ -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/

View File

@ -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

View File

@ -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 ""

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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');

View File

@ -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

View File

@ -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

View File

@ -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))

View File

@ -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

View File

@ -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 ../../..'

View File

@ -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 ../..

View File

@ -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

View File

@ -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.

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

Before

Width:  |  Height:  |  Size: 81 KiB

After

Width:  |  Height:  |  Size: 81 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB