ONO::Cron::CronSync::FileServer

package ONO::Cron::CronSync::FileServer;
################################################################################
# COPYRIGHT / LICENSE #
################################################################################
#
# This file is part of the ONO Software Project.
#
# Copyright (C) 2000-2025 Jos KIRPS [ www.kirps.com | jos_AT_kirps_DOT_com ]
# and The Joopita Project [ www.joopita.org | contact_AT_joopita_DOT_com ]
#
# This file, as well as other parts of the ONO Software Project or related
# elements, are FREE SOFTWARE available under the ARTISTIC LICENSE 2.0.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
#
# For the full license, see /ono/osr/license/LICENSE.txt, or write to
# jos_AT_kirps_DOT_com or contact_AT_joopita_DOT_com.
#
################################################################################
# END OF COPYRIGHT / LICENSE, HERE COMES THE CODE ... #
################################################################################

use strict;

use ONO::Cron::CronSync::ToolBox;
use ONO::IO;

###############################################################################
# ONO
###############################################################################

#: Fileserver related services for ONO's CronSync service.

sub run {

my (
$self,
$CRON_DIR,
$job,
$data_ref,
$TYPE_ref,
$vars_ref,
$vpath,
$sec,$min,$hour,
$mday,$mon,$year,
$wday,$yday,
$timestamp,
$switches,
) = @_;

#: Execution logic.

my %data = %$data_ref;
my %TYPE = %$TYPE_ref;
my %vars = %$vars_ref;

my ($DATA,$MAIL);

if ($data{'type'} eq "svr_info_import") {
}
if ($data{'type'} eq "svr_info_export") {
}
if ($data{'type'} eq "svr_control") {
}
if ($data{'type'} eq "svr_update_users") {
}
if ($data{'type'} eq "svr_update_dirs") {
}
if ($data{'type'} eq "svr_update_stats") {
}
if ($data{'type'} eq "svr_update_access") {
}
if ($data{'type'} eq "svr_backup_make" && $data{'svr_backup_source'} && $data{'svr_backup_target'}) {

my $TIMESTAMP = ONO::Cron::CronSync::ToolBox->timestamp;

if (ONO::IO->exists("servers/$data{'svr_backup_source'}") && ONO::IO->exists("servers/_backup_disks/$data{'svr_backup_target'}")) {

$DATA .= ONO::Cron::CronSync::ToolBox->print("Job '$data{'title'}': preparing backup from '$data{'svr_backup_source'}' to '$data{'svr_backup_target'}'",$switches);

my $flags;
if ($data{'svr_backup_flag_n'}) {
$flags .= "n";
}
if ($data{'svr_backup_flag_p'}) {
$flags .= "p";
}
if (!$data{'svr_backup_flag_b'}) {
$DATA .= ONO::Cron::CronSync::ToolBox->print("Job '$data{'title'}': ABORT: backup execution is not enabled [$TIMESTAMP]",$switches);
}

foreach my $obj (ONO::IO->dir("servers/$data{'svr_backup_source'}")) {

if ($data{'svr_backup_flag_b'} && $obj !~ /^\./ && $obj =~ /[A-Za-z0-9]/) {

my $TIMESTAMP = ONO::Cron::CronSync::ToolBox->timestamp;

$DATA .= ONO::Cron::CronSync::ToolBox->print("Job '$data{'title'}': BACKUP: $obj [$TIMESTAMP]",$switches);

ONO::IO->cpr("servers/$data{'svr_backup_source'}/$obj","servers/_backup_disks/$data{'svr_backup_target'}",$flags);

}

}

if ($data{'svr_backup_flag_x'}) {

$DATA .= ONO::Cron::CronSync::ToolBox->print("Job '$data{'title'}': CHMOD: updating permissions [$TIMESTAMP]",$switches);

}

my $TIMESTAMP = ONO::Cron::CronSync::ToolBox->timestamp;

$DATA .= ONO::Cron::CronSync::ToolBox->print("Job '$data{'title'}': SUCCESS: backup has been completed [$TIMESTAMP]",$switches);

} else {

$DATA .= ONO::Cron::CronSync::ToolBox->print("Job '$data{'title'}': ERROR: source or target directory does not exist",$switches);

}

}
if ($data{'type'} eq "svr_backup_access") {
}

return ($DATA,$MAIL);

}

###############################################################################
# end of script
###############################################################################

1;

__END__