This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "IPFire 2.x development tree".
The branch, next has been updated
via a68afb6b7b632c6cbd79a39ac0f2e6d1428d82e4 (commit)
via a0d7f366c9ba343e519868da240417b028af88ea (commit)
via 005efd4e29a0f2c4fbc12f84ec6b0f16d64c3bc8 (commit)
via 75732eb18066cb564a9b94aa635bcabe20aa903e (commit)
via f73de15117b377a86b8895bfff1a2281ce8a8354 (commit)
via 06345fbc0dc706bdfc52b005dc96e12af4b27c02 (commit)
via 824f4c97096c33cf0de248cb7ce0d8940b0ed9bc (commit)
via 21cef199759a75bfe0d9ea26d7d3f6480fcf126a (commit)
via 3cfe40fa65fb69430d7a3825c6f207f188661e98 (commit)
via 4f0f0a9d2a62ccdad8230fa0405f31b08b4123a8 (commit)
via 6fa4cdf7e3dcfa0ede6e5b976e185dff6893f8b3 (commit)
via 1392ccfe30b4b62b7638ef1a8fa78102b5f6498f (commit)
via 094b9c66de4cd6a08e998675cefc72d2ed5d2c51 (commit)
via 33e76e6e2c22000ba0d210265e03f03c124a7e4a (commit)
via b66718b334336c8589291c67af9d4e68dee7627f (commit)
via 185f0a9b40bef44ee590ec337cb0b7845eeea86c (commit)
via 4d0a12624de2e1d1eddf28bb0fba927999b1d8ae (commit)
via 0221bacb7417a3c4406aebd14e6b88ac877f342a (commit)
via 81784657c9b95b22912e78cfe06dfda3e3c81bed (commit)
via aaa9c561c1101155be48e99837f8e85c6e12ae65 (commit)
via dd66b39d6bdc0d10f21d3f56347c11625508da1e (commit)
via 69dcb9bd659bbde4e738b6db24795c5646dcbf48 (commit)
via 0e8bb539ce38221154a3e35a108849b371c26e27 (commit)
via 60d90975114bff2c351161ae138b563aa750d38c (commit)
via 7f2fbf2767167e250d8fe48b33102ed04a11efc0 (commit)
via 8e592614462cf081219badf61869b5fb7786c11e (commit)
via d33000e9918e6f50478439eed1bf19fc2c2c598e (commit)
via c0c3fd55265b837fcc33c99dba6bde5a4bd9f4fe (commit)
via c895b0fb522d49b61ef5b4689c079c8780d652a2 (commit)
via e9427470af119f2f6d0ce661a49396eb22eba34c (commit)
via 2682a1d17af8a1eeb309bbb04df5a97a3c7c55cb (commit)
via 3fb09506ae1682adc2e12bd4ffe5ad438197da2d (commit)
from 6c6959694ac55969e320e30247a799f6acc9accc (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit a68afb6b7b632c6cbd79a39ac0f2e6d1428d82e4
Author: Michael Tremer <michael.tremer(a)ipfire.org>
Date: Wed Aug 7 16:36:24 2024 +0200
extrahd.cgi: Make table use the full width
Signed-off-by: Michael Tremer <michael.tremer(a)ipfire.org>
commit a0d7f366c9ba343e519868da240417b028af88ea
Author: Michael Tremer <michael.tremer(a)ipfire.org>
Date: Wed Aug 7 16:35:02 2024 +0200
qos.cgi: Make all tables use the full width
Signed-off-by: Michael Tremer <michael.tremer(a)ipfire.org>
commit 005efd4e29a0f2c4fbc12f84ec6b0f16d64c3bc8
Author: Michael Tremer <michael.tremer(a)ipfire.org>
Date: Wed Aug 7 16:29:23 2024 +0200
firewall.cgi: Merge the ID and policy columns
This saves us a little bit of space and looks tidier to me.
Signed-off-by: Michael Tremer <michael.tremer(a)ipfire.org>
commit 75732eb18066cb564a9b94aa635bcabe20aa903e
Author: Michael Tremer <michael.tremer(a)ipfire.org>
Date: Wed Aug 7 16:24:48 2024 +0200
firewall.cgi: Fix policy colours for rules
Signed-off-by: Michael Tremer <michael.tremer(a)ipfire.org>
commit f73de15117b377a86b8895bfff1a2281ce8a8354
Author: Michael Tremer <michael.tremer(a)ipfire.org>
Date: Wed Aug 7 16:20:30 2024 +0200
firewall.cgi: Remove box around top buttons
Signed-off-by: Michael Tremer <michael.tremer(a)ipfire.org>
commit 06345fbc0dc706bdfc52b005dc96e12af4b27c02
Author: Michael Tremer <michael.tremer(a)ipfire.org>
Date: Wed Aug 7 16:18:01 2024 +0200
firewall.cgi: Fix colouring of the rule actions
Signed-off-by: Michael Tremer <michael.tremer(a)ipfire.org>
commit 824f4c97096c33cf0de248cb7ce0d8940b0ed9bc
Author: Michael Tremer <michael.tremer(a)ipfire.org>
Date: Wed Aug 7 16:10:48 2024 +0200
firewall.cgi: Fix colouring of the default firewall policy
Signed-off-by: Michael Tremer <michael.tremer(a)ipfire.org>
commit 21cef199759a75bfe0d9ea26d7d3f6480fcf126a
Author: Michael Tremer <michael.tremer(a)ipfire.org>
Date: Wed Aug 7 15:45:24 2024 +0200
ovpnmain.cgi: Fix connection status colours
Signed-off-by: Michael Tremer <michael.tremer(a)ipfire.org>
commit 3cfe40fa65fb69430d7a3825c6f207f188661e98
Author: Michael Tremer <michael.tremer(a)ipfire.org>
Date: Wed Aug 7 15:39:40 2024 +0200
vpnmain.cgi: Fix connection status colours
Signed-off-by: Michael Tremer <michael.tremer(a)ipfire.org>
commit 4f0f0a9d2a62ccdad8230fa0405f31b08b4123a8
Author: Michael Tremer <michael.tremer(a)ipfire.org>
Date: Wed Aug 7 15:31:11 2024 +0200
services.cgi: Remove showing the PIDs for add-on services
This was only showing one PID and I don't see any reason why anyone
would need this.
Signed-off-by: Michael Tremer <michael.tremer(a)ipfire.org>
commit 6fa4cdf7e3dcfa0ede6e5b976e185dff6893f8b3
Author: Michael Tremer <michael.tremer(a)ipfire.org>
Date: Wed Aug 7 15:29:57 2024 +0200
services.cgi: Use new functions to figure out memory usage
Signed-off-by: Michael Tremer <michael.tremer(a)ipfire.org>
commit 1392ccfe30b4b62b7638ef1a8fa78102b5f6498f
Author: Michael Tremer <michael.tremer(a)ipfire.org>
Date: Wed Aug 7 15:27:22 2024 +0200
services.cgi: Fix colouring of the add-on status
Signed-off-by: Michael Tremer <michael.tremer(a)ipfire.org>
commit 094b9c66de4cd6a08e998675cefc72d2ed5d2c51
Author: Michael Tremer <michael.tremer(a)ipfire.org>
Date: Wed Aug 7 15:24:14 2024 +0200
services.cgi: Remove manual table striping
Signed-off-by: Michael Tremer <michael.tremer(a)ipfire.org>
commit 33e76e6e2c22000ba0d210265e03f03c124a7e4a
Author: Michael Tremer <michael.tremer(a)ipfire.org>
Date: Wed Aug 7 15:20:56 2024 +0200
services.cgi: Remove excessive styling that has no effect
Signed-off-by: Michael Tremer <michael.tremer(a)ipfire.org>
commit b66718b334336c8589291c67af9d4e68dee7627f
Author: Michael Tremer <michael.tremer(a)ipfire.org>
Date: Wed Aug 7 15:14:14 2024 +0200
connections.cgi: Only evaluate value networks
Signed-off-by: Michael Tremer <michael.tremer(a)ipfire.org>
commit 185f0a9b40bef44ee590ec337cb0b7845eeea86c
Author: Michael Tremer <michael.tremer(a)ipfire.org>
Date: Wed Aug 7 14:32:55 2024 +0200
langs: Add translation for WireGuard
Signed-off-by: Michael Tremer <michael.tremer(a)ipfire.org>
commit 4d0a12624de2e1d1eddf28bb0fba927999b1d8ae
Author: Michael Tremer <michael.tremer(a)ipfire.org>
Date: Sat Apr 27 19:15:19 2024 +0200
connections.cgi: Remove country headline
This takes way more space than the actual flag and therefore makes the
table wider which we don't want.
Signed-off-by: Michael Tremer <michael.tremer(a)ipfire.org>
commit 0221bacb7417a3c4406aebd14e6b88ac877f342a
Author: Michael Tremer <michael.tremer(a)ipfire.org>
Date: Sat Apr 27 19:13:28 2024 +0200
connections.cgi: Refactor reading networks
This is still a total nightmare because we are yet again writing
functions that read the same configuration files all over again.
Signed-off-by: Michael Tremer <michael.tremer(a)ipfire.org>
commit 81784657c9b95b22912e78cfe06dfda3e3c81bed
Author: Michael Tremer <michael.tremer(a)ipfire.org>
Date: Sat Apr 27 14:02:31 2024 +0200
connections.cgi: Remove the extra box
Signed-off-by: Michael Tremer <michael.tremer(a)ipfire.org>
commit aaa9c561c1101155be48e99837f8e85c6e12ae65
Author: Michael Tremer <michael.tremer(a)ipfire.org>
Date: Sat Apr 27 13:59:03 2024 +0200
connections.cgi: Use &General::format_time()
Signed-off-by: Michael Tremer <michael.tremer(a)ipfire.org>
commit dd66b39d6bdc0d10f21d3f56347c11625508da1e
Author: Michael Tremer <michael.tremer(a)ipfire.org>
Date: Sat Apr 27 13:55:53 2024 +0200
connections.cgi: Make it clearer which direction traffic is flowing
Signed-off-by: Michael Tremer <michael.tremer(a)ipfire.org>
commit 69dcb9bd659bbde4e738b6db24795c5646dcbf48
Author: Michael Tremer <michael.tremer(a)ipfire.org>
Date: Sat Apr 27 13:50:31 2024 +0200
connections.cgi: Use &General::formatBytes() for format usage
Signed-off-by: Michael Tremer <michael.tremer(a)ipfire.org>
commit 0e8bb539ce38221154a3e35a108849b371c26e27
Author: Michael Tremer <michael.tremer(a)ipfire.org>
Date: Sat Apr 27 13:47:53 2024 +0200
connections.cgi: Use the .tbl class for the main table
Signed-off-by: Michael Tremer <michael.tremer(a)ipfire.org>
commit 60d90975114bff2c351161ae138b563aa750d38c
Author: Michael Tremer <michael.tremer(a)ipfire.org>
Date: Sat Apr 27 13:43:49 2024 +0200
connections.cgi: Parse conntrack table without loading it all first
We used to load the entire table into memory which is very unnecessary
because we can parse it one line at a time.
Signed-off-by: Michael Tremer <michael.tremer(a)ipfire.org>
commit 7f2fbf2767167e250d8fe48b33102ed04a11efc0
Author: Michael Tremer <michael.tremer(a)ipfire.org>
Date: Sat Apr 27 13:33:11 2024 +0200
connections.cgi: Remove sorting
This has first of all very little benefit and the code is too messy. Why
would anyone want to sort by port? I think we might want a search here.
Signed-off-by: Michael Tremer <michael.tremer(a)ipfire.org>
commit 8e592614462cf081219badf61869b5fb7786c11e
Author: Michael Tremer <michael.tremer(a)ipfire.org>
Date: Sat Apr 27 13:28:19 2024 +0200
connections.cgi: Define colours for WG address space
Signed-off-by: Michael Tremer <michael.tremer(a)ipfire.org>
commit d33000e9918e6f50478439eed1bf19fc2c2c598e
Author: Michael Tremer <michael.tremer(a)ipfire.org>
Date: Sat Apr 27 13:27:56 2024 +0200
header.pl: Define a colour for WireGuard
Signed-off-by: Michael Tremer <michael.tremer(a)ipfire.org>
commit c0c3fd55265b837fcc33c99dba6bde5a4bd9f4fe
Author: Michael Tremer <michael.tremer(a)ipfire.org>
Date: Thu Apr 25 20:36:23 2024 +0200
CSS: Don't try to justify any text
Signed-off-by: Michael Tremer <michael.tremer(a)ipfire.org>
commit c895b0fb522d49b61ef5b4689c079c8780d652a2
Author: Michael Tremer <michael.tremer(a)ipfire.org>
Date: Wed Aug 7 14:21:09 2024 +0200
Revert "CSS: Make all <select> and <textarea> use all available space"
This reverts commit 17c29ce7fefe36be09d05e42a8b50d10e7ca5d17.
Signed-off-by: Michael Tremer <michael.tremer(a)ipfire.org>
commit e9427470af119f2f6d0ce661a49396eb22eba34c
Author: Michael Tremer <michael.tremer(a)ipfire.org>
Date: Wed Aug 7 14:20:58 2024 +0200
Revert "CSS: Make text/number inputs 100% wide, too"
This reverts commit 8eb016da793e623ab5b5b7b05556f9c5dfa8faa2.
Signed-off-by: Michael Tremer <michael.tremer(a)ipfire.org>
commit 2682a1d17af8a1eeb309bbb04df5a97a3c7c55cb
Author: Michael Tremer <michael.tremer(a)ipfire.org>
Date: Wed Aug 7 14:16:43 2024 +0200
ids.cgi: Use the PID file to find suricata
The process changes it name to "Suricata-Main" which is why the previous
method did not work.
Signed-off-by: Michael Tremer <michael.tremer(a)ipfire.org>
commit 3fb09506ae1682adc2e12bd4ffe5ad438197da2d
Author: Michael Tremer <michael.tremer(a)ipfire.org>
Date: Sat Mar 23 19:16:48 2024 +0100
ids.cgi: Use new services function
Signed-off-by: Michael Tremer <michael.tremer(a)ipfire.org>
-----------------------------------------------------------------------
Summary of changes:
config/cfgroot/header.pl | 1 +
doc/language_issues.de | 7 +
doc/language_issues.en | 7 +-
doc/language_issues.es | 7 +-
doc/language_issues.fr | 7 +
doc/language_issues.it | 7 +-
doc/language_issues.nl | 7 +-
doc/language_issues.pl | 7 +-
doc/language_issues.ru | 7 +-
doc/language_issues.tr | 7 +-
doc/language_missings | 16 +
html/cgi-bin/connections.cgi | 468 +++++++-------------------
html/cgi-bin/extrahd.cgi | 2 +-
html/cgi-bin/firewall.cgi | 171 +++++-----
html/cgi-bin/ids.cgi | 91 +----
html/cgi-bin/ovpnmain.cgi | 20 +-
html/cgi-bin/qos.cgi | 20 +-
html/cgi-bin/services.cgi | 66 ++--
html/cgi-bin/vpnmain.cgi | 16 +-
html/html/themes/ipfire/include/css/style.css | 69 +++-
langs/en/cgi-bin/en.pl | 2 +
21 files changed, 381 insertions(+), 624 deletions(-)
Difference in files:
diff --git a/config/cfgroot/header.pl b/config/cfgroot/header.pl
index a4a4f5d03..1d1146978 100644
--- a/config/cfgroot/header.pl
+++ b/config/cfgroot/header.pl
@@ -40,6 +40,7 @@ $Header::colourblue = '#333399';
$Header::colourovpn = '#339999';
$Header::colourfw = '#000000';
$Header::colourvpn = '#990099';
+$Header::colourwg = '#ff007f';
$Header::colourerr = '#FF0000';
$Header::viewsize = 150;
$Header::errormessage = '';
diff --git a/doc/language_issues.de b/doc/language_issues.de
index e2ca260de..9227a02fc 100644
--- a/doc/language_issues.de
+++ b/doc/language_issues.de
@@ -140,6 +140,7 @@ WARNING: translation string unused: bitrate
WARNING: translation string unused: bleeding rules
WARNING: translation string unused: blue access use hint
WARNING: translation string unused: blue interface
+WARNING: translation string unused: bytes
WARNING: translation string unused: cache management
WARNING: translation string unused: cache size
WARNING: translation string unused: calamaris report interval (in minutes)
@@ -276,6 +277,7 @@ WARNING: translation string unused: encrypted
WARNING: translation string unused: enter ack class
WARNING: translation string unused: entropy
WARNING: translation string unused: entropy graphs
+WARNING: translation string unused: eol architecture warning
WARNING: translation string unused: err bk 1
WARNING: translation string unused: err bk 10 password
WARNING: translation string unused: err bk 2 key
@@ -382,6 +384,7 @@ WARNING: translation string unused: guest ok
WARNING: translation string unused: gz with key
WARNING: translation string unused: harddisk temperature
WARNING: translation string unused: harddisk temperature graphs
+WARNING: translation string unused: high memory usage
WARNING: translation string unused: hint
WARNING: translation string unused: host
WARNING: translation string unused: host allow
@@ -710,6 +713,8 @@ WARNING: translation string unused: smbstop
WARNING: translation string unused: smtphost
WARNING: translation string unused: smtpport
WARNING: translation string unused: socket options
+WARNING: translation string unused: sort ascending
+WARNING: translation string unused: sort descending
WARNING: translation string unused: source ip bad
WARNING: translation string unused: source ip in use
WARNING: translation string unused: source ip or net
@@ -904,6 +909,7 @@ WARNING: untranslated string: cake profile pppoe-llcsnap 40 = PPPoE LLC SNAP (40
WARNING: untranslated string: cake profile pppoe-ptm 27 = PPPoE PTM (27 bytes)
WARNING: untranslated string: cake profile pppoe-vcmux 32 = PPPoE VC-MUX (32 bytes)
WARNING: untranslated string: cake profile raw 0 = Raw (no overhead compensation)
+WARNING: untranslated string: data transfer = Data Transfer
WARNING: untranslated string: desired = Desired
WARNING: untranslated string: disable = Disable
WARNING: untranslated string: download apple profile = Download Apple Configuration Profile
@@ -1107,6 +1113,7 @@ WARNING: untranslated string: wio_wan_up = unknown string
WARNING: untranslated string: wio_wanname = unknown string
WARNING: untranslated string: wio_webinterface = unknown string
WARNING: untranslated string: wio_webinterface_link = unknown string
+WARNING: untranslated string: wireguard = WireGuard
WARNING: untranslated string: wlan client encryption wpa3 = WPA3
WARNING: untranslated string: wlan client management frame protection = Management Frame Protection
WARNING: untranslated string: wlanap 802.11w disabled = Disabled
diff --git a/doc/language_issues.en b/doc/language_issues.en
index 443c2a951..7cd36aff3 100644
--- a/doc/language_issues.en
+++ b/doc/language_issues.en
@@ -362,7 +362,6 @@ WARNING: untranslated string: broken = Broken
WARNING: untranslated string: broken pipe = Broken pipe
WARNING: untranslated string: buffered memory = Buffered Memory
WARNING: untranslated string: buffers = buffers
-WARNING: untranslated string: bytes = unknown string
WARNING: untranslated string: bytes per second = Bytes per Second
WARNING: untranslated string: bytes received = Bytes Received
WARNING: untranslated string: bytes sent = Bytes Sent
@@ -540,6 +539,7 @@ WARNING: untranslated string: current playlist = Current Playlist
WARNING: untranslated string: current rules = Current rules:
WARNING: untranslated string: daemon login script = Daemon login script
WARNING: untranslated string: dangerous = Dangerous
+WARNING: untranslated string: data transfer = Data Transfer
WARNING: untranslated string: date = Date
WARNING: untranslated string: date not in logs = No (or only partial) logs exist for the day queried
WARNING: untranslated string: day = Day
@@ -736,7 +736,6 @@ WARNING: untranslated string: encapsulation = Encapsulation
WARNING: untranslated string: encryption = Encryption:
WARNING: untranslated string: end address = End address:
WARNING: untranslated string: enter data = Enter your settings <br /> and then press <i>Save</i>.
-WARNING: untranslated string: eol architecture warning = You are running an architecture of IPFire which reached its end of life. You will not receive updates anymore. This is a security risk.
WARNING: untranslated string: error = Error
WARNING: untranslated string: error message = unknown string
WARNING: untranslated string: error messages = Error messages
@@ -1023,7 +1022,6 @@ WARNING: untranslated string: hardware vulnerabilities = Hardware Vulnerabilitie
WARNING: untranslated string: hdd temperature in = Harddisk temperature in
WARNING: untranslated string: help = Help
WARNING: untranslated string: high = High
-WARNING: untranslated string: high memory usage = High memory usage
WARNING: untranslated string: holdoff = Holdoff time (in seconds)
WARNING: untranslated string: host certificate = Host Certificate
WARNING: untranslated string: host ip = Host IP address
@@ -1667,8 +1665,6 @@ WARNING: untranslated string: smt enabled = Simultaneous Multi-Threading (SMT) i
WARNING: untranslated string: smt not supported = Simultaneous Multi-Threading (SMT) is not supported
WARNING: untranslated string: snat new source ip address = New source IP address
WARNING: untranslated string: software version = Software Version
-WARNING: untranslated string: sort ascending = Sort ascending
-WARNING: untranslated string: sort descending = Sort descending
WARNING: untranslated string: sound = Sound
WARNING: untranslated string: source = Source
WARNING: untranslated string: source ip = Source IP
@@ -2294,6 +2290,7 @@ WARNING: untranslated string: wio_wan_up = unknown string
WARNING: untranslated string: wio_wanname = unknown string
WARNING: untranslated string: wio_webinterface = unknown string
WARNING: untranslated string: wio_webinterface_link = unknown string
+WARNING: untranslated string: wireguard = WireGuard
WARNING: untranslated string: wireless = Wireless
WARNING: untranslated string: wireless config added = Wireless config added
WARNING: untranslated string: wireless config changed = Wireless config changed
diff --git a/doc/language_issues.es b/doc/language_issues.es
index f949d8a03..4b04f49a1 100644
--- a/doc/language_issues.es
+++ b/doc/language_issues.es
@@ -310,6 +310,7 @@ WARNING: translation string unused: encrypted
WARNING: translation string unused: enter ack class
WARNING: translation string unused: entropy
WARNING: translation string unused: entropy graphs
+WARNING: translation string unused: eol architecture warning
WARNING: translation string unused: err bk 1
WARNING: translation string unused: err bk 10 password
WARNING: translation string unused: err bk 2 key
@@ -422,6 +423,7 @@ WARNING: translation string unused: guest ok
WARNING: translation string unused: gz with key
WARNING: translation string unused: harddisk temperature
WARNING: translation string unused: harddisk temperature graphs
+WARNING: translation string unused: high memory usage
WARNING: translation string unused: hint
WARNING: translation string unused: host
WARNING: translation string unused: host allow
@@ -774,6 +776,8 @@ WARNING: translation string unused: smtpport
WARNING: translation string unused: snort hits
WARNING: translation string unused: snort working
WARNING: translation string unused: socket options
+WARNING: translation string unused: sort ascending
+WARNING: translation string unused: sort descending
WARNING: translation string unused: source ip bad
WARNING: translation string unused: source ip in use
WARNING: translation string unused: source ip or net
@@ -963,8 +967,8 @@ WARNING: untranslated string: Scan for Songs = unknown string
WARNING: untranslated string: access point name = Access Point Name
WARNING: untranslated string: access point name is invalid = Access Point Name is invalid
WARNING: untranslated string: access point name is required = Access Point Name is required
-WARNING: untranslated string: bytes = unknown string
WARNING: untranslated string: cpu frequency = CPU frequency
+WARNING: untranslated string: data transfer = Data Transfer
WARNING: untranslated string: dhcp fixed ip address in dynamic range = Fixed IP Address in dynamic range
WARNING: untranslated string: dns servers = DNS Servers
WARNING: untranslated string: downfall gather data sampling = Downfall/Gather Data Sampling
@@ -1168,5 +1172,6 @@ WARNING: untranslated string: wio_wan_up = unknown string
WARNING: untranslated string: wio_wanname = unknown string
WARNING: untranslated string: wio_webinterface = unknown string
WARNING: untranslated string: wio_webinterface_link = unknown string
+WARNING: untranslated string: wireguard = WireGuard
WARNING: untranslated string: wlan client configuration = Wireless Client Configuration
WARNING: untranslated string: wlanap = Access Point
diff --git a/doc/language_issues.fr b/doc/language_issues.fr
index ef480a19e..b9c7c429e 100644
--- a/doc/language_issues.fr
+++ b/doc/language_issues.fr
@@ -160,6 +160,7 @@ WARNING: translation string unused: bitrate
WARNING: translation string unused: bleeding rules
WARNING: translation string unused: blue access use hint
WARNING: translation string unused: blue interface
+WARNING: translation string unused: bytes
WARNING: translation string unused: cache management
WARNING: translation string unused: cache size
WARNING: translation string unused: calamaris report interval (in minutes)
@@ -303,6 +304,7 @@ WARNING: translation string unused: encrypted
WARNING: translation string unused: enter ack class
WARNING: translation string unused: entropy
WARNING: translation string unused: entropy graphs
+WARNING: translation string unused: eol architecture warning
WARNING: translation string unused: err bk 1
WARNING: translation string unused: err bk 10 password
WARNING: translation string unused: err bk 2 key
@@ -409,6 +411,7 @@ WARNING: translation string unused: guest ok
WARNING: translation string unused: gz with key
WARNING: translation string unused: harddisk temperature
WARNING: translation string unused: harddisk temperature graphs
+WARNING: translation string unused: high memory usage
WARNING: translation string unused: hint
WARNING: translation string unused: host
WARNING: translation string unused: host allow
@@ -745,6 +748,8 @@ WARNING: translation string unused: smbstop
WARNING: translation string unused: smtphost
WARNING: translation string unused: smtpport
WARNING: translation string unused: socket options
+WARNING: translation string unused: sort ascending
+WARNING: translation string unused: sort descending
WARNING: translation string unused: source ip bad
WARNING: translation string unused: source ip in use
WARNING: translation string unused: source ip or net
@@ -926,6 +931,7 @@ WARNING: translation string unused: zoneconf val vlan tag assignment error
WARNING: translation string unused: zoneconf val vlan tag range error
WARNING: translation string unused: zoneconf val zoneslave amount error
WARNING: untranslated string: core notice 3 = available.
+WARNING: untranslated string: data transfer = Data Transfer
WARNING: untranslated string: enable disable client = unknown string
WARNING: untranslated string: enable disable dyndns = unknown string
WARNING: untranslated string: error message = unknown string
@@ -1104,3 +1110,4 @@ WARNING: untranslated string: wio_wan_up = unknown string
WARNING: untranslated string: wio_wanname = unknown string
WARNING: untranslated string: wio_webinterface = unknown string
WARNING: untranslated string: wio_webinterface_link = unknown string
+WARNING: untranslated string: wireguard = WireGuard
diff --git a/doc/language_issues.it b/doc/language_issues.it
index 44387439c..6a6acf00b 100644
--- a/doc/language_issues.it
+++ b/doc/language_issues.it
@@ -377,6 +377,7 @@ WARNING: translation string unused: guest ok
WARNING: translation string unused: gz with key
WARNING: translation string unused: harddisk temperature
WARNING: translation string unused: harddisk temperature graphs
+WARNING: translation string unused: high memory usage
WARNING: translation string unused: hint
WARNING: translation string unused: host
WARNING: translation string unused: host allow
@@ -702,6 +703,8 @@ WARNING: translation string unused: smtpport
WARNING: translation string unused: snort hits
WARNING: translation string unused: snort working
WARNING: translation string unused: socket options
+WARNING: translation string unused: sort ascending
+WARNING: translation string unused: sort descending
WARNING: translation string unused: source ip bad
WARNING: translation string unused: source ip in use
WARNING: translation string unused: source ip or net
@@ -933,7 +936,6 @@ WARNING: untranslated string: autonomous system = Autonomous System
WARNING: untranslated string: available = available
WARNING: untranslated string: block = Block
WARNING: untranslated string: broken = Broken
-WARNING: untranslated string: bytes = unknown string
WARNING: untranslated string: cake profile bridged-llcsnap 32 = Bridged LLC SNAP (32 bytes)
WARNING: untranslated string: cake profile bridged-ptm 19 = Bridged PTM (19 bytes)
WARNING: untranslated string: cake profile bridged-vcmux 24 = Bridged VC-MUX (24 bytes)
@@ -955,6 +957,7 @@ WARNING: untranslated string: cpu frequency = CPU frequency
WARNING: untranslated string: crypto error = Cryptographic error
WARNING: untranslated string: crypto warning = Cryptographic warning
WARNING: untranslated string: dangerous = Dangerous
+WARNING: untranslated string: data transfer = Data Transfer
WARNING: untranslated string: default IP address = Default IP Address
WARNING: untranslated string: desired = Desired
WARNING: untranslated string: dh = Diffie-Hellman-Parameter
@@ -1017,7 +1020,6 @@ WARNING: untranslated string: enable disable client = unknown string
WARNING: untranslated string: enable disable dyndns = unknown string
WARNING: untranslated string: enable otp = Enable OTP
WARNING: untranslated string: enable smt = Enable Simultaneous Multi-Threading (SMT)
-WARNING: untranslated string: eol architecture warning = You are running an architecture of IPFire which reached its end of life. You will not receive updates anymore. This is a security risk.
WARNING: untranslated string: error = Error
WARNING: untranslated string: error message = unknown string
WARNING: untranslated string: error the to date has to be later than the from date = The to date has to be later than the from date!
@@ -1460,6 +1462,7 @@ WARNING: untranslated string: wio_wan_up = unknown string
WARNING: untranslated string: wio_wanname = unknown string
WARNING: untranslated string: wio_webinterface = unknown string
WARNING: untranslated string: wio_webinterface_link = unknown string
+WARNING: untranslated string: wireguard = WireGuard
WARNING: untranslated string: wireless network = WiFi Network
WARNING: untranslated string: wlan client anonymous identity = Anonymous Identity
WARNING: untranslated string: wlan client auth auto = Auto
diff --git a/doc/language_issues.nl b/doc/language_issues.nl
index 57edc0f5b..5d15b7f58 100644
--- a/doc/language_issues.nl
+++ b/doc/language_issues.nl
@@ -379,6 +379,7 @@ WARNING: translation string unused: gz with key
WARNING: translation string unused: harddisk temperature
WARNING: translation string unused: harddisk temperature graphs
WARNING: translation string unused: hardware support
+WARNING: translation string unused: high memory usage
WARNING: translation string unused: hint
WARNING: translation string unused: host
WARNING: translation string unused: host allow
@@ -702,6 +703,8 @@ WARNING: translation string unused: smtpport
WARNING: translation string unused: snort hits
WARNING: translation string unused: snort working
WARNING: translation string unused: socket options
+WARNING: translation string unused: sort ascending
+WARNING: translation string unused: sort descending
WARNING: translation string unused: source ip bad
WARNING: translation string unused: source ip in use
WARNING: translation string unused: source ip or net
@@ -935,7 +938,6 @@ WARNING: untranslated string: autonomous system = Autonomous System
WARNING: untranslated string: available = available
WARNING: untranslated string: block = Block
WARNING: untranslated string: broken = Broken
-WARNING: untranslated string: bytes = unknown string
WARNING: untranslated string: cake profile bridged-llcsnap 32 = Bridged LLC SNAP (32 bytes)
WARNING: untranslated string: cake profile bridged-ptm 19 = Bridged PTM (19 bytes)
WARNING: untranslated string: cake profile bridged-vcmux 24 = Bridged VC-MUX (24 bytes)
@@ -958,6 +960,7 @@ WARNING: untranslated string: crypto error = Cryptographic error
WARNING: untranslated string: crypto warning = Cryptographic warning
WARNING: untranslated string: daemon login script = Daemon login script
WARNING: untranslated string: dangerous = Dangerous
+WARNING: untranslated string: data transfer = Data Transfer
WARNING: untranslated string: default = Default
WARNING: untranslated string: default IP address = Default IP Address
WARNING: untranslated string: desired = Desired
@@ -1023,7 +1026,6 @@ WARNING: untranslated string: enable disable client = unknown string
WARNING: untranslated string: enable disable dyndns = unknown string
WARNING: untranslated string: enable otp = Enable OTP
WARNING: untranslated string: enable smt = Enable Simultaneous Multi-Threading (SMT)
-WARNING: untranslated string: eol architecture warning = You are running an architecture of IPFire which reached its end of life. You will not receive updates anymore. This is a security risk.
WARNING: untranslated string: error = Error
WARNING: untranslated string: error message = unknown string
WARNING: untranslated string: error the to date has to be later than the from date = The to date has to be later than the from date!
@@ -1483,6 +1485,7 @@ WARNING: untranslated string: wio_wan_up = unknown string
WARNING: untranslated string: wio_wanname = unknown string
WARNING: untranslated string: wio_webinterface = unknown string
WARNING: untranslated string: wio_webinterface_link = unknown string
+WARNING: untranslated string: wireguard = WireGuard
WARNING: untranslated string: wireless network = WiFi Network
WARNING: untranslated string: wlan client anonymous identity = Anonymous Identity
WARNING: untranslated string: wlan client auth auto = Auto
diff --git a/doc/language_issues.pl b/doc/language_issues.pl
index 0b3ce39a5..b4fc5df68 100644
--- a/doc/language_issues.pl
+++ b/doc/language_issues.pl
@@ -318,6 +318,7 @@ WARNING: translation string unused: guest ok
WARNING: translation string unused: gz with key
WARNING: translation string unused: harddisk temperature
WARNING: translation string unused: harddisk temperature graphs
+WARNING: translation string unused: high memory usage
WARNING: translation string unused: hint
WARNING: translation string unused: host
WARNING: translation string unused: host allow
@@ -628,6 +629,8 @@ WARNING: translation string unused: smtpport
WARNING: translation string unused: snort hits
WARNING: translation string unused: snort working
WARNING: translation string unused: socket options
+WARNING: translation string unused: sort ascending
+WARNING: translation string unused: sort descending
WARNING: translation string unused: source ip bad
WARNING: translation string unused: source ip in use
WARNING: translation string unused: source ip or net
@@ -861,7 +864,6 @@ WARNING: untranslated string: available = available
WARNING: untranslated string: bit = bit
WARNING: untranslated string: block = Block
WARNING: untranslated string: broken = Broken
-WARNING: untranslated string: bytes = unknown string
WARNING: untranslated string: cake profile bridged-llcsnap 32 = Bridged LLC SNAP (32 bytes)
WARNING: untranslated string: cake profile bridged-ptm 19 = Bridged PTM (19 bytes)
WARNING: untranslated string: cake profile bridged-vcmux 24 = Bridged VC-MUX (24 bytes)
@@ -925,6 +927,7 @@ WARNING: untranslated string: cpu frequency = CPU frequency
WARNING: untranslated string: crypto error = Cryptographic error
WARNING: untranslated string: crypto warning = Cryptographic warning
WARNING: untranslated string: dangerous = Dangerous
+WARNING: untranslated string: data transfer = Data Transfer
WARNING: untranslated string: dead peer detection = Dead Peer Detection
WARNING: untranslated string: default = Default
WARNING: untranslated string: default IP address = Default IP Address
@@ -1010,7 +1013,6 @@ WARNING: untranslated string: enable disable dyndns = unknown string
WARNING: untranslated string: enable otp = Enable OTP
WARNING: untranslated string: enable smt = Enable Simultaneous Multi-Threading (SMT)
WARNING: untranslated string: encryption = Encryption:
-WARNING: untranslated string: eol architecture warning = You are running an architecture of IPFire which reached its end of life. You will not receive updates anymore. This is a security risk.
WARNING: untranslated string: error = Error
WARNING: untranslated string: error message = unknown string
WARNING: untranslated string: error the to date has to be later than the from date = The to date has to be later than the from date!
@@ -1726,6 +1728,7 @@ WARNING: untranslated string: wio_wan_up = unknown string
WARNING: untranslated string: wio_wanname = unknown string
WARNING: untranslated string: wio_webinterface = unknown string
WARNING: untranslated string: wio_webinterface_link = unknown string
+WARNING: untranslated string: wireguard = WireGuard
WARNING: untranslated string: wireless network = WiFi Network
WARNING: untranslated string: wlan client = Wireless client
WARNING: untranslated string: wlan client advanced settings = Advanced settings
diff --git a/doc/language_issues.ru b/doc/language_issues.ru
index 73823a7a8..9cb5e2a15 100644
--- a/doc/language_issues.ru
+++ b/doc/language_issues.ru
@@ -315,6 +315,7 @@ WARNING: translation string unused: guest ok
WARNING: translation string unused: gz with key
WARNING: translation string unused: harddisk temperature
WARNING: translation string unused: harddisk temperature graphs
+WARNING: translation string unused: high memory usage
WARNING: translation string unused: hint
WARNING: translation string unused: host
WARNING: translation string unused: host allow
@@ -623,6 +624,8 @@ WARNING: translation string unused: smtpport
WARNING: translation string unused: snort hits
WARNING: translation string unused: snort working
WARNING: translation string unused: socket options
+WARNING: translation string unused: sort ascending
+WARNING: translation string unused: sort descending
WARNING: translation string unused: source ip bad
WARNING: translation string unused: source ip in use
WARNING: translation string unused: source ip or net
@@ -856,7 +859,6 @@ WARNING: untranslated string: available = available
WARNING: untranslated string: bit = bit
WARNING: untranslated string: block = Block
WARNING: untranslated string: broken = Broken
-WARNING: untranslated string: bytes = unknown string
WARNING: untranslated string: cake profile bridged-llcsnap 32 = Bridged LLC SNAP (32 bytes)
WARNING: untranslated string: cake profile bridged-ptm 19 = Bridged PTM (19 bytes)
WARNING: untranslated string: cake profile bridged-vcmux 24 = Bridged VC-MUX (24 bytes)
@@ -920,6 +922,7 @@ WARNING: untranslated string: cpu frequency = CPU frequency
WARNING: untranslated string: crypto error = Cryptographic error
WARNING: untranslated string: crypto warning = Cryptographic warning
WARNING: untranslated string: dangerous = Dangerous
+WARNING: untranslated string: data transfer = Data Transfer
WARNING: untranslated string: dead peer detection = Dead Peer Detection
WARNING: untranslated string: default = Default
WARNING: untranslated string: default IP address = Default IP Address
@@ -1005,7 +1008,6 @@ WARNING: untranslated string: enable disable dyndns = unknown string
WARNING: untranslated string: enable otp = Enable OTP
WARNING: untranslated string: enable smt = Enable Simultaneous Multi-Threading (SMT)
WARNING: untranslated string: encryption = Encryption:
-WARNING: untranslated string: eol architecture warning = You are running an architecture of IPFire which reached its end of life. You will not receive updates anymore. This is a security risk.
WARNING: untranslated string: error = Error
WARNING: untranslated string: error message = unknown string
WARNING: untranslated string: error the to date has to be later than the from date = The to date has to be later than the from date!
@@ -1719,6 +1721,7 @@ WARNING: untranslated string: wio_wan_up = unknown string
WARNING: untranslated string: wio_wanname = unknown string
WARNING: untranslated string: wio_webinterface = unknown string
WARNING: untranslated string: wio_webinterface_link = unknown string
+WARNING: untranslated string: wireguard = WireGuard
WARNING: untranslated string: wireless network = WiFi Network
WARNING: untranslated string: wlan client = Wireless client
WARNING: untranslated string: wlan client advanced settings = Advanced settings
diff --git a/doc/language_issues.tr b/doc/language_issues.tr
index 9cc962515..4f9792a1a 100644
--- a/doc/language_issues.tr
+++ b/doc/language_issues.tr
@@ -403,6 +403,7 @@ WARNING: translation string unused: guest ok
WARNING: translation string unused: gz with key
WARNING: translation string unused: harddisk temperature
WARNING: translation string unused: harddisk temperature graphs
+WARNING: translation string unused: high memory usage
WARNING: translation string unused: hint
WARNING: translation string unused: host
WARNING: translation string unused: host allow
@@ -732,6 +733,8 @@ WARNING: translation string unused: smtpport
WARNING: translation string unused: snort hits
WARNING: translation string unused: snort working
WARNING: translation string unused: socket options
+WARNING: translation string unused: sort ascending
+WARNING: translation string unused: sort descending
WARNING: translation string unused: source ip bad
WARNING: translation string unused: source ip in use
WARNING: translation string unused: source ip or net
@@ -920,7 +923,6 @@ WARNING: untranslated string: asn lookup failed = AS lookup failed
WARNING: untranslated string: autonomous system = Autonomous System
WARNING: untranslated string: available = available
WARNING: untranslated string: broken = Broken
-WARNING: untranslated string: bytes = unknown string
WARNING: untranslated string: cake profile bridged-llcsnap 32 = Bridged LLC SNAP (32 bytes)
WARNING: untranslated string: cake profile bridged-ptm 19 = Bridged PTM (19 bytes)
WARNING: untranslated string: cake profile bridged-vcmux 24 = Bridged VC-MUX (24 bytes)
@@ -941,6 +943,7 @@ WARNING: untranslated string: cpu frequency = CPU frequency
WARNING: untranslated string: crypto error = Cryptographic error
WARNING: untranslated string: crypto warning = Cryptographic warning
WARNING: untranslated string: dangerous = Dangerous
+WARNING: untranslated string: data transfer = Data Transfer
WARNING: untranslated string: default IP address = Default IP Address
WARNING: untranslated string: desired = Desired
WARNING: untranslated string: dh = Diffie-Hellman-Parameter
@@ -980,7 +983,6 @@ WARNING: untranslated string: enable disable client = unknown string
WARNING: untranslated string: enable disable dyndns = unknown string
WARNING: untranslated string: enable otp = Enable OTP
WARNING: untranslated string: enable smt = Enable Simultaneous Multi-Threading (SMT)
-WARNING: untranslated string: eol architecture warning = You are running an architecture of IPFire which reached its end of life. You will not receive updates anymore. This is a security risk.
WARNING: untranslated string: error = Error
WARNING: untranslated string: error message = unknown string
WARNING: untranslated string: error the to date has to be later than the from date = The to date has to be later than the from date!
@@ -1344,6 +1346,7 @@ WARNING: untranslated string: wio_wan_up = unknown string
WARNING: untranslated string: wio_wanname = unknown string
WARNING: untranslated string: wio_webinterface = unknown string
WARNING: untranslated string: wio_webinterface_link = unknown string
+WARNING: untranslated string: wireguard = WireGuard
WARNING: untranslated string: wlan client encryption wpa3 = WPA3
WARNING: untranslated string: wlan client management frame protection = Management Frame Protection
WARNING: untranslated string: wlanap 802.11w disabled = Disabled
diff --git a/doc/language_missings b/doc/language_missings
index 05fff37d1..4f166b440 100644
--- a/doc/language_missings
+++ b/doc/language_missings
@@ -46,6 +46,7 @@
< choose media
< could not connect to www ipfire org
< cryptographic settings
+< data transfer
< desired
< dhcp server disabled on blue interface
< dhcp server enabled on blue interface
@@ -102,6 +103,7 @@
< user management
< vpn configuration main
< winbind daemon
+< wireguard
< wlanap 802.11w disabled
< wlanap 802.11w enforced
< wlanap 802.11w optional
@@ -115,6 +117,7 @@
< access point name is required
< addon
< cpu frequency
+< data transfer
< dhcp fixed ip address in dynamic range
< dns servers
< downfall gather data sampling
@@ -147,6 +150,7 @@
< system time
< timeformat
< transport mode does not support vti
+< wireguard
< wlanap
< wlan client configuration
############################################################################
@@ -155,6 +159,7 @@
< ansi t1.483
< bewan adsl pci st
< bewan adsl usb
+< data transfer
< extrahd because it it outside the allowed mount path
< fwdfw syn flood protection
< g.dtm
@@ -169,6 +174,7 @@
< system time
< timeformat
< upload fcdsl.o
+< wireguard
############################################################################
# Checking cgi-bin translations for language: it #
############################################################################
@@ -283,6 +289,7 @@
< crypto warning
< Daily
< dangerous
+< data transfer
< default IP address
< desired
< dh
@@ -647,6 +654,7 @@
< Weekly
< whois results from
< winbind daemon
+< wireguard
< wireless network
< wlanap
< wlanap 802.11w disabled
@@ -812,6 +820,7 @@
< daemon login script
< Daily
< dangerous
+< data transfer
< default
< default IP address
< desired
@@ -1201,6 +1210,7 @@
< Weekly
< whois results from
< winbind daemon
+< wireguard
< wireless network
< wlanap
< wlanap 802.11w disabled
@@ -1428,6 +1438,7 @@
< crypto warning
< Daily
< dangerous
+< data transfer
< dead peer detection
< default
< default ip
@@ -2170,6 +2181,7 @@
< Weekly
< whois results from
< winbind daemon
+< wireguard
< wireless network
< wlanap
< wlanap 802.11w disabled
@@ -2429,6 +2441,7 @@
< crypto warning
< Daily
< dangerous
+< data transfer
< day-graph
< dead peer detection
< default
@@ -3176,6 +3189,7 @@
< Weekly
< whois results from
< winbind daemon
+< wireguard
< wireless network
< wlanap
< wlanap 802.11w disabled
@@ -3308,6 +3322,7 @@
< crypto warning
< Daily
< dangerous
+< data transfer
< default IP address
< desired
< dh
@@ -3559,6 +3574,7 @@
< Weekly
< whois results from
< winbind daemon
+< wireguard
< wlanap 802.11w disabled
< wlanap 802.11w enforced
< wlanap 802.11w optional
diff --git a/html/cgi-bin/connections.cgi b/html/cgi-bin/connections.cgi
index 24702980c..badc1f395 100644
--- a/html/cgi-bin/connections.cgi
+++ b/html/cgi-bin/connections.cgi
@@ -20,246 +20,127 @@
###############################################################################
use strict;
-use experimental 'smartmatch';
-
-use Net::IPv4Addr qw( :all );
use Switch;
# enable only the following on debugging purpose
-#use warnings;
-#use CGI::Carp 'fatalsToBrowser';
+use warnings;
+use CGI::Carp 'fatalsToBrowser';
require '/var/ipfire/general-functions.pl';
require "${General::swroot}/lang.pl";
require "${General::swroot}/header.pl";
+require "${General::swroot}/ids-functions.pl";
require "${General::swroot}/location-functions.pl";
my $colour_multicast = "#A0A0A0";
-# sort arguments for connection tracking table
-# the sort field. eg. 1=src IP, 2=dst IP, 3=src port, 4=dst port
-my $SORT_FIELD = 0;
-# the sort order. (a)scending orr (d)escending
-my $SORT_ORDER = 0;
-# cgi query arguments
-my %cgiin;
-# debug mode
-my $debug = 0;
-
-# retrieve query arguments
-# note: let a-z A-Z and 0-9 pass as value only
-if (length ($ENV{'QUERY_STRING'}) > 0){
- my $name;
- my $value;
- my $buffer = $ENV{'QUERY_STRING'};
- my @pairs = split(/&/, $buffer);
- foreach my $pair (@pairs){
- ($name, $value) = split(/=/, $pair);
- $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; # e.g. "%20" => " "
- $value =~ s/[^a-zA-Z0-9]*//g; # a-Z 0-9 will pass
- $cgiin{$name} = $value;
- }
-}
+my %settings = ();
+&General::readhash("/var/ipfire/ethernet/settings", \%settings);
&Header::showhttpheaders();
-my @network=();
-my @masklen=();
-my @colour=();
+# Collect all known networks
+my %networks = (
+ # Localhost
+ "127.0.0.0/8" => ${Header::colourfw},
-my %netsettings=();
-&General::readhash("${General::swroot}/ethernet/settings", \%netsettings);
+ # Multicast
+ "224.0.0.0/3" => $colour_multicast,
-# output cgi query arrguments to browser on debug
-if ( $debug ){
- &Header::openbox('100%', 'center', 'DEBUG');
- my $debugCount = 0;
- foreach my $line (sort keys %cgiin) {
- print "$line = '$cgiin{$line}'<br />\n";
- $debugCount++;
- }
- print " Count: $debugCount\n";
- &Header::closebox();
-}
+ # GREEN
+ "$settings{'GREEN_ADDRESS'}/32" => ${Header::colourfw},
+ "$settings{'GREEN_NETADDRESS'}/$settings{'GREEN_NETMASK'}" => ${Header::colourgreen},
-#workaround to suppress a warning when a variable is used only once
-my @dummy = ( ${Header::table1colour} );
-undef (@dummy);
+ # BLUE
+ "$settings{'BLUE_ADDRESS'}/32" => ${Header::colourfw},
+ "$settings{'BLUE_NETADDRESS'}/$settings{'BLUE_NETMASK'}" => ${Header::colourblue},
-# check sorting arguments
-if ( $cgiin{'sort_field'} ~~ [ '1','2','3','4','5','6','7','8','9' ] ) {
- $SORT_FIELD = $cgiin{'sort_field'};
+ # ORANGE
+ "$settings{'ORANGE_ADDRESS'}/32" => ${Header::colourfw},
+ "$settings{'ORANGE_NETADDRESS'}/$settings{'ORANGE_NETMASK'}" => ${Header::colourorange},
+);
- if ( $cgiin{'sort_order'} ~~ [ 'a','d','A','D' ] ) {
- $SORT_ORDER = lc($cgiin{'sort_order'});
- }
+# RED Address
+my $address = &IDS::get_red_address();
+if ($address) {
+ $networks{"${address}/32"} = ${Header::colourfw};
}
-# Read and sort the connection tracking table
-# do sorting
-if ($SORT_FIELD and $SORT_ORDER) {
- # field sorting when sorting arguments are sane
- open(CONNTRACK, "/usr/local/bin/getconntracktable | /usr/local/bin/consort.sh $SORT_FIELD $SORT_ORDER |") or die "Unable to read conntrack table";
-} else {
- # default sorting with no query arguments
- open(CONNTRACK, "/usr/local/bin/getconntracktable | sort -k 5,5 --numeric-sort --reverse |") or die "Unable to read conntrack table";
+# Add all aliases
+my @aliases = &IDS::get_aliases();
+for my $alias (@aliases) {
+ $networks{"${alias}/32"} = ${Header::colourfw};
}
-my @conntrack = <CONNTRACK>;
-close(CONNTRACK);
-# Collect data for the @network array.
+my %interfaces = (
+ $settings{'GREEN_DEV'} => ${Header::colourgreen},
+ $settings{'BLUE_DEV'} => ${Header::colourblue},
+ $settings{'ORANGE_DEV'} => ${Header::colourorange},
-# Add Firewall Localhost 127.0.0.1
-push(@network, '127.0.0.1');
-push(@masklen, '255.255.255.255');
-push(@colour, ${Header::colourfw});
+ # IPsec
+ "gre[0-9]+" => ${Header::colourvpn},
+ "vti[0-9]+" => ${Header::colourvpn},
-if (open(IP, "${General::swroot}/red/local-ipaddress")) {
- my $redip = <IP>;
- close(IP);
+ # OpenVPN
+ "tun[0-9]+" => ${Header::colourovpn},
+);
- chomp $redip;
- push(@network, $redip);
- push(@masklen, '255.255.255.255');
- push(@colour, ${Header::colourfw});
-}
+my @routes = &General::system_output("ip", "route", "show");
-# Add STATIC RED aliases
-if ($netsettings{'RED_DEV'}) {
- my $aliasfile = "${General::swroot}/ethernet/aliases";
- open(ALIASES, $aliasfile) or die 'Unable to open aliases file.';
- my @aliases = <ALIASES>;
- close(ALIASES);
-
- # We have a RED eth iface
- if ($netsettings{'RED_TYPE'} eq 'STATIC') {
- # We have a STATIC RED eth iface
- foreach my $line (@aliases) {
- chomp($line);
- my @temp = split(/\,/,$line);
- if ($temp[0]) {
- push(@network, $temp[0]);
- push(@masklen, $netsettings{'RED_NETMASK'} );
- push(@colour, ${Header::colourfw} );
- }
+# Find all routes
+foreach my $intf (keys %interfaces) {
+ foreach my $route (grep(/dev ${intf}/, @routes)) {
+ if ($route =~ m/^(\d+\.\d+\.\d+\.\d+\/\d+)/) {
+ $networks{$1} = $interfaces{$intf};
}
}
}
-# Call safe system_output function to get all available routes.
-my @all_routes = &General::system_output("/sbin/route", "-n");
-
-# Add Green Firewall Interface
-push(@network, $netsettings{'GREEN_ADDRESS'});
-push(@masklen, "255.255.255.255" );
-push(@colour, ${Header::colourfw} );
-
-if ($netsettings{'GREEN_DEV'}) {
- # Add Green Network to Array
- push(@network, $netsettings{'GREEN_NETADDRESS'});
- push(@masklen, $netsettings{'GREEN_NETMASK'} );
- push(@colour, ${Header::colourgreen} );
-
- # Add Green Routes to Array
- my @routes = grep (/$netsettings{'GREEN_DEV'}/, @all_routes);
- foreach my $route (@routes) {
- chomp($route);
- my @temp = split(/[\t ]+/, $route);
- push(@network, $temp[0]);
- push(@masklen, $temp[2]);
- push(@colour, ${Header::colourgreen} );
- }
-}
+# Load the WireGuard client pool
+if (-e "/var/ipfire/wireguard/settings") {
+ my %wgsettings = ();
-# Add Blue Firewall Interface
-push(@network, $netsettings{'BLUE_ADDRESS'});
-push(@masklen, "255.255.255.255" );
-push(@colour, ${Header::colourfw} );
-
-# Add Blue Network
-if ($netsettings{'BLUE_DEV'}) {
- push(@network, $netsettings{'BLUE_NETADDRESS'});
- push(@masklen, $netsettings{'BLUE_NETMASK'} );
- push(@colour, ${Header::colourblue} );
-
- # Add Blue Routes to Array
- my @routes = grep(/$netsettings{'BLUE_DEV'}/, @all_routes);
- foreach my $route (@routes) {
- chomp($route);
- my @temp = split(/[\t ]+/, $route);
- push(@network, $temp[0]);
- push(@masklen, $temp[2]);
- push(@colour, ${Header::colourblue} );
- }
+ &General::readhash("/var/ipfire/wireguard/settings", \%wgsettings);
+
+ $networks{$wgsettings{'CLIENT_POOL'}} = ${Header::colourwg};
}
-# Add Orange Firewall Interface
-push(@network, $netsettings{'ORANGE_ADDRESS'});
-push(@masklen, "255.255.255.255" );
-push(@colour, ${Header::colourfw} );
-
-# Add Orange Network
-if ($netsettings{'ORANGE_DEV'}) {
- push(@network, $netsettings{'ORANGE_NETADDRESS'});
- push(@masklen, $netsettings{'ORANGE_NETMASK'} );
- push(@colour, ${Header::colourorange} );
- # Add Orange Routes to Array
- my @routes = grep(/$netsettings{'ORANGE_DEV'}/, @all_routes);
- foreach my $route (@routes) {
- chomp($route);
- my @temp = split(/[\t ]+/, $route);
- push(@network, $temp[0]);
- push(@masklen, $temp[2]);
- push(@colour, ${Header::colourorange} );
+# Load routed WireGuard networks
+if (-e "/var/ipfire/wireguard/peers") {
+ my %wgpeers = ();
+
+ # Load all peers
+ &General::readhasharray("/var/ipfire/wireguard/peers", \%wgpeers);
+
+ foreach my $key (keys %wgpeers) {
+ my $networks = $wgpeers{$key}[6];
+
+ # Split the string
+ my @networks = split(/\|/, $networks);
+
+ foreach my $network (@networks) {
+ $networks[$network] = ${Header::colourwg};
+ }
}
}
-# Highlight multicast connections.
-push(@network, "224.0.0.0");
-push(@masklen, "239.0.0.0");
-push(@colour, $colour_multicast);
-
# Add OpenVPN net and RED/BLUE/ORANGE entry (when appropriate)
if (-e "${General::swroot}/ovpn/settings") {
my %ovpnsettings = ();
&General::readhash("${General::swroot}/ovpn/settings", \%ovpnsettings);
- my @tempovpnsubnet = split("\/",$ovpnsettings{'DOVPN_SUBNET'});
-
- # add OpenVPN net
- push(@network, $tempovpnsubnet[0]);
- push(@masklen, $tempovpnsubnet[1]);
- push(@colour, ${Header::colourovpn} );
-
- # add BLUE:port / proto
- if (($ovpnsettings{'ENABLED_BLUE'} eq 'on') && $netsettings{'BLUE_DEV'}) {
- push(@network, $netsettings{'BLUE_ADDRESS'} );
- push(@masklen, '255.255.255.255' );
- push(@colour, ${Header::colourovpn});
- }
- # add ORANGE:port / proto
- if (($ovpnsettings{'ENABLED_ORANGE'} eq 'on') && $netsettings{'ORANGE_DEV'}) {
- push(@network, $netsettings{'ORANGE_ADDRESS'} );
- push(@masklen, '255.255.255.255' );
- push(@colour, ${Header::colourovpn} );
- }
+ $networks{$ovpnsettings{'DOVPN_SUBNET'}} = ${Header::colourovpn};
}
# Add OpenVPN net for custom OVPNs
if (-e "${General::swroot}/ovpn/ccd.conf") {
open(OVPNSUB, "${General::swroot}/ovpn/ccd.conf");
- my @ovpnsub = <OVPNSUB>;
- close(OVPNSUB);
-
- foreach (@ovpnsub) {
- my ($network, $mask) = split '/', (split ',', $_)[2];
-
- $mask = ipv4_cidr2msk($mask) unless &General::validip($mask);
+ foreach my $line (<OVPNSUB>) {
+ my @ovpn = split(',', $line);
- push(@network, $network);
- push(@masklen, $mask);
- push(@colour, ${Header::colourovpn});
+ $networks{$ovpn[3]} = ${Header::colourovpn};
}
+ close(OVPNSUB);
}
open(IPSEC, "${General::swroot}/vpn/config");
@@ -271,42 +152,25 @@ foreach my $line (@ipsec) {
my @subnets = split(/\|/, $vpn[12]);
for my $subnet (@subnets) {
- my ($network, $mask) = split("/", $subnet);
-
- if (!&General::validip($mask)) {
- $mask = ipv4_cidr2msk($mask);
- }
-
- push(@network, $network);
- push(@masklen, $mask);
- push(@colour, ${Header::colourvpn});
+ $networks{$subnet} = ${Header::colourvpn};
}
}
if (-e "${General::swroot}/ovpn/n2nconf") {
open(OVPNN2N, "${General::swroot}/ovpn/ovpnconfig");
- my @ovpnn2n = <OVPNN2N>;
- close(OVPNN2N);
-
- foreach my $line (@ovpnn2n) {
+ foreach my $line (<OVPNN2N>) {
my @ovpn = split(',', $line);
next if ($ovpn[4] ne 'net');
- my ($network, $mask) = split("/", $ovpn[12]);
- if (!&General::validip($mask)) {
- $mask = ipv4_cidr2msk($mask);
- }
-
- push(@network, $network);
- push(@masklen, $mask);
- push(@colour, ${Header::colourovpn});
+ $networks{$ovpn[12]} = ${Header::colourovpn};
}
+ close(OVPNN2N);
}
# Show the page.
&Header::openpage($Lang::tr{'connections'}, 1, '');
&Header::openbigbox('100%', 'left');
-&Header::openbox('100%', 'left', $Lang::tr{'connection tracking'});
+&Header::opensection();
# Print legend.
print <<END;
@@ -333,6 +197,9 @@ print <<END;
<td style='text-align:center; color:#FFFFFF; background-color:${Header::colourvpn};'>
<b>$Lang::tr{'vpn'}</b>
</td>
+ <td style='text-align:center; color:#FFFFFF; background-color:${Header::colourwg};'>
+ <b>$Lang::tr{'wireguard'}</b>
+ </td>
<td style='text-align:center; color:#FFFFFF; background-color:${Header::colourovpn};'>
<b>$Lang::tr{'OpenVPN'}</b>
</td>
@@ -344,103 +211,38 @@ print <<END;
<br>
END
-if ($SORT_FIELD and $SORT_ORDER) {
- my @sort_field_name = (
- $Lang::tr{'source ip'},
- $Lang::tr{'destination ip'},
- $Lang::tr{'source port'},
- $Lang::tr{'destination port'},
- $Lang::tr{'protocol'},
- $Lang::tr{'connection'}.' '.$Lang::tr{'status'},
- $Lang::tr{'expires'}.' ('.$Lang::tr{'hours:minutes:seconds'}.')',
- $Lang::tr{'download'},
- $Lang::tr{'upload'}
- );
- my $sort_order_name;
- if (lc($SORT_ORDER) eq "a") {
- $sort_order_name = $Lang::tr{'sort ascending'};
- } else {
- $sort_order_name = $Lang::tr{'sort descending'};
- }
-
-print <<END
- <div style="font-weight:bold;margin:10px;font-size: 70%">
- $sort_order_name: $sort_field_name[$SORT_FIELD-1]
- </div>
-END
-;
-}
-
-# Print table header.
+# Print table header
print <<END;
- <table style='width:100%'>
- <tr>
- <th style='text-align:center'>
- <a href="?sort_field=5&sort_order=d"><img style="width:10px" src="/images/up.gif" alt=""></a>
- <a href="?sort_field=5&sort_order=a"><img style="width:10px" src="/images/down.gif" alt=""></a>
- </th>
- <th style='text-align:center' colspan='2'>
- <a href="?sort_field=1&sort_order=d"><img style="width:10px" src="/images/up.gif" alt=""></a>
- <a href="?sort_field=1&sort_order=a"><img style="width:10px" src="/images/down.gif" alt=""></a>
-
- <a href="?sort_field=3&sort_order=d"><img style="width:10px" src="/images/up.gif" alt=""></a>
- <a href="?sort_field=3&sort_order=a"><img style="width:10px" src="/images/down.gif" alt=""></a>
- </th>
- <th> </th>
- <th style='text-align:center' colspan='2'>
- <a href="?sort_field=2&sort_order=d"><img style="width:10px" src="/images/up.gif" alt=""></a>
- <a href="?sort_field=2&sort_order=a"><img style="width:10px" src="/images/down.gif" alt=""></a>
-
- <a href="?sort_field=4&sort_order=d"><img style="width:10px" src="/images/up.gif" alt=""></a>
- <a href="?sort_field=4&sort_order=a"><img style="width:10px" src="/images/down.gif" alt=""></a>
- </th>
- <th> </th>
- <th style='text-align:center'>
- <a href="?sort_field=8&sort_order=d"><img style="width:10px" src="/images/up.gif" alt=""></a>
- <a href="?sort_field=8&sort_order=a"><img style="width:10px" src="/images/down.gif" alt=""></a>
-
- <a href="?sort_field=9&sort_order=d"><img style="width:10px" src="/images/up.gif" alt=""></a>
- <a href="?sort_field=9&sort_order=a"><img style="width:10px" src="/images/down.gif" alt=""></a>
- </th>
- <th style='text-align:center'>
- <a href="?sort_field=6&sort_order=d"><img style="width:10px" src="/images/up.gif" alt=""></a>
- <a href="?sort_field=6&sort_order=a"><img style="width:10px" src="/images/down.gif" alt=""></a>
- </th>
- <th style='text-align:center'>
- <a href="?sort_field=7&sort_order=d"><img style="width:10px" src="/images/up.gif" alt=""></a>
- <a href="?sort_field=7&sort_order=a"><img style="width:10px" src="/images/down.gif" alt=""></a>
- </th>
- </tr>
+ <table class="tbl">
<tr>
- <th style='text-align:center'>
+ <th>
$Lang::tr{'protocol'}
</th>
- <th style='text-align:center' colspan='2'>
+ <th colspan='2'>
$Lang::tr{'source ip and port'}
</th>
- <th style='text-align:center'>
- $Lang::tr{'country'}
- </th>
- <th style='text-align:center' colspan='2'>
+ <th></th>
+ <th colspan='2'>
$Lang::tr{'dest ip and port'}
</th>
- <th style='text-align:center'>
- $Lang::tr{'country'}
+ <th></th>
+ <th colspan='2'>
+ $Lang::tr{'data transfer'}
</th>
- <th style='text-align:center'>
- $Lang::tr{'download'} /
- <br>$Lang::tr{'upload'}
- </th>
- <th style='text-align:center'>
+ <th>
$Lang::tr{'connection'}<br>$Lang::tr{'status'}
</th>
- <th style='text-align:center'>
+ <th>
$Lang::tr{'expires'}<br>($Lang::tr{'hours:minutes:seconds'})
</th>
</tr>
END
-foreach my $line (@conntrack) {
+# Read and sort the connection tracking table
+open(CONNTRACK, "/usr/local/bin/getconntracktable | sort -k 5,5 --numeric-sort --reverse |")
+ or die "Unable to read conntrack table";
+
+foreach my $line (<CONNTRACK>) {
my @conn = split(' ', $line);
# The first bit is the l3 protocol.
@@ -552,8 +354,9 @@ foreach my $line (@conntrack) {
$dserv = uc(getservbyport($dport, lc($l4proto)));
}
- my $bytes_in = format_bytes($bytes[0]);
- my $bytes_out = format_bytes($bytes[1]);
+ # Format bytes
+ my $bytes_in = &General::formatBytes($bytes[0]);
+ my $bytes_out = &General::formatBytes($bytes[1]);
# enumerate location information
my $srcccode = &Location::Functions::lookup_country_code($sip_ret);
@@ -562,7 +365,7 @@ foreach my $line (@conntrack) {
my $dst_flag_icon = &Location::Functions::get_flag_icon($dstccode);
# Format TTL
- $ttl = format_time($ttl);
+ $ttl = &General::format_time($ttl);
my $sip_extra;
if ($sip_ret && $sip ne $sip_ret) {
@@ -580,7 +383,6 @@ foreach my $line (@conntrack) {
$dip_extra .= "</a>";
}
-
my $sport_extra;
if ($sport ne $sport_ret) {
my $sserv_ret = '';
@@ -640,8 +442,11 @@ foreach my $line (@conntrack) {
<td style='text-align:center; background-color:$sip_colour;'>
<a href='country.cgi#$dstccode'><img src='$dst_flag_icon' border='0' align='absmiddle' alt='$dstccode' title='$dstccode' /></a>
</td>
- <td style='text-align:center'>
- $bytes_in / $bytes_out
+ <td class="text-right">
+ > $bytes_in
+ </td>
+ <td class="text-right">
+ < $bytes_out
</td>
<td style='text-align:center'>$state</td>
<td style='text-align:center'>$ttl</td>
@@ -649,64 +454,35 @@ foreach my $line (@conntrack) {
END
}
+close(CONNTRACK);
+
# Close the main table.
print "</table>";
-&Header::closebox();
+&Header::closesection();
&Header::closebigbox();
&Header::closepage();
-sub format_bytes($) {
- my $bytes = shift;
- my @units = ("B", "k", "M", "G", "T");
-
- foreach my $unit (@units) {
- if ($bytes < 1024) {
- return sprintf("%d%s", $bytes, $unit);
- }
-
- $bytes /= 1024;
- }
-
- return sprintf("%d%s", $bytes, $units[$#units]);
-}
-
-sub format_time($) {
- my $time = shift;
-
- my $seconds = $time % 60;
- my $minutes = $time / 60;
-
- my $hours = 0;
- if ($minutes >= 60) {
- $hours = $minutes / 60;
- $minutes %= 60;
- }
-
- return sprintf("%3d:%02d:%02d", $hours, $minutes, $seconds);
-}
-
sub ipcolour($) {
- my $id = 0;
- my $colour = ${Header::colourred};
- my ($ip) = $_[0];
- my $found = 0;
-
- if ($ip) {
- foreach my $line (@network) {
- if ($network[$id] eq '') {
- $id++;
- } else {
- if (!$found && ipv4_in_network($network[$id], $masklen[$id], $ip) ) {
- $found = 1;
- $colour = $colour[$id];
+ my $address = shift;
+
+ # Sort all networks so we find the best match
+ my @networks = reverse sort {
+ &Network::get_prefix($a) <=> &Network::get_prefix($b)
+ } keys %networks;
+
+ foreach my $network (@networks) {
+ if (defined $network) {
+ if (&Network::check_ip_address_and_netmask($network)) {
+ if (&Network::ip_address_in_network($address, $network)) {
+ return $networks{$network};
}
- $id++;
}
}
}
- return $colour;
+ # If we don't know the network, the address must be from the RED network
+ return ${Header::colourred};
}
1;
diff --git a/html/cgi-bin/extrahd.cgi b/html/cgi-bin/extrahd.cgi
index afe79479b..363d3d9ff 100644
--- a/html/cgi-bin/extrahd.cgi
+++ b/html/cgi-bin/extrahd.cgi
@@ -216,7 +216,7 @@ if ($errormessage) {
close(FILE);
print <<END
- <table border='0' width='600' cellspacing="0">
+ <table border='0' width='100%' cellspacing="0">
END
;
foreach my $device (sort @devices) {
diff --git a/html/cgi-bin/firewall.cgi b/html/cgi-bin/firewall.cgi
index 226d00838..6d983cb23 100644
--- a/html/cgi-bin/firewall.cgi
+++ b/html/cgi-bin/firewall.cgi
@@ -432,7 +432,8 @@ sub addrule
{
&error;
- &Header::openbox('100%', 'left', "");
+ &Header::opensection();
+
print <<END;
<form method="POST" action="">
<table border='0' width="100%">
@@ -452,11 +453,9 @@ END
</tr>
</table>
</form>
-
- <br>
END
- &Header::closebox();
+ &Header::closesection();
&viewtablerule;
}
sub base
@@ -1987,41 +1986,28 @@ END
&Header::closebox;
$checked{"RULE_ACTION"}{$fwdfwsettings{'RULE_ACTION'}} = 'CHECKED';
print <<END;
- <center>
- <table width="80%" class='tbl' id='actions'>
- <tr>
- <td width="33%" align="center" bgcolor="$color{'color17'}">
- <br>
- </td>
- <td width="33%" align="center" bgcolor="$color{'color25'}">
- <br>
- </td>
- <td width="33%" align="center" bgcolor="$color{'color16'}">
- <br>
- </td>
- </tr>
- <tr>
- <td width="33%" align="center">
- <label>
- <input type="radio" name="RULE_ACTION" value="ACCEPT" $checked{"RULE_ACTION"}{"ACCEPT"}>
- <strong>$Lang::tr{'fwdfw ACCEPT'}</strong>
- </label>
- </td>
- <td width="33%" align="center">
- <label>
- <input type="radio" name="RULE_ACTION" value="DROP" $checked{"RULE_ACTION"}{"DROP"}>
- <strong>$Lang::tr{'fwdfw DROP'}</strong>
- </label>
- </td>
- <td width="33%" align="center">
- <label>
- <input type="radio" name="RULE_ACTION" value="REJECT" $checked{"RULE_ACTION"}{"REJECT"}>
- <strong>$Lang::tr{'fwdfw REJECT'}</strong>
- </label>
- </td>
- </tr>
- </table>
- </center>
+ <table class='tbl' id='actions'>
+ <tr>
+ <td width="33%" class="policy is-allowed">
+ <label>
+ <input type="radio" name="RULE_ACTION" value="ACCEPT" $checked{"RULE_ACTION"}{"ACCEPT"}>
+ <strong>$Lang::tr{'fwdfw ACCEPT'}</strong>
+ </label>
+ </td>
+ <td width="33%" class="policy is-blocked">
+ <label>
+ <input type="radio" name="RULE_ACTION" value="DROP" $checked{"RULE_ACTION"}{"DROP"}>
+ <strong>$Lang::tr{'fwdfw DROP'}</strong>
+ </label>
+ </td>
+ <td width="33%" class="policy is-rejected">
+ <label>
+ <input type="radio" name="RULE_ACTION" value="REJECT" $checked{"RULE_ACTION"}{"REJECT"}>
+ <strong>$Lang::tr{'fwdfw REJECT'}</strong>
+ </label>
+ </td>
+ </tr>
+ </table>
<br>
END
@@ -2512,23 +2498,22 @@ sub viewtablenew
print <<END;
<tr>
- <th align='right' width='3%'>
+ <th width='3%'>
#
</th>
- <th width='2%'></th>
- <th align='center'>
+ <th>
<b>$Lang::tr{'protocol'}</b>
</th>
- <th align='center' width='30%'>
+ <th width='30%'>
<b>$Lang::tr{'fwdfw source'}</b>
</th>
- <th align='center'>
+ <th>
<b>$Lang::tr{'fwdfw log'}</b>
</th>
- <th align='center' width='30%'>
+ <th width='30%'>
<b>$Lang::tr{'fwdfw target'}</b>
</th>
- <th align='center' colspan='6' width='18%'>
+ <th colspan='6' width='18%'>
<b>$Lang::tr{'fwdfw action'}</b>
</th>
</tr>
@@ -2609,29 +2594,26 @@ END
}
print<<END;
<tr bgcolor='$color'>
- <td align='right' width='3%'>
- <b>$key </b>
- </td>
END
#RULETYPE (A,R,D)
if ($$hash{$key}[0] eq 'ACCEPT'){
$ruletype='A';
$tooltip='ACCEPT';
- $rulecolor=$color{'color17'};
+ $rulecolor="policy is-allowed";
}elsif($$hash{$key}[0] eq 'DROP'){
$ruletype='D';
$tooltip='DROP';
- $rulecolor=$color{'color25'};
+ $rulecolor="policy is-blocked";
}elsif($$hash{$key}[0] eq 'REJECT'){
$ruletype='R';
$tooltip='REJECT';
- $rulecolor=$color{'color16'};
+ $rulecolor="policy is-rejected";
}
print <<END;
- <td bgcolor='$rulecolor' align='center' width='2%'>
- <span title='$tooltip'> </span>
+ <td class='$rulecolor'>
+ <span title='$tooltip'>$key</span>
</td>
END
@@ -2897,7 +2879,6 @@ END
}
}
}
- print"<tr bgcolor='FFFFFF'><td colspan='13' height='1'></td></tr>";
}
} elsif ($optionsfw{'SHOWTABLES'} eq 'on') {
print <<END;
@@ -2907,40 +2888,36 @@ END
END
}
+ print "</table>";
+ print "<br>";
+
#SHOW FINAL RULE
my $policy = 'fwdfw ' . $fwdfwsettings{'POLICY'};
- my $colour = "bgcolor='green'";
+ my $colour = "class='policy is-allowed'";
if ($fwdfwsettings{'POLICY'} eq 'MODE1') {
- $colour = "bgcolor='darkred'";
+ $colour = "class='policy is-blocked'";
}
+ print "<table class='tbl'>\n";
+
my $message;
if (($config eq '/var/ipfire/firewall/config') && ($fwdfwsettings{'POLICY'} ne 'MODE1')) {
- print <<END;
- <tr>
- <td colspan='13'> </td>
- </tr>
- <tr>
- <td colspan='13' style="padding-left:0px;padding-right:0px">
- <table width="100%" border='1' rules="cols" cellspacing='0'>
-END
-
# GREEN
print <<END;
<tr>
- <td align='center'>
- <font color="$Header::colourgreen">$Lang::tr{'green'}</font>
+ <td class="intf green">
+ $Lang::tr{'green'} >
</td>
- <td align='center'>
- <font color="$Header::colourred">$Lang::tr{'red'}</font>
+ <td class="intf red">
+ $Lang::tr{'red'}
($Lang::tr{'fwdfw pol allow'})
</td>
END
if (&Header::orange_used()) {
print <<END;
- <td align='center'>
- <font color="$Header::colourorange">$Lang::tr{'orange'}</font>
+ <td class="intf orange">
+ $Lang::tr{'orange'}
($Lang::tr{'fwdfw pol allow'})
</td>
END
@@ -2948,8 +2925,8 @@ END
if (&Header::blue_used()) {
print <<END;
- <td align='center'>
- <font color="$Header::colourblue">$Lang::tr{'blue'}</font>
+ <td class='intf blue'>
+ $Lang::tr{'blue'}
($Lang::tr{'fwdfw pol allow'})
</td>
END
@@ -2961,23 +2938,23 @@ END
if (&Header::orange_used()) {
print <<END;
<tr>
- <td align='center' width='20%'>
- <font color="$Header::colourorange">$Lang::tr{'orange'}</font>
+ <td class='intf orange'>
+ $Lang::tr{'orange'} >
</td>
- <td align='center'>
- <font color="$Header::colourred">$Lang::tr{'red'}</font>
+ <td class='intf red'>
+ $Lang::tr{'red'}
($Lang::tr{'fwdfw pol allow'})
</td>
- <td align='center'>
- <font color="$Header::colourgreen">$Lang::tr{'green'}</font>
+ <td class='intf green'>
+ $Lang::tr{'green'}
($Lang::tr{'fwdfw pol block'})
</td>
END
if (&Header::blue_used()) {
print <<END;
- <td align='center'>
- <font color="$Header::colourblue">$Lang::tr{'blue'}</font>
+ <td class='intf blue'>
+ $Lang::tr{'blue'}
($Lang::tr{'fwdfw pol block'})
</td>
END
@@ -2989,27 +2966,27 @@ END
if (&Header::blue_used()) {
print <<END;
<tr>
- <td align='center'>
- <font color="$Header::colourblue">$Lang::tr{'blue'}</font>
+ <td class='intf blue'>
+ $Lang::tr{'blue'} >
</td>
- <td align='center'>
- <font color="$Header::colourred">$Lang::tr{'red'}</font>
+ <td class='intf red'>
+ $Lang::tr{'red'}
($Lang::tr{'fwdfw pol allow'})
</td>
END
if (&Header::orange_used()) {
print <<END;
- <td align='center'>
- <font color="$Header::colourorange">$Lang::tr{'orange'}</font>
+ <td class='intf orange'>
+ $Lang::tr{'orange'}
($Lang::tr{'fwdfw pol block'})
</td>
END
}
print <<END;
- <td align='center'>
- <font color="$Header::colourgreen">$Lang::tr{'green'}</font>
+ <td class='intf green'>
+ $Lang::tr{'green'}
($Lang::tr{'fwdfw pol block'})
</td>
</tr>
@@ -3017,7 +2994,6 @@ END
}
print <<END;
- </table>
</td>
</tr>
END
@@ -3026,24 +3002,27 @@ END
} elsif ($config eq '/var/ipfire/firewall/outgoing' && ($fwdfwsettings{'POLICY1'} ne 'MODE1')) {
$message = $Lang::tr{'fwdfw pol allow'};
- $colour = "bgcolor='green'";
+ $colour = "class='policy is-allowed'";
} else {
$message = $Lang::tr{'fwdfw pol block'};
- $colour = "bgcolor='darkred'";
+ $colour = "class='policy is-blocked'";
}
if ($message) {
+ my @available_zones = &Network::get_available_network_zones();
+
+ my $colspan = scalar @available_zones;
+
print <<END;
<tr>
- <td $colour align='center' colspan='13'>
- <font color='#FFFFFF'>$Lang::tr{'policy'}: $message</font>
+ <td $colour colspan='$colspan'>
+ $Lang::tr{'policy'}: $message
</td>
</tr>
END
}
print "</table>";
- print "<br>";
&Header::closebox();
}
diff --git a/html/cgi-bin/ids.cgi b/html/cgi-bin/ids.cgi
index 8ace30b02..502e2a125 100644
--- a/html/cgi-bin/ids.cgi
+++ b/html/cgi-bin/ids.cgi
@@ -1005,53 +1005,11 @@ sub show_mainpage() {
# Draw current state of the IDS
&Header::openbox('100%', 'left', $Lang::tr{'intrusion detection system'});
- # Check if the IDS is running and obtain the process-id.
- my $pid = &IDS::ids_is_running();
-
- # Display some useful information, if suricata daemon is running.
- if ($pid) {
- # Gather used memory.
- my $memory = &get_memory_usage($pid);
-
- print <<END;
- <table width='95%' cellspacing='0' class='tbl'>
- <tr>
- <th bgcolor='$color{'color20'}' colspan='3' align='left'><strong>$Lang::tr{'intrusion detection'}</strong></th>
- </tr>
-
- <tr>
- <td class='base'>$Lang::tr{'guardian daemon'}</td>
- <td align='center' colspan='2' width='75%' bgcolor='${Header::colourgreen}'><font color='white'><strong>$Lang::tr{'running'}</strong></font></td>
- </tr>
-
- <tr>
- <td class='base'></td>
- <td bgcolor='$color{'color20'}' align='center'><strong>PID</strong></td>
- <td bgcolor='$color{'color20'}' align='center'><strong>$Lang::tr{'memory'}</strong></td>
- </tr>
-
- <tr>
- <td class='base'></td>
- <td bgcolor='$color{'color22'}' align='center'>$pid</td>
- <td bgcolor='$color{'color22'}' align='center'>$memory KB</td>
- </tr>
- </table>
-END
- } else {
- # Otherwise display a hint that the service is not launched.
- print <<END;
- <table width='95%' cellspacing='0' class='tbl'>
- <tr>
- <th bgcolor='$color{'color20'}' colspan='3' align='left'><strong>$Lang::tr{'intrusion detection'}</strong></th>
- </tr>
-
- <tr>
- <td class='base'>$Lang::tr{'guardian daemon'}</td>
- <td align='center' width='75%' bgcolor='${Header::colourred}'><font color='white'><strong>$Lang::tr{'stopped'}</strong></font></td>
- </tr>
- </table>
-END
- }
+ &Header::ServiceStatus({
+ $Lang::tr{'intrusion prevention system'} => {
+ "pidfile" => "/var/run/suricata.pid",
+ },
+ });
# Only show this area, if at least one ruleset provider is configured.
if (%used_providers) {
@@ -1998,45 +1956,6 @@ sub readrulesfile ($) {
}
}
-#
-## Function to get the used memory of a given process-id.
-#
-sub get_memory_usage($) {
- my ($pid) = @_;
-
- my $memory = 0;
-
- # Try to open the status file for the given process-id on the pseudo
- # file system proc.
- if (open(FILE, "/proc/$pid/status")) {
- # Loop through the entire file.
- while (<FILE>) {
- # Splitt current line content and store them into variables.
- my ($key, $value) = split(":", $_, 2);
-
- # Check if the current key is the one which contains the memory usage.
- # The wanted one is VmRSS which contains the Real-memory (resident set)
- # of the entire process.
- if ($key eq "VmRSS") {
- # Found the memory usage add it to the memory variable.
- $memory += $value;
-
- # Break the loop.
- last;
- }
- }
-
- # Close file handle.
- close(FILE);
-
- # Return memory usage.
- return $memory;
- }
-
- # If the file could not be open, return nothing.
- return;
-}
-
#
## Function to get the provider handle by a given ID.
#
diff --git a/html/cgi-bin/ovpnmain.cgi b/html/cgi-bin/ovpnmain.cgi
index 5cf2f5eab..b89fe432d 100755
--- a/html/cgi-bin/ovpnmain.cgi
+++ b/html/cgi-bin/ovpnmain.cgi
@@ -5462,12 +5462,12 @@ END
print "</td>";
print "<td align='center' nowrap='nowrap' $col>" . $Lang::tr{"$confighash{$key}[3]"} . " (" . $Lang::tr{"$confighash{$key}[4]"} . ")</td>";
print "<td align='center' $col>$confighash{$key}[25]</td>";
- $col1="bgcolor='${Header::colourred}'";
- my $active = "<b><font color='#FFFFFF'>$Lang::tr{'capsclosed'}</font></b>";
+ $col1="class='status is-disconnected'";
+ my $active = "$Lang::tr{'capsclosed'}";
if ($confighash{$key}[0] eq 'off') {
- $col1="bgcolor='${Header::colourblue}'";
- $active = "<b><font color='#FFFFFF'>$Lang::tr{'capsclosed'}</font></b>";
+ $col1="class='status is-disabled'";
+ $active = "$Lang::tr{'capsclosed'}";
} else {
###
@@ -5498,11 +5498,11 @@ END
####
if (($tustate[1] eq 'CONNECTED') || ($tustate[1] eq 'WAIT')) {
- $col1="bgcolor='${Header::colourgreen}'";
- $active = "<b><font color='#FFFFFF'>$Lang::tr{'capsopen'}</font></b>";
+ $col1="class='status is-connected'";
+ $active = "$Lang::tr{'capsopen'}";
}else {
- $col1="bgcolor='${Header::colourred}'";
- $active = "<b><font color='#FFFFFF'>$tustate[1]</font></b>";
+ $col1="class='status is-disconnected'";
+ $active = "$tustate[1]";
}
}
}
@@ -5518,8 +5518,8 @@ END
$cn = $match[1];
}
if ($cn eq "$confighash{$key}[2]") {
- $col1="bgcolor='${Header::colourgreen}'";
- $active = "<b><font color='#FFFFFF'>$Lang::tr{'capsopen'}</font></b>";
+ $col1="class='status is-connected'";
+ $active = "$Lang::tr{'capsopen'}";
}
}
}
diff --git a/html/cgi-bin/qos.cgi b/html/cgi-bin/qos.cgi
index f3bbd1bf4..52392be08 100644
--- a/html/cgi-bin/qos.cgi
+++ b/html/cgi-bin/qos.cgi
@@ -652,7 +652,7 @@ if ($errormessage) {
print <<END
<form method='post' action='$ENV{'SCRIPT_NAME'}'>
- <table width='66%'>
+ <table width='100%'>
END
;
if ( $message ne "" ) {
@@ -673,7 +673,7 @@ END
if (($qossettings{'OUT_SPD'} ne '') && ($qossettings{'INC_SPD'} ne '')) {
print <<END
<form method='post' action='$ENV{'SCRIPT_NAME'}'>
- <table width='66%'>
+ <table width='100%'>
<tr><td colspan='3'>
<tr><td width='50%' align='right'>$Lang::tr{'downlink speed'}: <td width='30%' align='left'>$qossettings{'INC_SPD'}
<td width='20%' rowspan='2' align='center' valign='middle'><input type='submit' name='ACTIONBW' value='$Lang::tr{'modify'}' />
@@ -685,7 +685,7 @@ END
if (($qossettings{'DEFCLASS_OUT'} ne '') && ($qossettings{'DEFCLASS_INC'} ne '')) {
print <<END
<form method='post' action='$ENV{'SCRIPT_NAME'}'>
- <table width='66%'>
+ <table width='100%'>
<tr><td colspan='3'><hr />
<tr><td width='50%' align='right'>$Lang::tr{'downlink std class'}: <td width='30%' align='left'>$qossettings{'DEFCLASS_INC'}
<td width='20%' rowspan='3' align='center' valign='middle'><input type='submit' name='ACTIONDEF' value='$Lang::tr{'modify'}' />
@@ -695,7 +695,7 @@ END
</table>
</form>
<form method='post' action='$ENV{'SCRIPT_NAME'}'>
- <table width='66%' border='0'>
+ <table width='100%' border='0'>
<tr><td width='100%' align='center'>
<input type='submit' name='ACTION' value='$Lang::tr{'parentclass add'}' />
<input type='submit' name='ACTION' value='$Lang::tr{'status'}' />
@@ -740,7 +740,7 @@ sub changedefclasses {
&Header::openbox('100%', 'center', $Lang::tr{'std classes'});
print <<END
<form method='post' action='$ENV{'SCRIPT_NAME'}'>
- <table width='66%'>
+ <table width='100%'>
<tr><td width='100%' colspan='3'>$Lang::tr{'no filter pass'}
<tr><td width='33%' align='right'>$Lang::tr{'download'}:<td width='33%' align='left'><select name='DEFCLASS_INC'>
END
@@ -781,7 +781,7 @@ sub changebandwidth {
print <<END;
<form method='post' action='$ENV{'SCRIPT_NAME'}'>
<input type='hidden' name='DEF_OUT_SPD' value='' /><input type='hidden' name='DEF_INC_SPD' value='' />
- <table width='66%'>
+ <table width='100%'>
<tr>
<td width='100%' colspan='2'>$Lang::tr{'down and up speed'}</td>
</tr>
@@ -843,7 +843,7 @@ sub parentclass {
&Header::openbox('100%', 'center', $Lang::tr{'parentclass'});
print <<END
<form method='post' action='$ENV{'SCRIPT_NAME'}'>
- <table width='66%'>
+ <table width='100%'>
END
;
if ( $message ne "" ) {
@@ -936,7 +936,7 @@ sub level7rule {
&Header::openbox('100%', 'center', $Lang::tr{'Level7 Rule'});
print <<END
<form method='post' action='$ENV{'SCRIPT_NAME'}'>
- <table width='66%'>
+ <table width='100%'>
END
;
if ( $message ne "" ) {
@@ -982,7 +982,7 @@ sub portrule {
&Header::openbox('100%', 'center', $Lang::tr{'Add Port Rule'});
print <<END
<form method='post' action='$ENV{'SCRIPT_NAME'}'>
- <table width='66%'>
+ <table width='100%'>
<tr><td width='100%' colspan='3'>$Lang::tr{'enter data'}
<tr><td width='33%' align='right'>$Lang::tr{'protocol'}:
<td width='33%' align='left'><select name='PPROT'>
@@ -1028,7 +1028,7 @@ sub tosrule {
}
print <<END
<form method='post' action='$ENV{'SCRIPT_NAME'}'>
- <table width='66%'>
+ <table width='100%'>
END
;
if ( $message ne "" ) {
diff --git a/html/cgi-bin/services.cgi b/html/cgi-bin/services.cgi
index a95c69e10..4b929c716 100644
--- a/html/cgi-bin/services.cgi
+++ b/html/cgi-bin/services.cgi
@@ -135,22 +135,17 @@ $querry[1] = 'hour' unless defined $querry[1];
}
print <<END
-<div align='center'>
-<table width='80%' cellspacing='1' class='tbl'>
+<table class='tbl'>
<tr>
<th align='left'><b>$Lang::tr{addon} $Lang::tr{service}</b></th>
<th align='center'><b>Boot</b></th>
<th align='center' colspan=2><b>$Lang::tr{'action'}</b></th>
<th align='center'><b>$Lang::tr{'status'}</b></th>
- <th align='center'><b>PID</b></th>
<th align='center'><b>$Lang::tr{'memory'}</b></th>
</tr>
END
;
- my $lines=0; # Used to count the outputlines to make different bgcolor
- my $col;
-
my @paks;
my @addon_services;
@@ -164,26 +159,17 @@ END
if ("$metadata{'Services'}") {
foreach $service (split(/ /, "$metadata{'Services'}")) {
- $lines++;
- if ($lines % 2) {
- print "<tr>";
- $col="bgcolor='$color{'color22'}'";
- } else {
- print "<tr>";
- $col="bgcolor='$color{'color20'}'";
- }
-
# Add addon name to displayname of service if servicename differs from addon
my $displayname = ($pak ne $service) ? "$service ($pak)" : $service;
if ( -e "/srv/web/ipfire/cgi-bin/$pak.cgi" ) {
$displayname = ($pak ne $service) ? "$service (<a href=\'$pak.cgi\'>$pak</a>)" : "<a href=\'$pak.cgi\'>$service</a>";
}
- print "<td align='left' $col width='31%'>$displayname</td> ";
+ print "<td align='left' width='31%'>$displayname</td> ";
- my $status = isautorun($pak,$service,$col);
+ my $status = isautorun($pak,$service);
print "$status ";
- my $status = isrunningaddon($pak,$service,$col);
+ my $status = isrunningaddon($pak,$service);
$status =~ s/\\[[0-1]\;[0-9]+m//g;
chomp($status);
@@ -193,25 +179,26 @@ END
}
}
- print "</table></div>\n";
+ print "</table>\n";
+
&Header::closebox();
&Header::closebigbox();
&Header::closepage();
sub isautorun (@) {
- my ($pak, $service, $col) = @_;
+ my ($pak, $service) = @_;
my @testcmd = &General::system_output("/usr/local/bin/addonctrl", "$pak", "boot-status", "$service");
my $testcmd = @testcmd[0];
- my $status = "<td align='center' $col><img alt='$Lang::tr{'service boot setting unavailable'}' title='$Lang::tr{'service boot setting unavailable'}' src='/images/dialog-warning.png' border='0' width='16' height='16' /></td>";
+ my $status = "<td align='center'><img alt='$Lang::tr{'service boot setting unavailable'}' title='$Lang::tr{'service boot setting unavailable'}' src='/images/dialog-warning.png' border='0' width='16' height='16' /></td>";
# Check if autorun for the given service is enabled.
if ( $testcmd =~ /enabled\ on\ boot/ ) {
# Adjust status.
- $status = "<td align='center' $col><a href='services.cgi?$pak!disable!$service'><img alt='$Lang::tr{'deactivate'}' title='$Lang::tr{'deactivate'}' src='/images/on.gif' border='0' width='16' height='16' /></a></td>";
+ $status = "<td align='center'><a href='services.cgi?$pak!disable!$service'><img alt='$Lang::tr{'deactivate'}' title='$Lang::tr{'deactivate'}' src='/images/on.gif' border='0' width='16' height='16' /></a></td>";
} elsif ( $testcmd =~ /disabled\ on\ boot/ ) {
# Adjust status.
- $status = "<td align='center' $col><a href='services.cgi?$pak!enable!$service'><img alt='$Lang::tr{'activate'}' title='$Lang::tr{'activate'}' src='/images/off.gif' border='0' width='16' height='16' /></a></td>";
+ $status = "<td align='center'><a href='services.cgi?$pak!enable!$service'><img alt='$Lang::tr{'activate'}' title='$Lang::tr{'activate'}' src='/images/off.gif' border='0' width='16' height='16' /></a></td>";
}
# Return the status.
@@ -219,21 +206,19 @@ sub isautorun (@) {
}
sub isrunningaddon (@) {
- my ($pak, $service, $col) = @_;
+ my ($pak, $service) = @_;
- my $status = "<td align='center' bgcolor='${Header::colourred}'><font color='white'><b>$Lang::tr{'stopped'}</b></font></td><td colspan='2' $col></td>";
- my $pid = '';
+ my $status = "<td class='status is-stopped'>$Lang::tr{'stopped'}</td><td colspan='2'></td>";
my $testcmd = '';
my $exename;
- my @memory;
my @testcmd = &General::system_output("/usr/local/bin/addonctrl", "$pak", "status", "$service");
my $testcmd = @testcmd[0];
if ( $testcmd =~ /is\ running/ && $testcmd !~ /is\ not\ running/){
- $status = "<td align='center' $col width='8%'><a href='services.cgi?$pak!stop!$service'><img alt='$Lang::tr{'stop'}' title='$Lang::tr{'stop'}' src='/images/go-down.png' border='0' /></a></td> ";
- $status .= "<td align='center' $col width='8%'><a href='services.cgi?$pak!restart!$service'><img alt='$Lang::tr{'restart'}' title='$Lang::tr{'restart'}' src='/images/reload.gif' border='0' /></a></td> ";
- $status .= "<td align='center' bgcolor='${Header::colourgreen}'><font color='white'><b>$Lang::tr{'running'}</b></font></td>";
+ $status = "<td align='center' width='8%'><a href='services.cgi?$pak!stop!$service'><img alt='$Lang::tr{'stop'}' title='$Lang::tr{'stop'}' src='/images/go-down.png' border='0' /></a></td> ";
+ $status .= "<td align='center' width='8%'><a href='services.cgi?$pak!restart!$service'><img alt='$Lang::tr{'restart'}' title='$Lang::tr{'restart'}' src='/images/reload.gif' border='0' /></a></td> ";
+ $status .= "<td class='status is-running'>$Lang::tr{'running'}</td>";
$testcmd =~ s/.* //gi;
$testcmd =~ s/[a-z_]//gi;
$testcmd =~ s/\[[0-1]\;[0-9]+//gi;
@@ -242,22 +227,17 @@ sub isrunningaddon (@) {
$testcmd =~ s///gi;
my @pid = split(/\s/,$testcmd);
- $status .="<td align='center' $col>$pid[0]</td>";
- my $memory = 0;
+ # Fetch the memory consumption
+ my $memory = &General::get_memory_consumption(@pid);
- foreach (@pid){
- chomp($_);
- if (open(FILE, "/proc/$_/statm")){
- my $temp = <FILE>;
- @memory = split(/ /,$temp);
- }
- $memory+=$memory[0];
- }
- $status .="<td align='center' $col>$memory KB</td>";
+ # Format memory
+ $memory = &General::formatBytes($memory);
+
+ $status .="<td align='right'>$memory</td>";
}else{
- $status = "<td align='center' $col width='16%' colspan=2><a href='services.cgi?$pak!start!$service'><img alt='$Lang::tr{'start'}' title='$Lang::tr{'start'}' src='/images/go-up.png' border='0' /></a></td>";
- $status .= "<td align='center' bgcolor='${Header::colourred}'><font color='white'><b>$Lang::tr{'stopped'}</b></font></td><td colspan='2' $col></td>";
+ $status = "<td align='center' width='16%' colspan=2><a href='services.cgi?$pak!start!$service'><img alt='$Lang::tr{'start'}' title='$Lang::tr{'start'}' src='/images/go-up.png' border='0' /></a></td>";
+ $status .= "<td class='status is-stopped'>$Lang::tr{'stopped'}</td><td colspan='2'></td>";
}
return $status;
}
diff --git a/html/cgi-bin/vpnmain.cgi b/html/cgi-bin/vpnmain.cgi
index 25e0f0a53..4423a29a8 100644
--- a/html/cgi-bin/vpnmain.cgi
+++ b/html/cgi-bin/vpnmain.cgi
@@ -3402,21 +3402,21 @@ END
foreach my $line (@status) {
if (($line =~ /\"$confighash{$key}[1]\".*IPsec SA established/) ||
($line =~ /$confighash{$key}[1]\{.*INSTALLED/)) {
- $col1="bgcolor='${Header::colourgreen}'";
- $active = "<b><font color='#FFFFFF'>$Lang::tr{'capsopen'}</font></b>";
+ $col1="class='status is-connected'";
+ $active = "$Lang::tr{'capsopen'}";
last;
} elsif ($line =~ /$confighash{$key}[1]\[.*CONNECTING/) {
- $col1="bgcolor='${Header::colourorange}'";
- $active = "<b><font color='#FFFFFF'>$Lang::tr{'vpn connecting'}</font></b>";
+ $col1="class='status is-connecting'";
+ $active = "$Lang::tr{'vpn connecting'}";
} elsif ($line =~ /$confighash{$key}[1]\{.*ROUTED/) {
- $col1="bgcolor='${Header::colourorange}'";
- $active = "<b><font color='#FFFFFF'>$Lang::tr{'vpn on-demand'}</font></b>";
+ $col1="class='status is-connecting'";
+ $active = "$Lang::tr{'vpn on-demand'}";
}
}
# move to blue if really down
if ($confighash{$key}[0] eq 'off' && $col1 =~ /${Header::colourred}/ ) {
- $col1="bgcolor='${Header::colourblue}'";
- $active = "<b><font color='#FFFFFF'>$Lang::tr{'capsclosed'}</font></b>";
+ $col1="class='status is-disabled'";
+ $active = "$Lang::tr{'capsclosed'}";
}
print <<END
<td align='center' $col1>$active</td>
diff --git a/html/html/themes/ipfire/include/css/style.css b/html/html/themes/ipfire/include/css/style.css
index 49d13ffd2..c935f2ff4 100644
--- a/html/html/themes/ipfire/include/css/style.css
+++ b/html/html/themes/ipfire/include/css/style.css
@@ -5,6 +5,10 @@
--color-red-invert : #ffffff;
--color-blue : #333399;
--color-blue-invert : #ffffff;
+ --color-orange : #ff9933;
+ --color-orange-invert : #ffffff;
+ --color-black : #000000;
+ --color-black-invert : #ffffff;
--color-grey : #d6d6d6;
--color-light-grey : #f0f0f0;
@@ -96,10 +100,6 @@ h1, h2, h3, h4, h5, h6 {
font-size: 20px;
}
-select, textarea, input[type=text], input[type=number] {
- width: 100%;
-}
-
br.clear {
clear: both;
}
@@ -204,7 +204,6 @@ section .title {
}
#main_inner p {
- text-align: justify;
margin-bottom: 2em;
}
@@ -390,24 +389,29 @@ table {
font-weight: bold;
}
-.tbl .status.is-running {
+.tbl .status.is-running, .tbl .status.is-connected {
background-color: var(--color-green);
color: var(--color-green-invert);
}
-.tbl .status.is-stopped {
+.tbl .status.is-stopped, .tbl .status.is-disconnected {
background-color: var(--color-red);
color: var(--color-red-invert);
width: 33%;
}
+.tbl .status.is-connecting {
+ background-color: var(--color-orange);
+ color: var(--color-orange-invert);
+}
+
.tbl .status.is-vulnerable {
background-color: var(--color-red);
color: var(--color-red-invert);
}
-.tbl .status.is-mitigation {
+.tbl .status.is-disabled, .tbl .status.is-mitigation {
background-color: var(--color-blue);
color: var(--color-blue-invert);
}
@@ -417,6 +421,55 @@ table {
color: var(--color-green-invert);
}
+/* Interfaces */
+
+.tbl .intf {
+ text-align: center;
+ font-weight: bold;
+}
+
+.tbl .intf.red {
+ background-color: var(--color-red);
+ color: var(--color-red-invert);
+}
+
+.tbl .intf.green {
+ background-color: var(--color-green);
+ color: var(--color-green-invert);
+}
+
+.tbl .intf.orange {
+ background-color: var(--color-orange);
+ color: var(--color-orange-invert);
+}
+
+.tbl .intf.blue {
+ background-color: var(--color-blue);
+ color: var(--color-blue-invert);
+}
+
+/* Policies */
+
+.tbl .policy {
+ text-align: center;
+ font-weight: bold;
+}
+
+.tbl .policy.is-blocked {
+ background-color: var(--color-red);
+ color: var(--color-red-invert);
+}
+
+.tbl .policy.is-allowed {
+ background-color: var(--color-green);
+ color: var(--color-green-invert);
+}
+
+.tbl .policy.is-rejected {
+ background-color: var(--color-black);
+ color: var(--color-black-invert);
+}
+
/* Notes */
.notes .is-warning {
diff --git a/langs/en/cgi-bin/en.pl b/langs/en/cgi-bin/en.pl
index 4b5d0779a..26c11b2f6 100644
--- a/langs/en/cgi-bin/en.pl
+++ b/langs/en/cgi-bin/en.pl
@@ -745,6 +745,7 @@
'daily firewallhits' => 'daily firewallhits',
'dangerous' => 'Dangerous',
'dat without key' => 'An encrypted archive cannot be restored without the key.',
+'data transfer' => 'Data Transfer',
'date' => 'Date',
'date not in logs' => 'No (or only partial) logs exist for the day queried',
'day' => 'Day',
@@ -3022,6 +3023,7 @@
'winbind daemon' => 'Winbind Daemon',
'wins server' => 'Wins Server',
'wins support' => 'Wins Support',
+'wireguard' => 'WireGuard',
'wireless' => 'Wireless',
'wireless config added' => 'Wireless config added',
'wireless config changed' => 'Wireless config changed',
hooks/post-receive
--
IPFire 2.x development tree