114 lines
3.1 KiB
Perl
114 lines
3.1 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');
|
||
|
};
|
||
|
|
||
|
|
||
|
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');
|
||
|
};
|
||
|
|
||
|
|
||
|
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,
|
||
|
);
|
||
|
|
||
|
|
||
|
}
|
||
|
|
||
|
sub get_clam_versions
|
||
|
{
|
||
|
my $version = `/usr/bin/freshclam -V`;
|
||
|
chomp $version;
|
||
|
$version =~ s/^ClamAV //;
|
||
|
|
||
|
return $version;
|
||
|
}
|
||
|
1;
|