diff --git a/luci-app-caddy/luasrc/model/cbi/caddy/caddy.lua b/luci-app-caddy/luasrc/model/cbi/caddy/caddy.lua
new file mode 100644
index 0000000..efaed4f
--- /dev/null
+++ b/luci-app-caddy/luasrc/model/cbi/caddy/caddy.lua
@@ -0,0 +1,102 @@
+local m, s
+local fs = require "luci.fs"
+m = Map("caddy", translate("Caddy"), translate("Caddy 是一个可扩展的服务器平台,具有自动 HTTPS 功能的快速且可扩展的多平台 HTTP/1-2-3 Web 服务器") .. "
" .. "项目地址:" .. [[]] .. translate("github.com/caddyserver/caddy") .. " " .. " caddy文档:" .. [[]] .. translate("caddyserver.com/docs/") .. [[]])
+
+m:section(SimpleSection).template = "caddy/caddy_status"
+
+s = m:section(TypedSection, "caddy")
+s.addremove = false
+s.anonymous = true
+
+o = s:option(Flag, "enabled", translate("Enabled"))
+o.rmempty = false
+o.default = 0
+
+e=s:option(ListValue,"cmd",translate("启动方式"),
+ translate("自定义配置文件启动,若不懂参数请勿选择自定义"))
+e:value("默认")
+e:value("自定义")
+
+o = s:option(TextValue, "caddyfile", translate("Caddyfile配置文件"),
+ translate("这是caddy的启动配置文件Caddyfile,路径在/etc/caddy/Caddyfile
使用的命令是:caddy run --config /etc/caddy/Caddyfile --adapter caddyfile
如需设置密码,这里就不能使用明文密码,需要转换
转换命令:$(uci -q get caddy.@caddy[0].bin_dir) hash-password --plaintext 新密码"))
+o.rows = 3
+o.wrap = "off"
+o:depends("cmd", "自定义")
+o.cfgvalue = function(self, section)
+ return nixio.fs.readfile("/etc/caddy/Caddyfile") or ""
+end
+o.write = function(self, section, value)
+ fs.writefile("/etc/caddy/Caddyfile", value:gsub("\r\n", "\n"))
+end
+
+o = s:option(Value, "port", translate("端口"))
+o.datatype = "and(port,min(1))"
+o.default = "12311"
+o:depends("cmd", "默认")
+
+o = s:option(Flag, "log", translate("启用日志"))
+o.default = 1
+o:depends("cmd", "默认")
+
+o = s:option(Value, "log_dir", translate("日志路径"),
+ translate("日志的存放路径,填写完整的路径及日志文件名
建议/tmp里,例如:/tmp/caddy/requests.log"))
+o.datatype = "string"
+o.default = "/tmp/caddy/requests.log"
+o:depends("log", "1")
+
+o = s:option(Value, "bin_dir", translate("程序路径"),
+ translate("caddy二进制的存放路径,填写完整的路径及caddy名称
例如:/usr/bin/caddy 例如:/tmp/caddy
可自行编译对应架构的二进制程序:编译教程"))
+o.datatype = "string"
+o.placeholder = "/usr/bin/caddy"
+
+o = s:option(Value, "data_dir", translate("指向路径"),
+ translate("指向一个路径,可在web界面访问你的文件,默认为 /mnt"))
+o.datatype = "string"
+o.default = "/mnt"
+o:depends("cmd", "默认")
+
+o = s:option(Flag, "ssl", translate("启用 SSL"))
+o.default = "0"
+o:depends("cmd", "默认")
+
+o = s:option(Flag, "webdav", translate("启用 webdav"))
+o.default = "0"
+o:depends("cmd", "默认")
+
+o = s:option(Flag,"webdav_pass", translate("启用 认证"))
+o.datatype = "string"
+o:depends("webdav", "1")
+o.default = "0"
+
+o = s:option(Value,"webdav_username", translate("用户名"))
+o.datatype = "string"
+o.default = "admin"
+o:depends("webdav_pass", "1")
+
+o = s:option(Value,"webdav_password", translate("密码"))
+o.datatype = "string"
+o.password = true
+o.default = "123456"
+o:depends("webdav_pass", "1")
+
+o = s:option(Value,"webdav_port", translate("webdav端口"))
+o.datatype = "and(port,min(1))"
+o.default = "12322"
+o:depends("webdav", "1")
+
+o = s:option(Value, "webdav_data_dir", translate("webdav指向路径"),
+ translate("指向一个路径,使用webdav访问你的文件,默认为 /mnt
连接地址须加/dav后缀 如: 192.168.1.1:12311/dav"))
+o.datatype = "string"
+o:depends("webdav", "1")
+o.default = "/mnt"
+
+o = s:option(Flag, "allow_wan", translate("允许从外网访问"))
+o.rmempty = false
+
+o = s:option(Flag, "cgi", translate("启用 cgi模块"))
+o:depends("cmd", "默认")
+
+o = s:option(Flag, "api", translate("启用 API接口"))
+o:depends("cmd", "默认")
+
+return m