texperiment - 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 0e6fee11c89b146aa5419bbdf26514bc34bdaf81
 (DIR) parent 1f2ab849c05c3eb4eaf9088536733e351050c98e
 (HTM) Author: rsc <devnull@localhost>
       Date:   Sun,  9 Apr 2006 00:24:14 +0000
       
       experiment
       
       Diffstat:
         A mail/lib/validateattachment         |      69 ++++++++++++++++++++++++++++++
       
       1 file changed, 69 insertions(+), 0 deletions(-)
       ---
 (DIR) diff --git a/mail/lib/validateattachment b/mail/lib/validateattachment
       t@@ -0,0 +1,69 @@
       +#!/usr/local/plan9/bin/rc
       +rfork n
       +
       +. 9.rc
       +
       +# exit status matching:
       +#
       +#        *discard* - is really bad, refuse the message 
       +#        *accept* - is really good, leave attachment alone
       +#        * - rewrite attachment to have .suspect extension
       +# 
       +
       +# magic exit statuses known to vf
       +accept=10
       +discard=13
       +
       +wrap=123        # anything but 10, 13
       +
       +if(! ~ $#* 1){
       +        echo usage: validateattachment mboxfile >[1=2]
       +        exit usage
       +}
       +
       +upas/unvf < $1 >$1.unvf
       +file=$1.unvf
       +fn sigexit { rm $file }
       +
       +fn save {
       +#        d=`{date -n}
       +#        cp $file /n/other/upas/tmp/$d.$1
       +#        cp raw /n/other/upas/tmp/$d.$1.raw
       +#        whatis x >/n/other/upas/tmp/$d.$1.file
       +}
       +
       +x=`{file <$file | sed s/stdin://}
       +x=$"x
       +switch($x){
       +case *Ascii* *text* *'c program'* *'rc executable'* 
       +        save accept
       +        exit $accept
       +
       +case *'zip archive'*
       +        # >[2=1] because sometimes we get zip files we can't parse
       +        # but the errors look like
       +        # unzip: reading data for philw.doc.scr failed: ...
       +        # so we can still catch these.
       +        if(unzip -tsf $file >[2=1] | grep -si '      |\.(scr|exe|pif|bat|com)$'){
       +                echo executables inside zip file!
       +                exit $discard
       +        }
       +
       +case jpeg 'PNG image' bmp 'GIF image' *'plan 9 image'
       +        save accept
       +        exit $accept
       +
       +case *Microsoft* *Office*
       +        save wrap
       +        exit $wrap
       +
       +case *MSDOS*
       +        # no executables
       +        echo $x
       +        exit $discard
       +}
       +
       +save wrap
       +exit $wrap
       +
       +