<%# Copyright 2008-2009 Steven Barth Copyright 2008-2015 Jo-Philipp Wich Licensed to the public under the Apache License 2.0. -%> <%- require "luci.sys.iptparser" local wba = require "luci.tools.webadmin" local fs = require "nixio.fs" local io = require "io" local has_ip6tables = fs.access("/usr/sbin/ip6tables") local mode = 4 if has_ip6tables then mode = luci.dispatcher.context.requestpath mode = tonumber(mode[#mode] ~= "iptables" and mode[#mode]) or 4 end local ipt = luci.sys.iptparser.IptParser(mode) local rowcnt = 1 function rowstyle() rowcnt = rowcnt + 1 return (rowcnt % 2) + 1 end function link_target(t,c) if ipt:is_custom_target(c) then return '%s' %{ t:lower(), c, c } end return c end function link_iface(i) local net = wba.iface_get_network(i) if net and i ~= "lo" then return '%s' %{ url("admin/network/network", net), i } end return i end local tables = { "Filter", "NAT", "Mangle", "Raw" } if mode == 6 then tables = { "Filter", "Mangle", "Raw" } local ok, lines = pcall(io.lines, "/proc/net/ip6_tables_names") if ok and lines then local line for line in lines do if line == "nat" then tables = { "Filter", "NAT", "Mangle", "Raw" } end end end end -%> <%+header%>

<%:Firewall Status%>


<% if has_ip6tables then %> <% end %>
" style="position: absolute; right: 0">
<% for _, tbl in ipairs(tables) do chaincnt = 0 %>

<%:Table%>: <%=tbl%>

<% for _, chain in ipairs(ipt:chains(tbl)) do rowcnt = 0 chaincnt = chaincnt + 1 chaininfo = ipt:chain(tbl, chain) %> <% for _, rule in ipairs(ipt:find({table=tbl, chain=chain})) do %> <% end %> <% if rowcnt == 1 then %> <% end %> <% end %> <% if chaincnt == 0 then %> <% end %>

<%:Chain%> <%=chain%> (<%- if chaininfo.policy then -%> <%:Policy%>: <%=chaininfo.policy%>, <%:Packets%>: <%=chaininfo.packets%>, <%:Traffic%>: <%=wba.byte_format(chaininfo.bytes)-%> <%- else -%> <%:References%>: <%=chaininfo.references-%> <%- end -%>)
<%:Pkts.%> <%:Traffic%> <%:Target%> <%:Prot.%> <%:In%> <%:Out%> <%:Source%> <%:Destination%> <%:Options%>
<%=rule.packets%> <%=wba.byte_format(rule.bytes)%> <%=rule.target and link_target(tbl, rule.target) or "-"%> <%=rule.protocol%> <%=link_iface(rule.inputif)%> <%=link_iface(rule.outputif)%> <%=rule.source%> <%=rule.destination%> <%=#rule.options > 0 and luci.util.pcdata(table.concat(rule.options, " ")) or "-"%>
<%:No rules in this chain%>
<%:No chains in this table%>


<% end %>
<%+footer%>