From fa40172915e1e4e130cdd1f01aac5a69766ae3e5 Mon Sep 17 00:00:00 2001 From: Steven Barth Date: Wed, 8 Oct 2008 21:48:44 +0000 Subject: [PATCH] Backported conntrack page --- i18n/english/luasrc/i18n/admin-core.en.lua | 2 + i18n/english/luasrc/i18n/admin-core.en.xml | 2 + i18n/english/luasrc/i18n/default.en.lua | 2 + i18n/english/luasrc/i18n/default.en.xml | 2 + i18n/german/luasrc/i18n/admin-core.de.lua | 2 + i18n/german/luasrc/i18n/admin-core.de.xml | 2 + i18n/german/luasrc/i18n/default.de.lua | 2 + i18n/german/luasrc/i18n/default.de.xml | 2 + libs/sys/luasrc/sys.lua | 37 +++++++++++++++- .../luasrc/controller/admin/network.lua | 7 +++ .../model/cbi/admin_network/conntrack.lua | 44 +++++++++++++++++++ 11 files changed, 102 insertions(+), 2 deletions(-) create mode 100644 modules/admin-full/luasrc/model/cbi/admin_network/conntrack.lua diff --git a/i18n/english/luasrc/i18n/admin-core.en.lua b/i18n/english/luasrc/i18n/admin-core.en.lua index f5d0a28ef3..7eacad3551 100644 --- a/i18n/english/luasrc/i18n/admin-core.en.lua +++ b/i18n/english/luasrc/i18n/admin-core.en.lua @@ -163,6 +163,8 @@ dhcp_dnsmasq_dhcpleasemax = 'max. VLANs.' diff --git a/i18n/english/luasrc/i18n/admin-core.en.xml b/i18n/english/luasrc/i18n/admin-core.en.xml index 255bd5d8e9..dff5516145 100644 --- a/i18n/english/luasrc/i18n/admin-core.en.xml +++ b/i18n/english/luasrc/i18n/admin-core.en.xml @@ -167,6 +167,8 @@ additional hostfile query port Switch +Active Connections +This page gives an overview over currently active network connections. Routes In this area you find all network-related settings. On most routers the network switch can be freely configured and splitted up into several VLANs. diff --git a/i18n/english/luasrc/i18n/default.en.lua b/i18n/english/luasrc/i18n/default.en.lua index 6b8a3c744b..f2db899ef5 100644 --- a/i18n/english/luasrc/i18n/default.en.lua +++ b/i18n/english/luasrc/i18n/default.en.lua @@ -17,6 +17,7 @@ confirmation = 'Confirmation' delete = 'Delete' descr = 'Description' design = 'Design' +destination = 'Destination' device = 'Device' devices = 'Devices' disable = 'disable' @@ -75,6 +76,7 @@ service = 'Service' services = 'Services' settings = 'Settings' size = 'Size' +source = 'Source' start = 'Start' static = 'static' status = 'Status' diff --git a/i18n/english/luasrc/i18n/default.en.xml b/i18n/english/luasrc/i18n/default.en.xml index 7e1b9a7093..00015bbc7b 100644 --- a/i18n/english/luasrc/i18n/default.en.xml +++ b/i18n/english/luasrc/i18n/default.en.xml @@ -22,6 +22,7 @@ Delete Description Design +Destination Device Devices disable @@ -80,6 +81,7 @@ Services Settings Size +Source Start static Status diff --git a/i18n/german/luasrc/i18n/admin-core.de.lua b/i18n/german/luasrc/i18n/admin-core.de.lua index 30258fbffe..0f1310ac53 100644 --- a/i18n/german/luasrc/i18n/admin-core.de.lua +++ b/i18n/german/luasrc/i18n/admin-core.de.lua @@ -25,6 +25,8 @@ a_n_routes_static = 'Statische Routen' a_n_routes_kernel4 = 'Aktive IPv4-Routen' a_n_switch = 'Switch' a_n_switch1 = 'Die Netzwerkschnittstellen am Router können zu verschienden VLANs zusammengefasst werden, in denen Geräte miteinander direkt kommunizieren können. VLANs werden auch häufig dazu genutzt, um Netzwerke voneiander zu trennen. So ist oftmals eine Schnittstelle als Uplink zu einem größerem Netz, wie dem Internet vorkonfiguriert und die anderen Schnittstellen bilden ein VLAN für das lokale Netzwerk.' +a_n_conntrack = 'Aktive Verbindungen' +a_n_conntrack_desc = 'Diese Seite gibt eine Übersicht über aktive Netzwerkverbindungen.' a_network1 = 'In diesem Bereich finden sich alle netzwerkbezogenen Einstellungen.' a_network2 = 'Der Netzwerkswitch kann bei den meisten Routern frei konfiguriert und in mehrere VLANs aufgeteilt werden.' a_network3 = 'Schnittstellen und PPPoE/PPTP-Einstellungen ermöglichen die freie Organisation des Netzwerks und die Anbindung an ein WAN.' diff --git a/i18n/german/luasrc/i18n/admin-core.de.xml b/i18n/german/luasrc/i18n/admin-core.de.xml index 3a821c3fdb..1451fc654f 100644 --- a/i18n/german/luasrc/i18n/admin-core.de.xml +++ b/i18n/german/luasrc/i18n/admin-core.de.xml @@ -29,6 +29,8 @@ Aktive IPv4-Routen Switch Die Netzwerkschnittstellen am Router können zu verschienden VLANs zusammengefasst werden, in denen Geräte miteinander direkt kommunizieren können. VLANs werden auch häufig dazu genutzt, um Netzwerke voneiander zu trennen. So ist oftmals eine Schnittstelle als Uplink zu einem größerem Netz, wie dem Internet vorkonfiguriert und die anderen Schnittstellen bilden ein VLAN für das lokale Netzwerk. +Aktive Verbindungen +Diese Seite gibt eine Übersicht über aktive Netzwerkverbindungen. In diesem Bereich finden sich alle netzwerkbezogenen Einstellungen. Der Netzwerkswitch kann bei den meisten Routern frei konfiguriert und in mehrere VLANs aufgeteilt werden. Schnittstellen und PPPoE/PPTP-Einstellungen ermöglichen die freie Organisation des Netzwerks und die Anbindung an ein WAN. diff --git a/i18n/german/luasrc/i18n/default.de.lua b/i18n/german/luasrc/i18n/default.de.lua index 02f86d99f7..ff640dbf76 100644 --- a/i18n/german/luasrc/i18n/default.de.lua +++ b/i18n/german/luasrc/i18n/default.de.lua @@ -17,6 +17,7 @@ confirmation = 'Bestätigung' delete = 'Löschen' descr = 'Beschreibung' design = 'Design' +destination = 'Ziel' device = 'Gerät' devices = 'Geräte' disable = 'deaktivieren' @@ -75,6 +76,7 @@ service = 'Dienst' services = 'Dienste' settings = 'Einstellungen' size = 'Größe' +source = 'Quelle' start = 'Start' static = 'statisch' statistics = 'Statistiken' diff --git a/i18n/german/luasrc/i18n/default.de.xml b/i18n/german/luasrc/i18n/default.de.xml index 1e85fe26c9..0fc1d65b46 100644 --- a/i18n/german/luasrc/i18n/default.de.xml +++ b/i18n/german/luasrc/i18n/default.de.xml @@ -26,6 +26,7 @@ Löschen Beschreibung Design +Ziel Gerät Geräte deaktivieren @@ -98,6 +99,7 @@ Dienste Einstellungen Größe +Quelle Start statisch Statistiken diff --git a/libs/sys/luasrc/sys.lua b/libs/sys/luasrc/sys.lua index 96690d2976..a4592d3e13 100644 --- a/libs/sys/luasrc/sys.lua +++ b/libs/sys/luasrc/sys.lua @@ -259,6 +259,38 @@ function net.arptable() return _parse_delimited_table(io.lines("/proc/net/arp"), "%s%s+") end +--- Returns conntrack information +-- @return Table with the currently tracked IP connections +function net.conntrack() + local connt = {} + if luci.fs.access("/proc/net/nf_conntrack") then + for line in io.lines("/proc/net/nf_conntrack") do + local entry = _parse_mixed_record(line, " +") + entry.layer3 = entry[1] + entry.layer4 = entry[2] + for i=1, #entry do + entry[i] = nil + end + + connt[#connt+1] = entry + end + elseif luci.fs.access("/proc/net/ip_conntrack") then + for line in io.lines("/proc/net/nf_conntrack") do + local entry = _parse_mixed_record(line, " +") + entry.layer3 = "ipv4" + entry.layer4 = entry[1] + for i=1, #entry do + entry[i] = nil + end + + connt[#connt+1] = entry + end + else + return nil + end + return connt +end + --- Determine the current default route. -- @return Table with the properties of the current default route. -- The following fields are defined: @@ -610,11 +642,12 @@ function _parse_delimited_table(iter, delimiter) return data end -function _parse_mixed_record(cnt) +function _parse_mixed_record(cnt, delimiter) + delimiter = delimiter or " " local data = {} for i, l in pairs(luci.util.split(luci.util.trim(cnt), "\n")) do - for j, f in pairs(luci.util.split(luci.util.trim(l), " ")) do + for j, f in pairs(luci.util.split(luci.util.trim(l), delimiter, nil, true)) do local k, x, v = f:match('([^%s][^:=]+) *([:=]*) *"*([^\n"]*)"*') if k then diff --git a/modules/admin-full/luasrc/controller/admin/network.lua b/modules/admin-full/luasrc/controller/admin/network.lua index 72bf7cc5a9..e3f80a1b1e 100644 --- a/modules/admin-full/luasrc/controller/admin/network.lua +++ b/modules/admin-full/luasrc/controller/admin/network.lua @@ -94,4 +94,11 @@ function index() i18n("a_n_routes_static") ) + entry( + {"admin", "network", "conntrack"}, + form("admin_network/conntrack"), + i18n("a_n_conntrack"), + 60 + ) + end diff --git a/modules/admin-full/luasrc/model/cbi/admin_network/conntrack.lua b/modules/admin-full/luasrc/model/cbi/admin_network/conntrack.lua new file mode 100644 index 0000000000..4cd6d2b60e --- /dev/null +++ b/modules/admin-full/luasrc/model/cbi/admin_network/conntrack.lua @@ -0,0 +1,44 @@ +--[[ +LuCI - Lua Configuration Interface + +Copyright 2008 Steven Barth +Copyright 2008 Jo-Philipp Wich + +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$ +]]-- + +f = SimpleForm("conntrack", translate("a_n_conntrack"), translate("a_n_conntrack_desc")) +f.reset = false +f.submit = false + +t = f:section(Table, luci.sys.net.conntrack()) +l3 = t:option(DummyValue, "layer3", translate("network")) +function l3.cfgvalue(self, ...) + return DummyValue.cfgvalue(self, ...):upper() +end + + +l4 = t:option(DummyValue, "layer4", translate("protocol")) +function l4.cfgvalue(self, ...) + return DummyValue.cfgvalue(self, ...):upper() +end + +s = t:option(DummyValue, "src", translate("source")) +function s.cfgvalue(self, section) + return "%s:%s" % { self.map:get(section, "src"), + self.map:get(section, "sport") or "*" } +end + +d = t:option(DummyValue, "dst", translate("destination")) +function d.cfgvalue(self, section) + return "%s:%s" % { self.map:get(section, "dst"), + self.map:get(section, "dport") or "*" } +end + +return f \ No newline at end of file -- 2.30.2