89 lines
2.4 KiB
Bash
Executable File
89 lines
2.4 KiB
Bash
Executable File
#!/bin/sh /etc/rc.common
|
|
# Copyright (C) 2021 ImmortalWrt
|
|
|
|
START=99
|
|
USE_PROCD=1
|
|
PROG=/usr/bin/gowebdav
|
|
|
|
get_config() {
|
|
config_load gowebdav
|
|
config_get "enable" "config" "enable" "0"
|
|
config_get "listen_port" "config" "listen_port" "6086"
|
|
config_get "username" "config" "username"
|
|
config_get "password" "config" "password"
|
|
config_get "root_dir" "config" "root_dir" "/mnt"
|
|
config_get "read_only" "config" "read_only" "0"
|
|
config_get "show_hidden" "config" "show_hidden" "0"
|
|
config_get "allow_wan" "config" "allow_wan" "0"
|
|
config_get "use_https" "config" "use_https" "0"
|
|
config_get "cert_cer" "config" "cert_cer"
|
|
config_get "cert_key" "config" "cert_key"
|
|
config_load network
|
|
config_get "lan_addr" "lan" "ipaddr" "0.0.0.0"
|
|
}
|
|
|
|
set_firewall() {
|
|
if [ "$set_type" = "allow" ]; then
|
|
uci -q delete firewall.gowebdav
|
|
uci set firewall.gowebdav=rule
|
|
uci set firewall.gowebdav.name="gowebdav"
|
|
uci set firewall.gowebdav.target="ACCEPT"
|
|
uci set firewall.gowebdav.src="wan"
|
|
uci set firewall.gowebdav.proto="tcp"
|
|
uci set firewall.gowebdav.dest_port="$listen_port"
|
|
uci set firewall.gowebdav.enabled="1"
|
|
uci commit firewall
|
|
/etc/init.d/firewall reload >/dev/null 2>&1
|
|
elif [ "$set_type" = "deny" ]; then
|
|
uci -q delete firewall.gowebdav
|
|
uci commit firewall
|
|
/etc/init.d/firewall reload >/dev/null 2>&1
|
|
fi
|
|
}
|
|
|
|
start_service() {
|
|
get_config
|
|
|
|
[ "$enable" -ne "1" ] && return 1
|
|
mkdir -p $root_dir
|
|
|
|
if [ "$allow_wan" -eq "1" ]; then
|
|
listen_addr=
|
|
set_type="allow"
|
|
else
|
|
listen_addr=$lan_addr
|
|
set_type="deny"
|
|
fi
|
|
set_firewall
|
|
|
|
{ [ -n "$username" ] && [ -n "$password" ]; } && auth_arg="-user $username -password $password"
|
|
[ "$read_only" -eq "1" ] && readonly_arg="-read-only"
|
|
[ "$show_hidden" -eq "1" ] && showhidden_arg="-show-hidden"
|
|
{ [ "$use_https" -eq "1" ] && [ -e "$cert_cer" ] && [ -e "$cert_key" ]; } && https_arg="-https-mode -https-cert-file $cert_cer -https-key-file $cert_key"
|
|
|
|
procd_open_instance gowebdav
|
|
procd_set_param command $PROG
|
|
procd_append_param command -dir "$root_dir" -port "$listen_addr:$listen_port" $auth_arg $readonly_arg $showhidden_arg $https_arg
|
|
procd_set_param stdout 1
|
|
procd_set_param stderr 1
|
|
procd_set_param respawn
|
|
procd_close_instance gowebdav
|
|
}
|
|
|
|
service_triggers() {
|
|
procd_add_reload_trigger "gowebdav"
|
|
}
|
|
|
|
reload_service() {
|
|
stop
|
|
sleep 1
|
|
start
|
|
}
|
|
|
|
stop_service() {
|
|
get_config
|
|
pgrep -f /usr/bin/gowebdav | xargs kill -9 >/dev/null 2>&1
|
|
set_type="deny"
|
|
set_firewall
|
|
}
|