isConnected()) { return; } $pageTitle = tr('Configurazione'); if (file_exists($docroot.'/include/custom/top.php')) { include_once $docroot.'/include/custom/top.php'; } else { include_once $docroot.'/include/top.php'; } // Controllo sull'esistenza di nuovi parametri di configurazione if (post('db_host') !== null) { $db_host = $_POST['db_host']; // Fix per evitare la conversione in numero $db_name = post('db_name'); $db_username = post('db_username'); $db_password = post('db_password'); $valid_config = isset($db_host) && isset($db_name) && isset($db_username) && isset($db_password); // Generazione di una nuova connessione al database $dbo = Database::getConnection(true, [ 'db_host' => $db_host, 'db_name' => $db_name, 'db_username' => $db_username, 'db_password' => $db_password, ]); // Test della configurazione if (post('test') !== null) { ob_end_clean(); if ($dbo->isConnected()) { $requirements = [ 'SELECT', 'INSERT', 'UPDATE', 'CREATE', 'ALTER', 'DROP', ]; $db_host = str_replace('_', '\_', $db_name); $db_name = str_replace('_', '\_', $db_name); $db_username = str_replace('_', '\_', $db_name); $results = $dbo->fetchArray('SHOW GRANTS FOR CURRENT_USER'); foreach ($results as $result) { $privileges = current($result); if ( str_contains($privileges, ' ON `'.$db_name.'`.*') || str_contains($privileges, ' ON *.*') ) { $pieces = explode(', ', explode(' ON ', str_replace('GRANT ', '', $privileges))[0]); // Permessi generici sul database if (in_array('ALL', $pieces) || in_array('ALL PRIVILEGES', $pieces)) { $requirements = []; break; } // Permessi specifici sul database foreach ($requirements as $key => $value) { if (in_array($value, $pieces)) { unset($requirements[$key]); } } } } // Permessi insufficienti if (!empty($requirements)) { $state = 1; } // Permessi completi else { $state = 2; } } // Connessione fallita else { $state = 0; } echo $state; exit(); } // Salvataggio dei valori da salvare successivamente $_SESSION['osm_password'] = post('osm_password'); $_SESSION['osm_email'] = post('osm_email'); // Creazione della configurazione if ($dbo->isConnected()) { // Impostazioni di configurazione strettamente necessarie al funzionamento del progetto $backup_config = ' $db_host, '|username|' => $db_username, '|password|' => $db_password, '|database|' => $db_name, ]; $new_config = str_replace(array_keys($values), $values, $new_config); // Controlla che la scrittura del file di configurazione sia andata a buon fine $creation = file_put_contents('config.inc.php', $new_config); if (!$creation) { echo '

'.tr('Permessi di scrittura mancanti').'

'.tr('Sembra che non ci siano i permessi di scrittura sul file _FILE_', [ '_FILE_' => 'config.inc.php', ]).'

;
'.tr('Torna indietro').'

'.tr('Inserire il seguente testo nel file _FILE_', [ '_FILE_' => 'config.inc.php', ]).'

'.htmlentities($new_config).'
'; } // Continua con l'esecuzione delle operazioni previste else { redirect(ROOTDIR.'/index.php'); exit(); } } } // Controlla che i parametri di configurazione permettano l'accesso al database if ((file_exists('config.inc.php') || $valid_config) && !$dbo->isConnected()) { echo '

'.tr('Impossibile connettersi al database').'

'.tr("Si è verificato un'errore durante la connessione al database").'.

'.tr('Controllare di aver inserito correttamente i dati di accesso, e che il database atto ad ospitare i dati del gestionale sia esistente').'.

'.tr('Riprova').'
'; } $img = App::getPaths()['img']; // Visualizzazione dell'interfaccia di impostazione iniziale, nel caso il file di configurazione sia mancante oppure i paramentri non siano sufficienti if (empty($creation) && (!file_exists('config.inc.php') || !$valid_config)) { if (file_exists('config.inc.php')) { echo '

'.tr('Parametri non sufficienti!').'

'.tr("L'avvio del software è fallito a causa dell'assenza di alcuni paramentri nella configurazione di base").'.

'.tr("Si prega di controllare che il file _FILE_ contenga tutti i dati inseriti durante la configurazione iniziale (con l'eccezione di password e indirizzo email amministrativi)", [ '_FILE_' => 'config.inc.php', ]).'.

'.tr("Nel caso il problema persista, rivolgersi all'assistenza ufficiale").'.

'.tr('Riprova').'
'; } // Controlli per essere sicuro che l'utente abbia letto la licenza echo ' '; echo '
'.tr('OSM Logo').'

'.tr('OpenSTAManager').'

'; // REQUISITI PER IL CORRETTO FUNZIONAMENTO echo '

'.tr('Benvenuto in OpenSTAManager!').'

'.tr("Prima di procedere alla configurazione e all'installazione del software, sono necessari alcuni accorgimenti per garantire il corretto funzionamento del gestionale").'. '.tr('Stai utilizzando la versione PHP _PHP_', [ '_PHP_' => phpversion(), ]).'.


'; // Estensioni di PHP echo '

'.tr('Le seguenti estensioni PHP devono essere abilitate dal file di configurazione _FILE_', [ '_FILE_' => 'php.ini', ]).':

'; $extensions = [ 'zip' => tr("Necessario per l'utilizzo delle funzioni di aggiornamento automatico e backup, oltre che per eventuali moduli aggiuntivi"), 'pdo_mysql' => tr('Necessario per la connessione al database'), 'openssl' => tr('Utile per la generazione di chiavi complesse (facoltativo)'), 'intl' => tr('Utile per la gestione automatizzata della conversione numerica (facoltativo)'), ]; foreach ($extensions as $key => $value) { $check = extension_loaded($key); echo '

'.$key; if ($check) { echo ' '; } else { echo ' '; } echo '

'.$value.'

'; } echo '

'; // Impostazione di valore per PHP echo '

'.tr('Le seguenti impostazioni PHP devono essere modificate nel file di configurazione _FILE_', [ '_FILE_' => 'php.ini', ]).':

'; $values = [ 'display_errors' => true, 'upload_max_filesize' => '>16M', 'post_max_size' => '>16M', ]; foreach ($values as $key => $value) { $ini = str_replace(['k', 'M'], ['000', '000000'], ini_get($key)); $real = str_replace(['k', 'M'], ['000', '000000'], $value); if (starts_with($real, '>')) { $check = $ini >= substr($real, 1); } elseif (starts_with($real, '<')) { $check = $ini <= substr($real, 1); } else { $check = ($real == $ini); } if (is_bool($value)) { $value = !empty($value) ? 'On' : 'Off'; } else { $value = str_replace(['>', '<'], '', $value); } echo '

'.$key; if ($check) { echo ' '; } else { echo ' '; } echo '

'.tr('Valore consigliato').': '.$value.'

'; } echo '

'; // Percorsi necessari echo '

'.tr('Le seguenti cartelle devono risultare scrivibili da parte del gestionale').':

'; $dirs = [ 'backup' => tr('Necessario per il salvataggio dei backup'), 'files' => tr('Necessario per il salvataggio di file inseriti dagli utenti'), 'logs' => tr('Necessario per la gestione dei file di log'), ]; foreach ($dirs as $key => $value) { $check = is_writable($docroot.DIRECTORY_SEPARATOR.$key); echo '

'.$key; if ($check) { echo ' '; } else { echo ' '; } echo '

'.$value.'

'; } echo '

'; // LICENZA echo '

'.tr('OpenSTAManager è tutelato dalla licenza _LICENSE_!', [ '_LICENSE_' => 'GPL 3.0', ]).'

'.tr('Accetti la licenza GPLv3 di OpenSTAManager?').'*


[ '.tr('Versioni tradotte').' ]

'; $host = !empty($db_host) ? $db_host : ''; $username = !empty($db_username) ? $db_username : ''; $password = !empty($db_password) ? $db_password : ''; $name = !empty($db_name) ? $db_name : ''; $osm_password = !empty($_SESSION['osm_password']) ? $_SESSION['osm_password'] : ''; $osm_email = !empty($_SESSION['osm_email']) ? $_SESSION['osm_email'] : ''; // PARAMETRI echo '
'.tr('Aiuto').'

'.tr('Non hai ancora configurato OpenSTAManager').'.

'.tr('Configura correttamente il software con i seguenti parametri (modificabili successivamente dal file _FILE_)', [ '_FILE_' => 'config.inc.php', ]).'

'; // Form dei parametri echo '
'; // db_host echo '
{[ "type": "text", "label": "'.tr('Host del database').'", "name": "db_host", "placeholder": "'.tr("Indirizzo dell'host del database").'", "value": "'.$host.'", "help": "'.tr('Esempio').': localhost", "show-help": 0, "required": 1 ]}
'; // db_username echo '
{[ "type": "text", "label": "'.tr("Username dell'utente MySQL").'", "name": "db_username", "placeholder": "'.tr("Username dell'utente MySQL").'", "value": "'.$username.'", "help": "'.tr('Esempio').': root", "show-help": 0, "required": 1 ]}
'; // db_password echo '
{[ "type": "password", "label": "'.tr("Password dell'utente MySQL").'", "name": "db_password", "placeholder": "'.tr("Password dell'utente MySQL").'", "value": "'.$password.'", "help": "'.tr('Esempio').': mysql", "show-help": 0 ]}
'; // db_name echo '
{[ "type": "text", "label": "'.tr('Nome del database').'", "name": "db_name", "placeholder": "'.tr('Nome del database').'", "value": "'.$name.'", "help": "'.tr('Esempio').': openstamanager", "show-help": 0, "required": 1 ]}
'; // Password utente admin echo '
{[ "type": "password", "label": "'.tr("Password dell'amministratore").'", "name": "osm_password", "placeholder": "'.tr('Scegli la password di amministratore').'", "value": "'.$osm_password.'", "help": "'.tr('Valore di default').': admin", "show-help": 1 ]}
'; // Email utente admin echo '
{[ "type": "email", "label": "'.tr("Email dell'amministratore").'", "name": "osm_email", "placeholder": "'.tr("Digita l'indirizzo email dell'amministratore").'", "value": "'.$osm_email.'" ]}
'; echo ' '; echo '
*'.tr('Campi obbligatori').'
'; } if (file_exists($docroot.'/include/custom/bottom.php')) { include_once $docroot.'/include/custom/bottom.php'; } else { include_once $docroot.'/include/bottom.php'; } exit();