From 5a21d90411989788293b72737cf9c63edbc640ff Mon Sep 17 00:00:00 2001 From: Regis Houssin <regis@dolibarr.fr> Date: Tue, 29 Mar 2011 20:41:57 +0000 Subject: [PATCH] Fix: add function to encrypt/decrypt in sql files --- .../install/mysql/migration/3.0.0-3.1.0.sql | 8 +++--- htdocs/install/upgrade.php | 6 +++++ htdocs/lib/admin.lib.php | 26 +++++++++++++++++++ 3 files changed, 36 insertions(+), 4 deletions(-) diff --git a/htdocs/install/mysql/migration/3.0.0-3.1.0.sql b/htdocs/install/mysql/migration/3.0.0-3.1.0.sql index f55b8427ae9..170c9309e0c 100755 --- a/htdocs/install/mysql/migration/3.0.0-3.1.0.sql +++ b/htdocs/install/mysql/migration/3.0.0-3.1.0.sql @@ -27,10 +27,10 @@ ALTER TABLE llx_propal MODIFY model_pdf varchar(255); -- Delete old constants -DELETE FROM llx_const WHERE name = 'MAIN_MENU_BARRETOP'; -DELETE FROM llx_const WHERE name = 'MAIN_MENUFRONT_BARRETOP'; -DELETE FROM llx_const WHERE name = 'MAIN_MENU_BARRELEFT'; -DELETE FROM llx_const WHERE name = 'MAIN_MENUFRONT_BARRELEFT'; +DELETE FROM llx_const WHERE __DECRYPT('name')__ = 'MAIN_MENU_BARRETOP'; +DELETE FROM llx_const WHERE __DECRYPT('name')__ = 'MAIN_MENUFRONT_BARRETOP'; +DELETE FROM llx_const WHERE __DECRYPT('name')__ = 'MAIN_MENU_BARRELEFT'; +DELETE FROM llx_const WHERE __DECRYPT('name')__ = 'MAIN_MENUFRONT_BARRELEFT'; ALTER TABLE llx_facture_fourn ADD COLUMN ref_ext varchar(30) AFTER entity; ALTER TABLE llx_commande_fournisseur ADD COLUMN ref_ext varchar(30) AFTER entity; diff --git a/htdocs/install/upgrade.php b/htdocs/install/upgrade.php index 389f0b7559a..8bb4055c95d 100644 --- a/htdocs/install/upgrade.php +++ b/htdocs/install/upgrade.php @@ -107,6 +107,12 @@ if (! GETPOST("action") || preg_match('/upgrade/i',GETPOST('action'))) $conf->db->name = $dolibarr_main_db_name; $conf->db->user = $dolibarr_main_db_user; $conf->db->pass = $dolibarr_main_db_pass; + + // Load type and crypt key + if (empty($dolibarr_main_db_encryption)) $dolibarr_main_db_encryption=0; + $conf->db->dolibarr_main_db_encryption = $dolibarr_main_db_encryption; + if (empty($dolibarr_main_db_cryptkey)) $dolibarr_main_db_cryptkey=''; + $conf->db->dolibarr_main_db_cryptkey = $dolibarr_main_db_cryptkey; $db = new DoliDb($conf->db->type,$conf->db->host,$conf->db->user,$conf->db->pass,$conf->db->name,$conf->db->port); if ($db->connected == 1) diff --git a/htdocs/lib/admin.lib.php b/htdocs/lib/admin.lib.php index 7cff6d202c7..debfbcf04d7 100644 --- a/htdocs/lib/admin.lib.php +++ b/htdocs/lib/admin.lib.php @@ -218,6 +218,32 @@ function run_sql($sqlfile,$silent=1,$entity='',$usesavepoint=1,$handler='') // Ajout trace sur requete (eventuellement a commenter si beaucoup de requetes) if (! $silent) print '<tr><td valign="top">'.$langs->trans("Request").' '.($i+1)." sql='".$newsql."'</td></tr>\n"; dol_syslog('Admin.lib::run_sql Request '.($i+1).' sql='.$newsql, LOG_DEBUG); + + // Replace for encrypt data + if (preg_match_all('/__ENCRYPT\(\'([^\,]+)\'\)__/i',$newsql,$reg)) + { + $num=count($reg[0]); + + for($i=0;$i<$num;$i++) + { + $from = $reg[0][$i]; + $to = $db->encrypt($reg[1][$i],1); + $newsql = str_replace($from,$to,$newsql); + } + } + + // Replace for decrypt data + if (preg_match_all('/__DECRYPT\(\'([^\,]+)\'\)__/i',$newsql,$reg)) + { + $num=count($reg[0]); + + for($i=0;$i<$num;$i++) + { + $from = $reg[0][$i]; + $to = $db->decrypt($reg[1][$i]); + $newsql = str_replace($from,$to,$newsql); + } + } // Replace __x__ with rowid of insert nb x while (preg_match('/__([0-9]+)__/',$newsql,$reg)) -- GitLab