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