summaryrefslogtreecommitdiff
path: root/lib/thandy
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2008-11-16 22:47:01 +0000
committerNick Mathewson <nickm@torproject.org>2008-11-16 22:47:01 +0000
commit089508b5dfdeff9bd5345a1527d603d59e1df45d (patch)
tree21bd1568de76d789ff93435508ffcc873838b6a1 /lib/thandy
parent48adf40595f127c2bd167aa6774f4ba67e191c0f (diff)
Support socks.
git-svn-id: file:///home/or/svnrepo/updater/trunk@17295 55e972cd-5a19-0410-ae62-a4d7a52db4cd
Diffstat (limited to 'lib/thandy')
-rw-r--r--lib/thandy/ClientCLI.py17
-rw-r--r--lib/thandy/download.py4
2 files changed, 16 insertions, 5 deletions
diff --git a/lib/thandy/ClientCLI.py b/lib/thandy/ClientCLI.py
index 7818c6d..9516d1a 100644
--- a/lib/thandy/ClientCLI.py
+++ b/lib/thandy/ClientCLI.py
@@ -12,16 +12,18 @@ import thandy.repository
import thandy.download
import thandy.master_keys
import thandy.packagesys.PackageSystem
+import thandy.socksurls
def update(args):
repoRoot = thandy.util.userFilename("cache")
options, args = getopt.getopt(args, "", [ "repo=", "no-download",
"loop", "no-packagesys",
- "install"])
+ "install", "socks-port="])
download = True
keep_looping = False
use_packagesys = True
install = False
+ socksPort = None
for o, v in options:
if o == '--repo':
@@ -34,12 +36,20 @@ def update(args):
use_packagesys = False
elif o == '--install':
install = True
+ elif o == "--socks-port":
+ socksPort = int(v)
+
+ if socksPort:
+ thandy.socksurls.setSocksProxy("127.0.0.1", socksPort)
repo = thandy.repository.LocalRepository(repoRoot)
packagesys = None
if use_packagesys:
packagesys = thandy.packagesys.PackageSystem.PackageMetasystem.create(repo)
+ # XXXX We could make this loop way smarter. Right now, it doesn't
+ # back off between failures, and it doesn't notice newly downloadable files
+ # until all downloading files are finished.
while True:
hashes = {}
installable = {}
@@ -87,7 +97,8 @@ def update(args):
for f in files:
dj = thandy.download.ThandyDownloadJob(f, repo.getFilename(f),
mirrorlist,
- wantHash=hashes.get(f))
+ wantHash=hashes.get(f),
+ useTor=(socksPort!=None))
def successCb(rp=f):
rf = repo.getRequestedFile(rp)
@@ -111,7 +122,7 @@ def update(args):
def usage():
print "Known commands:"
print " update [--repo=repository] [--no-download] [--loop]"
- print " [--no-packagesys] [--install]"
+ print " [--no-packagesys] [--install] [--socks-port=port]"
sys.exit(1)
def main():
diff --git a/lib/thandy/download.py b/lib/thandy/download.py
index ef7f475..aaa8215 100644
--- a/lib/thandy/download.py
+++ b/lib/thandy/download.py
@@ -185,7 +185,7 @@ class DownloadJob:
tp, val, tb = sys.exc_info()
logging.warn("Internal during download: %s, %s", val,
traceback.format_exc())
- sys.exit(1)
+ return False
def _download(self):
# Implementation function. Unlike download(), can throw exceptions.
@@ -292,7 +292,7 @@ class ThandyDownloadJob(DownloadJob):
for c in m['contents']:
if self._supportedURLTypes is not None:
- urltype = urllib2.splittype(m['urlbase'][0])
+ urltype = urllib2.splittype(m['urlbase'])[0]
if urltype.lower() not in self._supportedURLTypes:
continue