module Autoproc.Rules.Dagit where
import Autoproc.Classifier
import Control.Monad.Writer hiding (when)
dagitRules :: Writer [CExp] ()
dagitRules = do spamc; spamcheck; sarah; mom; dad; rogan; lkm; cvsupdates;
cdspaper; bugs; forms3Tech; forms3; euses; darcsUsers;
darcsDevel; sbclDevel; ogi; clispDevel; csGradTalk;
classes; nwn; debian; csmaillist; momentum; fixReplyTo; dagitDefaultRule
dagitDefaultRule :: Writer [CExp] ()
dagitDefaultRule = defaultRule "/var/mail/dagit"
--Friends/Family
sarah :: Writer [CExp] ()
sarah = simpleSortByFrom "sparish"
nwn :: Writer [CExp] ()
nwn = subjectToMbox "nwn" "nwn"
mom :: Writer [CExp] ()
mom = addressToMbox "Griffinmndm" "mom"
dad :: Writer [CExp] ()
dad = addressToMbox "naturesgifts" "dad"
rogan :: Writer [CExp] ()
rogan = addressToMbox "creswick" "rogan"
lkm :: Writer [CExp] ()
lkm = toAddressToMbox "linux-kernel@vger.kernel.org" "linux-kernel"
cvsupdates :: Writer [CExp] ()
cvsupdates = subjectsToMbox ["\\[forms3-tech\\]", "\\[cvs\\]"] "cvsupdates"
cdspaper :: Writer [CExp] ()
cdspaper = subjectsToMbox ["\\[CDs Paper Update\\]"] "cdpaper"
bugs :: Writer [CExp] ()
bugs = subjectsToMbox ["\\[forms3-tech\\]", "\\[jira\\]"] "bugs"
forms3Tech :: Writer [CExp] ()
forms3Tech = simpleSortByTo_ "forms3-tech"
forms3 :: Writer [CExp] ()
forms3 = simpleSortByTo_ "forms3"
euses :: Writer [CExp] ()
euses = when ((subject "\\[eusesnewsletter\\]") .||.
(to_ (Addr "eusesosugrads")) .||.
(to_ (Addr "eusesall")))
(insertMbox "euses")
darcsUsers :: Writer [CExp] ()
darcsUsers = simpleSortByTo_ "darcs-users"
darcsDevel :: Writer [CExp] ()
darcsDevel = simpleSortByTo_ "darcs-devel"
sbclDevel :: Writer [CExp] ()
sbclDevel = simpleSortByTo_ "sbcl-devel"
ogi :: Writer [CExp] ()
ogi = subjectToMbox "OGI" "csmaillist"
clispDevel :: Writer [CExp] ()
clispDevel = simpleSortByTo_ "clisp-devel"
csGradTalk :: Writer [CExp] ()
csGradTalk = simpleSortByTo_ "cs-grad-talk"
debian :: Writer [CExp] ()
debian = when (CheckHeader "^X-Loop: debian.*@lists.debian.org")
(insertMbox "debian")
csmaillist :: Writer [CExp] ()
csmaillist = when (subject "\\[cs-grads\\]" .||.
subject "\\[eecs-grads\\]" .||.
to_ (Addr "eecs-grads"))
(insertMbox "csmaillist")
classes :: Writer [CExp] ()
classes = whenMatch (((to_ (Addr "class-")) % ".*@") `refineBy`
((CheckMatch "()") % "[^@]+"))
(placeInUsingMatch (mailBoxFromMatch match))
spamc :: Writer [CExp] ()
spamc = when Always (Filter "/usr/local/bin/spamc")
spamcheck :: Writer [CExp] ()
spamcheck = when (isSpam .||.
(spamLevel 3) .||.
(from (Addr "nationalmkt@planters.net")))
(insertMbox "caughtspam")
momentum :: Writer [CExp] ()
momentum = subjectToMbox "momentum!" "caughtspam"
sharing :: Writer [CExp] ()
sharing = when (said "caring" .&&. from (Addr "ecards"))
(forwardTo [(Addr "dagit@codersbase.com"),
(Addr "thedagit@hotmail.com")])
fixReplyTo :: Writer [CExp] ()
fixReplyTo = whenMatch (to_ (Addr "") % "osu-free@lists") filter'
where filter' = do m <- match
return $ Filter $ "formail -I\"Reply-To: "++m++"\""
notTest :: Writer [CExp] ()
notTest = when ((Not ((said "caring") .||.
(subject "Hi"))) .&&.
(from (Addr "steve")))
(insertMbox "notCaring")
alsoTest :: Writer [CExp] ()
alsoTest = when (from (Addr "steve"))
((insertMbox "steve") `also`
(forwardTo [Addr "steve's boss", Addr "steve's friend"]) `also`
(insertMbox "backup"))
--Friends/Family
sarah' :: Writer [CExp] ()
sarah' = simpleClassifyByFrom "sparish"
nwn' :: Writer [CExp] ()
nwn' = simpleClassifyBySubject "nwn"
mom' :: Writer [CExp] ()
mom' = classifyByFromAddr "Griffinmndm" "mom"
dad' :: Writer [CExp] ()
dad' = classifyByFromAddr "naturesgifts" "dad"
rogan' :: Writer [CExp] ()
rogan' = classifyByFromAddr "creswick" "rogan"
lkm' :: Writer [CExp] ()
lkm' = classifyByTo_ (Addr "linux-kernel@vger.kernel.org")
(mailbox "linux-kernel")
ogi' :: Writer [CExp] ()
ogi' = classifyBy ("ogi",
(subject "OGI"))
(insertMbox "csmaillist")
debian' :: Writer [CExp] ()
debian' = classifyBy ("debian",
(CheckHeader "^X-Loop: debian.*@lists.debian.org") )
(insertMbox "debian")
cvsupdates' :: Writer [CExp] ()
cvsupdates' = classifyBy ("cvsupdates",
(subject "[forms3-tech]" .&&.
subject "[cvs]"))
(insertMbox "cvsupdates")
bugs' :: Writer [CExp] ()
bugs' = classifyBy ("bugs",
(subject "[forms3-tech]" .&&.
subject "[jira]"))
(insertMbox "bugs")
csmaillist' :: Writer [CExp] ()
csmaillist' = classifyBy ("csmaillist", (subject "[cs-grads]" .||.
subject "[eecs-grads]" .||.
to_ (Addr "eecs-grads")))
(insertMbox "csmaillist")
euses' :: Writer [CExp] ()
euses' = classifyBy ("euses", ((subject "[eusesnewsletter]") .||.
(to_ (Addr "eusesosugrads")) .||.
(to_ (Addr "eusesall"))))
(insertMbox "euses")
forms3Tech' :: Writer [CExp] ()
forms3Tech' = simpleClassifyByTo_ "forms3-tech"
forms3' :: Writer [CExp] ()
forms3' = simpleClassifyByTo_ "forms3"
darcsUsers' :: Writer [CExp] ()
darcsUsers' = simpleClassifyByTo_ "darcs-users"
darcsDevel' :: Writer [CExp] ()
darcsDevel' = simpleClassifyByTo_ "darcs-devel"
sbclDevel' :: Writer [CExp] ()
sbclDevel' = simpleClassifyByTo_ "sbcl-devel"
clispDevel' :: Writer [CExp] ()
clispDevel' = simpleClassifyByTo_ "clisp-devel"
csGradTalk' :: Writer [CExp] ()
csGradTalk' = simpleClassifyByTo_ "cs-grad-talk"
momentum' :: Writer [CExp] ()
momentum' = classifyBySubject "momentum!" (mailbox "caughtspam")
orTest :: Writer [CExp] ()
orTest = when (subject "1" .||.
subject "2" .&&.
subject "3" .&&.
subject "4" .&&.
subject "5" .&&.
subject "6" .&&.
subject "7" .&&.
subject "8" .&&.
subject "9" .&&.
subject "10" .&&.
subject "11" .&&.
subject "12" .&&.
subject "13" .&&.
subject "14" .&&.
subject "15")
(insertMbox "orTest")
notOrTest :: Writer [CExp] ()
notOrTest = when (Not (subject "1" .||.
subject "2" .&&.
subject "3" .&&.
subject "4" .&&.
subject "5" .&&.
subject "6" .&&.
subject "7" .&&.
subject "8" .&&.
subject "9" .&&.
subject "10" .&&.
subject "11" .&&.
subject "12" .&&.
subject "13" .&&.
subject "14" .&&.
subject "15"))
(insertMbox "notOrTest")