mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-24 20:33:31 +01:00
Merge branch 'bug8966_v5'
This commit is contained in:
commit
9b825ffc4f
19
.gitignore
vendored
19
.gitignore
vendored
@ -26,6 +26,7 @@
|
||||
*.bak
|
||||
# Python droppings
|
||||
*.pyc
|
||||
*.pyo
|
||||
|
||||
# /
|
||||
/Makefile
|
||||
@ -60,20 +61,10 @@
|
||||
/tor-*-win32.exe
|
||||
|
||||
# /contrib/
|
||||
/contrib/Makefile
|
||||
/contrib/Makefile.in
|
||||
/contrib/tor.sh
|
||||
/contrib/torctl
|
||||
/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
|
||||
/contrib/dist/tor.sh
|
||||
/contrib/dist/torctl
|
||||
/contrib/operator-tools/tor.logrotate
|
||||
/contrib/dist/suse/tor.sh
|
||||
|
||||
# /debian/
|
||||
/debian/files
|
||||
|
@ -77,7 +77,7 @@ reset-gcov:
|
||||
# Avoid strlcpy.c, strlcat.c, aes.c, OpenBSD_malloc_Linux.c, sha256.c,
|
||||
# eventdns.[hc], tinytest*.[ch]
|
||||
check-spaces:
|
||||
./contrib/checkSpace.pl -C \
|
||||
./scripts/maint/checkSpace.pl -C \
|
||||
src/common/*.[ch] \
|
||||
src/or/*.[ch] \
|
||||
src/test/*.[ch] \
|
||||
@ -85,10 +85,10 @@ check-spaces:
|
||||
src/tools/tor-fw-helper/*.[ch]
|
||||
|
||||
check-docs:
|
||||
./contrib/checkOptionDocs.pl
|
||||
./scripts/maint/checkOptionDocs.pl
|
||||
|
||||
check-logs:
|
||||
./contrib/checkLogs.pl \
|
||||
./scripts/maint/checkLogs.pl \
|
||||
src/*/*.[ch] | sort -n
|
||||
|
||||
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([
|
||||
Doxyfile
|
||||
Makefile
|
||||
contrib/suse/tor.sh
|
||||
contrib/tor.logrotate
|
||||
contrib/tor.sh
|
||||
contrib/torctl
|
||||
contrib/dist/suse/tor.sh
|
||||
contrib/operator-tools/tor.logrotate
|
||||
contrib/dist/tor.sh
|
||||
contrib/dist/torctl
|
||||
src/config/torrc.sample
|
||||
])
|
||||
|
||||
@ -1582,6 +1582,6 @@ fi
|
||||
|
||||
AC_OUTPUT
|
||||
|
||||
if test -x /usr/bin/perl && test -x ./contrib/updateVersions.pl ; then
|
||||
./contrib/updateVersions.pl
|
||||
if test -x /usr/bin/perl && test -x ./scripts/maint/updateVersions.pl ; then
|
||||
./scripts/maint/updateVersions.pl
|
||||
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+= \
|
||||
contrib/cross.sh \
|
||||
contrib/exitlist \
|
||||
contrib/linux-tor-prio.sh \
|
||||
contrib/package_nsis-mingw.sh \
|
||||
contrib/rc.subr \
|
||||
contrib/tor-ctrl.sh \
|
||||
contrib/tor-exit-notice.html \
|
||||
contrib/tor-mingw.nsi.in \
|
||||
contrib/tor.ico \
|
||||
contrib/tor.nsi.in \
|
||||
contrib/tor.sh \
|
||||
contrib/torify \
|
||||
contrib/torctl
|
||||
contrib/client-tools/torify \
|
||||
contrib/dist/rc.subr \
|
||||
contrib/dist/suse/tor.sh.in \
|
||||
contrib/dist/tor.sh \
|
||||
contrib/dist/torctl \
|
||||
contrib/operator-tools/linux-tor-prio.sh \
|
||||
contrib/operator-tools/tor-exit-notice.html \
|
||||
contrib/or-tools/exitlist \
|
||||
contrib/win32build/package_nsis-mingw.sh \
|
||||
contrib/win32build/tor-mingw.nsi.in \
|
||||
contrib/win32build/tor.ico \
|
||||
contrib/win32build/tor.nsi.in
|
||||
|
||||
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.
|
||||
|
||||
# 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
|
||||
mkdir win_tmp
|
||||
@ -56,7 +56,7 @@ mkdir win_tmp/tmp
|
||||
|
||||
cp src/or/tor.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/
|
||||
strip win_tmp/bin/*.exe
|
||||
|
||||
@ -88,7 +88,7 @@ done
|
||||
|
||||
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
|
||||
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 check
|
||||
mkdir coverage-output
|
||||
./contrib/coverage coverage-output
|
||||
./scripts/test/coverage coverage-output
|
||||
-----
|
||||
|
||||
(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:
|
||||
|
||||
-----
|
||||
./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
|
||||
|
@ -1782,7 +1782,7 @@ if DirPort is non-zero):
|
||||
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
|
||||
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**::
|
||||
When this option is set in addition to **AuthoritativeDirectory**, Tor
|
||||
|
@ -10,7 +10,7 @@
|
||||
# to tell you where documentation should go!
|
||||
# To use me, edit the stuff below...
|
||||
# ...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
|
||||
# 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.
|
||||
@ -21,7 +21,7 @@
|
||||
# 1. make doxygen 1>doxygen.stdout 2>doxygen.stderr.
|
||||
# 2. grep Warning doxygen.stderr | grep -v 'is not documented' | less
|
||||
# [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
|
||||
# whatever was missing documentation.]
|
||||
# 4. Look over those .newdoc files, and see which docdoc comments you
|
@ -2,7 +2,7 @@
|
||||
|
||||
$CONFIGURE_IN = './configure.ac';
|
||||
$ORCONFIG_H = './src/win32/orconfig.h';
|
||||
$TOR_NSI = './contrib/tor-mingw.nsi.in';
|
||||
$TOR_NSI = './contrib/win32build/tor-mingw.nsi.in';
|
||||
|
||||
$quiet = 1;
|
||||
|
Loading…
Reference in New Issue
Block a user