eiskaltdcpp/eiskaltdcpp-web

Connection to EiskaltDC++ daemon failed

Opened this issue · 16 comments

Привет. Решил попробовать. У меня на тестовом серваке стоит apache2, решил использовать его для доступа т.к. демон и так на той же машине.
Киданул для теста в /opt:

ls -l /opt/
итого 4,0K
drwxr-xr-x 4 www-data www-data 4,0K окт 18 22:59 eiskaltdcpp-web/

Создал алиас в конфиге апача edcpp на /opt/eiskaltdcpp-web/, заходит по http://192.168.0.1/edcpp/ нормально.
В config.js прописал "host" : "127.0.0.1"
Запускаю демон, и видно, что он запущен:

ss -plunt | column -t | grep 3121
tcp LISTEN 0 128 127.0.0.1:3121 : users:(("eiskaltdcpp-dae",pid=2528,fd=12))

Захожу в "EiskaltDC++ Web Frontend" и он пишет:

Connection to EiskaltDC++ daemon failed on http://127.0.0.1:3121

Потом с другова компьютера решил открыть, как в INSTALL написано, в config.js прописал 192.168.0.1 - всё так же.

Connection to EiskaltDC++ daemon failed on http://192.168.0.1:3121

iptables чист

В чем может быть проблема?

В config.js прописал "host" : "127.0.0.1"

В config.js должен быть указан внешний адрес сервера независимо от того откуда открывается index.html (по сети или с диска). В примере выше это будет:
"host" : "192.168.0.1",

В чем может быть проблема?

eiskaltdcpp-daemon точно собран с -DJSONRPC_DAEMON=ON?

Если да, то для отладки можно запустить демона с опцией --debug как-то так:
eiskaltdcpp-daemon --debug | tee /tmp/eiskaltdcpp-daemon.debug.log
Среди прочего, в этом логе будут все принимаемые демоном через json-rpc запросы.

Чтобы уменьшить количество лишних строк в этом логе, желательно предварительно отключить авто-подключение к большинству хабов.

В config.js должен быть указан внешний адрес сервера

Если я правильно помню, то такой вариант я тоже пробовал. В любом случае, по вашему совету, уже поставил "192.168.0.1".

eiskaltdcpp-daemon установлен из репозитория debian stretch (да, извеняюсь, надо было об этом написать)
судя по вашему (Maintainer: Boris Pek :-) ) файлу rules, то собран с "-DJSONRPC_DAEMON=ON"

       -DXMLRPC_DAEMON=OFF -DJSONRPC_DAEMON=ON \

:-)

Пробуем с отладкой:

$ eiskaltdcpp-daemon --debug | tee /tmp/eiskaltdcpp-daemon.debug.log
PATH_GLOBAL_CONFIG: /etc/
PATH_USER_CONFIG: /home/IvanTrtr/.config/eiskaltdc++/
PATH_USER_LOCAL: /home/IvanTrtr/.local/share/eiskaltdc++/
PATH_RESOURCES: /home/IvanTrtr/.config/eiskaltdc++/
PATH_LOCALE: /usr/share/locale
PATH_DOWNLOADS: /home/IvanTrtr/Downloads/
PATH_FILE_LISTS /home/IvanTrtr/.local/share/eiskaltdc++/FileLists/
PATH_HUB_LISTS: /home/IvanTrtr/.local/share/eiskaltdc++/HubLists/
PATH_NOTEPAD: /home/IvanTrtr/.config/eiskaltdc++/Notepad.txt
Starting eiskaltdcpp-daemon (EiskaltDC++ core 2.2) using /home/IvanTrtr/.config/eiskaltdc++/ as config directory and /home/IvanTrtr/.local/share/eiskaltdc++/ as local data directory.
Loading: Хеш базы данных
Loading: Расшаренные файлы
Loading: Очередь загрузок
Loading: Пользователи
eiskaltdcpp-daemon (EiskaltDC++ core 2.2) running...
JSONRPC: Start mongoose

Вариант "### Local usage ###" (dc находится на 192.168.0.1; клиент имеет 192.168.0.50; на клиенте, в файле config.js, прописано "192.168.0.1") и "### Remote usage ###" (в файле config.js, прописано "192.168.0.1") не работают.

Что показывает sudo nmap 192.168.0.1 -p 3121, запущенный с клиентского компа (192.168.0.50)?

Итак, запустил на 192.168.0.1 eiskaltdcpp-daemon -d

Проверим:

$ ss -plunt | grep 3121
tcp LISTEN 0 128 127.0.0.1:3121 : users:(("eiskaltdcpp-dae",pid=10604,fd=11))

Iptables с 192.168.0.1:

iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination

Chain FORWARD (policy ACCEPT)
target prot opt source destination

Chain OUTPUT (policy ACCEPT)
target prot opt source destination

Сканируем с 192.168.0.50 машину 192.168.0.1:

sudo nmap 192.168.0.1 -p 3121

Starting Nmap 7.60 ( https://nmap.org ) at 2017-10-20 14:35 MSK
Nmap scan report for 192.168.0.1
Host is up (0.00022s latency).

PORT STATE SERVICE
3121/tcp closed pcmk-remote
MAC Address: xx:xx:xx:xx:xx:xx (FirmaParanoid)

Nmap done: 1 IP address (1 host up) scanned in 13.60 seconds

Однако closed.

Вот тут незнаю почему closed, я ни чего не настраивал дополнительно (в плане защиты) ибо это ... ну, не важно, там же крутятся и другие службы, которые прекрасно "светятся" в сетку (например, dlna).

Вот теперь все ясно. Запускать нужно с явным указанием интерфейса для json-rpc:
eiskaltdcpp-daemon -L 192.168.0.1 -d
Я обновлю документацию...

Пока писал это вы уже написали про указание интерфейса, но:

Попробовал запустить так: eiskaltdcpp-daemon -P 3121 -L 192.168.0.1

Проверяем:

ss -plunt | grep 3121
tcp LISTEN 0 128 192.168.0.1:3121 : users:(("eiskaltdcpp-dae",pid=12265,fd=10))

Сканируем с 192.168.0.50 машину 192.168.0.1:

$ sudo nmap 192.168.0.1 -p 3121

Starting Nmap 7.60 ( https://nmap.org ) at 2017-10-20 14:54 MSK
Nmap scan report for 192.168.0.1
Host is up (0.00020s latency).

PORT STATE SERVICE
3121/tcp open pcmk-remote
MAC Address: xx:xx:xx:xx:xx:xx (FirmaParanoid)

Nmap done: 1 IP address (1 host up) scanned in 13.60 seconds

open, но всё равно такая же ошибка Connection to EiskaltDC++ daemon failed on http://192.168.0.1:3121

Запустил так: eiskaltdcpp-daemon -P 3121 -L 192.168.0.1 --debug | tee /tmp/eiskaltdcpp-daemon.debug.log

Вывод:

PATH_GLOBAL_CONFIG: /etc/
PATH_USER_CONFIG: /home/IvanTrtr/.config/eiskaltdc++/
PATH_USER_LOCAL: /home/IvanTrtr/.local/share/eiskaltdc++/
PATH_RESOURCES: /home/IvanTrtr/.config/eiskaltdc++/
PATH_LOCALE: /usr/share/locale
PATH_DOWNLOADS: /home/IvanTrtr/Downloads/
PATH_FILE_LISTS /home/IvanTrtr/.local/share/eiskaltdc++/FileLists/
PATH_HUB_LISTS: /home/IvanTrtr/.local/share/eiskaltdc++/HubLists/
PATH_NOTEPAD: /home/IvanTrtr/.config/eiskaltdc++/Notepad.txt
Starting eiskaltdcpp-daemon (EiskaltDC++ core 2.2) using /home/IvanTrtr/.config/eiskaltdc++/ as config directory and /home/IvanTrtr/.local/share/eiskaltdc++/ as local data directory.
Loading: Хеш базы данных
Loading: Расшаренные файлы
Loading: Очередь загрузок
Loading: Пользователи
eiskaltdcpp-daemon (EiskaltDC++ core 2.2) running...
JSONRPC: Start mongoose

При попыдках подкл. ничего не пишет.

Ради интереса, поднял виртуалку с чисым debian stretch (уже в другой сети), поставил там eiskaltdcpp-daemon.
Запустил так же eiskaltdcpp-daemon -P 3121 -L 172.16.0.1 --debug.
Воспользовался вариантом "### Local usage ###" с другой машины (естественно, в конф. файле указал 172.16.0.1, и она в сети 172.16), и получил такой же вариант.

Connection to EiskaltDC++ daemon failed on http://172.16.0.1:3121

Других идей пока нет. Можно попробовать с помощью eiskaltdcpp-cli-jsonrpc поключиться, чтобы понять на чьей стороне проблема (daemon или webui).

eiskaltdcpp-cli-jsonrpc
А где он должен быть установлен?
Судя по хелпу - на 198.168.0.1, да?

На всякий случай скрин из тестовой сети. Монитор firefox показыват, что он что-то пытается отправить.
https://imgur.com/a/7c5l4

А где он должен быть установлен?
Судя по хелпу - на 198.0.0.1, да?

Нет, на клиенте. Т.е. на том компе, с которого хотим достучаться до сервера с демоном.
Нужно не забыть скопировать и отредактировать конфиг:
~/.config/eiskaltdc++/cli-jsonrpc-config.pl

Так. Поставил на клиент (192.168.0.50) eiskaltdcpp-cli.
Скопировал файл /usr/share/eiskaltdcpp/cli/cli-jsonrpc-config.pl в ~/.config/eiskaltdc++/cli-jsonrpc-config.pl
Отредактировал конфиг: $config{'eiskaltHostPort'}="192.168.0.1:3121";

Запускаю демон на 192.168.0.1:

eiskaltdcpp-daemon -P 3121 -L 192.168.0.1 --debug | tee /tmp/eiskaltdcpp-daemon.debug.log
PATH_GLOBAL_CONFIG: /etc/
            PATH_USER_CONFIG: /home/IvanTrtr/.config/eiskaltdc++/
            PATH_USER_LOCAL: /home/IvanTrtr/.local/share/eiskaltdc++/
            PATH_RESOURCES: /home/IvanTrtr/.config/eiskaltdc++/
            PATH_LOCALE: /usr/share/locale
            PATH_DOWNLOADS: /home/IvanTrtr/Downloads/
            PATH_FILE_LISTS /home/IvanTrtr/.local/share/eiskaltdc++/FileLists/
            PATH_HUB_LISTS: /home/IvanTrtr/.local/share/eiskaltdc++/HubLists/
            PATH_NOTEPAD: /home/IvanTrtr/.config/eiskaltdc++/Notepad.txt
Starting eiskaltdcpp-daemon (EiskaltDC++ core 2.2) using /home/IvanTrtr/.config/eiskaltdc++/ as config directory and /home/IvanTrtr/.local/share/eiskaltdc++/ as local data directory.
Loading: Хеш базы данных
Loading: Расшаренные файлы
Loading: Очередь загрузок
Loading: Пользователи
eiskaltdcpp-daemon (EiskaltDC++ core 2.2) running...
JSONRPC: Start mongoose

На клиенте (192.168.0.50) запускаю eiskaltdcpp-cli-jsonrpc.
Проверяем что-нибудь:

# show.version
===Reply===
2.2.9 (stable)
# 

Лог --debug:

 ShowVersion (root): 
{
	"id" : 60211,
	"jsonrpc" : "2.0",
	"method" : "show.version",
	"version" : "2.0"
}
 
 ShowVersion (response): 
{
	"id" : 60211,
	"jsonrpc" : "2.0",
	"result" : "2.2.9 (stable)"
}

Если я всё правильно понял, то получается, что cli нормально подк. к демону.

Значит, что-то не так с webui.

У меня в домашней локалке он работает нормально. Буквально сегодня ночью тестировал.

Единственное несущественное отличие -- я демона сразу на всех интерфейсах запускаю:
eiskaltdcpp-daemon -L 0.0.0.0

Ясно. Жаль конечно ( -L 0.0.0.0, естественное мне не помог). Очень нехватает клиента для демона. Иногда приходится через ssh -x "прыгать" между демоном и gui-версии.

Я в сетях 0, но если я правильно посмотрел дамп сетевого анализатора, с фильтром на порт 3121, то даже с ошибкой видно, что какие-то данные отправляются и получаются между 192.168.0.1 и 192.168.0.50 постоянно (ну, т.е. пока открыта страница).

Я в программировании 0, но может что доустановить надо или может в браузере дело? (исп. firefox-esr из debian stretch)

подытожим.
Сервер с демоном (192.168.0.1). К нему не может получить доступ клиент apache2, который там же находится (192.168.0.1).
Клиент (192.168.0.50) не может получить доступ к демону dc (192.168.0.1).
И клиент (192.168.0.50) не может получить доступ к демону, который находится (для теста поставил) на клиенте (192.168.0.50).

Я в сетях 0, но если я правильно посмотрел дамп сетевого анализатора, с фильтром на порт 3121, то даже с ошибкой видно, что какие-то данные отправляются и получаются между 192.168.0.1 и 192.168.0.50 постоянно (ну, т.е. пока открыта страница).

А если со стороны сервера посмотреть?

Я в программировании 0, но может что доустановить надо или может в браузере дело? (исп. firefox-esr из debian stretch)

У меня тоже firefox-esr в качестве основного браузера. Chromium только для тестов и ютуба запускаю. Система -- Debian Sid.

Доустанавливать тоже ничего не нужно. Все используемые javascript библиотеки сейчас есть в этом репозитории.

Я наконец нашел в чем проблема: формат некоторых json-пакетов изменился со времен релиза EiskaltDC++ 2.2.9. У меня-то сейчас демон версии 2.2.10-180-g4c9cbf20 и проверял работу я именно с ним. Надо будет исправить README, а то он не соответствует действительности.

Соответственно, вариантов решения проблемы два:

  1. Собрать свежую версию демона из git репы или поставить пакеты из ежедневных сборок.
  2. Дождаться выхода EiskaltDC++ 2.4.0.