mirror of
https://github.com/kenzok8/small-package.git
synced 2026-01-14 11:25:06 +08:00
93 lines
2.6 KiB
Bash
93 lines
2.6 KiB
Bash
#!/bin/sh /etc/rc.common
|
|
|
|
START=99
|
|
USE_PROCD=1
|
|
|
|
APPBINARY=/usr/sbin/netdata
|
|
CONFIGFILE=/etc/netdata/netdata.conf
|
|
|
|
config_load 'netdata'
|
|
|
|
get_config() {
|
|
config_get_bool enabled $1 enabled 0
|
|
config_get port $1 port 19999
|
|
config_get_bool ssl $1 enable_ssl 0
|
|
config_get cert_file $1 cert_file '/etc/netdata/cert.crt'
|
|
config_get key_file $1 key_file '/etc/netdata/cert.key'
|
|
config_get_bool ennginx $1 nginx_support 0
|
|
config_get_bool auth $1 auth 0
|
|
config_get userpw $1 user_passwd 'admin:$apr1$t7qQjoqb$YBHtAb7VGSkjIdObMG.Oy0'
|
|
[ "$ennginx" == "1" ] && ssl=0
|
|
}
|
|
|
|
#read_option <option>
|
|
read_option() {
|
|
[ -n "$1" ] || return 1
|
|
sed -En "/^\[web\]/,/^(\[|$)/{s|^\s*$1 = *(.*)$|\1|p}" "$CONFIGFILE"
|
|
}
|
|
|
|
#white_option <option> [value]
|
|
white_option() {
|
|
[ -n "$1" ] || return 1
|
|
if [ -n "$(sed -En "/^\[web\]/,/^(\[|$)/{s|^\s*($1) =.*$|\1|p}" "$CONFIGFILE")" ]; then
|
|
sed -Ei "/^\[web\]/,/^(\[|$)/{s|^(\s*)$1 =.*|\1$1 = $2|}" "$CONFIGFILE"
|
|
else
|
|
sed -Ei "/^\[web\]/a\\\t$1 = $2" "$CONFIGFILE"
|
|
fi
|
|
}
|
|
|
|
white_conf() {
|
|
[ "$ssl" == "0" ] && local cert_file='' key_file=''
|
|
|
|
[ "$port" == "$(read_option 'default port')" ] || white_option 'default port' "$port"
|
|
[ "$cert_file" == "$(read_option 'ssl certificate')" ] || white_option 'ssl certificate' "$cert_file"
|
|
[ "$key_file" == "$(read_option 'ssl key')" ] || white_option 'ssl key' "$key_file"
|
|
}
|
|
|
|
write_nginx() {
|
|
local location="/etc/nginx/conf.d/netdata.locations"
|
|
local htpasswd="/etc/nginx/conf.d/netdata.htpasswd"
|
|
|
|
echo "$userpw" > "$htpasswd"
|
|
[ "$(sed -En "s|^\s*proxy_pass\s+https?://[^:]+:(\d+).*|\1|p" "$location")" == "$port" ] || sed -Ei "/proxy_pass/{s|(\bproxy_pass\b)(\s+.+)?|\1 http://localhost:$port/;|}" "$location"
|
|
if [ "$auth" == "1" ];then
|
|
sed -Ei "s|#(\bauth_basic_user_file\b)|\1|" "$location"
|
|
else
|
|
sed -Ei "s|^(\s*)(\bauth_basic_user_file\b)|\1#\2|" "$location"
|
|
fi
|
|
/etc/init.d/nginx reload
|
|
}
|
|
|
|
netdata_instance() {
|
|
mkdir -m 0755 -p /var/cache/netdata
|
|
chown nobody /var/cache/netdata
|
|
mkdir -m 0755 -p /var/lib/netdata
|
|
chown nobody /var/lib/netdata
|
|
mkdir -m 0755 -p /var/lib/netdata/cloud.d
|
|
chown nobody /var/lib/netdata/cloud.d
|
|
mkdir -m 0755 -p /var/log/netdata
|
|
chown nobody /var/log/netdata
|
|
procd_open_instance
|
|
procd_set_param command $APPBINARY -D -c $CONFIGFILE
|
|
procd_set_param file $CONFIGFILE
|
|
procd_set_param respawn
|
|
procd_close_instance
|
|
}
|
|
|
|
start_service() {
|
|
config_foreach get_config 'netdata'
|
|
[ "${enabled:=0}" == "0" ] && stop_service && return 1
|
|
white_conf
|
|
[ "$ennginx" == "1" ] && write_nginx
|
|
netdata_instance
|
|
}
|
|
|
|
stop_service() {
|
|
pgrep -f $APPBINARY | xargs kill -9 >/dev/null 2>&1
|
|
return 0
|
|
}
|
|
|
|
service_triggers() {
|
|
procd_add_reload_trigger 'netdata'
|
|
}
|