mirror of
https://github.com/kiddin9/op-packages.git
synced 2026-10-27 01:52:51 +08:00
74 lines
2.1 KiB
Bash
Executable File
74 lines
2.1 KiB
Bash
Executable File
#!/bin/sh /etc/rc.common
|
|
# procd init script for meow-rs.
|
|
# Service settings live in /etc/config/meow (UCI); the proxy configuration
|
|
# itself is the regular meow YAML file (default /etc/meow/config.yaml).
|
|
|
|
USE_PROCD=1
|
|
START=95
|
|
STOP=10
|
|
|
|
PROG=/usr/bin/meow
|
|
GATEWAY=/usr/share/meow/gateway.sh
|
|
|
|
start_service() {
|
|
local enabled config_file work_dir panel_port secret tproxy controller
|
|
|
|
config_load meow
|
|
config_get_bool enabled main enabled 0
|
|
config_get config_file main config_file /etc/meow/config.yaml
|
|
config_get work_dir main work_dir /etc/meow
|
|
config_get panel_port main panel_port 9090
|
|
config_get secret main secret ''
|
|
config_get_bool tproxy tproxy enabled 0
|
|
|
|
[ "$enabled" -eq 1 ] || return 0
|
|
[ "$config_file" = /etc/meow/config.yaml ] && [ "$work_dir" = /etc/meow ] || {
|
|
logger -t meow 'managed service requires /etc/meow/config.yaml and work_dir /etc/meow'
|
|
return 1
|
|
}
|
|
|
|
if ! "$PROG" --no-external-plugins -d "$work_dir" -f "$config_file" -t >/dev/null 2>&1; then
|
|
logger -t meow "config test failed for $config_file, not starting"
|
|
return 1
|
|
fi
|
|
|
|
controller="127.0.0.1:$panel_port"
|
|
[ -z "$secret" ] || controller="0.0.0.0:$panel_port"
|
|
procd_open_instance meow
|
|
procd_set_param command "$PROG" --no-external-plugins -d "$work_dir" -f "$config_file" \
|
|
--ext-ctl "$controller"
|
|
[ -n "$secret" ] && procd_append_param command --secret "$secret"
|
|
# Restart when either the UCI service settings or the YAML config change.
|
|
procd_set_param file /etc/config/meow "$config_file"
|
|
procd_set_param respawn 3600 5 5
|
|
procd_set_param stdout 1
|
|
procd_set_param stderr 1
|
|
procd_set_param limits nofile="1000000 1000000"
|
|
procd_close_instance
|
|
|
|
if [ "$tproxy" -eq 1 ]; then
|
|
# A supervised instance owns the wait and rules, including teardown.
|
|
procd_open_instance gateway
|
|
procd_set_param command "$GATEWAY" run
|
|
procd_set_param term_timeout 5
|
|
procd_set_param stdout 1
|
|
procd_set_param stderr 1
|
|
procd_close_instance
|
|
else
|
|
"$GATEWAY" down
|
|
fi
|
|
}
|
|
|
|
stop_service() {
|
|
"$GATEWAY" down
|
|
}
|
|
|
|
service_triggers() {
|
|
procd_add_reload_trigger "meow"
|
|
}
|
|
|
|
reload_service() {
|
|
stop
|
|
start
|
|
}
|