core.objectchange:2317
| Time |
2026-05-31 21:02:15
|
|---|---|
| User |
York-Simon Johannsen (YoSiJo)
|
| Action |
Updated
|
| Object type |
Extras | webhook
|
| Object | |
| Message |
—
|
| Request ID |
{
"body_template": "{%- set ns = namespace(has_failures=false, has_warnings=false, error_lines=[], warning_lines=[]) -%}\r\n\r\n{# 1. Suche in NetBox v4 Report-Tests #}\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 -%}\r\n {%- set ns.has_failures = true -%}\r\n {%- set msg = \"- [Test-Fehler] \" ~ test_name ~ \": \" ~ test_results.failure -%}\r\n {%- set ns.error_lines = ns.error_lines + [msg] -%}\r\n {%- elif test_results.warning -%}\r\n {%- set ns.has_warnings = true -%}\r\n {%- set msg = \"- [Test-Warnung] \" ~ test_name ~ \": \" ~ test_results.warning -%}\r\n {%- set ns.warning_lines = ns.warning_lines + [msg] -%}\r\n {%- endif -%}\r\n {%- endfor -%}\r\n{%- endif -%}\r\n\r\n{# 2. Fallback fuer klassische Script-Logs #}\r\n{%- if data is defined and data.result is defined and data.result.log is defined -%}\r\n {%- for log in data.result.log -%}\r\n {%- set status = log.status | lower -%}\r\n {%- set type = log.obj_type if log.obj_type else 'Allgemein' -%}\r\n \r\n {%- if status == 'failure' or status == 'failed' -%}\r\n {%- set ns.has_failures = true -%}\r\n {%- set msg = \"- [\" ~ type ~ \"] \" ~ log.message -%}\r\n {%- set ns.error_lines = ns.error_lines + [msg] -%}\r\n {%- elif status == 'warning' or status == 'warn' -%}\r\n {%- set ns.has_warnings = true -%}\r\n {%- set msg = \"- [\" ~ type ~ \"] \" ~ log.message -%}\r\n {%- set ns.warning_lines = ns.warning_lines + [msg] -%}\r\n {%- endif -%}\r\n {%- endfor -%}\r\n{%- endif -%} \r\n\r\n{# 3. Gesamte result.url nehmen und /api/ entfernen #}\r\n{%- set report_url = \"https://anoxinon.de\" -%}\r\n{%- if data is defined and data.result is defined and data.result.url is defined -%}\r\n {%- set report_url = data.result.url | replace(\"/api/core/\", \"/core/\") -%}\r\n{%- endif -%}\r\n\r\n{%- set report_name = data.name | default(\"PlatformReport\") -%}\r\n\r\n{# 4. Dynamisches Emoji und Titel bestimmen #}\r\n{%- set status_emoji = \"⚠️\" -%}\r\n{%- if ns.has_failures -%}\r\n {%- set status_emoji = \"❌\" -%}\r\n{%- endif -%}\r\n\r\n{# 5. Body Text zusammenbauen #}\r\n{%- set body_parts = [\"Der Report \" ~ report_name ~ \" wurde von \" ~ (username | default('YoSiJo')) ~ \" ausgefuehrt.[BR]\"] -%}\r\n\r\n{%- if ns.has_failures -%}\r\n {%- set body_parts = body_parts + [\"[BR]Folgende Checks sind fehlgeschlagen:[BR]\" ~ ns.error_lines | join(\"[BR]\")] -%}\r\n{%- endif -%}\r\n\r\n{%- if ns.has_warnings -%}\r\n {%- set body_parts = body_parts + [\"[BR]Folgende Warnungen wurden gemeldet:[BR]\" ~ ns.warning_lines | join(\"[BR]\")] -%}\r\n{%- endif -%}\r\n\r\n{%- set body_parts = body_parts + [\"[BR]Direktlink zum Report:[BR]\" ~ report_url] -%}\r\n{%- set body_raw = body_parts | join(\"[BR]\") -%}\r\n\r\n{\r\n \"urls\": \"{%- if ns.has_failures or ns.has_warnings -%}xmpps://netbox:{{ '' | xmpp_apprise_password }}@anoxinon.me/yosijo{%- endif -%}\",\r\n \"title\": \"{{ status_emoji }} NetBox Report: Status-Meldung für {{ report_name }}\",\r\n \"body\": \"{{ body_raw.replace('[BR]', '\\\\n') }}\\n\\n```json\\n{{data}}\\n```\"\r\n}"
}
{
"body_template": "{%- set ns = namespace(has_failures=false, has_warnings=false, body=\"\") -%}\r\n\r\n{# Titel und Einleitung vorbereiten #}\r\n{%- set report_name = data.name | default(\"PlatformReport\") -%}\r\n{%- set ns.body = \"## Der Report \" ~ report_name ~ \" wurde von \" ~ (username | default('YoSiJo')) ~ \" ausgefuehrt.[BR][BR]### Log:[BR]\" -%}\r\n\r\n{# 1. Suche in NetBox v4 Report-Tests #}\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.log -%}\r\n \r\n {# Prüfen, ob in diesem Test Fehler oder Warnungen existieren #}\r\n {%- set test_has_issues = namespace(valid=false) -%}\r\n {%- for log_entry in test_results.log -%}\r\n {%- if log_entry[1] in ['failure', 'failed', 'warning'] -%}\r\n {%- set test_has_issues.valid = true -%}\r\n {%- if log_entry[1] in ['failure', 'failed'] -%}{% set ns.has_failures = true %}{%- else -%}{% set ns.has_warnings = true %}{%- endif -%}\r\n {%- endif -%}\r\n {%- endfor -%}\r\n\r\n {%- if test_has_issues.valid -%}\r\n {%- set ns.body = ns.body ~ \"[BR]#### \" ~ test_name ~ \"[BR][BR]\"-%}\r\n {%- for log_entry in test_results.log -%}\r\n {%- if log_entry[1] in ['failure', 'failed', 'warning'] -%}\r\n {%- set prefix = \"❌ Fehler\" if log_entry[1] in ['failure', 'failed'] else \"⚠️ Warnung\" -%}\r\n {%- set clean_path = log_entry[3] if log_entry[3].startswith('/') else '/' ~ log_entry[3] -%}\r\n {%- set target_url = \"https://netbox.anoxinon.de\" ~ clean_path -%}\r\n {%- set ns.body = ns.body ~ \"- \" ~ prefix ~ \" - Name: \" ~ log_entry[2] ~ \"[BR] Meldung: \" ~ log_entry[4] ~ \"[BR] URL: \" ~ target_url ~ \"[BR]\" -%}\r\n {%- endif -%}\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 script_has_issues = namespace(valid=false) -%}\r\n {%- for log in data.result.log -%}\r\n {%- if log.status in ['failure', 'failed', 'warning'] -%}\r\n {%- set script_has_issues.valid = true -%}\r\n {%- if log.status in ['failure', 'failed'] -%}{% set ns.has_failures = true %}{%- else -%}{% set ns.has_warnings = true %}{%- endif -%}\r\n {%- endif -%}\r\n {%- endfor -%}\r\n\r\n {%- if script_has_issues.valid -%}\r\n {%- set ns.body = ns.body ~ \"[BR][BR]#### Allgemeines Script Log\" -%}\r\n {%- for log in data.result.log -%}\r\n {%- if log.status in ['failure', 'failed', 'warning'] -%}\r\n {%- set prefix = \"❌ Fehler\" if log.status in ['failure', 'failed'] else \"⚠️ Warnung\" -%}\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]- \" ~ prefix ~ \" - Name: \" ~ (log.obj.name | default('Allgemein')) ~ \"[BR] Meldung: \" ~ log.message ~ \"[BR] URL: \" ~ target_url -%}\r\n {%- endif -%}\r\n {%- endfor -%}\r\n {%- endif -%}\r\n{%- endif -%}\r\n\r\n{# Titel-Präfix basierend auf dem schlimmsten Status bestimmen #}\r\n{%- set title_prefix = \"# ❌ NetBox Report: Fehlgeschlagene Checks in \" if ns.has_failures else \"# ⚠️ NetBox Report: Warnungen in \" -%}\r\n{%- set full_body = title_prefix ~ report_name ~ \"[BR][BR]\" ~ ns.body -%}\r\n\r\n{\r\n \"urls\": \"{%- if ns.has_failures or ns.has_warnings -%}xmpps://netbox:{{ '' | xmpp_apprise_password }}@anoxinon.me/yosijo{%- endif -%}\",\r\n \"body\": \"{{ full_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, has_warnings=false, error_lines=[], warning_lines=[]) -%}\r\n\r\n{# 1. Suche in NetBox v4 Report-Tests #}\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 -%}\r\n {%- set ns.has_failures = true -%}\r\n {%- set msg = \"- [Test-Fehler] \" ~ test_name ~ \": \" ~ test_results.failure -%}\r\n {%- set ns.error_lines = ns.error_lines + [msg] -%}\r\n {%- elif test_results.warning -%}\r\n {%- set ns.has_warnings = true -%}\r\n {%- set msg = \"- [Test-Warnung] \" ~ test_name ~ \": \" ~ test_results.warning -%}\r\n {%- set ns.warning_lines = ns.warning_lines + [msg] -%}\r\n {%- endif -%}\r\n {%- endfor -%}\r\n{%- endif -%}\r\n\r\n{# 2. Fallback fuer klassische Script-Logs #}\r\n{%- if data is defined and data.result is defined and data.result.log is defined -%}\r\n {%- for log in data.result.log -%}\r\n {%- set status = log.status | lower -%}\r\n {%- set type = log.obj_type if log.obj_type else 'Allgemein' -%}\r\n \r\n {%- if status == 'failure' or status == 'failed' -%}\r\n {%- set ns.has_failures = true -%}\r\n {%- set msg = \"- [\" ~ type ~ \"] \" ~ log.message -%}\r\n {%- set ns.error_lines = ns.error_lines + [msg] -%}\r\n {%- elif status == 'warning' or status == 'warn' -%}\r\n {%- set ns.has_warnings = true -%}\r\n {%- set msg = \"- [\" ~ type ~ \"] \" ~ log.message -%}\r\n {%- set ns.warning_lines = ns.warning_lines + [msg] -%}\r\n {%- endif -%}\r\n {%- endfor -%}\r\n{%- endif -%} \r\n\r\n{# 3. Gesamte result.url nehmen und /api/ entfernen #}\r\n{%- set report_url = \"https://anoxinon.de\" -%}\r\n{%- if data is defined and data.result is defined and data.result.url is defined -%}\r\n {%- set report_url = data.result.url | replace(\"/api/core/\", \"/core/\") -%}\r\n{%- endif -%}\r\n\r\n{%- set report_name = data.name | default(\"PlatformReport\") -%}\r\n\r\n{# 4. Dynamisches Emoji und Titel bestimmen #}\r\n{%- set status_emoji = \"⚠️\" -%}\r\n{%- if ns.has_failures -%}\r\n {%- set status_emoji = \"❌\" -%}\r\n{%- endif -%}\r\n\r\n{# 5. Body Text zusammenbauen #}\r\n{%- set body_parts = [\"Der Report \" ~ report_name ~ \" wurde von \" ~ (username | default('YoSiJo')) ~ \" ausgefuehrt.[BR]\"] -%}\r\n\r\n{%- if ns.has_failures -%}\r\n {%- set body_parts = body_parts + [\"[BR]Folgende Checks sind fehlgeschlagen:[BR]\" ~ ns.error_lines | join(\"[BR]\")] -%}\r\n{%- endif -%}\r\n\r\n{%- if ns.has_warnings -%}\r\n {%- set body_parts = body_parts + [\"[BR]Folgende Warnungen wurden gemeldet:[BR]\" ~ ns.warning_lines | join(\"[BR]\")] -%}\r\n{%- endif -%}\r\n\r\n{%- set body_parts = body_parts + [\"[BR]Direktlink zum Report:[BR]\" ~ report_url] -%}\r\n{%- set body_raw = body_parts | join(\"[BR]\") -%}\r\n\r\n{\r\n \"urls\": \"{%- if ns.has_failures or ns.has_warnings -%}xmpps://netbox:{{ '' | xmpp_apprise_password }}@anoxinon.me/yosijo{%- endif -%}\",\r\n \"title\": \"{{ status_emoji }} NetBox Report: Status-Meldung für {{ report_name }}\",\r\n \"body\": \"{{ body_raw.replace('[BR]', '\\\\n') }}\\n\\n```json\\n{{data}}\\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, has_warnings=false, body=\"\") -%}\r\n\r\n{# Titel und Einleitung vorbereiten #}\r\n{%- set report_name = data.name | default(\"PlatformReport\") -%}\r\n{%- set ns.body = \"## Der Report \" ~ report_name ~ \" wurde von \" ~ (username | default('YoSiJo')) ~ \" ausgefuehrt.[BR][BR]### Log:[BR]\" -%}\r\n\r\n{# 1. Suche in NetBox v4 Report-Tests #}\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.log -%}\r\n \r\n {# Prüfen, ob in diesem Test Fehler oder Warnungen existieren #}\r\n {%- set test_has_issues = namespace(valid=false) -%}\r\n {%- for log_entry in test_results.log -%}\r\n {%- if log_entry[1] in ['failure', 'failed', 'warning'] -%}\r\n {%- set test_has_issues.valid = true -%}\r\n {%- if log_entry[1] in ['failure', 'failed'] -%}{% set ns.has_failures = true %}{%- else -%}{% set ns.has_warnings = true %}{%- endif -%}\r\n {%- endif -%}\r\n {%- endfor -%}\r\n\r\n {%- if test_has_issues.valid -%}\r\n {%- set ns.body = ns.body ~ \"[BR]#### \" ~ test_name ~ \"[BR][BR]\"-%}\r\n {%- for log_entry in test_results.log -%}\r\n {%- if log_entry[1] in ['failure', 'failed', 'warning'] -%}\r\n {%- set prefix = \"❌ Fehler\" if log_entry[1] in ['failure', 'failed'] else \"⚠️ Warnung\" -%}\r\n {%- set clean_path = log_entry[3] if log_entry[3].startswith('/') else '/' ~ log_entry[3] -%}\r\n {%- set target_url = \"https://netbox.anoxinon.de\" ~ clean_path -%}\r\n {%- set ns.body = ns.body ~ \"- \" ~ prefix ~ \" - Name: \" ~ log_entry[2] ~ \"[BR] Meldung: \" ~ log_entry[4] ~ \"[BR] URL: \" ~ target_url ~ \"[BR]\" -%}\r\n {%- endif -%}\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 script_has_issues = namespace(valid=false) -%}\r\n {%- for log in data.result.log -%}\r\n {%- if log.status in ['failure', 'failed', 'warning'] -%}\r\n {%- set script_has_issues.valid = true -%}\r\n {%- if log.status in ['failure', 'failed'] -%}{% set ns.has_failures = true %}{%- else -%}{% set ns.has_warnings = true %}{%- endif -%}\r\n {%- endif -%}\r\n {%- endfor -%}\r\n\r\n {%- if script_has_issues.valid -%}\r\n {%- set ns.body = ns.body ~ \"[BR][BR]#### Allgemeines Script Log\" -%}\r\n {%- for log in data.result.log -%}\r\n {%- if log.status in ['failure', 'failed', 'warning'] -%}\r\n {%- set prefix = \"❌ Fehler\" if log.status in ['failure', 'failed'] else \"⚠️ Warnung\" -%}\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]- \" ~ prefix ~ \" - Name: \" ~ (log.obj.name | default('Allgemein')) ~ \"[BR] Meldung: \" ~ log.message ~ \"[BR] URL: \" ~ target_url -%}\r\n {%- endif -%}\r\n {%- endfor -%}\r\n {%- endif -%}\r\n{%- endif -%}\r\n\r\n{# Titel-Präfix basierend auf dem schlimmsten Status bestimmen #}\r\n{%- set title_prefix = \"# ❌ NetBox Report: Fehlgeschlagene Checks in \" if ns.has_failures else \"# ⚠️ NetBox Report: Warnungen in \" -%}\r\n{%- set full_body = title_prefix ~ report_name ~ \"[BR][BR]\" ~ ns.body -%}\r\n\r\n{\r\n \"urls\": \"{%- if ns.has_failures or ns.has_warnings -%}xmpps://netbox:{{ '' | xmpp_apprise_password }}@anoxinon.me/yosijo{%- endif -%}\",\r\n \"body\": \"{{ full_body.replace('[BR]', '\\\\n') }}\"\r\n}"custom_fields: {}ssl_verification: truehttp_content_type: "application/json"additional_headers: ""