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 destinationChain FORWARD (policy ACCEPT)
target prot opt source destinationChain 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, а то он не соответствует действительности.
Соответственно, вариантов решения проблемы два:
- Собрать свежую версию демона из git репы или поставить пакеты из ежедневных сборок.
- Дождаться выхода EiskaltDC++ 2.4.0.