From 69bf33f5228291767ad9042b7eedd3f2190d6bd2 Mon Sep 17 00:00:00 2001 From: Ted Trask Date: Mon, 30 Jul 2012 23:38:57 +0000 Subject: Removed redirect_to_referrer, fixed startstop by moving iptables-html.lsp file, fixed status to use modelfunctions library --- iptables-model.lua | 65 +++++++++++++++++++++++++++--------------------------- 1 file changed, 33 insertions(+), 32 deletions(-) (limited to 'iptables-model.lua') diff --git a/iptables-model.lua b/iptables-model.lua index 06c4915..e06512e 100644 --- a/iptables-model.lua +++ b/iptables-model.lua @@ -193,17 +193,7 @@ end -- PUBLIC FUNCTIONS function getstatus() - local status = {} - - local value, errtxt = processinfo.package_version(packagename) - status.version = cfe({ - label="Program version", - value=value, - errtxt=errtxt, - name=packagename - }) - - return cfe({ type="group", value=status, label="IPtables Status" }) + return modelfunctions.getstatus(servicename, packagename, "IPtables Status") end function getstatusdetails() @@ -309,29 +299,32 @@ function create_chain(self, chain) return chain end -function delete_chain(tab, chain) - local retval = cfe({ label="Delete Chain result" }) - tab = tab or "filter" - local chn = find_chain(tab, chain) +function get_delete_chain(self, clientdata) + local retval = {} + retval.table = cfe({ type="select", value=clientdata.table or "filter", label="Table", option=tables }) + retval.chain = cfe({ value=clientdata.chain or "", label="Chain" }) + return cfe({ type="group", value=retval, label="Delete Chain" }) +end + +function delete_chain(self, chain) + local chn = find_chain(chain.value.table.value, chain.value.chain.value) if not chn then - retval.errtxt = "Could not find chain" + chain.errtxt = "Could not find chain" elseif chn.policy then - retval.errtxt = "Cannot delete built-in chain" + chain.errtxt = "Cannot delete built-in chain" elseif chn.references and tonumber(chn.references) > 0 then - retval.errtxt = "Cannot delete chain with references" + chain.errtxt = "Cannot delete chain with references" else - local cmd = path .. "iptables -t "..format.escapespecialcharacters(tab).." -X "..format.escapespecialcharacters(chain).." 2>&1" + local cmd = path .. "iptables -t "..format.escapespecialcharacters(chain.value.table.value).." -X "..format.escapespecialcharacters(chain.value.chain.value).." 2>&1" local f = io.popen(cmd) local errtxt = f:read("*a") if errtxt ~= "" then - retval.errtxt = errtxt - else - retval.value = "Deleted Chain" + chain.errtxt = errtxt end save() end - return retval + return chain end function read_rule(tab, chain, pos) @@ -536,20 +529,28 @@ function update_rule(self, rule) return rule end -function delete_rule(tab, chain, pos) - local cmdresult = cfe({ label="Delete Rule Result" }) - if not tab or not chain or not pos then - cmdresult.errtxt = "Incomplete specification - must define table, chain, and position" +function get_delete_rule(self, clientdata) + local retval = {} + -- Identification + retval.table = cfe({ type="select", value=clientdata.table or "filter", label="Table", option=tables }) + retval.chain = cfe({ value=clientdata.chain or "", label="Chain" }) + retval.position = cfe({ value=clientdata.position or "", label="Position" }) + return cfe({ type="group", value=retval, label="Delete Rule" }) +end + +function delete_rule(self, rule) + if "" == rule.value.table.value or "" == rule.value.chain.value or "" == rule.value.position.value then + rule.errtxt = "Incomplete specification - must define table, chain, and position" else - local cmd = path .. "iptables -t " .. format.escapespecialcharacters(tab) .. " -D " .. format.escapespecialcharacters(chain) .. " " .. format.escapespecialcharacters(pos) + local cmd = path .. "iptables -t " .. format.escapespecialcharacters(rule.value.table.value) .. " -D " .. format.escapespecialcharacters(rule.value.chain.value) .. " " .. format.escapespecialcharacters(rule.value.position.value) local f = io.popen(cmd) - cmdresult.value = f:read("*a") + rule.errtxt = f:read("*a") f:close() - if string.match(cmdresult.value, "^%s*$") then - cmdresult.value = "Deleted rule" + if string.match(rule.errtxt, "^%s*$") then + rule.errtxt = nil end end - return cmdresult + return rule end function readrulesfile() -- cgit v1.2.3