microdc2 0.15.4

Консольный клиент для *nix систем.
Поддержка TTH и некоторых расширений ADC

пара вопросов по microdc2

Большое спасибо Владимиру за создание консольного клиента DC++ с поддержкой TTH.
При запуске microdc2 на машине с FreeBSD6 у меня возник ряд вопросов:
1. где можно посмотреть все опции конфигурационного файла (вероятно
часть следующих вопросов вызвана именно незнанием всех опций конфига)?
2. как ограничить скорость скачивания с клиента (аналог опции --upload
в dctc)
3. как определить порт входящих соединений (аналог опции -p в dctc)
4. как сделать microdc2 фоновым процессом.

1) конфиг

1) конфиг стандартен с DC++/linuxDC++ если я правильно помню
2) никак пока
3) см 1
4) стандартный *nix путь - microdc &

Объясните

Объясните тупому как у этого клиента работает TTH я так и не понял если честно , спасибо

vdkri

vdkri wrote:
Объясните тупому как у этого клиента работает TTH я так и не понял если честно , спасибо
share директория

BECHA wrote:
1. где можно посмотреть все опции конфигурационного файла (вероятно
часть следующих вопросов вызвана именно незнанием всех опций конфига)?
В конфиге используются те же команды, что и в интерфейсе. Следовательно, смотреть в интерфейсе:
set

BECHA wrote:
3. как определить порт входящих соединений (аналог опции -p в dctc)
set listenport порт

microdc2 - TTH глючит?

Собрал microdc2-0.15.6 для "железного" файл-сервера QNAP TS-101
(на базе PowerPC, ядро Linux 2.6.12, ucLibc, busybox)

Долго мучался с русскими буквами - вроде победил -
все работает, но теперь наткнулся на новую проблему -
TTH считается неправильно.

Когда скачиваешь с него файл, то ApexDC говорит
"TTH inconsensty", хотя скачанный файл совпадает
байт в байт.

Утилитка TTHSUM выдают разные хэши на PC и QNAP.

Я знаю, что microdc2 нормально работает на PC -
проблема в конкретном скомпильнутом бинарнике...

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

покурить сорцы

покурить сорцы TTHSUM

Все проще оказалось

Quote:
покурить сорцы TTHSUM

Там configure настолько тупое,
что больших индийских не понимает...
(в смысле big endian)

Честно говоря, я в этих скриптах - не очень,
(программирую много, но в основном в "embedded"
без осей и наворотов, ну и виндах)

мне проще было воткнуть #define руками...
Так что свою проблему я решил.

Если кто-то из линуховых гуру заинтересован,
может скажет, как подправить правильно,
чтобы портируемость сохранить.
(патчик там... или как там принято???)

Чтоб народ на те же грабли не вставал...

показывай чего

показывай чего наделал. и на мыло разрабу microdc2. тупо описание проблемы и diff, думаю он сам решит как лучше фиксить

Quote:показывай

Quote:
показывай чего наделал.

Да тупо после запуска конфигуре
в начало config.h воткнул
#define WORDS_BIGENDIAN 1
и потом мэйк, как обычно...

Но это же непортируемо...
Да и вообще, должно, типа, само работать :)))

Quote:
и на мыло разрабу microdc2

Написал сразу же, естественно...

Вообще говоря,

Вообще говоря, нормальный софт должен сам уметь определять big-endian.

тык

Как запустить

Как запустить его в фоне? У меня есть сервера, которые нужно подключить к хабу, там кроме как отдавать файлы ничего ненужно... ПРобовал и & и nohup - ничего не выходит, клиент вываливается :(

Уже сам

Уже сам нашел...кому интересно - run-скрипт для gentoo

#!/sbin/runscript

depend() {
use net
}
start() {
ebegin "Starting microdc2"
/usr/bin/screen -d -m /usr/local/bin/microdc2
eend $? "Failed to start microdc2"
}
stop() {
ebegin "Stopping microdc2"
kill -9 `pidof SCREEN`
screen -wipe
/etc/init.d/microdc2 zap
eend $? "Failed to stop microdc2"
}


microdc2 under FreeBSD

Решил поделится может кому-нибудь и пригодится. Используется сугубо для раздачи контента. Запущено в фоновом режиме и никакого внимания не требует. Расшарено 700+ Gb
Система
FreeBSD 6.3-RELEASE #0: Wed Jan 16 04:18:52 UTC 2008
CPU: AMD Athlon(tm) XP 2500+ (1836.13-MHz 686-class CPU)
real memory = 1073676288 (1023 MB)
Мой конфигурационный файл
gw# ee /usr/home/duty/.microdc2/config

set filesystem_charset koi8-r
set hub_charset cp1251
set log_charset koi8-r
set auto_reconnect on
set filelist_refresh_interval 600
set display searchresults
set log searchresults
share /usr/home/ftp/pub/
set downloaddir /tmp/
set listingdir /tmp/
set nick Nick
set password password
set description "Me just BOT. Don't talk with me!"
set email me@mydomen.ru
set logfile /var/log/microdc.log
set slots 100
set speed LAN(T3)
set active on
#set listenport 2477
connect адрес_хаба 

Для запуска при загрузке системы добавлен скрипт в /usr/local/etc/rc.d/, запускаем из под screen под пользователем duty (у вас как хотите), добавлена проверка на живость процесса microdc2 (переодически вылетает, не понял почему, решил не понимать а просто запускать заново)
gw# cat /usr/local/etc/rc.d/microdc2.sh

#!/bin/sh
if [ `ps -ax|grep "/usr/local/bin/microdc2"|grep -v '.sh'|grep -v grep|wc -l` -eq 0 ]; then
/usr/local/bin/screen -d -m su -l duty -c "/usr/local/bin/microdc2"
fi

Не забываем разграничить доступ и дать разрешение на запуск
gw# ls -li /usr/local/etc/rc.d/ |grep microdc2.sh

2172185 -rwxr-xr-x  1 root  wheel   173 Jun 27 22:54 microdc2.sh

Чтобы периодически запускался скрипт добавляем в конец /etc/crontab

*/5     *       *       *       *       root    /usr/local/etc/rc.d/microdc2.sh

P.S: для подключения к другому хабу надо запускать под другим пользователем

microDC2

На FreeBSD 7.0 х64 стоит верлихаб, к нему в компанию нужен был клиент для задействования оставшихся ресурсов ПК. Поставил из портов microdc2 (вот только не понял, что и как делается командой ./configure - один ответ, нет такого файла). Вручную прописал все сеты, указал папку шары, запустил клиента - работает, пишет в статусе про TTH для файлов...
Вот только проблема: на хабе клиент (зарегистрирован, повышен до OP-ов :) ) видин с шарой в размере за 150 ГБ, а при скачивании с него файл-листа - в виндовс-клиенте видны лишь папки, подпапки... с объёмами = 0.
Что делать, в чём ошибка?

P.S.: сделал конфиг-файл, в котором поуказывал

set active on
set auto_reconnect on
set hub_charset cp1251
set log_charset cp1251
set filelist_refresh_interval 600
share /media/share/папка_номер_раз
share /media/share/папка_номер_два
set downloaddir /media/share/папка_для_загрузок
set listingdir /media/share/папка_для_чужих_файл-листов
set nick очень_скромный_юзер
set password не_менее_скромный_пароль
set logfile /var/log/microdc.log
set slots 500
set speed LAN(T3)
connect адрес_хаба 

при запуске показывается папка шары, количество принятой-отосланой инфы, адрес хаба... и "Segmentation fault" после которого выпадаю в баш.
Убрал "set logfile" - запускается, работает... но при скачивании файл-листа во Flylink'e (локальная сеть) опять пустые папки при огромной общей шаре на хабе.

Есть утилитка "tthsum" - но она только для просмотра, я так понимаю?
Нет файла "microdc_tth" (но клиент о TTH что-то в статусен пишет..)

Help!
_______________________________________________________________________

Вернувшись к машине с хабом и microdc2 спустя 5 часов, скачал с клиента файл-лист - а там уже всё файлы, все обьёмы! Единственное обьяснение этому явлению - обновление файл-листа для отдачи только в конце хеширования всех файлов (это нормально), но почему тогда папки файлов в шаре видны сразу же (это ненормально) ?!
Проблему с "Segmentation fault" при укзании файла для лога в конфиге не решил (дискового места - лет на 100 логирования, запись в файл программой осуществляется). У кого какие мысли?

FreeBSD 6.4 amd64 + Microdc2

FreeBSD 6.4RC1 amd64
Использую версию 2.0.15.6_2
Много чего читал но нигде не нашёл готового решения для моих задач - надеюсь кому-то пригодится.
У меня несколько клиентов бегают на одной машинке на разных IP и для простоты и скорости шарят разный контент. Поэтому выложу здесь пример только для одного из них, у остальных аналогично.
В локалку смотрит IP 10.18.XX.XX Создан пользователь ZZZZZZ, его консоль русифицирована. Автозапуск стартует как демон и в случае необходимости к консоли можно подключится.
Проблему с логами (как в предыдущих постах) и автозапуском решил так:

/usr/home/ZZZZZZ/.microdc2/config

set listenaddr 10.18.XX.XX
set listenport 18XX
set active on
set auto_reconnect on
set hub_charset CP1251
set filesystem_charset KOI8-R
set log_charset KOI8-R
set filelist_refresh_interval 600
set display upload
#set log connections upload
share /bla-bla/xxx/
set downloaddir /bla-bla/xxx/Upload
set listingdir /home/ZZZZZZ/.microdc2/
#set logfile /var/log/logfile.log
set slots 50
set speed LAN(T3)
set description "XXX ВИДЕО ФИЛЬМЫ ФОТО"
set nick ZZZZZZ
set tag clientdc
connect 10.0.YY.YY:411

/usr/local/etc/rc.d/xxxdc

#!/bin/sh
. /etc/rc.subr
# PROVIDE: xxxdc
# REQUIRE: DAEMON
# BEFORE: LOGIN
name=xxxdc
rcvar=`set_rcvar`
start_cmd="xxxdc_start"
stop_cmd="xxxdc_stop"
required_files="/usr/home/ZZZZZZ/.microdc2/config"
xxxdc_enable=${xxxdc_enable:-"NO"}
xxxdc_start()
{
    echo "XXXdc client started."
	/usr/local/bin/screen -d -m su -l ZZZZZZ -c "/usr/local/bin/microdc2 -c /usr/home/ZZZZZZ/.microdc2/config | tee -a /var/log/logfile.log "
}
load_rc_config $name		
run_rc_command "$1"

/etc/rc.conf

xxxdc_enable="YES"

Осталось добавить правила в ipfw и собственно всё.
Пока с проблемой вылета не столкнулся - если возникнет, то надо будет добавить проверку демона в cron.

microdc2 за фаирволом

пытаюсь настроить microdc2 за фаирволом, порты пробросил, но вот вопрос:
есть параметры listenaddr и listenport а где у казывается внешний ip и порт? или возможен только пассив? тогда что указывается в listenaddr и listenport?