From 91b4bf9eb3910747b8fba54d4e41f21597b00ec7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?D=C3=A1vid=20Benko?= Date: Thu, 5 Feb 2026 13:16:34 +0100 Subject: [PATCH 1/2] rename(ip_activity_classifier): rename from IP activity Renames IP activity secondary module to IP activity classifier to prevent misunderstandings and name conflicts, as there's also the IP activity primary module in the system. --- dp3_server/config/processing_core.yml | 2 +- .../{ip_activity.py => ip_activity_classifier.py} | 12 ++++++++---- 2 files changed, 9 insertions(+), 5 deletions(-) rename dp3_server/modules/{ip_activity.py => ip_activity_classifier.py} (81%) diff --git a/dp3_server/config/processing_core.yml b/dp3_server/config/processing_core.yml index 0fc5363..55d07fa 100644 --- a/dp3_server/config/processing_core.yml +++ b/dp3_server/config/processing_core.yml @@ -30,6 +30,6 @@ modules_dir: "../modules" # extension must be used! enabled_modules: - "dns_open_resolver" - - "ip_activity" + - "ip_activity_classifier" - "ip_filter" - "ip_to_dns_hostname" diff --git a/dp3_server/modules/ip_activity.py b/dp3_server/modules/ip_activity_classifier.py similarity index 81% rename from dp3_server/modules/ip_activity.py rename to dp3_server/modules/ip_activity_classifier.py index 4f3f11b..faedfa7 100644 --- a/dp3_server/modules/ip_activity.py +++ b/dp3_server/modules/ip_activity_classifier.py @@ -7,12 +7,16 @@ from dp3.common.task import DataPointTask -class IPactivity(BaseModule): - def __init__(self, platform_config: PlatformConfig, _, registrar: CallbackRegistrar): +class IPActivityClassifier(BaseModule): + def __init__( + self, platform_config: PlatformConfig, _, registrar: CallbackRegistrar + ): super().__init__(platform_config, {}, registrar) registrar.register_on_new_attr_hook(self.processing_function, "ip", "activity") - def processing_function(self, eid: str, dp: DataPointTimeseriesBase) -> List[DataPointTask]: + def processing_function( + self, eid: str, dp: DataPointTimeseriesBase + ) -> List[DataPointTask]: avg_bytes_per_time_step = sum(dp.v.bytes) / len(dp.v.bytes) act_class = self.ip_act(avg_bytes_per_time_step) @@ -27,7 +31,7 @@ def processing_function(self, eid: str, dp: DataPointTimeseriesBase) -> List[Dat "etype": "ip", "eid": eid, "attr": "activity_class", - "src": "secondary/ip_activity", + "src": "secondary/ip_activity_classifier", "v": act_class, } ], From 0e88cdfd63bed558a209921ff7576f60129898ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?D=C3=A1vid=20Benko?= Date: Thu, 5 Feb 2026 13:18:36 +0100 Subject: [PATCH 2/2] fix(ip_activity_classifier): use bidirectional flows IP activity classifier has not been migrated to the new data model of the ip/activity attribute introduced in 51c59a75a816cceacb57801e48cdad8aabf304e3. --- dp3_server/modules/ip_activity_classifier.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dp3_server/modules/ip_activity_classifier.py b/dp3_server/modules/ip_activity_classifier.py index faedfa7..6f0bb55 100644 --- a/dp3_server/modules/ip_activity_classifier.py +++ b/dp3_server/modules/ip_activity_classifier.py @@ -17,7 +17,7 @@ def __init__( def processing_function( self, eid: str, dp: DataPointTimeseriesBase ) -> List[DataPointTask]: - avg_bytes_per_time_step = sum(dp.v.bytes) / len(dp.v.bytes) + avg_bytes_per_time_step = sum(dp.v.out_bytes) / len(dp.v.out_bytes) act_class = self.ip_act(avg_bytes_per_time_step)