Поставил я себе недавно задачу — создать в локальной сети бота, который был бы установлен на само?м серверном компьютере, и управлялся бы, в идеале, через web-интерфейс, но можно и по SSH. Задача бота — круглосуточно сидеть на раздаче. При попытке найти такой DC++ клиент, я с огорчением обнаружил, что продуктов отвечавших моим требованиям пока нет. Ncdc и MicroDC2 так и не удалось запустить как демон, да и работали они со скрипом. В сторону MLDonkey не смотрел т.к. рассматривал его скорее как альтернативу торрент-клиенту Transmission, чем как клиент сетей DC++. А зря! Увидев на форумах, что народ ставит MLDonkey для сетей DirectConnect, я всё же решил попробовать.

Так как самый дорогой и невосполнимый ресурс у нас всех — время, результаты излагаю тут, в надежде, что Вам эта информация поможет избежать листания форумов, чтобы использовать это время на более продуктивные дела. Итак, приступим!

Найти инструкцию по установке не составило труда. Ставить будем на FreeBSD. Свежая версия всегда есть в портах, так что ставим оттуда:

cd /usr/ports/net-p2p/mldonkey-core/
make install clean

Прописываем в /etc/rc.conf загрузку как демон, а так же пользователя, в папке которого будет приложение:

echo 'mlnet_enable="YES"' >> /etc/rc.conf
echo 'mlnet_user="p2puser"' >> /etc/rc.conf

Т.к. указанного пользователя «p2puser» у нас нет, создадим его:

pw useradd p2puser -G wheel -s /bin/sh -m -d /home/p2puser

Перезагружаем, что бы система запустила программу как daemon. Проверяем запустился ли MLDonkey:

/usr/local/etc/rc.d/mlnet status
mlnet is running as pid 1133.

Если вместо «mlnet is running as pid nnnn» пишет «mlnet is not running.» — скорее всего проблема с пользователем. Либо он не создан, либо не прописан в /etc/rc.conf.

Теперь нашим MLDonkey нужно как-то управлять. Есть несколько вариантов, но предпочтительней всё же web-интерфейс. Им и займёмся. Для начала пропишем диапазон IP адресов, с которых будем подключаться к MLDonkey. Делается это через Telnet. Пока что у нас разрешен только один ip — 127.0.0.1, поэтому подключиться мы сейчас можем только с самого сервера. Для этого запускаем в консоли Telnet, регистрируем админа и прописываем адреса:

telnet 127.0.0.1 4000
> auth admin ""                  (*так пустые кавычки и оставляем*)
> passwd newpassword    (*вместо newpassword придумываем пароль*)
> set allowed_ips "127.0.0.1 192.168.1.0/255"
> save
> exit

Готово! Можно подключаться к MLDonkey по адресу вашего сервера, не забыв через двоеточие указать номер порта по умолчанию — 4080.

image

Судя по информации в интернете, дальше — каждый сам за себя. Информация отрывочная и неполная. Много времени ушло, чтобы хоть как-то собрать всё воедино, а кое-где и дойти самому.

И так, первым делом зайдём на вкладку «Options» и в появившемся окне выберем вкладку «Net». Отключаем там всё и включаем плагин DirectConnect:

image

Далее, во вкладке «Client» того же окна снимаем ограничения на скорость загрузки и отдачи, установив 0 (ноль) напротив пунктов:

max_hard_upload_rate = 0
max_hard_download_rate = 0
max_hard_upload_rate_2 = 0
max_hard_download_rate_2 = 0

Внимание! На строковых переменных, что бы ваша запись сохранилась, необходимо нажать Enter. Запись на долю секунды будет в красной рамке — признак того, что запись сохранена. В значениях типа True/False Enter нажимать не нужно.

Переходим во вкладку All, остальные настройки там. Меняем по порядку:

allow_browse_share = 2 (если хотите, что бы вашу шару просматривали не только друзья)
allow_local_network = true (что бы разрешить локальные сети)
upnp_port_forwarding = true (если нужно пробросить порты на роутере)
DC-dc_open_slots = 15 (по умолчанию стоит 2, это мало)
DC-login = Ваш логин на хабе
DC-default_encoding = CP1251 ( CP1251 — наиболее распространённая кодировка на русскоязычных хабах).

Готово! Теперь в командной строке MLDonkey (вверху строка) вводим команду dcn, что бы добавить новый хаб. Например:

dcn 192.168.1.42:411

И идём на вкладку «Servers» -> «All Servers»(в нижнем ряду). Там мы находим наш ещё не подключенный хаб. Нажимаем «conn» что бы подключиться:

image

На данном этапе, клиент уже должен быть подключен к хабу. Если этого не произошло, переходить к следующему шагу бессмысленно. Сначала подключитесь. Проблемы могут быть в правильности указания портов, кириллическом логине, настройке соединения. В общем ищите и найдёте.

Настало время расшарить файлы. Нажимаем кнопку «Options» и, в появившемся втором ряду, кнопку «shares». Появится три окна:

1. Список расшаренных папок
2. Комментарий о том, что две расшаренные папки должны иметь стратегию incoming_files и incoming_directories
3. Перечень стратегий, которые вы можете указать при расшаривании файлов.

Нас интересуйт самое верхнее, первое окно. Нажимаем в шапке этого окошка ссылку «Add Share» и в появившимся поле вводим через пробел: приоритет, путь к папке, стратегию. Приоритет я ставлю 0, смысла в нём пока не увидел. Путь к папке затруднений вызвать не должен. Ну и стратегию я ставлю самую полную «all_files», которая не накладывает никаких ограничений на размер, тип файлов и папок, а так же рекурсивно заходит в каждую вложенную папку. Как это выглядит у меня:

0 /labuda/downloads all_files

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

Если требуется указать пароль к хабу, придётся ещё попотеть. Надеюсь эту досадную недоработку скоро исправят, а пока идём таким путём:

1. Отключаем наш MLDonkey (Обязательно, иначе нужный нам файл перезапишется программой)

 /usr/local/etc/rc.d/mlnet stop

2. Редактируем файл /home/p2puser/.mldonkey/directconnect.ini заполнив поля:

(* Your login on DC (no spaces !!!) *)
login = "сюда логин" - в кавычках!

и

hubs_passwords = [
("адрес хаба", "логин", пароль);]

Адрес хаба и логин пишем в кавычках, пароль — без них. Естественно в кавычках пишем свои данные. В качестве адреса можно использовать как домен, так и IP-адрес. Номер порта указывать не надо!

3. Запускаем MLDonkey:

/usr/local/etc/rc.d/mlnet start

И снова подключаемся к хабу как показано выше. Если логин с паролем указаны правильно, а так же в логине нет кириллицы, проблем с подключением возникнуть не должно.

В заключение запустим сам плагин DirectConnect. В командной строке MLDonkey вводим команду dc и у нас появится новый ряд кнопок. Тут разобраться просто. Отметить хочется только одно. В появившемся окне вы увидите свой хаб. Если нажать в строке с хабом на слово «Set», клиент будет подключаться к данному хабу автоматически, но только если подключение не требует авторизации. Подключение с логином и паролем придётся устанавливать вручную — ещё одна детская болезнь плагина.

На этом всё. Надеюсь я сэкономил ваше время. Постараюсь и дальше делиться опытом, что бы и самому закрепить и помочь таким как я «естествоиспытателям».
Поделиться с друзьями
-->

Комментарии (7)


  1. ton1
    15.02.2017 17:42

    DC еще живо? фантастика)
    Так жалко было наблюдать за угасанием ослика…


    1. legioner
      16.02.2017 08:00

      Есть одно, ныне здравствующее, специфичное применение — провайдеры на DC++ делают сервис VOD. Поднимается хаб, сервера с контентом и web-сервер с интерфейсом. Клиентский софт представляет из себя гибрид браузера, DC-клиента и видео-плеера. Решение получается легко масштабируемым.


      1. hfrs
        19.02.2017 12:51

        А где можно увидеть пример такого решения? И есть ли какие-то подробности по технической части (на каком софте работают сервера с контентом, как передаётся контент, на чём написаны клиенты)?


        1. legioner
          21.02.2017 08:50

          Подробностей я особо не знаю. Суждение строится на поверхностном анализе логов работы плеера на брендированной iptv-приставке.


  1. siversky
    15.02.2017 17:42

    Интересная связка, жаль плагин не держит протокол adc и уж тем более adcs Тем не менее возник вопрос, чем конкретно не устроил ncdc? У меня уже не первый год отлично себе сидит весь серверный uptime под tmux (раньше screen)


    1. stasenso
      15.02.2017 18:11

      Ncdc мне не удалось запустить в качестве демона на FreeBSD, а так же хотелось именно web-интерфейс…


  1. Ivanii
    19.02.2017 12:51

    Лет 10 назад делал на фряхе «анонимную» раздавалку в DC, данные хранились на шифрованных дисках и там-же папочки с DC клиентами, запускались клиенты по крону в jail со своими МАК и IP адресами, больше подробностей уже не помню.