diff --git a/runtime/history/SUPPORT-260920-PVEPRO-PERMISSION-PROBE-RCA-READONLY-716R5.json b/runtime/history/SUPPORT-260920-PVEPRO-PERMISSION-PROBE-RCA-READONLY-716R5.json new file mode 100644 index 00000000..ceda7be8 --- /dev/null +++ b/runtime/history/SUPPORT-260920-PVEPRO-PERMISSION-PROBE-RCA-READONLY-716R5.json @@ -0,0 +1,38 @@ +{ + "schema_version": 1, + "channel": "homelab-runtime", + "command_id": "SUPPORT-260920-PVEPRO-PERMISSION-PROBE-RCA-READONLY-716R5", + "status": "OK", + "rc": 0, + "host": "pve01", + "mode": "read-only", + "component": "pvepro-permission-probe-rca-readonly", + "started_at_utc": "2026-09-19T23:18:35Z", + "finished_at_utc": "2026-09-19T23:18:36Z", + "reference_register_checked": true, + "reference_sha256": "5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66", + "error_register_checked": true, + "error_register_sha256": "3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0", + "command_sha256": "ae1b7ad338972bbb7f0ac123023385e8bc3ade9b9b2ee2bc38dc1ac294069c5f", + "duplicate_failed_command_blocked": false, + "block_reason": null, + "execution_started": true, + "change_declared": false, + "result_contract_valid": true, + "result_contract_status": null, + "result_contract_error": null, + "command_rc": 0, + "changes_made": false, + "rollback_started": false, + "rollback_restored": null, + "mutation_outcome": "NO_MUTATION", + "sanitized": true, + "secrets_included": false, + "private_addresses_included": false, + "raw_evidence_retained_locally": true, + "raw_evidence_sha256": "197b2e2b0efef65e993c880421caec4aafa9a68efc30bd3e5c72526ae81910af", + "sanitized_output_sha256": "197b2e2b0efef65e993c880421caec4aafa9a68efc30bd3e5c72526ae81910af", + "output_truncated_in_json": false, + "full_sanitized_output_url": "https://git.gram1.ru/.well-known/homelab-runtime/latest.txt", + "output": "GUEST_QGA_TRANSPORT_RC=0\nGUEST_EXITCODE=0\nTRANSPORT_STDERR_SHA256=e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\nGUEST_OUTPUT_BEGIN\\nXF_SHA=d0c10d91d743e0a541d9a1b201080491dae0a8b1757866f113ef707b83403219\nSERVER_PHP_LINT_STATE_RC=0\nSERVER_PHP_LINT_STATE_STDERR_SHA256=e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\nSERVER_PHP_LINT_REFLECT_RC=0\nSERVER_PHP_LINT_REFLECT_STDERR_SHA256=e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\nPERMISSION_STATE_RC=0\nPERMISSION_STATE_STDERR_SHA256=e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\nPERMISSION_STATE_STDERR_BYTES=0\nPERMISSION_STATE_OUTPUT_BEGIN\nVISITOR_USER_ID=0\\nVISITOR_PERMISSION_COMBINATION_ID=1\\nVISITOR_HAS_general_view=true\\nVISITOR_HAS_general_viewProfile=true\\nVISITOR_HAS_forum_viewOthers=true\\nUSER_GROUPS=[{\"id\":1,\"title_sha256\":\"2ed52ce2083ecf6e72e527507e999a09018abef54808d1e9b7f98731406607ce\"},{\"id\":2,\"title_sha256\":\"2351ee992626bafb88f7985721ec0f56c7d2e242f753e542dee015f178fffea6\"},{\"id\":3,\"title_sha256\":\"35388e9f363dd162fc578afbef7005604b46f469b538cbf88f576aeec3f00299\"},{\"id\":4,\"title_sha256\":\"34d5166b62f8697fee6a7d193d637b1502aefa8f8c4a57f49839d9eda6799b32\"}]\\nGROUP_1_GLOBAL_PERMISSION_ROWS=[{\"permission_group_id\":\"forum\",\"permission_id\":\"viewContent\",\"permission_value\":\"allow\",\"permission_value_int\":0},{\"permission_group_id\":\"forum\",\"permission_id\":\"viewOthers\",\"permission_value\":\"allow\",\"permission_value_int\":0},{\"permission_group_id\":\"general\",\"permission_id\":\"editProfile\",\"permission_value\":\"allow\",\"permission_value_int\":0},{\"permission_group_id\":\"general\",\"permission_id\":\"search\",\"permission_value\":\"allow\",\"permission_value_int\":0},{\"permission_group_id\":\"general\",\"permission_id\":\"submitWithoutApproval\",\"permission_value\":\"allow\",\"permission_value_int\":0},{\"permission_group_id\":\"general\",\"permission_id\":\"useContactForm\",\"permission_value\":\"allow\",\"permission_value_int\":0},{\"permission_group_id\":\"general\",\"permission_id\":\"usePush\",\"permission_value\":\"allow\",\"permission_value_int\":0},{\"permission_group_id\":\"general\",\"permission_id\":\"view\",\"permission_value\":\"allow\",\"permission_value_int\":0},{\"permission_group_id\":\"general\",\"permission_id\":\"viewMemberList\",\"permission_value\":\"allow\",\"permission_value_int\":0},{\"permission_group_id\":\"general\",\"permission_id\":\"viewNode\",\"permission_value\":\"allow\",\"permission_value_int\":0},{\"permission_group_id\":\"general\",\"permission_id\":\"viewProfile\",\"permission_value\":\"allow\",\"permission_value_int\":0},{\"permission_group_id\":\"profilePost\",\"permission_id\":\"view\",\"permission_value\":\"allow\",\"permission_value_int\":0}]\\nGROUP_2_GLOBAL_PERMISSION_ROWS=[{\"permission_group_id\":\"bookmark\",\"permission_id\":\"view\",\"permission_value\":\"allow\",\"permission_value_int\":0},{\"permission_group_id\":\"forum\",\"permission_id\":\"contentVote\",\"permission_value\":\"allow\",\"permission_value_int\":0},{\"permission_group_id\":\"forum\",\"permission_id\":\"deleteOwnPost\",\"permission_value\":\"allow\",\"permission_value_int\":0},{\"permission_group_id\":\"forum\",\"permission_id\":\"editOwnPost\",\"permission_value\":\"allow\",\"permission_value_int\":0},{\"permission_group_id\":\"forum\",\"permission_id\":\"editOwnPostTimeLimit\",\"permission_value\":\"use_int\",\"permission_value_int\":-1},{\"permission_group_id\":\"forum\",\"permission_id\":\"editOwnThreadTitle\",\"permission_value\":\"allow\",\"permission_value_int\":0},{\"permission_group_id\":\"forum\",\"permission_id\":\"markSolution\",\"permission_value\":\"allow\",\"permission_value_int\":0},{\"permission_group_id\":\"forum\",\"permission_id\":\"postReply\",\"permission_value\":\"allow\",\"permission_value_int\":0},{\"permission_group_id\":\"forum\",\"permission_id\":\"postThread\",\"permission_value\":\"allow\",\"permission_value_int\":0},{\"permission_group_id\":\"forum\",\"permission_id\":\"react\",\"permission_value\":\"allow\",\"permission_value_int\":0},{\"permission_group_id\":\"forum\",\"permission_id\":\"tagOwnThread\",\"permission_value\":\"allow\",\"permission_value_int\":0},{\"permission_group_id\":\"forum\",\"permission_id\":\"uploadAttachment\",\"permission_value\":\"allow\",\"permission_value_int\":0},{\"permission_group_id\":\"forum\",\"permission_id\":\"uploadVideo\",\"permission_value\":\"allow\",\"permission_value_int\":0},{\"permission_group_id\":\"forum\",\"permission_id\":\"viewAttachment\",\"permission_value\":\"allow\",\"permission_value_int\":0},{\"permission_group_id\":\"forum\",\"permission_id\":\"viewContent\",\"permission_value\":\"allow\",\"permission_value_int\":0},{\"permission_group_id\":\"forum\",\"permission_id\":\"viewOthers\",\"permission_value\":\"allow\",\"permission_value_int\":0},{\"permission_group_id\":\"forum\",\"permission_id\":\"votePoll\",\"permission_value\":\"allow\",\"permission_value_int\":0},{\"permission_group_id\":\"general\",\"permission_id\":\"changeUsername\",\"permission_value\":\"allow\",\"permission_value_int\":0},{\"permission_group_id\":\"general\",\"permission_id\":\"createTag\",\"permission_value\":\"allow\",\"permission_value_int\":0},{\"permission_group_id\":\"general\",\"permission_id\":\"editProfile\",\"permission_value\":\"allow\",\"permission_value_int\":0},{\"permission_group_id\":\"general\",\"permission_id\":\"editSignature\",\"permission_value\":\"allow\",\"permission_value_int\":0},{\"permission_group_id\":\"general\",\"permission_id\":\"maxMentionedUsers\",\"permission_value\":\"use_int\",\"permission_value_int\":5},{\"permission_group_id\":\"general\",\"permission_id\":\"report\",\"permission_value\":\"allow\",\"permission_value_int\":0},{\"permission_group_id\":\"general\",\"permission_id\":\"search\",\"permission_value\":\"allow\",\"permission_value_int\":0},{\"permission_group_id\":\"general\",\"permission_id\":\"submitWithoutApproval\",\"permission_value\":\"allow\",\"permission_value_int\":0},{\"permission_group_id\":\"general\",\"permission_id\":\"useContactForm\",\"permission_value\":\"allow\",\"permission_value_int\":0},{\"permission_group_id\":\"general\",\"permission_id\":\"view\",\"permission_value\":\"allow\",\"permission_value_int\":0},{\"permission_group_id\":\"general\",\"permission_id\":\"viewMemberList\",\"permission_value\":\"allow\",\"permission_value_int\":0},{\"permission_group_id\":\"general\",\"permission_id\":\"viewNode\",\"permission_value\":\"allow\",\"permission_value_int\":0},{\"permission_group_id\":\"general\",\"permission_id\":\"viewProfile\",\"permission_value\":\"allow\",\"permission_value_int\":0},{\"permission_group_id\":\"profilePost\",\"permission_id\":\"view\",\"permission_value\":\"allow\",\"permission_value_int\":0}]\\nNODE_1_CONTENT_PERMISSION_ROWS=[]\\nNODE_2_CONTENT_PERMISSION_ROWS=[]\\nNODE_3_CONTENT_PERMISSION_ROWS=[]\\nNODE_8_CONTENT_PERMISSION_ROWS=[]\\nNODE_9_CONTENT_PERMISSION_ROWS=[]\\nNODE_11_CONTENT_PERMISSION_ROWS=[]\\nNODE_17_CONTENT_PERMISSION_ROWS=[]\\nNODE_18_CONTENT_PERMISSION_ROWS=[]\\nFORUM_2_EXISTS=true\\nFORUM_2_CAN_VIEW=true\\nFORUM_2_NODE_CACHE_SELECTED={\"type\":\"NULL\"}\\nFORUM_2_NODE_CACHE_SHA256=28859e345f55ce45426724100617830af221bdf3e01f4333ee34ba58d2df4429\\nFORUM_8_EXISTS=true\\nFORUM_8_CAN_VIEW=false\\nFORUM_8_NODE_CACHE_SELECTED={\"type\":\"NULL\"}\\nFORUM_8_NODE_CACHE_SHA256=28859e345f55ce45426724100617830af221bdf3e01f4333ee34ba58d2df4429\\nFORUM_9_EXISTS=true\\nFORUM_9_CAN_VIEW=false\\nFORUM_9_NODE_CACHE_SELECTED={\"type\":\"NULL\"}\\nFORUM_9_NODE_CACHE_SHA256=28859e345f55ce45426724100617830af221bdf3e01f4333ee34ba58d2df4429\\nFORUM_11_EXISTS=true\\nFORUM_11_CAN_VIEW=false\\nFORUM_11_NODE_CACHE_SELECTED={\"type\":\"NULL\"}\\nFORUM_11_NODE_CACHE_SHA256=28859e345f55ce45426724100617830af221bdf3e01f4333ee34ba58d2df4429\\nFORUM_17_EXISTS=true\\nFORUM_17_CAN_VIEW=false\\nFORUM_17_NODE_CACHE_SELECTED={\"type\":\"NULL\"}\\nFORUM_17_NODE_CACHE_SHA256=28859e345f55ce45426724100617830af221bdf3e01f4333ee34ba58d2df4429\\nFORUM_18_EXISTS=true\\nFORUM_18_CAN_VIEW=false\\nFORUM_18_NODE_CACHE_SELECTED={\"type\":\"NULL\"}\\nFORUM_18_NODE_CACHE_SHA256=28859e345f55ce45426724100617830af221bdf3e01f4333ee34ba58d2df4429\\nPERMISSION_COMBINATIONS=[{\"permission_combination_id\":1,\"user_id\":0,\"user_group_list\":\"1\"},{\"permission_combination_id\":3,\"user_id\":0,\"user_group_list\":\"2\"},{\"permission_combination_id\":4,\"user_id\":0,\"user_group_list\":\"2,3\"},{\"permission_combination_id\":5,\"user_id\":0,\"user_group_list\":\"2,3,4\"},{\"permission_combination_id\":6,\"user_id\":1,\"user_group_list\":\"2,3,4\"}]\\nPERMISSION_CACHE_CONTENT_COLUMNS=[\"permission_combination_id\",\"content_type\",\"content_id\",\"cache_value\"]\\nNODE_1_CACHE_ROWS=[{\"permission_combination_id\":1,\"content_type\":\"node\",\"content_id\":1,\"cache_sha256\":\"4bec2c76ac9f130abb1f5ea2adb6c09fad83598b881cf874e4bcd2fa36d372fe\"},{\"permission_combination_id\":3,\"content_type\":\"node\",\"content_id\":1,\"cache_sha256\":\"4bec2c76ac9f130abb1f5ea2adb6c09fad83598b881cf874e4bcd2fa36d372fe\"},{\"permission_combination_id\":4,\"content_type\":\"node\",\"content_id\":1,\"cache_sha256\":\"4bec2c76ac9f130abb1f5ea2adb6c09fad83598b881cf874e4bcd2fa36d372fe\"},{\"permission_combination_id\":5,\"content_type\":\"node\",\"content_id\":1,\"cache_sha256\":\"4bec2c76ac9f130abb1f5ea2adb6c09fad83598b881cf874e4bcd2fa36d372fe\"},{\"permission_combination_id\":6,\"content_type\":\"node\",\"content_id\":1,\"cache_sha256\":\"4bec2c76ac9f130abb1f5ea2adb6c09fad83598b881cf874e4bcd2fa36d372fe\"}]\\nNODE_2_CACHE_ROWS=[{\"permission_combination_id\":1,\"content_type\":\"node\",\"content_id\":2,\"cache_sha256\":\"1db2d92b6683fab36abb410478ea7864828287b034c4a1220b511dec129cd9b1\"},{\"permission_combination_id\":3,\"content_type\":\"node\",\"content_id\":2,\"cache_sha256\":\"aae61963956180efdfaeb74a16f86df49e50f4c4f60a61f58352dc76bf8550f6\"},{\"permission_combination_id\":4,\"content_type\":\"node\",\"content_id\":2,\"cache_sha256\":\"06e48530a9d18697dcb1ed6455218d7b6884507bbfff9a88eaf777b19ccaa72e\"},{\"permission_combination_id\":5,\"content_type\":\"node\",\"content_id\":2,\"cache_sha256\":\"06e48530a9d18697dcb1ed6455218d7b6884507bbfff9a88eaf777b19ccaa72e\"},{\"permission_combination_id\":6,\"content_type\":\"node\",\"content_id\":2,\"cache_sha256\":\"130f7985f1688afb3ec90c81573e91084152e2d0a53162565f013adcd577a299\"}]\\nNODE_3_CACHE_ROWS=[]\\nNODE_8_CACHE_ROWS=[]\\nNODE_9_CACHE_ROWS=[]\\nNODE_11_CACHE_ROWS=[]\\nNODE_17_CACHE_ROWS=[]\\nNODE_18_CACHE_ROWS=[]\\nNO_MUTATION=true\\n\nPERMISSION_STATE_OUTPUT_END\nPERMISSION_SOURCE_SNIPPETS=[{\"path\":\"/var/www/pvepro/src/XF/Entity/Forum.php\",\"start\":96,\"sha256\":\"ddb39a34ff5fd30c660b518f4a45c7fadf04122be5d13f2280516f23fe8bbf1e\",\"text\":\"\\tpublic function canCreatePoll(&$error = null)\\\\n\\t{\\\\n\\t\\treturn $this->TypeHandler->isThreadTypeCreatable('poll', $this);\\\\n\\t}\\\\n\\\\n\\tpublic function canViewThreadContent(): bool\\\\n\\t{\\\\n\\t\\treturn \\\\XF::visitor()->hasNodePermission($this->node_id, 'viewContent');\\\\n\\t}\\\\n\\\\n\\tpublic function canViewDeletedThreads()\\\\n\\t{\\\\n\\t\\treturn \\\\XF::visitor()->hasNodePermission($this->node_id, 'viewDeleted');\\\\n\\t}\\\\n\\\\n\\tpublic function canViewModeratedThreads()\\\\n\\t{\\\\n\\t\\treturn \\\\XF::visitor()->hasNodePermission($this->node_id, 'viewModerated');\\\\n\\t}\\\\n\\\\n\\tpublic function canUploadAndManageAttachments()\\\\n\\t{\\\\n\\t\\t$visitor = \\\\XF::visitor();\"},{\"path\":\"/var/www/pvepro/src/XF/Entity/Forum.php\",\"start\":101,\"sha256\":\"3dc2b8ff5c5ea7bd3c4822e6e619962188500f72cce1c08290d0e251a8a69b09\",\"text\":\"\\tpublic function canViewThreadContent(): bool\\\\n\\t{\\\\n\\t\\treturn \\\\XF::visitor()->hasNodePermission($this->node_id, 'viewContent');\\\\n\\t}\\\\n\\\\n\\tpublic function canViewDeletedThreads()\\\\n\\t{\\\\n\\t\\treturn \\\\XF::visitor()->hasNodePermission($this->node_id, 'viewDeleted');\\\\n\\t}\\\\n\\\\n\\tpublic function canViewModeratedThreads()\\\\n\\t{\\\\n\\t\\treturn \\\\XF::visitor()->hasNodePermission($this->node_id, 'viewModerated');\\\\n\\t}\\\\n\\\\n\\tpublic function canUploadAndManageAttachments()\\\\n\\t{\\\\n\\t\\t$visitor = \\\\XF::visitor();\\\\n\\\\n\\t\\treturn ($visitor->user_id && $visitor->hasNodePermission($this->node_id, 'uploadAttachment'));\\\\n\\t}\\\\n\\\\n\\tpublic function canUploadVideos()\"},{\"path\":\"/var/www/pvepro/src/XF/Entity/Forum.php\",\"start\":106,\"sha256\":\"76a6149417b8ae3acf5b3fb8aa8460374e307213d5aee0cf19b1bbfc05f70bdf\",\"text\":\"\\tpublic function canViewDeletedThreads()\\\\n\\t{\\\\n\\t\\treturn \\\\XF::visitor()->hasNodePermission($this->node_id, 'viewDeleted');\\\\n\\t}\\\\n\\\\n\\tpublic function canViewModeratedThreads()\\\\n\\t{\\\\n\\t\\treturn \\\\XF::visitor()->hasNodePermission($this->node_id, 'viewModerated');\\\\n\\t}\\\\n\\\\n\\tpublic function canUploadAndManageAttachments()\\\\n\\t{\\\\n\\t\\t$visitor = \\\\XF::visitor();\\\\n\\\\n\\t\\treturn ($visitor->user_id && $visitor->hasNodePermission($this->node_id, 'uploadAttachment'));\\\\n\\t}\\\\n\\\\n\\tpublic function canUploadVideos()\\\\n\\t{\\\\n\\t\\t$options = $this->app()->options();\\\\n\\\\n\\t\\tif (empty($options->allowVideoUploads['enabled']))\\\\n\\t\\t{\"},{\"path\":\"/var/www/pvepro/src/XF/Entity/Forum.php\",\"start\":439,\"sha256\":\"246fbbf565d9c125c32fe9a72b0057837224d11ce188cedcb3ff224474a7b6c7\",\"text\":\"\\t\\treturn (!$prefix || isset($this->prefix_cache[$prefix]));\\\\n\\t}\\\\n\\\\n\\tpublic function getNodeListExtras()\\\\n\\t{\\\\n\\t\\tif (\\\\XF::visitor()->hasNodePermission($this->node_id, 'viewOthers'))\\\\n\\t\\t{\\\\n\\t\\t\\t$output = [\\\\n\\t\\t\\t\\t'discussion_count' => $this->discussion_count,\\\\n\\t\\t\\t\\t'message_count' => $this->message_count,\\\\n\\t\\t\\t\\t'hasNew' => $this->isUnread(),\\\\n\\t\\t\\t];\\\\n\\\\n\\t\\t\\tif ($this->last_post_date)\\\\n\\t\\t\\t{\\\\n\\t\\t\\t\\t$output['last_post_id'] = $this->last_post_id;\\\\n\\t\\t\\t\\t$output['last_post_date'] = $this->last_post_date;\\\\n\\t\\t\\t\\t$output['last_post_user_id'] = $this->last_post_user_id;\\\\n\\t\\t\\t\\t$output['last_post_username'] = $this->last_post_username;\\\\n\\t\\t\\t\\t$output['last_thread_id'] = $this->last_thread_id;\\\\n\\t\\t\\t\\t$output['last_thread_title'] = $this->app()->stringFormatter()->censorText($this->last_thread_title);\\\\n\\t\\t\\t\\t$output['last_thread_prefix_id'] = $this->last_thread_prefix_id;\\\\n\\t\\t\\t\\t$output['LastPostUser'] = $this->LastPostUser;\"},{\"path\":\"/var/www/pvepro/src/XF/Entity/Forum.php\",\"start\":681,\"sha256\":\"61255e3d5c3e21701cd1dd66434d50648b6386391b9ccd3f3a7844f8c6276653\",\"text\":\"\\\\n\\tpublic function getNodeTypeApiData($verbosity = self::VERBOSITY_NORMAL, array $options = [])\\\\n\\t{\\\\n\\t\\t$result = parent::getNodeTypeApiData();\\\\n\\\\n\\t\\tif (\\\\XF::visitor()->hasNodePermission($this->node_id, 'viewOthers'))\\\\n\\t\\t{\\\\n\\t\\t\\t$result->includeExtra([\\\\n\\t\\t\\t\\t'is_unread' => $this->isUnread(),\\\\n\\t\\t\\t\\t'discussion_count' => $this->discussion_count,\\\\n\\t\\t\\t\\t'message_count' => $this->message_count,\\\\n\\t\\t\\t\\t'last_post_id' => $this->last_post_id,\\\\n\\t\\t\\t\\t'last_post_date' => $this->last_post_date,\\\\n\\t\\t\\t\\t'last_post_username' => $this->last_post_username,\\\\n\\t\\t\\t\\t'last_thread_id' => $this->last_thread_id,\\\\n\\t\\t\\t\\t'last_thread_title' => $this->app()->stringFormatter()->censorText($this->last_thread_title),\\\\n\\t\\t\\t\\t'last_thread_prefix_id' => $this->last_thread_prefix_id,\\\\n\\t\\t\\t]);\\\\n\\t\\t}\\\\n\\\\n\\t\\t$this->TypeHandler->addTypeConfigToApiResult($this, $result, $verbosity, $options);\\\\n\\\\n\\t\\tif ($verbosity > self::VERBOSITY_NORMAL)\"},{\"path\":\"/var/www/pvepro/src/XF/Entity/Node.php\",\"start\":45,\"sha256\":\"f529a67e7eea7aeaaa2aa763ca2f0fe6c468844bf966dfcc39b823a912338d0c\",\"text\":\" */\\\\nclass Node extends Entity implements LinkableInterface, ViewableInterface\\\\n{\\\\n\\tuse BookmarkTrait;\\\\n\\\\n\\tpublic function canView(&$error = null)\\\\n\\t{\\\\n\\t\\t/** @var AbstractNode $data */\\\\n\\t\\t$data = $this->Data;\\\\n\\t\\tif (!$data)\\\\n\\t\\t{\\\\n\\t\\t\\treturn false;\\\\n\\t\\t}\\\\n\\\\n\\t\\treturn $data->canView($error);\\\\n\\t}\\\\n\\\\n\\tprotected function canBookmarkContent(&$error = null)\\\\n\\t{\\\\n\\t\\treturn ($this->node_type_id == 'Page' && $this->canView($error));\\\\n\\t}\\\\n\\\\n\\tpublic function isSearchEngineIndexable(): bool\"},{\"path\":\"/var/www/pvepro/src/XF/PermissionCache.php\",\"start\":18,\"sha256\":\"83682b6d6cd774d6b60bfd2d72099c03400cf0a67e071207e00d2ec55704f236\",\"text\":\"\\tpublic function __construct(AbstractAdapter $db)\\\\n\\t{\\\\n\\t\\t$this->db = $db;\\\\n\\t}\\\\n\\\\n\\tpublic function getPermissionSet($permissionCombinationId)\\\\n\\t{\\\\n\\t\\treturn new PermissionSet($this, $permissionCombinationId);\\\\n\\t}\\\\n\\\\n\\tpublic function getGlobalPerms($permissionCombinationId)\\\\n\\t{\\\\n\\t\\t// value will be null if we failed to retrieve the permissions\\\\n\\t\\tif (array_key_exists($permissionCombinationId, $this->globalPerms))\\\\n\\t\\t{\\\\n\\t\\t\\treturn $this->globalPerms[$permissionCombinationId];\\\\n\\t\\t}\\\\n\\\\n\\t\\t$cache = $this->db->fetchOne(\\\"\\\\n\\t\\t\\tSELECT cache_value\\\\n\\t\\t\\tFROM xf_permission_combination\\\\n\\t\\t\\tWHERE permission_combination_id = ?\\\\n\\t\\t\\\", $permissionCombinationId);\"},{\"path\":\"/var/www/pvepro/src/XF/PermissionCache.php\",\"start\":96,\"sha256\":\"9a73f7739703efac4ad1d89125e45a5ba275db71c7b5469935ba84d70a37ba82\",\"text\":\"\\t\\t$this->contentPerms[$permissionCombinationId][$contentType][$contentId] = $cache;\\\\n\\\\n\\t\\treturn $cache;\\\\n\\t}\\\\n\\\\n\\tpublic function cacheAllContentPerms($permissionCombinationId, $contentType)\\\\n\\t{\\\\n\\t\\tif (isset($this->globalCacheRun[$contentType][$permissionCombinationId]))\\\\n\\t\\t{\\\\n\\t\\t\\treturn;\\\\n\\t\\t}\\\\n\\t\\t$this->globalCacheRun[$contentType][$permissionCombinationId] = true;\\\\n\\\\n\\t\\t$permsResult = $this->db->fetchPairs(\\\"\\\\n\\t\\t\\tSELECT content_id, cache_value\\\\n\\t\\t\\tFROM xf_permission_cache_content\\\\n\\t\\t\\tWHERE permission_combination_id = ?\\\\n\\t\\t\\t\\tAND content_type = ?\\\\n\\t\\t\\\", [$permissionCombinationId, $contentType]);\\\\n\\\\n\\t\\tforeach ($permsResult AS $contentId => $cache)\\\\n\\t\\t{\\\\n\\t\\t\\t$cache = $this->decodePermissionCache($cache);\"},{\"path\":\"/var/www/pvepro/src/XF/PermissionCache.php\",\"start\":119,\"sha256\":\"f858e5eeea5f4858afe0028a9755e9152bb9e9dc30e0b71c81f181781e6fa3f4\",\"text\":\"\\\\n\\t\\t\\t$this->contentPerms[$permissionCombinationId][$contentType][$contentId] = $cache;\\\\n\\t\\t}\\\\n\\t}\\\\n\\\\n\\tpublic function cacheContentPermsByIds($permissionCombinationId, $contentType, array $contentIds)\\\\n\\t{\\\\n\\t\\tif (!$contentIds)\\\\n\\t\\t{\\\\n\\t\\t\\treturn;\\\\n\\t\\t}\\\\n\\\\n\\t\\tforeach ($contentIds AS $k => $contentId)\\\\n\\t\\t{\\\\n\\t\\t\\tif (isset($this->contentPerms[$permissionCombinationId][$contentType][$contentId]))\\\\n\\t\\t\\t{\\\\n\\t\\t\\t\\tunset($contentIds[$k]);\\\\n\\t\\t\\t}\\\\n\\t\\t}\\\\n\\t\\tif (!$contentIds)\\\\n\\t\\t{\\\\n\\t\\t\\treturn;\\\\n\\t\\t}\"},{\"path\":\"/var/www/pvepro/src/XF/PermissionCache.php\",\"start\":154,\"sha256\":\"42a826655f3bb839d8dc5040d1e55b4950bb9ac287052234e8a4284165534621\",\"text\":\"\\\\n\\t\\t\\t$this->contentPerms[$permissionCombinationId][$contentType][$contentId] = $cache;\\\\n\\t\\t}\\\\n\\t}\\\\n\\\\n\\tpublic function cacheMultipleContentPermsForContent(array $permissionCombinationIds, $contentType, $contentId)\\\\n\\t{\\\\n\\t\\tif (!$permissionCombinationIds)\\\\n\\t\\t{\\\\n\\t\\t\\treturn;\\\\n\\t\\t}\\\\n\\\\n\\t\\t$permsResult = $this->db->fetchPairs(\\\"\\\\n\\t\\t\\tSELECT permission_combination_id, cache_value\\\\n\\t\\t\\tFROM xf_permission_cache_content\\\\n\\t\\t\\tWHERE permission_combination_id IN (\\\" . $this->db->quote($permissionCombinationIds) . \\\")\\\\n\\t\\t\\t\\tAND content_type = ?\\\\n\\t\\t\\t\\tAND content_id = ?\\\\n\\t\\t\\\", [$contentType, $contentId]);\\\\n\\\\n\\t\\tforeach ($permsResult AS $permissionCombinationId => $cache)\\\\n\\t\\t{\\\\n\\t\\t\\t$cache = $this->decodePermissionCache($cache);\"},{\"path\":\"/var/www/pvepro/src/XF/Repository/PermissionCombinationRepository.php\",\"start\":76,\"sha256\":\"429db2743e8e412951196b3a59de919f708ef848a46e83e96aaf3f2ef619eae0\",\"text\":\"\\t\\t}\\\\n\\\\n\\t\\treturn $combination;\\\\n\\t}\\\\n\\\\n\\tpublic function updatePermissionCombinationForUser(User $user, $buildOnCreate = true)\\\\n\\t{\\\\n\\t\\t$combination = $this->getPermissionCombinationForUser($user);\\\\n\\t\\tif (!$combination->exists())\\\\n\\t\\t{\\\\n\\t\\t\\t$combination->setOption('rebuild_permission_cache', $buildOnCreate);\\\\n\\t\\t\\t$combination->save();\\\\n\\t\\t}\\\\n\\\\n\\t\\tif ($combination->permission_combination_id != $user->permission_combination_id)\\\\n\\t\\t{\\\\n\\t\\t\\t$user->fastUpdate('permission_combination_id', $combination->permission_combination_id);\\\\n\\t\\t}\\\\n\\\\n\\t\\treturn $combination;\\\\n\\t}\\\\n\\\\n\\tpublic function hasUserSpecificPermissions($userId)\"},{\"path\":\"/var/www/pvepro/src/XF/Repository/PermissionCombinationRepository.php\",\"start\":81,\"sha256\":\"4fec4370798eb11f995ade7a704717b70f93aa54d03d0c3bc04f3940a6e36201\",\"text\":\"\\tpublic function updatePermissionCombinationForUser(User $user, $buildOnCreate = true)\\\\n\\t{\\\\n\\t\\t$combination = $this->getPermissionCombinationForUser($user);\\\\n\\t\\tif (!$combination->exists())\\\\n\\t\\t{\\\\n\\t\\t\\t$combination->setOption('rebuild_permission_cache', $buildOnCreate);\\\\n\\t\\t\\t$combination->save();\\\\n\\t\\t}\\\\n\\\\n\\t\\tif ($combination->permission_combination_id != $user->permission_combination_id)\\\\n\\t\\t{\\\\n\\t\\t\\t$user->fastUpdate('permission_combination_id', $combination->permission_combination_id);\\\\n\\t\\t}\\\\n\\\\n\\t\\treturn $combination;\\\\n\\t}\\\\n\\\\n\\tpublic function hasUserSpecificPermissions($userId)\\\\n\\t{\\\\n\\t\\tif (!$userId)\\\\n\\t\\t{\\\\n\\t\\t\\treturn false;\\\\n\\t\\t}\"},{\"path\":\"/var/www/pvepro/src/XF/Repository/PermissionCombinationRepository.php\",\"start\":107,\"sha256\":\"686e2f2e9b0fec141232647ac675ef17b4f52e83651cdecb0b33e1bbfe4e615c\",\"text\":\"\\t\\t\\tUNION ALL\\\\n\\t\\t\\t(SELECT 1 FROM xf_permission_entry_content WHERE user_group_id = 0 AND user_id = ? LIMIT 1)\\\\n\\t\\t\\\", [$userId, $userId]);\\\\n\\t}\\\\n\\\\n\\tpublic function getPermissionCombinationsForUserGroup($userGroupId)\\\\n\\t{\\\\n\\t\\t$groupCombinations = $this->finder(PermissionCombinationUserGroupFinder::class)\\\\n\\t\\t\\t->where('user_group_id', $userGroupId)\\\\n\\t\\t\\t->with('PermissionCombination', true)\\\\n\\t\\t\\t->fetch();\\\\n\\\\n\\t\\treturn $groupCombinations->pluck(function ($groupCombination)\\\\n\\t\\t{\\\\n\\t\\t\\treturn [$groupCombination->permission_combination_id, $groupCombination->PermissionCombination];\\\\n\\t\\t});\\\\n\\t}\\\\n\\\\n\\tpublic function deleteUnusedPermissionCombinations()\\\\n\\t{\\\\n\\t\\t$db = $this->db();\\\\n\\\\n\\t\\t$preRegActionCondition = '';\"}]\nPERMISSION_WRITE_FLOW_HITS=[{\"path\":\"/var/www/pvepro/src/XF/Entity/PermissionEntryContent.php\",\"line\":17,\"text\":\"* @property string $permission_value\"},{\"path\":\"/var/www/pvepro/src/XF/Entity/PermissionEntryContent.php\",\"line\":18,\"text\":\"* @property int $permission_value_int\"},{\"path\":\"/var/www/pvepro/src/XF/Entity/PermissionEntryContent.php\",\"line\":20,\"text\":\"class PermissionEntryContent extends Entity\"},{\"path\":\"/var/www/pvepro/src/XF/Entity/PermissionEntryContent.php\",\"line\":28,\"text\":\"$structure->shortName = 'XF:PermissionEntryContent';\"},{\"path\":\"/var/www/pvepro/src/XF/Entity/PermissionEntryContent.php\",\"line\":38,\"text\":\"'permission_value' => ['type' => self::STR, 'required' => true,\"},{\"path\":\"/var/www/pvepro/src/XF/Entity/PermissionEntryContent.php\",\"line\":41,\"text\":\"'permission_value_int' => ['type' => self::INT],\"},{\"path\":\"/var/www/pvepro/src/XF/Entity/PermissionEntry.php\",\"line\":15,\"text\":\"* @property string $permission_value\"},{\"path\":\"/var/www/pvepro/src/XF/Entity/PermissionEntry.php\",\"line\":16,\"text\":\"* @property int $permission_value_int\"},{\"path\":\"/var/www/pvepro/src/XF/Entity/PermissionEntry.php\",\"line\":18,\"text\":\"class PermissionEntry extends Entity\"},{\"path\":\"/var/www/pvepro/src/XF/Entity/PermissionEntry.php\",\"line\":26,\"text\":\"$structure->shortName = 'XF:PermissionEntry';\"},{\"path\":\"/var/www/pvepro/src/XF/Entity/PermissionEntry.php\",\"line\":34,\"text\":\"'permission_value' => ['type' => self::STR, 'required' => true,\"},{\"path\":\"/var/www/pvepro/src/XF/Entity/PermissionEntry.php\",\"line\":37,\"text\":\"'permission_value_int' => ['type' => self::INT, 'default' => 0],\"},{\"path\":\"/var/www/pvepro/src/XF/Entity/User.php\",\"line\":1285,\"text\":\"\\\\XF::permissionCache()->cacheContentPermsByIds($this->permission_combination_id, 'node', $nodeIds);\"},{\"path\":\"/var/www/pvepro/src/XF/Entity/User.php\",\"line\":1289,\"text\":\"\\\\XF::permissionCache()->cacheAllContentPerms($this->permission_combination_id, 'node');\"},{\"path\":\"/var/www/pvepro/src/XF/Admin/Controller/UserGroupController.php\",\"line\":8,\"text\":\"use XF\\\\Repository\\\\PermissionEntryRepository;\"},{\"path\":\"/var/www/pvepro/src/XF/Admin/Controller/UserGroupController.php\",\"line\":50,\"text\":\"$entryRepo = $this->repository(PermissionEntryRepository::class);\"},{\"path\":\"/var/www/pvepro/src/XF/Admin/Controller/NodeController.php\",\"line\":13,\"text\":\"use XF\\\\Repository\\\\PermissionEntryRepository;\"},{\"path\":\"/var/www/pvepro/src/XF/Admin/Controller/NodeController.php\",\"line\":34,\"text\":\"$customPermissions = $this->repository(PermissionEntryRepository::class)->getContentWithCustomPermissions('node');\"},{\"path\":\"/var/www/pvepro/src/XF/Admin/Controller/PermissionController.php\",\"line\":12,\"text\":\"use XF\\\\Repository\\\\PermissionEntryRepository;\"},{\"path\":\"/var/www/pvepro/src/XF/Admin/Controller/PermissionController.php\",\"line\":170,\"text\":\"$customPermissions = $this->repository(PermissionEntryRepository::class)->getContentWithCustomPermissions('node');\"},{\"path\":\"/var/www/pvepro/src/XF/Admin/Controller/PermissionController.php\",\"line\":283,\"text\":\"* @return PermissionEntryRepository\"},{\"path\":\"/var/www/pvepro/src/XF/Admin/Controller/PermissionController.php\",\"line\":287,\"text\":\"return $this->repository(PermissionEntryRepository::class);\"},{\"path\":\"/var/www/pvepro/src/XF/Admin/Controller/ToolsController.php\",\"line\":16,\"text\":\"use XF\\\\Repository\\\\PermissionEntryRepository;\"},{\"path\":\"/var/www/pvepro/src/XF/Admin/Controller/ToolsController.php\",\"line\":233,\"text\":\"$permEntryRepo = $this->repository(PermissionEntryRepository::class);\"},{\"path\":\"/var/www/pvepro/src/XF/Admin/Controller/ModeratorController.php\",\"line\":13,\"text\":\"use XF\\\\Repository\\\\PermissionEntryRepository;\"},{\"path\":\"/var/www/pvepro/src/XF/Admin/Controller/ModeratorController.php\",\"line\":78,\"text\":\"$permissionEntryRepo = $this->repository(PermissionEntryRepository::class);\"},{\"path\":\"/var/www/pvepro/src/XF/Service/UpdatePermissionsService.php\",\"line\":6,\"text\":\"use XF\\\\Entity\\\\PermissionEntry;\"},{\"path\":\"/var/www/pvepro/src/XF/Service/UpdatePermissionsService.php\",\"line\":7,\"text\":\"use XF\\\\Entity\\\\PermissionEntryContent;\"},{\"path\":\"/var/www/pvepro/src/XF/Service/UpdatePermissionsService.php\",\"line\":10,\"text\":\"use XF\\\\Finder\\\\PermissionEntryContentFinder;\"},{\"path\":\"/var/www/pvepro/src/XF/Service/UpdatePermissionsService.php\",\"line\":11,\"text\":\"use XF\\\\Finder\\\\PermissionEntryFinder;\"},{\"path\":\"/var/www/pvepro/src/XF/Service/UpdatePermissionsService.php\",\"line\":137,\"text\":\"$finder = $this->finder(PermissionEntryContentFinder::class);\"},{\"path\":\"/var/www/pvepro/src/XF/Service/UpdatePermissionsService.php\",\"line\":145,\"text\":\"$finder = $this->finder(PermissionEntryFinder::class);\"},{\"path\":\"/var/www/pvepro/src/XF/Service/UpdatePermissionsService.php\",\"line\":177,\"text\":\"$entry = $this->em()->create(PermissionEntryContent::class);\"},{\"path\":\"/var/www/pvepro/src/XF/Service/UpdatePermissionsService.php\",\"line\":183,\"text\":\"$entry = $this->em()->create(PermissionEntry::class);\"},{\"path\":\"/var/www/pvepro/src/XF/Service/UpdatePermissionsService.php\",\"line\":195,\"text\":\"$entry->permission_value = 'use_int';\"},{\"path\":\"/var/www/pvepro/src/XF/Service/UpdatePermissionsService.php\",\"line\":196,\"text\":\"$entry->permission_value_int = intval($value);\"},{\"path\":\"/var/www/pvepro/src/XF/Service/UpdatePermissionsService.php\",\"line\":200,\"text\":\"$entry->permission_value = $value;\"},{\"path\":\"/var/www/pvepro/src/XF/Service/UpdatePermissionsService.php\",\"line\":201,\"text\":\"$entry->permission_value_int = 0;\"}]\nREFLECTION_RC=0\nREFLECTION_STDERR_SHA256=e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\nREFLECTION_OUTPUT_BEGIN\nCLASS_XF_PermissionCache_EXISTS=true\\nCTOR_XF_PermissionCache|required=1|total=1\\nMETHOD_XF_PermissionCache=getPermissionSet|static=false|required=1|total=1\\nMETHOD_XF_PermissionCache=cacheAllContentPerms|static=false|required=2|total=2\\nMETHOD_XF_PermissionCache=cacheContentPermsByIds|static=false|required=3|total=3\\nMETHOD_XF_PermissionCache=cacheMultipleContentPermsForContent|static=false|required=3|total=3\\nCLASS_XF_Repository_PermissionCombination_EXISTS=true\\nCTOR_XF_Repository_PermissionCombination|required=2|total=2\\nMETHOD_XF_Repository_PermissionCombination=getPermissionCombinationForUser|static=false|required=1|total=2\\nMETHOD_XF_Repository_PermissionCombination=getPermissionCombinationOrPlaceholder|static=false|required=1|total=2\\nMETHOD_XF_Repository_PermissionCombination=updatePermissionCombinationForUser|static=false|required=1|total=2\\nMETHOD_XF_Repository_PermissionCombination=hasUserSpecificPermissions|static=false|required=1|total=1\\nMETHOD_XF_Repository_PermissionCombination=getPermissionCombinationsForUserGroup|static=false|required=1|total=1\\nMETHOD_XF_Repository_PermissionCombination=deleteUnusedPermissionCombinations|static=false|required=0|total=0\\nCLASS_XF_Repository_Permission_EXISTS=true\\nCTOR_XF_Repository_Permission|required=2|total=2\\nMETHOD_XF_Repository_Permission=getGlobalPermissionListData|static=false|required=0|total=0\\nMETHOD_XF_Repository_Permission=getContentPermissionListData|static=false|required=1|total=1\\nMETHOD_XF_Repository_Permission=findPermissionsForList|static=false|required=0|total=0\\nMETHOD_XF_Repository_Permission=getPermissionsGrouped|static=false|required=0|total=0\\nMETHOD_XF_Repository_Permission=getPermissionHandlers|static=false|required=0|total=0\\nMETHOD_XF_Repository_Permission=getPermissionHandler|static=false|required=1|total=1\\nCLASS_XF_Entity_PermissionEntry_EXISTS=true\\nCTOR_XF_Entity_PermissionEntry|required=2|total=4\\nMETHOD_XF_Entity_PermissionEntry=setAsSaved|static=false|required=2|total=2\\nMETHOD_XF_Entity_PermissionEntry=clearCache|static=false|required=1|total=1\\nMETHOD_XF_Entity_PermissionEntry=setOption|static=false|required=2|total=2\\nMETHOD_XF_Entity_PermissionEntry=setOptions|static=false|required=1|total=1\\nMETHOD_XF_Entity_PermissionEntry=resetOption|static=false|required=1|total=1\\nMETHOD_XF_Entity_PermissionEntry=whenSaveable|static=false|required=1|total=1\\nMETHOD_XF_Entity_PermissionEntry=addCascadedSave|static=false|required=1|total=1\\nMETHOD_XF_Entity_PermissionEntry=removeCascadedSave|static=false|required=1|total=1\\nMETHOD_XF_Entity_PermissionEntry=save|static=false|required=0|total=2\\nMETHOD_XF_Entity_PermissionEntry=saveIfChanged|static=false|required=0|total=3\\nMETHOD_XF_Entity_PermissionEntry=preSave|static=false|required=0|total=0\\nCLASS_XF_Entity_PermissionEntryContent_EXISTS=true\\nCTOR_XF_Entity_PermissionEntryContent|required=2|total=4\\nMETHOD_XF_Entity_PermissionEntryContent=setAsSaved|static=false|required=2|total=2\\nMETHOD_XF_Entity_PermissionEntryContent=clearCache|static=false|required=1|total=1\\nMETHOD_XF_Entity_PermissionEntryContent=setOption|static=false|required=2|total=2\\nMETHOD_XF_Entity_PermissionEntryContent=setOptions|static=false|required=1|total=1\\nMETHOD_XF_Entity_PermissionEntryContent=resetOption|static=false|required=1|total=1\\nMETHOD_XF_Entity_PermissionEntryContent=whenSaveable|static=false|required=1|total=1\\nMETHOD_XF_Entity_PermissionEntryContent=addCascadedSave|static=false|required=1|total=1\\nMETHOD_XF_Entity_PermissionEntryContent=removeCascadedSave|static=false|required=1|total=1\\nMETHOD_XF_Entity_PermissionEntryContent=save|static=false|required=0|total=2\\nMETHOD_XF_Entity_PermissionEntryContent=saveIfChanged|static=false|required=0|total=3\\nMETHOD_XF_Entity_PermissionEntryContent=preSave|static=false|required=0|total=0\\n\nREFLECTION_OUTPUT_END\nPERMISSION_STATE_PROBE_OK=true\nTASK_COMPLETE=true\nTASK_RESULT=PASS_PVEPRO_PERMISSION_PROBE_RCA\nNO_MUTATION=true\\nGUEST_OUTPUT_END\nPERMISSION_PROBE_RCA_CLEAN=true\nTASK_COMPLETE=true\nTASK_RESULT=PASS_PVEPRO_PERMISSION_PROBE_RCA\nNO_MUTATION=true\nHOMELAB_RESULT_CONTRACT={\"version\":1,\"command_id\":\"SUPPORT-260920-PVEPRO-PERMISSION-PROBE-RCA-READONLY-716R5\",\"status\":\"OK\",\"changes_made\":false,\"rollback_started\":false,\"rollback_restored\":null}\n" +} diff --git a/runtime/history/SUPPORT-260920-PVEPRO-PERMISSION-PROBE-RCA-READONLY-716R5.txt b/runtime/history/SUPPORT-260920-PVEPRO-PERMISSION-PROBE-RCA-READONLY-716R5.txt new file mode 100644 index 00000000..507f83b8 --- /dev/null +++ b/runtime/history/SUPPORT-260920-PVEPRO-PERMISSION-PROBE-RCA-READONLY-716R5.txt @@ -0,0 +1,62 @@ +CHAT_OUTPUT_BEGIN +COMMAND_ID=SUPPORT-260920-PVEPRO-PERMISSION-PROBE-RCA-READONLY-716R5 +STATUS=OK +RC=0 +HOST=pve01 +MODE=read-only +COMPONENT=pvepro-permission-probe-rca-readonly +REFERENCE_REGISTER_CHECK=OK +REFERENCE_SHA256=5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66 +ERROR_REGISTER_CHECK=OK +ERROR_REGISTER_SHA256=3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0 +COMMAND_SHA256=ae1b7ad338972bbb7f0ac123023385e8bc3ade9b9b2ee2bc38dc1ac294069c5f +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=197b2e2b0efef65e993c880421caec4aafa9a68efc30bd3e5c72526ae81910af +SANITIZED_OUTPUT_SHA256=197b2e2b0efef65e993c880421caec4aafa9a68efc30bd3e5c72526ae81910af +OUTPUT_BEGIN +GUEST_QGA_TRANSPORT_RC=0 +GUEST_EXITCODE=0 +TRANSPORT_STDERR_SHA256=e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 +GUEST_OUTPUT_BEGIN\nXF_SHA=d0c10d91d743e0a541d9a1b201080491dae0a8b1757866f113ef707b83403219 +SERVER_PHP_LINT_STATE_RC=0 +SERVER_PHP_LINT_STATE_STDERR_SHA256=e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 +SERVER_PHP_LINT_REFLECT_RC=0 +SERVER_PHP_LINT_REFLECT_STDERR_SHA256=e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 +PERMISSION_STATE_RC=0 +PERMISSION_STATE_STDERR_SHA256=e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 +PERMISSION_STATE_STDERR_BYTES=0 +PERMISSION_STATE_OUTPUT_BEGIN +VISITOR_USER_ID=0\nVISITOR_PERMISSION_COMBINATION_ID=1\nVISITOR_HAS_general_view=true\nVISITOR_HAS_general_viewProfile=true\nVISITOR_HAS_forum_viewOthers=true\nUSER_GROUPS=[{"id":1,"title_sha256":"2ed52ce2083ecf6e72e527507e999a09018abef54808d1e9b7f98731406607ce"},{"id":2,"title_sha256":"2351ee992626bafb88f7985721ec0f56c7d2e242f753e542dee015f178fffea6"},{"id":3,"title_sha256":"35388e9f363dd162fc578afbef7005604b46f469b538cbf88f576aeec3f00299"},{"id":4,"title_sha256":"34d5166b62f8697fee6a7d193d637b1502aefa8f8c4a57f49839d9eda6799b32"}]\nGROUP_1_GLOBAL_PERMISSION_ROWS=[{"permission_group_id":"forum","permission_id":"viewContent","permission_value":"allow","permission_value_int":0},{"permission_group_id":"forum","permission_id":"viewOthers","permission_value":"allow","permission_value_int":0},{"permission_group_id":"general","permission_id":"editProfile","permission_value":"allow","permission_value_int":0},{"permission_group_id":"general","permission_id":"search","permission_value":"allow","permission_value_int":0},{"permission_group_id":"general","permission_id":"submitWithoutApproval","permission_value":"allow","permission_value_int":0},{"permission_group_id":"general","permission_id":"useContactForm","permission_value":"allow","permission_value_int":0},{"permission_group_id":"general","permission_id":"usePush","permission_value":"allow","permission_value_int":0},{"permission_group_id":"general","permission_id":"view","permission_value":"allow","permission_value_int":0},{"permission_group_id":"general","permission_id":"viewMemberList","permission_value":"allow","permission_value_int":0},{"permission_group_id":"general","permission_id":"viewNode","permission_value":"allow","permission_value_int":0},{"permission_group_id":"general","permission_id":"viewProfile","permission_value":"allow","permission_value_int":0},{"permission_group_id":"profilePost","permission_id":"view","permission_value":"allow","permission_value_int":0}]\nGROUP_2_GLOBAL_PERMISSION_ROWS=[{"permission_group_id":"bookmark","permission_id":"view","permission_value":"allow","permission_value_int":0},{"permission_group_id":"forum","permission_id":"contentVote","permission_value":"allow","permission_value_int":0},{"permission_group_id":"forum","permission_id":"deleteOwnPost","permission_value":"allow","permission_value_int":0},{"permission_group_id":"forum","permission_id":"editOwnPost","permission_value":"allow","permission_value_int":0},{"permission_group_id":"forum","permission_id":"editOwnPostTimeLimit","permission_value":"use_int","permission_value_int":-1},{"permission_group_id":"forum","permission_id":"editOwnThreadTitle","permission_value":"allow","permission_value_int":0},{"permission_group_id":"forum","permission_id":"markSolution","permission_value":"allow","permission_value_int":0},{"permission_group_id":"forum","permission_id":"postReply","permission_value":"allow","permission_value_int":0},{"permission_group_id":"forum","permission_id":"postThread","permission_value":"allow","permission_value_int":0},{"permission_group_id":"forum","permission_id":"react","permission_value":"allow","permission_value_int":0},{"permission_group_id":"forum","permission_id":"tagOwnThread","permission_value":"allow","permission_value_int":0},{"permission_group_id":"forum","permission_id":"uploadAttachment","permission_value":"allow","permission_value_int":0},{"permission_group_id":"forum","permission_id":"uploadVideo","permission_value":"allow","permission_value_int":0},{"permission_group_id":"forum","permission_id":"viewAttachment","permission_value":"allow","permission_value_int":0},{"permission_group_id":"forum","permission_id":"viewContent","permission_value":"allow","permission_value_int":0},{"permission_group_id":"forum","permission_id":"viewOthers","permission_value":"allow","permission_value_int":0},{"permission_group_id":"forum","permission_id":"votePoll","permission_value":"allow","permission_value_int":0},{"permission_group_id":"general","permission_id":"changeUsername","permission_value":"allow","permission_value_int":0},{"permission_group_id":"general","permission_id":"createTag","permission_value":"allow","permission_value_int":0},{"permission_group_id":"general","permission_id":"editProfile","permission_value":"allow","permission_value_int":0},{"permission_group_id":"general","permission_id":"editSignature","permission_value":"allow","permission_value_int":0},{"permission_group_id":"general","permission_id":"maxMentionedUsers","permission_value":"use_int","permission_value_int":5},{"permission_group_id":"general","permission_id":"report","permission_value":"allow","permission_value_int":0},{"permission_group_id":"general","permission_id":"search","permission_value":"allow","permission_value_int":0},{"permission_group_id":"general","permission_id":"submitWithoutApproval","permission_value":"allow","permission_value_int":0},{"permission_group_id":"general","permission_id":"useContactForm","permission_value":"allow","permission_value_int":0},{"permission_group_id":"general","permission_id":"view","permission_value":"allow","permission_value_int":0},{"permission_group_id":"general","permission_id":"viewMemberList","permission_value":"allow","permission_value_int":0},{"permission_group_id":"general","permission_id":"viewNode","permission_value":"allow","permission_value_int":0},{"permission_group_id":"general","permission_id":"viewProfile","permission_value":"allow","permission_value_int":0},{"permission_group_id":"profilePost","permission_id":"view","permission_value":"allow","permission_value_int":0}]\nNODE_1_CONTENT_PERMISSION_ROWS=[]\nNODE_2_CONTENT_PERMISSION_ROWS=[]\nNODE_3_CONTENT_PERMISSION_ROWS=[]\nNODE_8_CONTENT_PERMISSION_ROWS=[]\nNODE_9_CONTENT_PERMISSION_ROWS=[]\nNODE_11_CONTENT_PERMISSION_ROWS=[]\nNODE_17_CONTENT_PERMISSION_ROWS=[]\nNODE_18_CONTENT_PERMISSION_ROWS=[]\nFORUM_2_EXISTS=true\nFORUM_2_CAN_VIEW=true\nFORUM_2_NODE_CACHE_SELECTED={"type":"NULL"}\nFORUM_2_NODE_CACHE_SHA256=28859e345f55ce45426724100617830af221bdf3e01f4333ee34ba58d2df4429\nFORUM_8_EXISTS=true\nFORUM_8_CAN_VIEW=false\nFORUM_8_NODE_CACHE_SELECTED={"type":"NULL"}\nFORUM_8_NODE_CACHE_SHA256=28859e345f55ce45426724100617830af221bdf3e01f4333ee34ba58d2df4429\nFORUM_9_EXISTS=true\nFORUM_9_CAN_VIEW=false\nFORUM_9_NODE_CACHE_SELECTED={"type":"NULL"}\nFORUM_9_NODE_CACHE_SHA256=28859e345f55ce45426724100617830af221bdf3e01f4333ee34ba58d2df4429\nFORUM_11_EXISTS=true\nFORUM_11_CAN_VIEW=false\nFORUM_11_NODE_CACHE_SELECTED={"type":"NULL"}\nFORUM_11_NODE_CACHE_SHA256=28859e345f55ce45426724100617830af221bdf3e01f4333ee34ba58d2df4429\nFORUM_17_EXISTS=true\nFORUM_17_CAN_VIEW=false\nFORUM_17_NODE_CACHE_SELECTED={"type":"NULL"}\nFORUM_17_NODE_CACHE_SHA256=28859e345f55ce45426724100617830af221bdf3e01f4333ee34ba58d2df4429\nFORUM_18_EXISTS=true\nFORUM_18_CAN_VIEW=false\nFORUM_18_NODE_CACHE_SELECTED={"type":"NULL"}\nFORUM_18_NODE_CACHE_SHA256=28859e345f55ce45426724100617830af221bdf3e01f4333ee34ba58d2df4429\nPERMISSION_COMBINATIONS=[{"permission_combination_id":1,"user_id":0,"user_group_list":"1"},{"permission_combination_id":3,"user_id":0,"user_group_list":"2"},{"permission_combination_id":4,"user_id":0,"user_group_list":"2,3"},{"permission_combination_id":5,"user_id":0,"user_group_list":"2,3,4"},{"permission_combination_id":6,"user_id":1,"user_group_list":"2,3,4"}]\nPERMISSION_CACHE_CONTENT_COLUMNS=["permission_combination_id","content_type","content_id","cache_value"]\nNODE_1_CACHE_ROWS=[{"permission_combination_id":1,"content_type":"node","content_id":1,"cache_sha256":"4bec2c76ac9f130abb1f5ea2adb6c09fad83598b881cf874e4bcd2fa36d372fe"},{"permission_combination_id":3,"content_type":"node","content_id":1,"cache_sha256":"4bec2c76ac9f130abb1f5ea2adb6c09fad83598b881cf874e4bcd2fa36d372fe"},{"permission_combination_id":4,"content_type":"node","content_id":1,"cache_sha256":"4bec2c76ac9f130abb1f5ea2adb6c09fad83598b881cf874e4bcd2fa36d372fe"},{"permission_combination_id":5,"content_type":"node","content_id":1,"cache_sha256":"4bec2c76ac9f130abb1f5ea2adb6c09fad83598b881cf874e4bcd2fa36d372fe"},{"permission_combination_id":6,"content_type":"node","content_id":1,"cache_sha256":"4bec2c76ac9f130abb1f5ea2adb6c09fad83598b881cf874e4bcd2fa36d372fe"}]\nNODE_2_CACHE_ROWS=[{"permission_combination_id":1,"content_type":"node","content_id":2,"cache_sha256":"1db2d92b6683fab36abb410478ea7864828287b034c4a1220b511dec129cd9b1"},{"permission_combination_id":3,"content_type":"node","content_id":2,"cache_sha256":"aae61963956180efdfaeb74a16f86df49e50f4c4f60a61f58352dc76bf8550f6"},{"permission_combination_id":4,"content_type":"node","content_id":2,"cache_sha256":"06e48530a9d18697dcb1ed6455218d7b6884507bbfff9a88eaf777b19ccaa72e"},{"permission_combination_id":5,"content_type":"node","content_id":2,"cache_sha256":"06e48530a9d18697dcb1ed6455218d7b6884507bbfff9a88eaf777b19ccaa72e"},{"permission_combination_id":6,"content_type":"node","content_id":2,"cache_sha256":"130f7985f1688afb3ec90c81573e91084152e2d0a53162565f013adcd577a299"}]\nNODE_3_CACHE_ROWS=[]\nNODE_8_CACHE_ROWS=[]\nNODE_9_CACHE_ROWS=[]\nNODE_11_CACHE_ROWS=[]\nNODE_17_CACHE_ROWS=[]\nNODE_18_CACHE_ROWS=[]\nNO_MUTATION=true\n +PERMISSION_STATE_OUTPUT_END +PERMISSION_SOURCE_SNIPPETS=[{"path":"/var/www/pvepro/src/XF/Entity/Forum.php","start":96,"sha256":"ddb39a34ff5fd30c660b518f4a45c7fadf04122be5d13f2280516f23fe8bbf1e","text":"\tpublic function canCreatePoll(&$error = null)\\n\t{\\n\t\treturn $this->TypeHandler->isThreadTypeCreatable('poll', $this);\\n\t}\\n\\n\tpublic function canViewThreadContent(): bool\\n\t{\\n\t\treturn \\XF::visitor()->hasNodePermission($this->node_id, 'viewContent');\\n\t}\\n\\n\tpublic function canViewDeletedThreads()\\n\t{\\n\t\treturn \\XF::visitor()->hasNodePermission($this->node_id, 'viewDeleted');\\n\t}\\n\\n\tpublic function canViewModeratedThreads()\\n\t{\\n\t\treturn \\XF::visitor()->hasNodePermission($this->node_id, 'viewModerated');\\n\t}\\n\\n\tpublic function canUploadAndManageAttachments()\\n\t{\\n\t\t$visitor = \\XF::visitor();"},{"path":"/var/www/pvepro/src/XF/Entity/Forum.php","start":101,"sha256":"3dc2b8ff5c5ea7bd3c4822e6e619962188500f72cce1c08290d0e251a8a69b09","text":"\tpublic function canViewThreadContent(): bool\\n\t{\\n\t\treturn \\XF::visitor()->hasNodePermission($this->node_id, 'viewContent');\\n\t}\\n\\n\tpublic function canViewDeletedThreads()\\n\t{\\n\t\treturn \\XF::visitor()->hasNodePermission($this->node_id, 'viewDeleted');\\n\t}\\n\\n\tpublic function canViewModeratedThreads()\\n\t{\\n\t\treturn \\XF::visitor()->hasNodePermission($this->node_id, 'viewModerated');\\n\t}\\n\\n\tpublic function canUploadAndManageAttachments()\\n\t{\\n\t\t$visitor = \\XF::visitor();\\n\\n\t\treturn ($visitor->user_id && $visitor->hasNodePermission($this->node_id, 'uploadAttachment'));\\n\t}\\n\\n\tpublic function canUploadVideos()"},{"path":"/var/www/pvepro/src/XF/Entity/Forum.php","start":106,"sha256":"76a6149417b8ae3acf5b3fb8aa8460374e307213d5aee0cf19b1bbfc05f70bdf","text":"\tpublic function canViewDeletedThreads()\\n\t{\\n\t\treturn \\XF::visitor()->hasNodePermission($this->node_id, 'viewDeleted');\\n\t}\\n\\n\tpublic function canViewModeratedThreads()\\n\t{\\n\t\treturn \\XF::visitor()->hasNodePermission($this->node_id, 'viewModerated');\\n\t}\\n\\n\tpublic function canUploadAndManageAttachments()\\n\t{\\n\t\t$visitor = \\XF::visitor();\\n\\n\t\treturn ($visitor->user_id && $visitor->hasNodePermission($this->node_id, 'uploadAttachment'));\\n\t}\\n\\n\tpublic function canUploadVideos()\\n\t{\\n\t\t$options = $this->app()->options();\\n\\n\t\tif (empty($options->allowVideoUploads['enabled']))\\n\t\t{"},{"path":"/var/www/pvepro/src/XF/Entity/Forum.php","start":439,"sha256":"246fbbf565d9c125c32fe9a72b0057837224d11ce188cedcb3ff224474a7b6c7","text":"\t\treturn (!$prefix || isset($this->prefix_cache[$prefix]));\\n\t}\\n\\n\tpublic function getNodeListExtras()\\n\t{\\n\t\tif (\\XF::visitor()->hasNodePermission($this->node_id, 'viewOthers'))\\n\t\t{\\n\t\t\t$output = [\\n\t\t\t\t'discussion_count' => $this->discussion_count,\\n\t\t\t\t'message_count' => $this->message_count,\\n\t\t\t\t'hasNew' => $this->isUnread(),\\n\t\t\t];\\n\\n\t\t\tif ($this->last_post_date)\\n\t\t\t{\\n\t\t\t\t$output['last_post_id'] = $this->last_post_id;\\n\t\t\t\t$output['last_post_date'] = $this->last_post_date;\\n\t\t\t\t$output['last_post_user_id'] = $this->last_post_user_id;\\n\t\t\t\t$output['last_post_username'] = $this->last_post_username;\\n\t\t\t\t$output['last_thread_id'] = $this->last_thread_id;\\n\t\t\t\t$output['last_thread_title'] = $this->app()->stringFormatter()->censorText($this->last_thread_title);\\n\t\t\t\t$output['last_thread_prefix_id'] = $this->last_thread_prefix_id;\\n\t\t\t\t$output['LastPostUser'] = $this->LastPostUser;"},{"path":"/var/www/pvepro/src/XF/Entity/Forum.php","start":681,"sha256":"61255e3d5c3e21701cd1dd66434d50648b6386391b9ccd3f3a7844f8c6276653","text":"\\n\tpublic function getNodeTypeApiData($verbosity = self::VERBOSITY_NORMAL, array $options = [])\\n\t{\\n\t\t$result = parent::getNodeTypeApiData();\\n\\n\t\tif (\\XF::visitor()->hasNodePermission($this->node_id, 'viewOthers'))\\n\t\t{\\n\t\t\t$result->includeExtra([\\n\t\t\t\t'is_unread' => $this->isUnread(),\\n\t\t\t\t'discussion_count' => $this->discussion_count,\\n\t\t\t\t'message_count' => $this->message_count,\\n\t\t\t\t'last_post_id' => $this->last_post_id,\\n\t\t\t\t'last_post_date' => $this->last_post_date,\\n\t\t\t\t'last_post_username' => $this->last_post_username,\\n\t\t\t\t'last_thread_id' => $this->last_thread_id,\\n\t\t\t\t'last_thread_title' => $this->app()->stringFormatter()->censorText($this->last_thread_title),\\n\t\t\t\t'last_thread_prefix_id' => $this->last_thread_prefix_id,\\n\t\t\t]);\\n\t\t}\\n\\n\t\t$this->TypeHandler->addTypeConfigToApiResult($this, $result, $verbosity, $options);\\n\\n\t\tif ($verbosity > self::VERBOSITY_NORMAL)"},{"path":"/var/www/pvepro/src/XF/Entity/Node.php","start":45,"sha256":"f529a67e7eea7aeaaa2aa763ca2f0fe6c468844bf966dfcc39b823a912338d0c","text":" */\\nclass Node extends Entity implements LinkableInterface, ViewableInterface\\n{\\n\tuse BookmarkTrait;\\n\\n\tpublic function canView(&$error = null)\\n\t{\\n\t\t/** @var AbstractNode $data */\\n\t\t$data = $this->Data;\\n\t\tif (!$data)\\n\t\t{\\n\t\t\treturn false;\\n\t\t}\\n\\n\t\treturn $data->canView($error);\\n\t}\\n\\n\tprotected function canBookmarkContent(&$error = null)\\n\t{\\n\t\treturn ($this->node_type_id == 'Page' && $this->canView($error));\\n\t}\\n\\n\tpublic function isSearchEngineIndexable(): bool"},{"path":"/var/www/pvepro/src/XF/PermissionCache.php","start":18,"sha256":"83682b6d6cd774d6b60bfd2d72099c03400cf0a67e071207e00d2ec55704f236","text":"\tpublic function __construct(AbstractAdapter $db)\\n\t{\\n\t\t$this->db = $db;\\n\t}\\n\\n\tpublic function getPermissionSet($permissionCombinationId)\\n\t{\\n\t\treturn new PermissionSet($this, $permissionCombinationId);\\n\t}\\n\\n\tpublic function getGlobalPerms($permissionCombinationId)\\n\t{\\n\t\t// value will be null if we failed to retrieve the permissions\\n\t\tif (array_key_exists($permissionCombinationId, $this->globalPerms))\\n\t\t{\\n\t\t\treturn $this->globalPerms[$permissionCombinationId];\\n\t\t}\\n\\n\t\t$cache = $this->db->fetchOne(\"\\n\t\t\tSELECT cache_value\\n\t\t\tFROM xf_permission_combination\\n\t\t\tWHERE permission_combination_id = ?\\n\t\t\", $permissionCombinationId);"},{"path":"/var/www/pvepro/src/XF/PermissionCache.php","start":96,"sha256":"9a73f7739703efac4ad1d89125e45a5ba275db71c7b5469935ba84d70a37ba82","text":"\t\t$this->contentPerms[$permissionCombinationId][$contentType][$contentId] = $cache;\\n\\n\t\treturn $cache;\\n\t}\\n\\n\tpublic function cacheAllContentPerms($permissionCombinationId, $contentType)\\n\t{\\n\t\tif (isset($this->globalCacheRun[$contentType][$permissionCombinationId]))\\n\t\t{\\n\t\t\treturn;\\n\t\t}\\n\t\t$this->globalCacheRun[$contentType][$permissionCombinationId] = true;\\n\\n\t\t$permsResult = $this->db->fetchPairs(\"\\n\t\t\tSELECT content_id, cache_value\\n\t\t\tFROM xf_permission_cache_content\\n\t\t\tWHERE permission_combination_id = ?\\n\t\t\t\tAND content_type = ?\\n\t\t\", [$permissionCombinationId, $contentType]);\\n\\n\t\tforeach ($permsResult AS $contentId => $cache)\\n\t\t{\\n\t\t\t$cache = $this->decodePermissionCache($cache);"},{"path":"/var/www/pvepro/src/XF/PermissionCache.php","start":119,"sha256":"f858e5eeea5f4858afe0028a9755e9152bb9e9dc30e0b71c81f181781e6fa3f4","text":"\\n\t\t\t$this->contentPerms[$permissionCombinationId][$contentType][$contentId] = $cache;\\n\t\t}\\n\t}\\n\\n\tpublic function cacheContentPermsByIds($permissionCombinationId, $contentType, array $contentIds)\\n\t{\\n\t\tif (!$contentIds)\\n\t\t{\\n\t\t\treturn;\\n\t\t}\\n\\n\t\tforeach ($contentIds AS $k => $contentId)\\n\t\t{\\n\t\t\tif (isset($this->contentPerms[$permissionCombinationId][$contentType][$contentId]))\\n\t\t\t{\\n\t\t\t\tunset($contentIds[$k]);\\n\t\t\t}\\n\t\t}\\n\t\tif (!$contentIds)\\n\t\t{\\n\t\t\treturn;\\n\t\t}"},{"path":"/var/www/pvepro/src/XF/PermissionCache.php","start":154,"sha256":"42a826655f3bb839d8dc5040d1e55b4950bb9ac287052234e8a4284165534621","text":"\\n\t\t\t$this->contentPerms[$permissionCombinationId][$contentType][$contentId] = $cache;\\n\t\t}\\n\t}\\n\\n\tpublic function cacheMultipleContentPermsForContent(array $permissionCombinationIds, $contentType, $contentId)\\n\t{\\n\t\tif (!$permissionCombinationIds)\\n\t\t{\\n\t\t\treturn;\\n\t\t}\\n\\n\t\t$permsResult = $this->db->fetchPairs(\"\\n\t\t\tSELECT permission_combination_id, cache_value\\n\t\t\tFROM xf_permission_cache_content\\n\t\t\tWHERE permission_combination_id IN (\" . $this->db->quote($permissionCombinationIds) . \")\\n\t\t\t\tAND content_type = ?\\n\t\t\t\tAND content_id = ?\\n\t\t\", [$contentType, $contentId]);\\n\\n\t\tforeach ($permsResult AS $permissionCombinationId => $cache)\\n\t\t{\\n\t\t\t$cache = $this->decodePermissionCache($cache);"},{"path":"/var/www/pvepro/src/XF/Repository/PermissionCombinationRepository.php","start":76,"sha256":"429db2743e8e412951196b3a59de919f708ef848a46e83e96aaf3f2ef619eae0","text":"\t\t}\\n\\n\t\treturn $combination;\\n\t}\\n\\n\tpublic function updatePermissionCombinationForUser(User $user, $buildOnCreate = true)\\n\t{\\n\t\t$combination = $this->getPermissionCombinationForUser($user);\\n\t\tif (!$combination->exists())\\n\t\t{\\n\t\t\t$combination->setOption('rebuild_permission_cache', $buildOnCreate);\\n\t\t\t$combination->save();\\n\t\t}\\n\\n\t\tif ($combination->permission_combination_id != $user->permission_combination_id)\\n\t\t{\\n\t\t\t$user->fastUpdate('permission_combination_id', $combination->permission_combination_id);\\n\t\t}\\n\\n\t\treturn $combination;\\n\t}\\n\\n\tpublic function hasUserSpecificPermissions($userId)"},{"path":"/var/www/pvepro/src/XF/Repository/PermissionCombinationRepository.php","start":81,"sha256":"4fec4370798eb11f995ade7a704717b70f93aa54d03d0c3bc04f3940a6e36201","text":"\tpublic function updatePermissionCombinationForUser(User $user, $buildOnCreate = true)\\n\t{\\n\t\t$combination = $this->getPermissionCombinationForUser($user);\\n\t\tif (!$combination->exists())\\n\t\t{\\n\t\t\t$combination->setOption('rebuild_permission_cache', $buildOnCreate);\\n\t\t\t$combination->save();\\n\t\t}\\n\\n\t\tif ($combination->permission_combination_id != $user->permission_combination_id)\\n\t\t{\\n\t\t\t$user->fastUpdate('permission_combination_id', $combination->permission_combination_id);\\n\t\t}\\n\\n\t\treturn $combination;\\n\t}\\n\\n\tpublic function hasUserSpecificPermissions($userId)\\n\t{\\n\t\tif (!$userId)\\n\t\t{\\n\t\t\treturn false;\\n\t\t}"},{"path":"/var/www/pvepro/src/XF/Repository/PermissionCombinationRepository.php","start":107,"sha256":"686e2f2e9b0fec141232647ac675ef17b4f52e83651cdecb0b33e1bbfe4e615c","text":"\t\t\tUNION ALL\\n\t\t\t(SELECT 1 FROM xf_permission_entry_content WHERE user_group_id = 0 AND user_id = ? LIMIT 1)\\n\t\t\", [$userId, $userId]);\\n\t}\\n\\n\tpublic function getPermissionCombinationsForUserGroup($userGroupId)\\n\t{\\n\t\t$groupCombinations = $this->finder(PermissionCombinationUserGroupFinder::class)\\n\t\t\t->where('user_group_id', $userGroupId)\\n\t\t\t->with('PermissionCombination', true)\\n\t\t\t->fetch();\\n\\n\t\treturn $groupCombinations->pluck(function ($groupCombination)\\n\t\t{\\n\t\t\treturn [$groupCombination->permission_combination_id, $groupCombination->PermissionCombination];\\n\t\t});\\n\t}\\n\\n\tpublic function deleteUnusedPermissionCombinations()\\n\t{\\n\t\t$db = $this->db();\\n\\n\t\t$preRegActionCondition = '';"}] +PERMISSION_WRITE_FLOW_HITS=[{"path":"/var/www/pvepro/src/XF/Entity/PermissionEntryContent.php","line":17,"text":"* @property string $permission_value"},{"path":"/var/www/pvepro/src/XF/Entity/PermissionEntryContent.php","line":18,"text":"* @property int $permission_value_int"},{"path":"/var/www/pvepro/src/XF/Entity/PermissionEntryContent.php","line":20,"text":"class PermissionEntryContent extends Entity"},{"path":"/var/www/pvepro/src/XF/Entity/PermissionEntryContent.php","line":28,"text":"$structure->shortName = 'XF:PermissionEntryContent';"},{"path":"/var/www/pvepro/src/XF/Entity/PermissionEntryContent.php","line":38,"text":"'permission_value' => ['type' => self::STR, 'required' => true,"},{"path":"/var/www/pvepro/src/XF/Entity/PermissionEntryContent.php","line":41,"text":"'permission_value_int' => ['type' => self::INT],"},{"path":"/var/www/pvepro/src/XF/Entity/PermissionEntry.php","line":15,"text":"* @property string $permission_value"},{"path":"/var/www/pvepro/src/XF/Entity/PermissionEntry.php","line":16,"text":"* @property int $permission_value_int"},{"path":"/var/www/pvepro/src/XF/Entity/PermissionEntry.php","line":18,"text":"class PermissionEntry extends Entity"},{"path":"/var/www/pvepro/src/XF/Entity/PermissionEntry.php","line":26,"text":"$structure->shortName = 'XF:PermissionEntry';"},{"path":"/var/www/pvepro/src/XF/Entity/PermissionEntry.php","line":34,"text":"'permission_value' => ['type' => self::STR, 'required' => true,"},{"path":"/var/www/pvepro/src/XF/Entity/PermissionEntry.php","line":37,"text":"'permission_value_int' => ['type' => self::INT, 'default' => 0],"},{"path":"/var/www/pvepro/src/XF/Entity/User.php","line":1285,"text":"\\XF::permissionCache()->cacheContentPermsByIds($this->permission_combination_id, 'node', $nodeIds);"},{"path":"/var/www/pvepro/src/XF/Entity/User.php","line":1289,"text":"\\XF::permissionCache()->cacheAllContentPerms($this->permission_combination_id, 'node');"},{"path":"/var/www/pvepro/src/XF/Admin/Controller/UserGroupController.php","line":8,"text":"use XF\\Repository\\PermissionEntryRepository;"},{"path":"/var/www/pvepro/src/XF/Admin/Controller/UserGroupController.php","line":50,"text":"$entryRepo = $this->repository(PermissionEntryRepository::class);"},{"path":"/var/www/pvepro/src/XF/Admin/Controller/NodeController.php","line":13,"text":"use XF\\Repository\\PermissionEntryRepository;"},{"path":"/var/www/pvepro/src/XF/Admin/Controller/NodeController.php","line":34,"text":"$customPermissions = $this->repository(PermissionEntryRepository::class)->getContentWithCustomPermissions('node');"},{"path":"/var/www/pvepro/src/XF/Admin/Controller/PermissionController.php","line":12,"text":"use XF\\Repository\\PermissionEntryRepository;"},{"path":"/var/www/pvepro/src/XF/Admin/Controller/PermissionController.php","line":170,"text":"$customPermissions = $this->repository(PermissionEntryRepository::class)->getContentWithCustomPermissions('node');"},{"path":"/var/www/pvepro/src/XF/Admin/Controller/PermissionController.php","line":283,"text":"* @return PermissionEntryRepository"},{"path":"/var/www/pvepro/src/XF/Admin/Controller/PermissionController.php","line":287,"text":"return $this->repository(PermissionEntryRepository::class);"},{"path":"/var/www/pvepro/src/XF/Admin/Controller/ToolsController.php","line":16,"text":"use XF\\Repository\\PermissionEntryRepository;"},{"path":"/var/www/pvepro/src/XF/Admin/Controller/ToolsController.php","line":233,"text":"$permEntryRepo = $this->repository(PermissionEntryRepository::class);"},{"path":"/var/www/pvepro/src/XF/Admin/Controller/ModeratorController.php","line":13,"text":"use XF\\Repository\\PermissionEntryRepository;"},{"path":"/var/www/pvepro/src/XF/Admin/Controller/ModeratorController.php","line":78,"text":"$permissionEntryRepo = $this->repository(PermissionEntryRepository::class);"},{"path":"/var/www/pvepro/src/XF/Service/UpdatePermissionsService.php","line":6,"text":"use XF\\Entity\\PermissionEntry;"},{"path":"/var/www/pvepro/src/XF/Service/UpdatePermissionsService.php","line":7,"text":"use XF\\Entity\\PermissionEntryContent;"},{"path":"/var/www/pvepro/src/XF/Service/UpdatePermissionsService.php","line":10,"text":"use XF\\Finder\\PermissionEntryContentFinder;"},{"path":"/var/www/pvepro/src/XF/Service/UpdatePermissionsService.php","line":11,"text":"use XF\\Finder\\PermissionEntryFinder;"},{"path":"/var/www/pvepro/src/XF/Service/UpdatePermissionsService.php","line":137,"text":"$finder = $this->finder(PermissionEntryContentFinder::class);"},{"path":"/var/www/pvepro/src/XF/Service/UpdatePermissionsService.php","line":145,"text":"$finder = $this->finder(PermissionEntryFinder::class);"},{"path":"/var/www/pvepro/src/XF/Service/UpdatePermissionsService.php","line":177,"text":"$entry = $this->em()->create(PermissionEntryContent::class);"},{"path":"/var/www/pvepro/src/XF/Service/UpdatePermissionsService.php","line":183,"text":"$entry = $this->em()->create(PermissionEntry::class);"},{"path":"/var/www/pvepro/src/XF/Service/UpdatePermissionsService.php","line":195,"text":"$entry->permission_value = 'use_int';"},{"path":"/var/www/pvepro/src/XF/Service/UpdatePermissionsService.php","line":196,"text":"$entry->permission_value_int = intval($value);"},{"path":"/var/www/pvepro/src/XF/Service/UpdatePermissionsService.php","line":200,"text":"$entry->permission_value = $value;"},{"path":"/var/www/pvepro/src/XF/Service/UpdatePermissionsService.php","line":201,"text":"$entry->permission_value_int = 0;"}] +REFLECTION_RC=0 +REFLECTION_STDERR_SHA256=e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 +REFLECTION_OUTPUT_BEGIN +CLASS_XF_PermissionCache_EXISTS=true\nCTOR_XF_PermissionCache|required=1|total=1\nMETHOD_XF_PermissionCache=getPermissionSet|static=false|required=1|total=1\nMETHOD_XF_PermissionCache=cacheAllContentPerms|static=false|required=2|total=2\nMETHOD_XF_PermissionCache=cacheContentPermsByIds|static=false|required=3|total=3\nMETHOD_XF_PermissionCache=cacheMultipleContentPermsForContent|static=false|required=3|total=3\nCLASS_XF_Repository_PermissionCombination_EXISTS=true\nCTOR_XF_Repository_PermissionCombination|required=2|total=2\nMETHOD_XF_Repository_PermissionCombination=getPermissionCombinationForUser|static=false|required=1|total=2\nMETHOD_XF_Repository_PermissionCombination=getPermissionCombinationOrPlaceholder|static=false|required=1|total=2\nMETHOD_XF_Repository_PermissionCombination=updatePermissionCombinationForUser|static=false|required=1|total=2\nMETHOD_XF_Repository_PermissionCombination=hasUserSpecificPermissions|static=false|required=1|total=1\nMETHOD_XF_Repository_PermissionCombination=getPermissionCombinationsForUserGroup|static=false|required=1|total=1\nMETHOD_XF_Repository_PermissionCombination=deleteUnusedPermissionCombinations|static=false|required=0|total=0\nCLASS_XF_Repository_Permission_EXISTS=true\nCTOR_XF_Repository_Permission|required=2|total=2\nMETHOD_XF_Repository_Permission=getGlobalPermissionListData|static=false|required=0|total=0\nMETHOD_XF_Repository_Permission=getContentPermissionListData|static=false|required=1|total=1\nMETHOD_XF_Repository_Permission=findPermissionsForList|static=false|required=0|total=0\nMETHOD_XF_Repository_Permission=getPermissionsGrouped|static=false|required=0|total=0\nMETHOD_XF_Repository_Permission=getPermissionHandlers|static=false|required=0|total=0\nMETHOD_XF_Repository_Permission=getPermissionHandler|static=false|required=1|total=1\nCLASS_XF_Entity_PermissionEntry_EXISTS=true\nCTOR_XF_Entity_PermissionEntry|required=2|total=4\nMETHOD_XF_Entity_PermissionEntry=setAsSaved|static=false|required=2|total=2\nMETHOD_XF_Entity_PermissionEntry=clearCache|static=false|required=1|total=1\nMETHOD_XF_Entity_PermissionEntry=setOption|static=false|required=2|total=2\nMETHOD_XF_Entity_PermissionEntry=setOptions|static=false|required=1|total=1\nMETHOD_XF_Entity_PermissionEntry=resetOption|static=false|required=1|total=1\nMETHOD_XF_Entity_PermissionEntry=whenSaveable|static=false|required=1|total=1\nMETHOD_XF_Entity_PermissionEntry=addCascadedSave|static=false|required=1|total=1\nMETHOD_XF_Entity_PermissionEntry=removeCascadedSave|static=false|required=1|total=1\nMETHOD_XF_Entity_PermissionEntry=save|static=false|required=0|total=2\nMETHOD_XF_Entity_PermissionEntry=saveIfChanged|static=false|required=0|total=3\nMETHOD_XF_Entity_PermissionEntry=preSave|static=false|required=0|total=0\nCLASS_XF_Entity_PermissionEntryContent_EXISTS=true\nCTOR_XF_Entity_PermissionEntryContent|required=2|total=4\nMETHOD_XF_Entity_PermissionEntryContent=setAsSaved|static=false|required=2|total=2\nMETHOD_XF_Entity_PermissionEntryContent=clearCache|static=false|required=1|total=1\nMETHOD_XF_Entity_PermissionEntryContent=setOption|static=false|required=2|total=2\nMETHOD_XF_Entity_PermissionEntryContent=setOptions|static=false|required=1|total=1\nMETHOD_XF_Entity_PermissionEntryContent=resetOption|static=false|required=1|total=1\nMETHOD_XF_Entity_PermissionEntryContent=whenSaveable|static=false|required=1|total=1\nMETHOD_XF_Entity_PermissionEntryContent=addCascadedSave|static=false|required=1|total=1\nMETHOD_XF_Entity_PermissionEntryContent=removeCascadedSave|static=false|required=1|total=1\nMETHOD_XF_Entity_PermissionEntryContent=save|static=false|required=0|total=2\nMETHOD_XF_Entity_PermissionEntryContent=saveIfChanged|static=false|required=0|total=3\nMETHOD_XF_Entity_PermissionEntryContent=preSave|static=false|required=0|total=0\n +REFLECTION_OUTPUT_END +PERMISSION_STATE_PROBE_OK=true +TASK_COMPLETE=true +TASK_RESULT=PASS_PVEPRO_PERMISSION_PROBE_RCA +NO_MUTATION=true\nGUEST_OUTPUT_END +PERMISSION_PROBE_RCA_CLEAN=true +TASK_COMPLETE=true +TASK_RESULT=PASS_PVEPRO_PERMISSION_PROBE_RCA +NO_MUTATION=true +HOMELAB_RESULT_CONTRACT={"version":1,"command_id":"SUPPORT-260920-PVEPRO-PERMISSION-PROBE-RCA-READONLY-716R5","status":"OK","changes_made":false,"rollback_started":false,"rollback_restored":null} + +OUTPUT_END +CHAT_OUTPUT_END diff --git a/runtime/latest.json b/runtime/latest.json index 7703c1b7..ceda7be8 100644 --- a/runtime/latest.json +++ b/runtime/latest.json @@ -1 +1,38 @@ -{"schema_version":1,"channel":"homelab-runtime","command_id":"CONTEXT-AUTO-20260919T231701Z","status":"OK","rc":0,"host":"pve01","mode":"read-only","component":"cluster-context","started_at_utc":"2026-09-19T23:17:01Z","finished_at_utc":"2026-09-19T23:17:02Z","reference_register_checked":true,"reference_sha256":"5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66","error_register_checked":true,"error_register_sha256":"3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0","changes_made":false,"sanitized":true,"secrets_included":false,"private_addresses_included":false,"output":"AUTOMATIC_CLUSTER_CONTEXT_REFRESH=OK"} +{ + "schema_version": 1, + "channel": "homelab-runtime", + "command_id": "SUPPORT-260920-PVEPRO-PERMISSION-PROBE-RCA-READONLY-716R5", + "status": "OK", + "rc": 0, + "host": "pve01", + "mode": "read-only", + "component": "pvepro-permission-probe-rca-readonly", + "started_at_utc": "2026-09-19T23:18:35Z", + "finished_at_utc": "2026-09-19T23:18:36Z", + "reference_register_checked": true, + "reference_sha256": "5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66", + "error_register_checked": true, + "error_register_sha256": "3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0", + "command_sha256": "ae1b7ad338972bbb7f0ac123023385e8bc3ade9b9b2ee2bc38dc1ac294069c5f", + "duplicate_failed_command_blocked": false, + "block_reason": null, + "execution_started": true, + "change_declared": false, + "result_contract_valid": true, + "result_contract_status": null, + "result_contract_error": null, + "command_rc": 0, + "changes_made": false, + "rollback_started": false, + "rollback_restored": null, + "mutation_outcome": "NO_MUTATION", + "sanitized": true, + "secrets_included": false, + "private_addresses_included": false, + "raw_evidence_retained_locally": true, + "raw_evidence_sha256": "197b2e2b0efef65e993c880421caec4aafa9a68efc30bd3e5c72526ae81910af", + "sanitized_output_sha256": "197b2e2b0efef65e993c880421caec4aafa9a68efc30bd3e5c72526ae81910af", + "output_truncated_in_json": false, + "full_sanitized_output_url": "https://git.gram1.ru/.well-known/homelab-runtime/latest.txt", + "output": "GUEST_QGA_TRANSPORT_RC=0\nGUEST_EXITCODE=0\nTRANSPORT_STDERR_SHA256=e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\nGUEST_OUTPUT_BEGIN\\nXF_SHA=d0c10d91d743e0a541d9a1b201080491dae0a8b1757866f113ef707b83403219\nSERVER_PHP_LINT_STATE_RC=0\nSERVER_PHP_LINT_STATE_STDERR_SHA256=e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\nSERVER_PHP_LINT_REFLECT_RC=0\nSERVER_PHP_LINT_REFLECT_STDERR_SHA256=e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\nPERMISSION_STATE_RC=0\nPERMISSION_STATE_STDERR_SHA256=e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\nPERMISSION_STATE_STDERR_BYTES=0\nPERMISSION_STATE_OUTPUT_BEGIN\nVISITOR_USER_ID=0\\nVISITOR_PERMISSION_COMBINATION_ID=1\\nVISITOR_HAS_general_view=true\\nVISITOR_HAS_general_viewProfile=true\\nVISITOR_HAS_forum_viewOthers=true\\nUSER_GROUPS=[{\"id\":1,\"title_sha256\":\"2ed52ce2083ecf6e72e527507e999a09018abef54808d1e9b7f98731406607ce\"},{\"id\":2,\"title_sha256\":\"2351ee992626bafb88f7985721ec0f56c7d2e242f753e542dee015f178fffea6\"},{\"id\":3,\"title_sha256\":\"35388e9f363dd162fc578afbef7005604b46f469b538cbf88f576aeec3f00299\"},{\"id\":4,\"title_sha256\":\"34d5166b62f8697fee6a7d193d637b1502aefa8f8c4a57f49839d9eda6799b32\"}]\\nGROUP_1_GLOBAL_PERMISSION_ROWS=[{\"permission_group_id\":\"forum\",\"permission_id\":\"viewContent\",\"permission_value\":\"allow\",\"permission_value_int\":0},{\"permission_group_id\":\"forum\",\"permission_id\":\"viewOthers\",\"permission_value\":\"allow\",\"permission_value_int\":0},{\"permission_group_id\":\"general\",\"permission_id\":\"editProfile\",\"permission_value\":\"allow\",\"permission_value_int\":0},{\"permission_group_id\":\"general\",\"permission_id\":\"search\",\"permission_value\":\"allow\",\"permission_value_int\":0},{\"permission_group_id\":\"general\",\"permission_id\":\"submitWithoutApproval\",\"permission_value\":\"allow\",\"permission_value_int\":0},{\"permission_group_id\":\"general\",\"permission_id\":\"useContactForm\",\"permission_value\":\"allow\",\"permission_value_int\":0},{\"permission_group_id\":\"general\",\"permission_id\":\"usePush\",\"permission_value\":\"allow\",\"permission_value_int\":0},{\"permission_group_id\":\"general\",\"permission_id\":\"view\",\"permission_value\":\"allow\",\"permission_value_int\":0},{\"permission_group_id\":\"general\",\"permission_id\":\"viewMemberList\",\"permission_value\":\"allow\",\"permission_value_int\":0},{\"permission_group_id\":\"general\",\"permission_id\":\"viewNode\",\"permission_value\":\"allow\",\"permission_value_int\":0},{\"permission_group_id\":\"general\",\"permission_id\":\"viewProfile\",\"permission_value\":\"allow\",\"permission_value_int\":0},{\"permission_group_id\":\"profilePost\",\"permission_id\":\"view\",\"permission_value\":\"allow\",\"permission_value_int\":0}]\\nGROUP_2_GLOBAL_PERMISSION_ROWS=[{\"permission_group_id\":\"bookmark\",\"permission_id\":\"view\",\"permission_value\":\"allow\",\"permission_value_int\":0},{\"permission_group_id\":\"forum\",\"permission_id\":\"contentVote\",\"permission_value\":\"allow\",\"permission_value_int\":0},{\"permission_group_id\":\"forum\",\"permission_id\":\"deleteOwnPost\",\"permission_value\":\"allow\",\"permission_value_int\":0},{\"permission_group_id\":\"forum\",\"permission_id\":\"editOwnPost\",\"permission_value\":\"allow\",\"permission_value_int\":0},{\"permission_group_id\":\"forum\",\"permission_id\":\"editOwnPostTimeLimit\",\"permission_value\":\"use_int\",\"permission_value_int\":-1},{\"permission_group_id\":\"forum\",\"permission_id\":\"editOwnThreadTitle\",\"permission_value\":\"allow\",\"permission_value_int\":0},{\"permission_group_id\":\"forum\",\"permission_id\":\"markSolution\",\"permission_value\":\"allow\",\"permission_value_int\":0},{\"permission_group_id\":\"forum\",\"permission_id\":\"postReply\",\"permission_value\":\"allow\",\"permission_value_int\":0},{\"permission_group_id\":\"forum\",\"permission_id\":\"postThread\",\"permission_value\":\"allow\",\"permission_value_int\":0},{\"permission_group_id\":\"forum\",\"permission_id\":\"react\",\"permission_value\":\"allow\",\"permission_value_int\":0},{\"permission_group_id\":\"forum\",\"permission_id\":\"tagOwnThread\",\"permission_value\":\"allow\",\"permission_value_int\":0},{\"permission_group_id\":\"forum\",\"permission_id\":\"uploadAttachment\",\"permission_value\":\"allow\",\"permission_value_int\":0},{\"permission_group_id\":\"forum\",\"permission_id\":\"uploadVideo\",\"permission_value\":\"allow\",\"permission_value_int\":0},{\"permission_group_id\":\"forum\",\"permission_id\":\"viewAttachment\",\"permission_value\":\"allow\",\"permission_value_int\":0},{\"permission_group_id\":\"forum\",\"permission_id\":\"viewContent\",\"permission_value\":\"allow\",\"permission_value_int\":0},{\"permission_group_id\":\"forum\",\"permission_id\":\"viewOthers\",\"permission_value\":\"allow\",\"permission_value_int\":0},{\"permission_group_id\":\"forum\",\"permission_id\":\"votePoll\",\"permission_value\":\"allow\",\"permission_value_int\":0},{\"permission_group_id\":\"general\",\"permission_id\":\"changeUsername\",\"permission_value\":\"allow\",\"permission_value_int\":0},{\"permission_group_id\":\"general\",\"permission_id\":\"createTag\",\"permission_value\":\"allow\",\"permission_value_int\":0},{\"permission_group_id\":\"general\",\"permission_id\":\"editProfile\",\"permission_value\":\"allow\",\"permission_value_int\":0},{\"permission_group_id\":\"general\",\"permission_id\":\"editSignature\",\"permission_value\":\"allow\",\"permission_value_int\":0},{\"permission_group_id\":\"general\",\"permission_id\":\"maxMentionedUsers\",\"permission_value\":\"use_int\",\"permission_value_int\":5},{\"permission_group_id\":\"general\",\"permission_id\":\"report\",\"permission_value\":\"allow\",\"permission_value_int\":0},{\"permission_group_id\":\"general\",\"permission_id\":\"search\",\"permission_value\":\"allow\",\"permission_value_int\":0},{\"permission_group_id\":\"general\",\"permission_id\":\"submitWithoutApproval\",\"permission_value\":\"allow\",\"permission_value_int\":0},{\"permission_group_id\":\"general\",\"permission_id\":\"useContactForm\",\"permission_value\":\"allow\",\"permission_value_int\":0},{\"permission_group_id\":\"general\",\"permission_id\":\"view\",\"permission_value\":\"allow\",\"permission_value_int\":0},{\"permission_group_id\":\"general\",\"permission_id\":\"viewMemberList\",\"permission_value\":\"allow\",\"permission_value_int\":0},{\"permission_group_id\":\"general\",\"permission_id\":\"viewNode\",\"permission_value\":\"allow\",\"permission_value_int\":0},{\"permission_group_id\":\"general\",\"permission_id\":\"viewProfile\",\"permission_value\":\"allow\",\"permission_value_int\":0},{\"permission_group_id\":\"profilePost\",\"permission_id\":\"view\",\"permission_value\":\"allow\",\"permission_value_int\":0}]\\nNODE_1_CONTENT_PERMISSION_ROWS=[]\\nNODE_2_CONTENT_PERMISSION_ROWS=[]\\nNODE_3_CONTENT_PERMISSION_ROWS=[]\\nNODE_8_CONTENT_PERMISSION_ROWS=[]\\nNODE_9_CONTENT_PERMISSION_ROWS=[]\\nNODE_11_CONTENT_PERMISSION_ROWS=[]\\nNODE_17_CONTENT_PERMISSION_ROWS=[]\\nNODE_18_CONTENT_PERMISSION_ROWS=[]\\nFORUM_2_EXISTS=true\\nFORUM_2_CAN_VIEW=true\\nFORUM_2_NODE_CACHE_SELECTED={\"type\":\"NULL\"}\\nFORUM_2_NODE_CACHE_SHA256=28859e345f55ce45426724100617830af221bdf3e01f4333ee34ba58d2df4429\\nFORUM_8_EXISTS=true\\nFORUM_8_CAN_VIEW=false\\nFORUM_8_NODE_CACHE_SELECTED={\"type\":\"NULL\"}\\nFORUM_8_NODE_CACHE_SHA256=28859e345f55ce45426724100617830af221bdf3e01f4333ee34ba58d2df4429\\nFORUM_9_EXISTS=true\\nFORUM_9_CAN_VIEW=false\\nFORUM_9_NODE_CACHE_SELECTED={\"type\":\"NULL\"}\\nFORUM_9_NODE_CACHE_SHA256=28859e345f55ce45426724100617830af221bdf3e01f4333ee34ba58d2df4429\\nFORUM_11_EXISTS=true\\nFORUM_11_CAN_VIEW=false\\nFORUM_11_NODE_CACHE_SELECTED={\"type\":\"NULL\"}\\nFORUM_11_NODE_CACHE_SHA256=28859e345f55ce45426724100617830af221bdf3e01f4333ee34ba58d2df4429\\nFORUM_17_EXISTS=true\\nFORUM_17_CAN_VIEW=false\\nFORUM_17_NODE_CACHE_SELECTED={\"type\":\"NULL\"}\\nFORUM_17_NODE_CACHE_SHA256=28859e345f55ce45426724100617830af221bdf3e01f4333ee34ba58d2df4429\\nFORUM_18_EXISTS=true\\nFORUM_18_CAN_VIEW=false\\nFORUM_18_NODE_CACHE_SELECTED={\"type\":\"NULL\"}\\nFORUM_18_NODE_CACHE_SHA256=28859e345f55ce45426724100617830af221bdf3e01f4333ee34ba58d2df4429\\nPERMISSION_COMBINATIONS=[{\"permission_combination_id\":1,\"user_id\":0,\"user_group_list\":\"1\"},{\"permission_combination_id\":3,\"user_id\":0,\"user_group_list\":\"2\"},{\"permission_combination_id\":4,\"user_id\":0,\"user_group_list\":\"2,3\"},{\"permission_combination_id\":5,\"user_id\":0,\"user_group_list\":\"2,3,4\"},{\"permission_combination_id\":6,\"user_id\":1,\"user_group_list\":\"2,3,4\"}]\\nPERMISSION_CACHE_CONTENT_COLUMNS=[\"permission_combination_id\",\"content_type\",\"content_id\",\"cache_value\"]\\nNODE_1_CACHE_ROWS=[{\"permission_combination_id\":1,\"content_type\":\"node\",\"content_id\":1,\"cache_sha256\":\"4bec2c76ac9f130abb1f5ea2adb6c09fad83598b881cf874e4bcd2fa36d372fe\"},{\"permission_combination_id\":3,\"content_type\":\"node\",\"content_id\":1,\"cache_sha256\":\"4bec2c76ac9f130abb1f5ea2adb6c09fad83598b881cf874e4bcd2fa36d372fe\"},{\"permission_combination_id\":4,\"content_type\":\"node\",\"content_id\":1,\"cache_sha256\":\"4bec2c76ac9f130abb1f5ea2adb6c09fad83598b881cf874e4bcd2fa36d372fe\"},{\"permission_combination_id\":5,\"content_type\":\"node\",\"content_id\":1,\"cache_sha256\":\"4bec2c76ac9f130abb1f5ea2adb6c09fad83598b881cf874e4bcd2fa36d372fe\"},{\"permission_combination_id\":6,\"content_type\":\"node\",\"content_id\":1,\"cache_sha256\":\"4bec2c76ac9f130abb1f5ea2adb6c09fad83598b881cf874e4bcd2fa36d372fe\"}]\\nNODE_2_CACHE_ROWS=[{\"permission_combination_id\":1,\"content_type\":\"node\",\"content_id\":2,\"cache_sha256\":\"1db2d92b6683fab36abb410478ea7864828287b034c4a1220b511dec129cd9b1\"},{\"permission_combination_id\":3,\"content_type\":\"node\",\"content_id\":2,\"cache_sha256\":\"aae61963956180efdfaeb74a16f86df49e50f4c4f60a61f58352dc76bf8550f6\"},{\"permission_combination_id\":4,\"content_type\":\"node\",\"content_id\":2,\"cache_sha256\":\"06e48530a9d18697dcb1ed6455218d7b6884507bbfff9a88eaf777b19ccaa72e\"},{\"permission_combination_id\":5,\"content_type\":\"node\",\"content_id\":2,\"cache_sha256\":\"06e48530a9d18697dcb1ed6455218d7b6884507bbfff9a88eaf777b19ccaa72e\"},{\"permission_combination_id\":6,\"content_type\":\"node\",\"content_id\":2,\"cache_sha256\":\"130f7985f1688afb3ec90c81573e91084152e2d0a53162565f013adcd577a299\"}]\\nNODE_3_CACHE_ROWS=[]\\nNODE_8_CACHE_ROWS=[]\\nNODE_9_CACHE_ROWS=[]\\nNODE_11_CACHE_ROWS=[]\\nNODE_17_CACHE_ROWS=[]\\nNODE_18_CACHE_ROWS=[]\\nNO_MUTATION=true\\n\nPERMISSION_STATE_OUTPUT_END\nPERMISSION_SOURCE_SNIPPETS=[{\"path\":\"/var/www/pvepro/src/XF/Entity/Forum.php\",\"start\":96,\"sha256\":\"ddb39a34ff5fd30c660b518f4a45c7fadf04122be5d13f2280516f23fe8bbf1e\",\"text\":\"\\tpublic function canCreatePoll(&$error = null)\\\\n\\t{\\\\n\\t\\treturn $this->TypeHandler->isThreadTypeCreatable('poll', $this);\\\\n\\t}\\\\n\\\\n\\tpublic function canViewThreadContent(): bool\\\\n\\t{\\\\n\\t\\treturn \\\\XF::visitor()->hasNodePermission($this->node_id, 'viewContent');\\\\n\\t}\\\\n\\\\n\\tpublic function canViewDeletedThreads()\\\\n\\t{\\\\n\\t\\treturn \\\\XF::visitor()->hasNodePermission($this->node_id, 'viewDeleted');\\\\n\\t}\\\\n\\\\n\\tpublic function canViewModeratedThreads()\\\\n\\t{\\\\n\\t\\treturn \\\\XF::visitor()->hasNodePermission($this->node_id, 'viewModerated');\\\\n\\t}\\\\n\\\\n\\tpublic function canUploadAndManageAttachments()\\\\n\\t{\\\\n\\t\\t$visitor = \\\\XF::visitor();\"},{\"path\":\"/var/www/pvepro/src/XF/Entity/Forum.php\",\"start\":101,\"sha256\":\"3dc2b8ff5c5ea7bd3c4822e6e619962188500f72cce1c08290d0e251a8a69b09\",\"text\":\"\\tpublic function canViewThreadContent(): bool\\\\n\\t{\\\\n\\t\\treturn \\\\XF::visitor()->hasNodePermission($this->node_id, 'viewContent');\\\\n\\t}\\\\n\\\\n\\tpublic function canViewDeletedThreads()\\\\n\\t{\\\\n\\t\\treturn \\\\XF::visitor()->hasNodePermission($this->node_id, 'viewDeleted');\\\\n\\t}\\\\n\\\\n\\tpublic function canViewModeratedThreads()\\\\n\\t{\\\\n\\t\\treturn \\\\XF::visitor()->hasNodePermission($this->node_id, 'viewModerated');\\\\n\\t}\\\\n\\\\n\\tpublic function canUploadAndManageAttachments()\\\\n\\t{\\\\n\\t\\t$visitor = \\\\XF::visitor();\\\\n\\\\n\\t\\treturn ($visitor->user_id && $visitor->hasNodePermission($this->node_id, 'uploadAttachment'));\\\\n\\t}\\\\n\\\\n\\tpublic function canUploadVideos()\"},{\"path\":\"/var/www/pvepro/src/XF/Entity/Forum.php\",\"start\":106,\"sha256\":\"76a6149417b8ae3acf5b3fb8aa8460374e307213d5aee0cf19b1bbfc05f70bdf\",\"text\":\"\\tpublic function canViewDeletedThreads()\\\\n\\t{\\\\n\\t\\treturn \\\\XF::visitor()->hasNodePermission($this->node_id, 'viewDeleted');\\\\n\\t}\\\\n\\\\n\\tpublic function canViewModeratedThreads()\\\\n\\t{\\\\n\\t\\treturn \\\\XF::visitor()->hasNodePermission($this->node_id, 'viewModerated');\\\\n\\t}\\\\n\\\\n\\tpublic function canUploadAndManageAttachments()\\\\n\\t{\\\\n\\t\\t$visitor = \\\\XF::visitor();\\\\n\\\\n\\t\\treturn ($visitor->user_id && $visitor->hasNodePermission($this->node_id, 'uploadAttachment'));\\\\n\\t}\\\\n\\\\n\\tpublic function canUploadVideos()\\\\n\\t{\\\\n\\t\\t$options = $this->app()->options();\\\\n\\\\n\\t\\tif (empty($options->allowVideoUploads['enabled']))\\\\n\\t\\t{\"},{\"path\":\"/var/www/pvepro/src/XF/Entity/Forum.php\",\"start\":439,\"sha256\":\"246fbbf565d9c125c32fe9a72b0057837224d11ce188cedcb3ff224474a7b6c7\",\"text\":\"\\t\\treturn (!$prefix || isset($this->prefix_cache[$prefix]));\\\\n\\t}\\\\n\\\\n\\tpublic function getNodeListExtras()\\\\n\\t{\\\\n\\t\\tif (\\\\XF::visitor()->hasNodePermission($this->node_id, 'viewOthers'))\\\\n\\t\\t{\\\\n\\t\\t\\t$output = [\\\\n\\t\\t\\t\\t'discussion_count' => $this->discussion_count,\\\\n\\t\\t\\t\\t'message_count' => $this->message_count,\\\\n\\t\\t\\t\\t'hasNew' => $this->isUnread(),\\\\n\\t\\t\\t];\\\\n\\\\n\\t\\t\\tif ($this->last_post_date)\\\\n\\t\\t\\t{\\\\n\\t\\t\\t\\t$output['last_post_id'] = $this->last_post_id;\\\\n\\t\\t\\t\\t$output['last_post_date'] = $this->last_post_date;\\\\n\\t\\t\\t\\t$output['last_post_user_id'] = $this->last_post_user_id;\\\\n\\t\\t\\t\\t$output['last_post_username'] = $this->last_post_username;\\\\n\\t\\t\\t\\t$output['last_thread_id'] = $this->last_thread_id;\\\\n\\t\\t\\t\\t$output['last_thread_title'] = $this->app()->stringFormatter()->censorText($this->last_thread_title);\\\\n\\t\\t\\t\\t$output['last_thread_prefix_id'] = $this->last_thread_prefix_id;\\\\n\\t\\t\\t\\t$output['LastPostUser'] = $this->LastPostUser;\"},{\"path\":\"/var/www/pvepro/src/XF/Entity/Forum.php\",\"start\":681,\"sha256\":\"61255e3d5c3e21701cd1dd66434d50648b6386391b9ccd3f3a7844f8c6276653\",\"text\":\"\\\\n\\tpublic function getNodeTypeApiData($verbosity = self::VERBOSITY_NORMAL, array $options = [])\\\\n\\t{\\\\n\\t\\t$result = parent::getNodeTypeApiData();\\\\n\\\\n\\t\\tif (\\\\XF::visitor()->hasNodePermission($this->node_id, 'viewOthers'))\\\\n\\t\\t{\\\\n\\t\\t\\t$result->includeExtra([\\\\n\\t\\t\\t\\t'is_unread' => $this->isUnread(),\\\\n\\t\\t\\t\\t'discussion_count' => $this->discussion_count,\\\\n\\t\\t\\t\\t'message_count' => $this->message_count,\\\\n\\t\\t\\t\\t'last_post_id' => $this->last_post_id,\\\\n\\t\\t\\t\\t'last_post_date' => $this->last_post_date,\\\\n\\t\\t\\t\\t'last_post_username' => $this->last_post_username,\\\\n\\t\\t\\t\\t'last_thread_id' => $this->last_thread_id,\\\\n\\t\\t\\t\\t'last_thread_title' => $this->app()->stringFormatter()->censorText($this->last_thread_title),\\\\n\\t\\t\\t\\t'last_thread_prefix_id' => $this->last_thread_prefix_id,\\\\n\\t\\t\\t]);\\\\n\\t\\t}\\\\n\\\\n\\t\\t$this->TypeHandler->addTypeConfigToApiResult($this, $result, $verbosity, $options);\\\\n\\\\n\\t\\tif ($verbosity > self::VERBOSITY_NORMAL)\"},{\"path\":\"/var/www/pvepro/src/XF/Entity/Node.php\",\"start\":45,\"sha256\":\"f529a67e7eea7aeaaa2aa763ca2f0fe6c468844bf966dfcc39b823a912338d0c\",\"text\":\" */\\\\nclass Node extends Entity implements LinkableInterface, ViewableInterface\\\\n{\\\\n\\tuse BookmarkTrait;\\\\n\\\\n\\tpublic function canView(&$error = null)\\\\n\\t{\\\\n\\t\\t/** @var AbstractNode $data */\\\\n\\t\\t$data = $this->Data;\\\\n\\t\\tif (!$data)\\\\n\\t\\t{\\\\n\\t\\t\\treturn false;\\\\n\\t\\t}\\\\n\\\\n\\t\\treturn $data->canView($error);\\\\n\\t}\\\\n\\\\n\\tprotected function canBookmarkContent(&$error = null)\\\\n\\t{\\\\n\\t\\treturn ($this->node_type_id == 'Page' && $this->canView($error));\\\\n\\t}\\\\n\\\\n\\tpublic function isSearchEngineIndexable(): bool\"},{\"path\":\"/var/www/pvepro/src/XF/PermissionCache.php\",\"start\":18,\"sha256\":\"83682b6d6cd774d6b60bfd2d72099c03400cf0a67e071207e00d2ec55704f236\",\"text\":\"\\tpublic function __construct(AbstractAdapter $db)\\\\n\\t{\\\\n\\t\\t$this->db = $db;\\\\n\\t}\\\\n\\\\n\\tpublic function getPermissionSet($permissionCombinationId)\\\\n\\t{\\\\n\\t\\treturn new PermissionSet($this, $permissionCombinationId);\\\\n\\t}\\\\n\\\\n\\tpublic function getGlobalPerms($permissionCombinationId)\\\\n\\t{\\\\n\\t\\t// value will be null if we failed to retrieve the permissions\\\\n\\t\\tif (array_key_exists($permissionCombinationId, $this->globalPerms))\\\\n\\t\\t{\\\\n\\t\\t\\treturn $this->globalPerms[$permissionCombinationId];\\\\n\\t\\t}\\\\n\\\\n\\t\\t$cache = $this->db->fetchOne(\\\"\\\\n\\t\\t\\tSELECT cache_value\\\\n\\t\\t\\tFROM xf_permission_combination\\\\n\\t\\t\\tWHERE permission_combination_id = ?\\\\n\\t\\t\\\", $permissionCombinationId);\"},{\"path\":\"/var/www/pvepro/src/XF/PermissionCache.php\",\"start\":96,\"sha256\":\"9a73f7739703efac4ad1d89125e45a5ba275db71c7b5469935ba84d70a37ba82\",\"text\":\"\\t\\t$this->contentPerms[$permissionCombinationId][$contentType][$contentId] = $cache;\\\\n\\\\n\\t\\treturn $cache;\\\\n\\t}\\\\n\\\\n\\tpublic function cacheAllContentPerms($permissionCombinationId, $contentType)\\\\n\\t{\\\\n\\t\\tif (isset($this->globalCacheRun[$contentType][$permissionCombinationId]))\\\\n\\t\\t{\\\\n\\t\\t\\treturn;\\\\n\\t\\t}\\\\n\\t\\t$this->globalCacheRun[$contentType][$permissionCombinationId] = true;\\\\n\\\\n\\t\\t$permsResult = $this->db->fetchPairs(\\\"\\\\n\\t\\t\\tSELECT content_id, cache_value\\\\n\\t\\t\\tFROM xf_permission_cache_content\\\\n\\t\\t\\tWHERE permission_combination_id = ?\\\\n\\t\\t\\t\\tAND content_type = ?\\\\n\\t\\t\\\", [$permissionCombinationId, $contentType]);\\\\n\\\\n\\t\\tforeach ($permsResult AS $contentId => $cache)\\\\n\\t\\t{\\\\n\\t\\t\\t$cache = $this->decodePermissionCache($cache);\"},{\"path\":\"/var/www/pvepro/src/XF/PermissionCache.php\",\"start\":119,\"sha256\":\"f858e5eeea5f4858afe0028a9755e9152bb9e9dc30e0b71c81f181781e6fa3f4\",\"text\":\"\\\\n\\t\\t\\t$this->contentPerms[$permissionCombinationId][$contentType][$contentId] = $cache;\\\\n\\t\\t}\\\\n\\t}\\\\n\\\\n\\tpublic function cacheContentPermsByIds($permissionCombinationId, $contentType, array $contentIds)\\\\n\\t{\\\\n\\t\\tif (!$contentIds)\\\\n\\t\\t{\\\\n\\t\\t\\treturn;\\\\n\\t\\t}\\\\n\\\\n\\t\\tforeach ($contentIds AS $k => $contentId)\\\\n\\t\\t{\\\\n\\t\\t\\tif (isset($this->contentPerms[$permissionCombinationId][$contentType][$contentId]))\\\\n\\t\\t\\t{\\\\n\\t\\t\\t\\tunset($contentIds[$k]);\\\\n\\t\\t\\t}\\\\n\\t\\t}\\\\n\\t\\tif (!$contentIds)\\\\n\\t\\t{\\\\n\\t\\t\\treturn;\\\\n\\t\\t}\"},{\"path\":\"/var/www/pvepro/src/XF/PermissionCache.php\",\"start\":154,\"sha256\":\"42a826655f3bb839d8dc5040d1e55b4950bb9ac287052234e8a4284165534621\",\"text\":\"\\\\n\\t\\t\\t$this->contentPerms[$permissionCombinationId][$contentType][$contentId] = $cache;\\\\n\\t\\t}\\\\n\\t}\\\\n\\\\n\\tpublic function cacheMultipleContentPermsForContent(array $permissionCombinationIds, $contentType, $contentId)\\\\n\\t{\\\\n\\t\\tif (!$permissionCombinationIds)\\\\n\\t\\t{\\\\n\\t\\t\\treturn;\\\\n\\t\\t}\\\\n\\\\n\\t\\t$permsResult = $this->db->fetchPairs(\\\"\\\\n\\t\\t\\tSELECT permission_combination_id, cache_value\\\\n\\t\\t\\tFROM xf_permission_cache_content\\\\n\\t\\t\\tWHERE permission_combination_id IN (\\\" . $this->db->quote($permissionCombinationIds) . \\\")\\\\n\\t\\t\\t\\tAND content_type = ?\\\\n\\t\\t\\t\\tAND content_id = ?\\\\n\\t\\t\\\", [$contentType, $contentId]);\\\\n\\\\n\\t\\tforeach ($permsResult AS $permissionCombinationId => $cache)\\\\n\\t\\t{\\\\n\\t\\t\\t$cache = $this->decodePermissionCache($cache);\"},{\"path\":\"/var/www/pvepro/src/XF/Repository/PermissionCombinationRepository.php\",\"start\":76,\"sha256\":\"429db2743e8e412951196b3a59de919f708ef848a46e83e96aaf3f2ef619eae0\",\"text\":\"\\t\\t}\\\\n\\\\n\\t\\treturn $combination;\\\\n\\t}\\\\n\\\\n\\tpublic function updatePermissionCombinationForUser(User $user, $buildOnCreate = true)\\\\n\\t{\\\\n\\t\\t$combination = $this->getPermissionCombinationForUser($user);\\\\n\\t\\tif (!$combination->exists())\\\\n\\t\\t{\\\\n\\t\\t\\t$combination->setOption('rebuild_permission_cache', $buildOnCreate);\\\\n\\t\\t\\t$combination->save();\\\\n\\t\\t}\\\\n\\\\n\\t\\tif ($combination->permission_combination_id != $user->permission_combination_id)\\\\n\\t\\t{\\\\n\\t\\t\\t$user->fastUpdate('permission_combination_id', $combination->permission_combination_id);\\\\n\\t\\t}\\\\n\\\\n\\t\\treturn $combination;\\\\n\\t}\\\\n\\\\n\\tpublic function hasUserSpecificPermissions($userId)\"},{\"path\":\"/var/www/pvepro/src/XF/Repository/PermissionCombinationRepository.php\",\"start\":81,\"sha256\":\"4fec4370798eb11f995ade7a704717b70f93aa54d03d0c3bc04f3940a6e36201\",\"text\":\"\\tpublic function updatePermissionCombinationForUser(User $user, $buildOnCreate = true)\\\\n\\t{\\\\n\\t\\t$combination = $this->getPermissionCombinationForUser($user);\\\\n\\t\\tif (!$combination->exists())\\\\n\\t\\t{\\\\n\\t\\t\\t$combination->setOption('rebuild_permission_cache', $buildOnCreate);\\\\n\\t\\t\\t$combination->save();\\\\n\\t\\t}\\\\n\\\\n\\t\\tif ($combination->permission_combination_id != $user->permission_combination_id)\\\\n\\t\\t{\\\\n\\t\\t\\t$user->fastUpdate('permission_combination_id', $combination->permission_combination_id);\\\\n\\t\\t}\\\\n\\\\n\\t\\treturn $combination;\\\\n\\t}\\\\n\\\\n\\tpublic function hasUserSpecificPermissions($userId)\\\\n\\t{\\\\n\\t\\tif (!$userId)\\\\n\\t\\t{\\\\n\\t\\t\\treturn false;\\\\n\\t\\t}\"},{\"path\":\"/var/www/pvepro/src/XF/Repository/PermissionCombinationRepository.php\",\"start\":107,\"sha256\":\"686e2f2e9b0fec141232647ac675ef17b4f52e83651cdecb0b33e1bbfe4e615c\",\"text\":\"\\t\\t\\tUNION ALL\\\\n\\t\\t\\t(SELECT 1 FROM xf_permission_entry_content WHERE user_group_id = 0 AND user_id = ? LIMIT 1)\\\\n\\t\\t\\\", [$userId, $userId]);\\\\n\\t}\\\\n\\\\n\\tpublic function getPermissionCombinationsForUserGroup($userGroupId)\\\\n\\t{\\\\n\\t\\t$groupCombinations = $this->finder(PermissionCombinationUserGroupFinder::class)\\\\n\\t\\t\\t->where('user_group_id', $userGroupId)\\\\n\\t\\t\\t->with('PermissionCombination', true)\\\\n\\t\\t\\t->fetch();\\\\n\\\\n\\t\\treturn $groupCombinations->pluck(function ($groupCombination)\\\\n\\t\\t{\\\\n\\t\\t\\treturn [$groupCombination->permission_combination_id, $groupCombination->PermissionCombination];\\\\n\\t\\t});\\\\n\\t}\\\\n\\\\n\\tpublic function deleteUnusedPermissionCombinations()\\\\n\\t{\\\\n\\t\\t$db = $this->db();\\\\n\\\\n\\t\\t$preRegActionCondition = '';\"}]\nPERMISSION_WRITE_FLOW_HITS=[{\"path\":\"/var/www/pvepro/src/XF/Entity/PermissionEntryContent.php\",\"line\":17,\"text\":\"* @property string $permission_value\"},{\"path\":\"/var/www/pvepro/src/XF/Entity/PermissionEntryContent.php\",\"line\":18,\"text\":\"* @property int $permission_value_int\"},{\"path\":\"/var/www/pvepro/src/XF/Entity/PermissionEntryContent.php\",\"line\":20,\"text\":\"class PermissionEntryContent extends Entity\"},{\"path\":\"/var/www/pvepro/src/XF/Entity/PermissionEntryContent.php\",\"line\":28,\"text\":\"$structure->shortName = 'XF:PermissionEntryContent';\"},{\"path\":\"/var/www/pvepro/src/XF/Entity/PermissionEntryContent.php\",\"line\":38,\"text\":\"'permission_value' => ['type' => self::STR, 'required' => true,\"},{\"path\":\"/var/www/pvepro/src/XF/Entity/PermissionEntryContent.php\",\"line\":41,\"text\":\"'permission_value_int' => ['type' => self::INT],\"},{\"path\":\"/var/www/pvepro/src/XF/Entity/PermissionEntry.php\",\"line\":15,\"text\":\"* @property string $permission_value\"},{\"path\":\"/var/www/pvepro/src/XF/Entity/PermissionEntry.php\",\"line\":16,\"text\":\"* @property int $permission_value_int\"},{\"path\":\"/var/www/pvepro/src/XF/Entity/PermissionEntry.php\",\"line\":18,\"text\":\"class PermissionEntry extends Entity\"},{\"path\":\"/var/www/pvepro/src/XF/Entity/PermissionEntry.php\",\"line\":26,\"text\":\"$structure->shortName = 'XF:PermissionEntry';\"},{\"path\":\"/var/www/pvepro/src/XF/Entity/PermissionEntry.php\",\"line\":34,\"text\":\"'permission_value' => ['type' => self::STR, 'required' => true,\"},{\"path\":\"/var/www/pvepro/src/XF/Entity/PermissionEntry.php\",\"line\":37,\"text\":\"'permission_value_int' => ['type' => self::INT, 'default' => 0],\"},{\"path\":\"/var/www/pvepro/src/XF/Entity/User.php\",\"line\":1285,\"text\":\"\\\\XF::permissionCache()->cacheContentPermsByIds($this->permission_combination_id, 'node', $nodeIds);\"},{\"path\":\"/var/www/pvepro/src/XF/Entity/User.php\",\"line\":1289,\"text\":\"\\\\XF::permissionCache()->cacheAllContentPerms($this->permission_combination_id, 'node');\"},{\"path\":\"/var/www/pvepro/src/XF/Admin/Controller/UserGroupController.php\",\"line\":8,\"text\":\"use XF\\\\Repository\\\\PermissionEntryRepository;\"},{\"path\":\"/var/www/pvepro/src/XF/Admin/Controller/UserGroupController.php\",\"line\":50,\"text\":\"$entryRepo = $this->repository(PermissionEntryRepository::class);\"},{\"path\":\"/var/www/pvepro/src/XF/Admin/Controller/NodeController.php\",\"line\":13,\"text\":\"use XF\\\\Repository\\\\PermissionEntryRepository;\"},{\"path\":\"/var/www/pvepro/src/XF/Admin/Controller/NodeController.php\",\"line\":34,\"text\":\"$customPermissions = $this->repository(PermissionEntryRepository::class)->getContentWithCustomPermissions('node');\"},{\"path\":\"/var/www/pvepro/src/XF/Admin/Controller/PermissionController.php\",\"line\":12,\"text\":\"use XF\\\\Repository\\\\PermissionEntryRepository;\"},{\"path\":\"/var/www/pvepro/src/XF/Admin/Controller/PermissionController.php\",\"line\":170,\"text\":\"$customPermissions = $this->repository(PermissionEntryRepository::class)->getContentWithCustomPermissions('node');\"},{\"path\":\"/var/www/pvepro/src/XF/Admin/Controller/PermissionController.php\",\"line\":283,\"text\":\"* @return PermissionEntryRepository\"},{\"path\":\"/var/www/pvepro/src/XF/Admin/Controller/PermissionController.php\",\"line\":287,\"text\":\"return $this->repository(PermissionEntryRepository::class);\"},{\"path\":\"/var/www/pvepro/src/XF/Admin/Controller/ToolsController.php\",\"line\":16,\"text\":\"use XF\\\\Repository\\\\PermissionEntryRepository;\"},{\"path\":\"/var/www/pvepro/src/XF/Admin/Controller/ToolsController.php\",\"line\":233,\"text\":\"$permEntryRepo = $this->repository(PermissionEntryRepository::class);\"},{\"path\":\"/var/www/pvepro/src/XF/Admin/Controller/ModeratorController.php\",\"line\":13,\"text\":\"use XF\\\\Repository\\\\PermissionEntryRepository;\"},{\"path\":\"/var/www/pvepro/src/XF/Admin/Controller/ModeratorController.php\",\"line\":78,\"text\":\"$permissionEntryRepo = $this->repository(PermissionEntryRepository::class);\"},{\"path\":\"/var/www/pvepro/src/XF/Service/UpdatePermissionsService.php\",\"line\":6,\"text\":\"use XF\\\\Entity\\\\PermissionEntry;\"},{\"path\":\"/var/www/pvepro/src/XF/Service/UpdatePermissionsService.php\",\"line\":7,\"text\":\"use XF\\\\Entity\\\\PermissionEntryContent;\"},{\"path\":\"/var/www/pvepro/src/XF/Service/UpdatePermissionsService.php\",\"line\":10,\"text\":\"use XF\\\\Finder\\\\PermissionEntryContentFinder;\"},{\"path\":\"/var/www/pvepro/src/XF/Service/UpdatePermissionsService.php\",\"line\":11,\"text\":\"use XF\\\\Finder\\\\PermissionEntryFinder;\"},{\"path\":\"/var/www/pvepro/src/XF/Service/UpdatePermissionsService.php\",\"line\":137,\"text\":\"$finder = $this->finder(PermissionEntryContentFinder::class);\"},{\"path\":\"/var/www/pvepro/src/XF/Service/UpdatePermissionsService.php\",\"line\":145,\"text\":\"$finder = $this->finder(PermissionEntryFinder::class);\"},{\"path\":\"/var/www/pvepro/src/XF/Service/UpdatePermissionsService.php\",\"line\":177,\"text\":\"$entry = $this->em()->create(PermissionEntryContent::class);\"},{\"path\":\"/var/www/pvepro/src/XF/Service/UpdatePermissionsService.php\",\"line\":183,\"text\":\"$entry = $this->em()->create(PermissionEntry::class);\"},{\"path\":\"/var/www/pvepro/src/XF/Service/UpdatePermissionsService.php\",\"line\":195,\"text\":\"$entry->permission_value = 'use_int';\"},{\"path\":\"/var/www/pvepro/src/XF/Service/UpdatePermissionsService.php\",\"line\":196,\"text\":\"$entry->permission_value_int = intval($value);\"},{\"path\":\"/var/www/pvepro/src/XF/Service/UpdatePermissionsService.php\",\"line\":200,\"text\":\"$entry->permission_value = $value;\"},{\"path\":\"/var/www/pvepro/src/XF/Service/UpdatePermissionsService.php\",\"line\":201,\"text\":\"$entry->permission_value_int = 0;\"}]\nREFLECTION_RC=0\nREFLECTION_STDERR_SHA256=e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\nREFLECTION_OUTPUT_BEGIN\nCLASS_XF_PermissionCache_EXISTS=true\\nCTOR_XF_PermissionCache|required=1|total=1\\nMETHOD_XF_PermissionCache=getPermissionSet|static=false|required=1|total=1\\nMETHOD_XF_PermissionCache=cacheAllContentPerms|static=false|required=2|total=2\\nMETHOD_XF_PermissionCache=cacheContentPermsByIds|static=false|required=3|total=3\\nMETHOD_XF_PermissionCache=cacheMultipleContentPermsForContent|static=false|required=3|total=3\\nCLASS_XF_Repository_PermissionCombination_EXISTS=true\\nCTOR_XF_Repository_PermissionCombination|required=2|total=2\\nMETHOD_XF_Repository_PermissionCombination=getPermissionCombinationForUser|static=false|required=1|total=2\\nMETHOD_XF_Repository_PermissionCombination=getPermissionCombinationOrPlaceholder|static=false|required=1|total=2\\nMETHOD_XF_Repository_PermissionCombination=updatePermissionCombinationForUser|static=false|required=1|total=2\\nMETHOD_XF_Repository_PermissionCombination=hasUserSpecificPermissions|static=false|required=1|total=1\\nMETHOD_XF_Repository_PermissionCombination=getPermissionCombinationsForUserGroup|static=false|required=1|total=1\\nMETHOD_XF_Repository_PermissionCombination=deleteUnusedPermissionCombinations|static=false|required=0|total=0\\nCLASS_XF_Repository_Permission_EXISTS=true\\nCTOR_XF_Repository_Permission|required=2|total=2\\nMETHOD_XF_Repository_Permission=getGlobalPermissionListData|static=false|required=0|total=0\\nMETHOD_XF_Repository_Permission=getContentPermissionListData|static=false|required=1|total=1\\nMETHOD_XF_Repository_Permission=findPermissionsForList|static=false|required=0|total=0\\nMETHOD_XF_Repository_Permission=getPermissionsGrouped|static=false|required=0|total=0\\nMETHOD_XF_Repository_Permission=getPermissionHandlers|static=false|required=0|total=0\\nMETHOD_XF_Repository_Permission=getPermissionHandler|static=false|required=1|total=1\\nCLASS_XF_Entity_PermissionEntry_EXISTS=true\\nCTOR_XF_Entity_PermissionEntry|required=2|total=4\\nMETHOD_XF_Entity_PermissionEntry=setAsSaved|static=false|required=2|total=2\\nMETHOD_XF_Entity_PermissionEntry=clearCache|static=false|required=1|total=1\\nMETHOD_XF_Entity_PermissionEntry=setOption|static=false|required=2|total=2\\nMETHOD_XF_Entity_PermissionEntry=setOptions|static=false|required=1|total=1\\nMETHOD_XF_Entity_PermissionEntry=resetOption|static=false|required=1|total=1\\nMETHOD_XF_Entity_PermissionEntry=whenSaveable|static=false|required=1|total=1\\nMETHOD_XF_Entity_PermissionEntry=addCascadedSave|static=false|required=1|total=1\\nMETHOD_XF_Entity_PermissionEntry=removeCascadedSave|static=false|required=1|total=1\\nMETHOD_XF_Entity_PermissionEntry=save|static=false|required=0|total=2\\nMETHOD_XF_Entity_PermissionEntry=saveIfChanged|static=false|required=0|total=3\\nMETHOD_XF_Entity_PermissionEntry=preSave|static=false|required=0|total=0\\nCLASS_XF_Entity_PermissionEntryContent_EXISTS=true\\nCTOR_XF_Entity_PermissionEntryContent|required=2|total=4\\nMETHOD_XF_Entity_PermissionEntryContent=setAsSaved|static=false|required=2|total=2\\nMETHOD_XF_Entity_PermissionEntryContent=clearCache|static=false|required=1|total=1\\nMETHOD_XF_Entity_PermissionEntryContent=setOption|static=false|required=2|total=2\\nMETHOD_XF_Entity_PermissionEntryContent=setOptions|static=false|required=1|total=1\\nMETHOD_XF_Entity_PermissionEntryContent=resetOption|static=false|required=1|total=1\\nMETHOD_XF_Entity_PermissionEntryContent=whenSaveable|static=false|required=1|total=1\\nMETHOD_XF_Entity_PermissionEntryContent=addCascadedSave|static=false|required=1|total=1\\nMETHOD_XF_Entity_PermissionEntryContent=removeCascadedSave|static=false|required=1|total=1\\nMETHOD_XF_Entity_PermissionEntryContent=save|static=false|required=0|total=2\\nMETHOD_XF_Entity_PermissionEntryContent=saveIfChanged|static=false|required=0|total=3\\nMETHOD_XF_Entity_PermissionEntryContent=preSave|static=false|required=0|total=0\\n\nREFLECTION_OUTPUT_END\nPERMISSION_STATE_PROBE_OK=true\nTASK_COMPLETE=true\nTASK_RESULT=PASS_PVEPRO_PERMISSION_PROBE_RCA\nNO_MUTATION=true\\nGUEST_OUTPUT_END\nPERMISSION_PROBE_RCA_CLEAN=true\nTASK_COMPLETE=true\nTASK_RESULT=PASS_PVEPRO_PERMISSION_PROBE_RCA\nNO_MUTATION=true\nHOMELAB_RESULT_CONTRACT={\"version\":1,\"command_id\":\"SUPPORT-260920-PVEPRO-PERMISSION-PROBE-RCA-READONLY-716R5\",\"status\":\"OK\",\"changes_made\":false,\"rollback_started\":false,\"rollback_restored\":null}\n" +} diff --git a/runtime/latest.txt b/runtime/latest.txt index df876bbe..507f83b8 100644 --- a/runtime/latest.txt +++ b/runtime/latest.txt @@ -1,162 +1,62 @@ CHAT_OUTPUT_BEGIN -COMMAND_ID=CONTEXT-AUTO-[PRIVATE_IP]701Z +COMMAND_ID=SUPPORT-260920-PVEPRO-PERMISSION-PROBE-RCA-READONLY-716R5 STATUS=OK RC=0 HOST=pve01 -COMPONENT=cluster-context -REFERENCE_SHA[PRIVATE_IP]e5154c41cb[PRIVATE_IP]aca68090be[PRIVATE_IP]bf[PRIVATE_IP]df[PRIVATE_IP] -ERROR_REGISTER_SHA[PRIVATE_IP]ec0f527ed3afeed[PRIVATE_IP]ee[PRIVATE_IP]bbfb[PRIVATE_IP]af4ba7ba0 +MODE=read-only +COMPONENT=pvepro-permission-probe-rca-readonly +REFERENCE_REGISTER_CHECK=OK +REFERENCE_SHA256=5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66 +ERROR_REGISTER_CHECK=OK +ERROR_REGISTER_SHA256=3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0 +COMMAND_SHA256=ae1b7ad338972bbb7f0ac123023385e8bc3ade9b9b2ee2bc38dc1ac294069c5f +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=197b2e2b0efef65e993c880421caec4aafa9a68efc30bd3e5c72526ae81910af +SANITIZED_OUTPUT_SHA256=197b2e2b0efef65e993c880421caec4aafa9a68efc30bd3e5c72526ae81910af OUTPUT_BEGIN -GENERATED_AT_UTC=[PRIVATE_IP]T23:17:01Z -Cluster information -------------------- -Name: homelab -Config Version: 3 -Transport: knet -Secure auth: on +GUEST_QGA_TRANSPORT_RC=0 +GUEST_EXITCODE=0 +TRANSPORT_STDERR_SHA256=e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 +GUEST_OUTPUT_BEGIN\nXF_SHA=d0c10d91d743e0a541d9a1b201080491dae0a8b1757866f113ef707b83403219 +SERVER_PHP_LINT_STATE_RC=0 +SERVER_PHP_LINT_STATE_STDERR_SHA256=e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 +SERVER_PHP_LINT_REFLECT_RC=0 +SERVER_PHP_LINT_REFLECT_STDERR_SHA256=e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 +PERMISSION_STATE_RC=0 +PERMISSION_STATE_STDERR_SHA256=e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 +PERMISSION_STATE_STDERR_BYTES=0 +PERMISSION_STATE_OUTPUT_BEGIN +VISITOR_USER_ID=0\nVISITOR_PERMISSION_COMBINATION_ID=1\nVISITOR_HAS_general_view=true\nVISITOR_HAS_general_viewProfile=true\nVISITOR_HAS_forum_viewOthers=true\nUSER_GROUPS=[{"id":1,"title_sha256":"2ed52ce2083ecf6e72e527507e999a09018abef54808d1e9b7f98731406607ce"},{"id":2,"title_sha256":"2351ee992626bafb88f7985721ec0f56c7d2e242f753e542dee015f178fffea6"},{"id":3,"title_sha256":"35388e9f363dd162fc578afbef7005604b46f469b538cbf88f576aeec3f00299"},{"id":4,"title_sha256":"34d5166b62f8697fee6a7d193d637b1502aefa8f8c4a57f49839d9eda6799b32"}]\nGROUP_1_GLOBAL_PERMISSION_ROWS=[{"permission_group_id":"forum","permission_id":"viewContent","permission_value":"allow","permission_value_int":0},{"permission_group_id":"forum","permission_id":"viewOthers","permission_value":"allow","permission_value_int":0},{"permission_group_id":"general","permission_id":"editProfile","permission_value":"allow","permission_value_int":0},{"permission_group_id":"general","permission_id":"search","permission_value":"allow","permission_value_int":0},{"permission_group_id":"general","permission_id":"submitWithoutApproval","permission_value":"allow","permission_value_int":0},{"permission_group_id":"general","permission_id":"useContactForm","permission_value":"allow","permission_value_int":0},{"permission_group_id":"general","permission_id":"usePush","permission_value":"allow","permission_value_int":0},{"permission_group_id":"general","permission_id":"view","permission_value":"allow","permission_value_int":0},{"permission_group_id":"general","permission_id":"viewMemberList","permission_value":"allow","permission_value_int":0},{"permission_group_id":"general","permission_id":"viewNode","permission_value":"allow","permission_value_int":0},{"permission_group_id":"general","permission_id":"viewProfile","permission_value":"allow","permission_value_int":0},{"permission_group_id":"profilePost","permission_id":"view","permission_value":"allow","permission_value_int":0}]\nGROUP_2_GLOBAL_PERMISSION_ROWS=[{"permission_group_id":"bookmark","permission_id":"view","permission_value":"allow","permission_value_int":0},{"permission_group_id":"forum","permission_id":"contentVote","permission_value":"allow","permission_value_int":0},{"permission_group_id":"forum","permission_id":"deleteOwnPost","permission_value":"allow","permission_value_int":0},{"permission_group_id":"forum","permission_id":"editOwnPost","permission_value":"allow","permission_value_int":0},{"permission_group_id":"forum","permission_id":"editOwnPostTimeLimit","permission_value":"use_int","permission_value_int":-1},{"permission_group_id":"forum","permission_id":"editOwnThreadTitle","permission_value":"allow","permission_value_int":0},{"permission_group_id":"forum","permission_id":"markSolution","permission_value":"allow","permission_value_int":0},{"permission_group_id":"forum","permission_id":"postReply","permission_value":"allow","permission_value_int":0},{"permission_group_id":"forum","permission_id":"postThread","permission_value":"allow","permission_value_int":0},{"permission_group_id":"forum","permission_id":"react","permission_value":"allow","permission_value_int":0},{"permission_group_id":"forum","permission_id":"tagOwnThread","permission_value":"allow","permission_value_int":0},{"permission_group_id":"forum","permission_id":"uploadAttachment","permission_value":"allow","permission_value_int":0},{"permission_group_id":"forum","permission_id":"uploadVideo","permission_value":"allow","permission_value_int":0},{"permission_group_id":"forum","permission_id":"viewAttachment","permission_value":"allow","permission_value_int":0},{"permission_group_id":"forum","permission_id":"viewContent","permission_value":"allow","permission_value_int":0},{"permission_group_id":"forum","permission_id":"viewOthers","permission_value":"allow","permission_value_int":0},{"permission_group_id":"forum","permission_id":"votePoll","permission_value":"allow","permission_value_int":0},{"permission_group_id":"general","permission_id":"changeUsername","permission_value":"allow","permission_value_int":0},{"permission_group_id":"general","permission_id":"createTag","permission_value":"allow","permission_value_int":0},{"permission_group_id":"general","permission_id":"editProfile","permission_value":"allow","permission_value_int":0},{"permission_group_id":"general","permission_id":"editSignature","permission_value":"allow","permission_value_int":0},{"permission_group_id":"general","permission_id":"maxMentionedUsers","permission_value":"use_int","permission_value_int":5},{"permission_group_id":"general","permission_id":"report","permission_value":"allow","permission_value_int":0},{"permission_group_id":"general","permission_id":"search","permission_value":"allow","permission_value_int":0},{"permission_group_id":"general","permission_id":"submitWithoutApproval","permission_value":"allow","permission_value_int":0},{"permission_group_id":"general","permission_id":"useContactForm","permission_value":"allow","permission_value_int":0},{"permission_group_id":"general","permission_id":"view","permission_value":"allow","permission_value_int":0},{"permission_group_id":"general","permission_id":"viewMemberList","permission_value":"allow","permission_value_int":0},{"permission_group_id":"general","permission_id":"viewNode","permission_value":"allow","permission_value_int":0},{"permission_group_id":"general","permission_id":"viewProfile","permission_value":"allow","permission_value_int":0},{"permission_group_id":"profilePost","permission_id":"view","permission_value":"allow","permission_value_int":0}]\nNODE_1_CONTENT_PERMISSION_ROWS=[]\nNODE_2_CONTENT_PERMISSION_ROWS=[]\nNODE_3_CONTENT_PERMISSION_ROWS=[]\nNODE_8_CONTENT_PERMISSION_ROWS=[]\nNODE_9_CONTENT_PERMISSION_ROWS=[]\nNODE_11_CONTENT_PERMISSION_ROWS=[]\nNODE_17_CONTENT_PERMISSION_ROWS=[]\nNODE_18_CONTENT_PERMISSION_ROWS=[]\nFORUM_2_EXISTS=true\nFORUM_2_CAN_VIEW=true\nFORUM_2_NODE_CACHE_SELECTED={"type":"NULL"}\nFORUM_2_NODE_CACHE_SHA256=28859e345f55ce45426724100617830af221bdf3e01f4333ee34ba58d2df4429\nFORUM_8_EXISTS=true\nFORUM_8_CAN_VIEW=false\nFORUM_8_NODE_CACHE_SELECTED={"type":"NULL"}\nFORUM_8_NODE_CACHE_SHA256=28859e345f55ce45426724100617830af221bdf3e01f4333ee34ba58d2df4429\nFORUM_9_EXISTS=true\nFORUM_9_CAN_VIEW=false\nFORUM_9_NODE_CACHE_SELECTED={"type":"NULL"}\nFORUM_9_NODE_CACHE_SHA256=28859e345f55ce45426724100617830af221bdf3e01f4333ee34ba58d2df4429\nFORUM_11_EXISTS=true\nFORUM_11_CAN_VIEW=false\nFORUM_11_NODE_CACHE_SELECTED={"type":"NULL"}\nFORUM_11_NODE_CACHE_SHA256=28859e345f55ce45426724100617830af221bdf3e01f4333ee34ba58d2df4429\nFORUM_17_EXISTS=true\nFORUM_17_CAN_VIEW=false\nFORUM_17_NODE_CACHE_SELECTED={"type":"NULL"}\nFORUM_17_NODE_CACHE_SHA256=28859e345f55ce45426724100617830af221bdf3e01f4333ee34ba58d2df4429\nFORUM_18_EXISTS=true\nFORUM_18_CAN_VIEW=false\nFORUM_18_NODE_CACHE_SELECTED={"type":"NULL"}\nFORUM_18_NODE_CACHE_SHA256=28859e345f55ce45426724100617830af221bdf3e01f4333ee34ba58d2df4429\nPERMISSION_COMBINATIONS=[{"permission_combination_id":1,"user_id":0,"user_group_list":"1"},{"permission_combination_id":3,"user_id":0,"user_group_list":"2"},{"permission_combination_id":4,"user_id":0,"user_group_list":"2,3"},{"permission_combination_id":5,"user_id":0,"user_group_list":"2,3,4"},{"permission_combination_id":6,"user_id":1,"user_group_list":"2,3,4"}]\nPERMISSION_CACHE_CONTENT_COLUMNS=["permission_combination_id","content_type","content_id","cache_value"]\nNODE_1_CACHE_ROWS=[{"permission_combination_id":1,"content_type":"node","content_id":1,"cache_sha256":"4bec2c76ac9f130abb1f5ea2adb6c09fad83598b881cf874e4bcd2fa36d372fe"},{"permission_combination_id":3,"content_type":"node","content_id":1,"cache_sha256":"4bec2c76ac9f130abb1f5ea2adb6c09fad83598b881cf874e4bcd2fa36d372fe"},{"permission_combination_id":4,"content_type":"node","content_id":1,"cache_sha256":"4bec2c76ac9f130abb1f5ea2adb6c09fad83598b881cf874e4bcd2fa36d372fe"},{"permission_combination_id":5,"content_type":"node","content_id":1,"cache_sha256":"4bec2c76ac9f130abb1f5ea2adb6c09fad83598b881cf874e4bcd2fa36d372fe"},{"permission_combination_id":6,"content_type":"node","content_id":1,"cache_sha256":"4bec2c76ac9f130abb1f5ea2adb6c09fad83598b881cf874e4bcd2fa36d372fe"}]\nNODE_2_CACHE_ROWS=[{"permission_combination_id":1,"content_type":"node","content_id":2,"cache_sha256":"1db2d92b6683fab36abb410478ea7864828287b034c4a1220b511dec129cd9b1"},{"permission_combination_id":3,"content_type":"node","content_id":2,"cache_sha256":"aae61963956180efdfaeb74a16f86df49e50f4c4f60a61f58352dc76bf8550f6"},{"permission_combination_id":4,"content_type":"node","content_id":2,"cache_sha256":"06e48530a9d18697dcb1ed6455218d7b6884507bbfff9a88eaf777b19ccaa72e"},{"permission_combination_id":5,"content_type":"node","content_id":2,"cache_sha256":"06e48530a9d18697dcb1ed6455218d7b6884507bbfff9a88eaf777b19ccaa72e"},{"permission_combination_id":6,"content_type":"node","content_id":2,"cache_sha256":"130f7985f1688afb3ec90c81573e91084152e2d0a53162565f013adcd577a299"}]\nNODE_3_CACHE_ROWS=[]\nNODE_8_CACHE_ROWS=[]\nNODE_9_CACHE_ROWS=[]\nNODE_11_CACHE_ROWS=[]\nNODE_17_CACHE_ROWS=[]\nNODE_18_CACHE_ROWS=[]\nNO_MUTATION=true\n +PERMISSION_STATE_OUTPUT_END +PERMISSION_SOURCE_SNIPPETS=[{"path":"/var/www/pvepro/src/XF/Entity/Forum.php","start":96,"sha256":"ddb39a34ff5fd30c660b518f4a45c7fadf04122be5d13f2280516f23fe8bbf1e","text":"\tpublic function canCreatePoll(&$error = null)\\n\t{\\n\t\treturn $this->TypeHandler->isThreadTypeCreatable('poll', $this);\\n\t}\\n\\n\tpublic function canViewThreadContent(): bool\\n\t{\\n\t\treturn \\XF::visitor()->hasNodePermission($this->node_id, 'viewContent');\\n\t}\\n\\n\tpublic function canViewDeletedThreads()\\n\t{\\n\t\treturn \\XF::visitor()->hasNodePermission($this->node_id, 'viewDeleted');\\n\t}\\n\\n\tpublic function canViewModeratedThreads()\\n\t{\\n\t\treturn \\XF::visitor()->hasNodePermission($this->node_id, 'viewModerated');\\n\t}\\n\\n\tpublic function canUploadAndManageAttachments()\\n\t{\\n\t\t$visitor = \\XF::visitor();"},{"path":"/var/www/pvepro/src/XF/Entity/Forum.php","start":101,"sha256":"3dc2b8ff5c5ea7bd3c4822e6e619962188500f72cce1c08290d0e251a8a69b09","text":"\tpublic function canViewThreadContent(): bool\\n\t{\\n\t\treturn \\XF::visitor()->hasNodePermission($this->node_id, 'viewContent');\\n\t}\\n\\n\tpublic function canViewDeletedThreads()\\n\t{\\n\t\treturn \\XF::visitor()->hasNodePermission($this->node_id, 'viewDeleted');\\n\t}\\n\\n\tpublic function canViewModeratedThreads()\\n\t{\\n\t\treturn \\XF::visitor()->hasNodePermission($this->node_id, 'viewModerated');\\n\t}\\n\\n\tpublic function canUploadAndManageAttachments()\\n\t{\\n\t\t$visitor = \\XF::visitor();\\n\\n\t\treturn ($visitor->user_id && $visitor->hasNodePermission($this->node_id, 'uploadAttachment'));\\n\t}\\n\\n\tpublic function canUploadVideos()"},{"path":"/var/www/pvepro/src/XF/Entity/Forum.php","start":106,"sha256":"76a6149417b8ae3acf5b3fb8aa8460374e307213d5aee0cf19b1bbfc05f70bdf","text":"\tpublic function canViewDeletedThreads()\\n\t{\\n\t\treturn \\XF::visitor()->hasNodePermission($this->node_id, 'viewDeleted');\\n\t}\\n\\n\tpublic function canViewModeratedThreads()\\n\t{\\n\t\treturn \\XF::visitor()->hasNodePermission($this->node_id, 'viewModerated');\\n\t}\\n\\n\tpublic function canUploadAndManageAttachments()\\n\t{\\n\t\t$visitor = \\XF::visitor();\\n\\n\t\treturn ($visitor->user_id && $visitor->hasNodePermission($this->node_id, 'uploadAttachment'));\\n\t}\\n\\n\tpublic function canUploadVideos()\\n\t{\\n\t\t$options = $this->app()->options();\\n\\n\t\tif (empty($options->allowVideoUploads['enabled']))\\n\t\t{"},{"path":"/var/www/pvepro/src/XF/Entity/Forum.php","start":439,"sha256":"246fbbf565d9c125c32fe9a72b0057837224d11ce188cedcb3ff224474a7b6c7","text":"\t\treturn (!$prefix || isset($this->prefix_cache[$prefix]));\\n\t}\\n\\n\tpublic function getNodeListExtras()\\n\t{\\n\t\tif (\\XF::visitor()->hasNodePermission($this->node_id, 'viewOthers'))\\n\t\t{\\n\t\t\t$output = [\\n\t\t\t\t'discussion_count' => $this->discussion_count,\\n\t\t\t\t'message_count' => $this->message_count,\\n\t\t\t\t'hasNew' => $this->isUnread(),\\n\t\t\t];\\n\\n\t\t\tif ($this->last_post_date)\\n\t\t\t{\\n\t\t\t\t$output['last_post_id'] = $this->last_post_id;\\n\t\t\t\t$output['last_post_date'] = $this->last_post_date;\\n\t\t\t\t$output['last_post_user_id'] = $this->last_post_user_id;\\n\t\t\t\t$output['last_post_username'] = $this->last_post_username;\\n\t\t\t\t$output['last_thread_id'] = $this->last_thread_id;\\n\t\t\t\t$output['last_thread_title'] = $this->app()->stringFormatter()->censorText($this->last_thread_title);\\n\t\t\t\t$output['last_thread_prefix_id'] = $this->last_thread_prefix_id;\\n\t\t\t\t$output['LastPostUser'] = $this->LastPostUser;"},{"path":"/var/www/pvepro/src/XF/Entity/Forum.php","start":681,"sha256":"61255e3d5c3e21701cd1dd66434d50648b6386391b9ccd3f3a7844f8c6276653","text":"\\n\tpublic function getNodeTypeApiData($verbosity = self::VERBOSITY_NORMAL, array $options = [])\\n\t{\\n\t\t$result = parent::getNodeTypeApiData();\\n\\n\t\tif (\\XF::visitor()->hasNodePermission($this->node_id, 'viewOthers'))\\n\t\t{\\n\t\t\t$result->includeExtra([\\n\t\t\t\t'is_unread' => $this->isUnread(),\\n\t\t\t\t'discussion_count' => $this->discussion_count,\\n\t\t\t\t'message_count' => $this->message_count,\\n\t\t\t\t'last_post_id' => $this->last_post_id,\\n\t\t\t\t'last_post_date' => $this->last_post_date,\\n\t\t\t\t'last_post_username' => $this->last_post_username,\\n\t\t\t\t'last_thread_id' => $this->last_thread_id,\\n\t\t\t\t'last_thread_title' => $this->app()->stringFormatter()->censorText($this->last_thread_title),\\n\t\t\t\t'last_thread_prefix_id' => $this->last_thread_prefix_id,\\n\t\t\t]);\\n\t\t}\\n\\n\t\t$this->TypeHandler->addTypeConfigToApiResult($this, $result, $verbosity, $options);\\n\\n\t\tif ($verbosity > self::VERBOSITY_NORMAL)"},{"path":"/var/www/pvepro/src/XF/Entity/Node.php","start":45,"sha256":"f529a67e7eea7aeaaa2aa763ca2f0fe6c468844bf966dfcc39b823a912338d0c","text":" */\\nclass Node extends Entity implements LinkableInterface, ViewableInterface\\n{\\n\tuse BookmarkTrait;\\n\\n\tpublic function canView(&$error = null)\\n\t{\\n\t\t/** @var AbstractNode $data */\\n\t\t$data = $this->Data;\\n\t\tif (!$data)\\n\t\t{\\n\t\t\treturn false;\\n\t\t}\\n\\n\t\treturn $data->canView($error);\\n\t}\\n\\n\tprotected function canBookmarkContent(&$error = null)\\n\t{\\n\t\treturn ($this->node_type_id == 'Page' && $this->canView($error));\\n\t}\\n\\n\tpublic function isSearchEngineIndexable(): bool"},{"path":"/var/www/pvepro/src/XF/PermissionCache.php","start":18,"sha256":"83682b6d6cd774d6b60bfd2d72099c03400cf0a67e071207e00d2ec55704f236","text":"\tpublic function __construct(AbstractAdapter $db)\\n\t{\\n\t\t$this->db = $db;\\n\t}\\n\\n\tpublic function getPermissionSet($permissionCombinationId)\\n\t{\\n\t\treturn new PermissionSet($this, $permissionCombinationId);\\n\t}\\n\\n\tpublic function getGlobalPerms($permissionCombinationId)\\n\t{\\n\t\t// value will be null if we failed to retrieve the permissions\\n\t\tif (array_key_exists($permissionCombinationId, $this->globalPerms))\\n\t\t{\\n\t\t\treturn $this->globalPerms[$permissionCombinationId];\\n\t\t}\\n\\n\t\t$cache = $this->db->fetchOne(\"\\n\t\t\tSELECT cache_value\\n\t\t\tFROM xf_permission_combination\\n\t\t\tWHERE permission_combination_id = ?\\n\t\t\", $permissionCombinationId);"},{"path":"/var/www/pvepro/src/XF/PermissionCache.php","start":96,"sha256":"9a73f7739703efac4ad1d89125e45a5ba275db71c7b5469935ba84d70a37ba82","text":"\t\t$this->contentPerms[$permissionCombinationId][$contentType][$contentId] = $cache;\\n\\n\t\treturn $cache;\\n\t}\\n\\n\tpublic function cacheAllContentPerms($permissionCombinationId, $contentType)\\n\t{\\n\t\tif (isset($this->globalCacheRun[$contentType][$permissionCombinationId]))\\n\t\t{\\n\t\t\treturn;\\n\t\t}\\n\t\t$this->globalCacheRun[$contentType][$permissionCombinationId] = true;\\n\\n\t\t$permsResult = $this->db->fetchPairs(\"\\n\t\t\tSELECT content_id, cache_value\\n\t\t\tFROM xf_permission_cache_content\\n\t\t\tWHERE permission_combination_id = ?\\n\t\t\t\tAND content_type = ?\\n\t\t\", [$permissionCombinationId, $contentType]);\\n\\n\t\tforeach ($permsResult AS $contentId => $cache)\\n\t\t{\\n\t\t\t$cache = $this->decodePermissionCache($cache);"},{"path":"/var/www/pvepro/src/XF/PermissionCache.php","start":119,"sha256":"f858e5eeea5f4858afe0028a9755e9152bb9e9dc30e0b71c81f181781e6fa3f4","text":"\\n\t\t\t$this->contentPerms[$permissionCombinationId][$contentType][$contentId] = $cache;\\n\t\t}\\n\t}\\n\\n\tpublic function cacheContentPermsByIds($permissionCombinationId, $contentType, array $contentIds)\\n\t{\\n\t\tif (!$contentIds)\\n\t\t{\\n\t\t\treturn;\\n\t\t}\\n\\n\t\tforeach ($contentIds AS $k => $contentId)\\n\t\t{\\n\t\t\tif (isset($this->contentPerms[$permissionCombinationId][$contentType][$contentId]))\\n\t\t\t{\\n\t\t\t\tunset($contentIds[$k]);\\n\t\t\t}\\n\t\t}\\n\t\tif (!$contentIds)\\n\t\t{\\n\t\t\treturn;\\n\t\t}"},{"path":"/var/www/pvepro/src/XF/PermissionCache.php","start":154,"sha256":"42a826655f3bb839d8dc5040d1e55b4950bb9ac287052234e8a4284165534621","text":"\\n\t\t\t$this->contentPerms[$permissionCombinationId][$contentType][$contentId] = $cache;\\n\t\t}\\n\t}\\n\\n\tpublic function cacheMultipleContentPermsForContent(array $permissionCombinationIds, $contentType, $contentId)\\n\t{\\n\t\tif (!$permissionCombinationIds)\\n\t\t{\\n\t\t\treturn;\\n\t\t}\\n\\n\t\t$permsResult = $this->db->fetchPairs(\"\\n\t\t\tSELECT permission_combination_id, cache_value\\n\t\t\tFROM xf_permission_cache_content\\n\t\t\tWHERE permission_combination_id IN (\" . $this->db->quote($permissionCombinationIds) . \")\\n\t\t\t\tAND content_type = ?\\n\t\t\t\tAND content_id = ?\\n\t\t\", [$contentType, $contentId]);\\n\\n\t\tforeach ($permsResult AS $permissionCombinationId => $cache)\\n\t\t{\\n\t\t\t$cache = $this->decodePermissionCache($cache);"},{"path":"/var/www/pvepro/src/XF/Repository/PermissionCombinationRepository.php","start":76,"sha256":"429db2743e8e412951196b3a59de919f708ef848a46e83e96aaf3f2ef619eae0","text":"\t\t}\\n\\n\t\treturn $combination;\\n\t}\\n\\n\tpublic function updatePermissionCombinationForUser(User $user, $buildOnCreate = true)\\n\t{\\n\t\t$combination = $this->getPermissionCombinationForUser($user);\\n\t\tif (!$combination->exists())\\n\t\t{\\n\t\t\t$combination->setOption('rebuild_permission_cache', $buildOnCreate);\\n\t\t\t$combination->save();\\n\t\t}\\n\\n\t\tif ($combination->permission_combination_id != $user->permission_combination_id)\\n\t\t{\\n\t\t\t$user->fastUpdate('permission_combination_id', $combination->permission_combination_id);\\n\t\t}\\n\\n\t\treturn $combination;\\n\t}\\n\\n\tpublic function hasUserSpecificPermissions($userId)"},{"path":"/var/www/pvepro/src/XF/Repository/PermissionCombinationRepository.php","start":81,"sha256":"4fec4370798eb11f995ade7a704717b70f93aa54d03d0c3bc04f3940a6e36201","text":"\tpublic function updatePermissionCombinationForUser(User $user, $buildOnCreate = true)\\n\t{\\n\t\t$combination = $this->getPermissionCombinationForUser($user);\\n\t\tif (!$combination->exists())\\n\t\t{\\n\t\t\t$combination->setOption('rebuild_permission_cache', $buildOnCreate);\\n\t\t\t$combination->save();\\n\t\t}\\n\\n\t\tif ($combination->permission_combination_id != $user->permission_combination_id)\\n\t\t{\\n\t\t\t$user->fastUpdate('permission_combination_id', $combination->permission_combination_id);\\n\t\t}\\n\\n\t\treturn $combination;\\n\t}\\n\\n\tpublic function hasUserSpecificPermissions($userId)\\n\t{\\n\t\tif (!$userId)\\n\t\t{\\n\t\t\treturn false;\\n\t\t}"},{"path":"/var/www/pvepro/src/XF/Repository/PermissionCombinationRepository.php","start":107,"sha256":"686e2f2e9b0fec141232647ac675ef17b4f52e83651cdecb0b33e1bbfe4e615c","text":"\t\t\tUNION ALL\\n\t\t\t(SELECT 1 FROM xf_permission_entry_content WHERE user_group_id = 0 AND user_id = ? LIMIT 1)\\n\t\t\", [$userId, $userId]);\\n\t}\\n\\n\tpublic function getPermissionCombinationsForUserGroup($userGroupId)\\n\t{\\n\t\t$groupCombinations = $this->finder(PermissionCombinationUserGroupFinder::class)\\n\t\t\t->where('user_group_id', $userGroupId)\\n\t\t\t->with('PermissionCombination', true)\\n\t\t\t->fetch();\\n\\n\t\treturn $groupCombinations->pluck(function ($groupCombination)\\n\t\t{\\n\t\t\treturn [$groupCombination->permission_combination_id, $groupCombination->PermissionCombination];\\n\t\t});\\n\t}\\n\\n\tpublic function deleteUnusedPermissionCombinations()\\n\t{\\n\t\t$db = $this->db();\\n\\n\t\t$preRegActionCondition = '';"}] +PERMISSION_WRITE_FLOW_HITS=[{"path":"/var/www/pvepro/src/XF/Entity/PermissionEntryContent.php","line":17,"text":"* @property string $permission_value"},{"path":"/var/www/pvepro/src/XF/Entity/PermissionEntryContent.php","line":18,"text":"* @property int $permission_value_int"},{"path":"/var/www/pvepro/src/XF/Entity/PermissionEntryContent.php","line":20,"text":"class PermissionEntryContent extends Entity"},{"path":"/var/www/pvepro/src/XF/Entity/PermissionEntryContent.php","line":28,"text":"$structure->shortName = 'XF:PermissionEntryContent';"},{"path":"/var/www/pvepro/src/XF/Entity/PermissionEntryContent.php","line":38,"text":"'permission_value' => ['type' => self::STR, 'required' => true,"},{"path":"/var/www/pvepro/src/XF/Entity/PermissionEntryContent.php","line":41,"text":"'permission_value_int' => ['type' => self::INT],"},{"path":"/var/www/pvepro/src/XF/Entity/PermissionEntry.php","line":15,"text":"* @property string $permission_value"},{"path":"/var/www/pvepro/src/XF/Entity/PermissionEntry.php","line":16,"text":"* @property int $permission_value_int"},{"path":"/var/www/pvepro/src/XF/Entity/PermissionEntry.php","line":18,"text":"class PermissionEntry extends Entity"},{"path":"/var/www/pvepro/src/XF/Entity/PermissionEntry.php","line":26,"text":"$structure->shortName = 'XF:PermissionEntry';"},{"path":"/var/www/pvepro/src/XF/Entity/PermissionEntry.php","line":34,"text":"'permission_value' => ['type' => self::STR, 'required' => true,"},{"path":"/var/www/pvepro/src/XF/Entity/PermissionEntry.php","line":37,"text":"'permission_value_int' => ['type' => self::INT, 'default' => 0],"},{"path":"/var/www/pvepro/src/XF/Entity/User.php","line":1285,"text":"\\XF::permissionCache()->cacheContentPermsByIds($this->permission_combination_id, 'node', $nodeIds);"},{"path":"/var/www/pvepro/src/XF/Entity/User.php","line":1289,"text":"\\XF::permissionCache()->cacheAllContentPerms($this->permission_combination_id, 'node');"},{"path":"/var/www/pvepro/src/XF/Admin/Controller/UserGroupController.php","line":8,"text":"use XF\\Repository\\PermissionEntryRepository;"},{"path":"/var/www/pvepro/src/XF/Admin/Controller/UserGroupController.php","line":50,"text":"$entryRepo = $this->repository(PermissionEntryRepository::class);"},{"path":"/var/www/pvepro/src/XF/Admin/Controller/NodeController.php","line":13,"text":"use XF\\Repository\\PermissionEntryRepository;"},{"path":"/var/www/pvepro/src/XF/Admin/Controller/NodeController.php","line":34,"text":"$customPermissions = $this->repository(PermissionEntryRepository::class)->getContentWithCustomPermissions('node');"},{"path":"/var/www/pvepro/src/XF/Admin/Controller/PermissionController.php","line":12,"text":"use XF\\Repository\\PermissionEntryRepository;"},{"path":"/var/www/pvepro/src/XF/Admin/Controller/PermissionController.php","line":170,"text":"$customPermissions = $this->repository(PermissionEntryRepository::class)->getContentWithCustomPermissions('node');"},{"path":"/var/www/pvepro/src/XF/Admin/Controller/PermissionController.php","line":283,"text":"* @return PermissionEntryRepository"},{"path":"/var/www/pvepro/src/XF/Admin/Controller/PermissionController.php","line":287,"text":"return $this->repository(PermissionEntryRepository::class);"},{"path":"/var/www/pvepro/src/XF/Admin/Controller/ToolsController.php","line":16,"text":"use XF\\Repository\\PermissionEntryRepository;"},{"path":"/var/www/pvepro/src/XF/Admin/Controller/ToolsController.php","line":233,"text":"$permEntryRepo = $this->repository(PermissionEntryRepository::class);"},{"path":"/var/www/pvepro/src/XF/Admin/Controller/ModeratorController.php","line":13,"text":"use XF\\Repository\\PermissionEntryRepository;"},{"path":"/var/www/pvepro/src/XF/Admin/Controller/ModeratorController.php","line":78,"text":"$permissionEntryRepo = $this->repository(PermissionEntryRepository::class);"},{"path":"/var/www/pvepro/src/XF/Service/UpdatePermissionsService.php","line":6,"text":"use XF\\Entity\\PermissionEntry;"},{"path":"/var/www/pvepro/src/XF/Service/UpdatePermissionsService.php","line":7,"text":"use XF\\Entity\\PermissionEntryContent;"},{"path":"/var/www/pvepro/src/XF/Service/UpdatePermissionsService.php","line":10,"text":"use XF\\Finder\\PermissionEntryContentFinder;"},{"path":"/var/www/pvepro/src/XF/Service/UpdatePermissionsService.php","line":11,"text":"use XF\\Finder\\PermissionEntryFinder;"},{"path":"/var/www/pvepro/src/XF/Service/UpdatePermissionsService.php","line":137,"text":"$finder = $this->finder(PermissionEntryContentFinder::class);"},{"path":"/var/www/pvepro/src/XF/Service/UpdatePermissionsService.php","line":145,"text":"$finder = $this->finder(PermissionEntryFinder::class);"},{"path":"/var/www/pvepro/src/XF/Service/UpdatePermissionsService.php","line":177,"text":"$entry = $this->em()->create(PermissionEntryContent::class);"},{"path":"/var/www/pvepro/src/XF/Service/UpdatePermissionsService.php","line":183,"text":"$entry = $this->em()->create(PermissionEntry::class);"},{"path":"/var/www/pvepro/src/XF/Service/UpdatePermissionsService.php","line":195,"text":"$entry->permission_value = 'use_int';"},{"path":"/var/www/pvepro/src/XF/Service/UpdatePermissionsService.php","line":196,"text":"$entry->permission_value_int = intval($value);"},{"path":"/var/www/pvepro/src/XF/Service/UpdatePermissionsService.php","line":200,"text":"$entry->permission_value = $value;"},{"path":"/var/www/pvepro/src/XF/Service/UpdatePermissionsService.php","line":201,"text":"$entry->permission_value_int = 0;"}] +REFLECTION_RC=0 +REFLECTION_STDERR_SHA256=e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 +REFLECTION_OUTPUT_BEGIN +CLASS_XF_PermissionCache_EXISTS=true\nCTOR_XF_PermissionCache|required=1|total=1\nMETHOD_XF_PermissionCache=getPermissionSet|static=false|required=1|total=1\nMETHOD_XF_PermissionCache=cacheAllContentPerms|static=false|required=2|total=2\nMETHOD_XF_PermissionCache=cacheContentPermsByIds|static=false|required=3|total=3\nMETHOD_XF_PermissionCache=cacheMultipleContentPermsForContent|static=false|required=3|total=3\nCLASS_XF_Repository_PermissionCombination_EXISTS=true\nCTOR_XF_Repository_PermissionCombination|required=2|total=2\nMETHOD_XF_Repository_PermissionCombination=getPermissionCombinationForUser|static=false|required=1|total=2\nMETHOD_XF_Repository_PermissionCombination=getPermissionCombinationOrPlaceholder|static=false|required=1|total=2\nMETHOD_XF_Repository_PermissionCombination=updatePermissionCombinationForUser|static=false|required=1|total=2\nMETHOD_XF_Repository_PermissionCombination=hasUserSpecificPermissions|static=false|required=1|total=1\nMETHOD_XF_Repository_PermissionCombination=getPermissionCombinationsForUserGroup|static=false|required=1|total=1\nMETHOD_XF_Repository_PermissionCombination=deleteUnusedPermissionCombinations|static=false|required=0|total=0\nCLASS_XF_Repository_Permission_EXISTS=true\nCTOR_XF_Repository_Permission|required=2|total=2\nMETHOD_XF_Repository_Permission=getGlobalPermissionListData|static=false|required=0|total=0\nMETHOD_XF_Repository_Permission=getContentPermissionListData|static=false|required=1|total=1\nMETHOD_XF_Repository_Permission=findPermissionsForList|static=false|required=0|total=0\nMETHOD_XF_Repository_Permission=getPermissionsGrouped|static=false|required=0|total=0\nMETHOD_XF_Repository_Permission=getPermissionHandlers|static=false|required=0|total=0\nMETHOD_XF_Repository_Permission=getPermissionHandler|static=false|required=1|total=1\nCLASS_XF_Entity_PermissionEntry_EXISTS=true\nCTOR_XF_Entity_PermissionEntry|required=2|total=4\nMETHOD_XF_Entity_PermissionEntry=setAsSaved|static=false|required=2|total=2\nMETHOD_XF_Entity_PermissionEntry=clearCache|static=false|required=1|total=1\nMETHOD_XF_Entity_PermissionEntry=setOption|static=false|required=2|total=2\nMETHOD_XF_Entity_PermissionEntry=setOptions|static=false|required=1|total=1\nMETHOD_XF_Entity_PermissionEntry=resetOption|static=false|required=1|total=1\nMETHOD_XF_Entity_PermissionEntry=whenSaveable|static=false|required=1|total=1\nMETHOD_XF_Entity_PermissionEntry=addCascadedSave|static=false|required=1|total=1\nMETHOD_XF_Entity_PermissionEntry=removeCascadedSave|static=false|required=1|total=1\nMETHOD_XF_Entity_PermissionEntry=save|static=false|required=0|total=2\nMETHOD_XF_Entity_PermissionEntry=saveIfChanged|static=false|required=0|total=3\nMETHOD_XF_Entity_PermissionEntry=preSave|static=false|required=0|total=0\nCLASS_XF_Entity_PermissionEntryContent_EXISTS=true\nCTOR_XF_Entity_PermissionEntryContent|required=2|total=4\nMETHOD_XF_Entity_PermissionEntryContent=setAsSaved|static=false|required=2|total=2\nMETHOD_XF_Entity_PermissionEntryContent=clearCache|static=false|required=1|total=1\nMETHOD_XF_Entity_PermissionEntryContent=setOption|static=false|required=2|total=2\nMETHOD_XF_Entity_PermissionEntryContent=setOptions|static=false|required=1|total=1\nMETHOD_XF_Entity_PermissionEntryContent=resetOption|static=false|required=1|total=1\nMETHOD_XF_Entity_PermissionEntryContent=whenSaveable|static=false|required=1|total=1\nMETHOD_XF_Entity_PermissionEntryContent=addCascadedSave|static=false|required=1|total=1\nMETHOD_XF_Entity_PermissionEntryContent=removeCascadedSave|static=false|required=1|total=1\nMETHOD_XF_Entity_PermissionEntryContent=save|static=false|required=0|total=2\nMETHOD_XF_Entity_PermissionEntryContent=saveIfChanged|static=false|required=0|total=3\nMETHOD_XF_Entity_PermissionEntryContent=preSave|static=false|required=0|total=0\n +REFLECTION_OUTPUT_END +PERMISSION_STATE_PROBE_OK=true +TASK_COMPLETE=true +TASK_RESULT=PASS_PVEPRO_PERMISSION_PROBE_RCA +NO_MUTATION=true\nGUEST_OUTPUT_END +PERMISSION_PROBE_RCA_CLEAN=true +TASK_COMPLETE=true +TASK_RESULT=PASS_PVEPRO_PERMISSION_PROBE_RCA +NO_MUTATION=true +HOMELAB_RESULT_CONTRACT={"version":1,"command_id":"SUPPORT-260920-PVEPRO-PERMISSION-PROBE-RCA-READONLY-716R5","status":"OK","changes_made":false,"rollback_started":false,"rollback_restored":null} -Quorum information ------------------- -Date: Sun Sep [PRIVATE_IP] 2026 -Quorum provider: corosync_votequorum -Nodes: 3 -Node ID: [PRIVATE_IP] -Ring ID: 1.130 -Quorate: Yes - -Votequorum information ----------------------- -Expected votes: 3 -Highest expected: 3 -Total votes: 3 -Quorum: 2 -Flags: Quorate - -Membership information ----------------------- - Nodeid Votes Name -[PRIVATE_IP] [PRIVATE_IP].11 (local) -[PRIVATE_IP] [PRIVATE_IP].13 -[PRIVATE_IP] [PRIVATE_IP].12 - -Membership information ----------------------- - Nodeid Votes Name - 1 1 pve01 (local) - 2 1 pve03 - 3 1 pve02 -[{"cpu":[PRIVATE_IP]897229,"disk":0,"diskread":[PRIVATE_IP],"diskwrite":[PRIVATE_IP],"id":"qemu/100","maxcpu":4,"maxdisk":[PRIVATE_IP],"maxmem":[PRIVATE_IP],"mem":[PRIVATE_IP],"memhost":[PRIVATE_IP],"name":"pvepro-prod","netin":[PRIVATE_IP],"netout":[PRIVATE_IP],"node":"pve01","status":"running","template":0,"type":"qemu","uptime":5250,"vmid":100},{"cpu":[PRIVATE_IP]640791,"disk":[PRIVATE_IP],"diskread":[PRIVATE_IP],"diskwrite":[PRIVATE_IP],"id":"lxc/110","maxcpu":1,"maxdisk":[PRIVATE_IP],"maxmem":[PRIVATE_IP],"mem":[PRIVATE_IP],"memhost":0,"name":"dns1","netin":[PRIVATE_IP],"netout":[PRIVATE_IP],"node":"pve01","status":"running","template":0,"type":"lxc","uptime":[PRIVATE_IP],"vmid":110},{"cpu":[PRIVATE_IP][PRIVATE_IP],"disk":[PRIVATE_IP],"diskread":[PRIVATE_IP],"diskwrite":[PRIVATE_IP],"id":"lxc/111","maxcpu":1,"maxdisk":[PRIVATE_IP],"maxmem":[PRIVATE_IP],"mem":[PRIVATE_IP],"memhost":0,"name":"dns2","netin":[PRIVATE_IP],"netout":[PRIVATE_IP],"node":"pve02","status":"running","template":0,"type":"lxc","uptime":[PRIVATE_IP],"vmid":111},{"cpu":0,"disk":[PRIVATE_IP],"diskread":[PRIVATE_IP],"diskwrite":[PRIVATE_IP],"id":"lxc/112","maxcpu":1,"maxdisk":[PRIVATE_IP],"maxmem":[PRIVATE_IP],"mem":[PRIVATE_IP],"memhost":0,"name":"unbound1","netin":[PRIVATE_IP],"netout":[PRIVATE_IP],"node":"pve01","status":"running","template":0,"type":"lxc","uptime":[PRIVATE_IP],"vmid":112},{"cpu":[PRIVATE_IP]331e-05,"disk":[PRIVATE_IP],"diskread":[PRIVATE_IP],"diskwrite":[PRIVATE_IP],"id":"lxc/113","maxcpu":1,"maxdisk":[PRIVATE_IP],"maxmem":[PRIVATE_IP],"mem":[PRIVATE_IP],"memhost":0,"name":"unbound2","netin":[PRIVATE_IP],"netout":[PRIVATE_IP],"node":"pve02","status":"running","template":0,"type":"lxc","uptime":[PRIVATE_IP],"vmid":113},{"cpu":[PRIVATE_IP]20741,"disk":0,"diskread":[PRIVATE_IP],"diskwrite":[PRIVATE_IP],"id":"qemu/130","maxcpu":4,"maxdisk":[PRIVATE_IP],"maxmem":[PRIVATE_IP],"mem":[PRIVATE_IP],"memhost":[PRIVATE_IP],"name":"edge-vm","netin":[PRIVATE_IP],"netout":[PRIVATE_IP],"node":"pve03","status":"running","template":0,"type":"qemu","uptime":[PRIVATE_IP],"vmid":130},{"cpu":[PRIVATE_IP]495382,"disk":0,"diskread":[PRIVATE_IP],"diskwrite":[PRIVATE_IP],"id":"qemu/150","maxcpu":4,"maxdisk":[PRIVATE_IP],"maxmem":[PRIVATE_IP],"mem":[PRIVATE_IP],"memhost":[PRIVATE_IP],"name":"snikket","netin":[PRIVATE_IP],"netout":[PRIVATE_IP],"node":"pve01","status":"running","template":0,"type":"qemu","uptime":[PRIVATE_IP],"vmid":150},{"cpu":[PRIVATE_IP]412429,"disk":0,"diskread":[PRIVATE_IP],"diskwrite":[PRIVATE_IP],"id":"qemu/160","maxcpu":4,"maxdisk":[PRIVATE_IP],"maxmem":[PRIVATE_IP],"mem":[PRIVATE_IP],"memhost":[PRIVATE_IP],"name":"forum-prod","netin":[PRIVATE_IP],"netout":[PRIVATE_IP],"node":"pve02","status":"running","template":0,"type":"qemu","uptime":[PRIVATE_IP],"vmid":160},{"cpu":[PRIVATE_IP]95902,"disk":0,"diskread":[PRIVATE_IP],"diskwrite":[PRIVATE_IP],"id":"qemu/170","maxcpu":4,"maxdisk":[PRIVATE_IP],"maxmem":[PRIVATE_IP],"mem":[PRIVATE_IP],"memhost":[PRIVATE_IP],"name":"core-apps","netin":[PRIVATE_IP],"netout":[PRIVATE_IP],"node":"pve01","status":"running","template":0,"type":"qemu","uptime":[PRIVATE_IP],"vmid":170},{"cpu":[PRIVATE_IP]41629,"disk":0,"diskread":[PRIVATE_IP],"diskwrite":[PRIVATE_IP],"id":"qemu/171","maxcpu":4,"maxdisk":[PRIVATE_IP],"maxmem":[PRIVATE_IP],"mem":[PRIVATE_IP],"memhost":[PRIVATE_IP],"name":"monitoring","netin":[PRIVATE_IP],"netout":[PRIVATE_IP],"node":"pve01","status":"running","template":0,"type":"qemu","uptime":[PRIVATE_IP],"vmid":171},{"cpu":[PRIVATE_IP]589864,"disk":0,"diskread":[PRIVATE_IP],"diskwrite":[PRIVATE_IP],"id":"qemu/190","maxcpu":4,"maxdisk":[PRIVATE_IP],"maxmem":[PRIVATE_IP],"mem":[PRIVATE_IP],"memhost":[PRIVATE_IP],"name":"homelab-ops-worker","netin":[PRIVATE_IP],"netout":[PRIVATE_IP],"node":"pve03","status":"running","template":0,"type":"qemu","uptime":[PRIVATE_IP],"vmid":190},{"cpu":[PRIVATE_IP]093534,"disk":0,"diskread":[PRIVATE_IP],"diskwrite":[PRIVATE_IP],"id":"qemu/210","maxcpu":2,"maxdisk":[PRIVATE_IP],"maxmem":[PRIVATE_IP],"mem":[PRIVATE_IP],"memhost":[PRIVATE_IP],"name":"newfi-prod","netin":[PRIVATE_IP],"netout":[PRIVATE_IP],"node":"pve01","status":"running","template":0,"type":"qemu","uptime":[PRIVATE_IP],"vmid":210},{"cpu":[PRIVATE_IP]239636,"disk":0,"diskread":[PRIVATE_IP],"diskwrite":[PRIVATE_IP],"id":"qemu/211","maxcpu":2,"maxdisk":[PRIVATE_IP],"maxmem":[PRIVATE_IP],"mem":[PRIVATE_IP],"memhost":[PRIVATE_IP],"name":"newfi-staging","netin":[PRIVATE_IP],"netout":[PRIVATE_IP],"node":"pve03","status":"running","template":0,"type":"qemu","uptime":[PRIVATE_IP],"vmid":211},{"cpu":0,"disk":0,"diskread":0,"diskwrite":0,"id":"qemu/9130","maxcpu":4,"maxdisk":[PRIVATE_IP],"maxmem":[PRIVATE_IP],"mem":0,"memhost":0,"name":"edge-cold-standby","netin":0,"netout":0,"node":"pve02","status":"stopped","template":0,"type":"qemu","uptime":0,"vmid":9130},{"cgroup-mode":2,"cpu":[PRIVATE_IP]5802,"disk":[PRIVATE_IP],"id":"node/pve02","level":"","maxcpu":4,"maxdisk":[PRIVATE_IP],"maxmem":[PRIVATE_IP],"mem":[PRIVATE_IP],"node":"pve02","status":"online","type":"node","uptime":[PRIVATE_IP]},{"cgroup-mode":2,"cpu":[PRIVATE_IP]72027,"disk":[PRIVATE_IP],"id":"node/pve03","level":"","maxcpu":8,"maxdisk":[PRIVATE_IP],"maxmem":[PRIVATE_IP],"mem":[PRIVATE_IP],"node":"pve03","status":"online","type":"node","uptime":[PRIVATE_IP]},{"cgroup-mode":2,"cpu":[PRIVATE_IP]50107,"disk":[PRIVATE_IP],"id":"node/pve01","level":"","maxcpu":24,"maxdisk":[PRIVATE_IP],"maxmem":[PRIVATE_IP],"mem":[PRIVATE_IP],"node":"pve01","status":"online","type":"node","uptime":[PRIVATE_IP]},{"content":"import,vztmpl,iso,backup","disk":[PRIVATE_IP],"id":"storage/pve02/local","maxdisk":[PRIVATE_IP],"node":"pve02","plugintype":"dir","shared":0,"status":"available","storage":"local","type":"storage"},{"content":"import,vztmpl,iso,backup","disk":[PRIVATE_IP],"id":"storage/pve03/local","maxdisk":[PRIVATE_IP],"node":"pve03","plugintype":"dir","shared":0,"status":"available","storage":"local","type":"storage"},{"content":"import,vztmpl,iso,backup","disk":[PRIVATE_IP],"id":"storage/pve01/local","maxdisk":[PRIVATE_IP],"node":"pve01","plugintype":"dir","shared":0,"status":"available","storage":"local","type":"storage"},{"content":"images,rootdir","disk":[PRIVATE_IP],"id":"storage/pve02/local-lvm","maxdisk":[PRIVATE_IP],"node":"pve02","plugintype":"lvmthin","shared":0,"status":"available","storage":"local-lvm","type":"storage"},{"content":"images,rootdir","disk":[PRIVATE_IP],"id":"storage/pve03/local-lvm","maxdisk":[PRIVATE_IP],"node":"pve03","plugintype":"lvmthin","shared":0,"status":"available","storage":"local-lvm","type":"storage"},{"content":"images,rootdir","disk":[PRIVATE_IP],"id":"storage/pve01/local-lvm","maxdisk":[PRIVATE_IP],"node":"pve01","plugintype":"lvmthin","shared":0,"status":"available","storage":"local-lvm","type":"storage"},{"id":"network/pve02/zone/localnetwork","network":"localnetwork","network-type":"zone","node":"pve02","status":"ok","type":"network"},{"id":"network/pve03/zone/localnetwork","network":"localnetwork","network-type":"zone","node":"pve03","status":"ok","type":"network"},{"id":"network/pve01/zone/localnetwork","network":"localnetwork","network-type":"zone","node":"pve01","status":"ok","type":"network"}] -Name Type Status Total (KiB) Used (KiB) Available (KiB) % -local dir active [PRIVATE_IP] [PRIVATE_IP] [PRIVATE_IP] 37.17% -local-lvm lvmthin active [PRIVATE_IP] [PRIVATE_IP] [PRIVATE_IP] 15.25% - UNIT LOAD ACTIVE SUB DESCRIPTION -● homelab-app-cloud-quorum-queue.service loaded failed failed Homelab canonical application cloud quorum backup queue -● homelab-backup-retention-gc.service loaded failed failed Homelab owner-aware cloud retention GC -● homelab-vm-cloud-quorum-queue.service loaded failed failed Homelab canonical VM/CT cloud quorum backup queue - -Legend: LOAD → Reflects whether the unit definition was properly loaded. - ACTIVE → The high-level unit activation state, i.e. generalization of SUB. - SUB → The low-level unit activation state, values depend on unit type. - -3 loaded units listed. -NEXT LEFT LAST PASSED UNIT ACTIVATES -Sun [PRIVATE_IP] 02:17:54 MSK 52s Sun [PRIVATE_IP] 02:16:54 MSK 8s ago homelab-router-watchdog.timer homelab-router-watchdog.service -Sun [PRIVATE_IP] 02:17:58 MSK 55s Sun [PRIVATE_IP] 02:16:58 MSK 4s ago homelab-private-vpn-hosts-health.timer homelab-private-vpn-hosts-health.service -Sun [PRIVATE_IP] 02:18:00 MSK 57s Sun [PRIVATE_IP] 02:03:00 MSK 14min ago prometheus-node-exporter-apt.timer prometheus-node-exporter-apt.service -Sun [PRIVATE_IP] 02:18:16 MSK 1min 13s Sun [PRIVATE_IP] 02:13:16 MSK 3min 46s ago homelab-smartctl-textfile.timer homelab-smartctl-textfile.service -Sun [PRIVATE_IP] 02:18:58 MSK 1min 55s Sun [PRIVATE_IP] 02:13:58 MSK 3min 4s ago netbird-peers-health.timer netbird-peers-health.service -Sun [PRIVATE_IP] 02:20:48 MSK 3min 45s Sun [PRIVATE_IP] 02:15:41 MSK 1min 21s ago homelab-health-metrics.timer homelab-health-metrics.service -Sun [PRIVATE_IP] 02:22:20 MSK 5min Sun [PRIVATE_IP] 02:12:20 MSK 4min 42s ago skladchik-reports-monitor-supervisor.timer skladchik-reports-monitor-supervisor.service -Sun [PRIVATE_IP] 02:22:33 MSK 5min Sun [PRIVATE_IP] 02:07:33 MSK 9min ago homelab-disk-space-health.timer homelab-disk-space-health.service -Sun [PRIVATE_IP] 02:22:58 MSK 5min Sun [PRIVATE_IP] 02:07:58 MSK 9min ago prometheus-node-exporter-nvme.timer prometheus-node-exporter-nvme.service -Sun [PRIVATE_IP] 02:25:58 MSK 8min Sun [PRIVATE_IP] 02:10:58 MSK 6min ago homelab-pve03-staging-capacity-health.timer homelab-pve03-staging-capacity-health.service -Sun [PRIVATE_IP] 02:30:00 MSK 12min Sun [PRIVATE_IP] 02:15:01 MSK 2min 1s ago homelab-incident-journal.timer homelab-incident-journal.service -Sun [PRIVATE_IP] 02:30:37 MSK 13min Sun [PRIVATE_IP] 02:15:16 MSK 1min 46s ago homelab-external-probe-vps-health.timer homelab-external-probe-vps-health.service -Sun [PRIVATE_IP] 02:31:02 MSK 13min Sun [PRIVATE_IP] 02:16:16 MSK 46s ago homelab-forum-snuffleupagus-health.timer homelab-forum-snuffleupagus-health.service -Sun [PRIVATE_IP] 02:31:08 MSK 14min Sun [PRIVATE_IP] 02:15:58 MSK 1min 4s ago homelab-duty-admin-v2.timer homelab-duty-admin-v2.service -Sun [PRIVATE_IP] 02:33:16 MSK 16min Sun [PRIVATE_IP] 02:01:34 MSK 15min ago homelab-mkdocs-auto-refresh.timer homelab-mkdocs-auto-refresh.service -Sun [PRIVATE_IP] 02:34:03 MSK 17min Sun [PRIVATE_IP] 02:02:58 MSK 14min ago homelab-reference-refresh.timer homelab-reference-refresh.service -Sun [PRIVATE_IP] 02:36:26 MSK 19min Sun [PRIVATE_IP] 02:06:59 MSK 10min ago homelab-backup-audit.timer homelab-backup-audit.service -Sun [PRIVATE_IP] 03:10:03 MSK 53min Sun [PRIVATE_IP] 03:10:22 MSK 6 days ago e2scrub_all.timer e2scrub_all.service -Sun [PRIVATE_IP] 03:10:58 MSK 53min Sun [PRIVATE_IP] 03:10:39 MSK 6 days ago xfs_scrub_all.timer xfs_scrub_all.service -Sun [PRIVATE_IP] 03:34:42 MSK 1h 17min Sat [PRIVATE_IP] 03:23:32 MSK 22h ago homelab-backup-retention-gc.timer homelab-backup-retention-gc.service -Sun [PRIVATE_IP] 03:55:46 MSK 1h 38min Sat [PRIVATE_IP] 14:33:32 MSK 11h ago apt-daily.timer apt-daily.service -Sun [PRIVATE_IP] 04:35:58 MSK 2h 18min Sat [PRIVATE_IP] 22:35:58 MSK 3h 41min ago homelab-vps-identity-audit.timer homelab-vps-identity-audit.service -Sun [PRIVATE_IP] 05:56:19 MSK 3h 39min Sat [PRIVATE_IP] 23:50:32 MSK 2h 26min ago homelab-evidence-root.timer homelab-evidence-root.service -Sun [PRIVATE_IP] 06:10:28 MSK 3h 53min Sat [PRIVATE_IP] 06:15:16 MSK 20h ago apt-daily-upgrade.timer apt-daily-upgrade.service -Sun [PRIVATE_IP] 07:09:03 MSK 4h 52min Sun [PRIVATE_IP] 00:59:30 MSK 1h 17min ago homelab-mailru-trash-gc.timer homelab-mailru-trash-gc.service -Sun [PRIVATE_IP] 07:11:14 MSK 4h 54min Sat [PRIVATE_IP] 07:18:31 MSK 18h ago homelab-drift-check.timer homelab-drift-check.service -Sun [PRIVATE_IP] 07:34:28 MSK 5h 17min Sat [PRIVATE_IP] 07:38:42 MSK 18h ago homelab-service-registry-check.timer homelab-service-registry-check.service -Sun [PRIVATE_IP] 07:40:18 MSK 5h 23min Sun [PRIVATE_IP] 07:35:56 MSK 6 days ago homelab-rotating-boot-drill.timer homelab-rotating-boot-drill.service -Sun [PRIVATE_IP] 07:46:29 MSK 5h 29min Sat [PRIVATE_IP] 07:40:16 MSK 18h ago homelab-dependency-map-check.timer homelab-dependency-map-check.service -Sun [PRIVATE_IP] 07:46:56 MSK 5h 29min Sat [PRIVATE_IP] 07:38:16 MSK 18h ago homelab-alerting-health.timer homelab-alerting-health.service -Sun [PRIVATE_IP] 07:57:31 MSK 5h 40min Sat [PRIVATE_IP] 07:56:58 MSK 18h ago homelab-desired-state-sync.timer homelab-desired-state-sync.service -Sun [PRIVATE_IP] 07:58:07 MSK 5h 41min Sat [PRIVATE_IP] 07:48:00 MSK 18h ago homelab-runbook-generate.timer homelab-runbook-generate.service -Sun [PRIVATE_IP] 07:58:31 MSK 5h 41min Sat [PRIVATE_IP] 07:56:58 MSK 18h ago homelab-duty-admin-report.timer homelab-duty-admin-report.service -Sun [PRIVATE_IP] 08:01:43 MSK 5h 44min Sat [PRIVATE_IP] 08:15:16 MSK 18h ago homelab-overall-health.timer homelab-overall-health.service -Sun [PRIVATE_IP] 08:06:27 MSK 5h 49min Sat [PRIVATE_IP] 11:53:32 MSK 14h ago man-db.timer man-db.service -Sun [PRIVATE_IP] 08:07:47 MSK 5h 50min Sat [PRIVATE_IP] 08:08:49 MSK 18h ago homelab-kuma-monitor-policy.timer homelab-kuma-monitor-policy.service -Sun [PRIVATE_IP] 08:24:01 MSK 6h Sat [PRIVATE_IP] 08:19:39 MSK 17h ago homelab-final-readiness-gate.timer homelab-final-readiness-gate.service -Sun [PRIVATE_IP] 08:42:10 MSK 6h Sat [PRIVATE_IP] 08:31:16 MSK 17h ago homelab-capacity-risk.timer homelab-capacity-risk.service -Sun [PRIVATE_IP] 08:46:34 MSK 6h Sat [PRIVATE_IP] 08:41:46 MSK 17h ago homelab-secret-exposure-guard.timer homelab-secret-exposure-guard.service -Sun [PRIVATE_IP] 08:54:41 MSK 6h Sat [PRIVATE_IP] 08:48:43 MSK 17h ago homelab-cluster-passport.timer homelab-cluster-passport.service -Sun [PRIVATE_IP] 09:01:11 MSK 6h Sat [PRIVATE_IP] 08:51:16 MSK 17h ago homelab-golden-state-index.timer homelab-golden-state-index.service -Sun [PRIVATE_IP] 10:15:00 MSK 7h Sat [PRIVATE_IP] 10:15:00 MSK 16h ago skladchik-reports-monitor-monthly-selftest-watch.timer skladchik-reports-monitor-monthly-selftest-watch.service -Sun [PRIVATE_IP] 16:47:58 MSK 14h Sat [PRIVATE_IP] 16:47:58 MSK 9h ago systemd-tmpfiles-clean.timer systemd-tmpfiles-clean.service -Mon [PRIVATE_IP] 00:00:00 MSK 21h Sun [PRIVATE_IP] 00:00:12 MSK 2h 16min ago dpkg-db-backup.timer dpkg-db-backup.service -Mon [PRIVATE_IP] 00:04:42 MSK 21h Mon [PRIVATE_IP] 00:10:39 MSK 6 days ago homelab-secret-sanity.timer homelab-secret-sanity.service -Mon [PRIVATE_IP] 00:07:36 MSK 21h Sun [PRIVATE_IP] 00:13:12 MSK 2h 3min ago homelab-evidence-catalog.timer homelab-evidence-catalog.service -Mon [PRIVATE_IP] 00:07:48 MSK 21h Sun [PRIVATE_IP] 00:02:02 MSK 2h 14min ago homelab-docker-health.timer homelab-docker-health.service -Mon [PRIVATE_IP] 00:09:14 MSK 21h Mon [PRIVATE_IP] 00:30:56 MSK 6 days ago fstrim.timer fstrim.service -Mon [PRIVATE_IP] 00:16:19 MSK 21h Sun [PRIVATE_IP] 00:01:46 MSK 2h 15min ago homelab-storage-capacity.timer homelab-storage-capacity.service -Mon [PRIVATE_IP] 00:17:22 MSK 22h Sun [PRIVATE_IP] 00:13:55 MSK 2h 3min ago homelab-quality-gate.timer homelab-quality-gate.service -Mon [PRIVATE_IP] 00:23:49 MSK 22h Sun [PRIVATE_IP] 00:04:32 MSK 2h 12min ago logrotate.timer logrotate.service -Mon [PRIVATE_IP] 02:49:53 MSK 24h Sun [PRIVATE_IP] 01:11:58 MSK 1h 5min ago pve-daily-update.timer pve-daily-update.service -- - Sun [PRIVATE_IP] 00:47:16 MSK 1h 29min ago homelab-backup-v2.timer homelab-backup-v2.service -- - - - prometheus-node-exporter-ipmitool-sensor.timer prometheus-node-exporter-ipmitool-sensor.service -- - - - prometheus-node-exporter-mellanox-hca-temp.timer prometheus-node-exporter-mellanox-hca-temp.service -- - - - prometheus-node-exporter-smartmon.timer prometheus-node-exporter-smartmon.service - -56 timers listed. -RUNTIME_MANIFEST_ID=df[PRIVATE_IP]ac9b5abd[PRIVATE_IP]b[PRIVATE_IP]d89496fb2bde[PRIVATE_IP] -EXPERIMENT_ID=5462ee[PRIVATE_IP]ebe[PRIVATE_IP]feb2ad[PRIVATE_IP]1ad87bbac0b8108 -COLLECTION_START_AT=[PRIVATE_IP]T[PRIVATE_IP]:00 -FIRST_COMPLETE_D1_CLOSE=[PRIVATE_IP]T[PRIVATE_IP]:00 -PRODUCTION_LAUNCH_ALLOWED=False -EXECUTION_AUTHORITY=False -RISK_AUTHORITY=False -STAGE_A_HEALTH=AWAITING_PRIMARY_FINALITY -FORENSIC_PREVIOUS_EPOCH_PRESERVED=YES - -## NEWFI_TASK6_AUTH_CHECKPOINT_V[PRIVATE_IP] -- Scope: historical accepted AUTH test, not a current SMTP connection test. -- Newfi approved SMTP account/sender: aleisaev@yandex.ru. -- Endpoint used by accepted test: smtp.yandex.ru:465 with certificate verification; single PLAIN initial response accepted with code 235. -- Evidence: incident ledger ### NEWFI_TASK6_YANDEX_AUTH_V2_OBSERVATION and ### NEWFI_TASK6_AUTH_PROOF_CLOSE_V1. -- No password file written, no application configuration changed, no mail sent by the accepted AUTH test. -- Persistent transport installation and application delivery are not proven by this checkpoint. Task6 is not complete. -- AUTH challenge and missing-file incidents closed; launch/session incident remains OPEN with original cause unproven. -- This update does not change VM211, VM160, routing, board state or Git. -- Other incidents and infrastructure health were not assessed. - - -## NEWFI_PRIVATE_STRUCTURE92_WRONG_MARKER_SCOPE_[PRIVATE_IP] CLOSURE -- Status: CLOSED -- RCA: NEWFI92 inspected the pve01 NEWFI90 attempt marker, which had not been finalized because the outer shell exited immediately after the guest returned RC3 following its successful rollback. The guest marker contained the true final rollback state. -- Correction: NEWFI93 required both the guest FINISHED/ROLLED_BACK record and a fresh exact demo-state readback before reconciling the outer NEWFI90 marker. NEWFI92 itself never reserved an attempt or mutated state. - - -## NEWFI_PRIVATE_NEWFI95_NESTED_TRIPLE_QUOTE_PARSE_[PRIVATE_IP] -- Status: OPEN -- Command: NEWFI95 -- Symptom: after the content-structure precheck passed, the pve03 Python wrapper failed to parse at the PHP line beginning with $root. No Portal discovery or application mutation was reached. -- RCA: an outer raw triple-single-quoted guest Python payload contained an inner raw triple-single-quoted PHP payload. The inner delimiter terminated the outer Python string, causing PHP source to be parsed as Python. -- Safety: NEWFI95 was read-only, created no attempt marker, and did not reach the intended nested guest execution. Do not replay NEWFI95. - - -## NEWFI_PRIVATE_NEWFI95_NESTED_TRIPLE_QUOTE_PARSE_[PRIVATE_IP] CLOSURE -- Status: CLOSED -- RCA: an inner triple-single-quoted PHP literal terminated the outer triple-single-quoted Python guest payload in NEWFI95. The wrapper therefore failed parsing before the intended Portal discovery executed. -- Correction: NEWFI96 removed the nested Python payload layer entirely and passed one Python program directly to VM211 through qm guest exec stdin. The read-only Portal contract completed with QGA exit 0 and the implementation worktree remained unchanged. OUTPUT_END CHAT_OUTPUT_END