aa2e46d5a157e9a338eec30564964c6608bbc29c
[project/luci.git] / applications / luci-fw / luasrc / model / cbi / luci_fw / traffic.lua
1 --[[
2 LuCI - Lua Configuration Interface
3
4 Copyright 2008 Steven Barth <steven@midlink.org>
5 Copyright 2008 Jo-Philipp Wich <xm@leipzig.freifunk.net>
6
7 Licensed under the Apache License, Version 2.0 (the "License");
8 you may not use this file except in compliance with the License.
9 You may obtain a copy of the License at
10
11         http://www.apache.org/licenses/LICENSE-2.0
12
13 $Id$
14 ]]--
15
16 m = Map("firewall", translate("fw_traffic"))
17 s = m:section(TypedSection, "forwarding", translate("fw_forwarding"), translate("fw_forwarding1"))
18 s.template  = "cbi/tblsection"
19 s.addremove = true
20 s.anonymous = true
21
22 iface = s:option(ListValue, "src", translate("fw_src"))
23 oface = s:option(ListValue, "dest", translate("fw_dest"))
24 s:option(Flag, "mtu_fix", translate("fw_mtufix"))
25
26 luci.model.uci.cursor():foreach("firewall", "zone",
27         function (section)
28                         iface:value(section.name)
29                         oface:value(section.name)
30         end)
31
32
33
34 s = m:section(TypedSection, "rule")
35 s.addremove = true
36 s.anonymous = true
37 s.template = "cbi/tblsection"
38 s.extedit   = luci.dispatcher.build_url("admin", "network", "firewall", "rule", "%s")
39
40 local created = nil
41
42 function s.create(self, section)
43         created = TypedSection.create(self, section)
44 end
45
46 function s.parse(self, ...)
47         TypedSection.parse(self, ...)
48         if created then
49                 m.uci:save("firewall")
50                 luci.http.redirect(luci.dispatcher.build_url(
51                         "admin", "network", "firewall", "rule", created
52                 ))
53         end
54 end
55
56 s:option(DummyValue, "_name", translate("name"))
57 s:option(DummyValue, "proto", translate("protocol"))
58
59 src = s:option(DummyValue, "src", translate("fw_src"))
60 function src.cfgvalue(self, s)
61         return "%s:%s:%s" % {
62                 self.map:get(s, "src") or "*",
63                 self.map:get(s, "src_ip") or "0.0.0.0/0",
64                 self.map:get(s, "src_port") or "*"
65         } 
66 end
67
68 dest = s:option(DummyValue, "dest", translate("fw_dest"))
69 function dest.cfgvalue(self, s)
70         return "%s:%s:%s" % {
71                 self.map:get(s, "dest") or translate("device", "device"),
72                 self.map:get(s, "dest_ip") or "0.0.0.0/0",
73                 self.map:get(s, "dest_port") or "*"
74         } 
75 end
76
77
78 s:option(DummyValue, "target")
79
80
81 return m