From 2fa8d2c6bdb1853f81c64cceaf9159908913d97e Mon Sep 17 00:00:00 2001 From: Michael Date: Sat, 30 Dec 2017 10:53:14 +0100 Subject: [PATCH] net-mgmt/lldpd: New plugin (#449) --- net-mgmt/lldpd/Makefile | 7 ++ net-mgmt/lldpd/pkg-descr | 7 ++ .../lldpd/src/etc/inc/plugins.inc.d/lldpd.inc | 49 +++++++++++++ .../OPNsense/Lldpd/Api/GeneralController.php | 40 ++++++++++ .../OPNsense/Lldpd/Api/ServiceController.php | 52 +++++++++++++ .../OPNsense/Lldpd/GeneralController.php | 38 ++++++++++ .../OPNsense/Lldpd/forms/general.xml | 32 ++++++++ .../mvc/app/models/OPNsense/Lldpd/ACL/ACL.xml | 9 +++ .../mvc/app/models/OPNsense/Lldpd/General.php | 35 +++++++++ .../mvc/app/models/OPNsense/Lldpd/General.xml | 27 +++++++ .../app/models/OPNsense/Lldpd/Menu/Menu.xml | 5 ++ .../mvc/app/views/OPNsense/Lldpd/general.volt | 73 +++++++++++++++++++ .../service/conf/actions.d/actions_lldpd.conf | 35 +++++++++ .../service/templates/OPNsense/Lldpd/+TARGETS | 2 + .../service/templates/OPNsense/Lldpd/lldpd | 6 ++ .../templates/OPNsense/Lldpd/lldpd.conf | 2 + 16 files changed, 419 insertions(+) create mode 100644 net-mgmt/lldpd/Makefile create mode 100644 net-mgmt/lldpd/pkg-descr create mode 100644 net-mgmt/lldpd/src/etc/inc/plugins.inc.d/lldpd.inc create mode 100644 net-mgmt/lldpd/src/opnsense/mvc/app/controllers/OPNsense/Lldpd/Api/GeneralController.php create mode 100644 net-mgmt/lldpd/src/opnsense/mvc/app/controllers/OPNsense/Lldpd/Api/ServiceController.php create mode 100644 net-mgmt/lldpd/src/opnsense/mvc/app/controllers/OPNsense/Lldpd/GeneralController.php create mode 100644 net-mgmt/lldpd/src/opnsense/mvc/app/controllers/OPNsense/Lldpd/forms/general.xml create mode 100644 net-mgmt/lldpd/src/opnsense/mvc/app/models/OPNsense/Lldpd/ACL/ACL.xml create mode 100644 net-mgmt/lldpd/src/opnsense/mvc/app/models/OPNsense/Lldpd/General.php create mode 100644 net-mgmt/lldpd/src/opnsense/mvc/app/models/OPNsense/Lldpd/General.xml create mode 100644 net-mgmt/lldpd/src/opnsense/mvc/app/models/OPNsense/Lldpd/Menu/Menu.xml create mode 100644 net-mgmt/lldpd/src/opnsense/mvc/app/views/OPNsense/Lldpd/general.volt create mode 100644 net-mgmt/lldpd/src/opnsense/service/conf/actions.d/actions_lldpd.conf create mode 100644 net-mgmt/lldpd/src/opnsense/service/templates/OPNsense/Lldpd/+TARGETS create mode 100644 net-mgmt/lldpd/src/opnsense/service/templates/OPNsense/Lldpd/lldpd create mode 100644 net-mgmt/lldpd/src/opnsense/service/templates/OPNsense/Lldpd/lldpd.conf diff --git a/net-mgmt/lldpd/Makefile b/net-mgmt/lldpd/Makefile new file mode 100644 index 000000000..64ae67e49 --- /dev/null +++ b/net-mgmt/lldpd/Makefile @@ -0,0 +1,7 @@ +PLUGIN_NAME= lldpd +PLUGIN_VERSION= 0.1 +PLUGIN_COMMENT= LLDP allows you to know exactly on which port is a server +PLUGIN_DEPENDS= lldpd +PLUGIN_MAINTAINER= m.muenz@gmail.com + +.include "../../Mk/plugins.mk" diff --git a/net-mgmt/lldpd/pkg-descr b/net-mgmt/lldpd/pkg-descr new file mode 100644 index 000000000..81e62b6a3 --- /dev/null +++ b/net-mgmt/lldpd/pkg-descr @@ -0,0 +1,7 @@ +LLDP is an industry standard protocol designed to supplant +proprietary Link-Layer protocols such as EDP or CDP. +The goal of LLDP is to provide an inter-vendor compatible +mechanism to deliver Link-Layer notifications to adjacent +network devices. + +WWW: https://vincentbernat.github.io/lldpd/ diff --git a/net-mgmt/lldpd/src/etc/inc/plugins.inc.d/lldpd.inc b/net-mgmt/lldpd/src/etc/inc/plugins.inc.d/lldpd.inc new file mode 100644 index 000000000..0a538d58f --- /dev/null +++ b/net-mgmt/lldpd/src/etc/inc/plugins.inc.d/lldpd.inc @@ -0,0 +1,49 @@ + gettext('lldpd daemon'), + 'configd' => array( + 'restart' => array('lldpd restart'), + 'start' => array('lldpd start'), + 'stop' => array('lldpd stop'), + ), + 'name' => 'lldpd', + 'pidfile' => '/var/run/lldpd.pid' + ); + } + + return $services; +} diff --git a/net-mgmt/lldpd/src/opnsense/mvc/app/controllers/OPNsense/Lldpd/Api/GeneralController.php b/net-mgmt/lldpd/src/opnsense/mvc/app/controllers/OPNsense/Lldpd/Api/GeneralController.php new file mode 100644 index 000000000..5f7ca2bf9 --- /dev/null +++ b/net-mgmt/lldpd/src/opnsense/mvc/app/controllers/OPNsense/Lldpd/Api/GeneralController.php @@ -0,0 +1,40 @@ +configdRun("lldpd neighbor"); + return array("response" => $response); + } + static protected $internalServiceClass = '\OPNsense\Lldpd\General'; + static protected $internalServiceTemplate = 'OPNsense/Lldpd'; + static protected $internalServiceEnabled = 'general.enabled'; + static protected $internalServiceName = 'lldpd'; +} diff --git a/net-mgmt/lldpd/src/opnsense/mvc/app/controllers/OPNsense/Lldpd/GeneralController.php b/net-mgmt/lldpd/src/opnsense/mvc/app/controllers/OPNsense/Lldpd/GeneralController.php new file mode 100644 index 000000000..c444db60d --- /dev/null +++ b/net-mgmt/lldpd/src/opnsense/mvc/app/controllers/OPNsense/Lldpd/GeneralController.php @@ -0,0 +1,38 @@ +view->generalForm = $this->getForm("general"); + $this->view->pick('OPNsense/Lldpd/general'); + } +} diff --git a/net-mgmt/lldpd/src/opnsense/mvc/app/controllers/OPNsense/Lldpd/forms/general.xml b/net-mgmt/lldpd/src/opnsense/mvc/app/controllers/OPNsense/Lldpd/forms/general.xml new file mode 100644 index 000000000..145254a3b --- /dev/null +++ b/net-mgmt/lldpd/src/opnsense/mvc/app/controllers/OPNsense/Lldpd/forms/general.xml @@ -0,0 +1,32 @@ +
+ + general.enabled + + checkbox + This will activate the LLDPD service. + + + general.cdp + + checkbox + This will activate the Cisco Discovery Protocol. + + + general.fdp + + checkbox + This will activate the Foundry Discovery Protocol. + + + general.edp + + checkbox + This will activate the Extreme Discovery Protocol. + + + general.sonmp + + checkbox + This will activate the SONMP Protocol by Nortel. + +
diff --git a/net-mgmt/lldpd/src/opnsense/mvc/app/models/OPNsense/Lldpd/ACL/ACL.xml b/net-mgmt/lldpd/src/opnsense/mvc/app/models/OPNsense/Lldpd/ACL/ACL.xml new file mode 100644 index 000000000..9e0cfe186 --- /dev/null +++ b/net-mgmt/lldpd/src/opnsense/mvc/app/models/OPNsense/Lldpd/ACL/ACL.xml @@ -0,0 +1,9 @@ + + + Services: Lldpd + + ui/lldpd/* + api/lldpd/* + + + diff --git a/net-mgmt/lldpd/src/opnsense/mvc/app/models/OPNsense/Lldpd/General.php b/net-mgmt/lldpd/src/opnsense/mvc/app/models/OPNsense/Lldpd/General.php new file mode 100644 index 000000000..8f32307ad --- /dev/null +++ b/net-mgmt/lldpd/src/opnsense/mvc/app/models/OPNsense/Lldpd/General.php @@ -0,0 +1,35 @@ + + //OPNsense/lldpd/general + Lldpd configuration + 1.0.0 + + + 0 + Y + + + 0 + Y + + + 0 + Y + + + 0 + Y + + + 0 + Y + + + diff --git a/net-mgmt/lldpd/src/opnsense/mvc/app/models/OPNsense/Lldpd/Menu/Menu.xml b/net-mgmt/lldpd/src/opnsense/mvc/app/models/OPNsense/Lldpd/Menu/Menu.xml new file mode 100644 index 000000000..800d413e0 --- /dev/null +++ b/net-mgmt/lldpd/src/opnsense/mvc/app/models/OPNsense/Lldpd/Menu/Menu.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/net-mgmt/lldpd/src/opnsense/mvc/app/views/OPNsense/Lldpd/general.volt b/net-mgmt/lldpd/src/opnsense/mvc/app/views/OPNsense/Lldpd/general.volt new file mode 100644 index 000000000..5242690de --- /dev/null +++ b/net-mgmt/lldpd/src/opnsense/mvc/app/views/OPNsense/Lldpd/general.volt @@ -0,0 +1,73 @@ +{# + +OPNsense® is Copyright © 2014 – 2017 by Deciso B.V. +This file is Copyright © 2017 by Michael Muenz +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES, +INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, +OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. + +#} + + +
+
+ {{ partial("layout_partials/base_form",['fields':generalForm,'id':'frm_general_settings'])}} +
+
+ +
+
+
+

+    
+
+ + diff --git a/net-mgmt/lldpd/src/opnsense/service/conf/actions.d/actions_lldpd.conf b/net-mgmt/lldpd/src/opnsense/service/conf/actions.d/actions_lldpd.conf new file mode 100644 index 000000000..3a9ad7f30 --- /dev/null +++ b/net-mgmt/lldpd/src/opnsense/service/conf/actions.d/actions_lldpd.conf @@ -0,0 +1,35 @@ +[start] +command:/usr/local/etc/rc.d/lldpd start +parameters: +type:script +message:starting Lldpd + +[stop] +command:/usr/local/etc/rc.d/lldpd stop +parameters: +type:script +message:stopping Lldpd + +[restart] +command:/usr/local/etc/rc.d/lldpd restart +parameters: +type:script +message:restarting Lldpd + +[reconfigure] +command:/usr/local/etc/rc.d/lldpd restart +parameters: +type:script +message:reconfigure Lldpd + +[status] +command:/usr/local/etc/rc.d/lldpd status +parameters: +type:script_output +message:request Lldpd status + +[neighbor] +command:/usr/local/sbin/lldpcli show neighbors +parameters: +type:script_output +message:show lldp neighbors diff --git a/net-mgmt/lldpd/src/opnsense/service/templates/OPNsense/Lldpd/+TARGETS b/net-mgmt/lldpd/src/opnsense/service/templates/OPNsense/Lldpd/+TARGETS new file mode 100644 index 000000000..8c11bd438 --- /dev/null +++ b/net-mgmt/lldpd/src/opnsense/service/templates/OPNsense/Lldpd/+TARGETS @@ -0,0 +1,2 @@ +lldpd:/etc/rc.conf.d/lldpd +lldpd.conf:/usr/local/etc/lldpd.conf diff --git a/net-mgmt/lldpd/src/opnsense/service/templates/OPNsense/Lldpd/lldpd b/net-mgmt/lldpd/src/opnsense/service/templates/OPNsense/Lldpd/lldpd new file mode 100644 index 000000000..2d4a82917 --- /dev/null +++ b/net-mgmt/lldpd/src/opnsense/service/templates/OPNsense/Lldpd/lldpd @@ -0,0 +1,6 @@ +{% if helpers.exists('OPNsense.lldpd.general.enabled') and OPNsense.lldpd.general.enabled == '1' %} +lldpd_enable="YES" +lldpd_flags="{% if helpers.exists('OPNsense.lldpd.general.cdp') and OPNsense.lldpd.general.cdp == '1' %}-c{% endif %}{% if helpers.exists('OPNsense.lldpd.general.fdp') and OPNsense.lldpd.general.fdp == '1' %} -f{% endif %}{% if helpers.exists('OPNsense.lldpd.general.edp') and OPNsense.lldpd.general.edp == '1' %} -e{% endif %}{% if helpers.exists('OPNsense.lldpd.general.sonmp') and OPNsense.lldpd.general.sonmp == '1' %} -s{% endif %}" +{% else %} +lldpd_enable="NO" +{% endif %} diff --git a/net-mgmt/lldpd/src/opnsense/service/templates/OPNsense/Lldpd/lldpd.conf b/net-mgmt/lldpd/src/opnsense/service/templates/OPNsense/Lldpd/lldpd.conf new file mode 100644 index 000000000..7218b0cb8 --- /dev/null +++ b/net-mgmt/lldpd/src/opnsense/service/templates/OPNsense/Lldpd/lldpd.conf @@ -0,0 +1,2 @@ +{% if helpers.exists('OPNsense.lldpd.general.enabled') and OPNsense.lldpd.general.enabled == '1' %} +{% endif %}