[stem/master] Script for caching fallback directories

commit 9e3f6a2930893bcf4cd69a7e18c00efb2480ff10 Author: Damian Johnson <atagar@torproject.org> Date: Sun Feb 21 18:19:16 2016 -0800 Script for caching fallback directories Oops! Forgot to add a couple new files to support fallback directories. --- cache_fallback_directories.py | 64 ++++++++++++++++++++++++ stem/descriptor/fallback_directories.cfg | 86 ++++++++++++++++++++++++++++++++ 2 files changed, 150 insertions(+) diff --git a/cache_fallback_directories.py b/cache_fallback_directories.py new file mode 100755 index 0000000..d6a58a9 --- /dev/null +++ b/cache_fallback_directories.py @@ -0,0 +1,64 @@ +#!/usr/bin/env python +# Copyright 2016, Damian Johnson and The Tor Project +# See LICENSE for licensing information + +""" +Caches tor's latest fallback directories. +""" + +import re +import sys + +import stem.descriptor.remote +import stem.util.conf +import stem.util.system + +try: + # account for urllib's change between python 2.x and 3.x + import urllib.request as urllib +except ImportError: + import urllib2 as urllib + +GITWEB_MAN_LOG = 'https://gitweb.torproject.org/tor.git/log/src/or/fallback_dirs.inc' +FALLBACK_DIR_LINK = "href='/tor.git/commit/src/or/fallback_dirs.inc\?id=([^']*)'" + +if __name__ == '__main__': + try: + fallback_dir_page = urllib.urlopen(GITWEB_MAN_LOG).read() + fallback_dir_commit = re.search(FALLBACK_DIR_LINK, fallback_dir_page).group(1) + except: + print("Unable to determine the latest commit to edit tor's fallback directories: %s" % sys.exc_info()[1]) + sys.exit(1) + + try: + stem_commit = stem.util.system.call('git rev-parse HEAD')[0] + except IOError as exc: + print("Unable to determine stem's current commit: %s" % exc) + sys.exit(1) + + print('Latest tor commit editing fallback directories: %s' % fallback_dir_commit) + print('Current stem commit: %s' % stem_commit) + print('') + + cached_fallback_directories = stem.descriptor.remote.FallbackDirectory.from_cache() + latest_fallback_directories = stem.descriptor.remote.FallbackDirectory.from_remote() + + if cached_fallback_directories == latest_fallback_directories: + print('Fallback directories are already up to date, nothing to do.') + sys.exit(0) + + print('Differences detected...\n') + print(stem.descriptor.remote._fallback_directory_differences(cached_fallback_directories, latest_fallback_directories)) + + conf = stem.util.conf.Config() + conf.set('tor_commit', fallback_dir_commit) + conf.set('stem_commit', stem_commit) + + for directory in latest_fallback_directories.values(): + nickname = directory.nickname + conf.set('%s.address' % nickname, directory.address) + conf.set('%s.or_port' % nickname, str(directory.or_port)) + conf.set('%s.dir_port' % nickname, str(directory.dir_port)) + conf.set('%s.fingerprint' % nickname, directory.fingerprint) + + conf.save(stem.descriptor.remote.CACHE_PATH) diff --git a/stem/descriptor/fallback_directories.cfg b/stem/descriptor/fallback_directories.cfg new file mode 100644 index 0000000..158378d --- /dev/null +++ b/stem/descriptor/fallback_directories.cfg @@ -0,0 +1,86 @@ +tor_commit ab3c86479a516073e0b445846a22b0e24ce8078e +stem_commit 645017a5f8c17b143e90602fdfe6c03a1a994a1c +Doedel22.address 178.254.44.135 +Doedel22.or_port 9001 +Doedel22.dir_port 9030 +Doedel22.fingerprint 8FA37B93397015B2BC5A525C908485260BE9F422 +tornoderdednl.address 178.62.199.226 +tornoderdednl.or_port 443 +tornoderdednl.dir_port 80 +tornoderdednl.fingerprint CBEFF7BA4A4062045133C053F2D70524D8BBE5BE +Logforme.address 84.219.173.60 +Logforme.or_port 443 +Logforme.dir_port 9030 +Logforme.fingerprint 855BC2DABE24C861CD887DB9B2E950424B49FC34 +Doedel21.address 178.254.44.135 +Doedel21.or_port 443 +Doedel21.dir_port 80 +Doedel21.fingerprint AE6A8C18E7499B586CD36246AC4BCAFFBBF93AB2 +BabylonNetwork02.address 149.202.98.161 +BabylonNetwork02.or_port 443 +BabylonNetwork02.dir_port 80 +BabylonNetwork02.fingerprint 54660C671B47E6986B465B80444414BD19E5A34B +fluxe3.address 78.47.18.110 +fluxe3.or_port 80 +fluxe3.dir_port 443 +fluxe3.fingerprint F8D27B163B9247B232A2EEE68DD8B698695C28DE +kili.address 178.62.173.203 +kili.or_port 9001 +kili.dir_port 9030 +kili.fingerprint DD85503F2D1F52EF9EAD621E942298F46CD2FC10 +wagner.address 5.175.233.86 +wagner.or_port 443 +wagner.dir_port 80 +wagner.fingerprint 5525D0429BFE5DC4F1B0E9DE47A4CFA169661E33 +fluxe4.address 131.188.40.188 +fluxe4.or_port 80 +fluxe4.dir_port 443 +fluxe4.fingerprint EBE718E1A49EE229071702964F8DB1F318075FF8 +kitten2.address 62.210.124.124 +kitten2.or_port 9101 +kitten2.dir_port 9130 +kitten2.fingerprint 2EBD117806EE43C3CC885A8F1E4DC60F207E7D3E +coby.address 51.255.33.237 +coby.or_port 9001 +coby.dir_port 9091 +coby.fingerprint A360C21FA87FFA2046D92C17086A6B47E5C68109 +GrmmlLitavis.address 5.39.88.19 +GrmmlLitavis.or_port 9001 +GrmmlLitavis.dir_port 9030 +GrmmlLitavis.fingerprint 7CB8C31432A796731EA7B6BF4025548DFEB25E0C +Doedel24.address 178.254.20.134 +Doedel24.or_port 9001 +Doedel24.dir_port 9030 +Doedel24.fingerprint 2CE96A8A1DA032664C90F574AFFBECE18A6E8DFC +BabylonNetwork03.address 193.111.136.162 +BabylonNetwork03.or_port 443 +BabylonNetwork03.dir_port 80 +BabylonNetwork03.fingerprint C79552275DFCD486B942510EF663ED36ACA1A84B +Unnamed.address 217.12.199.208 +Unnamed.or_port 443 +Unnamed.dir_port 80 +Unnamed.fingerprint DF3AED4322B1824BF5539AE54B2D1B38E080FF05 +eriador.address 85.25.138.93 +eriador.or_port 4029 +eriador.dir_port 9030 +eriador.fingerprint 6DE61A6F72C1E5418A66BFED80DFB63E4C77668F +Doedel26.address 178.254.20.134 +Doedel26.or_port 443 +Doedel26.dir_port 80 +Doedel26.fingerprint 9F5068310818ED7C70B0BC4087AB55CB12CB4377 +PedicaboMundi.address 144.76.14.145 +PedicaboMundi.or_port 143 +PedicaboMundi.dir_port 110 +PedicaboMundi.fingerprint 14419131033443AE6E21DA82B0D307F7CAE42BDB +kitten1.address 62.210.124.124 +kitten1.or_port 9001 +kitten1.dir_port 9030 +kitten1.fingerprint 86E78DD3720C78DA8673182EF96C54B162CD660C +Binnacle.address 108.53.208.157 +Binnacle.or_port 443 +Binnacle.dir_port 80 +Binnacle.fingerprint 4F0DB7E687FC7C0AE55C8F243DA8B0EB27FBF1F2 +kitten4.address 212.47.237.95 +kitten4.or_port 9101 +kitten4.dir_port 9130 +kitten4.fingerprint 6FB38EB22E57EF7ED5EF00238F6A48E553735D88
participants (1)
-
atagar@torproject.org