FlylinkDC++ и torrent

Разработка и поиск скриптов, обсуждение PtokaX.
Аватара пользователя
flylinkdc
Сообщения: 427
Зарегистрирован: 15 дек 2013, 10:26
Хаб: dchub://dc.fly-server.ru
Откуда: Караганда -> Липецк
Контактная информация:

FlylinkDC++ и torrent

Сообщение flylinkdc »

Научил флайлинк качать торренты.
Высказывайте идеи как эффективнее интегрировать эту возможность с DC++.
Планирую сделать обработку клика по магниту типа btih т.к. их иногда кидают в чат
пока прикручивал либу сделал первый маленький pull request в upstream
https://github.com/arvidn/libtorrent/co ... d030d54751

Код интеграции с libtorrent получается достаточно простой: пример закачки сериала (Olga.2016.SATRip.Files-x)

Код: Выделить всё

void DownloadManager::test_torrent()
{
        using namespace libtorrent;
        namespace lt = libtorrent;
	lt::error_code ec;
	lt::settings_pack l_sett;
	l_sett.set_int(lt::settings_pack::alert_mask
	               , lt::alert::error_notification
	               | lt::alert::storage_notification
	               | lt::alert::status_notification
	               | lt::alert::progress_notification
	               | lt::alert::peer_notification);
	m_torrent_settings = std::make_unique<lt::session_settings>();
	m_torrent_session = std::make_unique<lt::session>(l_sett);
	m_torrent_session->start_lsd();
	m_torrent_session->start_upnp();
	m_torrent_session->start_natpmp();	
	l_sett.set_str(settings_pack::listen_interfaces, "0.0.0.0:8999");
	lt::dht_settings dht;
	dht.privacy_lookups = true;
	m_torrent_session->set_dht_settings(dht);
	{
		m_torrent_settings->use_dht_as_fallback = false;		
		m_torrent_session->add_dht_router(std::make_pair(
		                                      std::string("router.bittorrent.com"), 6881));
		m_torrent_session->add_dht_router(std::make_pair(
		                                      std::string("router.utorrent.com"), 6881));
		m_torrent_session->add_dht_router(std::make_pair(
		                                      std::string("router.bitcomet.com"), 6881));		                                      
		m_torrent_session->start_dht();
	}
	m_torrent_settings->user_agent = "FlylinkDC++/" LIBTORRENT_VERSION;
	m_torrent_settings->choking_algorithm = session_settings::auto_expand_choker;
	m_torrent_settings->disk_cache_algorithm = session_settings::avoid_readback;
	m_torrent_settings->volatile_read_cache = false;
	m_torrent_session->set_settings(*m_torrent_settings);
	
	lt::add_torrent_params p;
	p.save_path = ".";
	p.url = "magnet:?xt=urn:btih:9017152afa06f5964c88faad524a6d443fdea787";
	
	if (ec)
	{
		dcdebug("%s\n", ec.message().c_str());
		dcassert(0);
	}
	m_torrent_session->add_torrent(p, ec);
	if (ec)
	{
		dcdebug("%s\n", ec.message().c_str());
		dcassert(0);
	}
}
Последний раз редактировалось flylinkdc 23 сен 2016, 13:34, всего редактировалось 1 раз.
Аватара пользователя
HackFresse
Сообщения: 507
Зарегистрирован: 02 фев 2010, 19:23

Сообщение HackFresse »

Не прошло и полгода.. )
Как эффективнее? А тут всё получается от ответа на простой вопрос - "а зачем вообще нужны торренты во флайлинке" ?
Аватара пользователя
Snaiper
Сообщения: 16
Зарегистрирован: 25 фев 2016, 07:39

Сообщение Snaiper »

HackFresse писал(а):Не прошло и полгода.. )
Как эффективнее? А тут всё получается от ответа на простой вопрос - "а зачем вообще нужны торренты во флайлинке" ?
Ты ваше кто такой, чтоб умничать тут?
Аватара пользователя
HackFresse
Сообщения: 507
Зарегистрирован: 02 фев 2010, 19:23

Сообщение HackFresse »

Я ваше Рафа из центра, а ты кто ваше?
Аватара пользователя
Snaiper
Сообщения: 16
Зарегистрирован: 25 фев 2016, 07:39

Сообщение Snaiper »

HackFresse писал(а):Я ваше Рафа из центра, а ты кто ваше?
потише сиди братишка!
Аватара пользователя
HackFresse
Сообщения: 507
Зарегистрирован: 02 фев 2010, 19:23

Сообщение HackFresse »

HackFresse писал(а):Как эффективнее? А тут всё получается от ответа на простой вопрос - "а зачем вообще нужны торренты во флайлинке" ?
Вопрос всё равно остаётся.
Полная реализация торрентов на низком уровне займёт очень много времени (учитывая текущую скорость разработки и внедрения фич - очень, очень много). Поэтому в самом начале нужно ответить на вопрос "что именно из торрентов нужно флайлинку", и потом уже думать, как именно это сделать.
dimetro
Сообщения: 11
Зарегистрирован: 23 авг 2012, 23:46

Сообщение dimetro »

Чтобы открывал файлы .torrent а не только магнет ссылки, полноценный DC++ & torrent клиент :-)
Аватара пользователя
HackFresse
Сообщения: 507
Зарегистрирован: 02 фев 2010, 19:23

Сообщение HackFresse »

Про "полноценный DC++ & torrent клиент" - это ты, конечно, размечтался )
Хотя да, было/есть несколько мультипротокольных комбайнов (Shareaza, MLDonkey), офигенной штукой c необычным подходом был LiveDС (https://geektimes.ru/post/181906/ , если кто не в курсе)

Но касательно FlylinkDC++... всё сложно. Хотя всё очень просто )

Добавить фичу, "чтобы открывал файлы .torrent" - задачка на пару часов максимум.
1) Взять готовый класс, который парсит контент .torrent-файла, скормить ему файл раздачи, на выходе получить массив имён файлов с путями и размерами, из него сформировать xml
2) В просмотрщике файл-листов убрать фильтр на записи без TTH, чтобы показывался контент файл-листа из пункта 1
3) В просмотрщике добавить на клик правой кнопкой мышки запуск поиска/скачивания файла по названию и размеру

Итого: открыли торрент-трекер, почитали описание, а контент скачали в DC. Стильно, модно, молодёжно (всё совсем наоборот =) ).
Аватара пользователя
flylinkdc
Сообщения: 427
Зарегистрирован: 15 дек 2013, 10:26
Хаб: dchub://dc.fly-server.ru
Откуда: Караганда -> Липецк
Контактная информация:

Сообщение flylinkdc »

HackFresse писал(а):Итого: открыли торрент-трекер, почитали описание, а контент скачали в DC. Стильно, модно, молодёжно
А зачем качать файл в сети DC - там вечная проблема с источниками и закрытыми портами.
проще сразу отдать torrent файл либе libtorrent
http://www.libtorrent.org/examples.html
она сама нативно скачает все с торрент клиентов.
там поддержка DHT, поиск локальных пиров и т.д.
на ее базе работают qBittorrent, Deluge, mediaget и т.д.
Аватара пользователя
HackFresse
Сообщения: 507
Зарегистрирован: 02 фев 2010, 19:23

Сообщение HackFresse »

Быстрый старт, сделать хоть что-то, начать хоть как-то

Потому что нельзя просто так взять и сделать "полноценный DC++ & torrent клиент ". Даже с готовой либой.
Чтобы использовать один и тот же интерфейс для закачки из разных сетей, нужен некий уровень абстракции, а FlylinkDC очень сильно захардкожен на использование только дц. Очень много рефакторинга нужно (а его в этом проекте не особо-то и любят).

Из "на ее базе работают qBittorrent, Deluge, mediaget и т.д." никак же не равно "взяли либу, и готовый торрент-клиент получился, только название поставить". Всё равно делать много чего нужно.

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

Сама тема, конечно, интересная и полезная, но либа была уже много лет как, а уверенность в её элементарной интеграции появилась только сейчас... Посмотрим, что получится))
Аватара пользователя
HackFresse
Сообщения: 507
Зарегистрирован: 02 фев 2010, 19:23

Сообщение HackFresse »

flylinkdc писал(а):А зачем качать файл в сети DC - там вечная проблема с источниками и закрытыми портами.
проще сразу отдать torrent файл либе libtorrent
она сама нативно скачает все с торрент клиентов.
там поддержка DHT, поиск локальных пиров и т.д.
То неловкое чувство, когда разработчик популярного DC-клиента жалуется на то, что в его разработке вечная проблема с закачкой, закрытыми портами и отключенном DHT :-D
Аватара пользователя
Snaiper
Сообщения: 16
Зарегистрирован: 25 фев 2016, 07:39

Сообщение Snaiper »

HackFresse писал(а):flylinkdc писал(а):А зачем качать файл в сети DC - там вечная проблема с источниками и закрытыми портами.
проще сразу отдать torrent файл либе libtorrent
она сама нативно скачает все с торрент клиентов.
там поддержка DHT, поиск локальных пиров и т.д.
То неловкое чувство, когда разработчик популярного DC-клиента жалуется на то, что в его разработке вечная проблема с закачкой, закрытыми портами и отключенном DHT
Ты падонак сетевой! Нука покажи свои заслуги в мире написания софта, сволач тока умеешь ванять тут!!!!
Аватара пользователя
HackFresse
Сообщения: 507
Зарегистрирован: 02 фев 2010, 19:23

Сообщение HackFresse »

Snaiper писал(а):HackFresse писал(а):flylinkdc писал(а):А зачем качать файл в сети DC - там вечная проблема с источниками и закрытыми портами.
проще сразу отдать torrent файл либе libtorrent
она сама нативно скачает все с торрент клиентов.
там поддержка DHT, поиск локальных пиров и т.д.
То неловкое чувство, когда разработчик популярного DC-клиента жалуется на то, что в его разработке вечная проблема с закачкой, закрытыми портами и отключенном DHT
Ты падонак сетевой! Нука покажи свои заслуги в мире написания софта, сволач тока умеешь ванять тут!!!!
Утибоземой! Как покраснел аж! Не надо, дурашка, успокойся, соберись с мыслями, да по делу скажи чего-нибудь, доводы какие-нибудь обоснованные приведи.
Не можешь? Суровая действительность так жестока.. Когда правду-матку режут, больно?
Аватара пользователя
Snaiper
Сообщения: 16
Зарегистрирован: 25 фев 2016, 07:39

Сообщение Snaiper »

HackFresse писал(а):нытик HackFresse писал(а):
Утибоземой! Как покраснел аж! Не надо, дурашка, успокойся, соберись с мыслями, да по делу скажи чего-нибудь, доводы какие-нибудь обоснованные приведи.
Не можешь? Суровая действительность так жестока.. Когда правду-матку режут, больно?
Иди уроки делай по математике, а не тут пиши людям выше тебя интеллектом, школьник 14 летний!
Аватара пользователя
HackFresse
Сообщения: 507
Зарегистрирован: 02 фев 2010, 19:23

Сообщение HackFresse »

Уроки по математике! Школьник!
Изображение
А по теме есть что сказать, или интеллекту на 15 лет, только дразниться и хватает?
Аватара пользователя
Snaiper
Сообщения: 16
Зарегистрирован: 25 фев 2016, 07:39

Сообщение Snaiper »

HackFresse писал(а):Уроки по математике! Школьник!

А по теме есть что сказать, или интеллекту на 15 лет, только дразниться и хватает?
Мальчик, глупый тролль ты, хочет из себя показать умника такого, сидит советы тут раскидывает бестолковые, шугливый иди улицу хоть посмотри, прогуляйся хотя бы!
Аватара пользователя
HackFresse
Сообщения: 507
Зарегистрирован: 02 фев 2010, 19:23

Сообщение HackFresse »

Советы как раз толковые, ты просто понять их не можешь.
Обоснованных хоть как-то мыслей по поводу торрентов в дц сформулировать не в состоянии, вот и агришься
Аватара пользователя
flylinkdc
Сообщения: 427
Зарегистрирован: 15 дек 2013, 10:26
Хаб: dchub://dc.fly-server.ru
Откуда: Караганда -> Липецк
Контактная информация:

Сообщение flylinkdc »

1. Научил открывать .torrent файлы: - пока через менюшку руками. (возможно стоит приделать сканирование каталога)
2. Флай сидит на раздаче пока не закрыли клиента. (не научился пока восстанавливать раздачу после перезапуска :)
3. Если не докачали большой файл/ы - после запуска идет длительный процесс проверки целостности (это все клиенты так делают?)
4. В окне передачи показываю только торрент сами файлы не пргрессю - их может быть много.

https://yadi.sk/i/edo4HeswvvyPp

Вопрос:
Кто знает сервисы по поиску торрент файлов или магнеток по имени/размеру/SHA1 файла?

2HackFresse - убери из темы эту рожу в красной рубашке.
Аватара пользователя
flylinkdc
Сообщения: 427
Зарегистрирован: 15 дек 2013, 10:26
Хаб: dchub://dc.fly-server.ru
Откуда: Караганда -> Липецк
Контактная информация:

Сообщение flylinkdc »

Еще обнаружил одну неприятность ссылки бывают очень длинными.
пример

http://kino-tor.org/torrent/526186/devj ... rip-itunes


magnet:?xt=urn:btih:c5e31d0c60206be872f6d51cf7f0b64ff83806ff&dn=rutor.info_%D0%94%D0%B5%D0%B2%D1%8F%D1%82%D0%B0%D1%8F+%D0%B6%D0%B8%D0%B7%D0%BD%D1%8C+%D0%9B%D1%83%D0%B8+%D0%94%D1%80%D0%B0%D0%BA%D1%81%D0%B0+%2F+The+9th+Life+of+Louis+Drax+%282016%29+WEB-DLRip+%7C+iTunes&tr=udp://opentor.org:2710&tr=udp://opentor.org:2710&tr=http://retracker.local/announce

если ее кинуть в чат - уродская птоха выдает
[13:41:47] <PtokaX> The message was too long !

:(
Наверно нужно учить флай сокращать ссылки на лету?
Аватара пользователя
HackFresse
Сообщения: 507
Зарегистрирован: 02 фев 2010, 19:23

Сообщение HackFresse »

1. Научил открывать .torrent файлы: - пока через менюшку руками. (возможно стоит приделать сканирование каталога)
Где посмотреть?
Спойлер
Изображение
Есть ли выбор, что именно качать из раздачи?
2. Флай сидит на раздаче пока не закрыли клиента. (не научился пока восстанавливать раздачу после перезапуска
Как и где смотреть список раздач, как ограничивать скорость/останавливать/удалять закачку/отдачу?
3. Если не докачали большой файл/ы - после запуска идет длительный процесс проверки целостности (это все клиенты так делают?)
Аналог пересчета ттх в дц после скачивания, переключатель можно попробовать поискать в документации
4. В окне передачи показываю только торрент сами файлы не пргрессю - их может быть много.
Мало того, что много, так еще и не понятно, что рисовать - закачка может идти фрагментированно (дефолтное поведение), в одном куске потока конец одного файла, весь второй и начало третьего файла
Кто знает сервисы по поиску торрент файлов или магнеток по имени/размеру/SHA1 файла?
Не нужно на них пока смотреть. Был btdigg.org ( https://habrahabr.ru/post/124496/), да помер. "Таки сабачка харошы быу....стольки малака давау "
Нагуглить альтернативы можно, но привязываться к ним не стоит. Сначала хотя бы базовый набор функций, а поиск альтернатив уже потом
убери из темы эту рожу в красной рубашке
Это для Snaiper, ему нравится. срач админы уберут, если тему почистить захотят, это я так, количество просмотров поднять
Еще обнаружил одну неприятность ссылки бывают очень длинными. ..если ее кинуть в чат - уродская птоха выдает [13:41:47] <PtokaX> The message was too long !
Это не птока уродская, а последствия внедрения лимитов для любителей копипасты. Грейлинк выдёт нотис перед отправкой, например
Спойлер
Изображение
Вопрос минорный, его нужно отдельно решать, что и как резать в строке, отправленной юзером в чат.
Аватара пользователя
flylinkdc
Сообщения: 427
Зарегистрирован: 15 дек 2013, 10:26
Хаб: dchub://dc.fly-server.ru
Откуда: Караганда -> Липецк
Контактная информация:

Сообщение flylinkdc »

Первая тест сборка доступна в авто обновлении на канале - бета.
Аватара пользователя
HackFresse
Сообщения: 507
Зарегистрирован: 02 фев 2010, 19:23

Сообщение HackFresse »

Результатом внедрения торрентов стало выпиливание дц-шной DHT. Наблюдение продолжаю
Аватара пользователя
flylinkdc
Сообщения: 427
Зарегистрирован: 15 дек 2013, 10:26
Хаб: dchub://dc.fly-server.ru
Откуда: Караганда -> Липецк
Контактная информация:

Сообщение flylinkdc »

А какая польза была от той DHT?
и почему ее не приняли в upstream http://dcplusplus.sourceforge.net/
Аватара пользователя
HackFresse
Сообщения: 507
Зарегистрирован: 02 фев 2010, 19:23

Сообщение HackFresse »

Печально, что эти вопросы задаёт не обычный юзер/домохозяйка, а сам разработчик программы для p2p файлообмена..
DHT характеризуется следующими свойствами:

Децентрализация: форма системы коллективных узлов без координации;
Масштабируемость: система будет одинаково эффективно функционировать при тысячах или миллионах узлов;
Отказоустойчивость: система будет одинаково надёжна (в некотором смысле) с узлами постоянно подключающимися, отключающимися и выдающими ошибки.
Число хабов снижается, число юзеров на хабах снижается.
А вот DHT как раз и нужен, чтобы найти источники для закачки файлов самостоятельно, в обход хабов и их ограничений на поиск, напрямую между клиентами.
Аватара пользователя
flylinkdc
Сообщения: 427
Зарегистрирован: 15 дек 2013, 10:26
Хаб: dchub://dc.fly-server.ru
Откуда: Караганда -> Липецк
Контактная информация:

Сообщение flylinkdc »

Цитировать из вик ты мастер, но ты не ответил на вопрос - почему DHT не приняли в upstream - оригинальный DC++?
Проблема в том, что реализация DHT от StrongDC++ не работала и только напрасно гоняла левый UDP-траф.
все кто остались в DC++ и имеют полезный контент и так сидят на топовых хабах которые сейчас простаивают без нагрузки.
кому нужно найти источники - сделает это и без DHT
у флая DHT активирован в libtorrent - там будет использоваться именно он.
и смысла держать еще один открытый UDP порт не вижу смысла.
Ответить