diff options
-rw-r--r-- | interface-definitions/beep-on-boot.xml.in | 21 | ||||
-rw-r--r-- | interface-definitions/system-options.xml.in | 8 | ||||
-rwxr-xr-x | src/conf_mode/beep_if_fully_booted.py | 42 | ||||
-rwxr-xr-x | src/conf_mode/snmp.py | 28 | ||||
-rwxr-xr-x | src/conf_mode/system-options.py | 10 | ||||
-rw-r--r-- | src/systemd/vyos-beep.service | 11 |
6 files changed, 43 insertions, 77 deletions
diff --git a/interface-definitions/beep-on-boot.xml.in b/interface-definitions/beep-on-boot.xml.in deleted file mode 100644 index 0da7d0de4..000000000 --- a/interface-definitions/beep-on-boot.xml.in +++ /dev/null @@ -1,21 +0,0 @@ -<?xml version="1.0"?> - -<!-- beep once the login target has been reached --> - -<interfaceDefinition> - <node name="system"> - <children> - <node name="options"> - <children> - <leafNode name="beep-if-fully-booted" owner="${vyos_conf_scripts_dir}/beep_if_fully_booted.py"> - <properties> - <help>plays sound via system speaker when you can login</help> - <valueless/> - <priority>9999</priority> - </properties> - </leafNode> - </children> - </node> - </children> - </node> -</interfaceDefinition> diff --git a/interface-definitions/system-options.xml.in b/interface-definitions/system-options.xml.in index 5fa0635bd..48bc353ab 100644 --- a/interface-definitions/system-options.xml.in +++ b/interface-definitions/system-options.xml.in @@ -5,9 +5,15 @@ <node name="options" owner="${vyos_conf_scripts_dir}/system-options.py"> <properties> <help>System Options</help> - <priority>400</priority> + <priority>9999</priority> </properties> <children> + <leafNode name="beep-if-fully-booted"> + <properties> + <help>plays sound via system speaker when you can login</help> + <valueless/> + </properties> + </leafNode> <leafNode name="ctrl-alt-del-action"> <properties> <help>Ctrl-Alt-Delete action</help> diff --git a/src/conf_mode/beep_if_fully_booted.py b/src/conf_mode/beep_if_fully_booted.py deleted file mode 100755 index f00fcabd0..000000000 --- a/src/conf_mode/beep_if_fully_booted.py +++ /dev/null @@ -1,42 +0,0 @@ -#!/usr/bin/env python3 -# -# Copyright (C) 2018 VyOS maintainers and contributors -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License version 2 or later as -# published by the Free Software Foundation. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. -# -# - -import sys -import os - -from vyos.config import Config -from vyos import ConfigError - -def get_config(): - conf = Config() - if not conf.exists('system options beep-if-fully-booted'): - return None - - return True - -def apply(status): - if status is not None: - os.system('/usr/bin/beep -f 130 -l 100 -n -f 262 -l 100 -n -f 330 -l 100 -n -f 392 -l 100 -n -f 523 -l 100 -n -f 660 -l 100 -n -f 784 -l 300 -n -f 660 -l 300') - -if __name__ == '__main__': - try: - c = get_config() - apply(c) - except ConfigError as e: - print(e) - sys.exit(1) diff --git a/src/conf_mode/snmp.py b/src/conf_mode/snmp.py index 918c7f128..0ad229bed 100755 --- a/src/conf_mode/snmp.py +++ b/src/conf_mode/snmp.py @@ -31,12 +31,12 @@ from stat import S_IRWXU,S_IXGRP,S_IXOTH,S_IROTH,S_IRGRP from vyos.config import Config from vyos import ConfigError -config_file_client = r'/etc/snmp/snmp.conf' -config_file_daemon = r'/etc/snmp/snmpd.conf' -config_file_access = r'/usr/share/snmp/snmpd.conf' -config_file_user = r'/var/lib/snmp/snmpd.conf' -config_file_init = r'/etc/default/snmpd' -default_script_dir = r'/config/user-data/' +config_file_client = r'/etc/snmp/snmp.conf' +config_file_daemon = r'/etc/snmp/snmpd.conf' +config_file_access = r'/usr/share/snmp/snmpd.conf' +config_file_user = r'/var/lib/snmp/snmpd.conf' +config_file_systemd = r'/etc/systemd/system/snmpd.service.d/override.conf' +default_script_dir = r'/config/user-data/' # SNMP OIDs used to mark auth/priv type OIDs = { @@ -213,11 +213,10 @@ init_config_tmpl = """ ### Autogenerated by snmp.py ### # This file controls the activity of snmpd -# snmpd control (yes means start daemon). -SNMPDRUN=yes +[Service] +ExecStart= +ExecStart=/usr/sbin/snmpd -LS0-5d -Lf /dev/null -u Debian-snmp -g Debian-snmp -I -smux,mteTrigger,mteTriggerConf,ipCidrRouteTable,inetCidrRouteTable -f -p /run/snmpd.pid -# snmpd options (use syslog, close stdin/out/err). -SNMPDOPTS='-LSed -u snmp -g snmp -I -ipCidrRouteTable,inetCidrRouteTable -p /run/snmpd.pid' """ default_config_data = { @@ -708,10 +707,14 @@ def generate(snmp): with open(config_file_user, 'w') as f: f.write(config_text) - # Write init config file + # Write systemd override file + dir = os.path.dirname(config_file_systemd) + if not os.path.isdir(dir): + os.mkdir(dir, S_IRWXU|S_IRGRP|S_IXGRP|S_IROTH|S_IXOTH) + tmpl = jinja2.Template(init_config_tmpl) config_text = tmpl.render(snmp) - with open(config_file_init, 'w') as f: + with open(config_file_systemd, 'w') as f: f.write(config_text) return None @@ -745,6 +748,7 @@ def apply(snmp): os.symlink(nonvolatiledir, volatiledir) # start SNMP daemon + os.system("sudo systemctl daemon-reload") os.system("sudo systemctl restart snmpd.service") # Passwords are not available immediately in the configuration file, diff --git a/src/conf_mode/system-options.py b/src/conf_mode/system-options.py index 4c809d044..a893e98b3 100755 --- a/src/conf_mode/system-options.py +++ b/src/conf_mode/system-options.py @@ -24,6 +24,7 @@ from vyos import ConfigError systemd_ctrl_alt_del = '/lib/systemd/system/ctrl-alt-del.target' default_config_data = { + 'beep_if_fully_booted': False, 'ctrl_alt_del': 'ignore', 'reboot_on_panic': True } @@ -36,6 +37,7 @@ def get_config(): if conf.exists('ctrl-alt-del-action'): opt['ctrl_alt_del'] = conf.return_value('ctrl-alt-del-action') + opt['beep_if_fully_booted'] = conf.exists('beep-if-fully-booted') opt['reboot_on_panic'] = conf.exists('reboot-on-panic') return opt @@ -47,10 +49,16 @@ def generate(opt): pass def apply(opt): + # Beep action + if opt['beep_if_fully_booted']: + os.system('systemctl enable vyos-beep.service >/dev/null 2>&1') + else: + os.system('systemctl disable vyos-beep.service >/dev/null 2>&1') # Ctrl-Alt-Delete action if opt['ctrl_alt_del'] == 'ignore': - os.unlink('/lib/systemd/system/ctrl-alt-del.target') + if os.path.exists(systemd_ctrl_alt_del): + os.unlink('/lib/systemd/system/ctrl-alt-del.target') elif opt['ctrl_alt_del'] == 'reboot': if os.path.exists(systemd_ctrl_alt_del): diff --git a/src/systemd/vyos-beep.service b/src/systemd/vyos-beep.service new file mode 100644 index 000000000..78baa544c --- /dev/null +++ b/src/systemd/vyos-beep.service @@ -0,0 +1,11 @@ +[Unit] +Description=Beep after system start +DefaultDependencies=no +After=vyos.target + +[Service] +Type=oneshot +ExecStart=/usr/bin/beep -f 130 -l 100 -n -f 262 -l 100 -n -f 330 -l 100 -n -f 392 -l 100 -n -f 523 -l 100 -n -f 660 -l 100 -n -f 784 -l 300 -n -f 660 -l 300 + +[Install] +WantedBy=multi-user.target |