скрипт за взимане на банове от бан-списъци

Всичко свързано с GM/AMXBans - Помощ/Инсталация/Поддръжка
Аватар
mount4
Извън линия
Потребител
Потребител
Мнения: 187
Регистриран на: 03 Ное 2016, 19:54
Местоположение: Варна
Обратна връзка:

скрипт за взимане на банове от бан-списъци

Мнение от mount4 » 04 Дек 2016, 11:41

Здравейте,

хрумна ми идея и написах скрипт който взима всички баннати по STEAM_ID от различните бан-листи които открих в google като написах "AMXBans банлист" (няма как да им взима ip-тата защото някъде са скрити а по име хем е наполовина добре, хем нестава защото AMXBans няма такава функционалност):

Код за потвърждение: Избери целия код

	'bans./// Блокиран текст/линк [НЕЖЕЛАН САЙТ] ///',
	'cs.4vendeta.com/banlist',
	'mazeto.org/amxbans',
	'www.born2kill.tk/banlist',
	'csmegagaming.com/bans',
	'www.cs-digitalgaming.info/Web',
	'cs-gines.info/bans',
	'cs-gines.info/banlist',
	'agrarzonegaming.eu/bans',
	'www.bulletplay.net/ban',
	'brutal-servers.info/web/bans',
	'csbulgaria.eu/bans',
	'www.omonas.com/amxbans',
	'banlist.cs-bulgaria.com'
Скрипта ги добавя в базата от данни на вашия AMXBans и това ще намали броя на хакерите влизащи във вашия сървър!
steal.png
steal.png (4.39 KiB) Преглеждано 6724 пъти
steal.png
steal.png (4.39 KiB) Преглеждано 6724 пъти
Ето тук може да видите моята банлиста напълнена от /// Блокиран текст/линк [НЕЖЕЛАН САЙТ] /// -> http://bans.mnml-mn.ml/

Ето го и скрипта, писах го на php: ( http://bans.mnml-mn.ml/bans2.txt )

Код за потвърждение: Избери целия код

<?php

/* --------------------------------------------
       CONFIG HERE
--------------------------------------------- */

$steal_from = array(

	'bans./// Блокиран текст/линк [НЕЖЕЛАН САЙТ] ///',
	'cs.4vendeta.com/banlist',
	'mazeto.org/amxbans',
	'www.born2kill.tk/banlist',
	'csmegagaming.com/bans',
	'www.cs-digitalgaming.info/Web',
	'cs-gines.info/bans',
	'cs-gines.info/banlist',
	'agrarzonegaming.eu/bans',
	'www.bulletplay.net/ban',
	'brutal-servers.info/web/bans',
	'csbulgaria.eu/bans',
	'www.omonas.com/amxbans',
	'banlist.cs-bulgaria.com'

	);

$db_host = 'localhost';
$db_usr = 'user here';
$db_pwd = 'password here';
$db_prefix = 'amx';

/* --------------------------------------------
       END OF CONFIG
--------------------------------------------- */

echo $nl = "\n";
$start = microtime( true );

set_time_limit(0);

//error_reporting( E_ERROR | E_PARSE | E_NOTICE );
error_reporting( E_ALL );
ini_set( 'display_errors', '1' );

( $db = mysql_connect ( $db_host, $db_usr, $db_pwd ) ) or die( 'msqlerr: ' . mysql_error( $db ) );
mysql_select_db ( 'amxbans', $db ) or die( 'msqlerr: ' . mysql_error( $db ) );
mysql_query ( 'SET NAMES UTF8', $db );

foreach($steal_from as $v)
{
	$i = 1;
	$first_date = '';
	$date_changed = false;
	$while = true;
	//$times = array();
	$user_msg = false;

	while($while)
	{
		system('clear');
		
		echo '-----------------------------------------------------------'.$nl;
		echo '      Welcome to mount4 AMXBans bans Stealer               '.$nl;
		echo '-----------------------------------------------------------'.$nl;
		echo '                                                           :'.$nl;
		echo "Stealing from -> $v                                        :$nl";
		echo "Stealing page -> $i                                        :";
		echo '                                                           :'.$nl;
		echo '-----------------------------------------------------------'.$nl;
		echo '                                                           :'.$nl;
		echo '                                                           :'.$nl;
		echo '                                                           :'.$nl;
		echo '                                                           :'.$nl;
		echo '                                                           :'.$nl;
		
		$c = curl_init( 'http://'. $v .'/ban_list.php?site='. $i );

		curl_setopt( $c, CURLOPT_HTTPHEADER, array( 'Host: '. $v ) );
		curl_setopt( $c, CURLOPT_REFERER, 'http://'. $v );
		curl_setopt( $c, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13' );
		curl_setopt( $c, CURLOPT_RETURNTRANSFER, 1 );
		curl_setopt( $c, CURLOPT_FOLLOWLOCATION, 1 );

		( $html = curl_exec( $c ) ) or die( curl_error( $c ) );
		//$status = curl_getinfo( $c, CURLINFO_HTTP_CODE );
		//echo curl_getinfo( $c, CURLINFO_HTTP_CODE );

		curl_setopt( $c, CURLOPT_FOLLOWLOCATION, 0 );
		curl_setopt( $c, CURLOPT_HTTPGET, true );

		( $html = curl_exec( $c ) ) or die( curl_error( $c ) );
		//$status = curl_getinfo( $c, CURLINFO_HTTP_CODE );

		$doc = new DOMDocument();
		libxml_use_internal_errors( true );
		//$html = '<?xml encoding="UTF-8">' . substr( $html, strpos( $html, '<div id="allEntries">' ) );

		$html = explode('<!-- Banlist -->', $html);
		$html = '<table>'.$html[1];
		$html = explode('<!-- Banlist end -->', $html);
		$html = $html[0] .'</table>';
		
		$html = str_replace('&nbsp;', ' ', $html);

		//$html = str_replace('</body>','',$html);
		$doc->loadHTML( '<?xml encoding="UTF-8"><html><body>'. $html .'</body></html>' );

		foreach( $doc->getElementsByTagName('form') as $f )
		{
			if($f->getAttribute('name') == 'details' && $f->getAttribute('method') == 'POST')
			{
				$trs = $f->getElementsByTagName('tr');
				
				$tds = $trs->item(0)->getElementsByTagName('td');
				$trss = $trs->item(1)->getElementsByTagName('tr');
				
				//echo $trss->item(1)->getElementsByTagName('td')->item(1)->nodeValue;
				$ii = 0;
				while(1)
				{
					if(!$trss->item($ii))
						break;
					
					$tdss = $trss->item($ii)->getElementsByTagName('td');
					
					if($tdss->item(0)->nodeValue == 'Баннат в')
						$server = mysql_real_escape_string(trim( $tdss->item(1)->nodeValue ));
					else if($tdss->item(0)->nodeValue == 'SteamID')
						$steamid = mysql_real_escape_string(trim( $tdss->item(1)->nodeValue ));
					
					$ii++;
				}
				
				/*
				$steam_tds = $trss->item(2)->getElementsByTagName('td');
				
				if( $steam_tds->item(0)->nodeValue != 'SteamID' )
					continue;
				
				$steamid = mysql_real_escape_string( trim($steam_tds->item(1)->nodeValue) );
				*/
				
				//echo $steamid . $nl;
				
				$date = $tds->item(1)->nodeValue;
				//$date = mysql_real_escape_string(trim( $tds->item(1)->nodeValue ));
				//$date = strtotime($date);
				
				$hacker = $tds->item(2)->nodeValue;
				
				$name = mysql_real_escape_string(trim( $hacker ));
				$admin = mysql_real_escape_string(trim( $tds->item(3)->nodeValue ));
				$reason = mysql_real_escape_string(trim( $tds->item(4)->nodeValue ));
				
				$time = trim($tds->item(5)->nodeValue);
				$kicks = $tds->item(8)->nodeValue;
				
				/*if($name == 'bgbg204')
				{
					print_r(array($name, $date, $steamid, $admin, $reason, $time, $kicks));
				}*/
				
				if($first_date == '')
				{
					$first_date = $date;
				}
				else if($date != $first_date && !$date_changed)
				{
					$date_changed = true;
				}
				else if($date_changed && $date == $first_date)
				{
					$while = false;
					break;
				}
				
				if($while)
				{
					$ban_length = 10;
					
					//if(rawurlencode($time) == rawurlencode('завинаги'))
					if($time == 'завинаги')
					{
						$ban_length = 60 * 24 * 7 * 31 * 12;
					}
					else
					{
						$time = explode(' ', $time);
						
						if($time[1] == 'минута' or $time[1] == 'минути')
							$ban_length = $time[0];
						else if($time[1] == 'час' or $time[1] == 'часа')
							$ban_length = $time[0] * 60;
						else if($time[1] == 'ден' or $time[1] == 'дни')
							$ban_length = $time[0] * 60 * 24;
						else if($time[1] == 'седмица' or $time[1] == 'седмици')
							$ban_length = $time[0] * 60 * 24 * 7;
						else if($time[1] == 'месец' or $time[1] == 'месеца')
							$ban_length = $time[0] * 60 * 24 * 7 * 31;
						else if($time[1] == 'година' or $time[1] == 'години')
							$ban_length = $time[0] * 60 * 24 * 7 * 31 * 12;
						
						if($time[1] == 'година' or $time[1] == 'години')
						{
							echo 'Exe tos e bannat za baq dulgo wreme: '. $time[0] .' '. $time[1] . $nl;
							echo "hacker: $name admin: $admin prichina: $reason$nl";
						}
						
						//if(!in_array($time[1], $times))
						//	$times[] = $time[1];
					}

					//validate the input
					if($steamid) if(!preg_match("/^STEAM_(0|1|2|3|4|5):(0|1):[0-9]{1,10}$/",$steamid)) $user_msg="_STEAMIDINVALID";
					if(!$name) $user_msg="_NOBANNAME";
					if(!$steamid) $user_msg="_NOBANSTEAMID";
					
					//disables sql writing
					//$user_msg = true;
					
					//check if an activ ban exists
					if(!$user_msg)
					{
						$q = mysql_query("SELECT * FROM `". $db_prefix ."_bans` WHERE `player_id`='$steamid' AND `expired`=0");

						if(!mysql_num_rows($q))
							mysql_query("INSERT INTO `". $db_prefix ."_bans` (`player_ip`,`player_id`,`player_nick`,`admin_nick`,`admin_id`,`ban_type`,`ban_reason`,`ban_created`,`ban_length`,`server_name`) VALUES ('','".$steamid."','".$name."','".$admin."','','S','".$reason."',UNIX_TIMESTAMP(),'".$ban_length."','$server')") or die (mysql_error());
					}
					
				}

			}
		}

		$i++;
	}
}

//print_r($times);
	
curl_close( $c );
mysql_close( $db );

$time_taken = microtime(true) - $start;
echo $nl . $time_taken . $nl;

?>

94.190.190.195:27015 -> Изображение <-- Runemod here !
94.190.190.195:27017 -> Изображение

Segmentation fault Изображение <-- Opera browser !

Аватар
hackera457
Извън линия
Потребител
Потребител
Мнения: 768
Регистриран на: 01 Ное 2016, 09:46
Местоположение: София
Се отблагодари: 1 път
Получена благодарност: 124 пъти
Обратна връзка:

Re: скрипт за взимане на банове от бан-списъци

Мнение от hackera457 » 05 Дек 2016, 01:16

  • * Кодът не е твой, а си го копирал от някъде
    * Бас ловя, че не знаеш cURL за какво се ползва както и как се взима информация с cURL
    * Този, който е правил попринцип кода си няма хабер представа от PHP и от принципите на процедурния код
Да не изреждам други неща. Това е неграмотно написан код, пълен с грешки и абсурди, които не можеш да си представиш. Не препоръчвам да го ползвате
Моите плъгини

Код за потвърждение: Избери целия код

#include <hambeer>

RegisterHamBeer(HamBeer_Spawn, "player", "GivePlayerBeer", 1);

public GivePlayerBeer(Pl){
    if(!is_user_alive(Pl)){
        ham_give_beer(Pl, 5)
        client_print(Pl, print_chat, "Go Go Go"){
}  


Аватар
mount4
Извън линия
Потребител
Потребител
Мнения: 187
Регистриран на: 03 Ное 2016, 19:54
Местоположение: Варна
Обратна връзка:

Re: скрипт за взимане на банове от бан-списъци

Мнение от mount4 » 05 Дек 2016, 08:06

Мой е кода а curl e "web browser" за линукс и php. Бас държа че ти туко що научи какво е curl.

Като не е мой намери откъде съм го копирал! Бас държа че няма да намериш такъв код.

Информация с curl се взима както е в кода и това не е някаква философия а нещо елементарно! Мога да ти кажа че много отдавна, още преди няколко години съм писал такъв скрипт за баща ми който взема продукти от онлайн магазин като дори се логва с име и парола (дилърски акаунт) и пълни Mysql-а на друг онлайн магазин с Opencart -> http://mmcenter.bg/ . Ако не вярваш ето публикувам кода и всъщност това доказва че горния код е мой /!\ (виждат се доста неща които съвпадат в двата кода като единствено се различава това че преди писах "{" на същия ред а сега ми харесва повече на нов):

Код за потвърждение: Избери целия код

#!/usr/bin/php

<?php

require_once( 'conf.php' );
require_once( 'mmc_functions.php' );

require_once( 'logging.php' );

$nl = "\n";
$start = microtime( true );

//foreach( array() as $v ) mmc_backup_table( DB_USR, DB_PWD, DB_NAME, $v, '/home/mmc/backups/'. $v .'_'. date( 'dmY-His' ) .'.sql' );
( $link = mysql_connect( 'localhost', DB_USR, DB_PWD ) ) or die( '1msqlerr: ' . mysql_error( $link ) );
mysql_select_db ( DB_NAME, $link ) or die( '2msqlerr: ' . mysql_error( $link ) );
mysql_query ( 'SET NAMES UTF8', $link );

/*_*/

// debug configuration
//

$start_from = 0;

//error_reporting( E_ERROR | E_PARSE | E_NOTICE );
error_reporting( E_ALL );
ini_set( 'display_errors', '1' );

mb_internal_encoding( 'UTF-8' );
libxml_use_internal_errors( true );

$log = new Logging( 'bot_dbp_log.txt' );

$log->lwrite('');
$log->lwrite('----------');
$log->lwrite('');
$log->lwrite('script started..');
$log->lwrite('');

/*_*/

/*
mysql_query( 'TRUNCATE TABLE `oc_product`', $link ) or die( 'msqlerr: ' . mysql_error( $link ) );
mysql_query( 'TRUNCATE TABLE `oc_product_description`', $link ) or die( 'msqlerr: ' . mysql_error( $link ) );
mysql_query( 'TRUNCATE TABLE `oc_product_to_category`', $link ) or die( 'msqlerr: ' . mysql_error( $link ) );
mysql_query( 'TRUNCATE TABLE `oc_product_to_store`', $link ) or die( 'msqlerr: ' . mysql_error( $link ) );
mysql_query( 'TRUNCATE TABLE `oc_product_image`', $link ) or die( 'msqlerr: ' . mysql_error( $link ) );
mysql_query( 'TRUNCATE TABLE `oc_product_attribute`', $link ) or die( 'msqlerr: ' . mysql_error( $link ) );
mysql_query( 'TRUNCATE TABLE `oc_product_special`', $link ) or die( 'msqlerr: ' . mysql_error( $link ) );
*/
/*
mysql_query( 'TRUNCATE TABLE `oc_attribute`' );
mysql_query( 'TRUNCATE TABLE `oc_attribute_group`' );
mysql_query( 'TRUNCATE TABLE `oc_attribute_description`' );
mysql_query( 'TRUNCATE TABLE `oc_attribute_group_description`' );
mysql_query( 'INSERT INTO `oc_attribute_group` VALUES( 1, 0 );', $link ) or die( 'msqlerr: ' . mysql_error( $link ) );
$attr_gr_name = rawurldecode( '%D0%A5%D0%B0%D1%80%D0%B0%D0%BA%D1%82%D0%B5%D1%80%D0%B8%D1%81%D1%82%D0%B8%D0%BA%D0%B8' );
mysql_query( 'INSERT INTO `oc_attribute_group_description` VALUES( 1, 1, \''. $attr_gr_name .'\' );', $link ) or die( 'msqlerr: ' . mysql_error( $link ) );
mysql_query( 'INSERT INTO `oc_attribute_group_description` VALUES( 1, 2, \''. $attr_gr_name .'\' );', $link ) or die( 'msqlerr: ' . mysql_error( $link ) );
*/

$prod_i = 0;

$larr = array('-', '\\', '|', '/');
$li = 0;

$manfs = array();
$subs = array();

$cids = array();

$last_pid = 0;
$prods = array();

$db_attrs = array();
$prod_attrs = array();

$prod_spec = array();

$rr = mysql_query( 'SELECT manufacturer_id, name FROM `oc_manufacturer`', $link ) or die( '3msqlerr: ' . mysql_error( $link ) );
while( $row = mysql_fetch_assoc( $rr ) ) $manfs[ $row[ 'name' ] ] = $row[ 'manufacturer_id' ];

$rr = mysql_query( 'SELECT c.parent_id, cd.category_id, cd.name FROM oc_category c, oc_category_description cd WHERE c.category_id = cd.category_id AND c.parent_id <> 0 AND cd.language_id = 2', $link ) or die( '4msqlerr: ' . mysql_error( $link ) );
while( $row = mysql_fetch_assoc( $rr ) ) { $subs[ $row[ 'category_id' ] ] = $row[ 'name' ]; $cids[ $row[ 'category_id' ] ] = $row[ 'parent_id' ]; }

//$rr = mysql_query( 'SELECT p.product_id, p.model FROM oc_product p', $link ) or die( 'msqlerr: ' . mysql_error( $link ) );
//while( $row = mysql_fetch_assoc( $rr ) ) { $prods[ $row[ 'model' ] ] = $row[ 'product_id' ]; }

$rr = mysql_query( 'SELECT p.product_id, p.model FROM oc_product p', $link ) or die( '5msqlerr: ' . mysql_error( $link ) );
while( $row = mysql_fetch_assoc( $rr ) ) { $prods[ $row[ 'model' ] ] = $row[ 'product_id' ]; $prod_attrs[ $row[ 'product_id' ] ] = array(); if( $row[ 'product_id' ] > $last_pid ) $last_pid = $row[ 'product_id' ]; }

$rr = mysql_query( 'SELECT `attribute_id`, `name` FROM `oc_attribute_description` WHERE language_id = 2 ;', $link ) or die( '6msqlerr: ' . mysql_error( $link ) );
while( $row = mysql_fetch_row( $rr ) ) $db_attrs[ $row[0] ] = $row[1];

$rr = mysql_query( 'SELECT a.product_id, a.attribute_id, a.text FROM oc_product_attribute a WHERE a.language_id = 2', $link ) or die( '7msqlerr: ' . mysql_error( $link ) );
while( $row = mysql_fetch_assoc( $rr ) ) $prod_attrs[ $row[ 'product_id' ] ][ $row[ 'attribute_id' ] ] = $row[ 'text' ];

$rr = mysql_query( 'SELECT product_special_id, product_id FROM `oc_product_special` WHERE customer_group_id = 1', $link ) or die( '8msqlerr: ' . mysql_error( $link ) );
while( $row = mysql_fetch_assoc( $rr ) ) $prod_spec[ $row[ 'product_id' ] ] = $row[ 'product_special_id' ];
$rr = mysql_query( 'SELECT product_special_id, product_id FROM `oc_product_special` WHERE customer_group_id = 2', $link ) or die( '9msqlerr: ' . mysql_error( $link ) );
while( $row = mysql_fetch_assoc( $rr ) ) $prod_spec_2[ $row[ 'product_id' ] ] = $row[ 'product_special_id' ];
$rr = mysql_query( 'SELECT product_special_id, product_id FROM `oc_product_special` WHERE customer_group_id = 3', $link ) or die( '10msqlerr: ' . mysql_error( $link ) );
while( $row = mysql_fetch_assoc( $rr ) ) $prod_spec_3[ $row[ 'product_id' ] ] = $row[ 'product_special_id' ];

/*_*/

$currFixing = array();

$rr = mysql_query( 'SELECT * FROM oc_currency', $link ) or die( '11msqlerr: ' . mysql_error( $link ) );
while( $row = mysql_fetch_assoc( $rr ) ) $currFixing[ $row[ 'code' ] ] = $row[ 'value' ];

$currFixing[ 'BGL' ] = $currFixing[ 'BGN' ];

/*
$currFixing = array( 'BGL' => 1, 'BGN' => 1 );
$currFixing[ 'EUR' ] = getCurrencyFixing( 'EUR' );
$currFixing[ 'USD' ] = getCurrencyFixing( 'USD' );
*/

echo "EUR FIXING: ". $currFixing[ 'EUR' ] ."\nUSD FIXING: ". $currFixing[ 'USD' ] ."\n\n";

/*_*/

$c = curl_init( 'http://polycomp.bg/poly/login' );

curl_setopt( $c, CURLOPT_HTTPHEADER, array( 'Host: polycomp.bg' ) );
curl_setopt( $c, CURLOPT_REFERER, 'http://polycomp.bg/poly/products' );
curl_setopt( $c, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13' );
curl_setopt( $c, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt( $c, CURLOPT_FOLLOWLOCATION, 1 );
//curl_setopt( $c, CURLOPT_POST, 1 );
curl_setopt( $c, CURLOPT_CUSTOMREQUEST, 'POST' );
curl_setopt( $c, CURLOPT_POSTFIELDS, 'username='. POLY_NAME .'&password='. POLY_PASS );
curl_setopt( $c, CURLOPT_COOKIEJAR, 'cookie.txt' );

// login and getting the shit && the status code
( $html = curl_exec( $c ) ) or die( 'curl error '. curl_error( $c ) ."\n" );
echo '[ curl status '. curl_getinfo( $c, CURLINFO_HTTP_CODE ) ." ]\n\n";

//$status = curl_getinfo( $c, CURLINFO_HTTP_CODE );

curl_setopt( $c, CURLOPT_FOLLOWLOCATION, 0 );
curl_setopt( $c, CURLOPT_HTTPGET, true );

/*_*/

foreach( $subs as $sub_id => $sub_name ) {

	//echo $sub_name . "\n";
	if( $sub_id < $start_from ) continue;

	echo "\t-> loading file $sub_id..\n\n";
	$doc = new DOMDocument();
	
	if( !file_exists( 'dwnld/products_'. $sub_id .'.xls' ) ) {

		echo "\nold category found -> $sub_id\n\n";
		//error_log( date( '[ Y-m-d ]' ) ." old category found -> $sub_id\n", 1, 'mmc' );
		//error_log( date( '[ Y-m-d ]' ) ." old category found -> $sub_id\n", 3, 'log_old_cats.txt' );
		$log->lwrite( 'old category found -> '. $sub_id );
		continue;
	}
	
	$doc->loadHTMLFile( 'dwnld/products_'. $sub_id .'.xls' );

	$tablee = @$doc->getElementsByTagName( 'table' )->item(0)->childNodes;
	//$tablee = @$doc->getElementsByTagName( 'table' )->item(1)->childNodes;
	//echo 'table length: '. @$tablee->length ."\n\n";
	
	$thead_tds = $tablee->item( 3 )->childNodes;
	//echo 'thead length: '. @$thead_tds->length ."\n\n";
	
	$p = array();
	$pis = array();
	
	/*foreach( $thead_tds as $ki => $thtd )
		if( $thtd->nodeValue == 'Валута' )
			$p[ 'Валута на '. $thead_tds->item( $ki - 1 )->nodeValue ] = $ki;
		else
			$p[ $thtd->nodeValue ] = $ki;*/
		
	foreach( $thead_tds as $ki => $thtd )
		$p[ $thtd->nodeValue ] = $ki;

	$pis = $p;
	
	for( $i=4; $i < @$tablee->length; $i++ ) {
		$tr_tds = $tablee->item( $i )->childNodes;
		
		if( $tr_tds->length != 14 and $tr_tds->length != 15 and $tr_tds->length != 16 ) break;
		
		foreach( $pis as $ph => $pi )
			if( is_numeric( $tr_tds->item( $pi )->nodeValue ) ) $p[$ph] = $tr_tds->item( $pi )->nodeValue;
			elseif( $ph == 'Характеристики' )
				$p[$ph] = $doc->saveXml( $tr_tds->item( $pi )->childNodes->item(0) );
			else $p[$ph] = mysql_real_escape_string( $tr_tds->item( $pi )->nodeValue );

		//
		// custom index 4
		$catNo = $p['Кат.номер'];
		//$log->lwrite( 'catNo -> '. $catNo );
		
		//
		
		if(!isset( $prods[ $catNo ] )) {
		
			if( rawurlencode( $p['Наличност'] ) == '%D1%81%20%D0%BF%D0%BE%D1%80%D1%8A%D1%87%D0%BA%D0%B0' ) continue;
			$prod_notfound = true;
			$pid = $last_pid + 1;
			$prod_attrs[ $pid ] = array();
		} else {
		
			$pid = $prods[ $catNo ];
			$prod_notfound = false;
		}
		//if( $pid != 11565 ) continue;
		$prod_doc = new DOMDocument();
		
		
		/*$fullName_exploded = explode ( ' + ', $fullName );
		$catNo_exploded = explode ( '_', $catNo );
		if( isset( $fullName_exploded[1] ) and isset( $catNo_exploded[1] ) ) {
			echo "\nima podarycii: {$fullName_exploded[0]} [ {$catNo_exploded[0]} ] => {$fullName_exploded[1]} [ {$catNo_exploded[1]} ]\n";
		}*/
		
		$polyId = getProdPolyIdByCatNum( $c, $catNo );
		
		if($polyId === false) {
			$log->lwrite('losh produkt '. $catNo);
			continue;
		}
		
		//if($polyId[1] != $catNo) $log->lwrite( 'symnitelen produkt ! -> '. $catNo );
		if($polyId[1] != $catNo)
		{
			$log->lwrite( 'propuskane na produkt -> '. $catNo );
			continue;
		}
		
		$polyId = $polyId[0];
		
		//if($catNo == 'BE4582B001AA') echo "[ $polyId ] ";
		
		//if( !in_array( $tr_tds->item(11)->nodeValue, $statuses ) ) $statuses[] = $tr_tds->item(11)->nodeValue;
		curl_setopt( $c, CURLOPT_URL, 'http://polycomp.bg/poly/product-details/' . $polyId );
		
		//mysql_query( "INSERT INTO `oc_product_to_poly` VALUES( '{$row[1]}', '$polyId' )" );
		( $html = curl_exec( $c ) ) or die( curl_error( $c ) );
		
		$kgs = 2;
		//$p['Наименование'];

		//$fullName = str_replace( '\'', '', substr( $html, strpos( $html, 'itemprop="description"' ) + 23, strpos( $html, '</p>', strpos( $html, 'itemprop="description"' ) )-strpos( $html, 'itemprop="description"' )-23 ) );
		$fullName = mysql_real_escape_string( substr( $html, strpos( $html, 'itemprop="description"' ) + 23, strpos( $html, '</p>', strpos( $html, 'itemprop="description"' ) )-strpos( $html, 'itemprop="description"' )-23 ) );
		//echo $fullName = substr( $name, , strpos( $name, '</p>' )-2 );
		//echo "\n";
		
		$prod_doc->loadHTML( '<?xml encoding="UTF-8">' . substr( $html, strpos( $html, 'class="margin_products"' ) ) );
		$tables = $prod_doc->getElementsByTagName( 'table' );
		/*
		$i_priceTbl = false;
		for( $t = 0; $t < $tables->length; $t++ ) {
			// table mapping
			//echo substr( $tables->item($t)->childNodes->item(0)->childNodes->item(0)->childNodes->item(2)->nodeValue, 0, 4 );
			if( isset( $tables->item($t)->childNodes->item(0)->childNodes->item(0)->childNodes->item(2)->nodeValue )and( rawurlencode( substr( $tables->item($t)->childNodes->item(0)->childNodes->item(0)->childNodes->item(2)->nodeValue, 0, 8 ) ) == '%D0%A6%D0%B5%D0%BD%D0%B0' ) )
				$i_priceTbl = $t;
			//else if( isset( $tables->item($t)->childNodes->item(0)->childNodes->item(0)->childNodes->item(0)->nodeValue )and( $tables->item($t)->getAttribute( 'class' ) != 'hide' ) )
			//	$i_charsTbl = $t;
		}
		*/

		
		/*$prod_doc->loadHTML( '<?xml encoding="UTF-8">' . substr( $html, strpos( $html, 'id="product_text"' ) ) );*/

		$prod_doc->loadHTML( '<?xml encoding="UTF-8">' . substr( $html, strpos( $html, '<h1 class="parameters_title">' ) ) );
		if( method_exists( $tables, 'item' ) and isset( $tables->item( 0 )->childNodes ) ) {
			foreach( $tables->item( 0 )->childNodes as $k => $tr_tdsr ) {
				
				$attr = mysql_real_escape_string( $tr_tdsr->childNodes->item(0)->nodeValue );
				$attr_val = mysql_real_escape_string( $tr_tdsr->childNodes->item(2)->nodeValue );

				if ( rawurlencode( $attr ) == '%D0%A2%D0%B5%D0%B3%D0%BB%D0%BE%2C%20kg' ) {
					$test = explode( ' ', $attr_val, 3 );
					if( isset( $test[1] ) and ( $test[1] == 'kg' ) ) $kgs = ( float )$test[0];
				}

				if ( ( $attr_id = array_search( $attr, $db_attrs, true ) ) === false ) {
					mysql_query( 'INSERT IGNORE `oc_attribute` VALUES( DEFAULT, 1, '. $k .' );', $link ) or die( '12msqlerr: ' . mysql_error( $link ) );
					$attr_id = mysql_insert_id( $link );
					mysql_query( 'INSERT IGNORE `oc_attribute_description` VALUES( '. $attr_id .', 1, \''. $attr .'\' );', $link ) or die( '13msqlerr: ' . mysql_error( $link ) );
					mysql_query( 'INSERT IGNORE `oc_attribute_description` VALUES( '. $attr_id .', 2, \''. $attr .'\' );', $link ) or die( '14msqlerr: ' . mysql_error( $link ) );
					$db_attrs[ $attr_id ] = $attr;
					echo date( '[ H:i:s Y-m-d ]' ) .' inserted new attribute with id [ '. $attr_id .' ]'. $nl;
				}

				if ( !isset( $prod_attrs[ $pid ][ $attr_id ] ) ) {
					mysql_query( 'INSERT IGNORE `oc_product_attribute` VALUES ( \''. $pid .'\', \''. $attr_id .'\', \'1\', \''. $attr_val .'\' );', $link ) or die( '15msqlerr: ' . mysql_error( $link ) );
					mysql_query( 'INSERT IGNORE `oc_product_attribute` VALUES ( \''. $pid .'\', \''. $attr_id .'\', \'2\', \''. $attr_val .'\' );', $link ) or die( '16msqlerr: ' . mysql_error( $link ) );
				} else if ( $prod_attrs[ $pid ][ $attr_id ] != $attr_val )
					mysql_query( "UPDATE `oc_product_attribute` SET text = '$attr_val' WHERE product_id = $pid AND attribute_id = $attr_id", $link ) or die( '17msqlerr: ' . mysql_error( $link ) );
				// last part depends on predicted pid
				
			}
		}
		$prod_doc->loadHTML( '<?xml encoding="UTF-8">' . substr( $html, strpos( $html, 'class="margin_products"' ) ) );

		// stock_status
		switch ( rawurlencode( $p['Наличност'] ) ) {
			case '%D0%BD%D0%B0%20%D1%81%D0%BA%D0%BB%D0%B0%D0%B4': $status = 7; $quantity = 54; $prod_status = 1; break;
			case '%D0%BD%D0%B0%20%D0%BF%D1%8A%D1%82': $status = 6; $quantity = 0; $prod_status = 1; break;
			case '%D1%81%20%D0%BF%D0%BE%D1%80%D1%8A%D1%87%D0%BA%D0%B0': $status = 8; $quantity = 0; $prod_status = 1; break;
			case '%D0%BE%D0%B3%D1%80%D0%B0%D0%BD%D0%B8%D1%87%D0%B5%D0%BD%D0%BE%20%D0%BA%D0%BE%D0%BB%D0%B8%D1%87%D0%B5%D1%81%D1%82%D0%B2%D0%BE': $status = 9; $quantity = 5; $prod_status = 1; break;
			case '%D1%81%D0%BF%D1%80%D1%8F%D0%BD': $status = 5; $quantity = 0; $prod_status = 0; break;
			default: $status = 5; $quantity = 0; $prod_status = 0;
		}
		//

		// some shits
		$img = 'prod/' . $pid . '_0.jpg'; // depends on predicted pid
		// kgs are set !
		$price = ( (float)$p['Цена към дилъри без отстъпка'] ) / $currFixing[ $p['Валута'] ];
		$price_dealer = ( (float)$p['Цена към дилъри'] ) / $currFixing[ $p['Валута'] ];
		//
		// $$ fine tuning

		$price *= 1.03;
		$price_client_spec = $price_dealer * 1.088;
		//$price_firmi_spec = $price_dealer * 1.05;
		$price_firmi_spec = ( (float)$p['Цена към дилъри без отстъпка'] ) / $currFixing[ $p['Валута'] ];

		/*
		//$price = 0;
		//$price_dealer = 0;
		//if( ( $i_priceTbl !== false ) and method_exists( $tables, 'item' ) and method_exists( $tables->item( $i_priceTbl )->childNodes, 'item' ) and method_exists( $tables->item( $i_priceTbl )->childNodes->item(1)->childNodes, 'item' ) ) {
		//if( isset( $tables->item( $i_priceTbl )->childNodes->item(1)->childNodes->item(1)->childNodes ) and isset( $tables->item( $i_priceTbl )->childNodes->item(1)->childNodes->item(0)->childNodes ) ) {
		//	if( method_exists( $tables->item( $i_priceTbl )->childNodes->item(1)->childNodes->item(1)->childNodes, 'item' ) )
		//		$price = ( float )str_replace( ',', '.', preg_replace( '/\s+/u', '', $tables->item( $i_priceTbl )->childNodes->item(1)->childNodes->item(1)->childNodes->item(4)->nodeValue ) );

		//	if( method_exists( $tables->item( $i_priceTbl )->childNodes->item(1)->childNodes->item(0)->childNodes, 'item' ) and ( ( $price_dealer = ( float )str_replace( ',', '.', preg_replace( '/\s+/u', '', $tables->item( $i_priceTbl )->childNodes->item(1)->childNodes->item(0)->childNodes->item(4)->nodeValue ) ) ) != 0 ) ) {
		*/
				if( $price != $price_dealer ) {

					if( ( $price - $price_dealer ) < 3 )
						$price = $price_dealer + 4;

					/*if( $price_dealer >= 250 and $p['Промоция'] != 'NON' ) {
						if( isset( $prod_spec[ $pid ] ) )
							mysql_query( "UPDATE `oc_product_special` SET price='$price_client_spec', date_start = NOW() WHERE product_special_id = ". $prod_spec[ $pid ], $link ) or die( '18msqlerr: ' . mysql_error( $link ) );
						else
							mysql_query( "INSERT INTO `oc_product_special` VALUES ( NULL, '$pid', '1', '1', '$price_client_spec', NOW(), '5454-12-12' )", $link ) or die( '19msqlerr: ' . mysql_error( $link ) );
					}*/

					if( isset( $prod_spec_2[ $pid ] ) )
						mysql_query( "UPDATE `oc_product_special` SET price='$price_firmi_spec' WHERE product_special_id = ". $prod_spec_2[ $pid ], $link ) or die( '20msqlerr: ' . mysql_error( $link ) );
					else
						mysql_query( "INSERT INTO `oc_product_special` VALUES ( NULL, '$pid', '2', '1', '$price_firmi_spec', NOW(), '5454-12-12' )", $link ) or die( '21msqlerr: ' . mysql_error( $link ) );

					if( isset( $prod_spec_3[ $pid ] ) )
						mysql_query( "UPDATE `oc_product_special` SET price='$price_dealer' WHERE product_special_id = ". $prod_spec_3[ $pid ], $link ) or die( '22msqlerr: ' . mysql_error( $link ) );
					else
						mysql_query( "INSERT INTO `oc_product_special` VALUES ( NULL, '$pid', '3', '1', '$price_dealer', NOW(), '5454-12-12' )", $link ) or die( '23msqlerr: ' . mysql_error( $link ) );
				}
		//	}
		//}
		if( $price == 0 or $price_dealer == 0 ) { $quantity = 0; $prod_status = 0; }
		$tax_class_id = 10;
		//
		// oc_product_description
		// fullname
		$html = mysql_real_escape_string( $p['Характеристики'] );
		//$html = '';
		$meta_desc = '';
		$meta_keys = '';
		$tag = '';
		//

		/*_*/

		if( !isset( $manfs[ $manname = mb_substr( $fullName, mb_strpos( $fullName, ',' ) + 2, mb_strpos( $fullName, ' ', mb_strpos( $fullName, ',' )+2 )-mb_strpos( $fullName, ',' )-2 ) ] ) ) {
			
			mysql_query( 'INSERT INTO `oc_manufacturer` VALUES ( DEFAULT, \''. $manname .'\', NULL, 0 )', $link ) or die( '24msqlerr: ' . mysql_error( $link ) );
			$manid = mysql_insert_id( $link );
			mysql_query( 'INSERT INTO `oc_manufacturer_to_store` VALUES ( \''. $manid .'\', 0 )', $link ) or die( '25msqlerr: ' . mysql_error( $link ) );
			$manfs[ $manname ] = $manid;
		}

		/*_*/

		
		if( $prod_notfound ) {

			mysql_query( $q_product = "INSERT INTO `oc_product` VALUES ( DEFAULT, '$catNo', '', '', '', '', '', '', '', '9999', '$status', '$img', '". $manfs[ $manname ] ."', '1', '$price', '0', '$tax_class_id', '0000-00-00 00:00:00', '$kgs', 1, 0, 0, 0, 0, '0', '1', '0', '1', NOW(), NOW(), 0 ) ;", $link ) or die( '26msqlerr: ' . mysql_error( $link ) );
			$pid = mysql_insert_id( $link );
			if( $pid != ( $last_pid + 1 ) ) echo date( '[ H:i:s Y-m-d ]' ) .' PRODUCT ID MISHMASH -> predicted[ '. $last_pid+1 .' ], inserted [ '. $pid .' ]'. $nl;
			$last_pid = $pid;

			$q_product_description = "INSERT INTO `oc_product_description` VALUES ( '$pid', '1', '$fullName', '$html', '$meta_desc', '$meta_keys', '$tag', NULL, NULL, NULL );";
			$q_product_description2 = "INSERT INTO `oc_product_description` VALUES ( '$pid', '2', '$fullName', '$html', '$meta_desc', '$meta_keys', '$tag', NULL, NULL, NULL );";
			$q_product_to_category = "INSERT INTO `oc_product_to_category` VALUES ( '$pid', '$sub_id' );";
			mysql_query( "INSERT INTO `oc_product_to_category` VALUES ( '$pid', '{$cids[$sub_id]}' );", $link ) or die( '27msqlerr: '. mysql_error( $link ) );

			$q_product_to_store = "INSERT INTO `oc_product_to_store` VALUES ( '$pid', '0' );";

			//echo $q_product_description . "\n";			
			mysql_query( $q_product_description, $link ) or die( '28msqlerr: ' . mysql_error( $link ) );
			mysql_query( $q_product_description2, $link ) or die( '29msqlerr: ' . mysql_error( $link ) );
			//echo $q_product_to_category . "\n";
			mysql_query( $q_product_to_category, $link ) or die( '30msqlerr: ' . mysql_error( $link ) );
			mysql_query( $q_product_to_store, $link ) or die( '31msqlerr: ' . mysql_error( $link ) );

			$imgNo = 0;
			foreach( $prod_doc->getElementsByTagName( 'img' ) as $img )
				if( ( $img->getAttribute( 'width' ) == '160px' ) && ( $img->getAttribute( 'height' ) == '141px' ) && ( substr( $imgSrc = $img->getAttribute( 'src' ), 0, strlen( 'http://polycomp.bg/poly/image/' ) ) == 'http://polycomp.bg/poly/image/' ) ) {
					dwnldImg( $imgSrc .'&scale=false', '../../image/prod/'. $pid .'_'. $imgNo .'.jpg' );
					//if( $imgNo > 0 )
					mysql_query( 'INSERT INTO `oc_product_image` VALUES ( DEFAULT, \''. $pid .'\', \'prod/'. $pid .'_'. $imgNo .'.jpg\', 0 );', $link ) or die( '32msqlerr: ' . mysql_error( $link ) );
					$imgNo++;
				}

			echo date( '[ H:i:s Y-m-d ]' ) .' inserted new product [ '. $catNo .' ] => prod_id [ '. $pid .' ]'. $nl;
		} else {

			$q_product = "UPDATE `oc_product` SET quantity='$quantity', stock_status_id = '$status', manufacturer_id = '". $manfs[ $manname ] ."', price = '$price', weight = '$kgs', status='$prod_status', date_modified = NOW() WHERE product_id = '$pid' ;";
			$q_product_description = "UPDATE `oc_product_description` SET name = '$fullName', description = '$html', meta_description = '$meta_desc', meta_keyword = '$meta_keys', tag = '$tag' WHERE product_id = '$pid' ;";
			$q_product_to_category = "UPDATE `oc_product_to_category` SET category_id = '$sub_id' WHERE product_id = '$pid' AND category_id = '$sub_id' ;";
			//mysql_query( "INSERT INTO `oc_product_to_category` VALUES ( '$pid', '{$cids[$sub_id]}' );", $link ) or die( 'msqlerr: '. mysql_error( $link ) );

			mysql_query( $q_product, $link ) or die( '33msqlerr: ' . mysql_error( $link ) );
			mysql_query( $q_product_description, $link ) or die( '34msqlerr: ' . mysql_error( $link ) );
			mysql_query( $q_product_to_category, $link ) or die( '35msqlerr: ' . mysql_error( $link ) );

			/*
			foreach( $prod_doc->getElementsByTagName( 'img' ) as $img )
				if( ( $img->getAttribute( 'width' ) == '160px' ) && ( $img->getAttribute( 'height' ) == '141px' ) && ( substr( $imgSrc = $img->getAttribute( 'src' ), 0, strlen( 'http://polycomp.bg/poly/image/' ) ) == 'http://polycomp.bg/poly/image/' ) ) {
					mysql_query( 'INSERT INTO `oc_product_image` VALUES ( DEFAULT, \''. $pid .'\', \'prod/'. $pid .'_0.jpg\', 0 );', $link ) or die( 'msqlerr: ' . mysql_error( $link ) );
					break;
				}
			*/

			echo date( '[ H:i:s Y-m-d ]' ) .' updated product [ '. $catNo .' ] => prod_id [ '. $pid .' ]'. $nl;
		}
		echo "{$larr[ $li ]}\r"; if( $li == 3 ) $li = 0; else $li++;
		$prod_i++;
	}
}


if( $prod_i > 1000 ) {
	
	mysql_query ( 'UPDATE oc_product SET stock_status_id=8, quantity=0, status=0 WHERE date_modified NOT LIKE "'. date( 'Y-m-d' ) .'%"', $link );
	$log->lwrite( 'disabling olds..' );
	error_log( date( '[ Y-m-d ]' ) ." script-a prikluchi sled $prod_i produkta i uspq da premahne starite !\nwij loga tuk -> http://www.mmcenter.bg/admin/anexAlex/bot_dbp_log.txt\n", 1, 'mmc' );
} else {
	error_log( date( '[ Y-m-d ]' ) ." script-a prikluchi sled $prod_i produkta bez da uspee da premahne starite !\nwij loga tuk -> http://www.mmcenter.bg/admin/anexAlex/bot_dbp_log.txt\n", 1, 'mmc' );
}

//mysql_query ( 'UPDATE oc_product SET stock_status_id=7, quantity=54, status=1 WHERE 1', $link );

$time_taken = microtime(true) - $start;

$log->lwrite('');
$log->lwrite('script done.');
$log->lwrite('');
$log->lwrite('script summary:');
$log->lwrite( 'prods: '. $prod_i );
$log->lwrite('');
$log->lwrite( $time_taken );
$log->lclose();

curl_close( $c );
mysql_close( $link );

echo $time_taken . "\n";

?>

Код за потвърждение: Избери целия код

[ 05:49:35 2016-02-23 ] updated product [ 9H.J9H77.17E ] => prod_id [ 6591 ]
\
[ 05:49:37 2016-02-23 ] updated product [ MR.JLC11.001 ] => prod_id [ 10556 ]
|
[ 05:49:38 2016-02-23 ] updated product [ MR.JL711.001 ] => prod_id [ 9224 ]
/
[ 05:49:39 2016-02-23 ] updated product [ 210-ABJN ] => prod_id [ 12350 ]
-
[ 05:49:40 2016-02-23 ] updated product [ 9H.JEA77.24E ] => prod_id [ 12817 ]
\
[ 05:49:42 2016-02-23 ] updated product [ 9H.JAT77.23E ] => prod_id [ 2742 ]
|
[ 05:49:43 2016-02-23 ] updated product [ V11H476040 ] => prod_id [ 2743 ]
/
[ 05:49:44 2016-02-23 ] updated product [ 9H.Y1J77.17E ] => prod_id [ 11919 ]
-
[ 05:49:46 2016-02-23 ] updated product [ 9H.J9J77.17E ] => prod_id [ 7269 ]
\
[ 05:49:47 2016-02-23 ] updated product [ MR.JKY11.00L ] => prod_id [ 9147 ]
|
[ 05:49:48 2016-02-23 ] updated product [ PJD8633WS ] => prod_id [ 2746 ]
/
[ 05:49:50 2016-02-23 ] updated product [ V11H673040 ] => prod_id [ 9633 ]
-
[ 05:49:51 2016-02-23 ] updated product [ MR.JL211.001 ] => prod_id [ 11914 ]
\
[ 05:49:52 2016-02-23 ] updated product [ MR.JL711.00J ] => prod_id [ 11915 ]
|

Код за потвърждение: Избери целия код

[02/Sep/2016:03:30:28] (bot_dbp) ----------
[02/Sep/2016:03:30:28] (bot_dbp) 
[02/Sep/2016:03:30:28] (bot_dbp) script started..
[02/Sep/2016:03:30:28] (bot_dbp) 
[02/Sep/2016:03:33:11] (bot_dbp) propuskane na produkt -> NX.VATEX.029RR
[02/Sep/2016:03:33:59] (bot_dbp) propuskane na produkt -> PSKTCE-029001B3
[02/Sep/2016:03:36:09] (bot_dbp) propuskane na produkt -> N013LE557015EMEA
[02/Sep/2016:03:36:14] (bot_dbp) propuskane na produkt -> N026LE557015EMEA
[02/Sep/2016:03:36:33] (bot_dbp) propuskane na produkt -> N007LE557015EMEA
[02/Sep/2016:03:37:00] (bot_dbp) propuskane na produkt -> 5397063882687
[02/Sep/2016:03:37:16] (bot_dbp) propuskane na produkt -> 5397063882694
[02/Sep/2016:03:39:09] (bot_dbp) propuskane na produkt -> N001O3040M
[02/Sep/2016:03:39:21] (bot_dbp) propuskane na produkt -> N009O3040MT
[02/Sep/2016:03:39:35] (bot_dbp) propuskane na produkt -> N015O3040SFF
[02/Sep/2016:03:40:08] (bot_dbp) propuskane na produkt -> N004O7040SFF
[02/Sep/2016:03:41:07] (bot_dbp) propuskane na produkt -> #DELL01911
[02/Sep/2016:03:41:57] (bot_dbp) propuskane na produkt -> FQC-06949
[02/Sep/2016:03:42:06] (bot_dbp) propuskane na produkt -> QQ2-00038
[02/Sep/2016:03:42:52] (bot_dbp) old category found -> 14
[02/Sep/2016:03:44:04] (bot_dbp) propuskane na produkt -> UM.VG7EE.A09
[02/Sep/2016:03:44:21] (bot_dbp) propuskane na produkt -> VX2263SMHL
[02/Sep/2016:03:44:37] (bot_dbp) propuskane na produkt -> UM.QR0EE.005
[02/Sep/2016:03:47:07] (bot_dbp) propuskane na produkt -> LGX210-BK

Код за потвърждение: Избери целия код


EUR FIXING: 0.51169997
USD FIXING: 0.54589999

[ curl status 200 ]

	-> loading file 16..

	-> loading file 17..


old category found -> 17

	-> loading file 19..

	-> loading file 20..

	-> loading file 22..

	-> loading file 23..

	-> loading file 24..


old category found -> 24

	-> loading file 26..

Код за потвърждение: Избери целия код

$c = curl_init( 'http://'. $v .'/ban_list.php?site='. $i );

curl_setopt( $c, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13' );

( $html = curl_exec( $c ) ) or die( curl_error( $c ) );

echo $html;
"Това е неграмотно написан код, пълен с грешки и абсурди, които не можеш да си представиш. Не препоръчвам да го ползвате"

За да кажеш такова нещо трябва да се аргументираш като кажеш какво по-точно му има. Мога да кажа че на кода му няма абсолютно нищо и работи перфектно!

Трябва само да го променя защото се сетих че при всяко пускане ще банва хората на които им е изтекъл бана наново.
94.190.190.195:27015 -> Изображение <-- Runemod here !
94.190.190.195:27017 -> Изображение

Segmentation fault Изображение <-- Opera browser !

Аватар
hackera457
Извън линия
Потребител
Потребител
Мнения: 768
Регистриран на: 01 Ное 2016, 09:46
Местоположение: София
Се отблагодари: 1 път
Получена благодарност: 124 пъти
Обратна връзка:

Re: скрипт за взимане на банове от бан-списъци

Мнение от hackera457 » 05 Дек 2016, 09:10

Код за потвърждение: Избери целия код

$start = microtime( true );

set_time_limit(0);
Напълно излишно, Все пак няма да изчисляваш за колко време се изпълнява дадения скрипт

Код за потвърждение: Избери целия код

$while = true;

while($while)
    {
        system('clear');
За чии ти е безкраен цикъл? Даже никъде не проверяваш $i каква стойност е и ако е според някаква да спираш безкрайния цикъл. Излишно процесорно време отива. Това system("clear") няма да рабони, тъй като по default са спрени тези функции, тъй като има шанс за root на системата /Правил съм го и знам как стана/

Имаш това

Код за потвърждение: Избери целия код

$c = curl_init( 'http://'. $v .'/ban_list.php?site='. $i );

        curl_setopt( $c, CURLOPT_HTTPHEADER, array( 'Host: '. $v ) );
        curl_setopt( $c, CURLOPT_REFERER, 'http://'. $v );
        curl_setopt( $c, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13' );
        curl_setopt( $c, CURLOPT_RETURNTRANSFER, 1 );
        curl_setopt( $c, CURLOPT_FOLLOWLOCATION, 1 );
След него

Код за потвърждение: Избери целия код

curl_setopt( $c, CURLOPT_FOLLOWLOCATION, 0 );
        curl_setopt( $c, CURLOPT_HTTPGET, true );
Това второто ти е напълно излишно. Веднъж  CURLOPT_FOLLOWLOCATION сетваш 1 а след това 0. Каква е логиката?

Код за потвърждение: Избери целия код

while(1)
                {
Пак безкраен цикъл и пак не се спира при стойност на i

В този код са праскани цикли как скефне на човек. Затова кода е пълна нула. Да не изреждам още, тъй кано трябва да загуба време. Научи как се прише процедурен код или внимавай какво копираш
Моите плъгини

Код за потвърждение: Избери целия код

#include <hambeer>

RegisterHamBeer(HamBeer_Spawn, "player", "GivePlayerBeer", 1);

public GivePlayerBeer(Pl){
    if(!is_user_alive(Pl)){
        ham_give_beer(Pl, 5)
        client_print(Pl, print_chat, "Go Go Go"){
}  


Аватар
mount4
Извън линия
Потребител
Потребител
Мнения: 187
Регистриран на: 03 Ное 2016, 19:54
Местоположение: Варна
Обратна връзка:

Re: скрипт за взимане на банове от бан-списъци

Мнение от mount4 » 05 Дек 2016, 11:20

Защо да не изчислявам за колко време се изпълнява дадения скрипт ?
Точно затова съм го направил да видя накрая колко време отива а данеговорим че set_time_limit си е напълно задължително иначе скрипта ще спре преди да е приключил!

А това за безкрайния цикъл: закакво мислиш че съм го направил с променлива ? точно че за да не е безкраен! :hooray: Ако исках безкраен цикъл щях да го направя с while(1) както по-надолу и пак щях да мога да го прекъсна с break и пак можеше да бъде с край. Направил съм го с променлива защото мястото където трябва да го прекъсвам е в друг цикъл и там break спира подцикъла!

Код за потвърждение: Избери целия код

else if($date_changed && $date == $first_date)
				{
					$while = false;
					break;
				}
Проверката ми дет викаш на $i не е така както си мислиш ами проверява докато срещне дата == на първата защото при amxbans като отвориш страница по-голямата от последната ти вади първата.

Никакво процерсно време неотива а данеговорим че това не е процес който работи постоянно ами скрипт който се пуска 1 път всеки ден с Cron, работи известно време и след това спира.

"Това system("clear") няма да рабони, тъй като по default са спрени тези функции, тъй като има шанс за root на системата /Правил съм го и знам как стана/"

При мене си работи а и това всеки може да си го направи както иска. За шанса за root на системата нищо неразбрах ?
Ааа мисля че разбрах какво си мислиш и това ако е така ще е само за роот потребитела така че ако си логнат с обикновен потребител ще работи. Вмоя случай съм логнат като "steam" и няма проб.

http://stackoverflow.com/questions/2432 ... ls-command

В php-то има функции ncurses_clear и ncurses_erase но виж какво пише за тях:

Код за потвърждение: Избери целия код

Warning
This function is EXPERIMENTAL. The behaviour of this function, its name, and surrounding documentation may change without notice in a future release of PHP. This function should be used at your own risk.
така че не бих ги използвал. Възможно е да се направи принтвайки hex стойноста на clear (предполагам има някав ASCII hex за изчистване на екрана) но не съм разглеждал аски таблицата за такова и незнам стойността.

btw виж тука какво пише http://www.jimmyr.com/blog/Clear_Screen ... 5_2006.php
цитирам: "The easiest way to "clear screen" is pretty ghetto but it works. Just echo new lines where you want to clear the screen =P." xD

Намерих още едно такова решение https://bytes.com/topic/php/answers/2125-clear-screen което е малко по-добро защото гледа колко си разширил терминала и добавя толкова нови редове но пак е общо взето същата концепция..

Ако имаш впредвит това решение -> не мерси брат, ще пропусна. :tnx:

---------------------------------

А за тези излишните -> останали са така от скрипта за онлайн магазина щото там трябваше да се сменят.

---------------------------------

Код за потвърждение: Избери целия код

while(1)
                {
Ето тук го прекъсвам с break; и то точно на следващия ред където щи извади очите:

Код за потвърждение: Избери целия код

while(1)
{
	if(!$trss->item($ii))
		break;
Нали ако цикъла е безкраен скрипта няма да приключи никога.. За този специално ще зацикли още на първия запис а за другия ще цикли първия банлист добезкрай.

------------------------------------------------------------------------

Обобщено:
Всичко това са дребни неща които нито пречат на скрипта да работи, нито вредят на сървъра!
- няма high cpu usage
- няма high memory usage
- няма падане на fps защото това не е amxx plugin и не е свързано с hlds изобщо
- няма edicts flood заради същата причина

Така че хора : използвайте този скрипт, ще се оттървете от доста хакери! :devil:

------------------------------------------------------------------------

Това е един обикновен и малумен скрипт който взима html от банлистите, обикаля по страниците и праща Mysql заявки.

Simple as that но незнам дали ще работи с AMXBans GM защото може структурата на таблицата да е различна и да трябва да се променя заявката.

Правих го за обикновен AMXBans.
94.190.190.195:27015 -> Изображение <-- Runemod here !
94.190.190.195:27017 -> Изображение

Segmentation fault Изображение <-- Opera browser !

Аватар
cgozzie
На линия
Потребител
Потребител
Мнения: 1319
Регистриран на: 13 Окт 2016, 22:10
Местоположение: Варна
Се отблагодари: 245 пъти
Получена благодарност: 43 пъти

Re: скрипт за взимане на банове от бан-списъци

Мнение от cgozzie » 27 Фев 2017, 04:09

Чета и се чудя тоя скрипт искаш да кажеш че взима сички налични банове дадени в други вериги ли.Ако е така това не е много добре смятай колко хора ще има баннати некоректно от некое хлапе администратор,и после какво излиза че този неправилно банат човек няма да може да влезе и в мойте сървъри ли или се бъркам нещо.
Изображение

Публикувай отговор
  • Подобни теми
    Отговори
    Преглеждания
     Последно мнение

Обратно към “GMBans & AMXBans”

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 2 госта