Skip to content

Commit

Permalink
catch the schema mismatch error and produce an error raw file (#3995)
Browse files Browse the repository at this point in the history
Co-authored-by: stephanie0x00 <[email protected]>
Co-authored-by: Ammar <[email protected]>
Co-authored-by: Jeroen Dekkers <[email protected]>
  • Loading branch information
4 people authored Jan 21, 2025
1 parent c5c40fe commit eff05d9
Showing 1 changed file with 25 additions and 6 deletions.
31 changes: 25 additions & 6 deletions boefjes/boefjes/job_handler.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import json
import os
import traceback
from collections.abc import Callable
Expand Down Expand Up @@ -131,22 +132,40 @@ def handle(self, boefje_meta: BoefjeMeta) -> None:

boefje_meta.arguments["input"] = ooi.serialize()

boefje_results: list[tuple[set, bytes | str]] = []
boefje_meta.runnable_hash = plugin.runnable_hash
boefje_meta.environment = get_environment_settings(boefje_meta, plugin.boefje_schema)

logger.info("Starting boefje %s[%s]", boefje_meta.boefje.id, str(boefje_meta.id))
try:
logger.info("Getting environment settings for boefje %s[%s]", boefje_meta.boefje.id, str(boefje_meta.id))
boefje_meta.environment = get_environment_settings(boefje_meta, plugin.boefje_schema)

boefje_meta.started_at = datetime.now(timezone.utc)
logger.info("Starting boefje %s[%s]", boefje_meta.boefje.id, str(boefje_meta.id))
boefje_meta.started_at = datetime.now(timezone.utc)
boefje_results = self.job_runner.run(boefje_meta, boefje_meta.environment)

boefje_results: list[tuple[set, bytes | str]] = []
except SettingsNotConformingToSchema:
logger.exception(
"Error running boefje due to settings/schema mismatch %s[%s]",
boefje_meta.boefje.id,
str(boefje_meta.id),
)
boefje_results = [
(
{"error/boefje"},
f"Error running boefje ({boefje_meta.id}) due to settings/schema mismatch: {0}".format(
json.dumps(plugin.boefje_schema)
),
)
]

raise

try:
boefje_results = self.job_runner.run(boefje_meta, boefje_meta.environment)
except:
logger.exception("Error running boefje %s[%s]", boefje_meta.boefje.id, str(boefje_meta.id))
boefje_results = [({"error/boefje"}, traceback.format_exc())]

raise

finally:
boefje_meta.ended_at = datetime.now(timezone.utc)
logger.info("Saving to Bytes for boefje %s[%s]", boefje_meta.boefje.id, str(boefje_meta.id))
Expand Down

0 comments on commit eff05d9

Please sign in to comment.