mirror of
https://github.com/onionshare/onionshare.git
synced 2025-08-03 20:04:14 -04:00
Merge branch 'master' of github.com:micahflee/onionshare
This commit is contained in:
commit
e7a9cd3d14
1 changed files with 14 additions and 58 deletions
|
@ -107,26 +107,18 @@ class HS(object):
|
||||||
if not os.access(path, os.W_OK):
|
if not os.access(path, os.W_OK):
|
||||||
raise HSDirError(strings._("error_hs_dir_not_writable").format(path))
|
raise HSDirError(strings._("error_hs_dir_not_writable").format(path))
|
||||||
|
|
||||||
hidserv_dir = tempfile.mkdtemp(dir=path)
|
self.hidserv_dir = tempfile.mkdtemp(dir=path)
|
||||||
self.cleanup_filenames.append(hidserv_dir)
|
self.cleanup_filenames.append(self.hidserv_dir)
|
||||||
|
|
||||||
# set up hidden service
|
# set up hidden service
|
||||||
hsdic = self.c.get_conf_map('HiddenServiceOptions') or {
|
hs_conf = self.c.get_hidden_service_conf()
|
||||||
'HiddenServiceDir': [], 'HiddenServicePort': []
|
if self.hidserv_dir in hs_conf:
|
||||||
}
|
del hs_conf[self.hidserv_dir]
|
||||||
if hidserv_dir in hsdic.get('HiddenServiceDir', []):
|
hs_conf[self.hidserv_dir] = {'HiddenServicePort': [(80, '127.0.0.1', port)]}
|
||||||
# Maybe a stale service with the wrong local port
|
self.c.set_hidden_service_conf(hs_conf)
|
||||||
dropme = hsdic['HiddenServiceDir'].index(hidserv_dir)
|
|
||||||
del hsdic['HiddenServiceDir'][dropme]
|
|
||||||
del hsdic['HiddenServicePort'][dropme]
|
|
||||||
hsdic['HiddenServiceDir'] = hsdic.get('HiddenServiceDir', [])+[hidserv_dir]
|
|
||||||
hsdic['HiddenServicePort'] = hsdic.get('HiddenServicePort', [])+[
|
|
||||||
'80 127.0.0.1:{0:d}'.format(port)]
|
|
||||||
|
|
||||||
self.c.set_options(self._hsdic2list(hsdic))
|
|
||||||
|
|
||||||
# figure out the .onion hostname
|
# figure out the .onion hostname
|
||||||
hostname_file = '{0:s}/hostname'.format(hidserv_dir)
|
hostname_file = '{0:s}/hostname'.format(self.hidserv_dir)
|
||||||
onion_host = open(hostname_file, 'r').read().strip()
|
onion_host = open(hostname_file, 'r').read().strip()
|
||||||
return onion_host
|
return onion_host
|
||||||
|
|
||||||
|
@ -193,19 +185,14 @@ class HS(object):
|
||||||
else:
|
else:
|
||||||
# cleanup hidden service
|
# cleanup hidden service
|
||||||
try:
|
try:
|
||||||
if self.controller:
|
if self.c:
|
||||||
# Get fresh hidden services (maybe changed since last time)
|
# Get fresh hidden services (maybe changed since last time)
|
||||||
# and remove ourselves
|
# and remove ourselves
|
||||||
hsdic = self.controller.get_conf_map('HiddenServiceOptions') or {
|
hs_conf = self.c.get_hidden_service_conf()
|
||||||
'HiddenServiceDir': [], 'HiddenServicePort': []
|
if self.hidserv_dir in hs_conf:
|
||||||
}
|
del hs_conf[self.hidserv_dir]
|
||||||
if self.hidserv_dir and self.hidserv_dir in hsdic.get('HiddenServiceDir', []):
|
self.c.set_hidden_service_conf(hs_conf)
|
||||||
dropme = hsdic['HiddenServiceDir'].index(self.hidserv_dir)
|
self.c.close()
|
||||||
del hsdic['HiddenServiceDir'][dropme]
|
|
||||||
del hsdic['HiddenServicePort'][dropme]
|
|
||||||
self.controller.set_options(self._hsdic2list(hsdic))
|
|
||||||
# Politely close the controller
|
|
||||||
self.controller.close()
|
|
||||||
except:
|
except:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
@ -216,34 +203,3 @@ class HS(object):
|
||||||
elif os.path.isdir(filename):
|
elif os.path.isdir(filename):
|
||||||
shutil.rmtree(filename)
|
shutil.rmtree(filename)
|
||||||
self.cleanup_filenames = []
|
self.cleanup_filenames = []
|
||||||
|
|
||||||
def _hsdic2list(self, dic):
|
|
||||||
"""
|
|
||||||
Convert what we get from get_conf_map to what we need for set_options.
|
|
||||||
|
|
||||||
For example, if input looks like this:
|
|
||||||
{
|
|
||||||
'HiddenServicePort': [
|
|
||||||
'80 127.0.0.1:47906',
|
|
||||||
'80 127.0.0.1:33302'
|
|
||||||
],
|
|
||||||
'HiddenServiceDir': [
|
|
||||||
'/tmp/onionshare/tmplTfZZu',
|
|
||||||
'/tmp/onionshare/tmpchDai3'
|
|
||||||
]
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
Output will look like this:
|
|
||||||
[
|
|
||||||
('HiddenServiceDir', '/tmp/onionshare/tmplTfZZu'),
|
|
||||||
('HiddenServicePort', '80 127.0.0.1:47906'),
|
|
||||||
('HiddenServiceDir', '/tmp/onionshare/tmpchDai3'),
|
|
||||||
('HiddenServicePort', '80 127.0.0.1:33302')
|
|
||||||
]
|
|
||||||
"""
|
|
||||||
l = []
|
|
||||||
for i in range(len(dic['HiddenServiceDir'])):
|
|
||||||
l.append(('HiddenServiceDir', dic['HiddenServiceDir'][i]))
|
|
||||||
l.append(('HiddenServicePort', dic['HiddenServicePort'][i]))
|
|
||||||
return l
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue