mirror of
https://github.com/kiddin9/op-packages.git
synced 2026-10-29 09:25:13 +08:00
116 lines
3.6 KiB
Bash
116 lines
3.6 KiB
Bash
#!/bin/sh /etc/rc.common
|
|
|
|
START=99
|
|
STOP=11
|
|
USE_PROCD=1
|
|
|
|
ENTRY=/usr/sbin/linkease-app-entry
|
|
PRIMARY=/usr/bin/linkease-full
|
|
FORCE_GATEWAY=/var/run/linkease-app-entry/force-gateway
|
|
DATA_ROOT_WAIT_SECONDS=${LINKEASEFULL_DATA_ROOT_WAIT_SECONDS:-60}
|
|
|
|
append_primary_arg() {
|
|
procd_append_param command --primary-arg "$1"
|
|
}
|
|
|
|
primary_enabled() {
|
|
[ -x "$PRIMARY" ] || return 1
|
|
[ ! -e "$FORCE_GATEWAY" ] || return 1
|
|
enabled="$(uci -q get linkeasefull.@linkeasefull[0].enabled 2>/dev/null || echo 1)"
|
|
[ "$enabled" = 1 ]
|
|
}
|
|
|
|
ensure_linkease_config() {
|
|
if [ ! -f /etc/config/linkease ]; then
|
|
touch /etc/config/linkease || return 1
|
|
fi
|
|
if ! uci -q get linkease.@linkease[0] >/dev/null; then
|
|
uci -q add linkease linkease >/dev/null || return 1
|
|
uci -q set linkease.@linkease[0].enabled='0' || return 1
|
|
uci -q set linkease.@linkease[0].port='8897' || return 1
|
|
uci -q set linkease.@linkease[0].allowPublic='0' || return 1
|
|
uci -q commit linkease || return 1
|
|
fi
|
|
}
|
|
|
|
prepare_linkeasefull_runtime() {
|
|
local data_root_parent data_root recycle_root wait_left
|
|
ensure_linkease_config || true
|
|
data_root_parent="$(uci -q get linkease.@linkease[0].local_home 2>/dev/null || true)"
|
|
case "$data_root_parent" in
|
|
""|/tmp|/tmp/*|/var|/var/*|/run|/run/*|/dev|/dev/*|/proc|/proc/*|/sys|/sys/*|/rom|/rom/*|/overlay|/overlay/*) data_root_parent="" ;;
|
|
esac
|
|
if [ -n "$data_root_parent" ]; then
|
|
wait_left="$DATA_ROOT_WAIT_SECONDS"
|
|
case "$wait_left" in ""|*[!0-9]*) wait_left=60 ;; esac
|
|
while [ "$wait_left" -gt 0 ] && [ ! -d "$data_root_parent" ]; do
|
|
sleep 1
|
|
wait_left=$((wait_left - 1))
|
|
done
|
|
[ -d "$data_root_parent" ] || data_root_parent=""
|
|
fi
|
|
if [ -n "$data_root_parent" ]; then
|
|
data_root="$data_root_parent/.linkease_data"
|
|
recycle_root="$data_root_parent/.linkease_recycle"
|
|
mkdir -p "$data_root/users/admin" "$data_root/system" "$data_root/tmp" "$data_root/config" "$data_root/apptunnel" "$data_root/mountremote" "$recycle_root"
|
|
fi
|
|
mkdir -p /tmp/linkeasefull/logs
|
|
rm -f /var/run/linkease.sock
|
|
}
|
|
|
|
start_service() {
|
|
config_load linkease_app_entry
|
|
config_get_bool entry_enabled main enabled 1
|
|
[ "$entry_enabled" = 1 ] || return 1
|
|
config_get listen main listen "127.0.0.1:19290"
|
|
config_get ready_timeout main ready_timeout "75s"
|
|
config_get max_failures main max_primary_failures "3"
|
|
config_get crash_window main crash_window "60s"
|
|
config_get state_file main state_file "/var/run/linkease-app-entry/state.json"
|
|
|
|
mkdir -p /var/run/linkease-app-entry
|
|
primary=0
|
|
primary_enabled && primary=1
|
|
[ "$primary" = 1 ] && prepare_linkeasefull_runtime
|
|
|
|
procd_open_instance entry
|
|
procd_set_param limits nofile="65535 65535"
|
|
procd_set_param command "$ENTRY" supervisor \
|
|
--listen "$listen" \
|
|
--primary "$PRIMARY" \
|
|
--primary-enabled="$primary" \
|
|
--fallback "$ENTRY" \
|
|
--fallback-arg gateway \
|
|
--state-file "$state_file" \
|
|
--ready-timeout "$ready_timeout" \
|
|
--max-primary-failures "$max_failures" \
|
|
--crash-window "$crash_window"
|
|
|
|
append_primary_arg --host
|
|
append_primary_arg 127.0.0.1
|
|
append_primary_arg --port
|
|
append_primary_arg 19290
|
|
append_primary_arg --mode
|
|
append_primary_arg release
|
|
append_primary_arg --basePath
|
|
append_primary_arg /apps/
|
|
append_primary_arg --deviceAddr
|
|
append_primary_arg 0.0.0.0:8897
|
|
append_primary_arg --localApi
|
|
append_primary_arg /var/run/linkease.sock
|
|
append_primary_arg --supplierCode
|
|
append_primary_arg linkease
|
|
|
|
procd_set_param env \
|
|
"LINKEASE_AUTH_PROVIDER=openwrt" \
|
|
"KAIPLUS_ENABLED=0"
|
|
procd_set_param respawn 3600 5 0
|
|
procd_set_param stdout 1
|
|
procd_set_param stderr 1
|
|
procd_close_instance
|
|
}
|
|
|
|
service_triggers() {
|
|
procd_add_reload_trigger "linkease_app_entry" "linkeasefull"
|
|
}
|