Blame


1 0e6fee11 2006-04-09 devnull #!/usr/local/plan9/bin/rc
2 0e6fee11 2006-04-09 devnull rfork n
3 0e6fee11 2006-04-09 devnull
4 0e6fee11 2006-04-09 devnull . 9.rc
5 0e6fee11 2006-04-09 devnull
6 0e6fee11 2006-04-09 devnull # exit status matching:
7 0e6fee11 2006-04-09 devnull #
8 fc46abdd 2006-04-12 devnull # $discard - is really bad, refuse the message
9 fc46abdd 2006-04-12 devnull # $accept - is really good, leave attachment alone
10 fc46abdd 2006-04-12 devnull # anything else - rewrite attachment to have .suspect extension
11 0e6fee11 2006-04-09 devnull #
12 0e6fee11 2006-04-09 devnull
13 0e6fee11 2006-04-09 devnull # magic exit statuses known to vf
14 0e6fee11 2006-04-09 devnull accept=10
15 0e6fee11 2006-04-09 devnull discard=13
16 0e6fee11 2006-04-09 devnull
17 0e6fee11 2006-04-09 devnull wrap=123 # anything but 10, 13
18 0e6fee11 2006-04-09 devnull
19 0e6fee11 2006-04-09 devnull if(! ~ $#* 1){
20 0e6fee11 2006-04-09 devnull echo usage: validateattachment mboxfile >[1=2]
21 0e6fee11 2006-04-09 devnull exit usage
22 0e6fee11 2006-04-09 devnull }
23 0e6fee11 2006-04-09 devnull
24 fc46abdd 2006-04-12 devnull # some idiot virus is sending around attachments marked as .zip
25 fc46abdd 2006-04-12 devnull # that are completely bogus and just say %TS_ZIP_ATTACH%
26 fc46abdd 2006-04-12 devnull # as the base64 encoding of the zip file. gmail rejects all zip
27 fc46abdd 2006-04-12 devnull # attachments when we forward them, so nip this one here.
28 fc46abdd 2006-04-12 devnull if(grep -s '^%TS_ZIP_ATTACH%$' $1 && ~ `{wc -l <$1} 1 2 3 4 5 6 7 8 9 10){
29 fc46abdd 2006-04-12 devnull echo bogus zip file!
30 fc46abdd 2006-04-12 devnull exit $discard
31 fc46abdd 2006-04-12 devnull }
32 fc46abdd 2006-04-12 devnull
33 0e6fee11 2006-04-09 devnull upas/unvf < $1 >$1.unvf
34 0e6fee11 2006-04-09 devnull file=$1.unvf
35 0e6fee11 2006-04-09 devnull fn sigexit { rm $file }
36 0e6fee11 2006-04-09 devnull
37 0e6fee11 2006-04-09 devnull fn save {
38 0e6fee11 2006-04-09 devnull # d=`{date -n}
39 0e6fee11 2006-04-09 devnull # cp $file /n/other/upas/tmp/$d.$1
40 0e6fee11 2006-04-09 devnull # cp raw /n/other/upas/tmp/$d.$1.raw
41 0e6fee11 2006-04-09 devnull # whatis x >/n/other/upas/tmp/$d.$1.file
42 0e6fee11 2006-04-09 devnull }
43 0e6fee11 2006-04-09 devnull
44 0e6fee11 2006-04-09 devnull x=`{file <$file | sed s/stdin://}
45 0e6fee11 2006-04-09 devnull x=$"x
46 0e6fee11 2006-04-09 devnull switch($x){
47 0e6fee11 2006-04-09 devnull case *Ascii* *text* *'c program'* *'rc executable'*
48 0e6fee11 2006-04-09 devnull save accept
49 0e6fee11 2006-04-09 devnull exit $accept
50 0e6fee11 2006-04-09 devnull
51 0e6fee11 2006-04-09 devnull case *'zip archive'*
52 fc46abdd 2006-04-12 devnull
53 0e6fee11 2006-04-09 devnull # >[2=1] because sometimes we get zip files we can't parse
54 0e6fee11 2006-04-09 devnull # but the errors look like
55 0e6fee11 2006-04-09 devnull # unzip: reading data for philw.doc.scr failed: ...
56 0e6fee11 2006-04-09 devnull # so we can still catch these.
57 83ab7d88 2007-11-27 rsc if(! unzip -tsf $file >[2=1] >/dev/null){
58 83ab7d88 2007-11-27 rsc echo corrupt zip file!
59 83ab7d88 2007-11-27 rsc exit $discard
60 83ab7d88 2007-11-27 rsc }
61 0e6fee11 2006-04-09 devnull if(unzip -tsf $file >[2=1] | grep -si ' |\.(scr|exe|pif|bat|com)$'){
62 0e6fee11 2006-04-09 devnull echo executables inside zip file!
63 0e6fee11 2006-04-09 devnull exit $discard
64 0e6fee11 2006-04-09 devnull }
65 0e6fee11 2006-04-09 devnull
66 0e6fee11 2006-04-09 devnull case jpeg 'PNG image' bmp 'GIF image' *'plan 9 image'
67 0e6fee11 2006-04-09 devnull save accept
68 0e6fee11 2006-04-09 devnull exit $accept
69 0e6fee11 2006-04-09 devnull
70 0e6fee11 2006-04-09 devnull case *Microsoft* *Office*
71 0e6fee11 2006-04-09 devnull save wrap
72 0e6fee11 2006-04-09 devnull exit $wrap
73 0e6fee11 2006-04-09 devnull
74 0e6fee11 2006-04-09 devnull case *MSDOS*
75 0e6fee11 2006-04-09 devnull # no executables
76 0e6fee11 2006-04-09 devnull echo $x
77 0e6fee11 2006-04-09 devnull exit $discard
78 0e6fee11 2006-04-09 devnull }
79 0e6fee11 2006-04-09 devnull
80 0e6fee11 2006-04-09 devnull save wrap
81 0e6fee11 2006-04-09 devnull exit $wrap
82 0e6fee11 2006-04-09 devnull
83 0e6fee11 2006-04-09 devnull