summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--interface-definitions/beep-on-boot.xml.in21
-rw-r--r--interface-definitions/system-options.xml.in8
-rwxr-xr-xsrc/conf_mode/beep_if_fully_booted.py42
-rwxr-xr-xsrc/conf_mode/snmp.py28
-rwxr-xr-xsrc/conf_mode/system-options.py10
-rw-r--r--src/systemd/vyos-beep.service11
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