PDA

Bekijk de volledige versie : Добавление заданий в rTorrent через email



LeshaK
16-01-2008, 09:56
Возможно ли такое реализовать (может кто подскажет куда копать...)

- регистрируем почтовый ящик
- отсылаем на этот ящик .torrent файлы
- скрипт/софт на wl500g регулярно проверяет почту и при появлении нового письма, все вложенные .torrent файлы кидает в папку для rTorrent, а письмо удаляет
- соотв. rTorrent в автомате начинает качать...
:rolleyes:

angel_il
16-01-2008, 10:44
да возможно.

LeshaK
16-01-2008, 11:27
да возможно.

а как?
хотя бы название софта :o

angel_il
16-01-2008, 12:16
для начала поставить fetchmail и procmail
ipkg install fetchmail
ipkg install procmail
потом прочитать например
http://www.freebsd.org/doc/ru_RU.KOI8-R/books/handbook/mail-procmail.html
и это http://linux.yaroslavl.ru/docs/serv/fetchmail/fetchmail-man.html
или просто набрать в гугле fetchmail и procmail

LeshaK
16-01-2008, 12:26
для начала поставить fetchmail и procmail
fetchmail и procmail
спасибо,
буду разбираться.

LeshaK
18-01-2008, 14:14
Все заработало, спасибо
если кому еще надо, могу написать что и как.

lexass
18-01-2008, 14:20
Все заработало, спасибо
если кому еще надо, могу написать что и как.

надо или нет, мы разберемся!
пиши, пусть будет :cool:
ЗЫ
чем больше полезного напишем - тем легче!

piezomotor
18-01-2008, 14:39
Все заработало, спасибо
если кому еще надо, могу написать что и как.

Да это интересно узнать...Я хотел бы так добавлять torrents в Transmission...Это будет работать?

angel_il
18-01-2008, 17:06
Надо-надо :) лишним не будет

Reyter
18-01-2008, 22:13
Чем так извращаться, лучше веб-интерфейс торрента подправить, чтобы мог торренты загружать ;)

lexass
18-01-2008, 22:51
Чем так извращаться, лучше веб-интерфейс торрента подправить, чтобы мог торренты загружать ;)

и про это послушаемС )
:cool:

LeshaK
19-01-2008, 12:26
реального IP у домашнего компа нет, а закачки удаленно добавлять хотца, так что веб-морда есть, но используется только дома.

BlackCat
14-03-2008, 10:36
Все заработало, спасибо
если кому еще надо, могу написать что и как.

А можно все-таки написать что и как?

deviatore
14-03-2008, 12:23
Все заработало, спасибо
если кому еще надо, могу написать что и как.
Напиши, будет интересно почитать.


реального IP у домашнего компа нет, а закачки удаленно добавлять хотца, так что веб-морда есть, но используется только дома.
Я этот вопрос решил более просто: т.к. статического IP нет, воспользовался услугами dyndns.org, поднял FTP и сделал доступ к dl.

BlackCat
14-03-2008, 13:14
Я этот вопрос решил более просто: т.к. статического IP нет, воспользовался услугами dyndns.org, поднял FTP и сделал доступ к dl.

Такой вариант не сработает, поскольку речь идет о приватном IP.

LeshaK
16-03-2008, 12:34
У автора времени нет до форума дойти...

до ФАКа это далеко, но

ставим


ipkg install fetchmail
ipkg install procmail
ipkg install mpack
ipkg install unzip

далее, настройки для fecthmail
создаем файл /opt/etc/fetchmailrc


poll pop.mailserver.com
proto pop3
user 'USER_NAME'
pass 'USER_PASSWORD'
is 'root' here
mda 'procmail -d %T'
pop.mailserver.com, USER_NAME, USER_PASSWORD - настройки pop3 аккаунта, куда будите кидать .zip архивы с .torrent файлами для rtorrent_а

далее в
создаем папки:
/tmp/local/root/Mail
/tmp/local/root/Mail/default
/tmp/local/root/files

в папке /tmp/local/root
создаем файл .procmailrc

MAILDIR= /tmp/local/root/Mail
LOGFILE= /dev/null
LOGABSTRACT= no
VERBOSE= off
DEFAULT= $MAILDIR/default
RTORRENTDLDIR= /tmp/harddisk/wdata/dl

:0 Bw
* ^.*filename=.*zip
{
MAILDIR=/tmp/local/root/files
:0
| munpack -f -q && unzip ./*.zip && mv -f ./*.torrent $RTORRENTDLDIR && rm ./*
}

папка RTORRENTDLDIR - это папка rtorrent_а (поправте на свою)

запустите fetchmail

fetchmail -d 300 -t 60 -a -e 50 --auth password -f /opt/etc/fetchmailrc

Теперь как это все использовать и как это работает:
1. Качаете себе на комп .torrent файлы
2. Пакуете их в один .zip архив
3. Отсылаете на свой спец. email :)
4. fetchmail каждые 5 минут проверяем ваш ящик на новые письма
5. если он их находит, то скачивает и передает в procmail
6. procmail - если в теле письма есть вложение (.zip файл), то "отдает" это письмо munpack, которые вынимает вложения во временную папку
7. unzip - разархивирует архив
8. mv - переносит .torrent файлы в папку rtorrent
9. в конце временная папка очищается.

главное!
после перезагрузки, все, что в /tmp/local/root (папки, .procmailrc) - исчезнут, поэтому необходимо, например в /usr/local/sbin/post-mount добавить команды для восстановления всей структуры.

Vofik
16-03-2008, 13:17
ваще супер! я вот думаю - можно поминять часть параметров и присылать скрипты в cron.1min с расширением .sh (только надо не забывать в конце скрипа указывать "rd /путь/имя_скрипта", а то он так и будет выполняться каждую 1 минуту)...........

al37919
16-03-2008, 13:25
главное!
после перезагрузки, все, что в /tmp/local/root (папки, .procmailrc) - исчезнут, поэтому необходимо, например в /usr/local/sbin/post-mount добавить команды для восстановления всей структуры.

Зачем так сложно --- почему бы не хранить почтовый ящик в /opt Для этого надо создать симлинки, т.е. вместо:


далее создаем папки:
/tmp/local/root/Mail
/tmp/local/root/Mail/default
/tmp/local/root/files

делаем


mkdir /opt/root
mkdir /opt/root/Mail
mkdir /opt/root/Mail/default
mkdir /opt/root/files
ln -s /opt/root/Mail /tmp/local/root/Mail
ln -s /opt/root/files /tmp/local/root/files

А в остальном --- идея любопытная.

BlackCat
16-03-2008, 17:22
У автора времени нет до форума дойти...

до ФАКа это далеко, но

ставим


ipkg install fetchmail
ipkg install procmail
ipkg install mpack
ipkg install unzip

далее, настройки для fecthmail
создаем файл /opt/etc/fetchmailrc


poll pop.mailserver.com
proto pop3
user 'USER_NAME'
pass 'USER_PASSWORD'
is 'root' here
mda 'procmail -d %T'
pop.mailserver.com, USER_NAME, USER_PASSWORD - настройки pop3 аккаунта, куда будите кидать .zip архивы с .torrent файлами для rtorrent_а

далее в
создаем папки:
/tmp/local/root/Mail
/tmp/local/root/Mail/default
/tmp/local/root/files

в папке /tmp/local/root
создаем файл .procmailrc

MAILDIR= /tmp/local/root/Mail
LOGFILE= /dev/null
LOGABSTRACT= no
VERBOSE= off
DEFAULT= $MAILDIR/default
RTORRENTDLDIR= /tmp/harddisk/wdata/dl

:0 Bw
* ^.*filename=.*zip
{
MAILDIR=/tmp/local/root/files
:0
| munpack -f -q && unzip ./*.zip && mv -f ./*.torrent $RTORRENTDLDIR && rm ./*
}

папка RTORRENTDLDIR - это папка rtorrent_а (поправте на свою)

запустите fetchmail

fetchmail -d 300 -t 60 -a -e 50 --auth password -f /opt/etc/fetchmailrc

Теперь как это все использовать и как это работает:
1. Качаете себе на комп .torrent файлы
2. Пакуете их в один .zip архив
3. Отсылаете на свой спец. email :)
4. fetchmail каждые 5 минут проверяем ваш ящик на новые письма
5. если он их находит, то скачивает и передает в procmail
6. procmail - если в теле письма есть вложение (.zip файл), то "отдает" это письмо munpack, которые вынимает вложения во временную папку
7. unzip - разархивирует архив
8. mv - переносит .torrent файлы в папку rtorrent
9. в конце временная папка очищается.

главное!
после перезагрузки, все, что в /tmp/local/root (папки, .procmailrc) - исчезнут, поэтому необходимо, например в /usr/local/sbin/post-mount добавить команды для восстановления всей структуры.

Прежде всего, большое спасибо автору.
Надо переварить все сказанное и осмыслить.
Достаточно сложно все получается. Неужели нет более простого решения? Ведь всего то и надо принять письмо и сохранить его вложения в нужное место?
Но все равно спасибо, хотя я думал что решение будет гораздо изящнее. А тут нужно четыре пакета...
Ну это все эмоции.

LeshaK
16-03-2008, 18:02
возможно все можно упростить, просто делал быстро и был важен результат.

KBac
14-05-2009, 11:00
Задача: добавлять удаленно, например с работы, торренты на закачку не имея фиксированного публичного IP адреса.
Решение: написал скрипт на perl, который ищет в почтовом ящике специальные сообщения с прицепленными торрент-файлами и ставит эти торретны на закачку. Имена самих торрент-файлов должны быть английскими. С перекодировкой руских имен приаттаченных файлов пока не разбирался.

Вот сам скрипт test_mail.pl:


#!/opt/bin/perl -w
use strict;
use Net::POP3;
use MIME::Parser;

my $valid_exts = "^(torrent)\$";

my $savedir = "test_mail_files";
system("rm -f -r $savedir");
system("mkdir -p -m 0777 $savedir");

my $torrentsdir = "/tmp/harddisk/torrent/dl";
system("mkdir -p -m 0777 $torrentsdir");

my $server = "ВАШ ПОЧТОВЫЙ СЕРВЕР (например, mail.pochta.ru)";
my $pop = new Net::POP3($server);
die "Connection failed" if not defined $pop;
my $msgs = $pop->login("ЛОГИН НА ПОЧТОВИКЕ", "ПАРОЛЬ");
die "Login failed" if not defined $msgs;
print "$msgs messages\n";
my %list = %{$pop->list};

for my $msg_num (keys(%list))
{
print "#$msg_num - $list{$msg_num} bytes\n";
my $headers = $pop->top($msg_num);
my $cmd = undef;
foreach my $header (@$headers)
{
if ($header =~ /^\s*subject:\s*test_mail_cmd\s*\(\s*(.*)\s*\)\s*$/i)
{
$cmd = $1;
defined($cmd) ? (print "CMD = $cmd\n") : (print "CMD is empty\n");
last;
}
}
next unless $cmd;
if ($cmd =~ /^torrents$/i)
{
my $msg = $pop->get($msg_num);

# create a MIME::Parser object to
# extract any attachments found within.
my $parser = new MIME::Parser;
$parser->output_dir($savedir);
my $entity = $parser->parse_data($msg);

# extract our mime parts
# and go through each one.
my @parts = $entity->parts;
foreach my $part (@parts)
{
my $h = $part->head;
my $orig_filename = $h->recommended_filename;
defined($orig_filename) ? ((chomp $orig_filename), (print "ORIG_FILENAME = $orig_filename\n")) : (print "ORIG_FILENAME is empty\n");

# determine the path to the file in question.
my $path = ($part->bodyhandle) ? $part->bodyhandle->path : undef;
next unless $path;
print "PATH = $path\n";

my $filename;
if ($path =~ /(\w+[\\\/])*([^\\\/]+)$/)
{
$filename = $2;
}
next unless $filename;
print "FILENAME = $filename\n";

my $ext;
if ($filename =~ /\w+\.([^.]+)$/)
{
$ext = $1;
}
next unless $ext;
print "EXT = $ext\n";

if ($ext =~ /$valid_exts/)
{
my $error = 1;
my $new_path;
if (defined($orig_filename))
{
$new_path = $torrentsdir . "/" . $orig_filename;
print "NEW_PATH = $new_path\n";
unless (-e "$new_path")
{
$error = system("mv -f \"$path\" \"$new_path\"");
}
}
if ($error != 0)
{
$new_path = $torrentsdir . "/" . $filename;
print "NEW_PATH = $new_path\n";
unless (-e "$new_path")
{
$error = system("mv -f \"$path\" \"$new_path\"");
}
}
if ($error == 0)
{
system("chmod 0644 \"$new_path\"");
}
}
}

$pop->delete($msg_num);
}
elsif ($cmd =~ /^update$/i)
{
}

system("rm -f -r $savedir");
}

$pop->quit();

bbsc
14-05-2009, 20:24
Круто.
Но неужели не хватает либо FAR+SCP либо WinSCP либо вэб-морды+https?

euseller
14-05-2009, 21:31
Круто.
Но неужели не хватает либо FAR+SCP либо WinSCP либо вэб-морды+https?

фишка, что публичного статик или динамик IP нету. Скрипт на роутере стиоит, с него и работает. НА мыло себе послал торренты - он зашел, забрал, поставил в закачку.

ABATAPA
14-05-2009, 21:50
Скрипт на роутере стиоит, с него и работает. НА мыло себе послал торренты - он зашел, забрал, поставил в закачку.

Net::POP3 и MIME::Parser с зависимостями как ставили?

bbsc
14-05-2009, 21:58
... публичного статик или динамик IP нету...Ну, про "динамик" автор ничего не писал.
А если таки нету и его и возможны только исходящие соединения, то это, имхо, не торрент-клиент а одна большая проблема.

Если же "динамик" есть, то dyndns решает всё.

KBac
15-05-2009, 08:19
Net::POP3 и MIME::Parser с зависимостями как ставили?

Скачал со http://www.cpan.org Net::POP3 и MIME::Parser. При установке они стали на зависимости ругаться. Докачивал все, что нужно. Зависимости сразу на cpan.org посмотреть можно.


фишка, что публичного статик или динамик IP нету. Скрипт на роутере стиоит, с него и работает. НА мыло себе послал торренты - он зашел, забрал, поставил в закачку.

Совершенно верно. Не имею внешнего доступа к роутеру (с работы уж точно). А так кинул утречком торрент себе на мыло, вечером фильм уже смотреть можно.


Ну, про "динамик" автор ничего не писал.
А если таки нету и его и возможны только исходящие соединения, то это, имхо, не торрент-клиент а одна большая проблема.

Если же "динамик" есть, то dyndns решает всё.

Динамический IP есть, но в сетевых технологиях я не особо силен. А за наводку на dyndns спасибо. Поищу, как его настроить можно.
Однако на работе доступ в интернет может быть ограничен. Так что, ИМХО, этот робот - вещь полезная в некоторых случаях. Да и безопасней, как мне кажется.

bbsc
15-05-2009, 08:29
Динамический IP есть...Если есть динамический real-IP, то не заморачивайтесь, а зарегистрируйтесь на dyndns.com, выберите себе доменное имя и пропишите настройки через вэб-морду роутера.
Откройте какой-нибудь порт наружу и запустите на нем SSH-сервер.
Будет Вам доступ к роутеру снаружи, а в SSH-туннель запихнете затем что угодно.
А для безопасности и комфорта к rtorrent-у положена вэб-морда через https :)

KBac
15-05-2009, 08:54
Если есть динамический real-IP, то не заморачивайтесь, а зарегистрируйтесь на dyndns.com, выберите себе доменное имя и пропишите настройки через вэб-морду роутера.
Откройте какой-нибудь порт наружу и запустите на нем SSH-сервер.
Будет Вам доступ к роутеру снаружи, а в SSH-туннель запихнете затем что угодно.
А для безопасности и комфорта к rtorrent-у положена вэб-морда через https :)

Спасибо за совет :). Вечером попробую настроить.

getikalex
15-05-2009, 19:10
А если провайдер порты закрывает ? По SSH снаружи достучаться не могу.
dynnds не поможет:confused:

bbsc
15-05-2009, 19:14
А если провайдер порты закрывает ? ВСЕ порты? :eek:
Или только 22-й?
Запустите SSH на порту 9999, например ;)

getikalex
15-05-2009, 23:31
Допустим порт я найду.
Все-равно геморрой. Провайдер дает внешний IP один для всех юзеров внутренней сети. соотвественно зайти SSH по ХХХ.ХХХ.ХХХ.ХХХ:9999 - все-равно из WAN не получится.
DynDNS определяет IP провайдера, но откуда ему знать кто я во внутренней сети...


Если есть динамический real-IPВ том-то и дело, что нихрена он не real

ЗЫ тут DynDNS врообще никаким боком не поможет, он видит не меня, а прова, потому как внешний IP постоянный для всех и не меняется. Был бы он динамическим, но моим - тогда да. А так - колхоз.

bbsc
16-05-2009, 07:06
getikalex, вобще-то мы обсуждали случай, когда real-IP все-таки есть.
Если его нет - я не знаю.
Наверное, я бы поменял провайдера.
Или договаривался бы с провайдером об открытии конкретно для меня конкретного порта.

sovat
13-10-2009, 11:29
Я новичек но по чуть чуть стараюсь...
подскажите как открыть порт 25 (СМТП)

ситуация в том что немогу отправить (соеденится) с
smtp.mail.ru по 25 порту по 2525 порту все гуд

это не провайдер заблокировал вставлял напрямую в комп все гуд

вобщем любое соединение через роутер на 25 порт приводит
к конектион рефузед

помогите плиз

а ну и нада чтобы без проблем на любые сервера по порту 25 было соединение

ryzhov_al
13-10-2009, 11:48
Я новичек но по чуть чуть стараюсь...
подскажите как открыть порт 25 (СМТП)
...
ситуация в том что немогу отправить (соеденится) с
smtp.mail.ru по 25 порту по 2525 порту все гуд
Открывают порт для входящих соединений. Для исходящих ничего открывать не надо. Ищите причину в другом.

другИгого
28-12-2009, 18:03
а пароль для smtp как задать? )

DeepDusky
25-04-2011, 13:19
добрый...
а есть возможность настроить так, чтоб кидать не .torrent-файлы, а ссылки?
чтоб .torrent-файлы были автоматом выкачаны и добавлены в rtorrent?
наподобие, как описано тут - http://habrahabr.ru/blogs/p2p/116544/
спс...

FilimoniC
25-04-2011, 13:25
добрый...
а есть возможность настроить так, чтоб кидать не .torrent-файлы, а ссылки?
чтоб .torrent-файлы были автоматом выкачаны и добавлены в rtorrent?
наподобие, как описано тут - http://habrahabr.ru/blogs/p2p/116544/
спс...

Не забывайте что большинство трекеров с регистрацией типа rutracker используют cookie-авторизацию. Будет нелегко такое сотворить без разбирательств. Причем авторизация под каждый трекер будет своя

DeepDusky
25-04-2011, 13:38
на странице http://utorrentremote.codeplex.com/ лежит прога и исходники, которая ето делает. на счет cookie не знаю, но она залогинивается на трекер и выкачивает торрент-файл сама и передает его в utorrent...только написана она на .NET Framework...
можно ли портировать/сделать аналогичное?
спс...

Prot_XT
02-01-2012, 08:20
Установил скриптом "Установка программ для чайника" rtorrent + Web морду. Действительно этот гуй нагружает роутер не по детски, особенно когда качается что-то. Процесс rtorrenta запускается автоматически при страте роутера. Подсунув торент в папку -dl- начинается закачка - я могу посмотреть ее и управлять ею в Web интерфейсе, а как это можно сделать через консоль? При наборе команды в консоле rtorrent выдает - rtorrent: Error in option file: ~/.rtorrent.rc:4: Could not prepare socket for listening: Address already in use
Как правильно нужно делать?