mirror of
https://github.com/freedombox/FreedomBox.git
synced 2026-06-10 11:00:22 +00:00
tor: Move restart logic into plinth module
This commit is contained in:
parent
6430ebbc71
commit
165e880329
62
actions/tor
62
actions/tor
@ -101,7 +101,7 @@ def subcommand_setup(_):
|
||||
aug.set(TOR_CONFIG + '/SocksPort[1]', '[::]:9050')
|
||||
aug.set(TOR_CONFIG + '/SocksPort[2]', '0.0.0.0:9050')
|
||||
aug.set(TOR_CONFIG + '/ControlPort', '9051')
|
||||
_enable_relay(relay='enable', bridge='enable', restart=False, aug=aug)
|
||||
_enable_relay(relay='enable', bridge='enable', aug=aug)
|
||||
aug.set(TOR_CONFIG + '/ExitPolicy[1]', 'reject *:*')
|
||||
aug.set(TOR_CONFIG + '/ExitPolicy[2]', 'reject6 *:*')
|
||||
|
||||
@ -149,21 +149,14 @@ def subcommand_configure(arguments):
|
||||
if arguments.service == 'disable':
|
||||
_disable()
|
||||
|
||||
restart = arguments.service is None and \
|
||||
arguments.hidden_service is None and \
|
||||
arguments.relay is None and arguments.bridge_relay is None
|
||||
_use_upstream_bridges(arguments.use_upstream_bridges, restart=restart,
|
||||
aug=aug)
|
||||
_use_upstream_bridges(arguments.use_upstream_bridges, aug=aug)
|
||||
|
||||
restart = arguments.service is None and arguments.hidden_service is None
|
||||
_enable_relay(arguments.relay, arguments.bridge_relay, restart=restart,
|
||||
aug=aug)
|
||||
_enable_relay(arguments.relay, arguments.bridge_relay, aug=aug)
|
||||
|
||||
restart = arguments.service is None
|
||||
if arguments.hidden_service == 'enable':
|
||||
_enable_hs(restart=restart, aug=aug)
|
||||
_enable_hs(aug=aug)
|
||||
elif arguments.hidden_service == 'disable':
|
||||
_disable_hs(restart=restart, aug=aug)
|
||||
_disable_hs(aug=aug)
|
||||
|
||||
if arguments.service == 'enable':
|
||||
_enable()
|
||||
@ -191,7 +184,17 @@ def subcommand_set_upstream_bridges(arguments):
|
||||
def subcommand_restart(_):
|
||||
"""Restart Tor."""
|
||||
if is_enabled() and is_running():
|
||||
action_utils.service_restart('tor')
|
||||
action_utils.service_restart('tor@plinth')
|
||||
|
||||
aug = augeas_load()
|
||||
if aug.get(TOR_CONFIG + '/HiddenServiceDir'):
|
||||
# wait until hidden service information is available
|
||||
tries = 0
|
||||
while not _get_hidden_service()['enabled']:
|
||||
tries += 1
|
||||
if tries >= 12:
|
||||
return
|
||||
time.sleep(10)
|
||||
|
||||
|
||||
def get_status():
|
||||
@ -316,7 +319,7 @@ def _disable():
|
||||
action_utils.service_disable('tor@plinth')
|
||||
|
||||
|
||||
def _use_upstream_bridges(use_upstream_bridges=None, restart=True, aug=None):
|
||||
def _use_upstream_bridges(use_upstream_bridges=None, aug=None):
|
||||
"""Enable use of upstream bridges."""
|
||||
if use_upstream_bridges is None:
|
||||
return
|
||||
@ -331,12 +334,8 @@ def _use_upstream_bridges(use_upstream_bridges=None, restart=True, aug=None):
|
||||
|
||||
aug.save()
|
||||
|
||||
if restart:
|
||||
if is_enabled() and is_running():
|
||||
action_utils.service_restart('tor')
|
||||
|
||||
|
||||
def _enable_relay(relay=None, bridge=None, restart=True, aug=None):
|
||||
def _enable_relay(relay=None, bridge=None, aug=None):
|
||||
"""Enable Tor bridge relay."""
|
||||
if relay is None and bridge is None:
|
||||
return
|
||||
@ -361,12 +360,8 @@ def _enable_relay(relay=None, bridge=None, restart=True, aug=None):
|
||||
|
||||
aug.save()
|
||||
|
||||
if restart:
|
||||
if is_enabled() and is_running():
|
||||
action_utils.service_restart('tor@plinth')
|
||||
|
||||
|
||||
def _enable_hs(restart=True, aug=None):
|
||||
def _enable_hs(aug=None):
|
||||
"""Enable Tor hidden service"""
|
||||
if not aug:
|
||||
aug = augeas_load()
|
||||
@ -384,21 +379,8 @@ def _enable_hs(restart=True, aug=None):
|
||||
'443 127.0.0.1:443')
|
||||
aug.save()
|
||||
|
||||
if restart:
|
||||
if is_enabled() and is_running():
|
||||
action_utils.service_restart('tor@plinth')
|
||||
|
||||
# wait until hidden service information is available
|
||||
tries = 0
|
||||
while not _get_hidden_service()['enabled']:
|
||||
tries += 1
|
||||
if tries >= 12:
|
||||
return
|
||||
|
||||
time.sleep(10)
|
||||
|
||||
|
||||
def _disable_hs(restart=True, aug=None):
|
||||
def _disable_hs(aug=None):
|
||||
"""Disable Tor hidden service"""
|
||||
if not aug:
|
||||
aug = augeas_load()
|
||||
@ -410,10 +392,6 @@ def _disable_hs(restart=True, aug=None):
|
||||
aug.remove(TOR_CONFIG + '/HiddenServicePort')
|
||||
aug.save()
|
||||
|
||||
if restart:
|
||||
if is_enabled() and is_running():
|
||||
action_utils.service_restart('tor@plinth')
|
||||
|
||||
|
||||
def _enable_apt_transport_tor():
|
||||
"""Enable package download over Tor."""
|
||||
|
||||
@ -85,13 +85,10 @@ def __apply_changes(request, old_status, new_status):
|
||||
|
||||
arguments = []
|
||||
|
||||
if old_status['enabled'] != new_status['enabled']:
|
||||
arg_value = 'enable' if new_status['enabled'] else 'disable'
|
||||
arguments.extend(['--service', arg_value])
|
||||
|
||||
if old_status['relay_enabled'] != new_status['relay_enabled']:
|
||||
arg_value = 'enable' if new_status['relay_enabled'] else 'disable'
|
||||
arguments.extend(['--relay', arg_value])
|
||||
needs_restart = True
|
||||
|
||||
if old_status['bridge_relay_enabled'] != \
|
||||
new_status['bridge_relay_enabled']:
|
||||
@ -99,10 +96,12 @@ def __apply_changes(request, old_status, new_status):
|
||||
if not new_status['bridge_relay_enabled']:
|
||||
arg_value = 'disable'
|
||||
arguments.extend(['--bridge-relay', arg_value])
|
||||
needs_restart = True
|
||||
|
||||
if old_status['hs_enabled'] != new_status['hs_enabled']:
|
||||
arg_value = 'enable' if new_status['hs_enabled'] else 'disable'
|
||||
arguments.extend(['--hidden-service', arg_value])
|
||||
needs_restart = True
|
||||
|
||||
if old_status['apt_transport_tor_enabled'] != \
|
||||
new_status['apt_transport_tor_enabled']:
|
||||
@ -117,16 +116,20 @@ def __apply_changes(request, old_status, new_status):
|
||||
if new_status['enabled'] and new_status['use_upstream_bridges']:
|
||||
arg_value = 'enable'
|
||||
arguments.extend(['--use-upstream-bridges', arg_value])
|
||||
needs_restart = True
|
||||
|
||||
if old_status['enabled'] != new_status['enabled']:
|
||||
arg_value = 'enable' if new_status['enabled'] else 'disable'
|
||||
arguments.extend(['--service', arg_value])
|
||||
needs_restart = False
|
||||
|
||||
if arguments:
|
||||
config_process = actions.superuser_run(
|
||||
'tor', ['configure'] + arguments, async=True)
|
||||
actions.superuser_run('tor', ['configure'] + arguments)
|
||||
|
||||
if needs_restart and new_status['enabled']:
|
||||
config_process = actions.superuser_run('tor', ['restart'], async=True)
|
||||
else:
|
||||
if needs_restart:
|
||||
config_process = actions.superuser_run(
|
||||
'tor', ['restart'], async=True)
|
||||
else:
|
||||
messages.info(request, _('Setting unchanged'))
|
||||
messages.info(request, _('Setting unchanged'))
|
||||
|
||||
|
||||
def _collect_config_result(request):
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user