myDC.ru

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

 

> perl Net::DirectConnect

Рейтинг 5 V
Теги
Нет тегов для показа
pro
сообщение 29.1.2010, 0:11
Сообщение #21


Участник
**

Группа: Пользователи
Сообщений: 41
Регистрация: 8.1.2009
Пользователь №: 1 729
Спасибо сказали: 18 раз




Постепенно на перле пилится такая библиотека Net::DirectConnect.
сейчас умеется nmdc, adc, и даже микро-для-тестов- adc хаб .
в текущей версии - умеет раздавать файло и делать файллисты. в планах - раздавать не хуже и вместо microdc2
в examples/stat - такая собиралка статистики http://dc.proisk.ru/dcstat/

свежайшая версия - svn://svn.setun.net/dcppp/trunk
прошлые релизы - http://search.cpan.org/dist/Net-DirectConnect/

работает в windows, linux, freebsd, и наверно везде где есть перл. (в венде в mingw пока не собирается XS для tth - пока только cygwin)

в планах - доделать, оптимизировать, web морда, cli управление, авто сбор файллистов, встроенная статистика,итд
и много мыслей про децентрализацию, безхабную работу в пределах сегмента сети, [любые] другие хеши кроме tth итд.

а еще эта штука тоже на нем работает http://pro.setun.net/search/

может кому пригодится.


Спасибо сказали:
Go to the top of the page
+Quote Post
2 страниц V  < 1 2  
Начать новую тему
Ответов
Otshelnik-Fm
сообщение 9.2.2010, 20:20
Сообщение #22


Я коварный Санта Клаус
******

Группа: Пользователи
Сообщений: 523
Регистрация: 4.11.2008
Из: Саратов
Пользователь №: 985
Спасибо сказали: 54 раза




Самое популярное файло - порево... имхо.
Go to the top of the page
+Quote Post
mrsir
сообщение 10.2.2010, 15:36
Сообщение #23


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


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




Цитата(pro @ 9.2.2010, 6:14) *
сочинен вариант автоматически скачивающий самое популярное файло - examples/get.pl

сам алгоритм скачивания пока сырой, для лучшести рекомендуется перезапускать скрипт напрмиер каждый час.


Спасибо за модуль. Только жаль документации нет.
Пытаюсь написать бота, столкнулся с некоторыми проблемами:

При создании объекта указываю myport = 41111, но он все равно затирается тем, что по умолчанию прописан в модуле DirectConnect.pm
такая же фигня с атрибутом auto_connect. В перле я не очень хорошо разбираюсь, поэтому прошу помочь решить проблему.

код:

Раскрывающийся текст

Код
#!/usr/bin/perl

use 5.10.0;
use strict;
eval { use Time::HiRes qw(time sleep); };

use lib '../lib';

use Net::DirectConnect;    #::clihub;
use Data::Dumper;

$Data::Dumper::Sortkeys = $Data::Dumper::Useqq = $Data::Dumper::Indent = 1;

my $dc = Net::DirectConnect->new(
'host'           => 'dchub://192.168.186.10:411',
'M'            => 'A',
'myport'       => 41111,
'Nick'         => "spy",
'Pass'         => '123',
'S'           => 20,
'O'           => 0,
'lock'         => 'EXTENDEDPROTOCOLABCABCABCABCABCABC Pk=DCPLUSPLUS0.668ABCABC',
'cmd_sep'      => ' ',
'sharesize'    => 1000000000000,
'client'       => 'dc++',
'V'            => '0.777',
'description'  => 'spy',
'connection'   => 'LAN(T3)',
'email'           => '',
'flag'           => 1,
'log'          => sub(){},
'auto_GetINFO' => 0,
);

print 'myport='.$dc->{'myport'}."\n";

exit 0;


Go to the top of the page
+Quote Post
pro
сообщение 11.2.2010, 2:48
Сообщение #24


Участник
**

Группа: Пользователи
Сообщений: 41
Регистрация: 8.1.2009
Пользователь №: 1 729
Спасибо сказали: 18 раз




Исправлено.
'auto_connect' => 0, - теперь работает.
и любой myport.

svn up

Документацию пока рано делать и некогда, еще много переделывать-переименовывать..

по поводу примера - 'cmd_sep' => ' ', - лучше вообще не трогать, поломается протокол.


Спасибо сказали:
Go to the top of the page
+Quote Post
mrsir
сообщение 12.2.2010, 9:15
Сообщение #25


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


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




еще неплохо было бы добавить в метод search дополнительные параметры поиска - тип файлов, размер и тип поиска по размеру (больше, меньше, равно), а то сейчас приходится юзать sendcmd

и еще вопрос у меня такой - я юзаю бота в сети за NATом, использую порт форвардинг, настройки бота следующие:

M = A
myport = 5556
myport_udp = 5556
myip = 10.0.0.2 (IP файервола с порт форвардингом)

нужно ли какие-либо дополнительные параметры настраивать для использования за NATом? Дело в том, что результаты на поисковые запросы приходят, но их мало. Например, Linuxdc++ при поиске по слову russia возвращает ~800 результатов, а бот всеголишь ~400. Возможно остальное теряется из-за бага, но может я что-то забыл добавить?
Go to the top of the page
+Quote Post
pro
сообщение 13.2.2010, 3:14
Сообщение #26


Участник
**

Группа: Пользователи
Сообщений: 41
Регистрация: 8.1.2009
Пользователь №: 1 729
Спасибо сказали: 18 раз




доделал search -

$dc->search( 'lost', undef, 409483264 ); # F?T?409483264?1?lost !! search params in REVERSE order, second value - search type, autodetect if undef
что равно
$dc->search( 'lost', undef, 409483264, 'T', 'F' );

по поводу ната - вроде все похоже, почему так - надо дебажить.
например найти запрос с 10 результаттами и смотреть как и что принимает нормальный клиент, и сравнивать с ботом.



Спасибо сказали:
Go to the top of the page
+Quote Post
KenGuru
сообщение 16.2.2010, 11:24
Сообщение #27


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


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




Скажите, а умеет ли этот бот проводить поиск по tth?
т.е. есть файловый сервер, надо сделать так чтобы бот сканировал хаб на заданный tth и выводил статистику, что данный файл есть у таких-то юзеров в DC. Может кто-нить сталкивался.
Go to the top of the page
+Quote Post
mrsir
сообщение 16.2.2010, 13:01
Сообщение #28


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


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




Библиотека Net::DirectConnect позволяет делать поиск по ттх, достаточно при поиске в методе search указать искомый TTH
я так рассчитываю банить юзеров за порнушку
Go to the top of the page
+Quote Post
KenGuru
сообщение 16.2.2010, 13:17
Сообщение #29


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


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




А можно подробнее, если не трудно?
ситуация какова, у меня фряшка, я на ней распаковал библиотеку. Захожу в папку, запускаю stat.pl, он соединяется с нашим хабом, и вот тут вопрос, что дальше, как заставить его искать нужный tth?

P.S.: извините за настойчивость, я пока только учусь работать с unix'ами, буду крайне признателен за помощь=)
Go to the top of the page
+Quote Post
mrsir
сообщение 16.2.2010, 14:14
Сообщение #30


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


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




вот пример моего простого бота, который делает запрос по TTH и печатает результаты ответов

Раскрывающийся текст

Код
#!/usr/bin/perl

use 5.10.0;
use strict;
use IO::Socket::INET;
eval { use Time::HiRes qw(time sleep); };

use lib '../lib';

use Net::DirectConnect;    #::clihub;
use Data::Dumper;

$Data::Dumper::Sortkeys = $Data::Dumper::Useqq = $Data::Dumper::Indent = 1;

my $dc = Net::DirectConnect->new(
'host'           => 'dchub://example.ru:411',
'Nick'         => "Spy",
'Pass'         => '*****',
'M'            => 'A',
'reconnects'   => 500,

#следующие три параметра указывать если бот за NATом, на нате включить портфорвардинг
'myport'       => 4444,
'myport_udp'   => 4444,
'myip'           => '10.0.0.2',
################################
'S'           => 20,
'O'           => 0,
'sharesize'    => 1000099800000,

'client'       => 'dc++',

'V'            => '0.777',

'description'  => 'spy',
'connection'   => 'LAN(T3)',
'email'           => '',

'flag'           => 1,

'log'          => sub(){},

'auto_GetINFO' => 0,
);



#эта функция вызывается тогда когда к боту приходит поисковый запрос
$dc->{'handler'}{'Search'} = sub
{
    my $dc = shift;
    my $s = shift;
    #print $s."\n" if !($s =~ m/tth:/i);
};

#эта функция вызывается тогда когда к боту приходит результат на его(бота) поисковый запрос
$dc->{'handler'}{'SR'} = sub
{
    my $dc = shift;
    my %s = %{ $_[1] || return };
    if ($s{tth} ne '')
    {
        print $s{nick}.':::'.$s{filename}."\n";
    }
};

my $i = 0;
while ($dc->active())
{
    if ($i == 1000)
    {
        $dc->search('6U4DTAKUXPXNUXNS366T5CS7ALJZWRQ2PH4ZSMI');
    }
    
    $dc->work();
    $i++;
}

$dc->wait_finish();
$dc->disconnect();
exit 0;



Спасибо сказали:
Go to the top of the page
+Quote Post
mrsir
сообщение 25.2.2010, 12:04
Сообщение #31


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


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




Цитата(pro @ 29.1.2010, 2:11) *
Постепенно на перле пилится такая библиотека Net::DirectConnect.


Привет.
Хочу сделать еще одно предложение по расширению функционала:
Сейчас метод "get" загружает файл полностью, было бы неплохо реализовать частичную загрузку с указанного места в файле и указанное кол-во байт. Такая возможность нужна для получения информации о видео, аудио файле и т.д. Скачал первые 10 Кб - и все стало ясно))

Go to the top of the page
+Quote Post
pro
сообщение 20.7.2010, 3:29
Сообщение #32


Участник
**

Группа: Пользователи
Сообщений: 41
Регистрация: 8.1.2009
Пользователь №: 1 729
Спасибо сказали: 18 раз




.. не прошло и пол года, но теперь ->get умеет дополнительные параметры начала и размера файла.
не проверял.
в trunk.
Go to the top of the page
+Quote Post
omen
сообщение 3.8.2010, 18:30
Сообщение #33


Начинающий
*

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




А как настроить его под сервер хаба ?И что нужно делать,люди помогите
Go to the top of the page
+Quote Post
Saymon21
сообщение 9.8.2010, 20:24
Сообщение #34


Site Reliability Engineer
*********

Группа: Модераторы
Сообщений: 1 772
Регистрация: 27.6.2009
Из: Чувашия, г. Чебоксары
Пользователь №: 3 719
Спасибо сказали: 479 раз




Вопрос таковой, где прописывать адреса хабов, на которых нужно искать файлы??
Go to the top of the page
+Quote Post
HackFresse
сообщение 10.8.2010, 8:33
Сообщение #35


Продвинутый участник
****

Группа: Пользователи
Сообщений: 155
Регистрация: 11.1.2009
Пользователь №: 1 772
Спасибо сказали: 29 раз




вроде как в параметрах запуска, типа
perl crawler.pl dchub://hub.mydc.ru dchub://coolhub.sytes.net dchub://pashahub.ru
Go to the top of the page
+Quote Post

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

Collapse

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

  Тема Ответов Автор Просмотров Последнее сообщение
No New Posts Ищу специалиста на позицию Perl (Lua) developer
Московское представительство американской софтверной компании приглаша
0 Katteia 5 546 25.10.2012, 15:33 Посл. сообщение: Katteia
No New Posts пингер на perl
.
0 Lamo 7 782 5.8.2011, 23:30 Посл. сообщение: Lamo
No New Posts Документация DBHub - Написание скриптов на Perl
0 Артём 7 331 20.10.2010, 18:08 Посл. сообщение: Артём
No new Хаб на PHP или на Perl
29 omen 31 628 3.8.2010, 18:33 Посл. сообщение: omen

 



RSS Сейчас: 28.3.2024, 21:53