git: dd7ef094cbf4 - main - security/py-plaso: update to 20240826

From: Antoine Brodin <antoine_at_FreeBSD.org>
Date: Tue, 18 Feb 2025 10:13:43 UTC
The branch main has been updated by antoine:

URL: https://cgit.FreeBSD.org/ports/commit/?id=dd7ef094cbf439f7af5c44c9fbc07c0af649acd8

commit dd7ef094cbf439f7af5c44c9fbc07c0af649acd8
Author:     Antoine Brodin <antoine@FreeBSD.org>
AuthorDate: 2025-02-18 10:13:10 +0000
Commit:     Antoine Brodin <antoine@FreeBSD.org>
CommitDate: 2025-02-18 10:13:10 +0000

    security/py-plaso: update to 20240826
---
 security/py-plaso/Makefile                         | 21 +++-------
 security/py-plaso/distinfo                         |  6 +--
 .../files/patch-plaso_output_winevt__rc.py         | 47 ++++++++++++++++++++++
 .../py-plaso/files/patch-plaso_parsers_sqlite.py   | 13 ++++++
 ...patch-plaso_parsers_sqlite__plugins_imessage.py | 11 +++++
 ...so_parsers_sqlite__plugins_windows__timeline.py | 16 ++++++++
 .../patch-tests_storage_sqlite_sqlite__file.py     | 18 +++++++++
 7 files changed, 114 insertions(+), 18 deletions(-)

diff --git a/security/py-plaso/Makefile b/security/py-plaso/Makefile
index 78c0b58a819c..fe4c2d123089 100644
--- a/security/py-plaso/Makefile
+++ b/security/py-plaso/Makefile
@@ -1,6 +1,5 @@
 PORTNAME=	plaso
-PORTVERSION=	20231224
-PORTREVISION=	3
+PORTVERSION=	20240826
 CATEGORIES=	security python
 MASTER_SITES=	https://github.com/log2timeline/plaso/releases/download/${PORTVERSION}/ \
 		LOCAL/antoine
@@ -13,10 +12,13 @@ WWW=		https://github.com/log2timeline/plaso/wiki
 LICENSE=	APACHE20
 LICENSE_FILE=	${WRKSRC}/LICENSE
 
+BUILD_DEPENDS=	${PY_SETUPTOOLS} \
+		${PYTHON_PKGNAMEPREFIX}wheel>=0:devel/py-wheel@${PY_FLAVOR}
 RUN_DEPENDS=	libcaes>=a:security/libcaes \
 		libesedb>=e:devel/libesedb \
 		libevt>=a:devel/libevt \
 		libevtx>=a:devel/libevtx \
+		libfcrypto>=a:security/libfcrypto \
 		libfwsi>=e:devel/libfwsi \
 		liblnk>=0:devel/liblnk \
 		libmsiecf>=a:devel/libmsiecf \
@@ -28,19 +30,18 @@ RUN_DEPENDS=	libcaes>=a:security/libcaes \
 		${PYTHON_PKGNAMEPREFIX}artifacts>=0:security/py-artifacts@${PY_FLAVOR} \
 		${PYTHON_PKGNAMEPREFIX}bencode.py>=0:converters/py-bencode.py@${PY_FLAVOR} \
 		${PYTHON_PKGNAMEPREFIX}certifi>=0:security/py-certifi@${PY_FLAVOR} \
-		${PYTHON_PKGNAMEPREFIX}python-dateutil>=0:devel/py-python-dateutil@${PY_FLAVOR} \
 		${PYTHON_PKGNAMEPREFIX}defusedxml>=0:devel/py-defusedxml@${PY_FLAVOR} \
 		${PYTHON_PKGNAMEPREFIX}dfdatetime>=0:security/py-dfdatetime@${PY_FLAVOR} \
 		${PYTHON_PKGNAMEPREFIX}dfvfs>=0:filesystems/py-dfvfs@${PY_FLAVOR} \
 		${PYTHON_PKGNAMEPREFIX}dfwinreg>=0:security/py-dfwinreg@${PY_FLAVOR} \
 		${PYTHON_PKGNAMEPREFIX}dtfabric>=0:devel/py-dtfabric@${PY_FLAVOR} \
 		${PYTHON_PKGNAMEPREFIX}Flor>=0:textproc/py-flor@${PY_FLAVOR} \
-		${PYTHON_PKGNAMEPREFIX}future>=0:devel/py-future@${PY_FLAVOR} \
 		${PYTHON_PKGNAMEPREFIX}lz4>=0:archivers/py-lz4@${PY_FLAVOR} \
 		${PYTHON_PKGNAMEPREFIX}opensearch-py>=0:textproc/py-opensearch-py@${PY_FLAVOR} \
 		${PYTHON_PKGNAMEPREFIX}pefile>=0:devel/py-pefile@${PY_FLAVOR} \
 		${PYTHON_PKGNAMEPREFIX}psutil>=0:sysutils/py-psutil@${PY_FLAVOR} \
 		${PYTHON_PKGNAMEPREFIX}pyparsing>=0:devel/py-pyparsing@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}python-dateutil>=0:devel/py-python-dateutil@${PY_FLAVOR} \
 		${PYTHON_PKGNAMEPREFIX}pytsk>=0:sysutils/py-pytsk@${PY_FLAVOR} \
 		${PYTHON_PKGNAMEPREFIX}pytz>=0:devel/py-pytz@${PY_FLAVOR} \
 		${PYTHON_PKGNAMEPREFIX}pyzmq>=0:net/py-pyzmq@${PY_FLAVOR} \
@@ -48,7 +49,6 @@ RUN_DEPENDS=	libcaes>=a:security/libcaes \
 		${PYTHON_PKGNAMEPREFIX}requests>=0:www/py-requests@${PY_FLAVOR} \
 		${PYTHON_PKGNAMEPREFIX}six>=0:devel/py-six@${PY_FLAVOR} \
 		${PYTHON_PKGNAMEPREFIX}sqlite3>=0:databases/py-sqlite3@${PY_FLAVOR} \
-		${PYTHON_PKGNAMEPREFIX}urllib3>=0:net/py-urllib3@${PY_FLAVOR} \
 		${PYTHON_PKGNAMEPREFIX}xattr>=0:devel/py-xattr@${PY_FLAVOR} \
 		${PYTHON_PKGNAMEPREFIX}XlsxWriter>=0:textproc/py-xlsxwriter@${PY_FLAVOR} \
 		${PYTHON_PKGNAMEPREFIX}pyyaml>=0:devel/py-pyyaml@${PY_FLAVOR} \
@@ -59,7 +59,7 @@ TEST_DEPENDS=	${PYTHON_PKGNAMEPREFIX}fakeredis>=0:databases/py-fakeredis@${PY_FL
 
 USES=		python
 USE_LOCALE=	en_US.UTF-8
-USE_PYTHON=	autoplist concurrent cryptography distutils
+USE_PYTHON=	autoplist concurrent cryptography pep517
 # Upstream archive contains files with UTF-8 names
 EXTRACT_CMD=	${SETENV} LANG=${USE_LOCALE} LC_ALL=${USE_LOCALE} ${TAR}
 DO_MAKE_TEST=	${SETENV} ${TEST_ENV} ${PYTHON_CMD}
@@ -67,13 +67,4 @@ TEST_TARGET=	run_tests.py
 
 NO_ARCH=	yes
 
-post-patch:
-	${REINPLACE_CMD} "s|'share', 'artifacts'|'share', '${PYTHON_PKGNAMEPREFIX}artifacts'|" \
-		${WRKSRC}/plaso/cli/helpers/artifact_definitions.py
-	${REINPLACE_CMD} "s|'share', 'plaso'|'share', '${PYTHON_PKGNAMEPREFIX}plaso'|" \
-		${WRKSRC}/plaso/cli/helpers/data_location.py
-	${REINPLACE_CMD} "s|share/plaso|${DATADIR_REL}|" \
-		${WRKSRC}/setup.py
-	${REINPLACE_CMD} "/cffi/d" ${WRKSRC}/requirements.txt
-
 .include <bsd.port.mk>
diff --git a/security/py-plaso/distinfo b/security/py-plaso/distinfo
index a2cd2b3a9e7c..89e97705d81c 100644
--- a/security/py-plaso/distinfo
+++ b/security/py-plaso/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1707838875
-SHA256 (plaso-20231224.tar.gz) = af106a449746830632affc578e2f80439ae7c4220f17e4a39630e8c9879ba8bf
-SIZE (plaso-20231224.tar.gz) = 195666335
+TIMESTAMP = 1739801390
+SHA256 (plaso-20240826.tar.gz) = 4ac3a65cf31b87e507edc4c4d628a693703a6f1b933553da2fbe402a2250ef30
+SIZE (plaso-20240826.tar.gz) = 196604839
diff --git a/security/py-plaso/files/patch-plaso_output_winevt__rc.py b/security/py-plaso/files/patch-plaso_output_winevt__rc.py
new file mode 100644
index 000000000000..8513d7181c47
--- /dev/null
+++ b/security/py-plaso/files/patch-plaso_output_winevt__rc.py
@@ -0,0 +1,47 @@
+--- plaso/output/winevt_rc.py.orig	2024-06-08 09:38:22 UTC
++++ plaso/output/winevt_rc.py
+@@ -16,7 +16,7 @@ class Sqlite3DatabaseFile(object):
+ 
+   _HAS_TABLE_QUERY = (
+       'SELECT name FROM sqlite_master '
+-      'WHERE type = "table" AND name = "{0:s}"')
++      'WHERE type = \'table\' AND name = \'{0:s}\'')
+ 
+   def __init__(self):
+     """Initializes the database file object."""
+@@ -166,7 +166,7 @@ class WinevtResourcesSqlite3DatabaseReader(object):
+     """
+     table_names = ['event_log_providers']
+     column_names = ['event_log_provider_key']
+-    condition = f'log_source == "{log_source:s}"'
++    condition = f'log_source == \'{log_source:s}\''
+ 
+     values_list = list(self._database_file.GetValues(
+         table_names, column_names, condition))
+@@ -202,7 +202,7 @@ class WinevtResourcesSqlite3DatabaseReader(object):
+       return None
+ 
+     column_names = ['message_string']
+-    condition = f'message_identifier == "0x{message_identifier:08x}"'
++    condition = f'message_identifier == \'0x{message_identifier:08x}\''
+ 
+     values = list(self._database_file.GetValues(
+         [table_name], column_names, condition))
+@@ -290,7 +290,7 @@ class WinevtResourcesSqlite3DatabaseReader(object):
+       return None
+ 
+     column_names = ['value']
+-    condition = f'name == "{attribute_name:s}"'
++    condition = f'name == \'{attribute_name:s}\''
+ 
+     values = list(self._database_file.GetValues(
+         [table_name], column_names, condition))
+@@ -485,7 +485,7 @@ class WinevtResourcesHelper(object):
+         'windows_wevt_template_event'):
+       # TODO: add message_file_identifiers to filter_expression
+       filter_expression = (
+-          f'provider_identifier == "{provider_identifier:s}" and '
++          f'provider_identifier == \'{provider_identifier:s}\' and '
+           f'identifier == {message_identifier:d}')
+       if event_version is not None:
+         filter_expression = (
diff --git a/security/py-plaso/files/patch-plaso_parsers_sqlite.py b/security/py-plaso/files/patch-plaso_parsers_sqlite.py
new file mode 100644
index 000000000000..617764ff23a8
--- /dev/null
+++ b/security/py-plaso/files/patch-plaso_parsers_sqlite.py
@@ -0,0 +1,13 @@
+--- plaso/parsers/sqlite.py.orig	2024-06-08 09:38:22 UTC
++++ plaso/parsers/sqlite.py
+@@ -118,8 +118,8 @@ class SQLiteDatabase(object):
+   SCHEMA_QUERY = (
+       'SELECT tbl_name, sql '
+       'FROM sqlite_master '
+-      'WHERE type = "table" AND tbl_name != "xp_proc" '
+-      'AND tbl_name != "sqlite_sequence"')
++      'WHERE type = \'table\' AND tbl_name != \'xp_proc\' '
++      'AND tbl_name != \'sqlite_sequence\'')
+ 
+   def __init__(self, filename, temporary_directory=None):
+     """Initializes a SQLite database.
diff --git a/security/py-plaso/files/patch-plaso_parsers_sqlite__plugins_imessage.py b/security/py-plaso/files/patch-plaso_parsers_sqlite__plugins_imessage.py
new file mode 100644
index 000000000000..7e11a5b021d3
--- /dev/null
+++ b/security/py-plaso/files/patch-plaso_parsers_sqlite__plugins_imessage.py
@@ -0,0 +1,11 @@
+--- plaso/parsers/sqlite_plugins/imessage.py.orig	2024-06-08 09:38:22 UTC
++++ plaso/parsers/sqlite_plugins/imessage.py
+@@ -81,7 +81,7 @@ class IMessagePlugin(interface.SQLitePlugin):
+ 
+   _CLIENT_VERSION_QUERY = (
+       'SELECT key, value FROM _SqliteDatabaseProperties '
+-      'WHERE key = "_ClientVersion"')
++      'WHERE key = \'_ClientVersion\'')
+ 
+   def _GetClientVersion(self, cache, database):
+     """Retrieves the client version.
diff --git a/security/py-plaso/files/patch-plaso_parsers_sqlite__plugins_windows__timeline.py b/security/py-plaso/files/patch-plaso_parsers_sqlite__plugins_windows__timeline.py
new file mode 100644
index 000000000000..19263bebcf9b
--- /dev/null
+++ b/security/py-plaso/files/patch-plaso_parsers_sqlite__plugins_windows__timeline.py
@@ -0,0 +1,16 @@
+--- plaso/parsers/sqlite_plugins/windows_timeline.py.orig	2024-06-08 09:38:22 UTC
++++ plaso/parsers/sqlite_plugins/windows_timeline.py
+@@ -89,10 +89,10 @@ class WindowsTimelinePlugin(interface.SQLitePlugin):
+   QUERIES = [
+       (('SELECT StartTime, Payload, PackageName FROM Activity '
+         'INNER JOIN Activity_PackageId ON Activity.Id = '
+-        'Activity_PackageId.ActivityId WHERE instr(Payload, "UserEngaged") > 0'
+-        ' AND Platform = "packageid"'), 'ParseUserEngagedRow'),
++        'Activity_PackageId.ActivityId WHERE instr(Payload, \'UserEngaged\') > 0'
++        ' AND Platform = \'packageid\''), 'ParseUserEngagedRow'),
+       (('SELECT StartTime, Payload, AppId FROM Activity '
+-        'WHERE instr(Payload, "UserEngaged") = 0'), 'ParseGenericRow')]
++        'WHERE instr(Payload, \'UserEngaged\') = 0'), 'ParseGenericRow')]
+ 
+   SCHEMAS = [{
+       'Activity': (
diff --git a/security/py-plaso/files/patch-tests_storage_sqlite_sqlite__file.py b/security/py-plaso/files/patch-tests_storage_sqlite_sqlite__file.py
new file mode 100644
index 000000000000..96cf800956fc
--- /dev/null
+++ b/security/py-plaso/files/patch-tests_storage_sqlite_sqlite__file.py
@@ -0,0 +1,18 @@
+--- tests/storage/sqlite/sqlite_file.py.orig	2024-06-08 09:38:23 UTC
++++ tests/storage/sqlite/sqlite_file.py
+@@ -136,13 +136,13 @@ class SQLiteStorageFileTest(test_lib.StorageTestCase):
+             event_data_stream.CONTAINER_TYPE, column_names=column_names))
+         self.assertEqual(len(containers), 1)
+ 
+-        filter_expression = 'md5_hash == "8f0bf95a7959baad9666b21a7feed79d"'
++        filter_expression = 'md5_hash == \'8f0bf95a7959baad9666b21a7feed79d\''
+         containers = list(test_store._GetAttributeContainersWithFilter(
+             event_data_stream.CONTAINER_TYPE, column_names=column_names,
+             filter_expression=filter_expression))
+         self.assertEqual(len(containers), 1)
+ 
+-        filter_expression = 'md5_hash != "8f0bf95a7959baad9666b21a7feed79d"'
++        filter_expression = 'md5_hash != \'8f0bf95a7959baad9666b21a7feed79d\''
+         containers = list(test_store._GetAttributeContainersWithFilter(
+             event_data_stream.CONTAINER_TYPE, column_names=column_names,
+             filter_expression=filter_expression))