aboutsummaryrefslogtreecommitdiff
path: root/contrib/directory-archive/fetch-all-functions
diff options
context:
space:
mode:
authorPeter Palfrader <peter@palfrader.org>2008-09-02 09:42:55 +0000
committerPeter Palfrader <peter@palfrader.org>2008-09-02 09:42:55 +0000
commit8dd5a3d8301e15d96f39e5c1b53347ed2b340249 (patch)
treed19d31ae6f758d50e61815705b91f86328453976 /contrib/directory-archive/fetch-all-functions
parent3c5c7994b0b40652f05b5ecb145845612354b89d (diff)
downloadtor-8dd5a3d8301e15d96f39e5c1b53347ed2b340249.tar
tor-8dd5a3d8301e15d96f39e5c1b53347ed2b340249.tar.gz
Add my scripts to dump directories to contrib
svn:r16736
Diffstat (limited to 'contrib/directory-archive/fetch-all-functions')
-rw-r--r--contrib/directory-archive/fetch-all-functions72
1 files changed, 72 insertions, 0 deletions
diff --git a/contrib/directory-archive/fetch-all-functions b/contrib/directory-archive/fetch-all-functions
new file mode 100644
index 000000000..6d5a0e469
--- /dev/null
+++ b/contrib/directory-archive/fetch-all-functions
@@ -0,0 +1,72 @@
+#!/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
+}