From 184f13334f470141420a189220dd3b951aac4480 Mon Sep 17 00:00:00 2001 From: Steven Barth Date: Mon, 31 Mar 2008 22:24:32 +0000 Subject: [PATCH] * Fixed haserl-lua Makefile * Fixed a bug in CBI that occured when target UCI is empty * Added frontend for port forwarding / firewall pages --- contrib/package/ffluci/Makefile | 3 +- contrib/package/ffluci/ipkg/conffiles | 3 +- contrib/package/haserl-lua/Makefile | 2 +- contrib/{ffluci.uci => uci/luci} | 0 contrib/uci/luci_fw | 2 + src/ffluci/cbi.lua | 3 ++ .../model/cbi/admin_network/firewall.lua | 37 +++++++++++++++++++ src/ffluci/model/cbi/admin_network/portfw.lua | 18 +++++++++ src/ffluci/model/menu/00main.lua | 2 + src/ffluci/model/uci.lua | 4 +- 10 files changed, 69 insertions(+), 5 deletions(-) rename contrib/{ffluci.uci => uci/luci} (100%) create mode 100644 contrib/uci/luci_fw create mode 100644 src/ffluci/model/cbi/admin_network/firewall.lua create mode 100644 src/ffluci/model/cbi/admin_network/portfw.lua diff --git a/contrib/package/ffluci/Makefile b/contrib/package/ffluci/Makefile index 3bf9eb596..753fe889a 100644 --- a/contrib/package/ffluci/Makefile +++ b/contrib/package/ffluci/Makefile @@ -44,7 +44,8 @@ define Package/ffluci/install $(INSTALL_BIN) $(PKG_BUILD_DIR)/contrib/ffluci $(1)/www/cgi-bin $(INSTALL_BIN) $(PKG_BUILD_DIR)/contrib/index.cgi $(1)/www/cgi-bin $(INSTALL_BIN) $(PKG_BUILD_DIR)/contrib/index.html $(1)/www - $(CP) $(PKG_BUILD_DIR)/contrib/ffluci.uci $(1)/etc/config/luci + $(CP) $(PKG_BUILD_DIR)/contrib/uci/luci $(1)/etc/config/luci + $(CP) $(PKG_BUILD_DIR)/contrib/uci/luci_fw $(1)/etc/config/luci_fw $(CP) -a ./ipkg/ffluci.postinst $(1)/CONTROL/postinst $(CP) -a ./ipkg/conffiles $(1)/CONTROL/conffiles endef diff --git a/contrib/package/ffluci/ipkg/conffiles b/contrib/package/ffluci/ipkg/conffiles index 5258af4d8..098dbf904 100644 --- a/contrib/package/ffluci/ipkg/conffiles +++ b/contrib/package/ffluci/ipkg/conffiles @@ -1 +1,2 @@ -/etc/config/luci \ No newline at end of file +/etc/config/luci +/etc/config/luci_fw \ No newline at end of file diff --git a/contrib/package/haserl-lua/Makefile b/contrib/package/haserl-lua/Makefile index b2146334c..c531d3399 100644 --- a/contrib/package/haserl-lua/Makefile +++ b/contrib/package/haserl-lua/Makefile @@ -8,7 +8,7 @@ include $(TOPDIR)/rules.mk -PKG_NAME:=haserl-lua +PKG_NAME:=haserl PKG_VERSION:=0.9.23 PKG_RELEASE:=1 diff --git a/contrib/ffluci.uci b/contrib/uci/luci similarity index 100% rename from contrib/ffluci.uci rename to contrib/uci/luci diff --git a/contrib/uci/luci_fw b/contrib/uci/luci_fw new file mode 100644 index 000000000..c7dec7f2c --- /dev/null +++ b/contrib/uci/luci_fw @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/src/ffluci/cbi.lua b/src/ffluci/cbi.lua index d89405516..5bc40499c 100644 --- a/src/ffluci/cbi.lua +++ b/src/ffluci/cbi.lua @@ -111,6 +111,9 @@ function Map.__init__(self, config, ...) if not self.ucidata then error("Unable to read UCI data: " .. self.config) else + if not self.ucidata[self.config] then + self.ucidata[self.config] = {} + end self.ucidata = self.ucidata[self.config] end end diff --git a/src/ffluci/model/cbi/admin_network/firewall.lua b/src/ffluci/model/cbi/admin_network/firewall.lua new file mode 100644 index 000000000..fc7bea61b --- /dev/null +++ b/src/ffluci/model/cbi/admin_network/firewall.lua @@ -0,0 +1,37 @@ +-- ToDo: Translate, Add descriptions and help texts +m = Map("luci_fw", "Firewall") + +s = m:section(TypedSection, "rule") +s.addremove = true + +chain = s:option(ListValue, "chain", "Kette") +chain:value("forward", "Forward") +chain:value("input", "Input") +chain:value("output", "Output") +chain:value("prerouting", "Prerouting") +chain:value("postrouting", "Postrouting") + +s:option(Value, "iface", "Eingangsschnittstelle").optional = true +s:option(Value, "oface", "Ausgangsschnittstelle").optional = true +s:option(Value, "proto", "Protokoll").optional = true +s:option(Value, "source", "Quelladresse").optional = true +s:option(Value, "destination", "Zieladresse").optional = true +s:option(Value, "sport", "Quellports").optional = true +s:option(Value, "dport", "Zielports").optional = true +s:option(Value, "to", "Neues Ziel").optional = true + +state = s:option(MultiValue, "state", "Status") +state.optional = true +state.delimiter = "," +state:value("NEW", "neu") +state:value("ESTABLISHED", "etabliert") +state:value("RELATED", "zugehörig") +state:value("INVALID", "ungültig") + +s:option(Value, "jump", "Aktion", "ACCEPT, REJECT, DROP, MASQUERADE, DNAT, SNAT, ...").optional = true + + +add = s:option(Value, "command", "Befehl") +add.size = 50 + +return m \ No newline at end of file diff --git a/src/ffluci/model/cbi/admin_network/portfw.lua b/src/ffluci/model/cbi/admin_network/portfw.lua new file mode 100644 index 000000000..6f8822a89 --- /dev/null +++ b/src/ffluci/model/cbi/admin_network/portfw.lua @@ -0,0 +1,18 @@ +-- ToDo: Translate, Add descriptions and help texts +m = Map("luci_fw", "Portweiterleitung") + +s = m:section(TypedSection, "portfw") +s.addremove = true +s.anonymous = true + +iface = s:option(Value, "in_interface", "Externes Interface") + +proto = s:option(ListValue, "proto", "Protokoll") +proto:value("tcp", "TCP") +proto:value("udp", "UDP") + +dport = s:option(Value, "dport", "Externer Port", "Port[:Endport]") + +to = s:option(Value, "to", "Interne Adresse", "IP-Adresse[:Zielport[-Zielendport]]") + +return m \ No newline at end of file diff --git a/src/ffluci/model/menu/00main.lua b/src/ffluci/model/menu/00main.lua index 64fc36462..966c4228c 100644 --- a/src/ffluci/model/menu/00main.lua +++ b/src/ffluci/model/menu/00main.lua @@ -17,6 +17,8 @@ act("vlan", "Switch") act("ifaces", "Schnittstellen") act("ptp", "PPPoE / PPTP") act("routes", "Statische Routen") +act("portfw", "Portweiterleitung") +act("firewall", "Firewall") add("admin", "wifi", "Drahtlos", 40) act("devices", "Geräte") diff --git a/src/ffluci/model/uci.lua b/src/ffluci/model/uci.lua index 94a385c7e..828659780 100644 --- a/src/ffluci/model/uci.lua +++ b/src/ffluci/model/uci.lua @@ -157,12 +157,12 @@ end function Session._uci3(self, cmd) local res = ffluci.sys.execl(self.ucicmd .. " 2>&1 " .. cmd) - if res[1]:sub(1, ucicmd:len() + 1) == ucicmd .. ":" then + if res[1] and res[1]:sub(1, self.ucicmd:len()+1) == self.ucicmd..":" then return nil, res[1] end table = {} - + for k,line in pairs(res) do c, s, t = line:match("^([^.]-)%.([^.]-)=(.-)$") if c then -- 2.25.1