mirror of https://github.com/CIRCL/PyCIRCLean
Fix py3 support
parent
3efa57f0e2
commit
abb565094c
|
@ -43,7 +43,7 @@ install:
|
||||||
- sudo apt-get install -y libreoffice libreoffice-script-provider-python unoconv
|
- sudo apt-get install -y libreoffice libreoffice-script-provider-python unoconv
|
||||||
# filecheck.py dependencies
|
# filecheck.py dependencies
|
||||||
- sudo apt-get install libxml2-dev libxslt1-dev
|
- sudo apt-get install libxml2-dev libxslt1-dev
|
||||||
- pip install lxml exifread pillow
|
- pip install -U lxml exifread pillow
|
||||||
- pip install git+https://github.com/Rafiot/officedissector.git
|
- pip install git+https://github.com/Rafiot/officedissector.git
|
||||||
- if [ $(python -c 'import sys; print(sys.version_info.major)') == '2' ]; then pip install oletools olefile ; fi
|
- if [ $(python -c 'import sys; print(sys.version_info.major)') == '2' ]; then pip install oletools olefile ; fi
|
||||||
- wget https://didierstevens.com/files/software/pdfid_v0_2_1.zip
|
- wget https://didierstevens.com/files/software/pdfid_v0_2_1.zip
|
||||||
|
@ -79,7 +79,7 @@ install:
|
||||||
- popd
|
- popd
|
||||||
|
|
||||||
script:
|
script:
|
||||||
- travis_wait 30 coverage run --source=bin,kittengroomer setup.py test
|
- travis_wait 60 coverage run --source=bin,kittengroomer setup.py test
|
||||||
|
|
||||||
notifications:
|
notifications:
|
||||||
email:
|
email:
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
import os
|
import os
|
||||||
|
import sys
|
||||||
import magic
|
import magic
|
||||||
import hashlib
|
import hashlib
|
||||||
import shutil
|
import shutil
|
||||||
|
@ -41,7 +42,12 @@ class FileBase(object):
|
||||||
# magic will throw an IOError on a broken symlink
|
# magic will throw an IOError on a broken symlink
|
||||||
self.mimetype = 'inode/symlink'
|
self.mimetype = 'inode/symlink'
|
||||||
else:
|
else:
|
||||||
|
try:
|
||||||
mt = magic.from_file(self.src_path, mime=True)
|
mt = magic.from_file(self.src_path, mime=True)
|
||||||
|
except UnicodeEncodeError as e:
|
||||||
|
# FIXME: The encoding of the file is broken (possibly UTF-16)
|
||||||
|
mt = ''
|
||||||
|
self.log_details.update({'UnicodeError': e})
|
||||||
try:
|
try:
|
||||||
self.mimetype = mt.decode("utf-8")
|
self.mimetype = mt.decode("utf-8")
|
||||||
except:
|
except:
|
||||||
|
@ -168,6 +174,12 @@ class KittenGroomerBase(object):
|
||||||
return s.hexdigest()
|
return s.hexdigest()
|
||||||
|
|
||||||
def tree(self, base_dir, padding=' '):
|
def tree(self, base_dir, padding=' '):
|
||||||
|
if sys.version_info.major == 2:
|
||||||
|
self.__tree_py2(base_dir, padding)
|
||||||
|
else:
|
||||||
|
self.__tree_py3(base_dir, padding)
|
||||||
|
|
||||||
|
def __tree_py2(self, base_dir, padding=' '):
|
||||||
with open(self.log_content, 'ab') as lf:
|
with open(self.log_content, 'ab') as lf:
|
||||||
lf.write('#' * 80 + '\n')
|
lf.write('#' * 80 + '\n')
|
||||||
lf.write('{}+- {}/\n'.format(padding, os.path.basename(os.path.abspath(base_dir))))
|
lf.write('{}+- {}/\n'.format(padding, os.path.basename(os.path.abspath(base_dir))))
|
||||||
|
@ -182,6 +194,21 @@ class KittenGroomerBase(object):
|
||||||
elif os.path.isfile(curpath):
|
elif os.path.isfile(curpath):
|
||||||
lf.write('{}+-- {}\t- {}\n'.format(padding, f, self._computehash(curpath)))
|
lf.write('{}+-- {}\t- {}\n'.format(padding, f, self._computehash(curpath)))
|
||||||
|
|
||||||
|
def __tree_py3(self, base_dir, padding=' '):
|
||||||
|
with open(self.log_content, 'ab') as lf:
|
||||||
|
lf.write(bytes('#' * 80 + '\n', 'UTF-8'))
|
||||||
|
lf.write(bytes('{}+- {}/\n'.format(padding, os.path.basename(os.path.abspath(base_dir)).encode()), 'utf8'))
|
||||||
|
padding += '| '
|
||||||
|
files = sorted(os.listdir(base_dir))
|
||||||
|
for f in files:
|
||||||
|
curpath = os.path.join(base_dir, f)
|
||||||
|
if os.path.islink(curpath):
|
||||||
|
lf.write('{}+-- {}\t- Symbolic link to {}\n'.format(padding, f, os.readlink(curpath)).encode(errors='ignore'))
|
||||||
|
elif os.path.isdir(curpath):
|
||||||
|
self.tree(curpath, padding)
|
||||||
|
elif os.path.isfile(curpath):
|
||||||
|
lf.write('{}+-- {}\t- {}\n'.format(padding, f, self._computehash(curpath)).encode(errors='ignore'))
|
||||||
|
|
||||||
# ##### Helpers #####
|
# ##### Helpers #####
|
||||||
def _safe_rmtree(self, directory):
|
def _safe_rmtree(self, directory):
|
||||||
'''Remove a directory tree if it exists'''
|
'''Remove a directory tree if it exists'''
|
||||||
|
|
|
@ -25,12 +25,12 @@ class TestBasic(unittest.TestCase):
|
||||||
self.curpath = os.getcwd()
|
self.curpath = os.getcwd()
|
||||||
|
|
||||||
def dump_logs(self, kg):
|
def dump_logs(self, kg):
|
||||||
print(open(kg.log_processing, 'rb').read().decode("utf-8"))
|
print(open(kg.log_processing, 'rb').read())
|
||||||
if kg.debug:
|
if kg.debug:
|
||||||
if os.path.exists(kg.log_debug_err):
|
if os.path.exists(kg.log_debug_err):
|
||||||
print(open(kg.log_debug_err, 'rb').read().decode("utf-8"))
|
print(open(kg.log_debug_err, 'rb').read())
|
||||||
if os.path.exists(kg.log_debug_out):
|
if os.path.exists(kg.log_debug_out):
|
||||||
print(open(kg.log_debug_out, 'rb').read().decode("utf-8"))
|
print(open(kg.log_debug_out, 'rb').read())
|
||||||
|
|
||||||
def test_specific_valid(self):
|
def test_specific_valid(self):
|
||||||
src = os.path.join(self.curpath, 'tests/src2')
|
src = os.path.join(self.curpath, 'tests/src2')
|
||||||
|
|
Loading…
Reference in New Issue