Хаблисты |
Здравствуйте, гость ( Вход | Регистрация )
Хаблисты |
30.7.2010, 15:30
Сообщение
#61
|
|
Освоившийся участник Группа: Пользователи Сообщений: 391 Регистрация: 4.11.2009 Из: Дом Пользователь №: 4 923 Спасибо сказали: 239 раз |
За основу я действительно брал какой-то кривой клиент на php. Но находил его я не здесь, и большую часть просто выкинул. Он мне только помог разобраться с тем, как нужно в принципе работать. ОСтальное пришлось писать с нуля.
Теперь по поводу Вашего решения. Какой там пингер, мой или это еще чья-то разработка? Странно что на 10 хабов уходит 7 минут. |
|
|
30.7.2010, 16:47
Сообщение
#62
|
|
Абсолютный новичок Группа: Пользователи Сообщений: 6 Регистрация: 5.3.2010 Пользователь №: 6 268 Спасибо сказали: 0 раз |
пингер тот который и у вас был до модификации
|
|
|
31.7.2010, 8:17
Сообщение
#63
|
|
Освоившийся участник Группа: Пользователи Сообщений: 391 Регистрация: 4.11.2009 Из: Дом Пользователь №: 4 923 Спасибо сказали: 239 раз |
Т. е. из сообщения №21?
Приведите код, как вы его вызываете. |
|
|
31.7.2010, 9:57
Сообщение
#64
|
|
Абсолютный новичок Группа: Пользователи Сообщений: 6 Регистрация: 5.3.2010 Пользователь №: 6 268 Спасибо сказали: 0 раз |
Код function execute($sock, $str) {
socket_send($sock, $str.'|', strlen($str) + 1, NULL); } function lock2key($_LOCK) { $lockLength = strlen ($_LOCK); $h = ord($_LOCK{0}) ^ ord( $_LOCK{ $lockLength - 1} ) ^ ord( $_LOCK{ $lockLength - 2} ) ^ 5; while ($h > 255) {$h = $h - 256;} $h = (($h<<4) & 240) | (($h>>4) & 15); $a = $h; if ($a == '126' || // '~' $a == '124' || // '|' $a == '96' || // '`' $a == '36' || // '$' $a == '5' || // '^E' $a == '0') // NUL { $LockToKey = "/%DCN"; if ($a < 100) $LockToKey .="0"; if ($a < 10) $LockToKey .="0"; $LockToKey .= $a; $LockToKey .= "%/"; } else { $LockToKey = chr ($a); } for ($j = 1; $j < strlen($_LOCK); $j++) { $h = ord($_LOCK{$j}) ^ ord($_LOCK{$j-1}); while ($h > 255) {$h = $h - 256;} $h = (($h<<4) & 240) | (($h>>4) & 15); $a = $h; if ($a == '126' || // '~' $a == '124' || // '|' $a == '96' || // '`' $a == '36' || // '$' $a == '5' || // '^E' $a == '0') // NUL { $LockToKey .= "/%DCN"; if ($a < 100) $LockToKey .="0"; if ($a < 10) $LockToKey .="0"; $LockToKey .= $a; $LockToKey .= "%/"; } else { $LockToKey .= chr ($a); } } return $LockToKey; } |
|
|
31.7.2010, 9:58
Сообщение
#65
|
|
Освоившийся участник Группа: Пользователи Сообщений: 391 Регистрация: 4.11.2009 Из: Дом Пользователь №: 4 923 Спасибо сказали: 239 раз |
Это что?
|
|
|
16.8.2010, 15:03
Сообщение
#66
|
|
Начинающий Группа: Пользователи Сообщений: 13 Регистрация: 16.8.2010 Пользователь №: 7 500 Спасибо сказали: 0 раз |
Доброго времени суток!
Как я понял для того чтобы получить доп инфу по хабу $HubInfo мы должны в Support определить BotInfo или HubInfo??? и далее я так понял идет такая конструкция? Код case '$Lock':
process($socket, '$Supports BotInfo'); process($socket, '$Key '.lock2key($user[1])); process($socket, '$ValidateNick '.$nick); |
|
|
16.8.2010, 16:30
Сообщение
#67
|
|
Главный ра******й тут... Группа: Главные администраторы Сообщений: 1 727 Регистрация: 18.5.2008 Из: RF, 2la Пользователь №: 1 Спасибо сказали: 776 раз |
В $Supports ты определяешь BotInfo, если хаб его не поддерживает (не разрешает "пинг с хаблистов"), то он выкидывает клиента. Описание этой команды в протоколе здесь.
|
|
|
16.8.2010, 16:58
Сообщение
#68
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
Лучше сюда смотреть: http://mydc.ru/index.html?showtopic=915&am...post&p=7384
|
|
|
16.8.2010, 20:03
Сообщение
#69
|
|
Начинающий Группа: Пользователи Сообщений: 13 Регистрация: 16.8.2010 Пользователь №: 7 500 Спасибо сказали: 0 раз |
Тогда я не понимаю каким образом можно снять пар-ры хаба?
топик,максимум юзеров. админа. |
|
|
16.8.2010, 20:16
Сообщение
#70
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
Можно только войдя на хаб. Пингеры так и делают.
|
|
|
16.8.2010, 21:25
Сообщение
#71
|
|
Начинающий Группа: Пользователи Сообщений: 13 Регистрация: 16.8.2010 Пользователь №: 7 500 Спасибо сказали: 0 раз |
Дак это получает после $ValidateNick ?
|
|
|
16.8.2010, 22:06
Сообщение
#72
|
|
Освоившийся участник Группа: Пользователи Сообщений: 391 Регистрация: 4.11.2009 Из: Дом Пользователь №: 4 923 Спасибо сказали: 239 раз |
Да. Тебе сюда: http://mydc.ru/topic915.html Спойлер под темой "Общая (обязательная) последовательность входа на хаб.
"Рукопожатие" между клиентом и хабом." |
|
|
17.8.2010, 9:24
Сообщение
#73
|
|
Начинающий Группа: Пользователи Сообщений: 13 Регистрация: 16.8.2010 Пользователь №: 7 500 Спасибо сказали: 0 раз |
хоть убейте но не дает мне хаб о себе информации
Код Хаб ---> Клиент ($HubINFO)
Описание: Данная команда нужна для получения более полной информации о хабе. [Описание_бота] - может быть любой строкой, обычно это информация об адресе или хаб-листе. [Имя_хаба], [Адрес_хаба] и [Описание_хаба] - это пункты, которые будут показаны в хаб-листе (некоторые хабы имеют несколько адресов это помогает определит главный адрес). Описание хабов меняется часто, поэтому требует частого обновления. [Макс_юзеров], [Мин_шара], [Мин_слотов], [Макс_хабов] - соответственно максимально допустимое число пользователей, минимально допустимая шара на хабе, минимальное число слотов, максимальное число подключенных хабов. [Тип] - этот параметр даёт информацию о программе, под управлением которой работает хаб. [Владелец] - владелец хаба или email адрес владельца хаба |
|
|
17.8.2010, 12:06
Сообщение
#74
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
Раз не даёт, значит тому 2 причины:
1) ты не правильно запрашиваешь 2) хаб не подерживает пинги или они просто отключены. |
|
|
17.8.2010, 12:07
Сообщение
#75
|
|
Начинающий Группа: Пользователи Сообщений: 13 Регистрация: 16.8.2010 Пользователь №: 7 500 Спасибо сказали: 0 раз |
Видимо 1. Потому как хаб держит пинги 100%
|
|
|
17.8.2010, 21:31
Сообщение
#76
|
|
Освоившийся участник Группа: Пользователи Сообщений: 391 Регистрация: 4.11.2009 Из: Дом Пользователь №: 4 923 Спасибо сказали: 239 раз |
Сделай вывод куда-нибудь, всего что отправляешь и что получаешь от хаба, а потом смотри формат протокола.
|
|
|
18.8.2010, 22:19
Сообщение
#77
|
|
Начинающий Группа: Пользователи Сообщений: 13 Регистрация: 16.8.2010 Пользователь №: 7 500 Спасибо сказали: 0 раз |
Теперь все отлично летает, нашел пару изъянов.
Enyby вы в сокетах какое максимальное количество байтов используете? Да и кстати бывает так что хаб вроде бы онлайн, но данные не отдает т.к. хаб занят и не пустил бота, думаю что в этом случае делать |
|
|
18.8.2010, 23:35
Сообщение
#78
|
|
Белый Волк Группа: Пользователи Сообщений: 1 723 Регистрация: 11.9.2008 Из: г.Томск Пользователь №: 516 Спасибо сказали: 657 раз |
Если стоит галочка в настройках хаба - "Не разрешать пинг с хаблиста", то вряд ли ты что-то придумаешь..
|
|
|
18.8.2010, 23:56
Сообщение
#79
|
|
Освоившийся участник Группа: Пользователи Сообщений: 391 Регистрация: 4.11.2009 Из: Дом Пользователь №: 4 923 Спасибо сказали: 239 раз |
Enyby вы в сокетах какое максимальное количество байтов используете? Это вы о чем? Если о буфере для чтения - 2048 байт. Буфер записи - строка, которая не имеет никаких особых ограничений. Да и кстати бывает так что хаб вроде бы онлайн, но данные не отдает т.к. хаб занят и не пустил бота, думаю что в этом случае делать Бывает разное. Бывает что соединение плохое или хаб сильно занят, тут вы ничего не сделаете. Бывает что пингер запрещен, тогда нужно заходить как обычным клиентом. Бывает что заполнен лимит юзеров, тогда надо сделать аккаунт и использовать авторизацию, поскольку обычно зарегистрированные пользователи могут входить на заполненный хаб. И т. д. |
|
|
19.8.2010, 8:27
Сообщение
#80
|
|
Начинающий Группа: Пользователи Сообщений: 13 Регистрация: 16.8.2010 Пользователь №: 7 500 Спасибо сказали: 0 раз |
Это вы о чем? Если о буфере для чтения - 2048 байт. Буфер записи - строка, которая не имеет никаких особых ограничений. Бывает разное. Бывает что соединение плохое или хаб сильно занят, тут вы ничего не сделаете. Бывает что пингер запрещен, тогда нужно заходить как обычным клиентом. Бывает что заполнен лимит юзеров, тогда надо сделать аккаунт и использовать авторизацию, поскольку обычно зарегистрированные пользователи могут входить на заполненный хаб. И т. д. А Вы каким образом обходите хаб? просто по времени как я понял обойти пингом хаб быстрее нежели клиентом, или я ошибаюсь? Да и наткнулся на такую вещь, есть хабы с ограничением по открытым хабам, меня на такие тоже не пускает( Кому интересно вот мой пингер ( завязан с БД) Хотелось бы услышать критику по коду и недочеты.Спасибо CODE <?php set_time_limit ( 1800 ); require ('config.php'); #####timer $mtime = microtime(); $mtime = explode(' ', $mtime); $mtime = $mtime[1] + $mtime[0]; $starttime = $mtime; ######### function execute($sock, $str) { // echo "A: ".$str.'|'.PHP_EOL."\r\n"; socket_send($sock, $str.'|', strlen($str) + 1, NULL); } function lock2key($_LOCK, $port) { $lockLength = strlen($_LOCK); $LockToKey = ''; for ($j = 0; $j < strlen($_LOCK); $j++) { if($j == 0) { $h = ord($_LOCK{0}) ^ 0 ^ ord( $_LOCK{ $lockLength - 1} ) ^ ($port % 256 + ($port>>8) % 256); } else { $h = ord($_LOCK{$j}) ^ ord($_LOCK{$j-1}); } $h = $h % 256; $a = (($h<<4) & 240) | (($h>>4) & 15); if($a == '126' or $a == '124' or $a == '96' or $a == '36' or $a == '5' or $a == '0') { $LockToKey .= "/%DCN"; if ($a < 100) $LockToKey .= "0"; if ($a < 10) $LockToKey .= "0"; $LockToKey .= $a; $LockToKey .= "%/"; } else { $LockToKey .= chr($a); } } return $LockToKey; } $mysql = mysql_connect($host, $user, $userpass) or die("<font color='red'>Ошибка соединения с MySQL!</font><br>"); mysql_select_db($bd, $mysql) or die("<font color='red'>Ошибка базы данных MySQL!</font><br>"); $result = @mysql_query("SELECT * FROM `".$dbtable."` ORDER BY `".$dbtable."`.`ID` ASC LIMIT 0 , 30"); while ($data = @mysql_fetch_assoc($result)) { $useri = 0; $share = 0; $infoyes = 1; if ($fp=@fsockopen($data['Adres'],$data['Port'],$ERROR_NO,$ERROR_STR,5)) { fclose($fp); $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); if (!socket_connect($socket, $data['Adres'], $data['Port'])) { echo 'Error..'; return; } while ($buffer = socket_read($socket, 2048, PHP_BINARY_READ)) { $linie = explode('|', $buffer); for ($i = 0; $i < sizeof($linie); ++$i) { $user = explode(' ', $linie[$i]); // $somecontent = "Q: ".$linie[$i].PHP_EOL."\r\n"; switch($user[0]) { case '$Lock': execute($socket, '$Supports UserCommand NoGetINFO NoHello UserIP2 TTHSearch OpPlus Feed MCTo HubTopic BotList ClientID MiniSlots GetZBlock ADCGet TTHL TTHF ClientID CHUNK GetCID BotINFO'); execute($socket, '$Key '.lock2key($user[1]),$data['Port']); execute($socket, '$ValidateNick '.$nick); break; case '$Hello': if ($user[1] == $nick) { execute($socket, '$Version 1,0091'); execute($socket, '$GetNickList'); execute($socket, '$MyINFO $ALL '.$nick.' Bot by dro <FlylinkDC++ V:(r386),M:P,H:21/0/1,S:15>$ $100 $alexandr@drozdin.ru$670969607454$'); execute($socket, '$BotINFO {HubListPinger} hublist pinger'); } break; case '$HubINFO': $hubinfo = $linie[$i]; break 3; break; case '$MyINFO': $myinfo = explode('$', $linie[$i]); @$share = $share + $myinfo[6]; $useri = $useri + 1; break; } } } socket_close($socket); $hubinfo = str_replace( "HubINFO ", "", $hubinfo); $hubinfo = explode('$', $hubinfo); $hubinfo[3] = str_replace(".px.", " ", $hubinfo[3]); $hubinfo[1] = str_replace("<", "<", $hubinfo[1]); $hubinfo[1] = str_replace(">", ">", $hubinfo[1]); $hubinfo[3] = str_replace("<", "<", $hubinfo[3]); $hubinfo[3] = str_replace(">", ">", $hubinfo[3]); if ($infoyes == "1") { mysql_query("UPDATE `".$dbtable."` SET Name = '".$hubinfo[1]."', Descr = '".$hubinfo[3]."', Maxusers = '".$hubinfo[4]."', MinShare = '".$hubinfo[5]."', MinSlots = '".$hubinfo[6]."', MaxHubs = '".$hubinfo[7]."', Soft = '".$hubinfo[8]."' WHERE id = ".$data['ID'].""); } #$infoyes = "0"; mysql_query("UPDATE `".$dbtable."` SET Users = ".$useri.", Status = 'Online', Share = ".floatval($share)." WHERE id = ".$data['ID'].""); if ($useri > $data['Userspeak']){ mysql_query("UPDATE `".$dbtable."` SET Userspeak = ".$useri." WHERE id = ".$data['ID'].""); } if ($share > $data['Sharepeak']){ mysql_query("UPDATE `".$dbtable."` SET Sharepeak = ".floatval($share)." WHERE id = ".$data['ID'].""); } }else{ mysql_query("UPDATE `".$dbtable."` SET Status = 'Offline' WHERE id = ".$data['ID'].""); mysql_query("UPDATE `".$dbtable."` SET Users = '0' WHERE id = ".$data['ID'].""); mysql_query("UPDATE `".$dbtable."` SET Share = '0' WHERE id = ".$data['ID'].""); } } mysql_close($mysql); ########end timer $mtime = microtime(); $mtime = explode(" ", $mtime); $mtime = $mtime[1] + $mtime[0]; $endtime = $mtime; $totaltime = ($endtime - $starttime); echo 'This page was created in ' .$totaltime. ' seconds.'; ?> |
|
|
Похожие темы
Тема | Ответов | Автор | Просмотров | Последнее сообщение | |
---|---|---|---|---|---|
От: Хаблисты От темы с ID: 5075 |
2 | feardc | 4 438 | 30.4.2016, 12:07 Посл. сообщение: feardc | |
Хаблисты Некоторое количество хаблистов |
9 | Enyby | 11 755 | 17.12.2011, 2:46 Посл. сообщение: Enyby | |
От: Хаблисты От темы с ID: 404 |
0 | absent | 3 617 | 30.11.2010, 1:40 Посл. сообщение: absent | |
От: Хаблисты От темы с ID: 404 |
0 | Accelerator | 4 465 | 21.4.2010, 6:47 Посл. сообщение: Accelerator | |
Хаблисты | 1 | KamoK | 6 035 | 1.12.2009, 11:54 Посл. сообщение: Артём |
|
Сейчас: 23.11.2024, 11:34 |