mirror of
https://github.com/caiwx86/small-packages.git
synced 2026-07-31 11:52:03 +08:00
84 lines
1.8 KiB
Bash
84 lines
1.8 KiB
Bash
#!/bin/sh /etc/rc.common
|
|
#
|
|
# Copyright (C) 2021-2026 sirpdboy <herboy2008@gmail.com>
|
|
#
|
|
# This file is part of ddns-go .
|
|
#
|
|
# This is free software, licensed under the Apache License, Version 2.0 .
|
|
#
|
|
|
|
START=99
|
|
USE_PROCD=1
|
|
NAME=ddns-go
|
|
PROG=/usr/bin/ddns-go
|
|
CONFDIR=/etc/ddns-go
|
|
CONF=$CONFDIR/ddns-go-config.yaml
|
|
|
|
init_yaml() {
|
|
[ -d "$CONFDIR" ] || mkdir -p "$CONFDIR"
|
|
chown -R ddns-go:ddns-go "$CONFDIR"
|
|
chmod 755 "$CONFDIR"
|
|
[ -f "$CONF" ] && chmod 644 "$CONF"
|
|
}
|
|
|
|
build_args() {
|
|
local cfg="$1"
|
|
local args="-c $CONF"
|
|
|
|
config_get port "$cfg" port '9876'
|
|
args="$args -l :$port"
|
|
|
|
config_get time "$cfg" time '300'
|
|
[ -n "$time" ] && args="$args -f $time"
|
|
|
|
config_get ctimes "$cfg" ctimes '5'
|
|
[ -n "$ctimes" ] && args="$args -cacheTimes $ctimes"
|
|
|
|
config_get dns "$cfg" dns '223.5.5.5'
|
|
[ -n "$dns" ] && args="$args -dns $dns"
|
|
|
|
config_get_bool noweb "$cfg" noweb 0
|
|
[ "$noweb" -eq 1 ] && args="$args -noweb"
|
|
|
|
config_get_bool skipverify "$cfg" skipverify 0
|
|
[ "$skipverify" -eq 1 ] && args="$args -skipVerify"
|
|
|
|
echo "$args"
|
|
}
|
|
|
|
start_instance() {
|
|
local cfg="$1"
|
|
config_get_bool enabled "$cfg" enabled 0
|
|
[ "$enabled" -eq 0 ] && return 0
|
|
|
|
config_get delay "$cfg" delay 0
|
|
if [ "$delay" -gt 0 ]; then
|
|
local uptime=$(awk -F. '{print $1}' /proc/uptime)
|
|
[ "$uptime" -lt 120 ] && sleep "$delay"
|
|
fi
|
|
|
|
init_yaml
|
|
|
|
local args=$(build_args "$cfg")
|
|
|
|
procd_open_instance
|
|
procd_set_param command $PROG $args
|
|
|
|
procd_set_param stdout 1
|
|
procd_set_param stderr 1
|
|
procd_set_param log_level 7
|
|
|
|
procd_set_param user ddns-go
|
|
procd_set_param respawn
|
|
|
|
procd_close_instance
|
|
}
|
|
|
|
start_service() {
|
|
config_load "$NAME"
|
|
config_foreach start_instance 'basic'
|
|
}
|
|
|
|
service_triggers() {
|
|
procd_add_reload_trigger "$NAME"
|
|
} |