mirror of
https://github.com/opnsense/plugins.git
synced 2026-06-09 08:56:23 -04:00
add helloworld sample application to plugins
This commit is contained in:
parent
578c761d7b
commit
a5e22cf4a1
19 changed files with 493 additions and 0 deletions
0
devel/helloworld/+POST_DEINSTALL
Normal file
0
devel/helloworld/+POST_DEINSTALL
Normal file
4
devel/helloworld/+POST_INSTALL
Normal file
4
devel/helloworld/+POST_INSTALL
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
echo "restarting configd..."
|
||||
if /usr/local/etc/rc.d/configd status > /dev/null; then
|
||||
/usr/local/etc/rc.d/configd restart
|
||||
fi
|
||||
0
devel/helloworld/+PRE_DEINSTALL
Normal file
0
devel/helloworld/+PRE_DEINSTALL
Normal file
0
devel/helloworld/+PRE_INSTALL
Normal file
0
devel/helloworld/+PRE_INSTALL
Normal file
7
devel/helloworld/Makefile
Normal file
7
devel/helloworld/Makefile
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
PLUGIN_NAME= helloworld
|
||||
PLUGIN_VERSION= 1.0
|
||||
PLUGIN_COMMENT= A sample framework application
|
||||
#PLUGIN_DEPENDS=
|
||||
PLUGIN_MAINTAINER= adopnsense.org
|
||||
|
||||
.include "../../Mk/plugins.mk"
|
||||
|
|
@ -0,0 +1,71 @@
|
|||
<?php
|
||||
/**
|
||||
* Copyright (C) 2015 Deciso B.V.
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
*/
|
||||
namespace OPNsense\HelloWorld\Api;
|
||||
|
||||
use \OPNsense\Base\ApiControllerBase;
|
||||
use \OPNsense\Core\Backend;
|
||||
|
||||
/**
|
||||
* Class ServiceController
|
||||
* @package OPNsense\Cron
|
||||
*/
|
||||
class ServiceController extends ApiControllerBase
|
||||
{
|
||||
/**
|
||||
* reconfigure HelloWorld
|
||||
*/
|
||||
public function reloadAction()
|
||||
{
|
||||
$status = "failed";
|
||||
if ($this->request->isPost()) {
|
||||
$backend = new Backend();
|
||||
$bckresult = trim($backend->configdRun("template reload OPNsense.HelloWorld"));
|
||||
if ($bckresult == "OK") {
|
||||
$status = "ok";
|
||||
}
|
||||
}
|
||||
return array("status" => $status);
|
||||
}
|
||||
|
||||
/**
|
||||
* test HelloWorld
|
||||
*/
|
||||
public function testAction()
|
||||
{
|
||||
if ($this->request->isPost()) {
|
||||
$backend = new Backend();
|
||||
$bckresult = json_decode(trim($backend->configdRun("helloworld test")), true);
|
||||
if ($bckresult !== null) {
|
||||
// only return valid json type responses
|
||||
return $bckresult;
|
||||
}
|
||||
}
|
||||
return array("message" => "unable to run config action");
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,86 @@
|
|||
<?php
|
||||
/**
|
||||
* Copyright (C) 2015 Deciso B.V.
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
*/
|
||||
namespace OPNsense\HelloWorld\Api;
|
||||
|
||||
use \OPNsense\Base\ApiControllerBase;
|
||||
use \OPNsense\HelloWorld\HelloWorld;
|
||||
use \OPNsense\Core\Config;
|
||||
|
||||
/**
|
||||
* Class SettingsController Handles settings related API actions for the HelloWorld module
|
||||
* @package OPNsense\Cron
|
||||
*/
|
||||
class SettingsController extends ApiControllerBase
|
||||
{
|
||||
/**
|
||||
* retrieve HelloWorld general settings
|
||||
* @return array general settings
|
||||
*/
|
||||
public function getAction()
|
||||
{
|
||||
// define list of configurable settings
|
||||
$result = array();
|
||||
if ($this->request->isGet()) {
|
||||
$mdlHelloWorld = new HelloWorld();
|
||||
$result['helloworld'] = $mdlHelloWorld->getNodes();
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* update HelloWorld settings
|
||||
* @return array status
|
||||
*/
|
||||
public function setAction()
|
||||
{
|
||||
$result = array("result"=>"failed");
|
||||
if ($this->request->isPost()) {
|
||||
// load model and update with provided data
|
||||
$mdlHelloWorld = new HelloWorld();
|
||||
$mdlHelloWorld->setNodes($this->request->getPost("helloworld"));
|
||||
|
||||
// perform validation
|
||||
$valMsgs = $mdlHelloWorld->performValidation();
|
||||
foreach ($valMsgs as $field => $msg) {
|
||||
if (!array_key_exists("validations", $result)) {
|
||||
$result["validations"] = array();
|
||||
}
|
||||
$result["validations"]["helloworld.".$msg->getField()] = $msg->getMessage();
|
||||
}
|
||||
|
||||
// serialize model to config and save
|
||||
if ($valMsgs->count() == 0) {
|
||||
$mdlHelloWorld->serializeToConfig();
|
||||
Config::getInstance()->save();
|
||||
$result["result"] = "saved";
|
||||
}
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,46 @@
|
|||
<?php
|
||||
/**
|
||||
* Copyright (C) 2015 Deciso B.V.
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
*/
|
||||
namespace OPNsense\HelloWorld;
|
||||
|
||||
/**
|
||||
* Class IndexController
|
||||
* @package OPNsense\HelloWorld
|
||||
*/
|
||||
class IndexController extends \OPNsense\Base\IndexController
|
||||
{
|
||||
public function indexAction()
|
||||
{
|
||||
// set page title, used by the standard template in layouts/default.volt.
|
||||
$this->view->title = "Hello World";
|
||||
// pick the template to serve to our users.
|
||||
$this->view->pick('OPNsense/HelloWorld/index');
|
||||
// fetch form data "general" in
|
||||
$this->view->generalForm = $this->getForm("general");
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
<form>
|
||||
<field>
|
||||
<id>helloworld.general.Enabled</id>
|
||||
<label>enabled</label>
|
||||
<type>checkbox</type>
|
||||
<help>Enable this feature</help>
|
||||
</field>
|
||||
<field>
|
||||
<id>helloworld.general.SMTPHost</id>
|
||||
<label>SMTPHost</label>
|
||||
<type>text</type>
|
||||
<help><![CDATA[ip address of the mail host]]></help>
|
||||
<hint>choose a valid IPv4/v6 address</hint>
|
||||
</field>
|
||||
<field>
|
||||
<id>helloworld.general.FromEmail</id>
|
||||
<label>Email (from)</label>
|
||||
<type>text</type>
|
||||
</field>
|
||||
<field>
|
||||
<id>helloworld.general.ToEmail</id>
|
||||
<label>Email (to)</label>
|
||||
<type>text</type>
|
||||
</field>
|
||||
<field>
|
||||
<id>helloworld.general.Description</id>
|
||||
<label>Description</label>
|
||||
<type>text</type>
|
||||
</field>
|
||||
</form>
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
<acl>
|
||||
<!-- unique acl key, must be globally unique for all acl's -->
|
||||
<page-user-helloworld>
|
||||
<name>WebCfg - Users: Hello World! </name>
|
||||
<description>Allow access to the Hello World! module</description>
|
||||
<patterns>
|
||||
<pattern>ui/helloworld/*</pattern>
|
||||
<pattern>api/helloworld/*</pattern>
|
||||
</patterns>
|
||||
</page-user-helloworld>
|
||||
</acl>
|
||||
|
|
@ -0,0 +1,35 @@
|
|||
<?php
|
||||
/**
|
||||
* Copyright (C) 2015 Deciso B.V.
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
*/
|
||||
namespace OPNsense\HelloWorld;
|
||||
|
||||
use OPNsense\Base\BaseModel;
|
||||
|
||||
class HelloWorld extends BaseModel
|
||||
{
|
||||
}
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
<model>
|
||||
<mount>//OPNsense/helloworld</mount>
|
||||
<description>
|
||||
the OPNsense "Hello World" application
|
||||
</description>
|
||||
<items>
|
||||
<!-- container -->
|
||||
<general>
|
||||
<!-- fields -->
|
||||
<Enabled type="BooleanField">
|
||||
<default>1</default>
|
||||
<Required>Y</Required>
|
||||
</Enabled>
|
||||
<SMTPHost type="NetworkField">
|
||||
<Required>Y</Required>
|
||||
</SMTPHost>
|
||||
<FromEmail type="EmailField">
|
||||
<default>sample@example.com</default>
|
||||
<Required>Y</Required>
|
||||
</FromEmail>
|
||||
<ToEmail type="EmailField">
|
||||
<Required>Y</Required>
|
||||
<ValidationMessage>please specify a valid email address</ValidationMessage>
|
||||
</ToEmail>
|
||||
<Description type="TextField">
|
||||
<Required>Y</Required>
|
||||
</Description>
|
||||
</general>
|
||||
</items>
|
||||
</model>
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
<menu>
|
||||
<!-- Plugin HelloWorld menu -->
|
||||
<User order="999">
|
||||
<HelloWorld VisibleName="Hello World!" url="/ui/helloworld/"/>
|
||||
</User>
|
||||
</menu>
|
||||
|
|
@ -0,0 +1,68 @@
|
|||
{#
|
||||
|
||||
OPNsense® is Copyright © 2014 – 2015 by Deciso B.V.
|
||||
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.
|
||||
|
||||
#}
|
||||
|
||||
<script type="text/javascript">
|
||||
$( document ).ready(function() {
|
||||
var data_get_map = {'frm_GeneralSettings':"/api/helloworld/settings/get"};
|
||||
mapDataToFormUI(data_get_map).done(function(data){
|
||||
// place actions to run after load, for example update form styles.
|
||||
});
|
||||
|
||||
// link save button to API set action
|
||||
$("#saveAct").click(function(){
|
||||
saveFormToEndpoint(url="/api/helloworld/settings/set",formid='frm_GeneralSettings',callback_ok=function(){
|
||||
// action to run after successful save, for example reconfigure service.
|
||||
ajaxCall(url="/api/helloworld/service/reload", sendData={},callback=function(data,status) {
|
||||
// action to run after reload
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
$("#testAct").click(function(){
|
||||
$("#responseMsg").removeClass("hidden");
|
||||
ajaxCall(url="/api/helloworld/service/test", sendData={},callback=function(data,status) {
|
||||
// action to run after reload
|
||||
$("#responseMsg").html(data['message']);
|
||||
});
|
||||
});
|
||||
|
||||
});
|
||||
</script>
|
||||
|
||||
<div class="alert alert-info hidden" role="alert" id="responseMsg">
|
||||
|
||||
</div>
|
||||
|
||||
<div class="col-md-12">
|
||||
{{ partial("layout_partials/base_form",['fields':generalForm,'id':'frm_GeneralSettings'])}}
|
||||
</div>
|
||||
|
||||
<div class="col-md-12">
|
||||
<button class="btn btn-primary" id="saveAct" type="button"><b>{{ lang._('Save') }}</b></button>
|
||||
<button class="btn btn-primary" id="testAct" type="button"><b>{{ lang._('Test') }}</b></button>
|
||||
</div>
|
||||
76
devel/helloworld/src/opnsense/scripts/OPNsense/HelloWorld/testConnection.py
Executable file
76
devel/helloworld/src/opnsense/scripts/OPNsense/HelloWorld/testConnection.py
Executable file
|
|
@ -0,0 +1,76 @@
|
|||
#!/usr/local/bin/python2.7
|
||||
|
||||
"""
|
||||
Copyright (c) 2015 Ad Schellevis
|
||||
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.
|
||||
|
||||
--------------------------------------------------------------------------------------
|
||||
|
||||
perform some tests for the helloworld application
|
||||
"""
|
||||
import os
|
||||
import socket
|
||||
import smtplib
|
||||
import json
|
||||
from ConfigParser import ConfigParser
|
||||
|
||||
# set default timeout to 2 seconds
|
||||
socket.setdefaulttimeout(2)
|
||||
|
||||
hello_world_config = '/usr/local/etc/helloworld/helloworld.conf'
|
||||
|
||||
result = {}
|
||||
if os.path.exists(hello_world_config):
|
||||
cnf = ConfigParser()
|
||||
cnf.read(hello_world_config)
|
||||
if cnf.has_section('general'):
|
||||
try:
|
||||
smtpObj = smtplib.SMTP(cnf.get('general', 'SMTPHost'))
|
||||
msg_header = "From: " + cnf.get('general', 'FromEmail') + "\n" + \
|
||||
"To: " + cnf.get('general', 'ToEmail') + "\n" + \
|
||||
"Subject: " + cnf.get('general', 'Subject') + "\n" + \
|
||||
"Test message!"
|
||||
|
||||
smtpObj.sendmail(cnf.get('general', 'FromEmail'), [cnf.get('general', 'ToEmail')], msg_header)
|
||||
smtpObj.quit()
|
||||
result['message'] = 'test ok!'
|
||||
except smtplib.SMTPException as error:
|
||||
# unable to send mail
|
||||
result['message'] = '%s'%error
|
||||
except socket.error as error:
|
||||
# connect error
|
||||
if error.strerror is None:
|
||||
# probably hit timeout
|
||||
result['message'] = 'time out!'
|
||||
else:
|
||||
result['message'] = error.strerror
|
||||
else:
|
||||
# empty config
|
||||
result['message'] = 'empty configuration'
|
||||
else:
|
||||
# no config
|
||||
result['message'] = 'no configuration file found'
|
||||
|
||||
|
||||
print (json.dumps(result))
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
[test]
|
||||
command:/usr/local/opnsense/scripts/OPNsense/HelloWorld/testConnection.py
|
||||
parameters:
|
||||
type:script_output
|
||||
message:hello world module test
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
name: opnsense-helloworld
|
||||
version: 1.0
|
||||
origin: opnsense/hello-world
|
||||
comment: framework sample application
|
||||
desc: configuration templates for helloworld
|
||||
maintainer: ad at opnsense.org
|
||||
www: https://opnsense.org
|
||||
prefix: /
|
||||
|
|
@ -0,0 +1 @@
|
|||
helloworld.conf:/usr/local/etc/helloworld/helloworld.conf
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
{% if true or helpers.exists('OPNsense.helloworld.general') and OPNsense.helloworld.general.Enabled|default("0") == "1" %}
|
||||
[general]
|
||||
SMTPHost={{ OPNsense.helloworld.general.SMTPHost|default("") }}
|
||||
FromEmail={{ OPNsense.helloworld.general.FromEmail|default("") }}
|
||||
ToEmail={{ OPNsense.helloworld.general.ToEmail|default("") }}
|
||||
Subject={{ OPNsense.helloworld.general.Description|default("") }}
|
||||
{% endif %}
|
||||
|
||||
|
||||
Loading…
Reference in a new issue