core.objectchange:2308
| Time |
2026-05-31 20:37:00
|
|---|---|
| User |
York-Simon Johannsen (YoSiJo)
|
| Action |
Updated
|
| Object type |
Extras | webhook
|
| Object | |
| Message |
—
|
| Request ID |
{
"body_template": "{%- set ns = namespace(has_failures=false, body=\"\") -%}\r\n\r\n{# Titel und Einleitung #}\r\n{%- set report_name = data.name | default(\"PlatformReport\") -%}\r\n{%- set ns.body = \"# ❌ NetBox Report: Fehlgeschlagene Checks in \" ~ report_name ~ \"[BR]## Der Report \" ~ report_name ~ \" wurde von \" ~ (username | default('YoSiJo')) ~ \" ausgefuehrt.[BR]### Log:\" -%}\r\n\r\n{# 1. NetBox v4 Report-Tests durchlaufen #}\r\n{%- if data is defined and data.tests is defined -%}\r\n {%- for test_name, test_results in data.tests.items() -%}\r\n {%- if test_results.failure and test_results.log -%}\r\n \r\n {# 1a. Einzigartige Fehlermeldungen fuer diesen Test sammeln #}\r\n {%- set unique_messages = [] -%}\r\n {%- for log_entry in test_results.log -%}\r\n {# Pruefung sowohl fuer Dict-Format als auch Tuple-Format #}\r\n {%- set current_status = log_entry.status if log_entry.status is defined else log_entry.1 -%}\r\n {%- set current_msg = log_entry.message if log_entry.message is defined else log_entry.4 -%}\r\n \r\n {%- if current_status == 'failure' or current_status == 'failed' -%}\r\n {%- if current_msg not in unique_messages -%}\r\n {%- set unique_messages = unique_messages + [current_msg] -%}\r\n {%- set ns.has_failures = true -%}\r\n {%- endif -%}\r\n {%- endif -%}\r\n {%- endfor -%}\r\n\r\n {# 1b. Wenn Fehler existieren, strukturiert ausgeben #}\r\n {%- if unique_messages | length > 0 -%}\r\n {%- set ns.body = ns.body ~ \"[BR][BR]#### \" ~ test_name -%}\r\n \r\n {# Fuer jede einzigartige Meldung eine eigene Gruppe erstellen #}\r\n {%- for group_msg in unique_messages -%}\r\n {%- set ns.body = ns.body ~ \"[BR][BR]##### \" ~ group_msg -%}\r\n \r\n {# Alle Objekte heraussuchen, die genau diese Meldung haben #}\r\n {%- for log_entry in test_results.log -%}\r\n {%- set current_status = log_entry.status if log_entry.status is defined else log_entry.1 -%}\r\n {%- set current_msg = log_entry.message if log_entry.message is defined else log_entry.4 -%}\r\n {%- set obj_name = log_entry.name if log_entry.name is defined else log_entry.obj if log_entry.obj is defined else log_entry.2 -%}\r\n {%- set obj_url = log_entry.url if log_entry.url is defined else log_entry.3 -%}\r\n \r\n {%- if (current_status == 'failure' or current_status == 'failed') and current_msg == group_msg -%}\r\n {%- set clean_path = obj_url if obj_url.startswith('/') else '/' ~ obj_url -%}\r\n {%- set target_url = \"https://anoxinon.de\" ~ clean_path -%}\r\n {%- set ns.body = ns.body ~ \"[BR]- Name: \" ~ obj_name ~ \"[BR] URL: \" ~ target_url -%}\r\n {%- endif -%}\r\n {%- endfor -%}\r\n \r\n {%- endfor -%}\r\n {%- endif -%}\r\n\r\n {%- endif -%}\r\n {%- endfor -%}\r\n{%- endif -%}\r\n\r\n{# 2. Fallback für klassische Script-Logs #}\r\n{%- if data is defined and data.result is defined and data.result.log is defined -%}\r\n {%- set unique_script_messages = [] -%}\r\n {%- for log in data.result.log -%}\r\n {%- if log.status == 'failure' or log.status == 'failed' -%}\r\n {%- if log.message not in unique_script_messages -%}\r\n {%- set unique_script_messages = unique_script_messages + [log.message] -%}\r\n {%- set ns.has_failures = true -%}\r\n {%- endif -%}\r\n {%- endif -%}\r\n {%- endfor -%}\r\n\r\n {%- if unique_script_messages | length > 0 -%}\r\n {%- set ns.body = ns.body ~ \"[BR][BR]#### Allgemeines Script Log\" -%}\r\n {%- for current_msg in unique_script_messages -%}\r\n {%- set ns.body = ns.body ~ \"[BR][BR]##### \" ~ current_msg -%}\r\n {%- for log in data.result.log -%}\r\n {%- if (log.status == 'failure' or log.status == 'failed') and log.message == current_msg -%}\r\n {%- set clean_path = log.obj.get_absolute_url() if log.obj else '' -%}\r\n {%- set target_url = \"https://anoxinon.de\" ~ clean_path if clean_path else \"https://anoxinon.de\" -%}\r\n {%- set ns.body = ns.body ~ \"[BR]- Name: \" ~ (log.obj.name | default('Allgemein')) ~ \"[BR] URL: \" ~ target_url -%}\r\n {%- endif -%}\r\n {%- endfor -%}\r\n {%- endfor -%}\r\n {%- endif -%}\r\n{%- endif -%}\r\n\r\n{\r\n \"urls\": \"{%- if ns.has_failures -%}xmpps://netbox:{{ '' | xmpp_apprise_password }}@anoxinon.me/yosijo{%- endif -%}\",\r\n \"title\": \"❌ NetBox Report: Fehlgeschlagene Checks in {{ report_name }}\",\r\n \"body\": \"{{ ns.body.replace('[BR]', '\\\\n') }}\"\r\n}"
}
{
"body_template": "{%- set ns = namespace(has_failures=false, body=\"\") -%}\r\n\r\n{# Titel und Einleitung #}\r\n{%- set report_name = data.name | default(\"PlatformReport\") -%}\r\n{%- set ns.body = \"# ❌ NetBox Report: Fehlgeschlagene Checks in \" ~ report_name ~ \"[BR]## Der Report \" ~ report_name ~ \" wurde von \" ~ (username | default('YoSiJo')) ~ \" ausgefuehrt.[BR]### Log:\" -%}\r\n\r\n{# 1. NetBox v4 Report-Tests durchlaufen #}\r\n{%- if data is defined and data.tests is defined -%}\r\n {%- for test_name, test_results in data.tests.items() -%}\r\n {%- if test_results.failure and test_results.log -%}\r\n \r\n {# 1a. Einzigartige Fehlermeldungen sammeln #}\r\n {%- set unique_messages = [] -%}\r\n {%- for log_entry in test_results.log -%}\r\n \r\n {# Werte sichern, egal ob Dict oder Liste/Tuple #}\r\n {%- set item_status = \"\" -%}\r\n {%- set item_msg = \"\" -%}\r\n \r\n {%- if log_entry is mapping -%}\r\n {%- set item_status = log_entry.status | default(\"\") -%}\r\n {%- set item_msg = log_entry.message | default(\"\") -%}\r\n {%- else -%}\r\n {# Wenn es eine Liste/Tuple ist, loopen wir durch die 5 Elemente #}\r\n {%- for val in log_entry -%}\r\n {%- if loop.index == 2 %}{% set item_status = val %}{% endif -%}\r\n {%- if loop.index == 5 %}{% set item_msg = val %}{% endif -%}\r\n {%- endfor -%}\r\n {%- endif -%}\r\n \r\n {%- if item_status == 'failure' or item_status == 'failed' -%}\r\n {%- if item_msg not in unique_messages -%}\r\n {%- set unique_messages = unique_messages + [item_msg] -%}\r\n {%- set ns.has_failures = true -%}\r\n {%- endif -%}\r\n {%- endif -%}\r\n {%- endfor -%}\r\n\r\n {# 1b. Wenn Fehler existieren, strukturiert ausgeben #}\r\n {%- if unique_messages | length > 0 -%}\r\n {%- set ns.body = ns.body ~ \"[BR][BR]#### \" ~ test_name -%}\r\n \r\n {# Fuer jede einzigartige Meldung eine eigene Gruppe erstellen #}\r\n {%- for group_msg in unique_messages -%}\r\n {%- set ns.body = ns.body ~ \"[BR][BR]##### \" ~ group_msg -%}\r\n \r\n {# Alle Objekte heraussuchen, die genau diese Meldung haben #}\r\n {%- for log_entry in test_results.log -%}\r\n \r\n {%- set item_status = \"\" -%}\r\n {%- set item_msg = \"\" -%}\r\n {%- set item_name = \"\" -%}\r\n {%- set item_url = \"\" -%}\r\n \r\n {%- if log_entry is mapping -%}\r\n {%- set item_status = log_entry.status | default(\"\") -%}\r\n {%- set item_msg = log_entry.message | default(\"\") -%}\r\n {%- set item_name = log_entry.name | default(log_entry.obj | default(\"Unbekannt\")) -%}\r\n {%- set item_url = log_entry.url | default(\"\") -%}\r\n {%- else -%}\r\n {%- for val in log_entry -%}\r\n {%- if loop.index == 2 %}{% set item_status = val %}{% endif -%}\r\n {%- if loop.index == 3 %}{% set item_name = val %}{% endif -%}\r\n {%- if loop.index == 4 %}{% set item_url = val %}{% endif -%}\r\n {%- if loop.index == 5 %}{% set item_msg = val %}{% endif -%}\r\n {%- endfor -%}\r\n {%- endif -%}\r\n \r\n {%- if (item_status == 'failure' or item_status == 'failed') and item_msg == group_msg -%}\r\n {%- set clean_path = item_url if item_url.startswith('/') else '/' ~ item_url -%}\r\n {%- set target_url = \"https://anoxinon.de\" ~ clean_path -%}\r\n {%- set ns.body = ns.body ~ \"[BR]- Name: \" ~ item_name ~ \"[BR] URL: \" ~ target_url -%}\r\n {%- endif -%}\r\n {%- endfor -%}\r\n \r\n {%- endfor -%}\r\n {%- endif -%}\r\n\r\n {%- endif -%}\r\n {%- endfor -%}\r\n{%- endif -%}\r\n\r\n{# 2. Fallback für klassische Script-Logs #}\r\n{%- if data is defined and data.result is defined and data.result.log is defined -%}\r\n {%- set unique_script_messages = [] -%}\r\n {%- for log in data.result.log -%}\r\n {%- if log.status == 'failure' or log.status == 'failed' -%}\r\n {%- if log.message not in unique_script_messages -%}\r\n {%- set unique_script_messages = unique_script_messages + [log.message] -%}\r\n {%- set ns.has_failures = true -%}\r\n {%- endif -%}\r\n {%- endif -%}\r\n {%- endfor -%}\r\n\r\n {%- if unique_script_messages | length > 0 -%}\r\n {%- set ns.body = ns.body ~ \"[BR][BR]#### Allgemeines Script Log\" -%}\r\n {%- for current_msg in unique_script_messages -%}\r\n {%- set ns.body = ns.body ~ \"[BR][BR]##### \" ~ current_msg -%}\r\n {%- for log in data.result.log -%}\r\n {%- if (log.status == 'failure' or log.status == 'failed') and log.message == current_msg -%}\r\n {%- set clean_path = log.obj.get_absolute_url() if log.obj else '' -%}\r\n {%- set target_url = \"https://anoxinon.de\" ~ clean_path if clean_path else \"https://anoxinon.de\" -%}\r\n {%- set ns.body = ns.body ~ \"[BR]- Name: \" ~ (log.obj.name | default('Allgemein')) ~ \"[BR] URL: \" ~ target_url -%}\r\n {%- endif -%}\r\n {%- endfor -%}\r\n {%- endfor -%}\r\n {%- endif -%}\r\n{%- endif -%}\r\n\r\n{\r\n \"urls\": \"{%- if ns.has_failures -%}xmpps://netbox:{{ '' | xmpp_apprise_password }}@anoxinon.me/yosijo{%- endif -%}\",\r\n \"title\": \"❌ NetBox Report: Fehlgeschlagene Checks in {{ report_name }}\",\r\n \"body\": \"{{ ns.body.replace('[BR]', '\\\\n') }}\"\r\n}"
}
name: "XMPP YoSiJo - Reports"tags: []owner: 1secret: ""description: "xmpps://netbox@anoxinon.me/yosijo"http_method: "POST"payload_url: "https://apprise-api.stage.anoxinon.de/notify/"ca_file_path: nullbody_template: "{%- set ns = namespace(has_failures=false, body=\"\") -%}\r\n\r\n{# Titel und Einleitung #}\r\n{%- set report_name = data.name | default(\"PlatformReport\") -%}\r\n{%- set ns.body = \"# ❌ NetBox Report: Fehlgeschlagene Checks in \" ~ report_name ~ \"[BR]## Der Report \" ~ report_name ~ \" wurde von \" ~ (username | default('YoSiJo')) ~ \" ausgefuehrt.[BR]### Log:\" -%}\r\n\r\n{# 1. NetBox v4 Report-Tests durchlaufen #}\r\n{%- if data is defined and data.tests is defined -%}\r\n {%- for test_name, test_results in data.tests.items() -%}\r\n {%- if test_results.failure and test_results.log -%}\r\n \r\n {# 1a. Einzigartige Fehlermeldungen fuer diesen Test sammeln #}\r\n {%- set unique_messages = [] -%}\r\n {%- for log_entry in test_results.log -%}\r\n {# Pruefung sowohl fuer Dict-Format als auch Tuple-Format #}\r\n {%- set current_status = log_entry.status if log_entry.status is defined else log_entry.1 -%}\r\n {%- set current_msg = log_entry.message if log_entry.message is defined else log_entry.4 -%}\r\n \r\n {%- if current_status == 'failure' or current_status == 'failed' -%}\r\n {%- if current_msg not in unique_messages -%}\r\n {%- set unique_messages = unique_messages + [current_msg] -%}\r\n {%- set ns.has_failures = true -%}\r\n {%- endif -%}\r\n {%- endif -%}\r\n {%- endfor -%}\r\n\r\n {# 1b. Wenn Fehler existieren, strukturiert ausgeben #}\r\n {%- if unique_messages | length > 0 -%}\r\n {%- set ns.body = ns.body ~ \"[BR][BR]#### \" ~ test_name -%}\r\n \r\n {# Fuer jede einzigartige Meldung eine eigene Gruppe erstellen #}\r\n {%- for group_msg in unique_messages -%}\r\n {%- set ns.body = ns.body ~ \"[BR][BR]##### \" ~ group_msg -%}\r\n \r\n {# Alle Objekte heraussuchen, die genau diese Meldung haben #}\r\n {%- for log_entry in test_results.log -%}\r\n {%- set current_status = log_entry.status if log_entry.status is defined else log_entry.1 -%}\r\n {%- set current_msg = log_entry.message if log_entry.message is defined else log_entry.4 -%}\r\n {%- set obj_name = log_entry.name if log_entry.name is defined else log_entry.obj if log_entry.obj is defined else log_entry.2 -%}\r\n {%- set obj_url = log_entry.url if log_entry.url is defined else log_entry.3 -%}\r\n \r\n {%- if (current_status == 'failure' or current_status == 'failed') and current_msg == group_msg -%}\r\n {%- set clean_path = obj_url if obj_url.startswith('/') else '/' ~ obj_url -%}\r\n {%- set target_url = \"https://anoxinon.de\" ~ clean_path -%}\r\n {%- set ns.body = ns.body ~ \"[BR]- Name: \" ~ obj_name ~ \"[BR] URL: \" ~ target_url -%}\r\n {%- endif -%}\r\n {%- endfor -%}\r\n \r\n {%- endfor -%}\r\n {%- endif -%}\r\n\r\n {%- endif -%}\r\n {%- endfor -%}\r\n{%- endif -%}\r\n\r\n{# 2. Fallback für klassische Script-Logs #}\r\n{%- if data is defined and data.result is defined and data.result.log is defined -%}\r\n {%- set unique_script_messages = [] -%}\r\n {%- for log in data.result.log -%}\r\n {%- if log.status == 'failure' or log.status == 'failed' -%}\r\n {%- if log.message not in unique_script_messages -%}\r\n {%- set unique_script_messages = unique_script_messages + [log.message] -%}\r\n {%- set ns.has_failures = true -%}\r\n {%- endif -%}\r\n {%- endif -%}\r\n {%- endfor -%}\r\n\r\n {%- if unique_script_messages | length > 0 -%}\r\n {%- set ns.body = ns.body ~ \"[BR][BR]#### Allgemeines Script Log\" -%}\r\n {%- for current_msg in unique_script_messages -%}\r\n {%- set ns.body = ns.body ~ \"[BR][BR]##### \" ~ current_msg -%}\r\n {%- for log in data.result.log -%}\r\n {%- if (log.status == 'failure' or log.status == 'failed') and log.message == current_msg -%}\r\n {%- set clean_path = log.obj.get_absolute_url() if log.obj else '' -%}\r\n {%- set target_url = \"https://anoxinon.de\" ~ clean_path if clean_path else \"https://anoxinon.de\" -%}\r\n {%- set ns.body = ns.body ~ \"[BR]- Name: \" ~ (log.obj.name | default('Allgemein')) ~ \"[BR] URL: \" ~ target_url -%}\r\n {%- endif -%}\r\n {%- endfor -%}\r\n {%- endfor -%}\r\n {%- endif -%}\r\n{%- endif -%}\r\n\r\n{\r\n \"urls\": \"{%- if ns.has_failures -%}xmpps://netbox:{{ '' | xmpp_apprise_password }}@anoxinon.me/yosijo{%- endif -%}\",\r\n \"title\": \"❌ NetBox Report: Fehlgeschlagene Checks in {{ report_name }}\",\r\n \"body\": \"{{ ns.body.replace('[BR]', '\\\\n') }}\"\r\n}"custom_fields: {}ssl_verification: truehttp_content_type: "application/json"additional_headers: ""
name: "XMPP YoSiJo - Reports"tags: []owner: 1secret: ""description: "xmpps://netbox@anoxinon.me/yosijo"http_method: "POST"payload_url: "https://apprise-api.stage.anoxinon.de/notify/"ca_file_path: nullbody_template: "{%- set ns = namespace(has_failures=false, body=\"\") -%}\r\n\r\n{# Titel und Einleitung #}\r\n{%- set report_name = data.name | default(\"PlatformReport\") -%}\r\n{%- set ns.body = \"# ❌ NetBox Report: Fehlgeschlagene Checks in \" ~ report_name ~ \"[BR]## Der Report \" ~ report_name ~ \" wurde von \" ~ (username | default('YoSiJo')) ~ \" ausgefuehrt.[BR]### Log:\" -%}\r\n\r\n{# 1. NetBox v4 Report-Tests durchlaufen #}\r\n{%- if data is defined and data.tests is defined -%}\r\n {%- for test_name, test_results in data.tests.items() -%}\r\n {%- if test_results.failure and test_results.log -%}\r\n \r\n {# 1a. Einzigartige Fehlermeldungen sammeln #}\r\n {%- set unique_messages = [] -%}\r\n {%- for log_entry in test_results.log -%}\r\n \r\n {# Werte sichern, egal ob Dict oder Liste/Tuple #}\r\n {%- set item_status = \"\" -%}\r\n {%- set item_msg = \"\" -%}\r\n \r\n {%- if log_entry is mapping -%}\r\n {%- set item_status = log_entry.status | default(\"\") -%}\r\n {%- set item_msg = log_entry.message | default(\"\") -%}\r\n {%- else -%}\r\n {# Wenn es eine Liste/Tuple ist, loopen wir durch die 5 Elemente #}\r\n {%- for val in log_entry -%}\r\n {%- if loop.index == 2 %}{% set item_status = val %}{% endif -%}\r\n {%- if loop.index == 5 %}{% set item_msg = val %}{% endif -%}\r\n {%- endfor -%}\r\n {%- endif -%}\r\n \r\n {%- if item_status == 'failure' or item_status == 'failed' -%}\r\n {%- if item_msg not in unique_messages -%}\r\n {%- set unique_messages = unique_messages + [item_msg] -%}\r\n {%- set ns.has_failures = true -%}\r\n {%- endif -%}\r\n {%- endif -%}\r\n {%- endfor -%}\r\n\r\n {# 1b. Wenn Fehler existieren, strukturiert ausgeben #}\r\n {%- if unique_messages | length > 0 -%}\r\n {%- set ns.body = ns.body ~ \"[BR][BR]#### \" ~ test_name -%}\r\n \r\n {# Fuer jede einzigartige Meldung eine eigene Gruppe erstellen #}\r\n {%- for group_msg in unique_messages -%}\r\n {%- set ns.body = ns.body ~ \"[BR][BR]##### \" ~ group_msg -%}\r\n \r\n {# Alle Objekte heraussuchen, die genau diese Meldung haben #}\r\n {%- for log_entry in test_results.log -%}\r\n \r\n {%- set item_status = \"\" -%}\r\n {%- set item_msg = \"\" -%}\r\n {%- set item_name = \"\" -%}\r\n {%- set item_url = \"\" -%}\r\n \r\n {%- if log_entry is mapping -%}\r\n {%- set item_status = log_entry.status | default(\"\") -%}\r\n {%- set item_msg = log_entry.message | default(\"\") -%}\r\n {%- set item_name = log_entry.name | default(log_entry.obj | default(\"Unbekannt\")) -%}\r\n {%- set item_url = log_entry.url | default(\"\") -%}\r\n {%- else -%}\r\n {%- for val in log_entry -%}\r\n {%- if loop.index == 2 %}{% set item_status = val %}{% endif -%}\r\n {%- if loop.index == 3 %}{% set item_name = val %}{% endif -%}\r\n {%- if loop.index == 4 %}{% set item_url = val %}{% endif -%}\r\n {%- if loop.index == 5 %}{% set item_msg = val %}{% endif -%}\r\n {%- endfor -%}\r\n {%- endif -%}\r\n \r\n {%- if (item_status == 'failure' or item_status == 'failed') and item_msg == group_msg -%}\r\n {%- set clean_path = item_url if item_url.startswith('/') else '/' ~ item_url -%}\r\n {%- set target_url = \"https://anoxinon.de\" ~ clean_path -%}\r\n {%- set ns.body = ns.body ~ \"[BR]- Name: \" ~ item_name ~ \"[BR] URL: \" ~ target_url -%}\r\n {%- endif -%}\r\n {%- endfor -%}\r\n \r\n {%- endfor -%}\r\n {%- endif -%}\r\n\r\n {%- endif -%}\r\n {%- endfor -%}\r\n{%- endif -%}\r\n\r\n{# 2. Fallback für klassische Script-Logs #}\r\n{%- if data is defined and data.result is defined and data.result.log is defined -%}\r\n {%- set unique_script_messages = [] -%}\r\n {%- for log in data.result.log -%}\r\n {%- if log.status == 'failure' or log.status == 'failed' -%}\r\n {%- if log.message not in unique_script_messages -%}\r\n {%- set unique_script_messages = unique_script_messages + [log.message] -%}\r\n {%- set ns.has_failures = true -%}\r\n {%- endif -%}\r\n {%- endif -%}\r\n {%- endfor -%}\r\n\r\n {%- if unique_script_messages | length > 0 -%}\r\n {%- set ns.body = ns.body ~ \"[BR][BR]#### Allgemeines Script Log\" -%}\r\n {%- for current_msg in unique_script_messages -%}\r\n {%- set ns.body = ns.body ~ \"[BR][BR]##### \" ~ current_msg -%}\r\n {%- for log in data.result.log -%}\r\n {%- if (log.status == 'failure' or log.status == 'failed') and log.message == current_msg -%}\r\n {%- set clean_path = log.obj.get_absolute_url() if log.obj else '' -%}\r\n {%- set target_url = \"https://anoxinon.de\" ~ clean_path if clean_path else \"https://anoxinon.de\" -%}\r\n {%- set ns.body = ns.body ~ \"[BR]- Name: \" ~ (log.obj.name | default('Allgemein')) ~ \"[BR] URL: \" ~ target_url -%}\r\n {%- endif -%}\r\n {%- endfor -%}\r\n {%- endfor -%}\r\n {%- endif -%}\r\n{%- endif -%}\r\n\r\n{\r\n \"urls\": \"{%- if ns.has_failures -%}xmpps://netbox:{{ '' | xmpp_apprise_password }}@anoxinon.me/yosijo{%- endif -%}\",\r\n \"title\": \"❌ NetBox Report: Fehlgeschlagene Checks in {{ report_name }}\",\r\n \"body\": \"{{ ns.body.replace('[BR]', '\\\\n') }}\"\r\n}"custom_fields: {}ssl_verification: truehttp_content_type: "application/json"additional_headers: ""