Cronjob refactoring

This commit is contained in:
Matteo Gheza 2020-09-02 16:57:56 +02:00
parent 0c2b20ab91
commit 6c85f637c8
3 changed files with 109 additions and 16 deletions

View File

@ -509,7 +509,11 @@ class translations{
public $filename = "";
public function client_languages() {
$client_languages = $_SERVER['HTTP_ACCEPT_LANGUAGE'];
if(isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])){
$client_languages = $_SERVER['HTTP_ACCEPT_LANGUAGE'];
} else {
$client_languages = "en-US;q=0.5,en;q=0.3";
}
if(strpos($client_languages, ';') == false){
if(strpos($client_languages, '-') !== false){
return [substr($client_languages, 0, 5)];

88
server/cron.php Normal file
View File

@ -0,0 +1,88 @@
<?php
include_once 'core.php';
init_class(false);
header('Content-Type: application/json');
function customErrorHandler(int $errNo, string $errMsg, string $file, int $line) {
$output = [
"errNo" => $errNo,
"error" => $errMsg,
"file" => $file,
"line" => $line
];
$output_status = "error";
}
error_reporting(-1);
set_error_handler('customErrorHandler');
list($cronJobDay, $cronJobTime) = explode(";", $database->getOption("cron_job_time"));
$execDateTime = new stdClass();
$execDateTime->day = date('d');
$execDateTime->month = date('m');
$execDateTime->year = date("Y");
$execDateTime->hour = date('H');
$execDateTime->minutes = date('i');
$cronJobDateTime = new stdClass();
$cronJobDateTime->day = $cronJobDay;
$cronJobDateTime->month = date('m');
$cronJobDateTime->year = date("Y");
$cronJobDateTime->hour = explode(":", $cronJobTime)[0];
$cronJobDateTime->minutes = explode(":", $cronJobTime)[1];
$start = $database->getOption("cron_job_enabled") && isset($_POST['cron']) && $_POST['cron'] == "cron_job-".$database->getOption("cron_job_code");
$start_reset = $execDateTime == $cronJobDateTime;
$action = "Availability Minutes ";
if($start){
if($start_reset){
$action .= "reset and ";
$sql = "SELECT * FROM `%PREFIX%_profiles` WHERE `available` = 1 ";
$profiles = $database->exec($sql, true);
if(count($profiles) > 0){
$list = [];
foreach($profiles as $profile){
$list[] = [$profile["id"] => $profile["minuti_dispo"]];
}
$database->exec("INSERT INTO `%PREFIX%_minuti` (`id`, `mese`, `anno`, `list`) VALUES (NULL, :month, :year, :list)",false,[":month" => $execDateTime->month,":year" => $execDateTime->year,":list"=>json_encode($list)]);
$database->exec("UPDATE %PREFIX%_profiles SET minuti_dispo = 0");
}
}
$action .= "update";
$sql = "SELECT * FROM `%PREFIX%_profiles` WHERE `available` = 1 ";
$profiles = $database->exec($sql, true);
if(count($profiles) > 0){
$output = [];
$output[] = $profiles;
$output_status = "ok";
$queries = [];
foreach ($profiles as $row) {
$value = (int)$row["minuti_dispo"]+5;
$id = $row["id"];
$increment[$id] = $value;
$database->exec("UPDATE %PREFIX%_profiles SET minuti_dispo = :value WHERE id = :id", true, [":value" => $value, ":id" => $id]);
$tmp = $id . " - " . $value . " ";
$tmp .= count($database->stmt->rowCount()) == 1 ? "success" : "fail";
$queries[] = $tmp;
}
$output[] = $queries;
} else {
$output = ["profiles array empty"];
$output_status = "ok";
}
}
echo(json_encode([
"start" => $start,
"start_reset" => $start_reset,
"execDateTime" => $execDateTime,
"cronJobDateTime" => $cronJobDateTime,
"action" => $action,
"output" => [
"status" => $output_status,
"message" => $output
]
]));

View File

@ -231,11 +231,9 @@ PRIMARY KEY (`id`)
)ENGINE=InnoDB DEFAULT CHARSET=latin1;
CREATE TABLE IF NOT EXISTS `".$prefix."_minuti` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`mese` enum('gennaio','febbraio','marzo','aprile','maggio','giugno','luglio','agosto','settembre','ottobre','novembre','dicembre') NOT NULL,
`anno` varchar(4) NOT NULL,
`mese` int(2) NOT NULL,
`anno` int(2) NOT NULL,
`list` mediumtext NOT NULL,
`a1` mediumtext NOT NULL,
`a2` mediumtext NOT NULL,
PRIMARY KEY (`id`)
)ENGINE=InnoDB DEFAULT CHARSET=latin1;
CREATE TABLE IF NOT EXISTS `".$prefix."_tipo` (
@ -406,23 +404,26 @@ function initOptions($name, $visible, $password, $report_email, $owner){
$option_check_cf_ip = empty($_SERVER['HTTP_CF_CONNECTING_IP']) ? "INSERT INTO `".$prefix."_options` (`id`, `name`, `value`, `enabled`, `created_time`, `last_edit`, `user_id`) VALUES ('11', 'check_cf_ip', 1, '1', current_timestamp(), current_timestamp(), '1');" : "INSERT INTO `".$prefix."_options` (`id`, `name`, `value`, `enabled`, `created_time`, `last_edit`, `user_id`) VALUES ('10', 'check_cf_ip', 0, '1', current_timestamp(), current_timestamp(), '1');";
$prep = $connection->prepare("
INSERT INTO `".$prefix."_profiles` (`id`, `hidden`) VALUES (NULL, :hidden);
INSERT INTO `".$prefix."_options` (`id`, `name`, `value`, `enabled`, `created_time`, `last_edit`, `user_id`) VALUES ('1', 'report_email', :report_email, '1', current_timestamp(), current_timestamp(), '1');
INSERT INTO `".$prefix."_options` (`id`, `name`, `value`, `enabled`, `created_time`, `last_edit`, `user_id`) VALUES ('2', 'owner', :owner, '1', current_timestamp(), current_timestamp(), '1');
INSERT INTO `".$prefix."_options` (`id`, `name`, `value`, `enabled`, `created_time`, `last_edit`, `user_id`) VALUES ('3', 'web_url', :web_url, '1', current_timestamp(), current_timestamp(), '1');
INSERT INTO `".$prefix."_options` (`id`, `name`, `value`, `enabled`, `created_time`, `last_edit`, `user_id`) VALUES ('4', 'use_custom_error_sound', 0, '1', current_timestamp(), current_timestamp(), '1');
INSERT INTO `".$prefix."_options` (`id`, `name`, `value`, `enabled`, `created_time`, `last_edit`, `user_id`) VALUES ('5', 'use_custom_error_image', 0, '1', current_timestamp(), current_timestamp(), '1');
INSERT INTO `".$prefix."_options` (`id`, `name`, `value`, `enabled`, `created_time`, `last_edit`, `user_id`) VALUES ('6', 'intrusion_save', 1, '1', current_timestamp(), current_timestamp(), '1');
INSERT INTO `".$prefix."_options` (`id`, `name`, `value`, `enabled`, `created_time`, `last_edit`, `user_id`) VALUES ('7', 'intrusion_save_info', 1, '1', current_timestamp(), current_timestamp(), '1');
INSERT INTO `".$prefix."_options` (`id`, `name`, `value`, `enabled`, `created_time`, `last_edit`, `user_id`) VALUES ('8', 'enable_technical_support', 0, '1', current_timestamp(), current_timestamp(), '1');
INSERT INTO `".$prefix."_options` (`id`, `name`, `value`, `enabled`, `created_time`, `last_edit`, `user_id`) VALUES ('9', 'technical_support_key', '', '1', current_timestamp(), current_timestamp(), '1');
INSERT INTO `".$prefix."_options` (`id`, `name`, `value`, `enabled`, `created_time`, `last_edit`, `user_id`) VALUES ('10', 'cron_job_code', :cron_job_code, '1', current_timestamp(), current_timestamp(), '1');
INSERT INTO `".$prefix."_options` (`id`, `name`, `value`, `enabled`, `created_time`, `last_edit`, `user_id`) VALUES (NULL, 'report_email', :report_email, 1, current_timestamp(), current_timestamp(), '1');
INSERT INTO `".$prefix."_options` (`id`, `name`, `value`, `enabled`, `created_time`, `last_edit`, `user_id`) VALUES (NULL, 'owner', :owner, 1, current_timestamp(), current_timestamp(), '1');
INSERT INTO `".$prefix."_options` (`id`, `name`, `value`, `enabled`, `created_time`, `last_edit`, `user_id`) VALUES (NULL, 'web_url', :web_url, 1, current_timestamp(), current_timestamp(), '1');
INSERT INTO `".$prefix."_options` (`id`, `name`, `value`, `enabled`, `created_time`, `last_edit`, `user_id`) VALUES (NULL, 'use_custom_error_sound', 0, 1, current_timestamp(), current_timestamp(), '1');
INSERT INTO `".$prefix."_options` (`id`, `name`, `value`, `enabled`, `created_time`, `last_edit`, `user_id`) VALUES (NULL, 'use_custom_error_image', 0, 1, current_timestamp(), current_timestamp(), '1');
INSERT INTO `".$prefix."_options` (`id`, `name`, `value`, `enabled`, `created_time`, `last_edit`, `user_id`) VALUES (NULL, 'intrusion_save', 1, 1, current_timestamp(), current_timestamp(), '1');
INSERT INTO `".$prefix."_options` (`id`, `name`, `value`, `enabled`, `created_time`, `last_edit`, `user_id`) VALUES (NULL, 'intrusion_save_info', 1, 1, current_timestamp(), current_timestamp(), '1');
INSERT INTO `".$prefix."_options` (`id`, `name`, `value`, `enabled`, `created_time`, `last_edit`, `user_id`) VALUES (NULL, 'enable_technical_support', 0, 1, current_timestamp(), current_timestamp(), '1');
INSERT INTO `".$prefix."_options` (`id`, `name`, `value`, `enabled`, `created_time`, `last_edit`, `user_id`) VALUES (NULL, 'technical_support_key', '', 1, current_timestamp(), current_timestamp(), '1');
INSERT INTO `".$prefix."_options` (`id`, `name`, `value`, `enabled`, `created_time`, `last_edit`, `user_id`) VALUES (NULL, 'cron_job_code', :cron_job_code, 1, current_timestamp(), current_timestamp(), '1');
INSERT INTO `".$prefix."_options` (`id`, `name`, `value`, `enabled`, `created_time`, `last_edit`, `user_id`) VALUES (NULL, 'cron_job_enabled', 1, 1, current_timestamp(), current_timestamp(), '1');
INSERT INTO `".$prefix."_options` (`id`, `name`, `value`, `enabled`, `created_time`, `last_edit`, `user_id`) VALUES (NULL, 'cron_job_time', :cron_job_time, 1, current_timestamp(), current_timestamp(), '1');
$option_check_cf_ip");
mt_srand(10);
$prep->bindValue(':hidden', ($visible ? 0 : 1), PDO::PARAM_INT);
$prep->bindValue(':report_email', $report_email, PDO::PARAM_STR);
$prep->bindValue(':owner', $owner, PDO::PARAM_STR);
$prep->bindValue(':web_url', str_replace("install/install.php", "", full_path()), PDO::PARAM_STR);
$prep->bindValue(':cron_job_code', uniqid().mt_rand(), PDO::PARAM_STR);
$prep->bindValue(':cron_job_code', str_replace(".", "", bin2hex(random_bytes(10)).base64_encode(openssl_random_pseudo_bytes(30))), PDO::PARAM_STR);
$prep->bindValue(':cron_job_time', "01;00:00", PDO::PARAM_STR);
$prep->execute();
} catch (Exception $e) {
if(is_cli()){