diff options
Diffstat (limited to 'lib/archive.py')
| -rw-r--r-- | lib/archive.py | 29 |
1 files changed, 20 insertions, 9 deletions
diff --git a/lib/archive.py b/lib/archive.py index aa2a47f..c31fac6 100644 --- a/lib/archive.py +++ b/lib/archive.py | |||
| @@ -13,11 +13,12 @@ class GenericArchiveStripper(parser.Generic_parser): | |||
| 13 | ''' | 13 | ''' |
| 14 | Represent a generic archive | 14 | Represent a generic archive |
| 15 | ''' | 15 | ''' |
| 16 | def __init__(self, realname, filename, parser, editor, backup): | 16 | def __init__(self, realname, filename, parser, editor, backup, add2archive): |
| 17 | super(GenericArchiveStripper, self).__init__(realname, | 17 | super(GenericArchiveStripper, self).__init__(realname, |
| 18 | filename, parser, editor, backup) | 18 | filename, parser, editor, backup, add2archive) |
| 19 | self.compression = '' | 19 | self.compression = '' |
| 20 | self.folder_list = [] | 20 | self.folder_list = [] |
| 21 | self.add2archive = add2archive | ||
| 21 | 22 | ||
| 22 | def remove_folder(self): | 23 | def remove_folder(self): |
| 23 | [shutil.rmtree(folder) for folder in self.folder_list] | 24 | [shutil.rmtree(folder) for folder in self.folder_list] |
| @@ -49,13 +50,18 @@ class ZipStripper(GenericArchiveStripper): | |||
| 49 | zipin.extract(item) | 50 | zipin.extract(item) |
| 50 | if os.path.isfile(item.filename): | 51 | if os.path.isfile(item.filename): |
| 51 | try: | 52 | try: |
| 52 | cfile = mat.create_class_file(item.filename, False) | 53 | cfile = mat.create_class_file(item.filename, False, |
| 54 | self.add2archive) | ||
| 53 | cfile.remove_all() | 55 | cfile.remove_all() |
| 54 | logging.debug('Processing %s from %s' % (item.filename, | 56 | logging.debug('Processing %s from %s' % (item.filename, |
| 55 | self.filename)) | 57 | self.filename)) |
| 58 | zipout.write(item.filename) | ||
| 56 | except: | 59 | except: |
| 57 | print('%s\' filefomart is not supported'%item.filename) | 60 | logging.info('%s\' filefomart is not supported' % |
| 58 | zipout.write(item.filename) | 61 | item.filename) |
| 62 | if self.add2archive: | ||
| 63 | zipout.write(item.filename) | ||
| 64 | mat.secure_remove(item.filename) | ||
| 59 | else: | 65 | else: |
| 60 | self.folder_list.insert(0, item.filename) | 66 | self.folder_list.insert(0, item.filename) |
| 61 | logging.info('%s treated' % self.filename) | 67 | logging.info('%s treated' % self.filename) |
| @@ -84,11 +90,15 @@ class TarStripper(GenericArchiveStripper): | |||
| 84 | if current_file.type is '0': #is current_file a regular file ? | 90 | if current_file.type is '0': #is current_file a regular file ? |
| 85 | #no backup file | 91 | #no backup file |
| 86 | try: | 92 | try: |
| 87 | cfile = mat.create_class_file(current_file.name, False) | 93 | cfile = mat.create_class_file(current_file.name, False, |
| 94 | self.add2archive) | ||
| 88 | cfile.remove_all() | 95 | cfile.remove_all() |
| 96 | tarout.add(current_file.name, filter=self._remove) | ||
| 89 | except: | 97 | except: |
| 90 | print('%s\' format is not supported'%current_file.name) | 98 | logging.info('%s\' format is not supported' % |
| 91 | tarout.add(current_file.name, filter=self._remove) | 99 | current_file.name) |
| 100 | if self.add2archive: | ||
| 101 | tarout.add(current_file.name, filter=self._remove) | ||
| 92 | mat.secure_remove(current_file.name) | 102 | mat.secure_remove(current_file.name) |
| 93 | else: | 103 | else: |
| 94 | self.folder_list.insert(0, current_file.name) | 104 | self.folder_list.insert(0, current_file.name) |
| @@ -123,7 +133,8 @@ class TarStripper(GenericArchiveStripper): | |||
| 123 | tarin.extract(current_file) | 133 | tarin.extract(current_file) |
| 124 | if current_file.type is '0': #is current_file a regular file ? | 134 | if current_file.type is '0': #is current_file a regular file ? |
| 125 | #no backup file | 135 | #no backup file |
| 126 | class_file = mat.create_class_file(current_file.name, False) | 136 | class_file = mat.create_class_file(current_file.name, False, |
| 137 | self.add2archive) | ||
| 127 | if not class_file.is_clean():#if the extracted file is not clean | 138 | if not class_file.is_clean():#if the extracted file is not clean |
| 128 | mat.secure_remove(current_file.name) #remove it | 139 | mat.secure_remove(current_file.name) #remove it |
| 129 | self.remove_folder() #remove all the remaining folders | 140 | self.remove_folder() #remove all the remaining folders |
