mirror of
https://github.com/Telecominfraproject/ols-ucentral-schema.git
synced 2025-10-29 09:12:20 +00:00
schema: add start/stop to services
Signed-off-by: John Crispin <john@phrozen.org>
This commit is contained in:
@@ -304,6 +304,12 @@ let ipcalc = {
|
||||
};
|
||||
|
||||
let services = {
|
||||
state: {},
|
||||
|
||||
set_enabled: function(name, state) {
|
||||
this.state[name] = b(state);
|
||||
},
|
||||
|
||||
lookup_interfaces: function(service) {
|
||||
let interfaces = [];
|
||||
|
||||
@@ -379,5 +385,9 @@ return {
|
||||
warn: (fmt, ...args) => push(logs, sprintf("[W] (In %s) ", location || '/') + sprintf(fmt, ...args)),
|
||||
info: (fmt, ...args) => push(logs, sprintf("[!] (In %s) ", location || '/') + sprintf(fmt, ...args))
|
||||
});
|
||||
},
|
||||
|
||||
services_state: function() {
|
||||
return services.state;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -1,6 +1,10 @@
|
||||
{% let interfaces = services.lookup_interfaces("dhcp-snooping") %}
|
||||
{% let enable = length(interfaces) %}
|
||||
{% services.set_enabled("dhcpsnoop", enable) %}
|
||||
{% if (!enable) return %}
|
||||
|
||||
# DHCP Snooping configuration
|
||||
|
||||
set event.dhcp=event
|
||||
set event.dhcp.type=dhcp
|
||||
set event.dhcp.filter='*'
|
||||
@@ -8,8 +12,8 @@ set event.dhcp.filter='*'
|
||||
{{ n ? 'add_list' : 'set' }} event.dhcp.filter={{ filter }}
|
||||
{% endfor %}
|
||||
|
||||
set dhcpsnooping.@snooping[-1].enable=1
|
||||
set dhcpsnoop.@snooping[-1].enable=1
|
||||
{% for (let interface in interfaces): %}
|
||||
{% let name = ethernet.calculate_name(interface) %}
|
||||
add_list dhcpsnooping.@snooping[-1].network={{ s(name) }}
|
||||
add_list dhcpsnoop.@snooping[-1].network={{ s(name) }}
|
||||
{% endfor %}
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
{% if (!health) return %}
|
||||
|
||||
# Health configuration
|
||||
set ustats.health.interval={{ health.interval }}
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
{% if (!statistics) return %}
|
||||
|
||||
# Statistics configuration
|
||||
set ustats.stats.interval={{ statistics.interval }}
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
{% if (!wifi_frames) return %}
|
||||
|
||||
# Wifi-frame reporting configuration
|
||||
set event.wifi=event
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
{% let interfaces = services.lookup_interfaces("http") %}
|
||||
{% if (length(interfaces)): %}
|
||||
{% let enable = length(interfaces) %}
|
||||
{% services.set_enabled("uhttpd", enable) %}
|
||||
{% if (!enable) return %}
|
||||
|
||||
# HTTP service configuration
|
||||
|
||||
add uhttpd uhttpd
|
||||
@@ -18,9 +21,9 @@ set uhttpd.@uhttpd[-1].http_keepalive='20'
|
||||
set uhttpd.@uhttpd[-1].tcp_keepalive='1'
|
||||
set uhttpd.@uhttpd[-1].ubus_prefix='/ubus'
|
||||
add_list uhttpd.@uhttpd[-1].listen_http='0.0.0.0:{{ http.http_port }}'
|
||||
{% let interfaces = services.lookup_interfaces("http") %}
|
||||
{% for (let interface in interfaces): %}
|
||||
{% let name = ethernet.calculate_name(interface) %}
|
||||
{% let interfaces = services.lookup_interfaces("http") %}
|
||||
{% for (let interface in interfaces): %}
|
||||
{% let name = ethernet.calculate_name(interface) %}
|
||||
|
||||
add firewall rule
|
||||
set firewall.@rule[-1].name='Allow-http-{{ name }}'
|
||||
@@ -28,5 +31,4 @@ set firewall.@rule[-1].src='{{ name }}'
|
||||
set firewall.@rule[-1].port='{{ http.http_port }}'
|
||||
set firewall.@rule[-1].proto='tcp'
|
||||
set firewall.@rule[-1].target='ACCEPT'
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
|
||||
@@ -1,7 +1,10 @@
|
||||
{% let interfaces = services.lookup_interfaces("ieee8021x") %}
|
||||
{% let enable = length(interfaces) %}
|
||||
{% services.set_enabled("ieee8021x", enable) %}
|
||||
{% if (!enable) return %}
|
||||
|
||||
# IEEE8021x service configuration
|
||||
|
||||
{% let interfaces = services.lookup_interfaces("ieee8021x") %}
|
||||
{% for (let interface in interfaces): %}
|
||||
{% let name = ethernet.calculate_name(interface) %}
|
||||
add ieee8021x network
|
||||
|
||||
@@ -1,11 +1,14 @@
|
||||
{% let interfaces = services.lookup_interfaces("igmp") %}
|
||||
{% let enable = length(interfaces) %}
|
||||
{% services.set_enabled("igmpproxy", enable) %}
|
||||
{% if (!enable) return %}
|
||||
|
||||
# IGMP service configuration
|
||||
|
||||
{% if (igmp.enable): %}
|
||||
{% let interfaces = services.lookup_interfaces("igmp") %}
|
||||
{% for (let interface in interfaces): %}
|
||||
{% if (!interface.ipv4) continue; %}
|
||||
{% let name = ethernet.calculate_name(interface) %}
|
||||
{% let interfaces = services.lookup_interfaces("igmp") %}
|
||||
{% for (let interface in interfaces): %}
|
||||
{% if (!interface.ipv4) continue; %}
|
||||
{% let name = ethernet.calculate_name(interface) %}
|
||||
add igmpproxy phyint
|
||||
set igmpproxy.@phyint[-1].network={{ name }}
|
||||
set igmpproxy.@phyint[-1].zone={{ s((interface.role == "usptream") ? "wan" : name) }}
|
||||
@@ -13,5 +16,4 @@ set igmpproxy.@phyint[-1].direction={{ s(interface.role) }}
|
||||
{% if (interface.role == "upstream"): %}
|
||||
set igmpproxy.@phyint[-1].altnet='0.0.0.0/0'
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
|
||||
@@ -1,10 +1,13 @@
|
||||
{% let interfaces = services.lookup_interfaces("lldp") %}
|
||||
{% let enable = length(interfaces) %}
|
||||
{% services.set_enabled("lldpd", enable) %}
|
||||
{% if (!enable) return %}
|
||||
|
||||
# LLDP service configuration
|
||||
|
||||
set lldpd.config.enable=1
|
||||
set lldpd.config.description={{ s(lldp.describe) }}
|
||||
set lldpd.config.lldp_location={{ s(lldp.location) }}
|
||||
{% let interfaces = services.lookup_interfaces("lldp") %}
|
||||
{% for (let interface in interfaces): %}
|
||||
{% for (let port in ethernet.lookup_by_interface_spec(interface)): %}
|
||||
add_list lldpd.config.interface={{ s(port) }}
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
{% if (!length(log)) return %}
|
||||
|
||||
# Syslog service configuration
|
||||
|
||||
|
||||
@@ -1,5 +1,13 @@
|
||||
{% let interfaces = services.lookup_interfaces("mdns") %}
|
||||
{% let enable = length(interfaces) %}
|
||||
{% services.set_enabled("umdns", enable) %}
|
||||
{% if (!enable) return %}
|
||||
|
||||
|
||||
# MDNS service configuration
|
||||
|
||||
delete umdns.@umdns[-1].network
|
||||
set umdns.@umdns[-1].enable={{ b(mdns.enable) }}
|
||||
add umdns umdns
|
||||
set umdns.@umdns[-1].enable=1
|
||||
{% for (let interface in interfaces): %}
|
||||
add_list umdns.@umdns[-1].network={{ s(interface) }}
|
||||
{% endfor %}
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
{% if (!length(ntp)) return %}
|
||||
|
||||
# NTP service configuration
|
||||
|
||||
|
||||
@@ -1,7 +1,10 @@
|
||||
{% let enable = length(radius_proxy) %}
|
||||
{% services.set_enabled("radsecproxy", enable) %}
|
||||
{% if (!enable) return %}
|
||||
{%
|
||||
if (!radius_proxy.host || !radius_proxy.port || !radius_proxy.secret) {
|
||||
warn("Can't start radius-proxy due to missing settings.");
|
||||
|
||||
services.set_enabled("radsecproxy", false);
|
||||
return;
|
||||
}
|
||||
%}
|
||||
@@ -20,7 +23,7 @@ add radsecproxy tls
|
||||
set radsecproxy.@tls[-1].name='tls'
|
||||
set radsecproxy.@tls[-1].CACertificateFile='/etc/ucentral/cas.pem'
|
||||
set radsecproxy.@tls[-1].certificateFile='/etc/ucentral/cert.pem'
|
||||
set radsecproxy.@tls[-1].certificateKeyFile='/etc/ucentral/cert.key'
|
||||
set radsecproxy.@tls[-1].certificateKeyFile='/etc/ucentral/key.pem'
|
||||
set radsecproxy.@tls[-1].certificateKeyPassword=''
|
||||
|
||||
add radsecproxy server
|
||||
|
||||
@@ -1,3 +1,6 @@
|
||||
{% let enable = length(rtty) %}
|
||||
{% services.set_enabled("rtty", enable) %}
|
||||
{% if (!enable) return %}
|
||||
|
||||
# RTTY service configuration
|
||||
|
||||
|
||||
@@ -1,3 +1,7 @@
|
||||
{% let interfaces = services.lookup_interfaces("ssh") %}
|
||||
{% let enable = length(interfaces) %}
|
||||
{% services.set_enabled("dropbear", enable) %}
|
||||
{% if (!enable) return %}
|
||||
|
||||
# SSH service configuration
|
||||
|
||||
@@ -8,7 +12,6 @@ set dropbear.@dropbear[-1].PasswordAuth={{ b(ssh.password_authentication) }}
|
||||
add_list dropbear.@dropbear[-1].pubkey={{ s(key) }}
|
||||
{% endfor %}
|
||||
|
||||
{% let interfaces = services.lookup_interfaces("ssh") %}
|
||||
{% for (let interface in interfaces): %}
|
||||
{% let name = ethernet.calculate_name(interface) %}
|
||||
|
||||
|
||||
@@ -1,8 +1,11 @@
|
||||
{% let ssids = services.lookup_ssids("wifi-steering") %}
|
||||
add usteer usteer
|
||||
{% if (wifi_steering.mode == 'local' && length(ssids)): %}
|
||||
{% let enable = (wifi_steering.mode == 'local' && length(ssids)) %}
|
||||
{% services.set_enabled("usteer", enable) %}
|
||||
{% if (!enable) return %}
|
||||
|
||||
# Wifi-Steering service configuration
|
||||
|
||||
add usteer usteer
|
||||
set usteer.@usteer[-1].network='up'
|
||||
set usteer.@usteer[-1].key={{ s(wifi_steering.key) }}
|
||||
set usteer.@usteer[-1].assoc_steering={{ b(wifi_steering.assoc_steering) }}
|
||||
@@ -11,10 +14,6 @@ set usteer.@usteer[-1].min_connect_snr={{ wifi_steering.required_probe_snr }}
|
||||
set usteer.@usteer[-1].roam_scan_snr={{ wifi_steering.required_roam_snr }}
|
||||
set usteer.@usteer[-1].load_kick_enabled={{ b(wifi_steering.load_kick_threshold) }}
|
||||
set usteer.@usteer[-1].load_kick_threshold={{ wifi_steering.load_kick_threshold }}
|
||||
{% let ssids = services.lookup_ssids("wifi-steering") %}
|
||||
{% for (let ssid in ssids): %}
|
||||
{% for (let ssid in ssids): %}
|
||||
add_list usteer.@usteer[-1].ssid_list={{ ssid.name }}
|
||||
{% endfor %}
|
||||
{% else %}
|
||||
set usteer.@usteer[-1].enabled=0
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
|
||||
@@ -16,6 +16,15 @@ let error = 0;
|
||||
inputfile.close();
|
||||
let logs = [];
|
||||
|
||||
function set_service_state(state) {
|
||||
for (let service, enable in renderer.services_state()) {
|
||||
if (enable != state)
|
||||
continue;
|
||||
printf("%s %s\n", service, enable ? "starting" : "stopping");
|
||||
system(sprintf("/etc/init.d/%s %s", service, enable ? "start" : "stop"));
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
let state = schemareader.validate(inputjson, logs);
|
||||
|
||||
@@ -38,6 +47,8 @@ try {
|
||||
apply.write(batch);
|
||||
apply.close();
|
||||
|
||||
set_service_state(false);
|
||||
|
||||
for (let cmd in [ 'uci -c /tmp/config-shadow commit',
|
||||
'cp /tmp/config-shadow/* /etc/config/',
|
||||
'rm -rf /tmp/config-shadow',
|
||||
@@ -46,6 +57,9 @@ try {
|
||||
|
||||
fs.unlink('/etc/ucentral/ucentral.active');
|
||||
fs.symlink(ARGV[2], '/etc/ucentral/ucentral.active');
|
||||
|
||||
set_service_state(true);
|
||||
|
||||
} else {
|
||||
error = 1;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user