b.liu | e958203 | 2025-04-17 19:18:16 +0800 | [diff] [blame^] | 1 | #!/bin/sh /etc/rc.common |
| 2 | # Copyright © 2012 OpenWrt.org |
| 3 | # |
| 4 | # This is free software, licensed under the GNU General Public License v2. |
| 5 | # See /LICENSE for more information. |
| 6 | # |
| 7 | START=87 |
| 8 | STOP=23 |
| 9 | USE_PROCD=1 |
| 10 | |
| 11 | DEFAULT=/etc/default/nut |
| 12 | UPSCGI_C=/var/etc/nut/hosts.conf |
| 13 | UPSCGI_S=/var/etc/nut/upsset.conf |
| 14 | |
| 15 | nut_upscgi_upsset() { |
| 16 | local cfg="$1" |
| 17 | local enable |
| 18 | |
| 19 | config_get_bool enable "$cfg" enable 0 |
| 20 | |
| 21 | if [ "$enable" -eq 1 ]; then |
| 22 | ln -sf /etc/nut/upsset.conf.enable "$UPSCGI_S" |
| 23 | else |
| 24 | ln -sf /etc/nut/upsset.conf.disable "$UPSCGI_S" |
| 25 | fi |
| 26 | } |
| 27 | |
| 28 | nut_upscgi_add() { |
| 29 | local cfg="$1" |
| 30 | local upsname |
| 31 | local hostname |
| 32 | local port |
| 33 | local displayname |
| 34 | |
| 35 | config_get upsname "$cfg" upsname |
| 36 | config_get hostname "$cfg" hostname localhost |
| 37 | config_get port "$cfg" port |
| 38 | config_get pass "$cfg" password |
| 39 | system="$upsname@$hostname" |
| 40 | if [ -n "$port" ]; then |
| 41 | system="$system:$port"; |
| 42 | fi |
| 43 | config_get displayname "$cfg" displayname |
| 44 | echo "MONITOR $system \"$displayname\"" >> "$UPSCGI_C" |
| 45 | } |
| 46 | |
| 47 | service_reload() { |
| 48 | mkdir -m 0755 -p "$(dirname "$UPSCGI_C")" |
| 49 | rm -f "$UPSCGI_C" |
| 50 | rm -f "$UPSCGI_S" |
| 51 | |
| 52 | config_load nut_cgi |
| 53 | |
| 54 | config_foreach nut_upscgi_add host |
| 55 | config_foreach nut_upscgi_upsset upsset |
| 56 | |
| 57 | [ -s "$UPSCGI_C" ] && chmod 640 "$UPSCGI_C" |
| 58 | } |
| 59 | |
| 60 | start_service() { |
| 61 | service_reload |
| 62 | } |
| 63 | |
| 64 | reload_service() { |
| 65 | service_reload |
| 66 | } |
| 67 | |
| 68 | stop_service() { |
| 69 | rm -f "$UPSCGI_C" |
| 70 | rm -f "$UPSCGI_S" |
| 71 | ln -sf /etc/nut/upsset.conf.disable "$UPSCGI_S" |
| 72 | } |
| 73 | |
| 74 | service_triggers() { |
| 75 | procd_add_reload_trigger "nut_cgi" |
| 76 | } |