может кому интересно будет, как я стругал патчик, и тут кто нить что нить нового почерпнет
итак, я просек, что вместо чего - то разумного банально склеиваются пути к wtorrent и путь к папке с торрентами.
склейка происходит приблизительно так
Код: Выделить всё
$uploadfile = DIR_EXEC . DIR_TORRENTS . sha1( $url ) . md5($url) . ".torrent";
и в любом случае получаем что то типа "/path/to/www/dir/wtorrent/DIR_TORRENTS" без возможности повлиять на это предусмотренными конфигурялками.
мне это совершенно не нравится, никакой гибкости, хотя вышеописанный костыль под это дело ставится в два счета.
ну, поехали стругать патчик
Код: Выделить всё
[11:21]wtorrent/# grep -rn DIR_TORRENTS ./*
./conf/sample.user.conf.php:45:define( 'DIR_TORRENTS', 'torrents/');
./conf/user.conf.php:13:define ('DIR_TORRENTS', '../../../../../../../../mnt/160/dl/_TORRENTS/');
./wt/cls/AddT.cls.php:56: if (!is_writable(DIR_EXEC . DIR_TORRENTS))
./wt/cls/AddT.cls.php:58: $this->addMessage(DIR_EXEC . DIR_TORRENTS . $this->_str['err_not_writable']);
./wt/cls/AddT.cls.php:63: $uploadfile = DIR_EXEC . DIR_TORRENTS . sha1( $url ) . md5($url) . ".torrent";
./wt/cls/AddT.cls.php:200: $uploadfile = DIR_EXEC . DIR_TORRENTS . time() . basename($fileU['name']);
./wt/cls/AddT.cls.php:201: if (!is_writable(DIR_EXEC . DIR_TORRENTS))
АГА
константа DIR_TORRENTS используется только в одном файле, как следует из названия, там наверное находится класс для добавления торрентов. В файле действительно оказался класс, и константа используется в двух методах - addRemoteTorrent() и uploadTorrent(). Всего, как сказал добрый grep, 5 вхождений.
Просто выкорчевать из этих строк константу DIR_EXEC мне показалось мало. Решил поставить что то поинтереснее, а заодно вытянуть оттудова тросик и приладить его к рычажку в conf/user.conf.php
сказано - сделано
Сначала делаем рычажок - дописываем строчку в user.conf.php
без определения этой константы в истину(true) wtorrent будет сохранять стандартное поведение даже при наложенном патче - для совместимости и успокоения нервов
ну а далее стругаем патч - добавляем в класс публичное свойство
uploaddir и рисуем небольшую проверку в конструкторе
Код: Выделить всё
24 if(defined('ABSOLUTE_PATH_TORRENTS') && ABSOLUTE_PATH_TORRENTS === true
25 && defined('DIR_TORRENTS') && substr(DIR_TORRENTS, 0,1) === '/')
26 {
27 $this->uploaddir = DIR_TORRENTS;
28 }
29 else
30 {
31 $this->uploaddir = DIR_EXEC . DIR_TORRENTS;
32 }
в таком виде даже с активированным патчем если в DIR_TORRENTS указан относительный путь, он и останется относительным. Для того чтобы путь считался абсолютным, он должен начинаться со слеша - все стандартно

дальше меняем все вхождения
DIR_EXEC . DIR_TORRENTS на
$this->uploaddir. вроде бы и все - проверяем, грузим торренты, играемся с настройкой ABSOLUTE_PATH_TORRENTS...
патч прикрепляю, пинаем
тикет в проект отослал
http://www.wtorrent-project.org/trac/ticket/416