$fItem) { $between=explode(strtolower($fItem),strtolower($string)); $pos=0; foreach ($between as $bKey=>$bItem) { $between[$bKey]=substr($string,$pos,strlen($bItem)); $pos+=strlen($bItem) + strlen($fItem); } $string=implode($replace[$fKey],$between); } return ( $string ); } } if (!function_exists('stripos')) // borrowed from php.net comments { function stripos($haystack, $needle) { return strpos($haystack,stristr($haystack,$needle)); } } function Help($ToolTip, $Anker, $imgsize=12) {/* global $config; if($Anker!=""){ return ''; } else { return ''; } */ } function DeleteFilesM($dir, $pattern="*.*") { $deleted=array(); $pattern=str_replace(array( "\*", "\?" ),array( ".*", "." ),preg_quote($pattern)); if (substr($dir,-1) != "/") $dir.="/"; if (is_dir($dir)) { $d=opendir($dir); while ($file=readdir($d)) { if (is_file($dir . $file) && ereg("^" . $pattern . "$",$file)) { if (unlink($dir . $file)) $deleted[$file]=true; else $deleted[$file]=false; } } closedir($d); return $deleted; } } function SetDefault($load_default=false) { global $config,$databases,$nl,$out,$lang,$preConfig; if ($load_default == true) { if (file_exists($config['files']['parameter']) && ( is_readable($config['files']['parameter']) )) include ( $config['files']['parameter'] ); // alte Config lesen } $restore_values=array(); $restore_values['cron_dbindex']=isset($config['cron_dbindex']) ? $config['cron_dbindex'] : -3; $restore_values['cron_dbpraefix_array']=isset($config['cron_dbpraefix_array']) ? $config['cron_dbpraefix_array'] : ''; if ($restore_values['cron_dbindex'] >= 0 && isset($databases['Name'][$config['cron_dbindex']])) // eine bestimmte Db gewaehlt? { // Ja, Namen merken, um spaeter den Index wieder herzustellen $restore_values['db_actual_cron']=$databases['Name'][$config['cron_dbindex']]; } $restore_values['db_actual']=isset($databases['db_actual']) ? $databases['db_actual'] : ''; //Arrays löschen $i=0; $databases['Name']=Array(); $old_lang=isset($config['language']) && in_array($config['language'],$lang['languages']) ? $config['language'] : ''; if ($load_default == true) { if (file_exists($config['files']['parameter'])) @unlink($config['files']['parameter']); include ( "./config.php" ); if (is_array($preConfig)) { foreach ($preConfig as $key=>$val) { $config[$key]=$val; } } if ($old_lang != '') $config['language']=$old_lang; include ( "./language/" . $config['language'] . "/lang.php" ); } //DB-Liste holen MSD_mysql_connect(); $create_statement='CREATE TABLE `mysqldumper_test_abcxyvfgh` (`test` varchar(200) default NULL, `id` bigint(20) unsigned NOT NULL auto_increment,' . 'PRIMARY KEY (`id`)) TYPE=MyISAM;'; $res=mysql_query("SHOW DATABASES ;",$config['dbconnection']); if (!$res === false) { $numrows=mysql_numrows($res); $a=0; for ($i=0; $i < $numrows; $i++) { $row=mysql_fetch_row($res); $found_db=$row[0]; // Testverbindung - Tabelle erstellen, nachschauen, ob es geklappt hat und dann wieder löschen $use=@mysql_select_db($found_db); if ($use) { $res2=mysql_query("DROP TABLE IF EXISTS `mysqldumper_test_abcxyvfgh`",$config['dbconnection']); $res2=mysql_query($create_statement,$config['dbconnection']); if (!$res2 === false) { $res2=mysql_query("DROP TABLE IF EXISTS `mysqldumper_test_abcxyvfgh`",$config['dbconnection']); if (isset($old_db) && $found_db == $old_db) $databases['db_selected_index']=$a; $databases['Name'][$a]=$found_db; $databases['praefix'][$a]=""; $databases['command_before_dump'][$a]=""; $databases['command_after_dump'][$a]=""; $out.=$lang['L_SAVING_DB_FORM'] . " " . $found_db . " " . $lang['L_ADDED'] . "$nl"; $a++; } } } if (!isset($databases['db_selected_index'])) { $databases['db_selected_index']=0; $databases['db_actual']=$databases['Name'][0]; } } WriteParams(1,$restore_values); if ($load_default === true) WriteLog("default settings loaded."); return $out; } function WriteParams($as=0, $restore_values=false) { // wenn $as=1 wird versucht den aktuellen Index der Datenbank nach dem Einlesen wieder zu ermitteln // auch wenn sich die Indexnummer durch Loeschaktionen geaendert hat global $config,$databases,$config_dontsave; $nl="\n"; // alte Werte retten if ($as) { if (is_array($restore_values)) { if ($restore_values['cron_dbindex'] < 0) { // Multidump oder "alle Datenbanken" war gewaehlt $config['cron_dbindex']=$restore_values['cron_dbindex']; } else { //den Index der konkreten Datenbank aus der alten Konfiguration ermitteln $db_names=array(); $db_names=array_flip($databases['Name']); if (isset($db_names[$restore_values['db_actual']])) { // alte Db existiert noch -> Index uebernehmen $databases['db_actual']=$restore_values['db_actual']; } else $databases['db_actual']=$databases['Name'][0]; //Cron-Index wiederfinden if (isset($db_names[$restore_values['cron_dbindex']])) { $config['cron_dbindex']=$db_names[$restore_values['cron_dbindex']]; } else { // DB wurde zwischenzeitlich geloescht - sicherheitshalber alle DBs sichern $databases['cron_dbindex']=-3; } } } } FillMultiDBArrays(); check_manual_dbs(); //Parameter zusammensetzen $config['multipart_groesse']=$config['multipartgroesse1'] * ( ( $config['multipartgroesse2'] == 1 ) ? 1024 : 1024 * 1024 ); $param=$pars_all='$val) { if (!in_array($var,$config_dontsave)) { if (is_array($val)) { $pars_all.='$config[\'' . $var . '\']=array();' . $nl; foreach ($val as $var2=>$val2) { if ($config['magic_quotes_gpc'] == 1) { $val2=stripslashes($val2); } $pars_all.='$config[\'' . $var . '\'][' . ( ( is_int($var2) ) ? $var2 : "'" . $var2 . "'" ) . '] = \'' . my_addslashes($val2) . "';$nl"; } } else { if ($config['magic_quotes_gpc'] == 1) { $val=stripslashes($val); } if (!in_array($var,$config_dontsave)) $pars_all.='$config[\'' . $var . '\'] = \'' . my_addslashes($val) . "';$nl"; } } } foreach ($databases as $var=>$val) { if (is_array($val)) { $pars_all.='$databases[\'' . $var . '\']=array();' . $nl; foreach ($val as $var2=>$val2) { if ($config['magic_quotes_gpc'] == 1 || $as == 1) { $pars_all.='$databases[\'' . $var . '\'][' . ( ( is_int($var2) ) ? $var2 : "'" . $var2 . "'" ) . '] = \'' . my_addslashes(stripslashes($val2)) . "';$nl"; } else { $pars_all.='$databases[\'' . $var . '\'][' . ( ( is_int($var2) ) ? $var2 : "'" . $var2 . "'" ) . '] = \'' . my_addslashes($val2) . "';$nl"; } } } else { if ($config['magic_quotes_gpc'] == 0 || $as == 1) { $pars_all.='$databases[\'' . $var . '\'] = \'' . addslashes($val) . "';$nl"; } else { $pars_all.='$databases[\'' . $var . '\'] = \'' . $val . "';$nl"; } } } $param.='?>'; $pars_all.='?>'; //Datei öffnen und schreiben $ret=true; $file=$config['paths']['config'] . $config['config_file'] . '.php'; if ($fp=fopen($file,"wb")) { if (!fwrite($fp,$pars_all)) $ret=false; if (!fclose($fp)) $ret=false; @chmod($file,0777); } else $ret=false; $ret=WriteCronScript($restore_values); return $ret; } function escape_specialchars($text) { $suchen=ARRAY( '@', '$', '\\\\', '"' ); $ersetzen=ARRAY( '\@', '\$', '\\', '\"' ); $text=str_replace($suchen,$ersetzen,$text); return $text; } // definiert einen SAtring, der ein Array nach Perlsyntax aufbaut function my_implode($arr, $mode=0) // 0=String, 1=intval { global $nl; if (!is_array($arr)) return false; foreach ($arr as $key=>$val) { if ($mode == 0) $arr[$key]=escape_specialchars($val); else $arr[$key]=intval($val); } if ($mode == 0) $ret='("' . implode('","',$arr) . '");' . $nl; else $ret='(' . implode(',',$arr) . ');' . $nl; return $ret; } function WriteCronScript($restore_values=false) { global $nl,$config,$databases,$cron_db_array,$cron_dbpraefix_array,$cron_db_cbd_array,$cron_db_cad_array; if (!isset($databases['db_selected_index'])) $databases['db_selected_index']=0; if (!isset($databases['praefix'][$databases['db_selected_index']])) $databases['praefix'][$databases['db_selected_index']]=""; if (!isset($databases['db_actual_cronindex'])) $databases['db_actual_cronindex']=$databases['db_selected_index']; if (!isset($config['email_maxsize'])) $config['email_maxsize']=$config['email_maxsize1'] * ( ( $config['email_maxsize2'] == 1 ) ? 1024 : 1024 * 1024 ); $cron_dbname=$databases['db_actual']; //v($databases); // -2 = Multidump configuration // -3 = all databases - nothing to do // get standard values for all databases $cron_db_array=$databases['Name']; $cron_dbpraefix_array=$databases['praefix']; $cron_command_before_dump=$databases['command_before_dump']; $cron_command_after_dump=$databases['command_after_dump']; if (!isset($config['cron_dbindex'])) $config['cron_dbindex']=-3; if (intval($config['cron_dbindex']) == -2) { // get values from multidump-settings $cron_db_array=$databases['multi']; $cron_dbpraefix_array=$databases['multi_praefix']; $cron_command_before_dump=$databases['multi_commandbeforedump']; $cron_command_after_dump=$databases['multi_commandafterdump']; } $r=str_replace("\\\\","/",$config['paths']['root']); $r=str_replace("@","\@",$r); $p1=$r . $config['paths']['backup']; $p2=$r . $config['files']['perllog'] . ( ( $config['logcompression'] == 1 ) ? '.gz' : '' ); $p3=$r . $config['files']['perllogcomplete'] . ( ( $config['logcompression'] == 1 ) ? '.gz' : '' ); // auf manchen Server wird statt 0 ein leerer String gespeichert -> fuehrt zu einem Syntax-Fehler // hier die entsprechenden Ja/Nein-Variablen sicherheitshalber in intvalues aendern $int_array=array( 'dbport', 'cron_compression', 'cron_printout', 'multi_part', 'multipart_groesse', 'email_maxsize', 'auto_delete', 'max_backup_files', 'perlspeed', 'optimize_tables_beforedump', 'logcompression', 'log_maxsize', 'cron_completelog', 'cron_use_sendmail', 'cron_smtp_port' ); foreach ($int_array as $i) { if (is_array($i)) { foreach ($i as $key=>$val) { $int_array[$key]=intval($val); } } else $config[$i]=intval($config[$i]); } if ($config['dbport'] == 0) $config['dbport']=3306; $cronscript=""; // Save config $ret=true; $sfile=$config['paths']['config'] . $config['config_file'] . '.conf.php'; if (file_exists($sfile)) @unlink($sfile); if ($fp=fopen($sfile,"wb")) { if (!fwrite($fp,$cronscript)) $ret=false; if (!fclose($fp)) $ret=false; @chmod("$sfile",0777); } else $ret=false; // if standard config was deleted -> restore it with the actual values if (!file_exists($config['paths']['config'] . "mysqldumper.conf.php")) { $sfile=$config['paths']['config'] . 'mysqldumper.conf.php'; if ($fp=fopen($sfile,"wb")) { if (!fwrite($fp,$cronscript)) $ret=false; if (!fclose($fp)) $ret=false; @chmod("$sfile",0777); } else $ret=false; } return $ret; } function LogFileInfo($logcompression) { global $config; $l=Array(); $sum=$s=$l['log_size']=$l['perllog_size']=$l['perllogcomplete_size']=$l['errorlog_size']=$l['log_totalsize']=0; if ($logcompression == 1) { $l['log']=$config['files']['log'] . ".gz"; $l['perllog']=$config['files']['perllog'] . ".gz"; $l['perllogcomplete']=$config['files']['perllogcomplete'] . ".gz"; $l['errorlog']=$config['paths']['log'] . "error.log.gz"; } else { $l['log']=$config['files']['log']; $l['perllog']=$config['files']['perllog']; $l['perllogcomplete']=$config['files']['perllogcomplete']; $l['errorlog']=$config['paths']['log'] . "error.log"; } $l['log_size']+=@filesize($l['log']); $sum+=$l['log_size']; $l['perllog_size']+=@filesize($l['perllog']); $sum+=$l['perllog_size']; $l['perllogcomplete_size']+=@filesize($l['perllogcomplete']); $sum+=$l['perllogcomplete_size']; $l['errorlog_size']+=@filesize($l['errorlog']); $sum+=$l['errorlog_size']; $l['log_totalsize']+=$sum; return $l; } function DeleteLog() { global $config; //Datei öffnen und schreiben $log=date('d.m.Y H:i:s') . " Log created.\n"; if (file_exists($config['files']['log'] . '.gz')) @unlink($config['files']['log'] . '.gz'); if (file_exists($config['files']['log'] . '.gz')) @unlink($config['files']['log']); if ($config['logcompression'] == 1) { $fp=@gzopen($config['files']['log'] . '.gz',"wb"); @gzwrite($fp,$log); @gzclose($fp); @chmod($config['files']['log'] . '.gz',0777); } else { $fp=@fopen($config['files']['log'],"wb"); @fwrite($fp,$log); @fclose($fp); @chmod($config['files']['log'],0777); } } function CreateDirsFTP() { global $config,$lang,$install_ftp_server,$install_ftp_port,$install_ftp_user_name,$install_ftp_user_pass,$install_ftp_path; // Herstellen der Basis-Verbindung echo '