perl Net::DirectConnect |
Здравствуйте, гость ( Вход | Регистрация )
perl Net::DirectConnect |
29.1.2010, 0:11
Сообщение
#21
|
|
Участник Группа: Пользователи Сообщений: 41 Регистрация: 8.1.2009 Пользователь №: 1 729 Спасибо сказали: 18 раз |
Постепенно на перле пилится такая библиотека Net::DirectConnect.
сейчас умеется nmdc, adc, и даже микро-для-тестов- adc хаб . в текущей версии - умеет раздавать файло и делать файллисты. в планах - раздавать не хуже и вместо microdc2 в examples/stat - такая собиралка статистики свежайшая версия - svn://svn.setun.net/dcppp/trunk прошлые релизы - работает в windows, linux, freebsd, и наверно везде где есть перл. (в венде в mingw пока не собирается XS для tth - пока только cygwin) в планах - доделать, оптимизировать, web морда, cli управление, авто сбор файллистов, встроенная статистика,итд и много мыслей про децентрализацию, безхабную работу в пределах сегмента сети, [любые] другие хеши кроме tth итд. а еще эта штука тоже на нем работает может кому пригодится. |
|
|
9.2.2010, 20:20
Сообщение
#22
|
|
Я коварный Санта Клаус Группа: Пользователи Сообщений: 523 Регистрация: 4.11.2008 Из: Саратов Пользователь №: 985 Спасибо сказали: 54 раза |
Самое популярное файло - порево... имхо.
|
|
|
10.2.2010, 15:36
Сообщение
#23
|
|
Абсолютный новичок Группа: Пользователи Сообщений: 5 Регистрация: 10.2.2010 Пользователь №: 6 016 Спасибо сказали: 1 раз |
сочинен вариант автоматически скачивающий самое популярное файло - 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; |
|
|
11.2.2010, 2:48
Сообщение
#24
|
|
Участник Группа: Пользователи Сообщений: 41 Регистрация: 8.1.2009 Пользователь №: 1 729 Спасибо сказали: 18 раз |
Исправлено.
'auto_connect' => 0, - теперь работает. и любой myport. svn up Документацию пока рано делать и некогда, еще много переделывать-переименовывать.. по поводу примера - 'cmd_sep' => ' ', - лучше вообще не трогать, поломается протокол. |
|
|
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. Возможно остальное теряется из-за бага, но может я что-то забыл добавить? |
|
|
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 результаттами и смотреть как и что принимает нормальный клиент, и сравнивать с ботом. |
|
|
16.2.2010, 11:24
Сообщение
#27
|
|
Абсолютный новичок Группа: Пользователи Сообщений: 2 Регистрация: 16.2.2010 Пользователь №: 6 098 Спасибо сказали: 0 раз |
Скажите, а умеет ли этот бот проводить поиск по tth?
т.е. есть файловый сервер, надо сделать так чтобы бот сканировал хаб на заданный tth и выводил статистику, что данный файл есть у таких-то юзеров в DC. Может кто-нить сталкивался. |
|
|
16.2.2010, 13:01
Сообщение
#28
|
|
Абсолютный новичок Группа: Пользователи Сообщений: 5 Регистрация: 10.2.2010 Пользователь №: 6 016 Спасибо сказали: 1 раз |
Библиотека Net::DirectConnect позволяет делать поиск по ттх, достаточно при поиске в методе search указать искомый TTH
я так рассчитываю банить юзеров за порнушку |
|
|
16.2.2010, 13:17
Сообщение
#29
|
|
Абсолютный новичок Группа: Пользователи Сообщений: 2 Регистрация: 16.2.2010 Пользователь №: 6 098 Спасибо сказали: 0 раз |
А можно подробнее, если не трудно?
ситуация какова, у меня фряшка, я на ней распаковал библиотеку. Захожу в папку, запускаю stat.pl, он соединяется с нашим хабом, и вот тут вопрос, что дальше, как заставить его искать нужный tth? P.S.: извините за настойчивость, я пока только учусь работать с unix'ами, буду крайне признателен за помощь=) |
|
|
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; |
|
|
25.2.2010, 12:04
Сообщение
#31
|
|
Абсолютный новичок Группа: Пользователи Сообщений: 5 Регистрация: 10.2.2010 Пользователь №: 6 016 Спасибо сказали: 1 раз |
Постепенно на перле пилится такая библиотека Net::DirectConnect. Привет. Хочу сделать еще одно предложение по расширению функционала: Сейчас метод "get" загружает файл полностью, было бы неплохо реализовать частичную загрузку с указанного места в файле и указанное кол-во байт. Такая возможность нужна для получения информации о видео, аудио файле и т.д. Скачал первые 10 Кб - и все стало ясно)) |
|
|
20.7.2010, 3:29
Сообщение
#32
|
|
Участник Группа: Пользователи Сообщений: 41 Регистрация: 8.1.2009 Пользователь №: 1 729 Спасибо сказали: 18 раз |
.. не прошло и пол года, но теперь ->get умеет дополнительные параметры начала и размера файла.
не проверял. в trunk. |
|
|
3.8.2010, 18:30
Сообщение
#33
|
|
Начинающий Группа: Пользователи Сообщений: 18 Регистрация: 9.11.2009 Пользователь №: 4 975 Спасибо сказали: 0 раз |
А как настроить его под сервер хаба ?И что нужно делать,люди помогите
|
|
|
9.8.2010, 20:24
Сообщение
#34
|
|
Site Reliability Engineer Группа: Модераторы Сообщений: 1 772 Регистрация: 27.6.2009 Из: Чувашия, г. Чебоксары Пользователь №: 3 719 Спасибо сказали: 479 раз |
Вопрос таковой, где прописывать адреса хабов, на которых нужно искать файлы??
|
|
|
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 |
|
|
Похожие темы
Тема | Ответов | Автор | Просмотров | Последнее сообщение | |
---|---|---|---|---|---|
Ищу специалиста на позицию Perl (Lua) developer Московское представительство американской софтверной компании приглаша |
0 | Katteia | 5 840 | 25.10.2012, 15:33 Посл. сообщение: Katteia | |
пингер на perl . |
0 | Lamo | 8 116 | 5.8.2011, 23:30 Посл. сообщение: Lamo | |
Документация DBHub - Написание скриптов на Perl | 0 | Артём | 7 673 | 20.10.2010, 18:08 Посл. сообщение: Артём | |
Хаб на PHP или на Perl | 29 | omen | 33 746 | 3.8.2010, 18:33 Посл. сообщение: omen |
|
Сейчас: 27.11.2024, 1:50 |