Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

HTTP request kada stigne novi e-mail

[es] :: Skript jezici :: HTTP request kada stigne novi e-mail

[ Pregleda: 3676 | Odgovora: 16 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

rapidlord
Vladan Markovic
dev
KG

Član broj: 10145
Poruke: 428
*.static.kg.sbb.co.yu.



+1 Profil

icon HTTP request kada stigne novi e-mail30.08.2007. u 13:41 - pre 156 meseci
Moze li mala pomoc,
nemam neko iskustvo u linux/bash programiranje, mada mi nije strano.

Znaci scenarij je ovakav:

Skripta proverava mail-box
Kada naidje novi mail, napravi HTTP Request na nekoj adresi, npr:
www.mojsajt.com?post_mail?subject=this_subject&body=this_body...


ne treba mi ceo source code ili tako nesto ,
samo osnovne smernice odakle da pocnem,


p.s. Ah da mail bi bio malo modifikovan pre posta, ubacivanjem nekih tagova u body.

 
Odgovor na temu

Tyler Durden
Tyler Durden
Beograd

Član broj: 4312
Poruke: 3379
*.verat.net.



+1365 Profil

icon Re: HTTP request kada stigne novi e-mail30.08.2007. u 14:09 - pre 156 meseci
Ja nisam baš u potpunosti razumio šta želiš da se uradi.
Ajmo ovako najprije, zašto mora baš BASH?
Beneath civilization's fragile crust, cold chaos churns...
 
Odgovor na temu

rapidlord
Vladan Markovic
dev
KG

Član broj: 10145
Poruke: 428
*.static.kg.sbb.co.yu.



+1 Profil

icon Re: HTTP request kada stigne novi e-mail30.08.2007. u 14:16 - pre 156 meseci
Pa nemora bash bash, moze i nesto drugo.
To i jeste u osnovi glavno pitanje , kako i sa cim? perl? bash? neka kombinacija?

Znaci kad stigne mail pravi se http request na neku stranicu. i postuje se taj mail sa parametrima subject i body?
 
Odgovor na temu

rapidlord
Vladan Markovic
dev
KG

Član broj: 10145
Poruke: 428
*.static.kg.sbb.co.yu.



+1 Profil

icon Re: HTTP request kada stigne novi e-mail30.08.2007. u 14:25 - pre 156 meseci
Radi se o ovome, pa ako se nekom svidja ideja moze da se prikljuci razvoju.

Imam mali eksperiment da sve vezano za jedan projekat stavljam u WIKI,
MediaWiki da budem tacniji, projektnu dokumentaciju, source code,
neke primere, ma sve sto ima veze sa tim projektom.

Deluje kao dobra ideja jer brzo moze da se pristupi stranicama i ubaci materijal ,
da se brzo izmene stranica, imas history izmena, atach fajlove. i super "search".

Jos samo fali da mejlovi koji su u vezi sa tim projektom direktno idu u WIKI,
sa tagom [category:emails].

Tako bi imali sve podatke vezane za projekat na jednom mestu.



 
Odgovor na temu

Jbyn4e

Član broj: 422
Poruke: 6049
*.ptt.yu.



+256 Profil

icon Re: HTTP request kada stigne novi e-mail30.08.2007. u 15:13 - pre 156 meseci
Treba ti najverovatnije procmail da pozove skript koji ce to da uradi. Vise o procmail filtriranju - man procmail, man procmailrc ili google ili npr tutorijal:
http://userpages.umbc.edu/~ian/procmail.html
Kad sve ostalo zakaže, pročitaj uputstvo...
 
Odgovor na temu

rapidlord
Vladan Markovic
dev
KG

Član broj: 10145
Poruke: 428
*.static.kg.sbb.co.yu.



+1 Profil

icon Re: HTTP request kada stigne novi e-mail30.08.2007. u 17:51 - pre 156 meseci
ok hvala, znaci

.forward -> .procmail -> script.pl


Samo mi nije jasno, dali se .procmail poziva automatski kad stigne bilo koji mail za usera,
ili se .foward poziva automatski , pa on poziva .procmail,

i jeli bitno da se .procmail nalazi u "mail" folderu.




Nesto mi ne radi kako treba:

.forward koji se nalazi u /home/testuser/ sadrzaj:

"|IFS=' ';exec /usr/local/bin/procmail USER=testuser"


zatim .procmail koji se nalazi u /home/testuser/mail/ sadrzaj:

:0
* ^Subject:.*
| formail -s script.pl notice;


i script.pl se takodje nalazi kod procmail-a u folderu "mail"
njen sadraj za sad nije bitan , stavio sam recimo da ispise neki text u obican text file.
(i ispisuje to kad se rucno pokrene ./script.pl)


Cela stvar ne radi uopste, script.pl se uopste ne izvrsava?? moze mala pomoc.
 
Odgovor na temu

Jbyn4e

Član broj: 422
Poruke: 6049
*.ptt.yu.



+256 Profil

icon Re: HTTP request kada stigne novi e-mail30.08.2007. u 20:18 - pre 156 meseci
Na jednoj test masini stoji mi (menjam svoj user sa testuser):
.forward:
Code:

"|IFS=' ' && exec /usr/bin/procmail -f- || exit 75 #testuser"

Dalje, deo .procmailrc-a:
Code:

:0
* .*testuser*
        {
....
       :0 bB E c
        *  ^Subject.*trtmrt
                * .*
                | ./script trtmrt  2 6
                }
        :0 H B E
        *  ^Subject.*veliko
                {
                :0 H Bb c
                * .*KKK
                | ./scr veliko 29 1 | ./scr2
                }  
       .....
}

Ne pitaj me sta znace ove oznake, pogledaj man procmail-a (davno sam bas znao koja je koja, a sad kad mi treba pogledam manual L:)) Tackice (...) znaci da ima jos toga, samo sam malo skratio da bi bilo pregledno
skriptovi scr i scr2 su shell srciptovi u istom direktorijumu gde i .procmailrc (home dir usera) i tu imamo nesto ovako:
Code:

#!/bin/bash
cat - |
recode  UTF-8 |
...
sed -e "1s/$/','<html><body><p>/" |
...
sed -e :b -e '/$/N ; s/\r\n/\n/; tb' |
...
sed -e '/[email protected]#/,$d' >> $1
...
psql -d baza -h host -U user -f ./$1


P.S. formail uopste ne koristim...

P.P.S. da li sam jos nesto podesavao za procmail ... stvarno se ne secam (fajlovi su mi iz 2005-te kad sam to radio) a ako jesam to je ovaj red kod postfix-a, u master.cf:
Code:

procmail  unix  -       n       n       -       -       pipe  flags=R user=nobody argv=/usr/bin/procmail -t -m /etc/procmailrc ${sender} ${recipient}


Kad sve ostalo zakaže, pročitaj uputstvo...
 
Odgovor na temu

chupcko
Ima
Beograd

Član broj: 5560
Poruke: 1137

Sajt: www.google.com


+63 Profil

icon Re: HTTP request kada stigne novi e-mail30.08.2007. u 22:49 - pre 156 meseci
Generalno u zavisnosti od mail servera mozes uvek da napravis neki alias koji prosledjuje mail kroz program, nesto tipa |/bin/trtmrt. Naravno sam program se staruje kada dodje mail, a na stdin dobices ceo mail :). mislim da je malo jednostavnije od dizanja procmail-a i ...

CHUPCKO
 
Odgovor na temu

rapidlord
Vladan Markovic
dev
KG

Član broj: 10145
Poruke: 428
*.static.kg.sbb.co.yu.



+1 Profil

icon Re: HTTP request kada stigne novi e-mail31.08.2007. u 15:45 - pre 156 meseci
Problem je bio sto na DreamHost-u gde imam hosting, ne stavlja se .forward nego .forward.postfix

i namucio sam se i sa dozvolama za fajlove. Nije htelo da radi dok .procmail i .forward.postfix nisam stavio na chmod 644

Sada mogu da krenem da radim sa skriptom.
 
Odgovor na temu

rapidlord
Vladan Markovic
dev
KG

Član broj: 10145
Poruke: 428
*.static.kg.sbb.co.yu.



+1 Profil

icon Re: HTTP request kada stigne novi e-mail31.08.2007. u 18:11 - pre 156 meseci
Jel moze jos jedna mala pomoc:

imam .procmail fajl:

Code:
# DH compatible .procmailrc file
# Last updated 7/25/2007
PATH=/bin:/usr/bin:/usr/local/bin
MAILDIR=$HOME/Maildir
LOGFILE=/dev/null # specify something else if you want log files generated
SHELL=/bin/sh

# Add your rules here

:0c
| $HOME/test.pl

:0c
| gzip >>$HOME/headc.gz

# Catch-all rule for all unmatched email
:0
$HOME/test


Ovaj deo se uopste ne izvrsava:
Code:

:0c
| $HOME/test.pl


Dok se ostala dva gzip >>$HOME/headc.gz i $HOME/test izvrsavaju ok.


test.pl radi ok kada se pokrene rucno, skripta jednostavno ispisuje neki text u fajl:

Code:
#!/usr/bin/perl -w


open (MYFILE, '>>data2.txt');
print MYFILE "test 1";
close (MYFILE);   


Ali skripta se ne izvrsava automatski kad stigne mail.

Stavio sam chmod 744 test.pl
 
Odgovor na temu

Jbyn4e

Član broj: 422
Poruke: 6049
*.ptt.yu.



+256 Profil

icon Re: HTTP request kada stigne novi e-mail31.08.2007. u 18:43 - pre 156 meseci
Deluje kao da ne zna sta da radi sa .pl fajlom (u tom slucaju mozda mozes da mu kazes /putranja/do/perl $HOME/test.pl)
Uostalom, taj logfile sto si stavio na /dev/null - preusmeri u fajl pa vidi sta se desava.

Kako znas da se druga dva izvrsavaju ok? Si siguran?
Kad sve ostalo zakaže, pročitaj uputstvo...
 
Odgovor na temu

rapidlord
Vladan Markovic
dev
KG

Član broj: 10145
Poruke: 428
*.static.kg.sbb.co.yu.



+1 Profil

icon Re: HTTP request kada stigne novi e-mail01.09.2007. u 13:52 - pre 156 meseci
LogFile:

Code:
From [email protected]  Sat Sep  1 05:45:25 2007
 Subject: wiki-test.test  88888
  Folder: /mnt/kiln/vol/boot/spunky/atlantis/MY_USER/test/msg.GdapC        876



Citat:
Kako znas da se druga dva izvrsavaju ok? Si siguran?


Kada stigne mail, vidim ga u folderu "test" (bez procmail-a se pojavljuje po default u "Maildir"), a u $HOME se pojavi headc.gz arhivirana poruka. Znaci da system prodje te dve komande.


Malo opsirniji log file, VERBOSE=on

Code:
procmail: Assigning "SHELL=/bin/sh"
procmail: Assigning "LASTFOLDER=perl /mnt/kiln/vol/boot/spunky/atlantis/rapidlord/test.pl"
procmail: Executing "perl,/mnt/kiln/vol/boot/spunky/atlantis/rapidlord/test.pl"
procmail: [14914] Sat Sep  1 06:45:24 2007
procmail: Executing " gzip >>$HOME/headc.gz"
procmail: [14914] Sat Sep  1 06:45:24 2007
procmail: Assigning "LASTFOLDER= gzip >>$HOME/headc.gz"
procmail: Assigning "LASTFOLDER=/mnt/kiln/vol/boot/spunky/atlantis/rapidlord/test/msg.-iR_"
procmail: Opening "/mnt/kiln/vol/boot/spunky/atlantis/rapidlord/test/msg.-iR_"
procmail: Acquiring kernel-lock
procmail: Notified comsat: "[email protected]:/mnt/kiln/vol/boot/spunky/atlantis/rapidlord/test/msg.-iR_"
From [email protected]  Sat Sep  1 06:45:23 2007
 Subject: wiki-test.test  45345345
  Folder: /mnt/kiln/vol/boot/spunky/atlantis/rapidlord/test/msg.-iR_        877


[Ovu poruku je menjao rapidlord dana 01.09.2007. u 15:48 GMT+1]
 
Odgovor na temu

Jbyn4e

Član broj: 422
Poruke: 6049
*.ptt.yu.



+256 Profil

icon Re: HTTP request kada stigne novi e-mail01.09.2007. u 18:48 - pre 156 meseci
Ja testirao na galeb.etf.bg.ac.yu lepo radi tvoj skript (perl) u kombinaciji sa procmail-om, meni lepo napravio data2.txt.... tako da ...
Citat:

From [email protected] Sat Sep 1 19:41:53 2007
Subject: erw
procmail: Notified comsat: "[email protected]:/usr/sbin/sendmail -oi [email protected]"
procmail: [14033] Sat Sep 1 19:42:49 2007
procmail: Assigning "LASTFOLDER=./test.pl"
procmail: Match on "procmail: Executing "./test.pl"
"

Da li si siguran da ti je perl tamo gde si napisao? Na galebu jeste, which perl daje tu putanju.
Kad sve ostalo zakaže, pročitaj uputstvo...
 
Odgovor na temu

rapidlord
Vladan Markovic
dev
KG

Član broj: 10145
Poruke: 428
*.netpro.co.yu.



+1 Profil

icon Re: HTTP request kada stigne novi e-mail01.09.2007. u 19:02 - pre 156 meseci
Nasao sam gresku, mada i nije greska:

Samo puna putanja to foldera za data fajl, znaci skripta se izvrsavala samo ko zna gde je kreirala data fajl:

Code:
#!/usr/bin/perl -w


open (MYFILE, '>>/home/rapidlord/data2.txt');
print MYFILE "test 1";
close (MYFILE); 


Tako da sad radi.

Sada ne znam samo kako da prihvatim sadrzaj mejla u perl skriptu, obrada i postovanje je lako,
ali gde su mi podaci? Provalicu to nekako, a ako neko ima neki tip...

Code:
!/usr/bin/perl -w

my $mail = "where is the f*** my mail content";

open (MYFILE, '>>/home/rapidlord/data2.txt');
print MYFILE "test 1";
close (MYFILE); 


Tnx, za pomoc
 
Odgovor na temu

Jbyn4e

Član broj: 422
Poruke: 6049
*.ptt.yu.



+256 Profil

icon Re: HTTP request kada stigne novi e-mail01.09.2007. u 19:31 - pre 156 meseci
Hm, probaj
Code:

$x = <STDIN>;

mada ne znam perl... ovo videh na
http://www.english.uga.edu/humcomp/perl/superbasic.html
ili varijanta sa
http://alumnus.caltech.edu/~sv...odScript/perlGettingInput.html
gde pre perl skripta pokreces shell komandu cat:
Code:

cat logfile | processLogfile.pl

odnosno tebi bi trebalo jedno cat - | ./test.pl kao sto je u mom primeru gore negde...
Valjda. Probaj, ne kosta nista :)

Kad sve ostalo zakaže, pročitaj uputstvo...
 
Odgovor na temu

rapidlord
Vladan Markovic
dev
KG

Član broj: 10145
Poruke: 428
*.netpro.co.yu.



+1 Profil

icon Re: HTTP request kada stigne novi e-mail01.09.2007. u 21:18 - pre 156 meseci
:) to je to , tnx

Code:

open (MYFILE, '>>/home/rapidlord/data2.txt');

while (<STDIN>) {
        my $currLine = $_;
        print MYFILE " $currLine ";
}

close (MYFILE);


Samo to, i radi , imam ceo e-mail.

Sad "samo" da provalim postovanje na MediaWiki, post parametre za kreiranje nove stranice,
a i malo regexa da ispeglam meil kontent.
 
Odgovor na temu

rapidlord
Vladan Markovic
dev
KG

Član broj: 10145
Poruke: 428
*.netpro.co.yu.



+1 Profil

icon Re: HTTP request kada stigne novi e-mail01.09.2007. u 23:56 - pre 156 meseci
Evo zavrsena skripta:

Skripta nije jos 100% zavrsena ali radi, trebalo bi da se dodaju i razni parametri za vise korisnika,
vise kategorija, cfg fajl itd. Ali neki drugi put.


1. ".forward.postfix U zavisnosti od sistema ovaj fajl moze da bude drukcije (obicno je i ".forward" ), kod mene na dreamhost-u izgleda ovako:



Code:


"|/usr/bin/procmail -t"




2. ".procmailrc Ovaj fajl takodje moze malo da se razlikuje u zavisnosti od putanja na serveru:

Code:


# Empty DH compatible .procmailrc file
# Last updated 7/25/2007
VERBOSE=on
PATH=/bin:/usr/bin:/usr/local/bin;/usr/bin/perl
MAILDIR=$HOME/Maildir
LOGFILE=$HOME/log.txt # specify something else if you want log files generated
SHELL=/bin/sh

# Add your rules here

# send mail to wiki with test.pl script
:0c
| perl $HOME/test.pl




3. "test.pl" I na kraju Perl skripta:

Code:


#!/usr/bin/perl -w

use strict;
use LWP::UserAgent;
use HTTP::Request::Common qw(POST);
use HTTP::Cookies;

my $title = 'title';
my $urlBase = 'http://www.mojsajt.com/wiki/index.php';  #stavi odgovarajucu putanju
my $cookieFile = '/home/linux_user/mojsajt.com/cookies.txt';  #stavi odgovarajucu putanju
my $page = 'page';

my $ua = LWP::UserAgent->new;
$ua->cookie_jar(HTTP::Cookies->new('file' => $cookieFile));

while (<STDIN>) {
       my $currLine = $_;
       $page = $page.$currLine; 
}

$page = "$page \n [[Category:Mail Gateway]]";

$page=~m|Subject: \s*(.*?)\n|is;
  $title=$1;

my $req = HTTP::Request->new(GET
    => "$urlBase?title=$title&action=edit");

my $res = $ua->request($req);
my $content = $res->content;

my $token;
my $text;
my $time;

$content=~m|<input type='hidden' value="(.*?)" name="wpEditToken" />|i;
$token=$1;
$content=~m|<textarea.*?name="wpTextbox1".*?>(.*?)</textarea>|is;
$text=$1;
$content=~m|<input type='hidden' value="(.*?)" name="wpEdittime" />|i;
$time=$1;
            
unless ($res->is_success) {
    print STDERR "Unable to fetch wiki page '$page': $!\n";
    exit;
}
            
$req = POST "$urlBase?title=$title&action=submit",
    [ 'wpTextbox1' => $page, 'wpSummary' => '',
            'wpSection' => '', 'wpEdittime' => $time,
                    'wpMinoredit' => '1', 'wpSave' => 'Save page',
                            wpEditToken => $token ];
                                        $res = $ua->request($req);
                                        
unless ($res->is_success) {
    print STDERR "Error: Cant add new page!\n";
        exit;
        }





Hvala Jbyn4e na pomoci.



Ah da, zasto da ne , ako neko zeli da vidi kako ovo radi, neka posalje mejl na:

[email protected]

I vidi rezultat na:

http://www.pdadevelop.com/wiki/

Ili blize na:

http://www.pdadevelop.com/wiki...y:Mail_Gateway&action=edit

[Ovu poruku je menjao rapidlord dana 02.09.2007. u 01:19 GMT+1]
 
Odgovor na temu

[es] :: Skript jezici :: HTTP request kada stigne novi e-mail

[ Pregleda: 3676 | Odgovora: 16 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.