smeserver-manager/root/usr/share/smanager/lib/SrvMngr/Controller/Clamav.pm

91 lines
3.4 KiB
Perl

package SrvMngr::Controller::Clamav;
#----------------------------------------------------------------------
# heading : System
# description : Antivirus (ClamAV)
# navigation : 4000 600
#
# routes : end
#------------------------------
use strict;
use warnings;
use Mojo::Base 'Mojolicious::Controller';
use Locale::gettext;
use SrvMngr::I18N;
use SrvMngr qw(theme_list init_session);
#package esmith::FormMagick::Panel::clamav;
our $db = esmith::ConfigDB->open() || die "Couldn't open config db";
sub main {
my $c = shift;
$c->app->log->info($c->log_req);
my %clm_datas = ();
my $title = $c->l('clm_FORM_TITLE');
my $modul = $c->render_to_string(inline => $c->l('clm_DESC_FILESYSTEM_SCAN_PERIOD'));
$clm_datas{'FilesystemScan'} = ($db->get_prop('clamav', 'FilesystemScan')) || 'disabled';
$clm_datas{'Quarantine'} = ($db->get_prop('clamav', 'Quarantine')) || 'disabled';
$clm_datas{'clam_versions'} = get_clam_versions();
$c->stash(title => $title, modul => $modul, clm_datas => \%clm_datas);
$c->render(template => 'clamav');
} ## end sub main
sub do_update {
my $c = shift;
$c->app->log->info($c->log_req);
my $http_clamav_status = $c->param('http_clamav_status') || 'disabled';
my $smtp_clamav_status = $c->param('smtp_clamav_status') || '';
my $result = "";
$c->change_settings();
# Update the system
system("/sbin/e-smith/signal-event clamav-update") == 0
or $result = $c->l('clm_ERROR_UPDATING_CONFIGURATION');
if (!$result) {
$result = $c->l('clm_SUCCESS');
$c->flash(success => $result);
} else {
$c->flash(error => $result);
}
$c->redirect_to('/clamav');
} ## end sub do_update
sub change_settings {
my $c = shift;
my $status = $c->param('status');
my $FilesystemScan = ($c->param('FilesystemScan') || 'disabled');
my $Quarantine = ($c->param('Quarantine') || 'disabled');
my $DatabaseMirror = ($c->param('DatabaseMirror') || 'db.us.clamav.net');
my $UpdateOfficeHrs = ($c->param('UpdateOfficeHrs') || 'disabled');
my $UpdateNonOfficeHrs = ($c->param('UpdateNonOfficeHrs') || 'disabled');
my $UpdateWeekend = ($c->param('UpdateWeekend') || 'disabled');
my $HTTPProxyServer = ($c->param('HTTPProxyServer') || '');
my $HTTPProxyPort = ($c->param('HTTPProxyPort') || '');
my $HTTPProxyUsername = ($c->param('HTTPProxyUsername') || '');
my $HTTPProxyPassword = ($c->param('HTTPProxyPassword') || '');
my $clamav = $db->get('clamav') || $db->new_record('clamav', { type => 'service' });
$status ||= $clamav->prop('status');
$clamav->merge_props(
status => $status,
FilesystemScan => $FilesystemScan,
Quarantine => $Quarantine,
DatabaseMirror => $DatabaseMirror,
UpdateOfficeHrs => $UpdateOfficeHrs,
UpdateNonOfficeHrs => $UpdateNonOfficeHrs,
UpdateWeekend => $UpdateWeekend,
HTTPProxyServer => $HTTPProxyServer,
HTTPProxyPort => $HTTPProxyPort,
HTTPProxyUsername => $HTTPProxyUsername,
HTTPProxyPassword => $HTTPProxyPassword,
);
} ## end sub change_settings
sub get_clam_versions {
my $version = `/usr/bin/freshclam -V`;
chomp $version;
$version =~ s/^ClamAV //;
return $version;
} ## end sub get_clam_versions
1;