Scan uploaded file for viruses with clamav

 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

Comments

timo (on April 4, 2009):

I had to change line 10 to f.write(file.read()) to get it working with the latest development version of Django, but after that it did detect the EICAR ([European Institute for Computer Anti-Virus Research]) test virus signature.

#

(Forgotten your password?)

You may use Markdown syntax here, but raw HTML will be removed.