tnew - plan9port - [fork] Plan 9 from user space
 (HTM) git clone git://src.adamsgaard.dk/plan9port
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit f1007ee0c6a2dfdc5512a1be3dada65cbc5d5391
 (DIR) parent 38c7eb9bd22e05ef32998858b178edaf8269cbab
 (HTM) Author: rsc <devnull@localhost>
       Date:   Sun, 21 May 2006 18:39:29 +0000
       
       new
       
       Diffstat:
         M bin/upas/.cvsignore                 |      11 +++++++++++
         A bin/upas/isspam                     |      35 +++++++++++++++++++++++++++++++
         A bin/upas/msgcat                     |      61 +++++++++++++++++++++++++++++++
         A bin/upas/spam                       |      19 +++++++++++++++++++
         A bin/upas/spambox                    |      14 ++++++++++++++
         A bin/upas/unspam                     |      19 +++++++++++++++++++
         A bin/upas/unspambox                  |      14 ++++++++++++++
       
       7 files changed, 173 insertions(+), 0 deletions(-)
       ---
 (DIR) diff --git a/bin/upas/.cvsignore b/bin/upas/.cvsignore
       t@@ -0,0 +1,11 @@
       +aliasmail
       +filter
       +marshal
       +nedmail
       +qer
       +runq
       +send
       +smtp
       +smtpd
       +unvf
       +vf
 (DIR) diff --git a/bin/upas/isspam b/bin/upas/isspam
       t@@ -0,0 +1,35 @@
       +#!/usr/local/plan9/bin/rc
       +
       +rfork en
       +
       +if (~ $#* 0)
       +        echo usage: isspam mesg && exit 'usage'
       +
       +TMP=/tmp/isspam.$USER.$pid
       +{
       +        echo '# hash table'
       +        msgcat $1|sed '/^$/,$ s/^From / From /'|upas/msgtok|
       +                grep -v '^....................(.*)        '|
       +                        sed 's/$/        1/'
       +} >$TMP.tok
       +
       +x=`{upas/bayes -k $HOME/mail/_prof.mbox $HOME/mail/_prof.spam ~ $TMP.tok}
       +where=$x(1)
       +prob=$x(2)
       +echo $where $prob
       +*=($x)
       +shift 2
       +while(! ~$#* 0){
       +        echo ' ' $1 $2
       +        shift 2
       +}
       +
       +rm -f $TMP.tok
       +if (~ $where *spam*){
       +        echo spam
       +        exit ''
       +} 
       +if not {
       +        echo ok
       +        exit 'is ok'
       +}
 (DIR) diff --git a/bin/upas/msgcat b/bin/upas/msgcat
       t@@ -0,0 +1,61 @@
       +#!/usr/local/plan9/bin/rc
       +
       +fn read9p {
       +        srv=$1; shift
       +        9p read $srv >[2=1]|grep -v '^9p\:'
       +}
       +
       +fn dir9p {
       +        srv=$1; shift
       +        9p ls $srv >[2=1]|grep -v '^9p\:'
       +}
       +        
       +
       +fn catmesg {
       +        # hold on for a second
       +        TMP=/tmp/$USER.`{date -n}; sleep 1
       +        msg=$1;
       +        read9p $msg/body >$TMP.body
       +        t=`{read9p $msg/type}
       +        switch($t){
       +                case text/html
       +                        echo '
       +                                        ,x/<!--(-?[^\-]|--[^>]|\n)*-->/ c//
       +                                        ,x/<[^>]+>/d
       +                                        ,p
       +                                        u
       +                                        ,y/<[^>]+>/d
       +                                        ,p
       +                                '| sam -d $TMP.body|[2] sed '1d;/^\?/d'
       +                case text/*
       +                        cat $TMP.body
       +                case message/*
       +                        cat $TMP.body
       +                case multipart/related
       +                        if (~ `{read9p $msg/1/type} text/plain)
       +                                catmesg $msg/1
       +                        if not if (~ `{read9p $msg/2/type} text/plain)
       +                                catmesg $msg/2
       +                        if not {
       +                                for (i in `{dir9p $msg|awk '$10 ~ /[0-9][0-9]*/ {print $10}'})
       +                                        catmesg $msg/$i
       +                        }
       +                case *
       +                        echo $t
       +                # should there be more?
       +        }
       +        rm -f $TMP.body
       +}
       +
       +if (~ $#* 0)
       +        echo usage: msgcat mail/mbox/msgn && exit 1
       +
       +mesg=$1
       +if (~ `{read9p $mesg/lines} '')
       +        echo no such message $mesg && exit 2
       +
       +                        
       +read9p $mesg/unixheader; read9p $mesg/header
       +echo
       +catmesg $mesg
       +echo
 (DIR) diff --git a/bin/upas/spam b/bin/upas/spam
       t@@ -0,0 +1,19 @@
       +#!/usr/local/plan9/bin/rc
       +
       +rfork en
       +
       +if (~ $#* 0)
       +        echo usage: spam mesg && exit 1
       +
       +TMP=/tmp/spam.$USER.$pid
       +{
       +        echo '# hash table'
       +        msgcat $1|sed '/^$/,$ s/^From / From /'|upas/msgtok|
       +                grep -v '^....................(.*)        '|
       +                        sed 's/$/        1/'
       +} >$TMP.tok
       +
       +cd $home/mail
       +upas/addhash -o _prof.mbox _prof.mbox 1 $TMP.tok -1
       +upas/addhash -o _prof.spam _prof.spam 1 $TMP.tok 1
       +rm -f $TMP.*
 (DIR) diff --git a/bin/upas/spambox b/bin/upas/spambox
       t@@ -0,0 +1,14 @@
       +#!/usr/local/plan9/bin/rc
       +
       +if (~ $#* 0)
       +        echo usage: spambox mailfs/mbox && exit "usage"
       +box=$1
       +msgs=(`{9p ls $box>[2=1]|awk '$10 ~ /[0-9][0-9]*/{print $10}'})
       +if (~ $#msgs 0)
       +        echo no messages in $box && exit "none"
       +
       +echo -n adding
       +for (m in $msgs){
       +        echo -n ' '$m
       +        spam $box/$m
       +}
 (DIR) diff --git a/bin/upas/unspam b/bin/upas/unspam
       t@@ -0,0 +1,19 @@
       +#!/usr/local/plan9/bin/rc
       +
       +rfork en
       +
       +if (~ $#* 0)
       +        echo usage: unspam mesg && exit 1
       +
       +TMP=/tmp/unspam.$USER.$pid
       +{
       +        echo '# hash table'
       +        msgcat $1|sed '/^$/,$ s/^From / From /'|upas/msgtok|
       +                grep -v '^....................(.*)        '|
       +                        sed 's/$/        1/'
       +} >$TMP.tok
       +
       +cd $home/mail
       +upas/addhash -o _prof.mbox _prof.mbox 1 $TMP.tok 1
       +upas/addhash -o _prof.spam _prof.spam 1 $TMP.tok -1
       +rm -f $TMP.*
 (DIR) diff --git a/bin/upas/unspambox b/bin/upas/unspambox
       t@@ -0,0 +1,14 @@
       +#!/usr/local/plan9/bin/rc
       +
       +if (~ $#* 0)
       +        echo usage: unspambox mailfs/mbox && exit "usage"
       +box=$1
       +msgs=(`{9p ls $box>[2=1]|awk '$10 ~ /[0-9][0-9]*/{print $10}'})
       +if (~ $#msgs 0)
       +        echo no messages in $box && exit "none"
       +
       +echo -n adding
       +for (m in $msgs){
       +        echo -n ' '$m
       +        unspam $box/$m
       +}