summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorjvoisin2011-08-04 16:12:22 +0200
committerjvoisin2011-08-04 16:12:22 +0200
commitad31d77e6a199295ba44832abec35b054d04bced (patch)
tree15a4ce04cb70812d663108517dae35440f343d41 /lib
parentb8491275fc93385236a0bc3856ecaf3acaab6b63 (diff)
Cleanup
Diffstat (limited to 'lib')
-rw-r--r--lib/archive.py8
-rw-r--r--lib/office.py4
-rw-r--r--lib/parser.py1
3 files changed, 6 insertions, 7 deletions
diff --git a/lib/archive.py b/lib/archive.py
index 108134c..5956a1e 100644
--- a/lib/archive.py
+++ b/lib/archive.py
@@ -1,9 +1,8 @@
1''' 1'''
2 Take care of archives formats 2 Take care of archives formats
3''' 3'''
4import tarfile
5import zipfile
6 4
5import zipfile
7import shutil 6import shutil
8import os 7import os
9import logging 8import logging
@@ -11,7 +10,7 @@ import tempfile
11 10
12import parser 11import parser
13import mat 12import mat
14 13import tarfile
15 14
16class GenericArchiveStripper(parser.GenericParser): 15class GenericArchiveStripper(parser.GenericParser):
17 ''' 16 '''
@@ -224,6 +223,7 @@ class TarStripper(GenericArchiveStripper):
224 tarin = tarfile.open(self.filename, 'r' + self.compression) 223 tarin = tarfile.open(self.filename, 'r' + self.compression)
225 for item in tarin.getmembers(): 224 for item in tarin.getmembers():
226 if not self.is_file_clean(item): 225 if not self.is_file_clean(item):
226 tarin.close()
227 return False 227 return False
228 tarin.extract(item, self.tempdir) 228 tarin.extract(item, self.tempdir)
229 name = os.path.join(self.tempdir, item.name) 229 name = os.path.join(self.tempdir, item.name)
@@ -233,12 +233,14 @@ class TarStripper(GenericArchiveStripper):
233 class_file = mat.create_class_file(name, 233 class_file = mat.create_class_file(name,
234 False, self.add2archive) 234 False, self.add2archive)
235 if not class_file.is_clean(): 235 if not class_file.is_clean():
236 tarin.close()
236 return False 237 return False
237 except: 238 except:
238 #best solution I have found 239 #best solution I have found
239 logging.error('%s is not supported' % item.filename) 240 logging.error('%s is not supported' % item.filename)
240 _, ext = os.path.splitext(name) 241 _, ext = os.path.splitext(name)
241 if ext not in parser.NOMETA: 242 if ext not in parser.NOMETA:
243 tarin.close()
242 return False 244 return False
243 mat.secure_remove(name) 245 mat.secure_remove(name)
244 tarin.close() 246 tarin.close()
diff --git a/lib/office.py b/lib/office.py
index e21805a..f236d09 100644
--- a/lib/office.py
+++ b/lib/office.py
@@ -103,9 +103,7 @@ class OpenDocumentStripper(archive.GenericArchiveStripper):
103 zipin.close() 103 zipin.close()
104 czf = archive.ZipStripper(self.filename, self.parser, 104 czf = archive.ZipStripper(self.filename, self.parser,
105 'application/zip', self.backup, self.add2archive) 105 'application/zip', self.backup, self.add2archive)
106 if czf.is_clean(): 106 if not czf.is_clean():
107 return True
108 else:
109 return False 107 return False
110 return True 108 return True
111 109
diff --git a/lib/parser.py b/lib/parser.py
index 044ef0a..1bdca57 100644
--- a/lib/parser.py
+++ b/lib/parser.py
@@ -31,7 +31,6 @@ class GenericParser(object):
31 self.output = basename + '.cleaned' + ext 31 self.output = basename + '.cleaned' + ext
32 self.basename = os.path.basename(filename) # only filename 32 self.basename = os.path.basename(filename) # only filename
33 33
34
35 def is_clean(self): 34 def is_clean(self):
36 ''' 35 '''
37 Check if the file is clean from harmful metadatas 36 Check if the file is clean from harmful metadatas