initial commit of file from CVS for smeserver-manager on Fri Mar 22 14:54:28 AEDT 2024
This commit is contained in:
113
root/usr/share/smanager/lib/SrvMngr/Controller/Clamav.pm
Normal file
113
root/usr/share/smanager/lib/SrvMngr/Controller/Clamav.pm
Normal file
@@ -0,0 +1,113 @@
|
||||
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;
|
Reference in New Issue
Block a user