Rework LuCI build system
[project/luci.git] / applications / luci-app-ahcp / luasrc / model / cbi / ahcp.lua
diff --git a/applications/luci-app-ahcp/luasrc/model/cbi/ahcp.lua b/applications/luci-app-ahcp/luasrc/model/cbi/ahcp.lua
new file mode 100644 (file)
index 0000000..a48f8b4
--- /dev/null
@@ -0,0 +1,121 @@
+--[[
+LuCI - Lua Configuration Interface
+
+Copyright 2011 Jo-Philipp Wich <xm@subsignal.org>
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+$Id: init.lua 5764 2010-03-08 19:05:34Z jow $
+]]--
+
+m = Map("ahcpd", translate("AHCP Server"), translate("AHCP is an autoconfiguration protocol " ..
+       "for IPv6 and dual-stack IPv6/IPv4 networks designed to be used in place of router " ..
+       "discovery or DHCP on networks where it is difficult or impossible to configure a " ..
+       "server within every link-layer broadcast domain, for example mobile ad-hoc networks."))
+
+
+m:section(SimpleSection).template = "ahcp_status"
+
+s = m:section(TypedSection, "ahcpd")
+s:tab("general", translate("General Setup"))
+s:tab("advanced", translate("Advanced Settings"))
+s.addremove = false
+s.anonymous = true
+
+
+mode = s:taboption("general", ListValue, "mode", translate("Operation mode"))
+mode:value("server", translate("Server"))
+mode:value("forwarder", translate("Forwarder"))
+
+net = s:taboption("general", Value, "interface", translate("Served interfaces"))
+net.template = "cbi/network_netlist"
+net.widget   = "checkbox"
+net.nocreate = true
+
+function net.cfgvalue(self, section)
+       return m.uci:get("ahcpd", section, "interface")
+end
+
+pfx = s:taboption("general", DynamicList, "prefix", translate("Announced prefixes"),
+       translate("Specifies the announced IPv4 and IPv6 network prefixes in CIDR notation"))
+pfx.optional  = true
+pfx.datatype  = "ipaddr"
+pfx:depends("mode", "server")
+
+nss = s:taboption("general", DynamicList, "name_server", translate("Announced DNS servers"),
+       translate("Specifies the announced IPv4 and IPv6 name servers"))
+nss.optional = true
+nss.datatype = "ipaddr"
+nss:depends("mode", "server")
+
+ntp = s:taboption("general", DynamicList, "ntp_server", translate("Announced NTP servers"),
+       translate("Specifies the announced IPv4 and IPv6 NTP servers"))
+ntp.optional = true
+ntp.datatype = "ipaddr"
+ntp:depends("mode", "server")
+
+mca = s:taboption("general", Value, "multicast_address", translate("Multicast address"))
+mca.optional    = true
+mca.placeholder = "ff02::cca6:c0f9:e182:5359"
+mca.datatype    = "ip6addr"
+
+port = s:taboption("general", Value, "port", translate("Port"))
+port.optional    = true
+port.placeholder = 5359
+port.datatype    = "port"
+
+fam = s:taboption("general", ListValue, "_family", translate("Protocol family"))
+fam:value("", translate("IPv4 and IPv6"))
+fam:value("ipv4", translate("IPv4 only"))
+fam:value("ipv6", translate("IPv6 only"))
+
+function fam.cfgvalue(self, section)
+       local v4 = m.uci:get_bool("ahcpd", section, "ipv4_only")
+       local v6 = m.uci:get_bool("ahcpd", section, "ipv6_only")
+       if v4 then
+               return "ipv4"
+       elseif v6 then
+               return "ipv6"
+       end
+       return ""
+end
+
+function fam.write(self, section, value)
+       if value == "ipv4" then
+               m.uci:set("ahcpd", section, "ipv4_only", "true")
+               m.uci:delete("ahcpd", section, "ipv6_only")
+       elseif value == "ipv6" then
+               m.uci:set("ahcpd", section, "ipv6_only", "true")
+               m.uci:delete("ahcpd", section, "ipv4_only")
+       end
+end
+
+function fam.remove(self, section)
+       m.uci:delete("ahcpd", section, "ipv4_only")
+       m.uci:delete("ahcpd", section, "ipv6_only")
+end
+
+ltime = s:taboption("general", Value, "lease_time", translate("Lease validity time"))
+ltime.optional    = true
+ltime.placeholder = 3666
+ltime.datatype    = "uinteger"
+
+
+ld = s:taboption("advanced", Value, "lease_dir", translate("Lease directory"))
+ld.datatype    = "directory"
+ld.placeholder = "/var/lib/leases"
+
+id = s:taboption("advanced", Value, "id_file", translate("Unique ID file"))
+--id.datatype    = "file"
+id.placeholder = "/var/lib/ahcpd-unique-id"
+
+log = s:taboption("advanced", Value, "log_file", translate("Log file"))
+--log.datatype    = "file"
+log.placeholder = "/var/log/ahcpd.log"
+
+
+return m