Create caddy
This commit is contained in:
parent
cbf42859bf
commit
7f2cb258d2
172
luci-app-caddy/root/etc/init.d/caddy
Normal file
172
luci-app-caddy/root/etc/init.d/caddy
Normal file
@ -0,0 +1,172 @@
|
|||||||
|
#!/bin/sh /etc/rc.common
|
||||||
|
|
||||||
|
START=99
|
||||||
|
USE_PROCD=1
|
||||||
|
PROG="$(uci -q get caddy.@caddy[0].bin_dir)"
|
||||||
|
|
||||||
|
get_config() {
|
||||||
|
config_get_bool enabled $1 enabled 0
|
||||||
|
config_get cmd $1 cmd "默认"
|
||||||
|
config_get_bool webdav $1 webdav 0
|
||||||
|
config_get port $1 port 12311
|
||||||
|
config_get webdav_port $1 webdav_port 12322
|
||||||
|
config_get log $1 log 1
|
||||||
|
config_get data_dir $1 data_dir "/mnt"
|
||||||
|
config_get webdav_data_dir $1 webdav_data_dir "/mnt"
|
||||||
|
config_get log_dir $1 log_dir "/tmp/caddy/requests.log"
|
||||||
|
config_get caddy_file $1 caddy_file "/etc/caddy/Caddyfile"
|
||||||
|
config_get webdav_pass $1 webdav_pass 0
|
||||||
|
config_get webdav_username $1 webdav_username "admin"
|
||||||
|
config_get webdav_password $1 webdav_password "123456"
|
||||||
|
config_get ssl $1 ssl 0
|
||||||
|
config_get cgi $1 cgi 0
|
||||||
|
config_get api $1 api 0
|
||||||
|
config_get allow_wan $1 allow_wan 0
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
set_firewall() {
|
||||||
|
if [ "$external_access" = "allow" ]; then
|
||||||
|
uci -q delete firewall.caddy
|
||||||
|
uci set firewall.caddy=rule
|
||||||
|
uci set firewall.caddy.name="caddy"
|
||||||
|
uci set firewall.caddy.target="ACCEPT"
|
||||||
|
uci set firewall.caddy.src="wan"
|
||||||
|
uci set firewall.caddy.proto="tcp"
|
||||||
|
uci set firewall.caddy.dest_port="$port"
|
||||||
|
[ ! -z "$webdav_port" ] && uci set firewall.caddy.dest_port="$webdav_port"
|
||||||
|
uci set firewall.caddy.enabled="1"
|
||||||
|
uci commit firewall
|
||||||
|
/etc/init.d/firewall reload >/dev/null 2>&1
|
||||||
|
elif [ "$external_access" = "deny" ]; then
|
||||||
|
uci -q delete firewall.caddy
|
||||||
|
uci commit firewall
|
||||||
|
/etc/init.d/firewall reload >/dev/null 2>&1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
start_service() {
|
||||||
|
config_load caddy
|
||||||
|
config_foreach get_config caddy
|
||||||
|
[ $enabled -ne 1 ] && return 1
|
||||||
|
if [ ! -f "$PROG" ] ;then
|
||||||
|
uci -q set caddy.@caddy[0].enabled=0
|
||||||
|
uci commit caddy
|
||||||
|
echo "$(TZ=UTC-8 date -R +%Y年%m月%d日\ %X) : $PROG 未找到,无法启动!请确认已上传程序" >>$log_dir 2>&1
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
chmod +x $PROG
|
||||||
|
if [ $(($($PROG -h | wc -l))) -lt 3 ] ;then
|
||||||
|
uci -q set caddy.@caddy[0].enabled=0
|
||||||
|
uci commit caddy
|
||||||
|
echo "$(TZ=UTC-8 date -R +%Y年%m月%d日\ %X) : $PROG 程序不完整或CPU架构不支持的程序,无法启动!" >>$log_dir 2>&1
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
if [ "$cmd" = "默认" ] ;then
|
||||||
|
mkdir -p $data_dir
|
||||||
|
if [ "$log" -eq 1 ] ;then
|
||||||
|
log_path="$(dirname $log_dir)"
|
||||||
|
mkdir -p $log_path
|
||||||
|
logs="log {
|
||||||
|
output file $log_dir {
|
||||||
|
roll_size 1MiB
|
||||||
|
roll_local_time
|
||||||
|
roll_keep 5
|
||||||
|
roll_keep_for 120h
|
||||||
|
}
|
||||||
|
}"
|
||||||
|
fi
|
||||||
|
if [ "$webdav" -eq 1 ] ;then
|
||||||
|
mkdir -p $webdav_data_dir
|
||||||
|
if [ "$webdav_pass" -eq 1 ] ;then
|
||||||
|
password="$($PROG hash-password --plaintext $webdav_password)"
|
||||||
|
basicauth="basicauth /dav/* {
|
||||||
|
$webdav_username $password
|
||||||
|
}"
|
||||||
|
fi
|
||||||
|
webdavs=":$webdav_port {
|
||||||
|
$basicauth
|
||||||
|
webdav * {
|
||||||
|
prefix /dav
|
||||||
|
root $webdav_data_dir
|
||||||
|
}
|
||||||
|
}"
|
||||||
|
reder_web="order webdav before file_server # 启动 webdav 模块 # 全局配置"
|
||||||
|
fi
|
||||||
|
if [ "$ssl" -eq 1 ] ;then
|
||||||
|
tsl="tls {
|
||||||
|
protocols tls1.1 tls1.2 tls1.3
|
||||||
|
}"
|
||||||
|
fi
|
||||||
|
if [ "$cgi" -eq 1 ] ;then
|
||||||
|
cgis="order cgi before respond # 启动 cgi 模块 # 全局配置"
|
||||||
|
fi
|
||||||
|
if [ "$api" != "1" ] ;then
|
||||||
|
apis="admin off # 关闭 API 端口 # 全局配置"
|
||||||
|
fi
|
||||||
|
if [ "$allow_wan" -eq "1" ]; then
|
||||||
|
external_access="allow"
|
||||||
|
else
|
||||||
|
external_access="deny"
|
||||||
|
fi
|
||||||
|
if [ "$cgi" -eq 1 ] || [ "$webdav" -eq 1 ] || [ "$api" != "1" ] ;then
|
||||||
|
order="{ # 全局配置
|
||||||
|
$cgis
|
||||||
|
$reder_web
|
||||||
|
$apis
|
||||||
|
} # 全局配置"
|
||||||
|
fi
|
||||||
|
set_firewall
|
||||||
|
|
||||||
|
cat > $caddy_file <<EOF
|
||||||
|
# 此配置文件路径:/etc/caddy/Caddyfile
|
||||||
|
|
||||||
|
$order
|
||||||
|
|
||||||
|
:$port {
|
||||||
|
root * $data_dir
|
||||||
|
file_server browse
|
||||||
|
|
||||||
|
header {
|
||||||
|
Content-Type "text/plain; charset=utf-8"
|
||||||
|
}
|
||||||
|
|
||||||
|
$logs
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
$webdavs
|
||||||
|
EOF
|
||||||
|
fi
|
||||||
|
procd_open_instance caddy
|
||||||
|
procd_set_param command $PROG
|
||||||
|
procd_append_param command run
|
||||||
|
procd_append_param command --config $caddy_file
|
||||||
|
procd_append_param command --adapter caddyfile
|
||||||
|
|
||||||
|
procd_set_param stdout 0
|
||||||
|
procd_set_param stderr 0
|
||||||
|
procd_set_param respawn
|
||||||
|
procd_close_instance caddy
|
||||||
|
|
||||||
|
echo `date +%s` > /tmp/caddy_time
|
||||||
|
}
|
||||||
|
|
||||||
|
service_triggers() {
|
||||||
|
procd_add_reload_trigger "caddy"
|
||||||
|
}
|
||||||
|
|
||||||
|
stop_service() {
|
||||||
|
external_access="deny"
|
||||||
|
set_firewall
|
||||||
|
rm -rf /tmp/caddy.tag /tmp/caddynew.tag
|
||||||
|
rm -rf $(uci -q get caddy.@caddy[0].log_dir)
|
||||||
|
}
|
||||||
|
|
||||||
|
reload_service() {
|
||||||
|
stop
|
||||||
|
sleep 1
|
||||||
|
start
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user