/** * Lecture d'un fichier contenant les requetes SQL et exécution * * @param sql_file Fichier contenant les requetes */ function Sql_execSqlFile($sql_file) { global $MSG, $lang; /** * On construit un tableau avec les longueurs de chaque requete SQL * Chaque element du tableau nous aide a récupérer requête par requête * pour éviter des problemes de chargement avec de gros fichiers */ $sizes_array = Sql_getSqlLenghts($sql_file); $handle = fopen($sql_file, "r"); foreach ($sizes_array as $size_unit) { $sql_query = fread($handle, $size_unit); if ($sql_query != '') { if (get_magic_quotes_runtime() == 1) { $sql_query = stripslashes($sql_query); } $sql_query = trim($sql_query); $sql_query = Sql_getSqlTxt($sql_query); //================================================================================== // On effectue quelques controles sur les requetes // On ne laisse passer que les requetes dont les tables sont referencees // dans le conf.php et de type INSERT, SELECT et DELETE //================================================================================== $bad_request = TRUE; preg_match("`(select|insert|delete) (into|from) ([a-zA-Z0-9_]+)`i", $sql_query, $tab); foreach ($GLOBALS['AUTH_TABLES'] as $table) { Lib_sqlLog("Verification pour " . $tab[3]); if (preg_match("`" . $table . "`i", $tab[3])) { /*=============*/ Lib_sqlLog("{$tab[3]} autorisee"); $bad_request = FALSE; } else { /*=============*/ Lib_sqlLog("{$tab[3]} non autorisee"); } } if ($bad_request && $GLOBALS['stop_bad_sql']) { $error_message = "<b> " . $MSG[$lang]['%%RequeteInterdite%%'] . " </b>"; $error_message .= "<br>{$sql_query}<br>"; fclose($handle); return $error_message; } if ($bad_request) { continue; } $result = mysql_query($sql_query); //================================================================= // On verifie la bonne execution de la requete //================================================================= if ($result == FALSE) { $error_message = "<b> " . $MSG[$lang]['%%ProblemeSql%%'] . " </b>"; $error_message .= "<b> " . mysql_error() . " </b>"; $error_message .= "<br> <b> Requète: </b> {$sql_query} <br>"; Lib_sqlLog(mysql_error()); fclose($handle); return $error_message; } else { Lib_sqlLog("Requete executee avec succes: " . mysql_error()); } } } fclose($handle); return ""; }
/** * - Cas Install_Installer : * . * Le cas Install_Installer patati patata.... */ function Install_Installer($data_in = array()) { global $lang, $MSG, $data_in, $data_out, $data_srv, $catalogue, $ip; $continue = true; //------------------------------------------------- // Tout d'abord, on verifie si le user existe deja //------------------------------------------------- Lib_myLog("Tentative de connexion avec l'utilisateur " . $data_in['login']); $data_out['etapes'][] = $MSG[$lang]['%%Action_EtapeConnexionUser%%'] . " " . $data_in['login']; $db_link = @mysql_connect($data_in['serveur'], $data_in['login'], $data_in['mdp']); if ($db_link) { Lib_myLog("Connexion reussie"); $data_out['etapes'][] = $MSG[$lang]['%%Action_EtapeConnexionUserOK%%']; } else { Lib_myLog("Erreur de connexion"); $data_out['etapes'][] = $MSG[$lang]['%%Action_EtapeConnexionUserKO%%']; } //------------------------------------------------- // On essaye d'ouvrir la base //------------------------------------------------- if ($continue) { Lib_myLog("Tentative d'ouverture de la base de donnees"); $data_out['etapes'][] = $MSG[$lang]['%%Action_EtapeConnexionBase%%']; $res = @mysql_select_db($data_in['bdd']); if ($res) { Lib_myLog("Ouverture reussie"); $data_out['etapes'][] = $MSG[$lang]['%%Action_EtapeConnexionBaseOK%%']; } else { Lib_myLog("Erreur d'ouverture"); $data_out['etapes'][] = $MSG[$lang]['%%Action_EtapeConnexionBaseKO%%'] . ": " . mysql_error(); $continue = false; } } //------------------------------------------------- // Maintenant que la base est ouverte, on essaye de creer les tables systeme //------------------------------------------------- if ($continue) { Lib_myLog("Tentative de creation des tables systeme"); $data_out['etapes'][] = $MSG[$lang]['%%Action_EtapeCreationTablesSysteme%%']; $sql_file = "dilasys_MDD.sql"; $sizes_array = Sql_getSqlLenghts($sql_file); $handle = @fopen($sql_file, "r"); foreach ($sizes_array as $size_unit) { $sql_query = @fread($handle, $size_unit); if ($sql_query != '') { if (get_magic_quotes_runtime() == 1) { $sql_query = stripslashes($sql_query); } $sql_query = trim($sql_query); $sql_query = Sql_getSqlTxt($sql_query); $sql_query = preg_replace("`%%prefix%%`", $data_in['prefix'], $sql_query); $result = Sql_exec($sql_query); if (!$result) { $data_out['etapes'][] = $MSG[$lang]['%%Action_EtapeCreationTablesSystemeKO%%'] . ": " . mysql_error(); $continue = false; break; } } } } if ($continue) { Lib_myLog("Creation tables systeme reussie"); $data_out['etapes'][] = $MSG[$lang]['%%Action_EtapeCreationTablesSystemeOK%%']; Lib_myLog("Tentative de creation des autres tables"); $data_out['etapes'][] = $MSG[$lang]['%%Action_EtapeCreationTablesAutres%%']; $sql_file = "./config/MDD.sql"; $sizes_array = Sql_getSqlLenghts($sql_file); $handle = @fopen($sql_file, "r"); foreach ($sizes_array as $size_unit) { $sql_query = fread($handle, $size_unit); if ($sql_query != '') { if (get_magic_quotes_runtime() == 1) { $sql_query = stripslashes($sql_query); } $sql_query = trim($sql_query); $sql_query = Sql_getSqlTxt($sql_query); $sql_query = preg_replace("`%%prefix%%`", $data_in['prefix'], $sql_query); $result = Sql_exec($sql_query); if (!$result) { $data_out['etapes'][] = $MSG[$lang]['%%Action_EtapeCreationTablesAutresKO%%'] . ": " . mysql_error(); $continue = false; break; } } } } if ($continue) { Lib_myLog("Creation autres tables reussie"); $data_out['etapes'][] = $MSG[$lang]['%%Action_EtapeCreationTablesAutresOK%%']; Lib_myLog("Ajout des modules autorises"); $data_out['etapes'][] = $MSG[$lang]['%%Action_EtapeAjoutModulesAutorises%%']; $sql_file = "./config/modules.sql"; $sizes_array = Sql_getSqlLenghts($sql_file); $handle = fopen($sql_file, "r"); foreach ($sizes_array as $size_unit) { $sql_query = fread($handle, $size_unit); if ($sql_query != '') { if (get_magic_quotes_runtime() == 1) { $sql_query = stripslashes($sql_query); } $sql_query = trim($sql_query); $sql_query = Sql_getSqlTxt($sql_query); $sql_query = preg_replace("`%%prefix%%`", $data_in['prefix'], $sql_query); $result = Sql_exec($sql_query); if (!$result) { $data_out['etapes'][] = $MSG[$lang]['%%Action_EtapeAjoutModulesAutorisesKO%%'] . ": " . mysql_error(); $continue = false; break; } } } } if ($continue) { Lib_myLog("Ajout des modules autorises reussi"); $data_out['etapes'][] = $MSG[$lang]['%%Action_EtapeAjoutModulesAutorisesOK%%']; } //------------------------------------------------- // On cree le fichier de conf //------------------------------------------------- if ($continue) { Lib_myLog("Configuration du fichier de conf"); $data_out['etapes'][] = $MSG[$lang]['%%Action_EtapeConfigurationConf%%']; $conf = file('dilasys_conf.txt'); $conf = implode($conf, ""); $Out = preg_replace("`%%bdd%%`", $data_in['bdd'], $conf); $Out = preg_replace("`%%login%%`", $data_in['login'], $Out); $Out = preg_replace("`%%mdp%%`", $data_in['mdp'], $Out); $Out = preg_replace("`%%serveur%%`", $data_in['serveur'], $Out); $Out = preg_replace("`%%prefix%%`", $data_in['prefix'], $Out); $Out = preg_replace("`%%instance%%`", $data_in['instance'], $Out); $Out = preg_replace("`%%sgbd%%`", $data_in['sgbd'], $Out); $Out = preg_replace("`%%phrase%%`", $data_in['phrase'], $Out); $Out = preg_replace("`\r\n`", "\n", $Out); Lib_myLog("Creation du fichier conf pour la partie privee (administration)"); $handle = fopen('../conf.php', 'w+'); fwrite($handle, $Out); fclose($handle); Lib_myLog("Configuration terminee"); $data_out['etapes'][] = $MSG[$lang]['%%Action_EtapeConfigurationConfOK%%']; } //------------------------------------------------- // On cree le fichier de params //------------------------------------------------- if ($continue) { Lib_myLog("Configuration du fichier params"); $data_out['etapes'][] = $MSG[$lang]['%%Action_EtapeConfigurationParams%%']; $conf = file('dilasys_params.txt'); $conf = implode($conf, ""); $Out = preg_replace("`%%bdd%%`", $data_in['bdd'], $conf); $Out = preg_replace("`\r\n`", "\n", $Out); $var = ""; foreach ($GLOBALS['auth_modules'] as $module) { $var .= "\"{$module}\",\n"; } $Out = preg_replace("`%%modules%%`", $var, $Out); $var = ""; if (isset($GLOBALS['auth_tables'])) { foreach ($GLOBALS['auth_tables'] as $table) { $var .= "\"" . $table . "\",\n"; } } $Out = preg_replace("`%%tables%%`", $var, $Out); Lib_myLog("Creation du fichier params"); $handle = fopen('../params.php', 'w+'); fwrite($handle, $Out); fclose($handle); Lib_myLog("Configuration terminee"); $data_out['etapes'][] = $MSG[$lang]['%%Action_EtapeConfigurationParamsOK%%']; } if ($continue) { // Sinon, message d'erreur indiquant qu'il n'est pas possible d'installer le systeme avec ce user $data_out['message'] = "Installation réussie !"; $data_out['page'] = "Install_Resultat.php"; } else { $data_out['message'] = "MEEEEEEEEEEEEERDE!!!"; $data_out['page'] = "Install_Resultat.php"; } }