myDC.ru

Здравствуйте, гость ( Вход | Регистрация )

 
5 страниц V  « < 2 3 4 5 >  
Ответить в данную темуНачать новую тему

> Хаблисты

Enyby
сообщение 30.7.2010, 15:30
Сообщение #61


Освоившийся участник
*****

Группа: Пользователи
Сообщений: 391
Регистрация: 4.11.2009
Из: Дом
Пользователь №: 4 923
Спасибо сказали: 239 раз




За основу я действительно брал какой-то кривой клиент на php. Но находил его я не здесь, и большую часть просто выкинул. Он мне только помог разобраться с тем, как нужно в принципе работать. ОСтальное пришлось писать с нуля.

Теперь по поводу Вашего решения. Какой там пингер, мой или это еще чья-то разработка?

Странно что на 10 хабов уходит 7 минут.
Go to the top of the page
+Quote Post
Снегов
сообщение 30.7.2010, 16:47
Сообщение #62


Абсолютный новичок


Группа: Пользователи
Сообщений: 6
Регистрация: 5.3.2010
Пользователь №: 6 268
Спасибо сказали: 0 раз




пингер тот который и у вас был до модификации
Go to the top of the page
+Quote Post
Enyby
сообщение 31.7.2010, 8:17
Сообщение #63


Освоившийся участник
*****

Группа: Пользователи
Сообщений: 391
Регистрация: 4.11.2009
Из: Дом
Пользователь №: 4 923
Спасибо сказали: 239 раз




Т. е. из сообщения №21?

Приведите код, как вы его вызываете.
Go to the top of the page
+Quote Post
Снегов
сообщение 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;
}
Go to the top of the page
+Quote Post
Enyby
сообщение 31.7.2010, 9:58
Сообщение #65


Освоившийся участник
*****

Группа: Пользователи
Сообщений: 391
Регистрация: 4.11.2009
Из: Дом
Пользователь №: 4 923
Спасибо сказали: 239 раз




Это что?
Go to the top of the page
+Quote Post
dro
сообщение 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);
Go to the top of the page
+Quote Post
Nickolya
сообщение 16.8.2010, 16:30
Сообщение #67


Главный ра******й тут...
*********

Группа: Главные администраторы
Сообщений: 1 727
Регистрация: 18.5.2008
Из: RF, 2la
Пользователь №: 1
Спасибо сказали: 776 раз




В $Supports ты определяешь BotInfo, если хаб его не поддерживает (не разрешает "пинг с хаблистов"), то он выкидывает клиента. Описание этой команды в протоколе здесь.
Go to the top of the page
+Quote Post
Setuper
сообщение 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
Go to the top of the page
+Quote Post
dro
сообщение 16.8.2010, 20:03
Сообщение #69


Начинающий
*

Группа: Пользователи
Сообщений: 13
Регистрация: 16.8.2010
Пользователь №: 7 500
Спасибо сказали: 0 раз




Тогда я не понимаю каким образом можно снять пар-ры хаба?
топик,максимум юзеров. админа.
Go to the top of the page
+Quote Post
Setuper
сообщение 16.8.2010, 20:16
Сообщение #70


RusHub team lead
**************

Группа: Модераторы
Сообщений: 4 030
Регистрация: 20.6.2008
Из: г. Королёв (Моск. обл.)
Пользователь №: 46
Спасибо сказали: 1708 раз




Можно только войдя на хаб. Пингеры так и делают.
Go to the top of the page
+Quote Post
dro
сообщение 16.8.2010, 21:25
Сообщение #71


Начинающий
*

Группа: Пользователи
Сообщений: 13
Регистрация: 16.8.2010
Пользователь №: 7 500
Спасибо сказали: 0 раз




Дак это получает после $ValidateNick ?
Go to the top of the page
+Quote Post
Enyby
сообщение 16.8.2010, 22:06
Сообщение #72


Освоившийся участник
*****

Группа: Пользователи
Сообщений: 391
Регистрация: 4.11.2009
Из: Дом
Пользователь №: 4 923
Спасибо сказали: 239 раз




Да. Тебе сюда: http://mydc.ru/topic915.html Спойлер под темой "Общая (обязательная) последовательность входа на хаб.
"Рукопожатие" между клиентом и хабом."
Go to the top of the page
+Quote Post
dro
сообщение 17.8.2010, 9:24
Сообщение #73


Начинающий
*

Группа: Пользователи
Сообщений: 13
Регистрация: 16.8.2010
Пользователь №: 7 500
Спасибо сказали: 0 раз




хоть убейте но не дает мне хаб о себе информации

Код
Хаб ---> Клиент ($HubINFO)

Описание:

Данная команда нужна для получения более полной информации о хабе.

[Описание_бота] - может быть любой строкой, обычно это информация об адресе или хаб-листе.
[Имя_хаба], [Адрес_хаба] и [Описание_хаба] - это пункты, которые будут показаны в хаб-листе (некоторые хабы имеют несколько адресов это помогает определит главный адрес). Описание хабов меняется часто, поэтому требует частого обновления.
[Макс_юзеров], [Мин_шара], [Мин_слотов], [Макс_хабов] - соответственно максимально допустимое число пользователей, минимально допустимая шара на хабе, минимальное число слотов, максимальное число подключенных хабов.
[Тип] - этот параметр даёт информацию о программе, под управлением которой работает хаб.
[Владелец] - владелец хаба или email адрес владельца хаба
Go to the top of the page
+Quote Post
Setuper
сообщение 17.8.2010, 12:06
Сообщение #74


RusHub team lead
**************

Группа: Модераторы
Сообщений: 4 030
Регистрация: 20.6.2008
Из: г. Королёв (Моск. обл.)
Пользователь №: 46
Спасибо сказали: 1708 раз




Раз не даёт, значит тому 2 причины:
1) ты не правильно запрашиваешь
2) хаб не подерживает пинги или они просто отключены.
Go to the top of the page
+Quote Post
dro
сообщение 17.8.2010, 12:07
Сообщение #75


Начинающий
*

Группа: Пользователи
Сообщений: 13
Регистрация: 16.8.2010
Пользователь №: 7 500
Спасибо сказали: 0 раз




Видимо 1. Потому как хаб держит пинги 100%
Go to the top of the page
+Quote Post
Enyby
сообщение 17.8.2010, 21:31
Сообщение #76


Освоившийся участник
*****

Группа: Пользователи
Сообщений: 391
Регистрация: 4.11.2009
Из: Дом
Пользователь №: 4 923
Спасибо сказали: 239 раз




Сделай вывод куда-нибудь, всего что отправляешь и что получаешь от хаба, а потом смотри формат протокола.
Go to the top of the page
+Quote Post
dro
сообщение 18.8.2010, 22:19
Сообщение #77


Начинающий
*

Группа: Пользователи
Сообщений: 13
Регистрация: 16.8.2010
Пользователь №: 7 500
Спасибо сказали: 0 раз




Теперь все отлично летает, нашел пару изъянов.
Enyby вы в сокетах какое максимальное количество байтов используете?

Да и кстати бывает так что хаб вроде бы онлайн, но данные не отдает т.к. хаб занят и не пустил бота, думаю что в этом случае делать
Go to the top of the page
+Quote Post
Ksan
сообщение 18.8.2010, 23:35
Сообщение #78


Белый Волк
*********

Группа: Пользователи
Сообщений: 1 723
Регистрация: 11.9.2008
Из: г.Томск
Пользователь №: 516
Спасибо сказали: 657 раз




Если стоит галочка в настройках хаба - "Не разрешать пинг с хаблиста", то вряд ли ты что-то придумаешь..
Go to the top of the page
+Quote Post
Enyby
сообщение 18.8.2010, 23:56
Сообщение #79


Освоившийся участник
*****

Группа: Пользователи
Сообщений: 391
Регистрация: 4.11.2009
Из: Дом
Пользователь №: 4 923
Спасибо сказали: 239 раз




Цитата(dro @ 18.8.2010, 21:19) *
Enyby вы в сокетах какое максимальное количество байтов используете?

Это вы о чем? Если о буфере для чтения - 2048 байт. Буфер записи - строка, которая не имеет никаких особых ограничений.

Цитата(dro @ 18.8.2010, 21:19) *
Да и кстати бывает так что хаб вроде бы онлайн, но данные не отдает т.к. хаб занят и не пустил бота, думаю что в этом случае делать

Бывает разное. Бывает что соединение плохое или хаб сильно занят, тут вы ничего не сделаете. Бывает что пингер запрещен, тогда нужно заходить как обычным клиентом. Бывает что заполнен лимит юзеров, тогда надо сделать аккаунт и использовать авторизацию, поскольку обычно зарегистрированные пользователи могут входить на заполненный хаб. И т. д.
Go to the top of the page
+Quote Post
dro
сообщение 19.8.2010, 8:27
Сообщение #80


Начинающий
*

Группа: Пользователи
Сообщений: 13
Регистрация: 16.8.2010
Пользователь №: 7 500
Спасибо сказали: 0 раз




Цитата(Enyby @ 19.8.2010, 0:56) *
Это вы о чем? Если о буфере для чтения - 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("<", "&lt;", $hubinfo[1]);
$hubinfo[1] = str_replace(">", "&gt;", $hubinfo[1]);
$hubinfo[3] = str_replace("<", "&lt;", $hubinfo[3]);
$hubinfo[3] = str_replace(">", "&gt;", $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.';

?>

Go to the top of the page
+Quote Post

5 страниц V  « < 2 3 4 5 >
Ответить в данную темуНачать новую тему
6 чел. читают эту тему (гостей: 6, скрытых пользователей: 0)
Пользователей: 0

Collapse

> Похожие темы

  Тема Ответов Автор Просмотров Последнее сообщение
No New Posts От: Хаблисты
От темы с ID: 5075
2 feardc 4 456 30.4.2016, 12:07 Посл. сообщение: feardc
No New Posts Topic has attachmentsХаблисты
Некоторое количество хаблистов
9 Enyby 11 792 17.12.2011, 2:46 Посл. сообщение: Enyby
No New Posts От: Хаблисты
От темы с ID: 404
0 absent 3 626 30.11.2010, 1:40 Посл. сообщение: absent
No New Posts От: Хаблисты
От темы с ID: 404
0 Accelerator 4 482 21.4.2010, 6:47 Посл. сообщение: Accelerator
No New Posts Хаблисты
1 KamoK 6 047 1.12.2009, 11:54 Посл. сообщение: Артём

 



RSS Сейчас: 27.11.2024, 4:41