pass geoip path if found

This commit is contained in:
j 2016-02-01 12:14:31 +05:30
parent e58f5b1e95
commit 65f02fdd13

View file

@ -44,17 +44,18 @@ SocksPort 9830
ControlPort 9831 ControlPort 9831
CookieAuthentication 1 CookieAuthentication 1
'''.strip()) '''.strip())
tor_data = os.path.join(settings.data_path, 'TorData')
if not os.path.exists(torrc): if not os.path.exists(torrc):
with open(torrc, 'w') as fd: with open(torrc, 'w') as fd:
fd.write(''' fd.write('''
DataDirectory {base}/TorData DataDirectory {tor_data}
DirReqStatistics 0 DirReqStatistics 0
'''.strip().format(base=settings.data_path)) '''.strip().format(tor_data=tor_data))
else: else:
with open(torrc, 'r') as fd: with open(torrc, 'r') as fd:
data = fd.read() data = fd.read()
modified_data = re.sub('DataDirectory.*?/TorData', modified_data = re.sub('DataDirectory.*?TorData',
'DataDirectory {base}/TorData'.format(base=settings.data_path), data) 'DataDirectory {tor_data}'.format(tor_data=tor_data), data)
if data != modified_data: if data != modified_data:
with open(torrc, 'w') as fd: with open(torrc, 'w') as fd:
fd.write(modified_data) fd.write(modified_data)
@ -63,6 +64,7 @@ DirReqStatistics 0
def run(self): def run(self):
defaults, torrc = self.create_torrc() defaults, torrc = self.create_torrc()
tor_data = os.path.join(settings.data_path, 'TorData')
tor = get_tor() tor = get_tor()
if not tor: if not tor:
self._status.append('No tor binary found. Please install TorBrowser or tor') self._status.append('No tor binary found. Please install TorBrowser or tor')
@ -77,7 +79,8 @@ DirReqStatistics 0
} }
else: else:
env = None env = None
cmd = [tor, '--defaults-torrc', defaults, '-f', torrc] cmd = [tor, '--defaults-torrc', defaults, '-f', torrc, 'DataDirectory', tor_data]
cmd += self.geoip(tor)
while self.running: while self.running:
self.p = subprocess.Popen(cmd, stdout=subprocess.PIPE, bufsize=1, self.p = subprocess.Popen(cmd, stdout=subprocess.PIPE, bufsize=1,
universal_newlines=True, start_new_session=True, env=env) universal_newlines=True, start_new_session=True, env=env)
@ -87,6 +90,17 @@ DirReqStatistics 0
time.sleep(0.5) time.sleep(0.5)
self.p = None self.p = None
def geoip(self, tor):
geo = []
tordir = os.path.dirname(os.path.dirname(tor))
gepipfile = os.path.join(tordir, 'Data', 'Tor', 'geoip')
gepipv6file = os.path.join(tordir, 'Data', 'Tor', 'geoip6')
if os.path.exists(gepipfile):
geo += ['GeoIPFile', gepipfile]
if os.path.exists(gepipv6file):
geo += ['GeoIPv6File', gepipv6file]
return geo
def kill(self): def kill(self):
self.running = False self.running = False
if self.p: if self.p: