package ONO::Cron::CronSync::Apache;
################################################################################
# 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::Core::HostOS;
use ONO::Cron::CronSync::ToolBox;
use ONO::IO;
###############################################################################
# ONO
###############################################################################
#: Webserver 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,
$apache_trigger_mode,
) = @_;
#: Execution logic.
my %data = %$data_ref;
my %TYPE = %$TYPE_ref;
my %vars = %$vars_ref;
my ($DATA,$MAIL);
if ($data{'type'} eq "apache_control") {
$DATA .= ONO::Cron::CronSync::ToolBox->print("Job '$data{'title'}': $TYPE{$data{'type'}} ($data{'type'},$data{'apache_control'})",$switches);
my ($trigger_cpu,$trigger_mem) = (0,0);
if ($data{'apache_control_load_cpu'} < 1 || ONO::Core::HostOS->cpu_load_percent("c") > $data{'apache_control_load_cpu'}) {
$trigger_cpu++;
}
if ($data{'apache_control_load_mem'} < 1 || ONO::Core::HostOS->mem_load_percent() > $data{'apache_control_load_mem'}) {
$trigger_mem++;
}
if ($data{'apache_control'} =~ /^(start|stop|restart)$/ && ($trigger_cpu || $trigger_mem)) {
$DATA .= ONO::IO->exec("/usr/sbin/apachectl $data{'apache_control'}");
$DATA .= ONO::Cron::CronSync::ToolBox->print("Job '$data{'title'}': SUCCESS: $data{'apache_control'}",$switches);
if ($apache_trigger_mode) {
ONO::IO->store("$CRON_DIR/lastrun/restart-apache-$job.txt",$timestamp);
}
} else {
$DATA .= ONO::Cron::CronSync::ToolBox->print("Not executed [cpu pass: $trigger_cpu, mem pass: $trigger_mem]: $data{'apache_control'})",$switches);
}
}
return ($DATA,$MAIL);
}
###############################################################################
# end of script
###############################################################################
1;
__END__