понедельник, 5 октября 2009 г.

Debian Lenny + deluge from Sid (client - server).

Поставил deluge-core, потянуло пакеты. В дополнение очень полезно добавить deluge-webui.
Ставил из unstable то есть sid. Потом комментировал эту строчку в source.list .

Скрипта в /etc/init.d не существует. Запускать службу не трудно, но выключить или перезагрузить требует лишних движений.
Так как необходим серверный режим работы и нужно удобно управлять состоянием службы (on, off, reload), а скрипта из директории /etc/init.d в пакета не предусмотрели, и к тому же этот deluge бывает чудит, написан скрипт. Кое что нашёл в инете.

Была загвоздка с выключением служб, собственно с тем из-за чего это всё и писалось, но великие просторы интернета помогли найти решение:

PID=`ps ax | grep deluge | grep -v grep | sed -n 1p | awk '{print $1}'`
.

Не забудьте после создания файла сделать chmod +x /etc/init.d/deluge .

Собственно скрипт в конце записи.

Я использую домашний GTK клиент, который соединён с сервером на 58846 порту и работаю как на локальной машине. Единственное отличие - путь сохранения торрента нужно вводить вручную. Иногда клиент создаёт много подключений на используемый порт и забивает канал по неизвестной причине. В таких случаях /etc/init.d/deluge reload самое оно, естественно после выключения клиента.

Также можно использовать WebUI, и даже работать через https, для этого необходимо создать сертификат.
Если назвать WebUI ласково "Веб мордой", можно передать то как оно работает. Pyton выдаёт ошибки , но в целом после перезагрузки какое-то время работает гуд.
WebUI по умолчанию висит на 8112 порту, можно изменить.

У пользователя, от которого будет работать служба, здесь находятся логин:пароль для подключения WebUI и других клиентов к демону:

~/.config/deluge/auth

Хотел изменить логин:пароль, но не нашёл где поменять эту пару для WebUI, пришлось вернуться на автоматически сгенерированный.

Хорошо бы дописать возможность выбора цели над состоянием которой происходит манипуляция. Например:

/etc/ini.d/deluge restart webui
/etc/ini.d/deluge restart daemon

Подумаю над этим.

В скрипте добавлена возможность писать в лог, подробности в комментариях к коду. По умолчанию /dev/null, none, но можно и изменить. Возможно получится отследить в чём ошибка "Веб морды".

Предупреждаю, скрипт может содержать ошибки.

Самое время сделать:

echo "0 * * * * torrent /etc/init.d/deluge reload" >> /etc/crontab .

###BEGIN###
#!/bin/bash

DAEMON=/usr/bin/deluged
CLIENT=/usr/bin/deluge

#loglevels (none, info, warning, error, critical, debug)
LOGLEVEL=none
#logfile location
LOGFILE=/dev/null

WEB_OPTIONS="-u web -l $LOGFILE -L $LOGLEVEL"

. /lib/lsb/init-functions


start () {
log_daemon_msg "Starting Deluge daemon & WebUI"
if start-stop-daemon --start --quiet -oknodo --exec $DAEMON; then {
log_progress_msg "Daemon started"
if start-stop-daemon --start --quiet -oknodo --background --exec $CLIENT -- $WEB_OPTIONS; then {
log_progress_msg "WebUI started"
log_end_msg 0
exit 0
}
else
log_end_msg 1
fi
}
fi
exit 1

}


stop () {
log_daemon_msg "Stopping Deluge daemon and WebUI"
CPID=`ps ax | grep deluge | grep -v grep | sed -n 2p | awk '{print $1}'`
if kill $CPID; then {
log_progress_msg "WebUI stoped"
DPID=`ps ax | grep deluge | grep -v grep |sed -n 1p | awk '{print $1}'`
if kill $DPID; then {
log_progress_msg "Daemon stoped"
log_end_msg 0
exit 0
}
else
log_end_msg 1
fi
}
fi
exit 1
}

restart (){
$0 stop
sleep 2
$0 start
exit 0
}

case "$1" in

start|go) {start}
;;

stop) {stop}
;;

restart|reload) {restart}
;;

*|help|-h)
echo "Usage: $0 {(start|go)|(stop)|(restart|reload)}"
exit 1
;;
esac

exit 0
###BEGIN###