security/clamav: patch in mutable service controller, style fixes

This commit is contained in:
Franco Fichtner
2018-01-02 06:45:06 +00:00
parent 9109a72fce
commit e9026266a4
3 changed files with 34 additions and 145 deletions
@@ -32,7 +32,8 @@ function clamav_services()
$services = array();
if (isset($config['OPNsense']['clamav']['general']['enabled']) && $config['OPNsense']['clamav']['general']['enabled'] == 1) {
if (isset($config['OPNsense']['clamav']['general']['enabled']) &&
$config['OPNsense']['clamav']['general']['enabled'] == 1) {
$services[] = array(
'description' => gettext('ClamAV Daemon'),
'configd' => array(
@@ -45,7 +46,8 @@ function clamav_services()
);
}
if (isset($config['OPNsense']['clamav']['general']['fc_enabled']) && $config['OPNsense']['clamav']['general']['fc_enabled'] == 1) {
if (isset($config['OPNsense']['clamav']['general']['fc_enabled']) &&
$config['OPNsense']['clamav']['general']['fc_enabled'] == 1) {
$services[] = array(
'description' => gettext('freshclam daemon'),
'configd' => array(
@@ -1,46 +1,47 @@
<?php
/**
* Copyright (C) 2015 - 2017 Deciso B.V.
* Copyright (C) 2017 Michael Muenz
/*
* Copyright (C) 2017 Michael Muenz
* All rights reserved.
*
* All rights reserved.
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 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.
*
* 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.
* 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\ClamAV\Api;
use \OPNsense\Base\ApiControllerBase;
use \OPNsense\Core\Backend;
use \OPNsense\ClamAV\General;
use OPNsense\Base\ApiMutableServiceControllerBase;
use OPNsense\Core\Backend;
/**
* Class ServiceController
* @package OPNsense\ClamAV
*/
class ServiceController extends ApiControllerBase
class ServiceController extends ApiMutableServiceControllerBase
{
static protected $internalServiceClass = '\OPNsense\ClamAV\General';
static protected $internalServiceTemplate = 'OPNsense/ClamAV';
static protected $internalServiceEnabled = 'enabled';
static protected $internalServiceName = 'clamav';
/**
* load the initial signatures
* @return array
@@ -59,118 +60,6 @@ class ServiceController extends ApiControllerBase
return array('status' => 'error');
}
}
/**
* start clamav service (in background)
* @return array
*/
public function startAction()
{
if ($this->request->isPost()) {
// close session for long running action
$this->sessionClose();
$backend = new Backend();
$response = $backend->configdRun("clamav start");
return array("response" => $response);
} else {
return array("response" => array());
}
}
/**
* stop clamav service
* @return array
*/
public function stopAction()
{
if ($this->request->isPost()) {
// close session for long running action
$this->sessionClose();
$backend = new Backend();
$response = $backend->configdRun("clamav stop");
return array("response" => $response);
} else {
return array("response" => array());
}
}
/**
* restart clamav service
* @return array
*/
public function restartAction()
{
if ($this->request->isPost()) {
// close session for long running action
$this->sessionClose();
$backend = new Backend();
$response = $backend->configdRun("clamav restart");
return array("response" => $response);
} else {
return array("response" => array());
}
}
/**
* retrieve status of clamav
* @return array
* @throws \Exception
*/
public function statusAction()
{
$backend = new Backend();
$mdlGeneral = new General();
$response = $backend->configdRun("clamav status");
if (strpos($response, "not running") > 0) {
if ($mdlGeneral->enabled->__toString() == 1) {
$status = "stopped";
} else {
$status = "disabled";
}
} elseif (strpos($response, "is running") > 0) {
$status = "running";
} elseif ($mdlGeneral->enabled->__toString() == 0) {
$status = "disabled";
} else {
$status = "unkown";
}
return array("status" => $status);
}
/**
* reconfigure clamav, generate config and reload
*/
public function reconfigureAction()
{
if ($this->request->isPost()) {
// close session for long running action
$this->sessionClose();
$mdlGeneral = new General();
$backend = new Backend();
$runStatus = $this->statusAction();
// stop clamav if it is running or not
$this->stopAction();
// generate template
$backend->configdRun('template reload OPNsense/ClamAV');
// (res)start daemon
if ($mdlGeneral->enabled->__toString() == 1) {
$this->startAction();
}
return array("status" => "ok");
} else {
return array("status" => "failed");
}
}
/**
* get ClamAV and signature versions
@@ -194,11 +83,9 @@ class ServiceController extends ApiControllerBase
$result[$info_key] = $value;
}
}
}
return array("version" => $result);
}
else {
} else {
return array();
}
}
@@ -48,7 +48,7 @@ POSSIBILITY OF SUCH DAMAGE.
</div>
</div>
<div id="versions" class="tab-pane fade in">
<div class="content-box" style="padding-bottom: 1.5em;">
<div class="content-box">
{{ partial("layout_partials/base_form",['fields':versionForm,'id':'frm_version'])}}
</div>
</div>