diff --git a/net/mdns-repeater/Makefile b/net/mdns-repeater/Makefile new file mode 100644 index 000000000..2037b675a --- /dev/null +++ b/net/mdns-repeater/Makefile @@ -0,0 +1,8 @@ +PLUGIN_NAME= mdns-repeater +PLUGIN_VERSION= 1.0 +PLUGIN_COMMENT= Proxy multicast DNS between networks +PLUGIN_MAINTAINER= franz.fabian.94@gmail.com +PLUGIN_DEPENDS= mdns-repeater +PLUGIN_DEVEL= yes + +.include "../../Mk/plugins.mk" diff --git a/net/mdns-repeater/pkg-descr b/net/mdns-repeater/pkg-descr new file mode 100644 index 000000000..e69de29bb diff --git a/net/mdns-repeater/src/etc/inc/plugins.inc.d/mdnsrepeater.inc b/net/mdns-repeater/src/etc/inc/plugins.inc.d/mdnsrepeater.inc new file mode 100644 index 000000000..0474e3105 --- /dev/null +++ b/net/mdns-repeater/src/etc/inc/plugins.inc.d/mdnsrepeater.inc @@ -0,0 +1,68 @@ +enabled == '1') { + return true; + } + + return false; +} + +function mdnsrepeater_firewall($fw) +{ + if (!mdnsrepeater_enabled()) { + return; + } +} + +function mdnsrepeater_services() +{ + $services = array(); + + // don't load the service if it is not enabled + // maybe there are no settings yet + if (!mdnsrepeater_enabled()) { + return $services; + } + + $services[] = array( + 'description' => gettext('MDNS Repeater'), + 'configd' => array( + 'restart' => array('mdnsrepeater restart'), + 'start' => array('mdnsrepeater start'), + 'stop' => array('mdnsrepeater stop'), + ), + 'name' => 'mdns-repeater', + ); + + return $services; +} diff --git a/net/mdns-repeater/src/opnsense/mvc/app/controllers/OPNsense/MDNSRepeater/Api/ServiceController.php b/net/mdns-repeater/src/opnsense/mvc/app/controllers/OPNsense/MDNSRepeater/Api/ServiceController.php new file mode 100644 index 000000000..d5a0e9b1b --- /dev/null +++ b/net/mdns-repeater/src/opnsense/mvc/app/controllers/OPNsense/MDNSRepeater/Api/ServiceController.php @@ -0,0 +1,69 @@ + 'failed'); + $mdlMDNSRepeater = new MDNSRepeater(); + $result['result'] = $backend->configdRun('mdnsrepeater status'); + return $result; + } + + public function startAction() + { + $backend = new Backend(); + $result = array('result' => 'failed'); + $backend->configdRun('template reload OPNsense/MDNSRepeater'); + $result['result'] = $backend->configdRun('mdnsrepeater start'); + return $result; + } + + public function stopAction() + { + $backend = new Backend(); + $result = array("result" => "failed"); + $mdlMDNSRepeater = new MDNSRepeater(); + $result['result'] = $backend->configdRun('mdnsrepeater stop'); + return $result; + } + + public function restartAction() + { + $this->stopAction(); + return $this->startAction(); + } +} diff --git a/net/mdns-repeater/src/opnsense/mvc/app/controllers/OPNsense/MDNSRepeater/Api/SettingsController.php b/net/mdns-repeater/src/opnsense/mvc/app/controllers/OPNsense/MDNSRepeater/Api/SettingsController.php new file mode 100644 index 000000000..945bafa57 --- /dev/null +++ b/net/mdns-repeater/src/opnsense/mvc/app/controllers/OPNsense/MDNSRepeater/Api/SettingsController.php @@ -0,0 +1,39 @@ +view->title = gettext('MDNS Repeater'); + $this->view->general = $this->getForm("general"); + $this->view->pick('OPNsense/MDNSRepeater/index'); + } +} diff --git a/net/mdns-repeater/src/opnsense/mvc/app/controllers/OPNsense/MDNSRepeater/forms/general.xml b/net/mdns-repeater/src/opnsense/mvc/app/controllers/OPNsense/MDNSRepeater/forms/general.xml new file mode 100644 index 000000000..41746493b --- /dev/null +++ b/net/mdns-repeater/src/opnsense/mvc/app/controllers/OPNsense/MDNSRepeater/forms/general.xml @@ -0,0 +1,14 @@ +
+ + mdnsrepeater.enabled + + checkbox + Enable the repeater. + + + mdnsrepeater.interfaces + + select_multiple + Y + +
diff --git a/net/mdns-repeater/src/opnsense/mvc/app/models/OPNsense/MDNSRepeater/ACL/ACL.xml b/net/mdns-repeater/src/opnsense/mvc/app/models/OPNsense/MDNSRepeater/ACL/ACL.xml new file mode 100644 index 000000000..d7bef3537 --- /dev/null +++ b/net/mdns-repeater/src/opnsense/mvc/app/models/OPNsense/MDNSRepeater/ACL/ACL.xml @@ -0,0 +1,9 @@ + + + Services: MDNS Repeatery + + ui/mdnsrepeater/* + api/mdnsrepeater/* + + + diff --git a/net/mdns-repeater/src/opnsense/mvc/app/models/OPNsense/MDNSRepeater/MDNSRepeater.php b/net/mdns-repeater/src/opnsense/mvc/app/models/OPNsense/MDNSRepeater/MDNSRepeater.php new file mode 100644 index 000000000..100ea4509 --- /dev/null +++ b/net/mdns-repeater/src/opnsense/mvc/app/models/OPNsense/MDNSRepeater/MDNSRepeater.php @@ -0,0 +1,37 @@ + + //OPNsense/MDNSRepeater + 1.0.0 + mdns-repeater settings + + + 0 + Y + + + Y + Y + + + diff --git a/net/mdns-repeater/src/opnsense/mvc/app/models/OPNsense/MDNSRepeater/Menu/Menu.xml b/net/mdns-repeater/src/opnsense/mvc/app/models/OPNsense/MDNSRepeater/Menu/Menu.xml new file mode 100644 index 000000000..baf2a980f --- /dev/null +++ b/net/mdns-repeater/src/opnsense/mvc/app/models/OPNsense/MDNSRepeater/Menu/Menu.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/net/mdns-repeater/src/opnsense/mvc/app/views/OPNsense/MDNSRepeater/index.volt b/net/mdns-repeater/src/opnsense/mvc/app/views/OPNsense/MDNSRepeater/index.volt new file mode 100644 index 000000000..aa426acdd --- /dev/null +++ b/net/mdns-repeater/src/opnsense/mvc/app/views/OPNsense/MDNSRepeater/index.volt @@ -0,0 +1,61 @@ +{# + +Copyright © 2017 Fabian Franz +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': general,'id':'general'])}} +
+
+ +
+
diff --git a/net/mdns-repeater/src/opnsense/service/conf/actions.d/actions_mdnsrepeater.conf b/net/mdns-repeater/src/opnsense/service/conf/actions.d/actions_mdnsrepeater.conf new file mode 100644 index 000000000..b34033f7a --- /dev/null +++ b/net/mdns-repeater/src/opnsense/service/conf/actions.d/actions_mdnsrepeater.conf @@ -0,0 +1,28 @@ +[start] +command:service mdns-repeater start +parameters:%s +type:script +message:starting mdns-repeater + +[stop] +command:service mdns-repeater stop +parameters:%s +type:script +message:stopping mdns-repeater + +[status] +command:service mdns-repeater status +parameters:%s +type:script +message:mdns-repeater status + +[restart] +command:service mdns-repeater restart +parameters:%s +type:script +message:restarting mdns-repeater + +[reload] +command:service mdns-repeater reload +type:script +message:reload mdns-repeater diff --git a/net/mdns-repeater/src/opnsense/service/templates/OPNsense/MDNSRepeater/+TARGETS b/net/mdns-repeater/src/opnsense/service/templates/OPNsense/MDNSRepeater/+TARGETS new file mode 100644 index 000000000..a7ff006d4 --- /dev/null +++ b/net/mdns-repeater/src/opnsense/service/templates/OPNsense/MDNSRepeater/+TARGETS @@ -0,0 +1 @@ +mdnsrepeater:/etc/rc.conf.d/mdns_repeater diff --git a/net/mdns-repeater/src/opnsense/service/templates/OPNsense/MDNSRepeater/mdnsrepeater b/net/mdns-repeater/src/opnsense/service/templates/OPNsense/MDNSRepeater/mdnsrepeater new file mode 100644 index 000000000..feb71084a --- /dev/null +++ b/net/mdns-repeater/src/opnsense/service/templates/OPNsense/MDNSRepeater/mdnsrepeater @@ -0,0 +1,12 @@ +{% if helpers.exists('OPNsense.MDNSRepeater.enabled') and OPNsense.MDNSRepeater.enabled == '1' %} +{% from 'OPNsense/Macros/interface.macro' import physical_interface %} +mdns_repeater_enable="YES" +{% set osifnames = OPNsense.MDNSRepeater.interfaces.split(',') %} +{% set interface_list=[] %} +{% for i in osifnames %} +{% do interface_list.append(physical_interface(i)) %} +{% endfor %} +mdns_repeater_interfaces="{{ interface_list | join(' ') }}" +{% else %} +mdns_repeater_enable="NO" +{% endif %}