Mercurial > p > roundup > code
annotate detectors/emailauditor.py @ 3882:46ef2a6fd79d
config option to limit nosy attachments based on size
reworking of patch [SF#772323] from Philipp Gortan
It tries to avoid reading the file contents just to
get the file size but that was too hard for metakit backends.
They don't inherit from blobfiles.FileStorage which makes
it more challenging. Really that backend should be reworked
to inherit from FileStorage.
I'm not sure I like the default being sys.maxint. Maybe have
0 == unlimited? But what if someone really wanted to set it to
0 to mean "don't attach anything"?
| author | Justus Pendleton <jpend@users.sourceforge.net> |
|---|---|
| date | Mon, 03 Sep 2007 17:14:09 +0000 |
| parents | 81cb4860ca75 |
| children |
| rev | line source |
|---|---|
|
2127
cee6efcbb57e
bah, file renaming
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1 |
|
cee6efcbb57e
bah, file renaming
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2 def eml_to_mht(db, cl, nodeid, newvalues): |
|
cee6efcbb57e
bah, file renaming
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3 '''This auditor fires whenever a new file entity is created. |
|
cee6efcbb57e
bah, file renaming
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
4 |
|
cee6efcbb57e
bah, file renaming
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
5 If the file is of type message/rfc822, we tack onthe extension .eml. |
|
cee6efcbb57e
bah, file renaming
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
6 |
|
cee6efcbb57e
bah, file renaming
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
7 The reason for this is that Microsoft Internet Explorer will not open |
|
cee6efcbb57e
bah, file renaming
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
8 things with a .eml attachment, as they deem it 'unsafe'. Worse yet, |
|
cee6efcbb57e
bah, file renaming
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
9 they'll just give you an incomprehensible error message. For more |
|
cee6efcbb57e
bah, file renaming
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
10 information, please see: |
|
cee6efcbb57e
bah, file renaming
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
11 |
|
cee6efcbb57e
bah, file renaming
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
12 http://support.microsoft.com/default.aspx?scid=kb;EN-US;825803 |
|
cee6efcbb57e
bah, file renaming
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
13 |
|
cee6efcbb57e
bah, file renaming
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
14 Their suggested work around is (excerpt): |
|
cee6efcbb57e
bah, file renaming
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
15 |
|
cee6efcbb57e
bah, file renaming
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
16 WORKAROUND |
|
cee6efcbb57e
bah, file renaming
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
17 |
|
cee6efcbb57e
bah, file renaming
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
18 To work around this behavior, rename the .EML file that the URL |
|
cee6efcbb57e
bah, file renaming
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
19 links to so that it has a .MHT file name extension, and then update |
|
cee6efcbb57e
bah, file renaming
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
20 the URL to reflect the change to the file name. To do this: |
|
cee6efcbb57e
bah, file renaming
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
21 |
|
cee6efcbb57e
bah, file renaming
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
22 1. In Windows Explorer, locate and then select the .EML file that |
|
cee6efcbb57e
bah, file renaming
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
23 the URL links. |
|
cee6efcbb57e
bah, file renaming
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
24 2. Right-click the .EML file, and then click Rename. |
|
cee6efcbb57e
bah, file renaming
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
25 3. Change the file name so that the .EML file uses a .MHT file name |
|
cee6efcbb57e
bah, file renaming
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
26 extension, and then press ENTER. |
|
cee6efcbb57e
bah, file renaming
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
27 4. Updated the URL that links to the file to reflect the new file |
|
cee6efcbb57e
bah, file renaming
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
28 name extension. |
|
cee6efcbb57e
bah, file renaming
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
29 |
|
cee6efcbb57e
bah, file renaming
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
30 So... we do that. :)''' |
|
3345
81cb4860ca75
fix nameerror. backport candidate
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents:
2128
diff
changeset
|
31 if newvalues.get('type', '').lower() == "message/rfc822": |
| 2128 | 32 if not newvalues.has_key('name'): |
|
2127
cee6efcbb57e
bah, file renaming
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
33 newvalues['name'] = 'email.mht' |
| 2128 | 34 return |
|
2127
cee6efcbb57e
bah, file renaming
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
35 name = newvalues['name'] |
|
cee6efcbb57e
bah, file renaming
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
36 if name.endswith('.eml'): |
|
cee6efcbb57e
bah, file renaming
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
37 name = name[:-4] |
|
cee6efcbb57e
bah, file renaming
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
38 newvalues['name'] = name + '.mht' |
|
cee6efcbb57e
bah, file renaming
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
39 |
|
cee6efcbb57e
bah, file renaming
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
40 def init(db): |
|
cee6efcbb57e
bah, file renaming
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
41 db.file.audit('create', eml_to_mht) |
|
cee6efcbb57e
bah, file renaming
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
42 |
