Установка Transmission-daemon на Snow Leopard Server 10.6.8

И так мы хотим демона-торренто-качалку, который бы всегда работал и к нему был доступ из консоли и веба.
По порядку:
0) Ставим порты
1) заходим в консоль под рутом.
2) Устанавливаем пакет transmission-x11. это для зависимостей.
3) Теперь нам нужно вытянуть трансмишен из SVN репозитория.
$ svn co svn://svn.transmissionbt.com/Transmission/trunk Transmission
$ cd Transmission

4) Если это для домашнего сервера, то надо отключить проверку session_id, т.к. она передается в особом HTTP-заголовке, который стандартный макосевсий апач почему-то превращает в Unknown, а трансмишен ругается и не пускает в веб интерфейс.
Подробнее можно прочитать тут.
Чтобы отключить проверку, надо из текущей директории найти в файле libtransmission/rpc-server.c строку
#define REQUIRE_SESSION_ID
и закомментировать её
//#define REQUIRE_SESSION_ID

После этого не забываем выйти обратно в каталог Transmission
$ cd ..

5) Теперь собираем сам трансмишен:
$ ./autogen.sh && make -s
$ su (if necessary for the next line)
$ make install

6) Чтобы знать и помнить
После установки Веб-интерфейс находится в /usr/local/share/transmission/web
Настройки в /Users/%login%/.config/transmission-daemon/settings.json . Они нам понадобятся.

7) Теперь чтобы попасть в веб-интерфейс не только локально, но и с других компов, надо отключить проверку вайт-листа доступа.
Через миднайт коммандер или Finder открываем файл настроек: /Users/%login%/.config/transmission-daemon/settings.json
и ищем там строчку:
"rpc-whitelist-enabled": true,

Изменяем значение на false:
"rpc-whitelist-enabled": false,

Далее находим параметр «download-dir» и изменяем его как удобно. Например, у меня сделако так:
"download-dir": "/Users/%login%/Movies/+Downloads/",

Папка +Downloads создана в Movies потому, что медиасервер XBMC по умолчанию видит папку Movies. А значит мы сможем быстро добраться до скаченных фильмов. (начало «+» сделано лишь для того, что бы каталог был всегда вверху, если список в XBMC сортирован по имени)

В принципе всё, но нам ещё нужно сделать, что бы трансмишен сам запускался при ребуте системы.
Можмно конечно добавить /usr/local/bin/transmission-daemon в Login Items своего аккаунта в настройках, но это же не интересно =) да и если вылетит, то и не узнаем, и не рестартнется сам.

1) И так, будем делать по подобию враппера macports. (всё из под рута)
идем в /opt/local/etc/LaucnDaemons, создаем папку «org.macports.transmission», заходим в неё.
Создаем файл «transmission.wrapper» и ставим ему исполнямые права chmod 755.
Листинг файла:
#!/bin/sh
#
# Init
#
prefix=/opt/local

# Start
Start()
{
if ps aux | grep -v grep | grep transmission-daemon > /dev/null
then
echo "Service is running. All OK"
else
echo "Service not running. Starting..."
/usr/local/bin/transmission-daemon
echo "OK"
fi
}

# Stop
Stop()
{
/bin/kill -15 $(ps aux | grep transmission-daemon | grep -v "grep" | awk '{print $2}')
}
# Restart
Restart()
{
Stop
sleep 10
Start
}
# Run
Run()
{
case $1 in
start ) Start ;;
stop ) Stop ;;
restart) Restart ;;
* ) echo "$0: unknown argument: $1";;
esac
}
# Run a phase based on the selector
Run $1

2) Теперь создаем файл в той же директории с именем «com.transmissionbt.transmission-daemon.plist».
В нем будут правила для LaunchDaemon-а.
Листинг:
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd" >
<plist version='1.0'>
<dict>
<key>Label</key><string>com.transmissionbt.transmission-daemon.plist</string>
<key>ProgramArguments</key>
<array>
<string>/opt/local/bin/daemondo</string>
<string>--label=transmission-daemon</string>
<string>--start-cmd</string>
<string>/opt/local/etc/LaunchDaemons/org.macports.transmission/transmission.wrapper</string>
<string>start</string>
<string>;</string>
<string>--stop-cmd</string>
<string>/opt/local/etc/LaunchDaemons/org.macports.transmission/transmission.wrapper</string>
<string>stop</string>
<string>;</string>
<string>--restart-cmd</string>
<string>/opt/local/etc/LaunchDaemons/org.macports.transmission/transmission.wrapper</string>
<string>restart</string>
<string>;</string>
<string>--pid=none>
</array>
<key>Debug</key><false/>
<key>Disabled</key><true/>
<key>OnDemand</key><false/>
</dict>
</plist>

3) Теперь надо сделать ссылку на этот файл в системный LaunchDaemons
ln -s /opt/local/etc/LaunchDaemons/org.macports.transmission/com.transmissionbt.transmission-daemon.plist /Library/LaunchDaemons

4) Подключаем правила в LaunchDaemons
launchctl load -w /Library/LaunchDaemons/com.transmissionbt.transmission-daemon.plist

Вот и всё 🙂
На всякий случай проверяем, подключился ли:
launchctl list | grep transmissionbt

Если пусто, то открываем приложение Console, смотрим какие возникли ошибки и идем с ними в гугл.

А для удобства раздавания торрентов, можно в кроне написать парочку правил, чтобы ночью все торренты вставали на раздачу (если они на паузе) и убирались лимиты скорости, а утром лимиты опять включались.

# стартуем все торренты в 3 часа 45 минут каждой ночи.
# (можете поменять, это для меня удобно т.к. я сова =))
45 3 * * * /usr/local/bin/transmission-remote -U -D --torrent all --start
# в 11.01 каждого дня останавливаем все торренты и ставим лимит
# скорости на скачку: 450кб/с, на отдачу:100 кб/с (меняйте кому как удобно)
1 11 * * * /usr/local/bin/transmission-remote -u 100 -d 450 --torrent all --stop