prometheus-node-exporter-lua: use uhttpd-mod-lua
[feed/packages.git] / utils / prometheus-node-exporter-lua / files / etc / init.d / prometheus-node-exporter-lua
index fc8a0b2e66bed6110ee5e344890b440777bce86b..57440d5efa6b0434d6420a89532b4bd3fb7f5980 100644 (file)
@@ -4,16 +4,53 @@
 START=60
 USE_PROCD=1
 
+_log() {
+       logger -p daemon.info -t prometheus-node-exporter-lua "$@"
+}
+
 start_service() {
-       procd_open_instance
+       . /lib/functions/network.sh
+
+       local interface port bind
 
        config_load prometheus-node-exporter-lua.main
-       config_get bind "main" listen_address ::1
+       config_get keepalive "main" http_keepalive 70
+       config_get interface "main" listen_interface "loopback"
        config_get port "main" listen_port 9100
 
-       procd_set_param command /usr/bin/prometheus-node-exporter-lua
-       procd_append_param command --port ${port}
-       procd_append_param command --bind ${bind}
+       procd_open_instance
+
+       procd_set_param command /usr/sbin/uhttpd -f -c /dev/null -l / -L /usr/bin/prometheus-node-exporter-lua
+       [ $keepalive -gt 0 ] && procd_append_param command -k $keepalive
+
+       if [ "$interface" = "*" ]; then
+               procd_append_param command -p $port
+       else
+               network_is_up "$interface" || {
+                       _log "defering start until listen interface $interface becomes ready"
+                       return 0
+               }
+               network_get_ipaddr6 bind "$interface"
+               [ -n "$bind" ] && procd_append_param command -p [$bind]:$port
+               network_get_ipaddr bind "$interface"
+               [ -n "$bind" ] && procd_append_param command -p $bind:$port
+       fi
+
+       procd_set_param stdout 1
+       procd_set_param stderr 1
+       procd_set_param respawn
 
        procd_close_instance
 }
+
+service_triggers()
+{
+       local interface
+
+       procd_add_reload_trigger "prometheus-node-exporter-lua"
+
+       config_load prometheus-node-exporter-lua.main
+       config_get interface "main" listen_interface "loopback"
+
+       [ "$interface" = "*" ] || procd_add_reload_interface_trigger "$interface"
+}