CHAT_OUTPUT_BEGIN
COMMAND_ID=SUPPORT-260922-SPB-HOME-INGRESS-ACME-HOOK-PRECHECK-9120R1
STATUS=OK
RC=0
HOST=pve01
MODE=read-only
COMPONENT=spb-home-ingress-acme-hook-precheck
REFERENCE_REGISTER_CHECK=OK
REFERENCE_SHA256=5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66
ERROR_REGISTER_CHECK=OK
ERROR_REGISTER_SHA256=3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0
COMMAND_SHA256=b1a01d27969a1f75b7fe7163b96f1cdf80777ac2464b02682bec2697891b8f99
DUPLICATE_FAILED_COMMAND_BLOCKED=false
EXECUTION_STARTED=true
CHANGE_DECLARED=false
RESULT_CONTRACT_VALID=true
RESULT_CONTRACT_STATUS=NOT_APPLICABLE
RESULT_CONTRACT_ERROR=NONE
COMMAND_RC=0
CHANGES_MADE=false
ROLLBACK_STARTED=false
ROLLBACK_RESTORED=null
MUTATION_OUTCOME=NO_MUTATION
SANITIZED=yes
SECRETS_INCLUDED=no
PRIVATE_ADDRESSES_INCLUDED=no
RAW_EVIDENCE_SHA256=3cf1f3e3846e8996d51ae516413ea21e677e9893d8b4299f3f47cd409f5e0973
SANITIZED_OUTPUT_SHA256=3cf1f3e3846e8996d51ae516413ea21e677e9893d8b4299f3f47cd409f5e0973
OUTPUT_BEGIN
SPB9120_PRECHECK={"guest":{"ok":true,"data":{"hostname":"edge-vm","hooks":{"pvepro-cf-certbot-hook.py":[{"path":"/opt/npmplus/scripts/pvepro-cf-certbot-hook.py","sha256":"9b92d1893119af794096665dedeaae873b2da64905173c0a62916ae1f6aed268","mode":"0o700","uid":0,"gid":0,"executable":true,"certbot_env":[],"env_names":[],"mentions_gram1":false,"mentions_hbarhub":false,"mentions_newfilya":false,"selected_lines":["req = urllib.request.Request(\"https://api.cloudflare.com/client/v4\"+path, data=data, headers={\"Authorization\":\"Bearer \"+token(), \"Content-Type\":\"application/json\"}, method=method)","return STATE_DIR / (domain + \"-\" + hashlib.sha256((domain+\"|\"+validation).encode()).hexdigest()[:20] + \".json\")","domain=os.environ.get(\"CERTBOT_DOMAIN\",\"\"); validation=os.environ.get(\"CERTBOT_VALIDATION\",\"\")","name=\"_acme-challenge.\"+domain","status, data = api(\"POST\", f\"/zones/{zid}/dns_records\", {\"type\":\"TXT\",\"name\":name,\"content\":validation,\"ttl\":120})","time.sleep(45); return 0","domain=os.environ.get(\"CERTBOT_DOMAIN\",\"\"); validation=os.environ.get(\"CERTBOT_VALIDATION\",\"\")","status, resp=api(\"DELETE\", f\"/zones/{data['zone_id']}/dns_records/{data['record_id']}\")"]}],"pvepro-cf-cleanup-hook.sh":[{"path":"/opt/npmplus/scripts/pvepro-cf-cleanup-hook.sh","sha256":"eff4da2a85d22f0887c3aa7380af6173ee65b634ff44ac5150673726c029149e","mode":"0o700","uid":0,"gid":0,"executable":true,"certbot_env":[],"env_names":[],"mentions_gram1":false,"mentions_hbarhub":false,"mentions_newfilya":false,"selected_lines":["exec /usr/bin/python3 /opt/npmplus/scripts/pvepro-cf-certbot-hook.py cleanup"]}],"gram1-cf-auth-hook.sh":[{"path":"/opt/npmplus/scripts/gram1-cf-auth-hook.sh","sha256":"c03c5b2b18444e38af05599cbd51c518a3646497feb3a59bf5b69996af06b0dc","mode":"0o700","uid":0,"gid":0,"executable":true,"certbot_env":[],"env_names":[],"mentions_gram1":false,"mentions_hbarhub":false,"mentions_newfilya":false,"selected_lines":["exec /usr/bin/python3 /opt/npmplus/scripts/gram1-cf-certbot-hook.py auth"]}],"parked-cf-auth-hook.sh":[{"path":"/opt/npmplus/scripts/parked-cf-auth-hook.sh","sha256":"c9c43720c1a0adaf27b3c20b050dbd8b860d030deb47d7f5789497e3000824c8","mode":"0o700","uid":0,"gid":0,"executable":true,"certbot_env":[],"env_names":[],"mentions_gram1":false,"mentions_hbarhub":false,"mentions_newfilya":false,"selected_lines":["exec /usr/bin/python3 /opt/npmplus/scripts/parked-cf-certbot-hook.py auth"]}],"gram1-cf-certbot-hook.py":[{"path":"/opt/npmplus/scripts/gram1-cf-certbot-hook.py","sha256":"dcaffc5a248359fa3ed93b7bf8af33ad69985776c4a8e3e7f2016c6168da5aee","mode":"0o700","uid":0,"gid":0,"executable":true,"certbot_env":[],"env_names":[],"mentions_gram1":true,"mentions_hbarhub":false,"mentions_newfilya":false,"selected_lines":["req = urllib.request.Request(\"https://api.cloudflare.com/client/v4\" + path, data=data, headers={\"Authorization\": \"Bearer \" + token(), \"Content-Type\": \"application/json\"}, method=method)","h = hashlib.sha256((domain + \"|\" + validation).encode()).hexdigest()[:20]","domain = os.environ.get(\"CERTBOT_DOMAIN\", \"\"); validation = os.environ.get(\"CERTBOT_VALIDATION\", \"\")","name = \"_acme-challenge.\" + domain","status, data = api(\"POST\", f\"/zones/{zid}/dns_records\", {\"type\": \"TXT\", \"name\": name, \"content\": validation, \"ttl\": 120})","out(f\"GRAM1_CF_AUTH domain={domain} status=ok record_id_prefix={rec[:8]}\"); time.sleep(45); return 0","domain = os.environ.get(\"CERTBOT_DOMAIN\", \"\"); validation = os.environ.get(\"CERTBOT_VALIDATION\", \"\")","status, resp = api(\"DELETE\", f\"/zones/{data['zone_id']}/dns_records/{data['record_id']}\")"]}],"gram1-cf-cleanup-hook.sh":[{"path":"/opt/npmplus/scripts/gram1-cf-cleanup-hook.sh","sha256":"f86757b214f6603448a295238b6591eac79faa8702ffb1d0d36697f4f0c5ef17","mode":"0o700","uid":0,"gid":0,"executable":true,"certbot_env":[],"env_names":[],"mentions_gram1":false,"mentions_hbarhub":false,"mentions_newfilya":false,"selected_lines":["exec /usr/bin/python3 /opt/npmplus/scripts/gram1-cf-certbot-hook.py cleanup"]}],"parked-cf-cleanup-hook.sh":[{"path":"/opt/npmplus/scripts/parked-cf-cleanup-hook.sh","sha256":"2d82709fb60b8dcad9dfd38091516fae6ebc3825ec85a8da05643a5cf2cf4380","mode":"0o700","uid":0,"gid":0,"executable":true,"certbot_env":[],"env_names":[],"mentions_gram1":false,"mentions_hbarhub":false,"mentions_newfilya":false,"selected_lines":["exec /usr/bin/python3 /opt/npmplus/scripts/parked-cf-certbot-hook.py cleanup"]}],"pvepro-cf-auth-hook.sh":[{"path":"/opt/npmplus/scripts/pvepro-cf-auth-hook.sh","sha256":"6489531798eda50063aefa41ab44c3c692305c0c29cc5aa4c0dc35fdd469d8cb","mode":"0o700","uid":0,"gid":0,"executable":true,"certbot_env":[],"env_names":[],"mentions_gram1":false,"mentions_hbarhub":false,"mentions_newfilya":false,"selected_lines":["exec /usr/bin/python3 /opt/npmplus/scripts/pvepro-cf-certbot-hook.py auth"]}],"parked-cf-certbot-hook.py":[{"path":"/opt/npmplus/scripts/parked-cf-certbot-hook.py","sha256":"0783fe635ba9ceace923b78e12038ccfc0feaf237ea0abd67cad55169ab90428","mode":"0o700","uid":0,"gid":0,"executable":true,"certbot_env":[],"env_names":[],"mentions_gram1":false,"mentions_hbarhub":false,"mentions_newfilya":false,"selected_lines":["req = urllib.request.Request(\"https://api.cloudflare.com/client/v4\" + path, data=data, headers=headers, method=method)","h = hashlib.sha256((domain + \"|\" + validation).encode()).hexdigest()[:20]","return api(\"GET\", f\"/zones/{zid}/dns_records?{q}\")","domain = os.environ.get(\"CERTBOT_DOMAIN\", \"\")","validation = os.environ.get(\"CERTBOT_VALIDATION\", \"\")","out(\"CF_AUTH status=review reason=missing_certbot_env\")","name = \"_acme-challenge.\" + domain","status, data = api(\"POST\", f\"/zones/{zid}/dns_records\", payload)","time.sleep(45)","domain = os.environ.get(\"CERTBOT_DOMAIN\", \"\")","validation = os.environ.get(\"CERTBOT_VALIDATION\", \"\")","out(\"CF_CLEANUP status=review reason=missing_certbot_env\")","status, resp = api(\"DELETE\", f\"/zones/{data['zone_id']}/dns_records/{data['record_id']}\")","name = \"_acme-challenge.\" + domain","api(\"DELETE\", f\"/zones/{zid}/dns_records/{r['id']}\")"]}]},"config_paths":{"9.conf":[{"path":"/opt/npmplus/manual-backups/forum-public-ok-20260701T064349Z/proxy_host.public-ok/9.conf","sha256":"3764265cb2b64d6f5a495efcbd42e451b45a3469a460dc34cab8214088dc3bb4","mode":"0o644","uid":0,"gid":0},{"path":"/opt/npmplus/manual-backups/forum-manual-routes-20260701T060633Z/proxy_host.before-manual-forums/9.conf","sha256":"3764265cb2b64d6f5a495efcbd42e451b45a3469a460dc34cab8214088dc3bb4","mode":"0o644","uid":0,"gid":0},{"path":"/opt/npmplus/manual-backups/gram1-root-placeholder-20260701T171405Z/proxy_host.before/9.conf","sha256":"3764265cb2b64d6f5a495efcbd42e451b45a3469a460dc34cab8214088dc3bb4","mode":"0o644","uid":0,"gid":0},{"path":"/opt/npmplus/manual-backups/parked-http01-fixed-20260701T151016Z/proxy_host.before-parked-http01-fixed/9.conf","sha256":"3764265cb2b64d6f5a495efcbd42e451b45a3469a460dc34cab8214088dc3bb4","mode":"0o644","uid":0,"gid":0},{"path":"/opt/npmplus/manual-backups/forum-publish-https81-20260701T060242Z/proxy_host.before-forum-publish/9.conf","sha256":"3764265cb2b64d6f5a495efcbd42e451b45a3469a460dc34cab8214088dc3bb4","mode":"0o644","uid":0,"gid":0},{"path":"/opt/npmplus/manual-backups/pvepro-stage22-20260701T173446Z/proxy_host.before/9.conf","sha256":"3764265cb2b64d6f5a495efcbd42e451b45a3469a460dc34cab8214088dc3bb4","mode":"0o644","uid":0,"gid":0},{"path":"/opt/npmplus/manual-backups/parked-dns01-final-20260701T155530Z/proxy_host.before/9.conf","sha256":"3764265cb2b64d6f5a495efcbd42e451b45a3469a460dc34cab8214088dc3bb4","mode":"0o644","uid":0,"gid":0},{"path":"/opt/npmplus/manual-backups/parked-http01-exact-20260701T153237Z/proxy_host.before-parked-http01-exact/9.conf","sha256":"3764265cb2b64d6f5a495efcbd42e451b45a3469a460dc34cab8214088dc3bb4","mode":"0o644","uid":0,"gid":0},{"path":"/opt/npmplus/manual-backups/forum-certs-fixed-20260701T061554Z/proxy_host.before-certs-fixed/9.conf","sha256":"3764265cb2b64d6f5a495efcbd42e451b45a3469a460dc34cab8214088dc3bb4","mode":"0o644","uid":0,"gid":0},{"path":"/opt/npmplus/manual-backups/parked-http01-acme-20260701T151429Z/proxy_host.before-parked-http01-acme/9.conf","sha256":"3764265cb2b64d6f5a495efcbd42e451b45a3469a460dc34cab8214088dc3bb4","mode":"0o644","uid":0,"gid":0},{"path":"/opt/npmplus/manual-backups/forum-certs-before-20260701T061334Z/proxy_host.before-certs/9.conf","sha256":"3764265cb2b64d6f5a495efcbd42e451b45a3469a460dc34cab8214088dc3bb4","mode":"0o644","uid":0,"gid":0},{"path":"/opt/npmplus/manual-backups/batch-publish-20260615T212936Z/proxy_host.before/9.conf","sha256":"a5d04a8d52f9dd1e7f5200699297618fc54ae7525a475450ef80368e0edfec58","mode":"0o644","uid":0,"gid":0},{"path":"/opt/npmplus/manual-backups/forum-publish-fixed-20260701T060004Z/proxy_host.before-forum-publish/9.conf","sha256":"3764265cb2b64d6f5a495efcbd42e451b45a3469a460dc34cab8214088dc3bb4","mode":"0o644","uid":0,"gid":0},{"path":"/opt/npmplus/manual-backups/parked-http01-20260701T150635Z/proxy_host.before-parked-http01/9.conf","sha256":"3764265cb2b64d6f5a495efcbd42e451b45a3469a460dc34cab8214088dc3bb4","mode":"0o644","uid":0,"gid":0},{"path":"/opt/npmplus/manual-backups/gitea-active-route-switch-20260702T051127Z/9.conf","sha256":"3764265cb2b64d6f5a495efcbd42e451b45a3469a460dc34cab8214088dc3bb4","mode":"0o644","uid":0,"gid":0},{"path":"/opt/npmplus/manual-backups/forum-publish-20260701T055831Z/proxy_host.before-forum-publish/9.conf","sha256":"3764265cb2b64d6f5a495efcbd42e451b45a3469a460dc34cab8214088dc3bb4","mode":"0o644","uid":0,"gid":0},{"path":"/opt/npmplus/manual-backups/parked-stage16-route-only-20260701T155843Z/proxy_host.before/9.conf","sha256":"3764265cb2b64d6f5a495efcbd42e451b45a3469a460dc34cab8214088dc3bb4","mode":"0o644","uid":0,"gid":0},{"path":"/opt/npmplus/nginx/proxy_host/9.conf","sha256":"098f4bd041e62ee6a431c6cbf0db92016b8ec549589c2e1d66e20b16561a7bac","mode":"0o644","uid":0,"gid":0}],"999.conf":[{"path":"/opt/npmplus/manual-backups/public-server-tokens-20260904T081240Z/999.conf","sha256":"fce52d92b088df4d01a8e89f7f45ebc9b37b90469d0bf8c0c220cc56694c283a","mode":"0o644","uid":0,"gid":0},{"path":"/opt/npmplus/nginx/proxy_host/999.conf","sha256":"d7ef6af1ded8e3ff2fdbc594f55210ef04a487f0183c724e07a4d5c8e03e8281","mode":"0o644","uid":0,"gid":0}],"992.conf":[{"path":"/opt/npmplus/manual-backups/public-server-tokens-20260904T081240Z/992.conf","sha256":"92c93cf35755510c01341f2637ae4d86297c39895fb500523892dd56e32bb27a","mode":"0o644","uid":0,"gid":0},{"path":"/opt/npmplus/nginx/proxy_host/992.conf","sha256":"38038cdbcc1cc963246837a27e82ed8de79aa358194092f2c494f4e7f68b68a1","mode":"0o644","uid":0,"gid":0}],"git-read-location.conf":[{"path":"/opt/npmplus/custom_nginx/git-read-location.conf","sha256":"9032f6959fdf666bb777378791042b7a99d40d99ddedb0472812a65fc07d81e9","mode":"0o644","uid":0,"gid":0}]},"certbot":{"host":{"rc":0,"out":"certbot 4.0.0","err_sha":null},"container":{"rc":0,"out":"certbot 5.7.0","err_sha":null}},"certbot_help":{"host":{"rc":0,"manual_auth_hook":true,"manual_cleanup_hook":true,"preferred_challenges":true},"container":{"rc":0,"manual_auth_hook":true,"manual_cleanup_hook":true,"preferred_challenges":true}},"referenced_config_files":[]}}}
TASK_COMPLETE=true
TASK_RESULT=PASS_SPB_HOME_INGRESS_ACME_HOOK_PRECHECK
DECISION=READ_EXACT_9120_THEN_CONTROLLED_CERT_AND_VHOST_FIX

OUTPUT_END
CHAT_OUTPUT_END
