Login

Scan uploaded file for viruses with clamav

Author:
uandt
Posted:
May 27, 2008
Language:
Python
Version:
.96
Tags:
newforms clamav virus virus-scan
Score:
4 (after 4 ratings)

A clean_<fieldname>() method in a form subclass as described here. Scans the field named file for viruses.

My version of python-clamav does not support scanning of buffers. That is why I go through the hassle of saving the file to a temporary one.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
def clean_file(self):
    file = self.cleaned_data.get('file', '')
    #check a file in form for viruses
    if file:
        from tempfile import mkstemp
        import pyclamav
        import os
        tmpfile = mkstemp()[1]
        f = open(tmpfile, 'wb')
        f.write(file.content)
        f.close()
        isvirus, name = pyclamav.scanfile(tmpfile)
        os.unlink(tmpfile)
        if isvirus:
            raise forms.ValidationError( \
            "WARNING! Virus \"%s\" was detected in this file. \
            Check your system." % name)

    return file

More like this

  1. Generate newforms-admin admin.py file by NL 7 years ago
  2. Upload a zip file with newforms by kylefox 7 years, 12 months ago
  3. Automatically trim newforms text fields by miracle2k 7 years, 5 months ago
  4. assign fields dynamically in newforms by rubic 8 years ago
  5. DefaultValueWidget by miracle2k 7 years, 7 months ago

Comments

Please login first before commenting.