IMPOSSIBILE ACCEDERE ALLA CONFIGURAZIONE DEL SITO.
IMPOSSIBILE AVVIARE L'APPLICATIVO!!');
}
$config = json_decode(file_get_contents(__DIR__ . "/config.json"),true);
if($config === NULL) {
// The config.json file is lacking the proper format.
die('
IMPOSSIBILE PROCESSARE LA CONFIGURAZIONE DEL SITO.
IMPOSSIBILE AVVIARE L'APPLICATIVO!!
');
}
$config["first_level"] = __DIR__;
$config["chunk_folder"] = sys_get_temp_dir();
$config["cmds_folder"] = __DIR__."/cmds";
$config["bash_folder"] = __DIR__."/bash";
$config["cafolder"] = __DIR__."/cainfo";
$config["mediaFolder"] = __DIR__ . "/media";
$config["simog_folder"] = __DIR__."/simog";
$config["path_vocabolario"] = __DIR__."/vocabolario";
$config["jsonFolder"] = __DIR__."/json";
$config["mailFolder"] = __DIR__."/mail";
$config["user_log"] = __DIR__."/logs/user-activity";
$config["db_log"] = __DIR__."/logs/db-ops";
$config["queue_log"] = __DIR__ . "/logs/queue";
$config["npaFolder"] = __DIR__."/logs/npa";
$config["themesFolder"] = "/src/css/themes/";
$config["protocollo"] = "https://";
if (!empty($config["redirects"]) && isset($_SERVER["SERVER_NAME"])) {
$redirect = $config["redirects"][$_SERVER["SERVER_NAME"]] ?? null;
if (!empty($redirect)) {
header("HTTP/1.1 301 Moved Permanently");
header("Location: {$config["protocollo"]}{$redirect}");
exit();
die();
}
}
$demoEnv = $config["demoEnv"];
$developEnv = $config["developEnv"];
date_default_timezone_set('Europe/Rome');
ini_set('display_errors', 0);
ini_set('display_startup_errors', 0);
error_reporting(E_ALL);
$ipDisableCaptcha = ["79.8.46.241"];
$config["ipExetendedAPI"] = ["213.215.222.192", "79.8.46.241", "172.17.2.34"];
$config["publicFrontEnd"] = "";
putenv("GOOGLE_APPLICATION_CREDENTIALS=".__DIR__."/file");
if (! file_exists($config["queue_log"])) { mkdir($config["queue_log"],0777,true); }
$demoEnv = $config["demoEnv"];
$developEnv = $config["developEnv"];
$manutenzione = false;
if (isset($_SERVER["DEMO_ENV"]) && $_SERVER["DEMO_ENV"] === "true") {
$demoEnv = TRUE;
}
if (isset($_SERVER["DEVELOP_ENV"]) && $_SERVER["DEVELOP_ENV"] === "true") {
$developEnv = TRUE;
}
if (!defined('DEMO_ENV')) {
define('DEMO_ENV', $demoEnv);
}
if (!defined('DEVELOP_ENV')) {
define('DEVELOP_ENV', $developEnv);
}
if (!defined('ROOT_FOLDER')) {
define('ROOT_FOLDER', __DIR__);
}
// Check for possible redirects
if($config["protocollo"] == "http://" && ! DEVELOP_ENV && php_sapi_name() != "cli") {
header("Location: https://{$_SERVER['HTTP_HOST']}{$_SERVER['REQUEST_URI']}");
exit;
}
// Check for any enforced redirects L301.
$config["link_sito"] = "{$config["protocollo"]}{$config["link_sito"]}";
if (! empty($config["redirects"]) && isset($_SERVER["SERVER_NAME"]) && ! empty($config["redirects"][$_SERVER["SERVER_NAME"]])) {
header("HTTP/1.1 301 Moved Permanently");
header("Location: {$config["protocollo"]}{$config["redirects"][$_SERVER["SERVER_NAME"]]}");
exit;
}
// Check if the captcha needs to be disabled.
$disableCaptcha = $config["disableCaptcha"];
$ipDisableCaptcha = ["93.67.152.242","79.8.46.252"];
if ((isset($_SERVER["REMOTE_ADDR"]) && in_array($_SERVER["REMOTE_ADDR"], $ipDisableCaptcha) !== FALSE) || $developEnv) {
$disableCaptcha = TRUE;
}
date_default_timezone_set('Europe/Rome');
error_reporting(E_ALL);
ini_set('display_errors', 0);
ini_set('display_startup_errors', 0);
if (DEVELOP_ENV) {
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
}
$includes = [
"{$root}/inc/pdo.class.php",
"{$root}/inc/save.class.php",
"{$beRoot}/enti/settingsManager.class.php",
"{$beRoot}/utenti/utente.class.php",
"{$beRoot}/enti/ente.class.php",
"{$beRoot}/albo/oeManager.class.php",
"{$root}/inc/modulo.class.php",
"{$beRoot}/form/formManager.class.php",
"{$root}/allegati/filesManager.class.php",
"{$root}/inc/cpvManager.class.php",
"{$root}/inc/xml2json.php",
"{$root}/inc/communicator.class.php",
"{$root}/inc/dotPath.class.php",
"{$beRoot}/common/massiveHelper/massiveHelper.class.php",
"{$root}/inc/documentConverter.php",
"{$root}/inc/tuttogareMath.class.php",
"{$beRoot}/common/alertManager/alertManager.class.php",
"{$root}/spid/spid.class.php",
"{$beRoot}/common/pdnd/pdnd.class.php",
"{$root}/inc/dataverifier.class.php",
"{$root}/inc/funzioni.php",
"{$root}/inc/p7m.class.php",
"{$beRoot}/common/dgue/dgue.class.php",
"{$beRoot}/common/dgue/models/modelBase.class.php",
"{$beRoot}/common/richiesteOE/richiesteOE.class.php",
"{$root}/richieste/publicRichiesteOE.class.php",
"{$root}/common/busteOE/busteOE.class.php",
"{$beRoot}/common/commissioni/commissione.class.php",
"{$beRoot}/common/registri/registri.class.php",
"{$beRoot}/common/avvisi/avvisiProcedura.class.php",
"{$beRoot}/editor/editorManager.class.php",
"{$beRoot}/report/reportManager.class.php",
"{$beRoot}/common/pubblicitaLegale/pubblicitaLegale.class.php",
"{$beRoot}/common/incarichi/incarichi.class.php",
"{$root}/inc/integrazioni/integrazione.class.php",
];
$__include_autoload = true;
$__included_files = get_included_files();
$__included_files = array_filter($__included_files, fn($path) => strpos($path, "/cmds"));
if(! empty($__included_files)) {
$__included_files = array_map(fn (&$path) => substr($path, strpos($path, "/cmds")), $__included_files);
$__included_files = array_flip($__included_files);
if(isset($__included_files["/cmds/vendor/autoload.php"])) {
$__include_autoload = false;
}
}
if($__include_autoload) {
$includes[] = __DIR__."/vendor/autoload.php";
$includes[] = "{$root}/inc/TCPDFwFooter.class.php";
}
if (DEVELOP_ENV || DEMO_ENV) {
$includes[] = "{$root}/inc/testCaseExecute.class.php";
}
foreach($includes AS $_requiredFile) {
require_once $_requiredFile;
}
$config["moduli"] = Modulo::getModuli();
foreach($config["moduli"] AS $_mod) {
if (!empty($_mod["requirements"])) {
foreach($_mod["requirements"] AS $_requiredFile) {
require_once __DIR__ . $_requiredFile;
}
}
}
$skip_purify = $_ENV["__SKIP_PURIFY"] ?? false;
if($skip_purify !== true) {
$_GET = purifyInput($_GET);
$_POST = purifyInput($_POST);
}
$required_js = [];
$required_js[] = "/src/ckeditor5/ckeditor.js";
$required_js[] = "/src/js/app.js?date=20240724";
$required_js[] = "/src/highcharts/highcharts.js";
$required_js[] = "/src/highcharts/highcharts-more.js";
$required_js[] = "/src/typeahead/typeahead.bundle.js";
$required_js[] = "/src/js/extra/files.js";
$required_js[] = "/src/js/resumable.js";
$required_css = ["/src/css/app.css"];
$required_css[] = "/src/css/extra/files.css";
try {
$pdo = new myPDO($config["db_host"], $config["db_user"], $config["db_pass"], $config["db_name"], $config['socket']);
} catch (\Throwable $th) {
die('ERRORE DI CONNESSIONE AL DATABASE.
IMPOSSIBILE AVVIARE L'APPLICATIVO!!
');
} finally {
if ($pdo->go("SHOW TABLES LIKE 'b_enti'")->rowCount() == 0 && !isset($initScript) && php_sapi_name() !== "cli") {
die('DATABASE NON INIZIALIZZATO.
IMPOSSIBILE AVVIARE L'APPLICATIVO!!
');
}
}
///////////////////////////
// CHECK LAST ACTIVITY //
///////////////////////////
@session_start();
if ($developEnv || (isset($_SESSION["utente"]) && $_SESSION["utente"]->gerarchia === 1)) {
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
}
if (!isset($pagina_login)) {
$_SESSION["id_sessione"] = md5(session_id());
}
$_SESSION["developEnv"] = $developEnv;
$_SESSION["demoEnv"] = $demoEnv;
if (!empty($_SESSION["utente"]) && isset($_SESSION['LAST_ACTIVITY']) && (time() - $_SESSION['LAST_ACTIVITY'] > 3600)) {
session_unset(); session_destroy(); @session_start();
if(empty($_SERVER['HTTP_X_REQUESTED_WITH']) || strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) != 'xmlhttprequest') {
echo '';
die();
}
}
$_SESSION['LAST_ACTIVITY'] = time();
if (!isset($_SESSION['CREATED'])) {
$_SESSION['CREATED'] = time();
} else if (time() - $_SESSION['CREATED'] > 1800) {
if (!empty($_SESSION["utente"])) {
$_SESSION["utente"]->regenerateID();
} else {
session_regenerate_id(true);
}
$_SESSION['CREATED'] = time();
}
////////////////////
// CHECK ente //
////////////////////
if (isset($_SERVER["SERVER_NAME"])) {
$ente = new ente();
if ($ente->init($_SERVER["SERVER_NAME"])) {
$pdo->setConnessioneEnte($ente->codice);
$_SESSION["ente"] = $ente;
if (!empty($ente->getInfo()["dominio"])) {
$_SESSION["config"]["link_sito"] = $config["protocollo"] . $ente->getInfo()["dominio"];
}
$_SESSION["config"]["nome_sito"] = $config["nome_sito"] . " - " . $ente->getInfo()["denominazione"];
}
}
if (!empty($_SESSION["ente"])) {
$_SESSION["ente"]->check();
if ($_SESSION["ente"]->getInfo()["manutenzione"] == "S") {
$manutenzione = true;
}
} else {
$manutenzione = false;
}
if (!file_exists($config["user_log"])) {
mkdir($config["user_log"], 0770, true);
}
if (!file_exists($config["db_log"])) {
mkdir($config["db_log"], 0770, true);
}
if (!file_exists($config["user_log"]."/lock")) {
mkdir($config["user_log"]."/lock", 0770, true);
}
if (isset($_SERVER["HTTP_HOST"])) {
$actual_link = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? "https" : "http") . "://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
}
$todayLog = date("Ymd").".log";
$todayLogPath = "{$config["user_log"]}/{$todayLog}";
$yesterdayLog = date("Ymd",strtotime("Yesterday")).".log";
$yesterdayLogPath = "{$config["user_log"]}/{$yesterdayLog}";
if (file_exists($yesterdayLogPath) && !DEMO_ENV && php_sapi_name() == "cli") {
$zip = new ZipArchive;
if ($zip->open($yesterdayLogPath.".zip", ZipArchive::CREATE) === TRUE)
{
$unlink_log = false;
$unlink_tsr = false;
$unlink_tsq = false;
if ($zip->addFile($yesterdayLogPath,$yesterdayLog)) {
$unlink_log = true;
// if ($zip->addFile($yesterdayLogPath.".tsr",$yesterdayLog.".tsr")) {
// $unlink_tsr = true;
// if ($zip->addFile($yesterdayLogPath.".tsq",$yesterdayLog.".tsq")) {
// $unlink_tsq = true;
// }
// }
}
if ($zip->close()) {
if ($unlink_log) {
P7Manager::putTimestamp($yesterdayLogPath.".zip");
unlink($yesterdayLogPath);
}
// if ($unlink_tsr) {
// unlink($yesterdayLogPath.".tsr");
// }
// if ($unlink_tsq) {
// unlink($yesterdayLogPath.".tsq");
// }
}
}
}
$todayDbLog = date("Ymd").".log";
$todayDbLogPath = "{$config["db_log"]}/{$todayDbLog}";
$yesterdayDbLog = date("Ymd",strtotime("Yesterday")).".log";
$yesterdayDbLogPath = "{$config["db_log"]}/{$yesterdayDbLog}";
if (file_exists($yesterdayDbLogPath) && !DEMO_ENV && php_sapi_name() == "cli") {
$zip = new ZipArchive;
if ($zip->open($yesterdayDbLogPath.".zip", ZipArchive::CREATE) === TRUE)
{
$unlink_db_log = false;
$unlink_db_tsr = false;
$unlink_db_tsq = false;
if ($zip->addFile($yesterdayDbLogPath,$yesterdayDbLog)) {
$unlink_db_log = true;
// if ($zip->addFile($yesterdayDbLogPath.".tsr",$yesterdayDbLog.".tsr")) {
// $unlink_db_tsr = true;
// if ($zip->addFile($yesterdayDbLogPath.".tsq",$yesterdayDbLog.".tsq")) {
// $unlink_db_tsq = true;
// }
// }
}
if ($zip->close()) {
if ($unlink_db_log) {
P7Manager::putTimestamp($yesterdayDbLogPath.".zip");
unlink($yesterdayDbLogPath);
}
// if ($unlink_db_tsr) {
// unlink($yesterdayDbLogPath.".tsr");
// }
// if ($unlink_db_tsq) {
// unlink($yesterdayDbLogPath.".tsq");
// }
}
}
}
if (isset($_SESSION["utente"]->codice) &&
(!isset($ignoreLog) || (isset($ignoreLog) && $ignoreLog !== true))
&& $_SESSION["demoEnv"]!==true
&& isset($actual_link)) {
$tmp = [];
$tmp[] = date("Y-m-d H:i:s");
$tmp[] = $_SESSION["utente"]->codice;
$tmp[] = get_client_ip();
$tmp[] = $actual_link;
$message = implode(";",$tmp);
file_put_contents($todayLogPath, $message."\n", FILE_APPEND);
}
if ($manutenzione && !isset($ignoreRedirectManutenzione)) {
echo '';
die();
}
$lang_disp = jsonToArray($root."/inc/language-available.json");
$available_lg = ["IT"];
foreach($lang_disp AS $lang_key => $lang_av) {
if ($lang_av["attivo"] == "S") {
$available_lg[] = $lang_key;
}
}
if (!isset($_SESSION["language"])) {
$_SESSION["language"] = "IT";
}
if (isset($_GET["language"]) && in_array($_GET["language"], $available_lg, TRUE) !== false) {
$selected_language = $available_lg[array_search($_GET["language"], $available_lg, TRUE)];
$_SESSION["language"] = $selected_language;
}
if (empty($_SESSION["config"])) {
$_SESSION["config"] = [
"link_sito" => $config["link_sito"],
"nome_sito" => $config["nome_sito"]
];
}
if (!empty($_SESSION["utente"])) {
$_SESSION["utente"]->check();
}
$radice = get_radice();
$_SESSION["numero_assistenza"] = (isset($_SESSION["ente"]) && !empty($_SESSION["ente"]->getInfo()["numero_assistenza_oe"])) ? $_SESSION["ente"]->getInfo()["numero_assistenza_oe"] : $config["numero_assistenza_oe"];
if (!empty($_SESSION["utente"]) && empty($_SESSION["utente"]->oe)) {
$_SESSION["numero_assistenza"] = (isset($_SESSION["ente"]) && !empty($_SESSION["ente"]->getInfo()["numero_assistenza_sa"])) ? $_SESSION["ente"]->getInfo()["numero_assistenza_sa"] : $config["numero_assistenza_sa"];
}
$_SESSION["email_assistenza"] = $config["email_assistenza"];
$_include_configs = [
"spid.php",
"oidc.php",
"tuttodocs.php",
"changelogs.php",
"ProcurePlus.php"
];
foreach($_include_configs AS $_config_file) {
$_config_path = __DIR__ . DIRECTORY_SEPARATOR . "configs" . DIRECTORY_SEPARATOR . $_config_file;
if (file_exists($_config_path)) {
include_once $_config_path;
}
}