diff --git a/net/quagga/src/opnsense/mvc/app/controllers/OPNsense/Quagga/Api/DiagnosticsController.php b/net/quagga/src/opnsense/mvc/app/controllers/OPNsense/Quagga/Api/DiagnosticsController.php
index ea39a67a5..8cb4ee062 100644
--- a/net/quagga/src/opnsense/mvc/app/controllers/OPNsense/Quagga/Api/DiagnosticsController.php
+++ b/net/quagga/src/opnsense/mvc/app/controllers/OPNsense/Quagga/Api/DiagnosticsController.php
@@ -122,12 +122,16 @@ class DiagnosticsController extends ApiControllerBase
private function get_general_information($name)
{
$backend = new Backend();
- return array("response" => json_decode(trim($backend->configdRun("quagga general-$name"))));
+ return array("response" => json_decode(trim($backend->configdRun("quagga general-$name")), true));
}
public function generalroutesAction()
{
return $this->get_general_information('routes');
}
+ public function logAction()
+ {
+ return $this->get_general_information('log')['response']['general_log'];
+ }
public function generalroutes6Action()
{
return $this->get_general_information('routes6');
diff --git a/net/quagga/src/opnsense/mvc/app/controllers/OPNsense/Quagga/DiagnosticsController.php b/net/quagga/src/opnsense/mvc/app/controllers/OPNsense/Quagga/DiagnosticsController.php
index 2df01e100..53ed82e2a 100644
--- a/net/quagga/src/opnsense/mvc/app/controllers/OPNsense/Quagga/DiagnosticsController.php
+++ b/net/quagga/src/opnsense/mvc/app/controllers/OPNsense/Quagga/DiagnosticsController.php
@@ -47,4 +47,9 @@ class DiagnosticsController extends \OPNsense\Base\IndexController
$this->view->title = gettext("Diagnostics: General");
$this->view->pick('OPNsense/Quagga/diagnosticsgeneral');
}
+ public function logAction()
+ {
+ $this->view->title = gettext("Diagnostics: Log");
+ $this->view->pick('OPNsense/Quagga/log');
+ }
}
diff --git a/net/quagga/src/opnsense/mvc/app/controllers/OPNsense/Quagga/forms/general.xml b/net/quagga/src/opnsense/mvc/app/controllers/OPNsense/Quagga/forms/general.xml
index 814783edb..00c3f64ee 100644
--- a/net/quagga/src/opnsense/mvc/app/controllers/OPNsense/Quagga/forms/general.xml
+++ b/net/quagga/src/opnsense/mvc/app/controllers/OPNsense/Quagga/forms/general.xml
@@ -1,8 +1,32 @@
diff --git a/net/quagga/src/opnsense/mvc/app/models/OPNsense/Quagga/General.xml b/net/quagga/src/opnsense/mvc/app/models/OPNsense/Quagga/General.xml
index 31bb3778f..5bb1c1ddc 100644
--- a/net/quagga/src/opnsense/mvc/app/models/OPNsense/Quagga/General.xml
+++ b/net/quagga/src/opnsense/mvc/app/models/OPNsense/Quagga/General.xml
@@ -6,5 +6,43 @@
0
Y
+
+ 0
+ Y
+
+
+ Y
+ N
+ notifications
+
+ Critical
+ Emergencies
+ Errors
+ Alerts
+ Warnings
+ Notifications
+ Informational
+ Debugging
+
+
+
+ 0
+ Y
+
+
+ Y
+ N
+ notifications
+
+ Critical
+ Emergencies
+ Errors
+ Alerts
+ Warnings
+ Notifications
+ Informational
+ Debugging
+
+
diff --git a/net/quagga/src/opnsense/mvc/app/models/OPNsense/Quagga/Menu/Menu.xml b/net/quagga/src/opnsense/mvc/app/models/OPNsense/Quagga/Menu/Menu.xml
index 721bfc81e..d7da7259a 100644
--- a/net/quagga/src/opnsense/mvc/app/models/OPNsense/Quagga/Menu/Menu.xml
+++ b/net/quagga/src/opnsense/mvc/app/models/OPNsense/Quagga/Menu/Menu.xml
@@ -11,6 +11,7 @@
+
diff --git a/net/quagga/src/opnsense/mvc/app/views/OPNsense/Quagga/log.volt b/net/quagga/src/opnsense/mvc/app/views/OPNsense/Quagga/log.volt
new file mode 100644
index 000000000..50d35691c
--- /dev/null
+++ b/net/quagga/src/opnsense/mvc/app/views/OPNsense/Quagga/log.volt
@@ -0,0 +1,24 @@
+
+
+
+
+ | {{ lang._('Date') }} |
+ {{ lang._('Time') }} |
+ {{ lang._('Service') }} |
+ {{ lang._('Message') }} |
+
+
+
+
+
+
+
diff --git a/net/quagga/src/opnsense/scripts/quagga/quagga.rb b/net/quagga/src/opnsense/scripts/quagga/quagga.rb
index 9a386e84d..c507c97c1 100755
--- a/net/quagga/src/opnsense/scripts/quagga/quagga.rb
+++ b/net/quagga/src/opnsense/scripts/quagga/quagga.rb
@@ -119,7 +119,7 @@ class General
if line.length > 10
code, network, ad, metric, via, direct, interface, time = line.scan(entry_regex).first
code = code.split('').map {|c| {short: c, long: meanings[c]}}
- entries << {code: code, network: (network || direct), ad: ad, metric: metric, interface: interface, time: time }
+ entries << {code: code, network: (network || direct), ad: ad, via: via, metric: metric, interface: interface, time: time }
end
end
entries
@@ -128,6 +128,15 @@ class General
def routes6
routes(true)
end
+
+ def log
+ File.read('/var/log/quagga.log').lines.select {|l| l.strip.length > 10}.map do |line|
+ date, time, service, message = line.split(' ', 4)
+ date = date.split('/').reverse.join(".") # format dd.mm.yyyy
+ service = service.split(':').first if service
+ {date: date, time:time, service: service, message: message }
+ end
+ end
end
class OSPF
@@ -433,7 +442,7 @@ class OSPFv3
@vtysh = sh
end
- def overview
+ def overview
lines = @vtysh.execute("show ipv6 ospf6").lines
overview = {}
while line = lines.shift&.strip
@@ -647,7 +656,7 @@ end
require 'optparse'
options = {}
-supported_sections = %w{general ospf}
+
OptionParser.new do |opts|
opts.banner = "Usage: #{__FILE__} -s section [section specific params]"
#### OSPFv2
@@ -689,6 +698,9 @@ OptionParser.new do |opts|
opts.on("-6", "--general-routes6", "Print Routing Table (IPv6)") do |od|
options[:general_routes6] = od
end
+ opts.on("-l", "--general-log", "Print Logs") do |od|
+ options[:general_log] = od
+ end
### BGP
opts.on("-B", "--bgp-overview", "Print an overview of BGP") do |od|
options[:bgp_overview] = od
diff --git a/net/quagga/src/opnsense/scripts/quagga/setup.sh b/net/quagga/src/opnsense/scripts/quagga/setup.sh
index 0c6d492f2..b89b136df 100755
--- a/net/quagga/src/opnsense/scripts/quagga/setup.sh
+++ b/net/quagga/src/opnsense/scripts/quagga/setup.sh
@@ -14,3 +14,8 @@ chmod 750 /usr/local/etc/quagga
# ensure that quagga can read the configuration files
chown -R $user:$group /usr/local/etc/quagga
chown -R $user:$group /var/run/quagga
+
+# logfile (if used)
+touch /var/log/quagga.log
+chown $user:$group /var/log/quagga.log
+
diff --git a/net/quagga/src/opnsense/service/conf/actions.d/actions_quagga.conf b/net/quagga/src/opnsense/service/conf/actions.d/actions_quagga.conf
index 7dca79606..6e5b72587 100644
--- a/net/quagga/src/opnsense/service/conf/actions.d/actions_quagga.conf
+++ b/net/quagga/src/opnsense/service/conf/actions.d/actions_quagga.conf
@@ -112,6 +112,13 @@ parameters:
type:script_output
message: Print IPv6 Routing Table
+[general-log]
+command:/usr/local/opnsense/scripts/quagga/quagga.rb --general-log
+parameters:
+type:script_output
+message: Print IPv6 Routing Table
+
+
[general-runningconfig]
command:/usr/local/bin/vtysh -c "show run"
parameters:
diff --git a/net/quagga/src/opnsense/service/templates/OPNsense/Quagga/bgpd.conf b/net/quagga/src/opnsense/service/templates/OPNsense/Quagga/bgpd.conf
index 3783dfaba..a1085dd9a 100644
--- a/net/quagga/src/opnsense/service/templates/OPNsense/Quagga/bgpd.conf
+++ b/net/quagga/src/opnsense/service/templates/OPNsense/Quagga/bgpd.conf
@@ -4,6 +4,14 @@
! Zebra configuration saved from vty
! 2017/03/03 20:21:04
!
+{% if helpers.exists('OPNsense.quagga.general') %}
+{% if helpers.exists('OPNsense.quagga.general.enablelogfile') and OPNsense.quagga.general.enablelogfile == '1' %}
+log file /var/log/quagga.log {{ OPNsense.quagga.general.logfilelevel }}
+{% endif %}
+{% if helpers.exists('OPNsense.quagga.general.enablesyslog') and OPNsense.quagga.general.enablesyslog == '1' %}
+log syslog {{ OPNsense.quagga.general.sysloglevel }}
+{% endif %}
+{% endif %}
!
!
!
diff --git a/net/quagga/src/opnsense/service/templates/OPNsense/Quagga/ospf6d.conf b/net/quagga/src/opnsense/service/templates/OPNsense/Quagga/ospf6d.conf
index c852d7781..20594ac19 100644
--- a/net/quagga/src/opnsense/service/templates/OPNsense/Quagga/ospf6d.conf
+++ b/net/quagga/src/opnsense/service/templates/OPNsense/Quagga/ospf6d.conf
@@ -7,6 +7,14 @@
! Zebra configuration saved from vty
! 2017/03/03 20:21:04
!
+{% if helpers.exists('OPNsense.quagga.general') %}
+{% if helpers.exists('OPNsense.quagga.general.enablelogfile') and OPNsense.quagga.general.enablelogfile == '1' %}
+log file /var/log/quagga.log {{ OPNsense.quagga.general.logfilelevel }}
+{% endif %}
+{% if helpers.exists('OPNsense.quagga.general.enablesyslog') and OPNsense.quagga.general.enablesyslog == '1' %}
+log syslog {{ OPNsense.quagga.general.sysloglevel }}
+{% endif %}
+{% endif %}
!
!
!
diff --git a/net/quagga/src/opnsense/service/templates/OPNsense/Quagga/ospfd.conf b/net/quagga/src/opnsense/service/templates/OPNsense/Quagga/ospfd.conf
index c10c5ac11..0f2b9faed 100644
--- a/net/quagga/src/opnsense/service/templates/OPNsense/Quagga/ospfd.conf
+++ b/net/quagga/src/opnsense/service/templates/OPNsense/Quagga/ospfd.conf
@@ -7,6 +7,14 @@
! Zebra configuration saved from vty
! 2017/03/03 20:21:04
!
+{% if helpers.exists('OPNsense.quagga.general') %}
+{% if helpers.exists('OPNsense.quagga.general.enablelogfile') and OPNsense.quagga.general.enablelogfile == '1' %}
+log file /var/log/quagga.log {{ OPNsense.quagga.general.logfilelevel }}
+{% endif %}
+{% if helpers.exists('OPNsense.quagga.general.enablesyslog') and OPNsense.quagga.general.enablesyslog == '1' %}
+log syslog {{ OPNsense.quagga.general.sysloglevel }}
+{% endif %}
+{% endif %}
!
!
!
diff --git a/net/quagga/src/opnsense/service/templates/OPNsense/Quagga/ripd.conf b/net/quagga/src/opnsense/service/templates/OPNsense/Quagga/ripd.conf
index 5e784b300..1ba199403 100644
--- a/net/quagga/src/opnsense/service/templates/OPNsense/Quagga/ripd.conf
+++ b/net/quagga/src/opnsense/service/templates/OPNsense/Quagga/ripd.conf
@@ -4,6 +4,14 @@
! Zebra configuration saved from vty
! 2017/03/26 22:40:16
!
+{% if helpers.exists('OPNsense.quagga.general') %}
+{% if helpers.exists('OPNsense.quagga.general.enablelogfile') and OPNsense.quagga.general.enablelogfile == '1' %}
+log file /var/log/quagga.log {{ OPNsense.quagga.general.logfilelevel }}
+{% endif %}
+{% if helpers.exists('OPNsense.quagga.general.enablesyslog') and OPNsense.quagga.general.enablesyslog == '1' %}
+log syslog {{ OPNsense.quagga.general.sysloglevel }}
+{% endif %}
+{% endif %}
!
router zebra
no redistribute rip
diff --git a/net/quagga/src/opnsense/service/templates/OPNsense/Quagga/zebra.conf b/net/quagga/src/opnsense/service/templates/OPNsense/Quagga/zebra.conf
index 1ee6ba8f6..fb9535338 100644
--- a/net/quagga/src/opnsense/service/templates/OPNsense/Quagga/zebra.conf
+++ b/net/quagga/src/opnsense/service/templates/OPNsense/Quagga/zebra.conf
@@ -1,7 +1,14 @@
+{% if helpers.exists('OPNsense.quagga.general') %}
!
! Zebra configuration saved from vty
! 2017/03/03 20:21:04
!
+{% if helpers.exists('OPNsense.quagga.general.enablelogfile') and OPNsense.quagga.general.enablelogfile == '1' %}
+log file /var/log/quagga.log {{ OPNsense.quagga.general.logfilelevel }}
+{% endif %}
+{% if helpers.exists('OPNsense.quagga.general.enablesyslog') and OPNsense.quagga.general.enablesyslog == '1' %}
+log syslog {{ OPNsense.quagga.general.sysloglevel }}
+{% endif %}
!
!
!
@@ -12,3 +19,4 @@ ipv6 forwarding
!
line vty
!
+{% endif %}