libis-format 0.9.32 → 0.9.33
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/data/types.yml +30 -16
- data/lib/libis/format/config.rb +7 -18
- data/lib/libis/format/converter/image_converter.rb +6 -0
- data/lib/libis/format/droid.rb +82 -25
- data/lib/libis/format/extension_identification.rb +55 -0
- data/lib/libis/format/fido.rb +57 -72
- data/lib/libis/format/file_tool.rb +76 -0
- data/lib/libis/format/identification_tool.rb +174 -0
- data/lib/libis/format/identifier.rb +129 -117
- data/lib/libis/format/type_database.rb +36 -5
- data/lib/libis/format/version.rb +1 -1
- data/lib/libis/format.rb +3 -0
- data/libis-format.gemspec +2 -1
- data/spec/converter_spec.rb +6 -4
- data/spec/identifier_spec.rb +125 -34
- metadata +21 -126
- data/tools/droid/DROID_SignatureFile_V90.xml +0 -40182
- data/tools/droid/container-signature-20170330.xml +0 -3584
- data/tools/droid/droid-command-line-6.3.jar +0 -0
- data/tools/droid/droid.bat +0 -152
- data/tools/droid/droid.sh +0 -152
- data/tools/droid/lib/XmlSchema-1.4.7.jar +0 -0
- data/tools/droid/lib/activation-1.1.jar +0 -0
- data/tools/droid/lib/aopalliance-1.0.jar +0 -0
- data/tools/droid/lib/asm-2.2.3.jar +0 -0
- data/tools/droid/lib/aspectjrt-1.8.7.jar +0 -0
- data/tools/droid/lib/aspectjweaver-1.8.7.jar +0 -0
- data/tools/droid/lib/bcmail-jdk14-138.jar +0 -0
- data/tools/droid/lib/bcprov-jdk14-138.jar +0 -0
- data/tools/droid/lib/beansbinding-1.2.1.jar +0 -0
- data/tools/droid/lib/byteseek-2.0.3.jar +0 -0
- data/tools/droid/lib/cglib-nodep-2.2.2.jar +0 -0
- data/tools/droid/lib/classmate-1.0.0.jar +0 -0
- data/tools/droid/lib/commons-cli-1.2.jar +0 -0
- data/tools/droid/lib/commons-codec-1.10.jar +0 -0
- data/tools/droid/lib/commons-collections-3.2.2.jar +0 -0
- data/tools/droid/lib/commons-compress-1.4.1.jar +0 -0
- data/tools/droid/lib/commons-configuration-1.8.jar +0 -0
- data/tools/droid/lib/commons-dbcp-1.4.jar +0 -0
- data/tools/droid/lib/commons-httpclient-3.1.jar +0 -0
- data/tools/droid/lib/commons-io-2.4.jar +0 -0
- data/tools/droid/lib/commons-lang-2.6.jar +0 -0
- data/tools/droid/lib/commons-logging-1.1.1.jar +0 -0
- data/tools/droid/lib/commons-pool-1.5.4.jar +0 -0
- data/tools/droid/lib/cxf-api-2.2.12.jar +0 -0
- data/tools/droid/lib/cxf-common-schemas-2.2.12.jar +0 -0
- data/tools/droid/lib/cxf-common-utilities-2.2.12.jar +0 -0
- data/tools/droid/lib/cxf-rt-bindings-http-2.2.12.jar +0 -0
- data/tools/droid/lib/cxf-rt-bindings-soap-2.2.12.jar +0 -0
- data/tools/droid/lib/cxf-rt-bindings-xml-2.2.12.jar +0 -0
- data/tools/droid/lib/cxf-rt-core-2.2.12.jar +0 -0
- data/tools/droid/lib/cxf-rt-databinding-jaxb-2.2.12.jar +0 -0
- data/tools/droid/lib/cxf-rt-frontend-jaxws-2.2.12.jar +0 -0
- data/tools/droid/lib/cxf-rt-frontend-simple-2.2.12.jar +0 -0
- data/tools/droid/lib/cxf-rt-transports-http-2.2.12.jar +0 -0
- data/tools/droid/lib/cxf-rt-ws-addr-2.2.12.jar +0 -0
- data/tools/droid/lib/cxf-tools-common-2.2.12.jar +0 -0
- data/tools/droid/lib/de.huxhorn.lilith.3rdparty.flyingsaucer.core-renderer-8RC1.jar +0 -0
- data/tools/droid/lib/derby-10.10.2.0.jar +0 -0
- data/tools/droid/lib/droid-container-6.3.jar +0 -0
- data/tools/droid/lib/droid-core-6.3.jar +0 -0
- data/tools/droid/lib/droid-core-interfaces-6.3.jar +0 -0
- data/tools/droid/lib/droid-export-6.3.jar +0 -0
- data/tools/droid/lib/droid-export-interfaces-6.3.jar +0 -0
- data/tools/droid/lib/droid-help-6.3.jar +0 -0
- data/tools/droid/lib/droid-report-6.3.jar +0 -0
- data/tools/droid/lib/droid-report-interfaces-6.3.jar +0 -0
- data/tools/droid/lib/droid-results-6.3.jar +0 -0
- data/tools/droid/lib/geronimo-activation_1.1_spec-1.0.2.jar +0 -0
- data/tools/droid/lib/geronimo-annotation_1.0_spec-1.1.1.jar +0 -0
- data/tools/droid/lib/geronimo-javamail_1.4_spec-1.6.jar +0 -0
- data/tools/droid/lib/geronimo-jaxws_2.1_spec-1.0.jar +0 -0
- data/tools/droid/lib/geronimo-stax-api_1.0_spec-1.0.1.jar +0 -0
- data/tools/droid/lib/geronimo-ws-metadata_2.0_spec-1.1.2.jar +0 -0
- data/tools/droid/lib/hibernate-validator-5.1.0.Final.jar +0 -0
- data/tools/droid/lib/itext-2.0.8.jar +0 -0
- data/tools/droid/lib/javahelp-2.0.05.jar +0 -0
- data/tools/droid/lib/jaxb-api-2.1.jar +0 -0
- data/tools/droid/lib/jaxb-impl-2.1.13.jar +0 -0
- data/tools/droid/lib/jboss-logging-3.1.3.GA.jar +0 -0
- data/tools/droid/lib/joda-time-1.6.2.jar +0 -0
- data/tools/droid/lib/jra-1.0-alpha-4.jar +0 -0
- data/tools/droid/lib/jta-1.1.jar +0 -0
- data/tools/droid/lib/jwat-arc-1.0.3.jar +0 -0
- data/tools/droid/lib/jwat-archive-common-1.0.3.jar +0 -0
- data/tools/droid/lib/jwat-common-1.0.3.jar +0 -0
- data/tools/droid/lib/jwat-gzip-1.0.3.jar +0 -0
- data/tools/droid/lib/jwat-warc-1.0.2.jar +0 -0
- data/tools/droid/lib/log4j-1.2.13.jar +0 -0
- data/tools/droid/lib/neethi-2.0.4.jar +0 -0
- data/tools/droid/lib/opencsv-2.3.jar +0 -0
- data/tools/droid/lib/org-netbeans-swing-outline-7.2.jar +0 -0
- data/tools/droid/lib/org-openide-util-7.2.jar +0 -0
- data/tools/droid/lib/org-openide-util-lookup-7.2.jar +0 -0
- data/tools/droid/lib/poi-3.13.jar +0 -0
- data/tools/droid/lib/saaj-api-1.3.jar +0 -0
- data/tools/droid/lib/saaj-impl-1.3.2.jar +0 -0
- data/tools/droid/lib/slf4j-api-1.4.2.jar +0 -0
- data/tools/droid/lib/slf4j-log4j12-1.4.2.jar +0 -0
- data/tools/droid/lib/spring-aop-4.0.3.RELEASE.jar +0 -0
- data/tools/droid/lib/spring-beans-4.0.3.RELEASE.jar +0 -0
- data/tools/droid/lib/spring-context-4.0.3.RELEASE.jar +0 -0
- data/tools/droid/lib/spring-core-4.0.3.RELEASE.jar +0 -0
- data/tools/droid/lib/spring-expression-4.0.3.RELEASE.jar +0 -0
- data/tools/droid/lib/spring-jdbc-4.0.3.RELEASE.jar +0 -0
- data/tools/droid/lib/spring-orm-4.0.3.RELEASE.jar +0 -0
- data/tools/droid/lib/spring-tx-4.0.3.RELEASE.jar +0 -0
- data/tools/droid/lib/spring-web-2.5.6.jar +0 -0
- data/tools/droid/lib/stax-api-1.0-2.jar +0 -0
- data/tools/droid/lib/trove4j-3.0.3.jar +0 -0
- data/tools/droid/lib/truezip-6.8.4.jar +0 -0
- data/tools/droid/lib/validation-api-1.1.0.Final.jar +0 -0
- data/tools/droid/lib/wsdl4j-1.6.2.jar +0 -0
- data/tools/droid/lib/wstx-asl-3.2.9.jar +0 -0
- data/tools/droid/lib/xercesImpl-2.9.1.jar +0 -0
- data/tools/droid/lib/xml-apis-1.3.04.jar +0 -0
- data/tools/droid/lib/xml-resolver-1.2.jar +0 -0
- data/tools/droid/lib/xz-1.0.jar +0 -0
- data/tools/fido/__init__.py +0 -50
- data/tools/fido/conf/DROID_SignatureFile-v90.xml +0 -2
- data/tools/fido/conf/container-signature-20170330.xml +0 -3584
- data/tools/fido/conf/dc.xsd +0 -119
- data/tools/fido/conf/dcmitype.xsd +0 -53
- data/tools/fido/conf/dcterms.xsd +0 -383
- data/tools/fido/conf/fido-formats.xsd +0 -173
- data/tools/fido/conf/format_extension_template.xml +0 -105
- data/tools/fido/conf/format_extensions.xml +0 -484
- data/tools/fido/conf/formats-v90.xml +0 -48877
- data/tools/fido/conf/pronom-xml-v90.zip +0 -0
- data/tools/fido/conf/versions.xml +0 -8
- data/tools/fido/fido.bat +0 -4
- data/tools/fido/fido.py +0 -884
- data/tools/fido/fido.sh +0 -5
- data/tools/fido/package.py +0 -96
- data/tools/fido/prepare.py +0 -645
- data/tools/fido/pronomutils.py +0 -200
- data/tools/fido/toxml.py +0 -60
- data/tools/fido/update_signatures.py +0 -183
data/tools/fido/fido.sh
DELETED
data/tools/fido/package.py
DELETED
|
@@ -1,96 +0,0 @@
|
|
|
1
|
-
"""Support for containers."""
|
|
2
|
-
|
|
3
|
-
import re
|
|
4
|
-
import zipfile
|
|
5
|
-
|
|
6
|
-
import olefile
|
|
7
|
-
from six import iteritems
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
class Package(object):
|
|
11
|
-
"""Base class for container support."""
|
|
12
|
-
|
|
13
|
-
def _process_puid_map(self, data, puid_map):
|
|
14
|
-
results = []
|
|
15
|
-
for puid, signatures in iteritems(puid_map):
|
|
16
|
-
results.extend(self._process_matches(data, puid, signatures))
|
|
17
|
-
|
|
18
|
-
return results
|
|
19
|
-
|
|
20
|
-
def _process_matches(self, data, puid, signatures):
|
|
21
|
-
results = []
|
|
22
|
-
for signature in signatures:
|
|
23
|
-
if re.search(signature["signature"], data):
|
|
24
|
-
results.append(puid)
|
|
25
|
-
|
|
26
|
-
return results
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
class OlePackage(Package):
|
|
30
|
-
"""OlePackage supports OLE containers."""
|
|
31
|
-
|
|
32
|
-
def __init__(self, ole, signatures):
|
|
33
|
-
"""Instantiate OlePackage object given the location of its file and signatures."""
|
|
34
|
-
self.ole = ole
|
|
35
|
-
self.signatures = signatures
|
|
36
|
-
|
|
37
|
-
def detect_formats(self):
|
|
38
|
-
"""Detect available formats inside the OLE container."""
|
|
39
|
-
try:
|
|
40
|
-
ole = olefile.OleFileIO(self.ole)
|
|
41
|
-
except IOError:
|
|
42
|
-
return []
|
|
43
|
-
|
|
44
|
-
results = []
|
|
45
|
-
for path, puid_map in iteritems(self.signatures):
|
|
46
|
-
# Each OLE container signature lists the path of the file inside the OLE
|
|
47
|
-
# on which it operates; if the file is missing, there can be no match.
|
|
48
|
-
# This is not a precise match because the name of the stream may slightly
|
|
49
|
-
# differ; for example, \x01CompObj instead of CompObj
|
|
50
|
-
filepath = None
|
|
51
|
-
for paths in ole.listdir():
|
|
52
|
-
p = '/'.join(paths)
|
|
53
|
-
if p == path or p[1:] == path:
|
|
54
|
-
filepath = p
|
|
55
|
-
break
|
|
56
|
-
|
|
57
|
-
# Path to match isn't in the container at all
|
|
58
|
-
if filepath is None:
|
|
59
|
-
continue
|
|
60
|
-
|
|
61
|
-
with ole.openstream(filepath) as stream:
|
|
62
|
-
contents = stream.read()
|
|
63
|
-
results.extend(self._process_puid_map(contents, puid_map))
|
|
64
|
-
|
|
65
|
-
return results
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
class ZipPackage(Package):
|
|
69
|
-
"""ZipPackage supports Zip containers."""
|
|
70
|
-
|
|
71
|
-
def __init__(self, zip_, signatures):
|
|
72
|
-
"""Instantiate ZipPackage object given the location of its file and signatures."""
|
|
73
|
-
self.zip = zip_
|
|
74
|
-
self.signatures = signatures
|
|
75
|
-
|
|
76
|
-
def detect_formats(self):
|
|
77
|
-
"""Detect available formats inside the ZIP container."""
|
|
78
|
-
try:
|
|
79
|
-
zip_ = zipfile.ZipFile(self.zip)
|
|
80
|
-
except (zipfile.BadZipfile, RuntimeError, UnicodeDecodeError):
|
|
81
|
-
return []
|
|
82
|
-
|
|
83
|
-
results = []
|
|
84
|
-
for path, puid_map in iteritems(self.signatures):
|
|
85
|
-
# Each ZIP container signature lists the path of the file inside the ZIP
|
|
86
|
-
# on which it operates; if the file is missing, there can be no match.
|
|
87
|
-
if path not in zip_.namelist():
|
|
88
|
-
continue
|
|
89
|
-
|
|
90
|
-
# Extract the requested file from the ZIP only once, and pass the same
|
|
91
|
-
# data to each signature that requires it.
|
|
92
|
-
with zip_.open(path) as id_file:
|
|
93
|
-
contents = id_file.read()
|
|
94
|
-
results.extend(self._process_puid_map(contents, puid_map))
|
|
95
|
-
|
|
96
|
-
return results
|