🌴 Sync 2026-03-05 23:51:42

This commit is contained in:
github-actions[bot] committed 2026-03-05 23:51:42 +08:00
1 parent 97c049ed0a
commit 0acff03804
14253 files changed
+3893239

No files matched your search

+49
View File
@@ -0,0 +1,49 @@
# 此配置文件路径:/etc/caddy/Caddyfile
{ # 全局配置
# 启动 cgi 模块
order cgi before respond
# 启动 webdav 模块
order webdav before file_server
# 关闭 API 端口
admin off
}
:12311 {
#启用压缩
encode gzip
#认证,账号admin 密码123456
basicauth {
admin $2a$14$RdbOHzJhf5BaapSdlYTCbe.yWY9cEZjyDpfgwStY28K/qsM1tX8tu
}
#路径 /mnt
root * /mnt
#文件服务器 端口12311
file_server browse
log {
#日志 路径/tmp/caddy/requests.log
output file /tmp/caddy/requests.log {
roll_size 1MiB
roll_local_time
roll_keep 5
roll_keep_for 120h
}
}
}
:12322 {
#启用压缩
encode gzip
#认证,账号admin 密码123456
basicauth {
admin $2a$14$RdbOHzJhf5BaapSdlYTCbe.yWY9cEZjyDpfgwStY28K/qsM1tX8tu
}
# webdav 路径根目录 端口12322
webdav /dav/* {
prefix /dav
root /
}
}
+14
View File
@@ -0,0 +1,14 @@
config caddy
option 'enabled' '0'
option cmd '默认'
option 'port' '12311'
option 'webdav' '0'
option 'filezip' '0'
option 'webzip' '0'
option 'cgi' '0'
option 'api' '0'
option 'data_dir' '/mnt'
option 'file_pass' '0'
option 'log' '1'
option 'log_dir' '/tmp/caddy/requests.log'
option allow_wan '0'
+194
View File
@@ -0,0 +1,194 @@
#!/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 caddyfile $1 caddyfile
config_get file_pass $1 file_pass 0
config_get file_username $1 file_username "admin"
config_get file_password $1 file_password "123456"
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 api $1 api 0
config_get filezip $1 filezip 0
config_get webzip $1 webzip 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
log_path="$(dirname $log_dir)"
mkdir -p $log_path
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
logs="log {
output file $log_dir {
roll_size 1MiB
roll_local_time
roll_keep 5
roll_keep_for 120h
}
}"
fi
if [ "$file_pass" -eq 1 ] ;then
filepassword="$($PROG hash-password --plaintext $file_password)"
filebasicauth="basicauth {
$file_username $filepassword
}"
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 {
$webdav_username $password
}"
fi
webdavs=":$webdav_port {
$basicauth
webdav * {
prefix /dav
root $webdav_data_dir
}
}"
orderweb="order webdav before file_server # 启动 webdav 模块"
fi
if [ "$filezip" -eq 1 ] ;then
filezips="encode gzip"
fi
if [ "$webzip" -eq 1 ] ;then
webzips="encode gzip"
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 [ "$webdav" -eq 1 ] || [ "$api" != "1" ] ;then
order="{ # 全局配置
$orderweb
$apis
} "
fi
set_firewall
cat > $caddy_file <<EOF
# 此配置文件路径:/etc/caddy/Caddyfile
$order
:$port {
$filezips
$filebasicauth
root * $data_dir
file_server browse
$logs
}
$webdavs
EOF
uci -q set caddy.@caddy[0].caddyfile="$(cat $caddy_file)"
uci commit caddy
else
caddyf="$(uci -q get caddy.@caddy[0].caddyfile)"
logpath="$(echo $caddyf | grep "output file" | awk -F 'output file' '{print $2}' | tr -d '{ ')"
[ ! -z "$logpath" ] && uci -q set caddy.@caddy[0].log_dir=$logpath && uci commit caddy
if [ ! -z "$caddyf" ] ;then
echo "$caddyf" >$caddy_file 2>&1
else
uci -q set caddy.@caddy[0].enabled=0
uci commit caddy
echo "$(TZ=UTC-8 date -R +%Y年%m月%d日\ %X) : $caddy_file 配置文件Caddyfile为空,无法启动!" >>$log_dir 2>&1
exit 1
fi
fi
$PROG fmt --overwrite $caddy_file
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
}
@@ -0,0 +1,20 @@
#!/bin/sh
[ ! -f "/usr/share/ucitrack/luci-app-caddy.json" ] && {
cat > /usr/share/ucitrack/luci-app-caddy.json << EEOF
{
"config": "caddy",
"init": "caddy"
}
EEOF
}
uci -q batch <<-EOF >/dev/null
delete ucitrack.@caddy[-1]
add ucitrack caddy
set ucitrack.@caddy[-1].init=caddy
commit ucitrack
EOF
rm -rf /tmp/luci-*
chmod 755 /etc/init.d/caddy
exit 0
@@ -0,0 +1,11 @@
{
"luci-app-caddy": {
"description": "Grant UCI access for luci-app-caddy",
"read": {
"uci": [ "caddy" ]
},
"write": {
"uci": [ "caddy" ]
}
}
}