small-package/luci-app-unishare/luasrc/model/cbi/unishare/share.lua

68 lines
2.2 KiB
Lua

local uci = luci.model.uci.cursor()
local users = {}
uci:foreach("unishare", "user", function(e)
users[#users+1] = e["username"]
end)
m = Map("unishare", translate("Configure Share"))
m.redirect = luci.dispatcher.build_url("admin", "nas", "unishare", "index")
function m.on_save()
luci.http.redirect(m.redirect)
end
s = m:section(NamedSection, arg[1], "share", "")
s.addremove = false
s.dynamic = false
path = s:option(Value, "path", translate("Path"),
translate("Note: '/mnt' is not suitable as a writable share, because Windows will recognize the wrong capacity"))
path.datatype = "string"
path.rmempty = false
path.validate = function(self, value, section)
if value then
if value == "/" or string.match(value, "^/.+[^/]$") then
if value == "/" and (nil == name:formvalue(section) or "" == name:formvalue(section)) then
return nil, translate("Name cannot be empty when Path is /")
end
return value
else
return nil, translate("Path must starts with '/' and not ends with '/'")
end
end
return AbstractValue.validate(self, value, section)
end
name = s:option(Value, "name", translate("Name"))
name.datatype = "string"
name.rmempty = true
name.validate = function(self, value, section)
if value and string.match(value, "[`&|;<>/\\*?$#]") then
return nil, translatef("Name must not contains '%s'", "`&|;<>/\\*?$#")
end
return AbstractValue.validate(self, value, section)
end
o = s:option(StaticList, "rw", translate("Read/Write Users"),
translatef("'Everyone' includes anonymous if enabled, 'Logged Users' includes all users configured in '%s' tab",
"<a href=\""..luci.dispatcher.build_url("admin", "nas", "unishare", "users").."\" >"..translate("Users").."</a>"))
o:value("everyone", translate("Everyone"))
o:value("users", translate("Logged Users"))
for k, u in pairs(users) do
o:value(u)
end
o = s:option(StaticList, "ro", translate("Read Only Users"))
o:value("everyone", translate("Everyone"))
o:value("users", translate("Logged Users"))
for k, u in pairs(users) do
o:value(u)
end
o = s:option(StaticList, "proto", translate("Protocol"))
o:value("samba", "Samba")
o:value("webdav", "WebDAV")
return m