From f08b72f441dd0d21879d228b278cf5976bfa7533 Mon Sep 17 00:00:00 2001 From: homelab-runtime-publisher Date: Thu, 23 Jul 2026 15:36:13 +0000 Subject: [PATCH] runtime: publish HOMELAB-SKLADCHIK-COOKIE-HEADER-CAPTURE-372 --- ...B-SKLADCHIK-COOKIE-HEADER-CAPTURE-372.json | 30 +++ ...AB-SKLADCHIK-COOKIE-HEADER-CAPTURE-372.txt | 29 +++ runtime/latest.json | 18 +- runtime/latest.txt | 201 +----------------- 4 files changed, 79 insertions(+), 199 deletions(-) create mode 100644 runtime/history/HOMELAB-SKLADCHIK-COOKIE-HEADER-CAPTURE-372.json create mode 100644 runtime/history/HOMELAB-SKLADCHIK-COOKIE-HEADER-CAPTURE-372.txt diff --git a/runtime/history/HOMELAB-SKLADCHIK-COOKIE-HEADER-CAPTURE-372.json b/runtime/history/HOMELAB-SKLADCHIK-COOKIE-HEADER-CAPTURE-372.json new file mode 100644 index 0000000..e9bee2f --- /dev/null +++ b/runtime/history/HOMELAB-SKLADCHIK-COOKIE-HEADER-CAPTURE-372.json @@ -0,0 +1,30 @@ +{ + "schema_version": 1, + "channel": "homelab-runtime", + "command_id": "HOMELAB-SKLADCHIK-COOKIE-HEADER-CAPTURE-372", + "status": "OK", + "rc": 0, + "host": "pve01", + "mode": "change", + "component": "cluster-audit", + "started_at_utc": "2026-07-23T15:36:04Z", + "finished_at_utc": "2026-07-23T15:36:12Z", + "reference_register_checked": true, + "reference_sha256": "5763f2f8edc75fcf6f3951f8c95896d1cc112ceccb6cf5b64a383f540a4deb8e", + "error_register_checked": true, + "error_register_sha256": "08b3a769b8e38eaa1acec915352fb328180d70caa7ff6cd9d1ec0da426262752", + "command_sha256": "f0424fc8fff69eb709e7b2935db5fed605f80ead1d0cd1dd583eea7ec83434c3", + "duplicate_failed_command_blocked": false, + "block_reason": null, + "execution_started": true, + "changes_made": true, + "sanitized": true, + "secrets_included": false, + "private_addresses_included": false, + "raw_evidence_retained_locally": true, + "raw_evidence_sha256": "3ca91e67ab04f3970c6b38e6735e9a26ca08824a5536aa2226a1ebdcf98e6927", + "sanitized_output_sha256": "3ca91e67ab04f3970c6b38e6735e9a26ca08824a5536aa2226a1ebdcf98e6927", + "output_truncated_in_json": false, + "full_sanitized_output_url": "https://git.gram1.ru/.well-known/homelab-runtime/latest.txt", + "output": "DETAIL=COOKIE_HEADER_PENDING_FILE=/root/.skladchik-cookie-header-372.pending\nDETAIL=COOKIE_HEADER_PENDING_BYTES=752\nDETAIL=COOKIE_HEADER_PENDING_SHA256=3c260f0622999b94e1c3b45d5042532fe001b8118dff0d326636b2ad8609d8c4\nDETAIL=COOKIE_HEADER_CAPTURE=PASS\nCHANGES_MADE=YES\n" +} diff --git a/runtime/history/HOMELAB-SKLADCHIK-COOKIE-HEADER-CAPTURE-372.txt b/runtime/history/HOMELAB-SKLADCHIK-COOKIE-HEADER-CAPTURE-372.txt new file mode 100644 index 0000000..6c27dcd --- /dev/null +++ b/runtime/history/HOMELAB-SKLADCHIK-COOKIE-HEADER-CAPTURE-372.txt @@ -0,0 +1,29 @@ +CHAT_OUTPUT_BEGIN +COMMAND_ID=HOMELAB-SKLADCHIK-COOKIE-HEADER-CAPTURE-372 +STATUS=OK +RC=0 +HOST=pve01 +MODE=change +COMPONENT=cluster-audit +REFERENCE_REGISTER_CHECK=OK +REFERENCE_SHA256=5763f2f8edc75fcf6f3951f8c95896d1cc112ceccb6cf5b64a383f540a4deb8e +ERROR_REGISTER_CHECK=OK +ERROR_REGISTER_SHA256=08b3a769b8e38eaa1acec915352fb328180d70caa7ff6cd9d1ec0da426262752 +COMMAND_SHA256=f0424fc8fff69eb709e7b2935db5fed605f80ead1d0cd1dd583eea7ec83434c3 +DUPLICATE_FAILED_COMMAND_BLOCKED=false +EXECUTION_STARTED=true +CHANGES_MADE=true +SANITIZED=yes +SECRETS_INCLUDED=no +PRIVATE_ADDRESSES_INCLUDED=no +RAW_EVIDENCE_SHA256=3ca91e67ab04f3970c6b38e6735e9a26ca08824a5536aa2226a1ebdcf98e6927 +SANITIZED_OUTPUT_SHA256=3ca91e67ab04f3970c6b38e6735e9a26ca08824a5536aa2226a1ebdcf98e6927 +OUTPUT_BEGIN +DETAIL=COOKIE_HEADER_PENDING_FILE=/root/.skladchik-cookie-header-372.pending +DETAIL=COOKIE_HEADER_PENDING_BYTES=752 +DETAIL=COOKIE_HEADER_PENDING_SHA256=3c260f0622999b94e1c3b45d5042532fe001b8118dff0d326636b2ad8609d8c4 +DETAIL=COOKIE_HEADER_CAPTURE=PASS +CHANGES_MADE=YES + +OUTPUT_END +CHAT_OUTPUT_END diff --git a/runtime/latest.json b/runtime/latest.json index 1097899..e9bee2f 100644 --- a/runtime/latest.json +++ b/runtime/latest.json @@ -1,30 +1,30 @@ { "schema_version": 1, "channel": "homelab-runtime", - "command_id": "HOMELAB-SKLADCHIK-COOKIE-IMPORT-CONTRACT-AUDIT-371", + "command_id": "HOMELAB-SKLADCHIK-COOKIE-HEADER-CAPTURE-372", "status": "OK", "rc": 0, "host": "pve01", - "mode": "read-only", + "mode": "change", "component": "cluster-audit", - "started_at_utc": "2026-07-23T15:28:48Z", - "finished_at_utc": "2026-07-23T15:28:48Z", + "started_at_utc": "2026-07-23T15:36:04Z", + "finished_at_utc": "2026-07-23T15:36:12Z", "reference_register_checked": true, "reference_sha256": "5763f2f8edc75fcf6f3951f8c95896d1cc112ceccb6cf5b64a383f540a4deb8e", "error_register_checked": true, "error_register_sha256": "08b3a769b8e38eaa1acec915352fb328180d70caa7ff6cd9d1ec0da426262752", - "command_sha256": "e05e1429084dee5c0e0748f3b91c4e68d16934c6e5a32f2a25b1332611dfe14b", + "command_sha256": "f0424fc8fff69eb709e7b2935db5fed605f80ead1d0cd1dd583eea7ec83434c3", "duplicate_failed_command_blocked": false, "block_reason": null, "execution_started": true, - "changes_made": false, + "changes_made": true, "sanitized": true, "secrets_included": false, "private_addresses_included": false, "raw_evidence_retained_locally": true, - "raw_evidence_sha256": "05d9b9a806fa45499b8800218e4ec5c6af5ae34a60a9085db4a4360bd3d4132c", - "sanitized_output_sha256": "47b740df38ba8b8afe4df80ad5e67206017b5aa2f70d1d3bad26bcf7eda2c5a3", + "raw_evidence_sha256": "3ca91e67ab04f3970c6b38e6735e9a26ca08824a5536aa2226a1ebdcf98e6927", + "sanitized_output_sha256": "3ca91e67ab04f3970c6b38e6735e9a26ca08824a5536aa2226a1ebdcf98e6927", "output_truncated_in_json": false, "full_sanitized_output_url": "https://git.gram1.ru/.well-known/homelab-runtime/latest.txt", - "output": "DETAIL=STDIN_IS_TTY=YES\nDETAIL=DEV_TTY_READ_WRITE=YES\nDETAIL=COOKIE_IMPORT_CONTRACT_BEGIN\n/usr/local/sbin/skladchik-reports-monitor-supervisor-1-#!/usr/bin/env python3\n/usr/local/sbin/skladchik-reports-monitor-supervisor-2-# -*- coding: utf-8 -*-\n/usr/local/sbin/skladchik-reports-monitor-supervisor:3:import base64\n/usr/local/sbin/skladchik-reports-monitor-supervisor:4:import datetime as _dt\n/usr/local/sbin/skladchik-reports-monitor-supervisor:5:import os\n/usr/local/sbin/skladchik-reports-monitor-supervisor:6:import re\n/usr/local/sbin/skladchik-reports-monitor-supervisor:7:import shlex\n/usr/local/sbin/skladchik-reports-monitor-supervisor:8:import subprocess\n/usr/local/sbin/skladchik-reports-monitor-supervisor:9:import sys\n/usr/local/sbin/skladchik-reports-monitor-supervisor:10:from pathlib import Path\n/usr/local/sbin/skladchik-reports-monitor-supervisor-11-\n/usr/local/sbin/skladchik-reports-monitor-supervisor:12:EDGE = os.environ.get(\"SKLADCHIK_EDGE\", \"debian@[PRIVATE_IP]\")\n/usr/local/sbin/skladchik-reports-monitor-supervisor-13-STATE_DIR = Path(\"/var/lib/skladchik-reports-monitor-supervisor\")\n/usr/local/sbin/skladchik-reports-monitor-supervisor-14-LOG_DIR = Path(\"/var/log/skladchik-reports-monitor-supervisor\")\n--\n/usr/local/sbin/skladchik-reports-monitor-supervisor-19-MONITOR_HEALTH_AGE_MAX = int(os.environ.get(\"SKLADCHIK_MONITOR_HEALTH_MAX_SECONDS\", \"600\"))\n/usr/local/sbin/skladchik-reports-monitor-supervisor-20-BACKUP_HEALTH_AGE_MAX = int(os.environ.get(\"SKLADCHIK_BACKUP_HEALTH_MAX_SECONDS\", \"129600\"))\n/usr/local/sbin/skladchik-reports-monitor-supervisor:21:RESTORE_HEALTH_AGE_MAX = int(os.environ.get(\"SKLADCHIK_RESTORE_HEALTH_MAX_SECONDS\", \"691200\"))\n/usr/local/sbin/skladchik-reports-monitor-supervisor:22:COOKIE_EXPIRY_WARN_SECONDS = int(os.environ.get(\"SKLADCHIK_COOKIE_EXPIRY_WARN_SECONDS\", \"604800\"))\n/usr/local/sbin/skladchik-reports-monitor-supervisor-23-\n/usr/local/sbin/skladchik-reports-monitor-supervisor-24-PVE_BACKUP_HEALTH = Path(\"/var/lib/skladchik-reports-monitor-backup/health.txt\")\n/usr/local/sbin/skladchik-reports-monitor-supervisor:25:PVE_RESTORE_HEALTH = Path(\"/var/lib/skladchik-reports-monitor-backup/restore-check-health.txt\")\n/usr/local/sbin/skladchik-reports-monitor-supervisor-26-\n/usr/local/sbin/skladchik-reports-monitor-supervisor-27-def now():\n--\n/usr/local/sbin/skladchik-reports-monitor-supervisor-79- body_b64 = base64.b64encode(body.encode(\"utf-8\")).decode(\"ascii\")\n/usr/local/sbin/skladchik-reports-monitor-supervisor-80- py = (\n/usr/local/sbin/skladchik-reports-monitor-supervisor:81: \"import base64,importlib.util;\"\n/usr/local/sbin/skladchik-reports-monitor-supervisor:82: \"spec=importlib.util.spec_from_file_location('m','/opt/skladchik-reports-monitor/monitor.py');\"\n/usr/local/sbin/skladchik-reports-monitor-supervisor:83: \"m=importlib.util.module_from_spec(spec); spec.loader.exec_module(m);\"\n/usr/local/sbin/skladchik-reports-monitor-supervisor-84- \"cfg,secrets=m.load_config();\"\n/usr/local/sbin/skladchik-reports-monitor-supervisor-85- f\"subject=base64.b64decode('{subj_b64}').decode('utf-8');\"\n--\n/usr/local/sbin/skladchik-reports-monitor-supervisor-125-test -s /etc/skladchik-reports-monitor/config.ini && echo config_ini=yes || echo config_ini=no\n/usr/local/sbin/skladchik-reports-monitor-supervisor-126-test -s /etc/skladchik-reports-monitor/secrets.env && echo secrets_env=yes || echo secrets_env=no\n/usr/local/sbin/skladchik-reports-monitor-supervisor:127:test -s /var/lib/skladchik-reports-monitor/cookies.jar && echo cookies_jar=yes || echo cookies_jar=no\n/usr/local/sbin/skladchik-reports-monitor-supervisor:128:[ -s /var/lib/skladchik-reports-monitor/cookies.jar ] && echo cookies_jar_bytes=$(stat -c %s /var/lib/skladchik-reports-monitor/cookies.jar 2>/dev/null) || echo cookies_jar_bytes=0\n/usr/local/sbin/skladchik-reports-monitor-supervisor-129-test -s /opt/skladchik-reports-monitor/operational_digest.py && echo operational_digest_py=yes || echo operational_digest_py=no\n/usr/local/sbin/skladchik-reports-monitor-supervisor-130-test -s /opt/skladchik-reports-monitor/event-selftest-runner.py && echo event_selftest_runner_py=yes || echo event_selftest_runner_py=no\n--\n/usr/local/sbin/skladchik-reports-monitor-supervisor-152- facts[\"monitor_smtp_configured\"] = mon.get(\"smtp_configured\", \"\")\n/usr/local/sbin/skladchik-reports-monitor-supervisor-153- facts[\"session_keepalive\"] = mon.get(\"session_keepalive\", \"\")\n/usr/local/sbin/skladchik-reports-monitor-supervisor:154: facts[\"cookie_jar\"] = mon.get(\"cookie_jar\", \"\")\n/usr/local/sbin/skladchik-reports-monitor-supervisor:155: facts[\"cookie_jar_bytes\"] = mon.get(\"cookie_jar_bytes\", \"\")\n/usr/local/sbin/skladchik-reports-monitor-supervisor:156: facts[\"cookie_expiry_status\"] = mon.get(\"cookie_expiry_status\", \"\")\n/usr/local/sbin/skladchik-reports-monitor-supervisor:157: facts[\"cookie_expiry_utc\"] = mon.get(\"cookie_expiry_utc\", \"\")\n/usr/local/sbin/skladchik-reports-monitor-supervisor:158: facts[\"cookie_expires_in_seconds\"] = mon.get(\"cookie_expires_in_seconds\", \"\")\n/usr/local/sbin/skladchik-reports-monitor-supervisor:159: facts[\"cookie_expires_in_days\"] = mon.get(\"cookie_expires_in_days\", \"\")\n/usr/local/sbin/skladchik-reports-monitor-supervisor:160: facts[\"cookie_persistent_count\"] = mon.get(\"cookie_persistent_count\", \"\")\n/usr/local/sbin/skladchik-reports-monitor-supervisor-161- facts[\"monitor_health_age_seconds\"] = str(age_seconds_from_ts(mon.get(\"TS\")))\n/usr/local/sbin/skladchik-reports-monitor-supervisor-162- if mon.get(\"STATUS\") != \"OK\":\n--\n/usr/local/sbin/skladchik-reports-monitor-supervisor-166- if mon.get(\"reports\") in (\"\", \"0\"):\n/usr/local/sbin/skladchik-reports-monitor-supervisor-167- problems.append(\"monitor_reports_zero_or_missing\")\n/usr/local/sbin/skladchik-reports-monitor-supervisor:168: if mon.get(\"session_keepalive\") != \"persistent_cookie_jar\":\n/usr/local/sbin/skladchik-reports-monitor-supervisor-169- problems.append(\"session_keepalive_not_persistent\")\n/usr/local/sbin/skladchik-reports-monitor-supervisor:170: if mon.get(\"cookie_jar\") not in (\"yes\", \"empty\"):\n/usr/local/sbin/skladchik-reports-monitor-supervisor:171: problems.append(\"monitor_cookie_jar_bad\")\n/usr/local/sbin/skladchik-reports-monitor-supervisor:172: expiry_status = mon.get(\"cookie_expiry_status\", \"\")\n/usr/local/sbin/skladchik-reports-monitor-supervisor-173- try:\n/usr/local/sbin/skladchik-reports-monitor-supervisor:174: expires_in = int(mon.get(\"cookie_expires_in_seconds\", \"\"))\n/usr/local/sbin/skladchik-reports-monitor-supervisor-175- except Exception:\n/usr/local/sbin/skladchik-reports-monitor-supervisor-176- expires_in = None\n/usr/local/sbin/skladchik-reports-monitor-supervisor:177: if expiry_status in (\"\", \"NO_COOKIE_JAR\", \"NO_PERSISTENT_COOKIE\", \"ERROR\"):\n/usr/local/sbin/skladchik-reports-monitor-supervisor:178: problems.append(\"cookie_expiry_missing\")\n/usr/local/sbin/skladchik-reports-monitor-supervisor-179- elif expiry_status == \"EXPIRED\" or (expires_in is not None and expires_in <= 0):\n/usr/local/sbin/skladchik-reports-monitor-supervisor:180: problems.append(\"cookie_expiry_expired\")\n/usr/local/sbin/skladchik-reports-monitor-supervisor:181: elif expiry_status == \"WARN\" or (expires_in is not None and expires_in < COOKIE_EXPIRY_WARN_SECONDS):\n/usr/local/sbin/skladchik-reports-monitor-supervisor:182: problems.append(\"cookie_expiry_warn\")\n/usr/local/sbin/skladchik-reports-monitor-supervisor-183-\n/usr/local/sbin/skladchik-reports-monitor-supervisor-184- timers_text = section(\"TIMERS\")\n--\n/usr/local/sbin/skladchik-reports-monitor-supervisor-200-\n/usr/local/sbin/skladchik-reports-monitor-supervisor-201- files = parse_env_text(section(\"FILES\"))\n/usr/local/sbin/skladchik-reports-monitor-supervisor:202: for k in [\"monitor_py\", \"config_ini\", \"secrets_env\", \"cookies_jar\", \"operational_digest_py\", \"event_selftest_runner_py\", \"event_selftest_core\", \"weekly_summary_health\", \"age_alert_health\", \"event_selftest_health\", \"py_compile\"]:\n/usr/local/sbin/skladchik-reports-monitor-supervisor-203- facts[k] = files.get(k, \"no\")\n/usr/local/sbin/skladchik-reports-monitor-supervisor-204- if facts[k] != \"yes\":\n/usr/local/sbin/skladchik-reports-monitor-supervisor-205- problems.append(f\"edge_{k}_bad\")\n/usr/local/sbin/skladchik-reports-monitor-supervisor:206: facts[\"cookies_jar_bytes_file\"] = files.get(\"cookies_jar_bytes\", \"0\")\n/usr/local/sbin/skladchik-reports-monitor-supervisor-207-\n/usr/local/sbin/skladchik-reports-monitor-supervisor-208- backup = read_env_file(PVE_BACKUP_HEALTH)\n--\n/usr/local/sbin/skladchik-reports-monitor-supervisor-211- facts[\"backup_size_bytes\"] = backup.get(\"SIZE_BYTES\", \"\")\n/usr/local/sbin/skladchik-reports-monitor-supervisor-212- facts[\"backup_version\"] = backup.get(\"BACKUP_VERSION\", \"\")\n/usr/local/sbin/skladchik-reports-monitor-supervisor:213: facts[\"backup_cookie_jar_backed_up\"] = backup.get(\"COOKIE_JAR_BACKED_UP\", \"\")\n/usr/local/sbin/skladchik-reports-monitor-supervisor-214- facts[\"backup_extension_health_files_backed_up\"] = backup.get(\"EXTENSION_HEALTH_FILES_BACKED_UP\", \"\")\n/usr/local/sbin/skladchik-reports-monitor-supervisor-215- facts[\"backup_title_in_email_subject\"] = backup.get(\"TITLE_IN_EMAIL_SUBJECT\", \"\")\n--\n/usr/local/sbin/skladchik-reports-monitor-supervisor-217- if backup.get(\"STATUS\") != \"OK\":\n/usr/local/sbin/skladchik-reports-monitor-supervisor-218- problems.append(\"backup_status_not_ok\")\n/usr/local/sbin/skladchik-reports-monitor-supervisor:219: if backup.get(\"COOKIE_JAR_BACKED_UP\") != \"yes\":\n/usr/local/sbin/skladchik-reports-monitor-supervisor:220: problems.append(\"backup_cookie_jar_not_marked\")\n/usr/local/sbin/skladchik-reports-monitor-supervisor-221- if backup.get(\"BACKUP_VERSION\") != \"4\":\n/usr/local/sbin/skladchik-reports-monitor-supervisor-222- problems.append(\"backup_version_not_4\")\n--\n/usr/local/sbin/skladchik-reports-monitor-supervisor-233- problems.append(\"backup_size_bad\")\n/usr/local/sbin/skladchik-reports-monitor-supervisor-234-\n/usr/local/sbin/skladchik-reports-monitor-supervisor:235: restore = read_env_file(PVE_RESTORE_HEALTH)\n/usr/local/sbin/skladchik-reports-monitor-supervisor:236: facts[\"restore_status\"] = restore.get(\"STATUS\", \"MISSING\")\n/usr/local/sbin/skladchik-reports-monitor-supervisor:237: facts[\"restore_run_id\"] = restore.get(\"RUN_ID\", \"\")\n/usr/local/sbin/skladchik-reports-monitor-supervisor:238: facts[\"restore_health_age_seconds\"] = str(age_seconds_from_ts(restore.get(\"TS\")))\n/usr/local/sbin/skladchik-reports-monitor-supervisor:239: for key in [\"CLOUD_1_STATUS\", \"CLOUD_2_STATUS\", \"SHA256_OK\", \"TAR_OK\", \"REQUIRED_FILES_OK\", \"COOKIE_JAR_OK\", \"EXTENSION_HEALTH_FILES_OK\", \"EXTENSION_SCRIPTS_OK\", \"EXTENSION_UNITS_OK\", \"SQLITE_OK\", \"PY_COMPILE_OK\"]:\n/usr/local/sbin/skladchik-reports-monitor-supervisor:240: facts[key.lower()] = restore.get(key, \"\")\n/usr/local/sbin/skladchik-reports-monitor-supervisor:241: if restore.get(\"STATUS\") != \"OK\":\n/usr/local/sbin/skladchik-reports-monitor-supervisor:242: problems.append(\"restore_status_not_ok\")\n/usr/local/sbin/skladchik-reports-monitor-supervisor:243: if int(facts[\"restore_health_age_seconds\"]) > RESTORE_HEALTH_AGE_MAX:\n/usr/local/sbin/skladchik-reports-monitor-supervisor:244: problems.append(\"restore_health_stale\")\n/usr/local/sbin/skladchik-reports-monitor-supervisor-245- for key in [\"CLOUD_1_STATUS\", \"CLOUD_2_STATUS\"]:\n/usr/local/sbin/skladchik-reports-monitor-supervisor:246: if restore.get(key) != \"OK\":\n/usr/local/sbin/skladchik-reports-monitor-supervisor-247- problems.append(key.lower() + \"_bad\")\n/usr/local/sbin/skladchik-reports-monitor-supervisor:248: for key in [\"SHA256_OK\", \"TAR_OK\", \"REQUIRED_FILES_OK\", \"COOKIE_JAR_OK\", \"EXTENSION_HEALTH_FILES_OK\", \"EXTENSION_SCRIPTS_OK\", \"EXTENSION_UNITS_OK\", \"SQLITE_OK\", \"PY_COMPILE_OK\"]:\n/usr/local/sbin/skladchik-reports-monitor-supervisor:249: if restore.get(key) != \"yes\":\n/usr/local/sbin/skladchik-reports-monitor-supervisor-250- problems.append(key.lower() + \"_bad\")\n/usr/local/sbin/skladchik-reports-monitor-supervisor-251-\n/usr/local/sbin/skladchik-reports-monitor-supervisor-252- local_units = [\n/usr/local/sbin/skladchik-reports-monitor-supervisor-253- \"skladchik-reports-monitor-backup.timer\",\n/usr/local/sbin/skladchik-reports-monitor-supervisor:254: \"skladchik-reports-monitor-backup-restore-check.timer\",\n/usr/local/sbin/skladchik-reports-monitor-supervisor-255- \"skladchik-reports-monitor-supervisor.timer\",\n/usr/local/sbin/skladchik-reports-monitor-supervisor-256- \"skladchik-reports-monitor-monthly-selftest-watch.timer\",\n--\n/usr/local/sbin/skladchik-reports-monitor-supervisor-284- f\"- возраст health, сек: {facts.get('monitor_health_age_seconds')}\",\n/usr/local/sbin/skladchik-reports-monitor-supervisor-285- f\"- автопродление авторизации: {facts.get('session_keepalive')}\",\n/usr/local/sbin/skladchik-reports-monitor-supervisor:286: f\"- cookie jar: {facts.get('cookie_jar')} / {facts.get('cookie_jar_bytes')} байт\",\n/usr/local/sbin/skladchik-reports-monitor-supervisor:287: f\"- постоянная cookie действует до UTC: {facts.get('cookie_expiry_utc') or 'не определено'}\",\n/usr/local/sbin/skladchik-reports-monitor-supervisor:288: f\"- осталось дней по cookie: {facts.get('cookie_expires_in_days') or 'не определено'}\",\n/usr/local/sbin/skladchik-reports-monitor-supervisor:289: f\"- статус срока cookie: {facts.get('cookie_expiry_status') or 'не определено'}\",\n/usr/local/sbin/skladchik-reports-monitor-supervisor-290- f\"- NetBird route: {facts.get('netbird_route')}\",\n/usr/local/sbin/skladchik-reports-monitor-supervisor-291- \"\",\n--\n/usr/local/sbin/skladchik-reports-monitor-supervisor-294- f\"- последний RUN_ID: {facts.get('backup_run_id')}\",\n/usr/local/sbin/skladchik-reports-monitor-supervisor-295- f\"- размер архива, байт: {facts.get('backup_size_bytes')}\",\n/usr/local/sbin/skladchik-reports-monitor-supervisor:296: f\"- cookie jar в бэкапе: {facts.get('backup_cookie_jar_backed_up')}\",\n/usr/local/sbin/skladchik-reports-monitor-supervisor-297- f\"- health-файлы расширений в бэкапе: {facts.get('backup_extension_health_files_backed_up')}\",\n/usr/local/sbin/skladchik-reports-monitor-supervisor-298- f\"- название жалобы в теме письма: {facts.get('backup_title_in_email_subject')}\",\n/usr/local/sbin/skladchik-reports-monitor-supervisor-299- f\"- возраст health, сек: {facts.get('backup_health_age_seconds')}\",\n/usr/local/sbin/skladchik-reports-monitor-supervisor-300- \"\",\n/usr/local/sbin/skladchik-reports-monitor-supervisor:301: \"Restore-check:\",\n/usr/local/sbin/skladchik-reports-monitor-supervisor:302: f\"- статус: {facts.get('restore_status')}\",\n/usr/local/sbin/skladchik-reports-monitor-supervisor:303: f\"- последний RUN_ID: {facts.get('restore_run_id')}\",\n/usr/local/sbin/skladchik-reports-monitor-supervisor-304- f\"- cloud1/cloud2: {facts.get('cloud_1_status')}/{facts.get('cloud_2_status')}\",\n/usr/local/sbin/skladchik-reports-monitor-supervisor:305: f\"- sha256/tar/cookie/sqlite/python: {facts.get('sha256_ok')}/{facts.get('tar_ok')}/{facts.get('cookie_jar_ok')}/{facts.get('sqlite_ok')}/{facts.get('py_compile_ok')}\",\n/usr/local/sbin/skladchik-reports-monitor-supervisor-306- f\"- health/scripts/units расширений: {facts.get('extension_health_files_ok')}/{facts.get('extension_scripts_ok')}/{facts.get('extension_units_ok')}\",\n/usr/local/sbin/skladchik-reports-monitor-supervisor-307- \"\",\n--\n/usr/local/sbin/skladchik-reports-monitor-supervisor-315- \"\",\n/usr/local/sbin/skladchik-reports-monitor-supervisor-316- \"Авторизация:\",\n/usr/local/sbin/skladchik-reports-monitor-supervisor:317: \"- ручной ежемесячный перелогин обычно не нужен; монитор сам продлевает сессию постоянным cookie jar при каждом опросе;\",\n/usr/local/sbin/skladchik-reports-monitor-supervisor:318: \"- supervisor теперь отдельно следит за сроком постоянной cookie и заранее предупредит, если до истечения останется меньше 7 дней;\",\n/usr/local/sbin/skladchik-reports-monitor-supervisor-319- \"- если форум принудительно сбросит сессию, придёт отдельная тревога AUTH_REQUIRED; тогда нужно будет разово обновить вход, но это аварийный сценарий, а не ежемесячная рутина.\",\n/usr/local/sbin/skladchik-reports-monitor-supervisor-320- ])\n--\n/usr/local/sbin/skladchik-reports-monitor-supervisor-337-\n/usr/local/sbin/skladchik-reports-monitor-supervisor-338-def main():\n/usr/local/sbin/skladchik-reports-monitor-supervisor:339: mode = sys.argv[1] if len(sys.argv) > 1 else \"check\"\n/usr/local/sbin/skladchik-reports-monitor-supervisor-340- if mode not in (\"check\", \"test\"):\n/usr/local/sbin/skladchik-reports-monitor-supervisor-341- print(\"usage: skladchik-reports-monitor-supervisor [check|test]\", file=sys.stderr)\n--\n/usr/local/sbin/skladchik-reports-monitor-supervisor-370- print(f\"MONITOR={facts.get('monitor_status')} reports={facts.get('monitor_reports')} open={facts.get('monitor_open')} resolved={facts.get('monitor_resolved')}\")\n/usr/local/sbin/skladchik-reports-monitor-supervisor-371- print(f\"BACKUP={facts.get('backup_status')} run={facts.get('backup_run_id')}\")\n/usr/local/sbin/skladchik-reports-monitor-supervisor:372: print(f\"RESTORE={facts.get('restore_status')} run={facts.get('restore_run_id')}\")\n/usr/local/sbin/skladchik-reports-monitor-supervisor-373- log(f\"CHECK mode={mode} status={status} mail_sent={'yes' if mail_sent else 'no'} problems={problems}\")\n/usr/local/sbin/skladchik-reports-monitor-supervisor-374- return 0 if status == \"OK\" else 1\n--\n/usr/local/sbin/skladchik-reports-monitor-status-37-section \"PVE01: таймеры\"\n/usr/local/sbin/skladchik-reports-monitor-status-38-check_timer skladchik-reports-monitor-backup.timer\n/usr/local/sbin/skladchik-reports-monitor-status:39:check_timer skladchik-reports-monitor-backup-restore-check.timer\n/usr/local/sbin/skladchik-reports-monitor-status-40-check_timer skladchik-reports-monitor-supervisor.timer\n/usr/local/sbin/skladchik-reports-monitor-status-41-check_timer skladchik-reports-monitor-monthly-selftest-watch.timer\n/usr/local/sbin/skladchik-reports-monitor-status-42-\n/usr/local/sbin/skladchik-reports-monitor-status-43-check_health \"PVE01: ежедневный бэкап\" \"/var/lib/skladchik-reports-monitor-backup/health.txt\"\n/usr/local/sbin/skladchik-reports-monitor-status:44:check_health \"PVE01: проверка восстановления\" \"/var/lib/skladchik-reports-monitor-backup/restore-check-health.txt\"\n/usr/local/sbin/skladchik-reports-monitor-status-45-check_health \"PVE01: общий supervisor\" \"/var/lib/skladchik-reports-monitor-supervisor/health.txt\"\n/usr/local/sbin/skladchik-reports-monitor-status-46-check_health \"PVE01: контроль ежемесячного самотеста\" \"/var/lib/skladchik-reports-monitor-selftest-watch/health.txt\"\nDETAIL=COOKIE_IMPORT_CONTRACT_END\nDETAIL=LOCAL_COOKIE_STATE=ABSENT\nResult=exit-code\nExecMainStatus=1\nActiveState=failed\nSubState=failed\nDETAIL=COOKIE_IMPORT_CONTRACT_AUDIT=PASS\nCHANGES_MADE=NO\n" + "output": "DETAIL=COOKIE_HEADER_PENDING_FILE=/root/.skladchik-cookie-header-372.pending\nDETAIL=COOKIE_HEADER_PENDING_BYTES=752\nDETAIL=COOKIE_HEADER_PENDING_SHA256=3c260f0622999b94e1c3b45d5042532fe001b8118dff0d326636b2ad8609d8c4\nDETAIL=COOKIE_HEADER_CAPTURE=PASS\nCHANGES_MADE=YES\n" } diff --git a/runtime/latest.txt b/runtime/latest.txt index 37d1811..6c27dcd 100644 --- a/runtime/latest.txt +++ b/runtime/latest.txt @@ -1,208 +1,29 @@ CHAT_OUTPUT_BEGIN -COMMAND_ID=HOMELAB-SKLADCHIK-COOKIE-IMPORT-CONTRACT-AUDIT-371 +COMMAND_ID=HOMELAB-SKLADCHIK-COOKIE-HEADER-CAPTURE-372 STATUS=OK RC=0 HOST=pve01 -MODE=read-only +MODE=change COMPONENT=cluster-audit REFERENCE_REGISTER_CHECK=OK REFERENCE_SHA256=5763f2f8edc75fcf6f3951f8c95896d1cc112ceccb6cf5b64a383f540a4deb8e ERROR_REGISTER_CHECK=OK ERROR_REGISTER_SHA256=08b3a769b8e38eaa1acec915352fb328180d70caa7ff6cd9d1ec0da426262752 -COMMAND_SHA256=e05e1429084dee5c0e0748f3b91c4e68d16934c6e5a32f2a25b1332611dfe14b +COMMAND_SHA256=f0424fc8fff69eb709e7b2935db5fed605f80ead1d0cd1dd583eea7ec83434c3 DUPLICATE_FAILED_COMMAND_BLOCKED=false EXECUTION_STARTED=true -CHANGES_MADE=false +CHANGES_MADE=true SANITIZED=yes SECRETS_INCLUDED=no PRIVATE_ADDRESSES_INCLUDED=no -RAW_EVIDENCE_SHA256=05d9b9a806fa45499b8800218e4ec5c6af5ae34a60a9085db4a4360bd3d4132c -SANITIZED_OUTPUT_SHA256=47b740df38ba8b8afe4df80ad5e67206017b5aa2f70d1d3bad26bcf7eda2c5a3 +RAW_EVIDENCE_SHA256=3ca91e67ab04f3970c6b38e6735e9a26ca08824a5536aa2226a1ebdcf98e6927 +SANITIZED_OUTPUT_SHA256=3ca91e67ab04f3970c6b38e6735e9a26ca08824a5536aa2226a1ebdcf98e6927 OUTPUT_BEGIN -DETAIL=STDIN_IS_TTY=YES -DETAIL=DEV_TTY_READ_WRITE=YES -DETAIL=COOKIE_IMPORT_CONTRACT_BEGIN -/usr/local/sbin/skladchik-reports-monitor-supervisor-1-#!/usr/bin/env python3 -/usr/local/sbin/skladchik-reports-monitor-supervisor-2-# -*- coding: utf-8 -*- -/usr/local/sbin/skladchik-reports-monitor-supervisor:3:import base64 -/usr/local/sbin/skladchik-reports-monitor-supervisor:4:import datetime as _dt -/usr/local/sbin/skladchik-reports-monitor-supervisor:5:import os -/usr/local/sbin/skladchik-reports-monitor-supervisor:6:import re -/usr/local/sbin/skladchik-reports-monitor-supervisor:7:import shlex -/usr/local/sbin/skladchik-reports-monitor-supervisor:8:import subprocess -/usr/local/sbin/skladchik-reports-monitor-supervisor:9:import sys -/usr/local/sbin/skladchik-reports-monitor-supervisor:10:from pathlib import Path -/usr/local/sbin/skladchik-reports-monitor-supervisor-11- -/usr/local/sbin/skladchik-reports-monitor-supervisor:12:EDGE = os.environ.get("SKLADCHIK_EDGE", "debian@[PRIVATE_IP]") -/usr/local/sbin/skladchik-reports-monitor-supervisor-13-STATE_DIR = Path("/var/lib/skladchik-reports-monitor-supervisor") -/usr/local/sbin/skladchik-reports-monitor-supervisor-14-LOG_DIR = Path("/var/log/skladchik-reports-monitor-supervisor") --- -/usr/local/sbin/skladchik-reports-monitor-supervisor-19-MONITOR_HEALTH_AGE_MAX = int(os.environ.get("SKLADCHIK_MONITOR_HEALTH_MAX_SECONDS", "600")) -/usr/local/sbin/skladchik-reports-monitor-supervisor-20-BACKUP_HEALTH_AGE_MAX = int(os.environ.get("SKLADCHIK_BACKUP_HEALTH_MAX_SECONDS", "129600")) -/usr/local/sbin/skladchik-reports-monitor-supervisor:21:RESTORE_HEALTH_AGE_MAX = int(os.environ.get("SKLADCHIK_RESTORE_HEALTH_MAX_SECONDS", "691200")) -/usr/local/sbin/skladchik-reports-monitor-supervisor:22:COOKIE_EXPIRY_WARN_SECONDS = int(os.environ.get("SKLADCHIK_COOKIE_EXPIRY_WARN_SECONDS", "604800")) -/usr/local/sbin/skladchik-reports-monitor-supervisor-23- -/usr/local/sbin/skladchik-reports-monitor-supervisor-24-PVE_BACKUP_HEALTH = Path("/var/lib/skladchik-reports-monitor-backup/health.txt") -/usr/local/sbin/skladchik-reports-monitor-supervisor:25:PVE_RESTORE_HEALTH = Path("/var/lib/skladchik-reports-monitor-backup/restore-check-health.txt") -/usr/local/sbin/skladchik-reports-monitor-supervisor-26- -/usr/local/sbin/skladchik-reports-monitor-supervisor-27-def now(): --- -/usr/local/sbin/skladchik-reports-monitor-supervisor-79- body_b64 = base64.b64encode(body.encode("utf-8")).decode("ascii") -/usr/local/sbin/skladchik-reports-monitor-supervisor-80- py = ( -/usr/local/sbin/skladchik-reports-monitor-supervisor:81: "import base64,importlib.util;" -/usr/local/sbin/skladchik-reports-monitor-supervisor:82: "spec=importlib.util.spec_from_file_location('m','/opt/skladchik-reports-monitor/monitor.py');" -/usr/local/sbin/skladchik-reports-monitor-supervisor:83: "m=importlib.util.module_from_spec(spec); spec.loader.exec_module(m);" -/usr/local/sbin/skladchik-reports-monitor-supervisor-84- "cfg,secrets=m.load_config();" -/usr/local/sbin/skladchik-reports-monitor-supervisor-85- f"subject=base64.b64decode('{subj_b64}').decode('utf-8');" --- -/usr/local/sbin/skladchik-reports-monitor-supervisor-125-test -s /etc/skladchik-reports-monitor/config.ini && echo config_ini=yes || echo config_ini=no -/usr/local/sbin/skladchik-reports-monitor-supervisor-126-test -s /etc/skladchik-reports-monitor/secrets.env && echo secrets_env=yes || echo secrets_env=no -/usr/local/sbin/skladchik-reports-monitor-supervisor:127:test -s /var/lib/skladchik-reports-monitor/cookies.jar && echo cookies_jar=yes || echo cookies_jar=no -/usr/local/sbin/skladchik-reports-monitor-supervisor:128:[ -s /var/lib/skladchik-reports-monitor/cookies.jar ] && echo cookies_jar_bytes=$(stat -c %s /var/lib/skladchik-reports-monitor/cookies.jar 2>/dev/null) || echo cookies_jar_bytes=0 -/usr/local/sbin/skladchik-reports-monitor-supervisor-129-test -s /opt/skladchik-reports-monitor/operational_digest.py && echo operational_digest_py=yes || echo operational_digest_py=no -/usr/local/sbin/skladchik-reports-monitor-supervisor-130-test -s /opt/skladchik-reports-monitor/event-selftest-runner.py && echo event_selftest_runner_py=yes || echo event_selftest_runner_py=no --- -/usr/local/sbin/skladchik-reports-monitor-supervisor-152- facts["monitor_smtp_configured"] = mon.get("smtp_configured", "") -/usr/local/sbin/skladchik-reports-monitor-supervisor-153- facts["session_keepalive"] = mon.get("session_keepalive", "") -/usr/local/sbin/skladchik-reports-monitor-supervisor:154: facts["cookie_jar"] = mon.get("cookie_jar", "") -/usr/local/sbin/skladchik-reports-monitor-supervisor:155: facts["cookie_jar_bytes"] = mon.get("cookie_jar_bytes", "") -/usr/local/sbin/skladchik-reports-monitor-supervisor:156: facts["cookie_expiry_status"] = mon.get("cookie_expiry_status", "") -/usr/local/sbin/skladchik-reports-monitor-supervisor:157: facts["cookie_expiry_utc"] = mon.get("cookie_expiry_utc", "") -/usr/local/sbin/skladchik-reports-monitor-supervisor:158: facts["cookie_expires_in_seconds"] = mon.get("cookie_expires_in_seconds", "") -/usr/local/sbin/skladchik-reports-monitor-supervisor:159: facts["cookie_expires_in_days"] = mon.get("cookie_expires_in_days", "") -/usr/local/sbin/skladchik-reports-monitor-supervisor:160: facts["cookie_persistent_count"] = mon.get("cookie_persistent_count", "") -/usr/local/sbin/skladchik-reports-monitor-supervisor-161- facts["monitor_health_age_seconds"] = str(age_seconds_from_ts(mon.get("TS"))) -/usr/local/sbin/skladchik-reports-monitor-supervisor-162- if mon.get("STATUS") != "OK": --- -/usr/local/sbin/skladchik-reports-monitor-supervisor-166- if mon.get("reports") in ("", "0"): -/usr/local/sbin/skladchik-reports-monitor-supervisor-167- problems.append("monitor_reports_zero_or_missing") -/usr/local/sbin/skladchik-reports-monitor-supervisor:168: if mon.get("session_keepalive") != "persistent_cookie_jar": -/usr/local/sbin/skladchik-reports-monitor-supervisor-169- problems.append("session_keepalive_not_persistent") -/usr/local/sbin/skladchik-reports-monitor-supervisor:170: if mon.get("cookie_jar") not in ("yes", "empty"): -/usr/local/sbin/skladchik-reports-monitor-supervisor:171: problems.append("monitor_cookie_jar_bad") -/usr/local/sbin/skladchik-reports-monitor-supervisor:172: expiry_status = mon.get("cookie_expiry_status", "") -/usr/local/sbin/skladchik-reports-monitor-supervisor-173- try: -/usr/local/sbin/skladchik-reports-monitor-supervisor:174: expires_in = int(mon.get("cookie_expires_in_seconds", "")) -/usr/local/sbin/skladchik-reports-monitor-supervisor-175- except Exception: -/usr/local/sbin/skladchik-reports-monitor-supervisor-176- expires_in = None -/usr/local/sbin/skladchik-reports-monitor-supervisor:177: if expiry_status in ("", "NO_COOKIE_JAR", "NO_PERSISTENT_COOKIE", "ERROR"): -/usr/local/sbin/skladchik-reports-monitor-supervisor:178: problems.append("cookie_expiry_missing") -/usr/local/sbin/skladchik-reports-monitor-supervisor-179- elif expiry_status == "EXPIRED" or (expires_in is not None and expires_in <= 0): -/usr/local/sbin/skladchik-reports-monitor-supervisor:180: problems.append("cookie_expiry_expired") -/usr/local/sbin/skladchik-reports-monitor-supervisor:181: elif expiry_status == "WARN" or (expires_in is not None and expires_in < COOKIE_EXPIRY_WARN_SECONDS): -/usr/local/sbin/skladchik-reports-monitor-supervisor:182: problems.append("cookie_expiry_warn") -/usr/local/sbin/skladchik-reports-monitor-supervisor-183- -/usr/local/sbin/skladchik-reports-monitor-supervisor-184- timers_text = section("TIMERS") --- -/usr/local/sbin/skladchik-reports-monitor-supervisor-200- -/usr/local/sbin/skladchik-reports-monitor-supervisor-201- files = parse_env_text(section("FILES")) -/usr/local/sbin/skladchik-reports-monitor-supervisor:202: for k in ["monitor_py", "config_ini", "secrets_env", "cookies_jar", "operational_digest_py", "event_selftest_runner_py", "event_selftest_core", "weekly_summary_health", "age_alert_health", "event_selftest_health", "py_compile"]: -/usr/local/sbin/skladchik-reports-monitor-supervisor-203- facts[k] = files.get(k, "no") -/usr/local/sbin/skladchik-reports-monitor-supervisor-204- if facts[k] != "yes": -/usr/local/sbin/skladchik-reports-monitor-supervisor-205- problems.append(f"edge_{k}_bad") -/usr/local/sbin/skladchik-reports-monitor-supervisor:206: facts["cookies_jar_bytes_file"] = files.get("cookies_jar_bytes", "0") -/usr/local/sbin/skladchik-reports-monitor-supervisor-207- -/usr/local/sbin/skladchik-reports-monitor-supervisor-208- backup = read_env_file(PVE_BACKUP_HEALTH) --- -/usr/local/sbin/skladchik-reports-monitor-supervisor-211- facts["backup_size_bytes"] = backup.get("SIZE_BYTES", "") -/usr/local/sbin/skladchik-reports-monitor-supervisor-212- facts["backup_version"] = backup.get("BACKUP_VERSION", "") -/usr/local/sbin/skladchik-reports-monitor-supervisor:213: facts["backup_cookie_jar_backed_up"] = backup.get("COOKIE_JAR_BACKED_UP", "") -/usr/local/sbin/skladchik-reports-monitor-supervisor-214- facts["backup_extension_health_files_backed_up"] = backup.get("EXTENSION_HEALTH_FILES_BACKED_UP", "") -/usr/local/sbin/skladchik-reports-monitor-supervisor-215- facts["backup_title_in_email_subject"] = backup.get("TITLE_IN_EMAIL_SUBJECT", "") --- -/usr/local/sbin/skladchik-reports-monitor-supervisor-217- if backup.get("STATUS") != "OK": -/usr/local/sbin/skladchik-reports-monitor-supervisor-218- problems.append("backup_status_not_ok") -/usr/local/sbin/skladchik-reports-monitor-supervisor:219: if backup.get("COOKIE_JAR_BACKED_UP") != "yes": -/usr/local/sbin/skladchik-reports-monitor-supervisor:220: problems.append("backup_cookie_jar_not_marked") -/usr/local/sbin/skladchik-reports-monitor-supervisor-221- if backup.get("BACKUP_VERSION") != "4": -/usr/local/sbin/skladchik-reports-monitor-supervisor-222- problems.append("backup_version_not_4") --- -/usr/local/sbin/skladchik-reports-monitor-supervisor-233- problems.append("backup_size_bad") -/usr/local/sbin/skladchik-reports-monitor-supervisor-234- -/usr/local/sbin/skladchik-reports-monitor-supervisor:235: restore = read_env_file(PVE_RESTORE_HEALTH) -/usr/local/sbin/skladchik-reports-monitor-supervisor:236: facts["restore_status"] = restore.get("STATUS", "MISSING") -/usr/local/sbin/skladchik-reports-monitor-supervisor:237: facts["restore_run_id"] = restore.get("RUN_ID", "") -/usr/local/sbin/skladchik-reports-monitor-supervisor:238: facts["restore_health_age_seconds"] = str(age_seconds_from_ts(restore.get("TS"))) -/usr/local/sbin/skladchik-reports-monitor-supervisor:239: for key in ["CLOUD_1_STATUS", "CLOUD_2_STATUS", "SHA256_OK", "TAR_OK", "REQUIRED_FILES_OK", "COOKIE_JAR_OK", "EXTENSION_HEALTH_FILES_OK", "EXTENSION_SCRIPTS_OK", "EXTENSION_UNITS_OK", "SQLITE_OK", "PY_COMPILE_OK"]: -/usr/local/sbin/skladchik-reports-monitor-supervisor:240: facts[key.lower()] = restore.get(key, "") -/usr/local/sbin/skladchik-reports-monitor-supervisor:241: if restore.get("STATUS") != "OK": -/usr/local/sbin/skladchik-reports-monitor-supervisor:242: problems.append("restore_status_not_ok") -/usr/local/sbin/skladchik-reports-monitor-supervisor:243: if int(facts["restore_health_age_seconds"]) > RESTORE_HEALTH_AGE_MAX: -/usr/local/sbin/skladchik-reports-monitor-supervisor:244: problems.append("restore_health_stale") -/usr/local/sbin/skladchik-reports-monitor-supervisor-245- for key in ["CLOUD_1_STATUS", "CLOUD_2_STATUS"]: -/usr/local/sbin/skladchik-reports-monitor-supervisor:246: if restore.get(key) != "OK": -/usr/local/sbin/skladchik-reports-monitor-supervisor-247- problems.append(key.lower() + "_bad") -/usr/local/sbin/skladchik-reports-monitor-supervisor:248: for key in ["SHA256_OK", "TAR_OK", "REQUIRED_FILES_OK", "COOKIE_JAR_OK", "EXTENSION_HEALTH_FILES_OK", "EXTENSION_SCRIPTS_OK", "EXTENSION_UNITS_OK", "SQLITE_OK", "PY_COMPILE_OK"]: -/usr/local/sbin/skladchik-reports-monitor-supervisor:249: if restore.get(key) != "yes": -/usr/local/sbin/skladchik-reports-monitor-supervisor-250- problems.append(key.lower() + "_bad") -/usr/local/sbin/skladchik-reports-monitor-supervisor-251- -/usr/local/sbin/skladchik-reports-monitor-supervisor-252- local_units = [ -/usr/local/sbin/skladchik-reports-monitor-supervisor-253- "skladchik-reports-monitor-backup.timer", -/usr/local/sbin/skladchik-reports-monitor-supervisor:254: "skladchik-reports-monitor-backup-restore-check.timer", -/usr/local/sbin/skladchik-reports-monitor-supervisor-255- "skladchik-reports-monitor-supervisor.timer", -/usr/local/sbin/skladchik-reports-monitor-supervisor-256- "skladchik-reports-monitor-monthly-selftest-watch.timer", --- -/usr/local/sbin/skladchik-reports-monitor-supervisor-284- f"- возраст health, сек: {facts.get('monitor_health_age_seconds')}", -/usr/local/sbin/skladchik-reports-monitor-supervisor-285- f"- автопродление авторизации: {facts.get('session_keepalive')}", -/usr/local/sbin/skladchik-reports-monitor-supervisor:286: f"- cookie jar: {facts.get('cookie_jar')} / {facts.get('cookie_jar_bytes')} байт", -/usr/local/sbin/skladchik-reports-monitor-supervisor:287: f"- постоянная cookie действует до UTC: {facts.get('cookie_expiry_utc') or 'не определено'}", -/usr/local/sbin/skladchik-reports-monitor-supervisor:288: f"- осталось дней по cookie: {facts.get('cookie_expires_in_days') or 'не определено'}", -/usr/local/sbin/skladchik-reports-monitor-supervisor:289: f"- статус срока cookie: {facts.get('cookie_expiry_status') or 'не определено'}", -/usr/local/sbin/skladchik-reports-monitor-supervisor-290- f"- NetBird route: {facts.get('netbird_route')}", -/usr/local/sbin/skladchik-reports-monitor-supervisor-291- "", --- -/usr/local/sbin/skladchik-reports-monitor-supervisor-294- f"- последний RUN_ID: {facts.get('backup_run_id')}", -/usr/local/sbin/skladchik-reports-monitor-supervisor-295- f"- размер архива, байт: {facts.get('backup_size_bytes')}", -/usr/local/sbin/skladchik-reports-monitor-supervisor:296: f"- cookie jar в бэкапе: {facts.get('backup_cookie_jar_backed_up')}", -/usr/local/sbin/skladchik-reports-monitor-supervisor-297- f"- health-файлы расширений в бэкапе: {facts.get('backup_extension_health_files_backed_up')}", -/usr/local/sbin/skladchik-reports-monitor-supervisor-298- f"- название жалобы в теме письма: {facts.get('backup_title_in_email_subject')}", -/usr/local/sbin/skladchik-reports-monitor-supervisor-299- f"- возраст health, сек: {facts.get('backup_health_age_seconds')}", -/usr/local/sbin/skladchik-reports-monitor-supervisor-300- "", -/usr/local/sbin/skladchik-reports-monitor-supervisor:301: "Restore-check:", -/usr/local/sbin/skladchik-reports-monitor-supervisor:302: f"- статус: {facts.get('restore_status')}", -/usr/local/sbin/skladchik-reports-monitor-supervisor:303: f"- последний RUN_ID: {facts.get('restore_run_id')}", -/usr/local/sbin/skladchik-reports-monitor-supervisor-304- f"- cloud1/cloud2: {facts.get('cloud_1_status')}/{facts.get('cloud_2_status')}", -/usr/local/sbin/skladchik-reports-monitor-supervisor:305: f"- sha256/tar/cookie/sqlite/python: {facts.get('sha256_ok')}/{facts.get('tar_ok')}/{facts.get('cookie_jar_ok')}/{facts.get('sqlite_ok')}/{facts.get('py_compile_ok')}", -/usr/local/sbin/skladchik-reports-monitor-supervisor-306- f"- health/scripts/units расширений: {facts.get('extension_health_files_ok')}/{facts.get('extension_scripts_ok')}/{facts.get('extension_units_ok')}", -/usr/local/sbin/skladchik-reports-monitor-supervisor-307- "", --- -/usr/local/sbin/skladchik-reports-monitor-supervisor-315- "", -/usr/local/sbin/skladchik-reports-monitor-supervisor-316- "Авторизация:", -/usr/local/sbin/skladchik-reports-monitor-supervisor:317: "- ручной ежемесячный перелогин обычно не нужен; монитор сам продлевает сессию постоянным cookie jar при каждом опросе;", -/usr/local/sbin/skladchik-reports-monitor-supervisor:318: "- supervisor теперь отдельно следит за сроком постоянной cookie и заранее предупредит, если до истечения останется меньше 7 дней;", -/usr/local/sbin/skladchik-reports-monitor-supervisor-319- "- если форум принудительно сбросит сессию, придёт отдельная тревога AUTH_REQUIRED; тогда нужно будет разово обновить вход, но это аварийный сценарий, а не ежемесячная рутина.", -/usr/local/sbin/skladchik-reports-monitor-supervisor-320- ]) --- -/usr/local/sbin/skladchik-reports-monitor-supervisor-337- -/usr/local/sbin/skladchik-reports-monitor-supervisor-338-def main(): -/usr/local/sbin/skladchik-reports-monitor-supervisor:339: mode = sys.argv[1] if len(sys.argv) > 1 else "check" -/usr/local/sbin/skladchik-reports-monitor-supervisor-340- if mode not in ("check", "test"): -/usr/local/sbin/skladchik-reports-monitor-supervisor-341- print("usage: skladchik-reports-monitor-supervisor [check|test]", file=sys.stderr) --- -/usr/local/sbin/skladchik-reports-monitor-supervisor-370- print(f"MONITOR={facts.get('monitor_status')} reports={facts.get('monitor_reports')} open={facts.get('monitor_open')} resolved={facts.get('monitor_resolved')}") -/usr/local/sbin/skladchik-reports-monitor-supervisor-371- print(f"BACKUP={facts.get('backup_status')} run={facts.get('backup_run_id')}") -/usr/local/sbin/skladchik-reports-monitor-supervisor:372: print(f"RESTORE={facts.get('restore_status')} run={facts.get('restore_run_id')}") -/usr/local/sbin/skladchik-reports-monitor-supervisor-373- log(f"CHECK mode={mode} status={status} mail_sent={'yes' if mail_sent else 'no'} problems={problems}") -/usr/local/sbin/skladchik-reports-monitor-supervisor-374- return 0 if status == "OK" else 1 --- -/usr/local/sbin/skladchik-reports-monitor-status-37-section "PVE01: таймеры" -/usr/local/sbin/skladchik-reports-monitor-status-38-check_timer skladchik-reports-monitor-backup.timer -/usr/local/sbin/skladchik-reports-monitor-status:39:check_timer skladchik-reports-monitor-backup-restore-check.timer -/usr/local/sbin/skladchik-reports-monitor-status-40-check_timer skladchik-reports-monitor-supervisor.timer -/usr/local/sbin/skladchik-reports-monitor-status-41-check_timer skladchik-reports-monitor-monthly-selftest-watch.timer -/usr/local/sbin/skladchik-reports-monitor-status-42- -/usr/local/sbin/skladchik-reports-monitor-status-43-check_health "PVE01: ежедневный бэкап" "/var/lib/skladchik-reports-monitor-backup/health.txt" -/usr/local/sbin/skladchik-reports-monitor-status:44:check_health "PVE01: проверка восстановления" "/var/lib/skladchik-reports-monitor-backup/restore-check-health.txt" -/usr/local/sbin/skladchik-reports-monitor-status-45-check_health "PVE01: общий supervisor" "/var/lib/skladchik-reports-monitor-supervisor/health.txt" -/usr/local/sbin/skladchik-reports-monitor-status-46-check_health "PVE01: контроль ежемесячного самотеста" "/var/lib/skladchik-reports-monitor-selftest-watch/health.txt" -DETAIL=COOKIE_IMPORT_CONTRACT_END -DETAIL=LOCAL_COOKIE_STATE=ABSENT -Result=exit-code -ExecMainStatus=1 -ActiveState=failed -SubState=failed -DETAIL=COOKIE_IMPORT_CONTRACT_AUDIT=PASS -CHANGES_MADE=NO +DETAIL=COOKIE_HEADER_PENDING_FILE=/root/.skladchik-cookie-header-372.pending +DETAIL=COOKIE_HEADER_PENDING_BYTES=752 +DETAIL=COOKIE_HEADER_PENDING_SHA256=3c260f0622999b94e1c3b45d5042532fe001b8118dff0d326636b2ad8609d8c4 +DETAIL=COOKIE_HEADER_CAPTURE=PASS +CHANGES_MADE=YES OUTPUT_END CHAT_OUTPUT_END