Page 2 of 3 FirstFirst 123 LastLast
Results 16 to 30 of 39

Thread: Добавление заданий в rTorrent через email

  1. #16
    У автора времени нет до форума дойти...

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

    ставим
    Code:
    ipkg install fetchmail
    ipkg install procmail
    ipkg install mpack
    ipkg install unzip
    далее, настройки для fecthmail
    создаем файл /opt/etc/fetchmailrc
    Code:
    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
    Code:
    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
    Code:
    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 добавить команды для восстановления всей структуры.

  2. #17
    ваще супер! я вот думаю - можно поминять часть параметров и присылать скрипты в cron.1min с расширением .sh (только надо не забывать в конце скрипа указывать "rd /путь/имя_скрипта", а то он так и будет выполняться каждую 1 минуту)...........
    Семь бед - один RESET.
    Ваша проблема в кривых руках!

  3. #18
    Join Date
    Feb 2007
    Location
    Moscow, Russia
    Posts
    3,805
    главное!
    после перезагрузки, все, что в /tmp/local/root (папки, .procmailrc) - исчезнут, поэтому необходимо, например в /usr/local/sbin/post-mount добавить команды для восстановления всей структуры.
    Зачем так сложно --- почему бы не хранить почтовый ящик в /opt Для этого надо создать симлинки, т.е. вместо:

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

    PHP Code:
    mkdir /opt/root
    mkdir 
    /opt/root/Mail
    mkdir 
    /opt/root/Mail/default
    mkdir /opt/root/files
    ln 
    -/opt/root/Mail /tmp/local/root/Mail
    ln 
    -/opt/root/files /tmp/local/root/files 
    А в остальном --- идея любопытная.

  4. #19
    Quote Originally Posted by LeshaK View Post
    У автора времени нет до форума дойти...

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

    ставим
    Code:
    ipkg install fetchmail
    ipkg install procmail
    ipkg install mpack
    ipkg install unzip
    далее, настройки для fecthmail
    создаем файл /opt/etc/fetchmailrc
    Code:
    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
    Code:
    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
    Code:
    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 добавить команды для восстановления всей структуры.
    Прежде всего, большое спасибо автору.
    Надо переварить все сказанное и осмыслить.
    Достаточно сложно все получается. Неужели нет более простого решения? Ведь всего то и надо принять письмо и сохранить его вложения в нужное место?
    Но все равно спасибо, хотя я думал что решение будет гораздо изящнее. А тут нужно четыре пакета...
    Ну это все эмоции.

  5. #20
    возможно все можно упростить, просто делал быстро и был важен результат.

  6. #21

    Post Удаленное добавление торрентов. Почтовый робот.

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

    Вот сам скрипт test_mail.pl:
    PHP Code:
    #!/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 (-"$new_path")
                        {
                            
    $error system("mv -f \"$path\" \"$new_path\"");
                        }
                    }
                    if (
    $error != 0)
                    {
                        
    $new_path $torrentsdir "/" $filename;
                        print 
    "NEW_PATH = $new_path\n";
                        
    unless (-"$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(); 

  7. #22
    Круто.
    Но неужели не хватает либо FAR+SCP либо WinSCP либо вэб-морды+https?

  8. #23
    Quote Originally Posted by bbsc View Post
    Круто.
    Но неужели не хватает либо FAR+SCP либо WinSCP либо вэб-морды+https?
    фишка, что публичного статик или динамик IP нету. Скрипт на роутере стиоит, с него и работает. НА мыло себе послал торренты - он зашел, забрал, поставил в закачку.

  9. #24
    Quote Originally Posted by euseller View Post
    Скрипт на роутере стиоит, с него и работает. НА мыло себе послал торренты - он зашел, забрал, поставил в закачку.
    Net::POP3 и MIME::Parser с зависимостями как ставили?
    © 2008-2013 ABATAPA WL-500gP/128M / Asus RT-N16 / USB Flash / VLAN / PPPoE / VoIP / nShaper / NAS: iStor is607, Sarotech NAS-20, QNap 109 Pro / NFS / Принтер / etc

  10. #25
    Quote Originally Posted by euseller View Post
    ... публичного статик или динамик IP нету...
    Ну, про "динамик" автор ничего не писал.
    А если таки нету и его и возможны только исходящие соединения, то это, имхо, не торрент-клиент а одна большая проблема.

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

  11. #26
    Quote Originally Posted by ABATAPA
    Net::POP3 и MIME::Parser с зависимостями как ставили?
    Скачал со http://www.cpan.org Net::POP3 и MIME::Parser. При установке они стали на зависимости ругаться. Докачивал все, что нужно. Зависимости сразу на cpan.org посмотреть можно.
    Quote Originally Posted by euseller
    фишка, что публичного статик или динамик IP нету. Скрипт на роутере стиоит, с него и работает. НА мыло себе послал торренты - он зашел, забрал, поставил в закачку.
    Совершенно верно. Не имею внешнего доступа к роутеру (с работы уж точно). А так кинул утречком торрент себе на мыло, вечером фильм уже смотреть можно.
    Quote Originally Posted by bbsc
    Ну, про "динамик" автор ничего не писал.
    А если таки нету и его и возможны только исходящие соединения, то это, имхо, не торрент-клиент а одна большая проблема.

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

  12. #27
    Quote Originally Posted by KBac View Post
    Динамический IP есть...
    Если есть динамический real-IP, то не заморачивайтесь, а зарегистрируйтесь на dyndns.com, выберите себе доменное имя и пропишите настройки через вэб-морду роутера.
    Откройте какой-нибудь порт наружу и запустите на нем SSH-сервер.
    Будет Вам доступ к роутеру снаружи, а в SSH-туннель запихнете затем что угодно.
    А для безопасности и комфорта к rtorrent-у положена вэб-морда через https

  13. #28
    Quote Originally Posted by bbsc View Post
    Если есть динамический real-IP, то не заморачивайтесь, а зарегистрируйтесь на dyndns.com, выберите себе доменное имя и пропишите настройки через вэб-морду роутера.
    Откройте какой-нибудь порт наружу и запустите на нем SSH-сервер.
    Будет Вам доступ к роутеру снаружи, а в SSH-туннель запихнете затем что угодно.
    А для безопасности и комфорта к rtorrent-у положена вэб-морда через https
    Спасибо за совет . Вечером попробую настроить.

  14. #29
    А если провайдер порты закрывает ? По SSH снаружи достучаться не могу.
    dynnds не поможет

  15. #30
    Quote Originally Posted by getikalex View Post
    А если провайдер порты закрывает ?
    ВСЕ порты?
    Или только 22-й?
    Запустите SSH на порту 9999, например

Page 2 of 3 FirstFirst 123 LastLast

Similar Threads

  1. Добавление пользователей в систему
    By FilimoniC in forum Russian Discussion - РУССКИЙ (RU)
    Replies: 31
    Last Post: 24-12-2013, 19:33
  2. Отправка IP адреса WAN интерфейса по SMS и eMail
    By ncat in forum Russian Discussion - РУССКИЙ (RU)
    Replies: 30
    Last Post: 20-03-2013, 17:14
  3. [Howto] Esmtp Email, PHP, Reminder, send_logfile
    By newbiefan in forum WL-500gP Tutorials
    Replies: 9
    Last Post: 15-01-2012, 16:12
  4. [How-To] Send email with php function
    By cichy in forum WL-500gP Tutorials
    Replies: 3
    Last Post: 11-09-2009, 17:01
  5. rtorrent
    By drozol in forum Polish Discussion - Polski (PL)
    Replies: 0
    Last Post: 21-02-2009, 09:06

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •