feature: vpn-config-edit set and remove take --restart, which applies the change with vpn-router-setup and waits for it.
Release / release (push) Successful in 25s

This commit is contained in:
slawek committed 2026-10-26 11:48:47 +01:00
1 parent 81b7f4cac6
commit cb33b3bfa1
4 files changed
+36 -10

No files matched your search

+19 -6
View File
@@ -9,18 +9,21 @@ number, true or false, a list of strings separated by commas (an empty value is
or a string. remove takes site_to_site.NAME and removes that connection. The configuration with
the change is checked as vpn-router-setup checks it, and only then written with
vpnrouter.save_config, holding vpnrouter.config_lock; vpn-router-setup applies it at its next
run, which set and remove remind of. A failure is a message on standard error; the exit status
is 2 for an invalid request and 1 for any other failure. -h or --help shows the options.
run, which set and remove remind of. With --restart they restart vpn-router-setup and wait until
it has applied the change. A failure is a message on standard error; the exit status is 2 for an
invalid request and 1 for any other failure, a failed run of vpn-router-setup included. -h or
--help shows the options.
vpn-config-edit show
vpn-config-edit set SECTION.OPTION VALUE
vpn-config-edit set site_to_site.NAME.OPTION VALUE
vpn-config-edit remove site_to_site.NAME
vpn-config-edit set [--restart] SECTION.OPTION VALUE
vpn-config-edit set [--restart] site_to_site.NAME.OPTION VALUE
vpn-config-edit remove [--restart] site_to_site.NAME
"""
import argparse
import copy
import json
import subprocess
import sys
sys.path.insert(0, '/usr/lib/vpn-router')
@@ -86,6 +89,9 @@ def main(argv):
setter.add_argument('value', metavar='VALUE', help='its value; a list separated by commas')
remover = commands.add_parser('remove', help='remove a site-to-site connection and write the configuration')
remover.add_argument('key', metavar='site_to_site.NAME', help='the connection')
for changer in (setter, remover):
changer.add_argument('--restart', action='store_true',
help='restart vpn-router-setup and wait until it has applied the change')
options = parser.parse_args(argv)
if options.command == 'show':
@@ -124,7 +130,14 @@ def main(argv):
print(f'{options.key} set to {json.dumps(value)} in {vpnrouter.CONFIG_FILE}.')
else:
print(f'{options.key} removed from {vpnrouter.CONFIG_FILE}.')
print('Apply it with: systemctl restart vpn-router-setup')
if not options.restart:
print('Apply it with: systemctl restart vpn-router-setup, or --restart')
return 0
print('Restarting vpn-router-setup...', flush=True)
if subprocess.run(['systemctl', 'restart', 'vpn-router-setup.service']).returncode != 0:
print('vpn-config-edit: vpn-router-setup failed; see journalctl -u vpn-router-setup', file=sys.stderr)
return 1
print('vpn-router-setup applied it.')
return 0
@@ -43,7 +43,7 @@ _vpn_config_edit()
done
if [[ $cur == -* ]]; then
COMPREPLY=($(compgen -W '--help' -- "$cur"))
COMPREPLY=($(compgen -W "--help$([[ $command == @(set|remove) ]] && echo ' --restart')" -- "$cur"))
return
fi