Article View: alt.pl.fan.gopher
Article #13448filtry
From: Puck
Date: Sat, 28 Dec 2002 19:59
Date: Sat, 28 Dec 2002 19:59
86 lines
3996 bytes
3996 bytes
Teraz mój system filtrów wygląda tak:
Najpierw na serwerze, o2. ma taką funkcję. Potem
Hamster (2.0.0.0 swoją drogą). Potem jeszcze hs2
w Hamsterze. Właśnie sobie napisałem filtry, które
są najlepsze, bo moje. Na koniec jest jeszcze
czytnik.
Kill odbywa się na poziomie serwera - jesli ktoś
mnie bardzo wkurzy. Hamster ogólnie nie killuje.
Ignoruje ze względu na size.
Hs2 robi dosłownie wszystko, ale o tym później.
W czytniku też raczej nie filtruję. Czasami ustawiam
"Mark Read" (news).
M'kay, co jest takiego świetnego w filtrach hs2? Otóż:
Mogę filtrować pod względem każdego z nagłówków albo
body. Są dwie części każdego filtra:
- kryteria (jeśli spełnia, to wykonuje się...)
- ..polecenia.
Wszystkich może być nieskończenie wiele. Polecenia
mogą być wszystkim. Dodawanie nagłówków, usuwanie ich,
wybieranie gdzie zapisać maila (user), albo na jaką
grupę go zaimportować. Można killowac.
Jeszcze jedną bardzo ciekawą rzeczą jest to, że kryteria
mogą się przeplatać z poleceniami. Wszystkie kryteria są
powiązane spójnikiem 'i' (popracuje trochę i to zmienię)
więc polecenia są wykonywane dopóki wszystkie kryteria
są spełnione. Przykład:
From: osoba1
Subject: temat1
body: tekst2
kryt: from; *osoba* #prawda
polecenie: ... #wykonywane
kryt: subject: temat1 #prawda
kryt: body: *nothin* #fałsz <--------------.
polecenie: ... # _nie_ wykonywane |
kryt: body: *tekst* #prawda |
polecenie: ... # _nie_ wykonywane, bo '
W planach: dodanie polecenia: przestań przetwarzać.
Na razie mail przechodzi przez wszystkie filtry po
kolei, więc te na początku miaja najmniejszy prio-
rytet.
Oto kawałek źródła:
:#!hs2
:#!load hamster.hsm
:#!load addons.hsm
Some of mine subroutines.
:const( $filterfile, _ścieżka_do_pliku_z_filtrami_ )
: assert( FileExists( $filterfile ), "Missing file: " + $filterfile )
(...)
: ListLoad( $filters, $filterfile )
(...)
: assert( Re_Match( $filterline, "^\{\w+\}$" ), "Error in filter file, line " + $if )
: assert( ListIndexOf( $filters, "/" + $filterline ) +1, "Missin' end of pattern " + $filterline )
Początek {...} i koniec /{...} filtra (w oddzielnych linijkach).
(...)
: set( $con, icase( $con, 0, 0, else, Re_Match( $action, $string ) ) )
Może tego nie widać, ale to jest spójnik 'i'. $con określa,
czy kryteria są spełnione.
(...)
: icase( $action,_
: "@header",_
: Re_Split( $string, "( )+" $news, $string )_
: +MsgSetHeader( $mesg, $news, $string ),
: "@post",_
: set( $news, $string ),_
: "@del",_
: set( $news, "dele" ),_
: else, "" )
Tu kilka przykładowych poleceń.
--
.: Puck gg#937829 phn# +48505113296 mailto:puck@go2.pl :.
< +OK closing connection - goodbye!
Technical Details
Message-ID:
<20021228.12896@news.blade.net>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!news.icm.edu.pl!news.atman.pl!newsfeed.gazeta.pl!newsfeed.tpinternet.pl!news.tpi.pl!not-for-mailShow Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!news.icm.edu.pl!news.atman.pl!newsfeed.gazeta.pl!newsfeed.tpinternet.pl!news.tpi.pl!not-for-mail From: Puck <puck@go2.pl> Newsgroups: alt.pl.fan.gopher Subject: filtry Date: Sat, 28 Dec 2002 20:59:02 +0100 Organization: Puck Entertainment '02 * Module explosion (http://www.mxp.w3.pl/) / Limp Bizkit -- Livin' it up / Lines: 86 Message-ID: <20021228.12896@news.blade.net> NNTP-Posting-Host: pn51.warszawa.cvx.ppp.tpnet.pl Mime-Version: 1.0 X-Trace: news.tpi.pl 1041105724 18707 213.76.109.51 (28 Dec 2002 20:02:04 GMT) X-Complaints-To: usenet@tpi.pl NNTP-Posting-Date: Sat, 28 Dec 2002 20:02:04 +0000 (UTC) X-Puck-Trace: blade.net 1041105543 4294526997 127.0.0.1 (6 fff94815 2002.12.28 19:59:03) X-Posting-Agent: Hamster/2.0.0.0 X-Newsreader: Forte Agent 1.8/32.553 X-Processed: Pucked NewsREAPER beta-cut 3 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit