/var/www/doncode.com.ua/www/zed
NameSizeModeActions
css/-0755rm
js/-0755rm
.htaccess1260644editdlrm
difference.php354240644editdlrm
Edit: /var/www/doncode.com.ua/www/zed/difference.php (35424B)
'' AND `deleted`='0' ORDER BY `city_`.`city_name_ru` LIMIT 1000"; $res = db_query("SET NAMES 'UTF8'"); $res = db_query($sql); $dcc = db_fetch($res, MYSQLI_ASSOC); //print_r($dcc); //echo "1";exit; if(is_array($dcc)){ foreach($dcc as $k=>$v ){ $servers[] = array('host'=>$v['host'],'port'=>($v['port']!=0?$v['port']:80),'name'=>$v['taxi_name'], 'city_name_ru'=>$v['city_name_ru'],'ver'=>$v['ver'],'gid'=>$v['gid'] ); } foreach($servers as $k=>$vala){ $Name[$k] = $vala['name']; $serversByName[$k] = $vala['host']; $city_name_ru[$k] = $vala['city_name_ru']; } //ksort($serversByName,SORT_REGULAR ); } /* echo $sql; echo db_error(); print_r($servers); */ if(is_array($servers)){ // echo '
Текущая версия:
'; echo '
'; echo 'Эталон(TX):
'; echo ''; echo "\r\n\r\n"; echo '

'; echo "\r\n\r\n"; /* foreach($servers as $vala){ if($vala['host']==$_POST['rx']){$selected='selected';}else{$selected='';} echo ""; }*/ echo 'Обновить(RX):
'; echo ''; echo "\r\n\r\n"; echo ''; echo '

'; echo '

'; echo ' '; echo '


'; echo "\r\n\r\n"; } //редактрование файла исключений if(@$_REQUEST['cmd']=='show_notscan'){ $ctx1 = stream_context_create(array( 'http' => array( 'timeout' => 15 ) ) ); $notscan_url = 'https://'.$_REQUEST['host'] . "/dl/notscan.txt"; $notscan_txt = file_get_contents($notscan_url ,0,$ctx1); if($notscan_txt){ ?>
Используються только относительные пути.Без использования / в начале и конце. Каждое правило с новой строки.


$notscan_url "; } } if(!isset($_POST['submit'])){ exit(''); } $t0 = microtime(true); //error_reporting(E_ALL & ~E_NOTICE); //таймаут на запросы $ctx1 = stream_context_create(array( 'http' => array( 'timeout' => 15 ) ) ); $ctx2 = stream_context_create(array( 'http' => array( 'timeout' => 15 ) ) ); if($_POST['submit']=='Сравнить файлы'){ require_once(dirname(__FILE__).'/todo_class.php'); $notscanURL = 'https://'.$_POST['tx'].'/dl/notscan.txt'; $tx_url = 'https://'.$_POST['tx'].'/dl/fileinfo.php'; $rx_url = 'https://'.$_POST['rx'].'/dl/fileinfo.php?notscanURL='.urlencode($notscanURL); $json1 = @file_get_contents($tx_url,0,$ctx1); $json2 = @file_get_contents($rx_url,0,$ctx2); if($json1 !== false){ $len1 = strlen($json1); echo "TX: $tx_url
Получено $len1 byte

"; }else{ echo "TX: $tx_url
Ошибка получения файла c {$_POST['tx']}

"; } if($json2 !== false){ $len2 = strlen($json2); echo "RX: $rx_url
Получено $len2 byte

"; }else{ echo "RX: $rx_url
Ошибка получения файла c {$_POST['rx']}

"; } echo '
'; /* echo $json1; echo $json2; */ if($json1 !== false && $json2 !== false){ $filesInfo1 = json_decode($json1, true); $filesInfo2 = json_decode($json2, true); } echo "TX DECODE: "; if(is_array($filesInfo1)){ echo " ok
"; }else{ echo " err
"; } echo "RX DECODE: "; if(is_array($filesInfo2)){ echo " ok
"; }else{ echo " err
"; } echo '
'; if(is_array($filesInfo1) && is_array($filesInfo2)){ $search_todo = new search_todo(); $search_todo->debug = 1; $search_todo->ignoreLastDate = true; echo "TX найдено ".count($filesInfo1)." элементов
"; echo "RX найдено ".count($filesInfo2)." элементов
"; //print_r($filesInfo1); //print_r($filesInfo2); echo '
'; echo "Поиск различий..."; echo '
';
		$history = $search_todo->search_difference($filesInfo1, $filesInfo2);
		echo '
'; $count_new = count($history['new']); $count_chaged = count($history['chaged']); $count_deleded = count($history['deleded']); $count_nochaged = (count($filesInfo1)-($count_new+$count_chaged+$count_deleded)); $count_dateerr = 0; $count_sizeerr = 0; $count_datesizeerr = 0; //подсчет конфликтов foreach($history as $type => $fINFbyType){ foreach($fINFbyType as $k=>$arr){ if($arr['lastedit']<$arr['old']['lastedit'] && $arr['size']<$arr['old']['size']){ $count_datesizeerr++; }elseif($arr['lastedit']<$arr['old']['lastedit']){ $count_dateerr++; }elseif($arr['size']<$arr['old']['size']){ $count_sizeerr++; } } } echo " Новых $count_new
"; echo " Изменили $count_chaged
"; echo " Удалили $count_deleded
"; echo " Без изменений $count_nochaged

"; echo " Кофликты по дате и размеру $count_datesizeerr
"; echo " Кофликты по дате $count_dateerr
"; echo " Кофликты по размеру $count_sizeerr

"; echo "Будет изменено файлов
"; echo '
';
		//print_r($history);
		echo '
'; /* echo ''; echo ''; foreach($history['new'] as $k => $f){ echo ''; echo ""; echo ''; } echo ''; foreach($history['chaged'] as $k => $f){ echo ''; echo ""; echo ""; echo ''; } echo ''; foreach($history['deleded'] as $k => $f){ echo ''; echo ""; echo ''; } echo '

Новые

{$f['sfname']}

Изменили

{$f['sfname']}{$f['ышяу']}

Удалили

{$f['sfname']}
'; /*/ // echo '
';
		///Форматирование таблицы
		if(isset($history) && is_array($history)){
			//onsubmit="makepack(\''.$_POST['tx'].'\'); return false;"
			if($_POST['tx']=='192.168.1.243:80'){
				$_POST['tx'] = 'doncode.com.ua:8080';
			}			
			?>
			
'; echo ''; echo ''; echo ''; foreach($servers as $key => $val){ echo ''; echo ''; echo ''; } echo ''; //по дате $ccc = 0; echo ""; echo ''; echo ""; echo ""; echo ""; echo ""; echo "\r\n"; foreach($history as $type => $fINFbyType){ //echo " $date => $x"; //print_r($fINFbyType); //по элементам списка foreach($fINFbyType as $k=>$arr){ echo ""; $checkbox_clases = 'filesbox '; $checkbox_clases .= "{$type}box "; if($type !='deleded' ){ $checked = 'checked'; }else{ $checked = ''; } $sign = ''; $err = ''; //поиск конфликта if($arr['lastedit']<$arr['old']['lastedit'] && $arr['size']<$arr['old']['size']){ $err = 'дата и размер'; $checkbox_clases .= "datesizeboxerr "; }elseif($arr['lastedit']<$arr['old']['lastedit']){ $err = 'дата'; $checkbox_clases .= "dateboxerr "; }elseif($arr['size']<$arr['old']['size']){ $err = 'размер'; $checkbox_clases .= "sizeboxerr "; } echo ""; if(isset($arr['sfname'])){ echo ""; }else{ echo ""; } if(isset($arr['old']['size'])){ $razn = $arr['size'] - $arr['old']['size']; if($razn>0){$razn = '+'.$razn;} echo ""; }else{ echo ""; $razn = 0; } echo ""; echo ""; echo "\r\n"; //echo ""; } } //echo "
filenamesizelasteditКонфликты
{$arr['sfname']}{$arr['filename']}{$arr['size']}  $razn{$arr['size']}". date("H:i:s d-m-y",$arr['lastedit'])."$err
"; //echo "\r\n\r\n"; echo ''; echo '
'; //echo '
'; } } }elseif($_POST['submit']=='Сравнить базы'){ echo 'сравнение баз
'; $tx_url = 'https://'.$_POST['tx'].'/dl/fileinfo.php?cmd=dbinfo'; $rx_url = 'https://'.$_POST['rx'].'/dl/fileinfo.php?cmd=dbinfo'; $json1 = @file_get_contents($tx_url,0,$ctx1); $json2 = @file_get_contents($rx_url,0,$ctx2); if($json1 !== false){ $len1 = strlen($json1); echo "TX: $tx_url
Получено $len1 byte

"; }else{ echo "TX: $tx_url
Ошибка получения файла c {$_POST['tx']}

"; } if($json2 !== false){ $len2 = strlen($json2); echo "RX: $rx_url
Получено $len2 byte

"; }else{ echo "RX: $rx_url
Ошибка получения файла c {$_POST['rx']}

"; } if($json1 !== false && $json2 !== false){ $dbInfo1 = json_decode($json1, true); $dbInfo2 = json_decode($json2, true); }else{ exit; } echo "TX DECODE: "; if(is_array($dbInfo1)){ echo " ok
"; }else{ echo " err
"; } echo "RX DECODE: "; if(is_array($dbInfo2)){ echo " ok
"; }else{ echo " err
"; } echo '
'; //echo '
';
	//print_r($dbInfo1);
	
echo '
';	
//print_r($dbInfo1['INDEX'][123]);
//print_r($dbInfo1['CREATE']);
echo '
'; $TablesErrors = array(); $FieldsErrors = array(); $PoryadokErrors = array(); $ParamsErrors = array(); $IndexKeyErrors = array(); $UndefinedErrors = array(); $NoErrors = array(); foreach($dbInfo1['COLUMNS'] as $TableName=>$Fields){ //echo "$TableName
\r\n"; $err['table'] = $TableName; $err['field'] = ''; $err['param'] = ''; $err['txt'] = ''; $err['sql_fix'] = ''; $PoryadokInThisTable = true; //проверять порядок стобцов в данной таблицы if(!isset($dbInfo2['COLUMNS'][$TableName])){ $err['txt']= "нет данной таблицы "; $err['sql_fix'] = $dbInfo1['CREATE'][$TableName]; $TablesErrors[] = $err; }elseif($dbInfo1['CREATE'][$TableName]==$dbInfo2['CREATE'][$TableName]){ //полное совпадение //$err['txt'] = 'полное совпадение'; $NoErrors[] = $err; }else{ reset($dbInfo2['COLUMNS'][$TableName]); $befor_field = ''; foreach($Fields as $FieldName=>$field){ $err['field'] = $FieldName; $err['param'] = ''; if(!isset($dbInfo2['COLUMNS'][$TableName][$FieldName])){ $preg_sql_fix =''; preg_match("|`$FieldName` .+$|m", $dbInfo1['CREATE'][$TableName], $preg_sql_fix); $preg_sql_fix = trim($preg_sql_fix[0]); if(substr($preg_sql_fix,-1)==','){$preg_sql_fix = substr($preg_sql_fix,0, -1);} if($befor_field!=''){$AFTER = "AFTER `{$befor_field}`";}else{$AFTER='';} $err['sql_fix'] = "ALTER TABLE `$TableName` ADD $preg_sql_fix $AFTER"; $err['txt'] = "нет поля"; $FieldsErrors[] = $err; }else{ //проверять порядок стобцов в данной таблицы if($PoryadokInThisTable){ $e2key = key($dbInfo2['COLUMNS'][$TableName]); $e2val = current($dbInfo2['COLUMNS'][$TableName]); next($dbInfo2['COLUMNS'][$TableName]); if($e2key!=$FieldName){ $err['txt'] = "не соответствует порядое стобцов"; $PoryadokErrors[] = $err; $PoryadokInThisTable = false; } } foreach($field as $fieldParam=>$paramValue){ $err['param'] = $fieldParam; if($fieldParam == 'Key' && $dbInfo2['COLUMNS'][$TableName][$FieldName][$fieldParam]!=$paramValue){ if($paramValue=='PRI'){ $err['sql_fix'] = "ALTER TABLE `$TableName` ADD PRIMARY KEY ( `$FieldName` )"; }elseif($paramValue=='MUL'){ //$err['sql_fix'] = "ALTER TABLE `$TableName` ADD FULLTEXT ( `$FieldName` )"; $err['sql_fix'] = "ALTER TABLE `$TableName` ADD INDEX ( `$FieldName` )"; }elseif($paramValue=='UNI'){ $err['sql_fix'] = "ALTER TABLE `$TableName` ADD UNIQUE ( `$FieldName` )"; }else{ $err['sql_fix'] = "-- Не известный тип индекса"; } $err['txt'] = "Не хватает индекса. В эталоне '{$paramValue}', в получателе '{$dbInfo2['COLUMNS'][$TableName][$FieldName][$fieldParam]}'"; //
1:".var_export($dbInfo1['INDEX'][$TableName], true)."\r\n2:".var_export($dbInfo2['INDEX'][$TableName], true)."
";
							$IndexKeyErrors[] = $err;

						}elseif($dbInfo2['COLUMNS'][$TableName][$FieldName][$fieldParam]!=$paramValue){
							//echo "{$TableName}.{$FieldName} - нет соответствует парамет {$fieldParam}. В эталоне '{$paramValue}', в получателе '{$dbInfo2[$TableName][$FieldName][$fieldParam]}' 
\r\n"; $preg_sql_fix =''; preg_match("|`$FieldName`.+$|m", $dbInfo1['CREATE'][$TableName], $preg_sql_fix); $preg_sql_fix = trim($preg_sql_fix[0]); if(substr($preg_sql_fix,-1)==','){$preg_sql_fix = substr($preg_sql_fix,0, -1);} if($befor_field!=''){$AFTER = "AFTER `{$befor_field}`";}else{$AFTER='';} $err['sql_fix'] = "ALTER TABLE `$TableName` CHANGE `$FieldName` $preg_sql_fix $AFTER"; $err['txt'] = "В эталоне '{$paramValue}', в получателе '{$dbInfo2['COLUMNS'][$TableName][$FieldName][$fieldParam]}'"; $ParamsErrors[] = $err; //echo '
';
							//print_r($preg_sql_fix);
							//echo '
'; } } } $befor_field = $FieldName; } if($err['txt'] == ''){ //не известные ошибки $err['txt'] = 'Не известная ошибка'; $err['field'] = '-'; $err['param'] = '-'; $UndefinedErrors[] = $err; } } } echo "Таблицы эталон/получатель: ".count($dbInfo1['COLUMNS'])."/".count($dbInfo2['COLUMNS'])."
\r\n"; echo "Отсутствуют таблицы: ".count($TablesErrors)."
\r\n"; echo "Отсутствуют столбцы: ".count($FieldsErrors)."
\r\n"; echo "Не соответствует порядок стобцов: ".count($PoryadokErrors)."
\r\n"; echo "Не соответствуют параметры: ".count($ParamsErrors)."
\r\n"; echo "Не хватает ключа: ".count($IndexKeyErrors)."
\r\n"; echo "Не известные ошибки: ".count($UndefinedErrors)."
\r\n"; echo "Идентичные таблиц: ".count($NoErrors)."
\r\n
\r\n"; //class=\"tr_title\" echo ''; echo "\r\n"; echo "\r\n"; echo "\r\n"; echo "\r\n"; echo "\r\n"; echo "\r\n"; echo "\r\n"; echo "\r\n"; if(is_array($TablesErrors)){ foreach($TablesErrors as $ERR_KEY=>$ERR){ echo "\r\n"; echo ""; echo "\r\n"; echo "\r\n"; echo "\r\n"; echo "\r\n"; echo "\r\n"; echo "\r\n"; //
{$ERR['sql_fix']}
} } if(is_array($UndefinedErrors)){ foreach($UndefinedErrors as $ERR_KEY=>$ERR){ echo "\r\n"; echo "\r\n"; echo "\r\n"; echo "\r\n"; echo "\r\n"; echo "\r\n"; echo "\r\n"; echo "\r\n"; } } if(is_array($FieldsErrors)){ foreach($FieldsErrors as $ERR_KEY=>$ERR){ echo "\r\n"; echo "\r\n"; echo "\r\n"; echo "\r\n"; echo "\r\n"; echo "\r\n"; echo "\r\n"; echo "\r\n"; } } if(is_array($PoryadokErrors)){ foreach($PoryadokErrors as $ERR_KEY=>$ERR){ echo "\r\n"; echo "\r\n"; echo "\r\n"; echo "\r\n"; echo "\r\n"; echo "\r\n"; echo "\r\n"; echo "\r\n"; } } if(is_array($ParamsErrors)){ foreach($ParamsErrors as $ERR_KEY=>$ERR){ echo "\r\n"; echo "\r\n"; echo "\r\n"; echo "\r\n"; echo "\r\n"; echo "\r\n"; echo "\r\n"; echo "\r\n"; } } if(is_array($IndexKeyErrors)){ foreach($IndexKeyErrors as $ERR_KEY=>$ERR){ echo "\r\n"; echo "\r\n"; echo "\r\n"; echo "\r\n"; echo "\r\n"; echo "\r\n"; echo "\r\n"; echo "\r\n"; } } if(is_array($NoErrors)){ foreach($NoErrors as $ERR_KEY=>$ERR){ echo "\r\n"; echo "\r\n"; echo "\r\n"; echo "\r\n"; echo "\r\n"; echo "\r\n"; echo "\r\n"; echo "\r\n"; } } echo "
ТаблицыСтолбецСвойствоОписаниеFIX
{$ERR['table']}{$ERR['field']}{$ERR['param']}{$ERR['txt']}СОЗДАТЬ |показать создание
{$ERR['table']}{$ERR['field']}{$ERR['param']}{$ERR['txt']}показать создание
{$ERR['table']}{$ERR['field']}{$ERR['param']}{$ERR['txt']}ALTER | показать создание
{$ERR['table']}{$ERR['field']}{$ERR['param']}{$ERR['txt']}ALTER | показать создание
{$ERR['table']}{$ERR['field']}{$ERR['param']}{$ERR['txt']}ALTER | показать создание
{$ERR['table']}{$ERR['field']}{$ERR['param']}{$ERR['txt']}ADD KEY | показать создание
{$ERR['table']} OK
"; //echo '
'; ?>