CHAT_OUTPUT_BEGIN
COMMAND_ID=SUPPORT-260918-GRAM-SUPPORT-SERVICE-WORKER-SOURCE-RCA-READONLY-516R5RCA4
STATUS=OK
RC=0
HOST=pve01
MODE=read-only
COMPONENT=gram-support-service-worker-source-rca-readonly
REFERENCE_REGISTER_CHECK=OK
REFERENCE_SHA256=5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66
ERROR_REGISTER_CHECK=OK
ERROR_REGISTER_SHA256=3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0
COMMAND_SHA256=628189b0b18497cabb62b75d0fb6506209677e28954b6201c862bba85c776534
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=9742e5b94ef98a5dfa64fc2efe1dfef47880eaffad20efdf2bf9b72b47f7b6d6
SANITIZED_OUTPUT_SHA256=9742e5b94ef98a5dfa64fc2efe1dfef47880eaffad20efdf2bf9b72b47f7b6d6
OUTPUT_BEGIN
GRAM516R5RCA4_SAFE_REPORT={"err_truncated":false,"guest":{"core":[{"matches":[{"sep":true},{"line":125,"text":"\t\tswitch (get_class($reply))"},{"line":126,"text":"\t\t{"},{"line":127,"text":"\t\t\tcase Redirect::class:"},{"line":128,"text":"\t\t\tcase Reroute::class:"},{"line":129,"text":"\t\t\t\treturn false; // don't update anything, assume the next page will do it"},{"line":130,"text":""},{"line":131,"text":"\t\t\tcase Message::class:"},{"line":132,"text":"\t\t\tcase View::class:"},{"line":133,"text":"\t\t\t\t$viewState = 'valid';"},{"line":134,"text":"\t\t\t\tbreak;"},{"line":135,"text":"\t\t}"},{"line":136,"text":""},{"line":137,"text":"\t\tif ($reply->getResponseCode() >= 400)"},{"line":138,"text":"\t\t{"},{"line":139,"text":"\t\t\t$viewState = 'error';"},{"line":140,"text":"\t\t}"},{"line":141,"text":""},{"line":142,"text":"\t\treturn true;"},{"line":143,"text":"\t}"},{"line":144,"text":""},{"line":145,"text":"\tpublic function checkTfaRedirect()"},{"line":146,"text":"\t{"},{"line":147,"text":"\t\t$session = $this->session();"},{"line":148,"text":"\t\tif ($session->tfaLoginRedirect)"},{"line":149,"text":"\t\t{"},{"sep":true},{"line":219,"text":"\tpublic function assertNotDisabled($action)"},{"line":220,"text":"\t{"},{"line":221,"text":"\t\tif (\\XF::visitor()->user_state == 'disabled')"},{"line":222,"text":"\t\t{"},{"line":223,"text":"\t\t\tthrow $this->exception("},{"line":224,"text":"\t\t\t\t$this->plugin(ErrorPlugin::class)->actionDisabled()"},{"line":225,"text":"\t\t\t);"},{"line":226,"text":"\t\t}"},{"line":227,"text":"\t}"},{"line":228,"text":""},{"line":229,"text":"\tpublic function assertCanonicalBaseUrl($action)"},{"line":230,"text":"\t{"},{"line":231,"text":"\t\tif ($this->responseType != 'html')"},{"line":232,"text":"\t\t{"},{"line":233,"text":"\t\t\treturn;"},{"line":234,"text":"\t\t}"},{"line":235,"text":""},{"line":236,"text":"\t\tif (!$this->request->isGet() && !$this->request->isHead())"},{"line":237,"text":"\t\t{"},{"line":238,"text":"\t\t\treturn;"},{"line":239,"text":"\t\t}"},{"line":240,"text":""},{"line":241,"text":"\t\t$options = $this->options();"},{"line":242,"text":"\t\tif (!$options->boardUrlCanonical)"},{"line":243,"text":"\t\t{"},{"sep":true},{"line":273,"text":""},{"line":274,"text":"\t\t\tthrow $this->exception($reply);"},{"line":275,"text":"\t\t}"},{"line":276,"text":"\t}"},{"line":277,"text":""},{"line":278,"text":"\tpublic function assertBoardActive($action)"},{"line":279,"text":"\t{"},{"line":280,"text":"\t\t$options = $this->options();"},{"line":281,"text":"\t\tif (!$options->boardActive && !\\XF::visitor()->is_admin)"},{"line":282,"text":"\t\t{"},{"line":283,"text":"\t\t\t$reply = $this->message(new PreEscaped($options->boardInactiveMessage), $this->app->config('serviceUnavailableCode'));"},{"line":284,"text":"\t\t\t$reply->setPageParam('skipSidebarWidgets', true);"},{"line":285,"text":"\t\t\t$reply->setResponseHeader('Retry-After', 60);"},{"line":286,"text":"\t\t\t$reply->setResponseHeader('Refresh', 60);"},{"line":287,"text":""},{"line":288,"text":"\t\t\tthrow $this->exception($reply);"},{"line":289,"text":"\t\t}"},{"line":290,"text":"\t}"},{"line":291,"text":""},{"line":292,"text":"\tpublic function assertTfaRequirement($action)"},{"line":293,"text":"\t{"},{"line":294,"text":"\t\t$visitor = \\XF::visitor();"},{"line":295,"text":"\t\tif ($visitor->user_id"},{"line":296,"text":"\t\t\t&& empty($visitor->Option->use_tfa)"},{"line":297,"text":"\t\t\t&& \\XF::config('enableTfa')"},{"line":298,"text":"\t\t\t&& $visitor->hasPermission('general', 'requireTfa')"},{"sep":true},{"line":459,"text":"\t\treturn in_array($requestRoutePath, $whitelistRoutePaths, true);"},{"line":460,"text":"\t}"},{"line":461,"text":""},{"line":462,"text":"\tpublic function isEmbeddedImageRequest(): bool"},{"line":463,"text":"\t{"},{"line":464,"text":"\t\treturn $this->request->isEmbeddedImageRequest();"},{"line":465,"text":"\t}"},{"line":466,"text":""},{"line":467,"text":"\tpublic function assertNotEmbeddedImageRequest()"},{"line":468,"text":"\t{"},{"line":469,"text":"\t\tif ($this->isEmbeddedImageRequest())"},{"line":470,"text":"\t\t{"},{"line":471,"text":"\t\t\t$this->setResponseType('raw');"},{"line":472,"text":""},{"line":473,"text":"\t\t\t$view = $this->view('XF:Error\\EmbeddedImageRequest');"},{"line":474,"text":"\t\t\t$view->setResponseCode(406);"},{"line":475,"text":""},{"line":476,"text":"\t\t\tthrow $this->exception($view);"},{"line":477,"text":"\t\t}"},{"line":478,"text":"\t}"},{"line":479,"text":""},{"line":480,"text":"\tpublic function hasContentPendingApproval()"},{"line":481,"text":"\t{"},{"line":482,"text":"\t\t$pendingUntil = $this->session()->hasContentPendingUntil;"},{"line":483,"text":"\t\treturn ($pendingUntil && $pendingUntil >= \\XF::$time);"},{"line":484,"text":"\t}"},{"line":485,"text":""},{"line":486,"text":"\tprotected function isDiscouraged()"},{"sep":true},{"line":565,"text":"\tpublic function assertNotFlooding($action, $floodingLimit = null)"},{"line":566,"text":"\t{"},{"line":567,"text":"\t\t$visitor = \\XF::visitor();"},{"line":568,"text":"\t\tif ($visitor->hasPermission('general', 'bypassFloodCheck'))"},{"line":569,"text":"\t\t{"},{"line":570,"text":"\t\t\treturn;"},{"line":571,"text":"\t\t}"},{"line":572,"text":""},{"line":573,"text":"\t\t$floodChecker = $this->service(FloodCheckService::class);"},{"line":574,"text":"\t\t$timeRemaining = $floodChecker->checkFlooding($action, $visitor->user_id, $floodingLimit);"},{"line":575,"text":"\t\tif ($timeRemaining)"},{"line":576,"text":"\t\t{"},{"line":577,"text":"\t\t\tthrow $this->exception($this->responseFlooding($timeRemaining));"},{"line":578,"text":"\t\t}"},{"line":579,"text":"\t}"},{"line":580,"text":""},{"line":581,"text":"\tpublic function responseFlooding($floodSeconds)"},{"line":582,"text":"\t{"},{"line":583,"text":"\t\treturn $this->error(\\XF::phrase('must_wait_x_seconds_before_performing_this_action', ['count' => $floodSeconds]));"},{"line":584,"text":"\t}"},{"line":585,"text":""},{"line":586,"text":"\tpublic function isRobot()"},{"line":587,"text":"\t{"},{"line":588,"text":"\t\treturn boolval($this->request->getRobotName());"},{"line":589,"text":"\t}"},{"line":590,"text":""},{"line":591,"text":"\t/**"},{"line":592,"text":"\t * @return IpRepository"},{"line":593,"text":"\t */"}],"path":"src/XF/Pub/Controller/AbstractController.php","present":true,"sha256":"023efffff88cd1675173f30a8104d25fb220a5d8dc989d89c33d3ba09b0c0169"}],"error":null,"files":[{"matches":[],"path":"Pub/Controller/Support.php","present":true,"sha256":"6cb34b1d27e9f0132263637cefa62fe0e998a9a86620b7ac33199f41ee86f9d4"},{"matches":[],"path":"Pub/Controller/StaffSupport.php","present":true,"sha256":"6852bd0061d6e118851673bfd4099e2b22e6291bf09f429820740844996f93f9"},{"matches":[{"sep":true},{"line":1,"text":"<?xml version='1.0' encoding='utf-8'?>"},{"line":2,"text":"<routes>"},{"line":3,"text":"  <route route_type=\"public\" route_prefix=\"support\" sub_name=\"\" format=\"\" controller=\"Gram\\Support:Support\" context=\"\" action_prefix=\"\" />"},{"line":4,"text":"  <route route_type=\"public\" route_prefix=\"account\" sub_name=\"support\" format=\"support\" controller=\"Gram\\Support:AccountSupport\" context=\"\" action_prefix=\"\" />"},{"line":5,"text":"  <route route_type=\"public\" route_prefix=\"support\" sub_name=\"staff\" format=\"staff\" controller=\"Gram\\Support:StaffSupport\" context=\"\" action_prefix=\"\" />"},{"line":6,"text":"  <route route_type=\"public\" route_prefix=\"support\" sub_name=\"service-worker\" format=\"service-worker\" controller=\"Gram\\Support:Pwa\" context=\"\" action_prefix=\"\" />"},{"line":7,"text":"</routes>"}],"path":"_data/routes.xml","present":true,"sha256":"c80e6b0f7153993915d8bbc8ee6b36e6386b00bb1865d6aff050f9c1fd1f0302"},{"matches":[{"sep":true},{"line":553,"text":"&lt;xf:if is=\"$xf.options.gramSupportSiteId\"&gt;"},{"line":554,"text":"\t&lt;a class=\"gramSupport-launcher button button--primary\""},{"line":555,"text":"\t\thref=\"{{ link('support/create') }}\""},{"line":556,"text":"\t\taria-label=\"{{ phrase('gram_support_open_support') }}\"&gt;"},{"line":557,"text":"\t\t{{ phrase('gram_support_open_support') }}"},{"line":558,"text":"\t&lt;/a&gt;"},{"line":559,"text":"&lt;/xf:if&gt;"},{"line":560,"text":"</template>"},{"line":561,"text":"  <template type=\"public\" title=\"gram_support_staff_queue\" version_id=\"1000050\" version_string=\"1.0.0 Alpha 3 Unified Fix 3\">&lt;xf:title&gt;{{ phrase('gram_support_staff_queue') }}&lt;/xf:title&gt;"},{"line":562,"text":"&lt;xf:css src=\"gram_support.less\" /&gt;"},{"line":563,"text":"&lt;span class=\"js-gramSupportPwaConfig\" hidden"},{"line":564,"text":"\tdata-manifest-url=\"{{ base_url('js/gram/support/pwa/manifest.webmanifest') }}\""},{"line":565,"text":"\tdata-sw-url=\"{{ link('support/service-worker') }}\"&gt;&lt;/span&gt;"},{"line":566,"text":"&lt;xf:js addon=\"Gram/Support\" src=\"gram/support/staff-pwa.js\" min=\"1\" /&gt;"},{"line":567,"text":""},{"line":568,"text":"&lt;div class=\"block\"&gt;"},{"line":569,"text":"\t&lt;div class=\"block-container\"&gt;"},{"line":570,"text":"\t\t&lt;div class=\"block-body\"&gt;"},{"line":571,"text":"\t\t\t&lt;xf:foreach loop=\"$tickets\" value=\"$ticket\"&gt;"},{"line":572,"text":"\t\t\t\t&lt;div class=\"block-row\"&gt;"},{"line":573,"text":"\t\t\t\t\t&lt;a href=\"{{ link('support/staff/ticket', null, {'ref': $ticket.public_ref}) }}\"&gt;"},{"line":574,"text":"\t\t\t\t\t\t{{ $ticket.public_ref }} \u2014 {{ $ticket.subject }}"},{"line":575,"text":"\t\t\t\t\t&lt;/a&gt;"},{"line":576,"text":"\t\t\t\t\t&lt;span class=\"u-muted\"&gt;"},{"line":577,"text":"&lt;xf:if is=\"$ticket.status == 'NEW'\"&gt;\u041d\u043e\u0432\u044b\u0439"},{"sep":true},{"line":579,"text":"&lt;xf:elseif is=\"$ticket.status == 'WAITING_USER'\" /&gt;\u041e\u0436\u0438\u0434\u0430\u0435\u0442 \u043e\u0442\u0432\u0435\u0442\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f"},{"line":580,"text":"&lt;xf:elseif is=\"$ticket.status == 'RESOLVED'\" /&gt;\u0420\u0435\u0448\u0451\u043d"},{"line":581,"text":"&lt;xf:elseif is=\"$ticket.status == 'CLOSED'\" /&gt;\u0417\u0430\u043a\u0440\u044b\u0442"},{"line":582,"text":"&lt;xf:else /&gt;{{ $ticket.status }}"},{"line":583,"text":"&lt;/xf:if&gt;"},{"line":584,"text":"&lt;/span&gt;"},{"line":585,"text":"\t\t\t\t&lt;/div&gt;"},{"line":586,"text":"\t\t\t&lt;/xf:foreach&gt;"},{"line":587,"text":"\t\t&lt;/div&gt;"},{"line":588,"text":"\t&lt;/div&gt;"},{"line":589,"text":"&lt;/div&gt;"},{"line":590,"text":"</template>"},{"line":591,"text":"  <template type=\"public\" title=\"gram_support_staff_service_worker\" version_id=\"1000050\" version_string=\"1.0.0 Alpha 3 Unified Fix 3\">'use strict';"},{"line":592,"text":""},{"line":593,"text":"const OFFLINE_URL = '{{ base_url('js/gram/support/pwa/offline.html')|escape('js') }}';"},{"line":594,"text":"const STATIC_CACHE = 'gram-support-staff-static-v1';"},{"line":595,"text":""},{"line":596,"text":"self.addEventListener('install', event =&gt; {"},{"line":597,"text":"\tevent.waitUntil("},{"line":598,"text":"\t\tcaches.open(STATIC_CACHE)"},{"line":599,"text":"\t\t\t.then(cache =&gt; cache.addAll([OFFLINE_URL]))"},{"line":600,"text":"\t\t\t.then(() =&gt; self.skipWaiting())"},{"line":601,"text":"\t);"},{"line":602,"text":"});"},{"line":603,"text":""},{"sep":true},{"line":655,"text":"\t\t\t\t\treturn response;"},{"line":656,"text":"\t\t\t\t});"},{"line":657,"text":"\t\t\t\treturn cached || network;"},{"line":658,"text":"\t\t\t})"},{"line":659,"text":"\t\t)"},{"line":660,"text":"\t);"},{"line":661,"text":"});"},{"line":662,"text":"</template>"},{"line":663,"text":"  <template type=\"public\" title=\"gram_support_staff_ticket\" version_id=\"1000050\" version_string=\"1.0.0 Alpha 3 Unified Fix 3\">&lt;xf:title&gt;{{ phrase('gram_support_staff_ticket') }} {{ $ticket.public_ref }}&lt;/xf:title&gt;"},{"line":664,"text":"&lt;xf:css src=\"gram_support.less\" /&gt;"},{"line":665,"text":"&lt;span class=\"js-gramSupportPwaConfig\" hidden"},{"line":666,"text":"\tdata-manifest-url=\"{{ base_url('js/gram/support/pwa/manifest.webmanifest') }}\""},{"line":667,"text":"\tdata-sw-url=\"{{ link('support/service-worker') }}\"&gt;&lt;/span&gt;"},{"line":668,"text":"&lt;xf:js addon=\"Gram/Support\" src=\"gram/support/staff-pwa.js\" min=\"1\" /&gt;"},{"line":669,"text":""},{"line":670,"text":"&lt;div class=\"block\"&gt;"},{"line":671,"text":"\t&lt;div class=\"block-container\"&gt;"},{"line":672,"text":"\t\t&lt;h2 class=\"block-header\"&gt;{{ $ticket.public_ref }} \u2014 {{ $ticket.subject }}&lt;/h2&gt;"},{"line":673,"text":"\t\t&lt;div class=\"block-body\"&gt;"},{"line":674,"text":"\t\t\t&lt;xf:foreach loop=\"$messages\" value=\"$message\"&gt;"},{"line":675,"text":"\t\t\t\t&lt;div class=\"block-row {{ $message.is_internal ? 'gramSupport-message--internal' : '' }}\"&gt;"},{"line":676,"text":"\t\t\t\t\t&lt;div class=\"gramSupport-messageMeta\"&gt;"},{"line":677,"text":"\t\t\t\t\t\t{{ date_time($message.message_date) }}"},{"line":678,"text":"\t\t\t\t\t\t&lt;xf:if is=\"$message.is_internal\"&gt; \u00b7 {{ phrase('gram_support_internal_note') }}&lt;/xf:if&gt;"},{"line":679,"text":"\t\t\t\t\t&lt;/div&gt;"}],"path":"_data/templates.xml","present":true,"sha256":"04ed000e02dd040f0587cf276f8c2ad332b568c951b58bd5767df78406e10239"},{"matches":[],"path":"addon.json","present":true,"sha256":"566f1739937088517f5ef0dd2d20bc92460084028180c16502931fa86057aea5"}],"occurrences":[{"hit_count":2,"hits":[{"line":25,"text":"            'Gram\\Support:PwaServiceWorker',"},{"line":26,"text":"            'gram_support_staff_service_worker',"}],"path":"Pub/Controller/Pwa.php","sha256":"9e3217d9524349a8137b89d418e4693ca17f8e5f61ba5b563fff747d1014efb3"},{"hit_count":2,"hits":[{"line":5,"text":"class PwaServiceWorker extends \\XF\\Mvc\\View"},{"line":12,"text":"            'public:gram_support_staff_service_worker',"}],"path":"Pub/View/PwaServiceWorker.php","sha256":"700f01f005b818d63267e70dac7669a606c78fabbef5d3e01731c49db3d0be04"},{"hit_count":1,"hits":[{"line":6,"text":"  <route route_type=\"public\" route_prefix=\"support\" sub_name=\"service-worker\" format=\"service-worker\" controller=\"Gram\\Support:Pwa\" context=\"\" action_prefix=\"\" />"}],"path":"_data/routes.xml","sha256":"c80e6b0f7153993915d8bbc8ee6b36e6386b00bb1865d6aff050f9c1fd1f0302"},{"hit_count":3,"hits":[{"line":565,"text":"\tdata-sw-url=\"{{ link('support/service-worker') }}\"&gt;&lt;/span&gt;"},{"line":591,"text":"  <template type=\"public\" title=\"gram_support_staff_service_worker\" version_id=\"1000050\" version_string=\"1.0.0 Alpha 3 Unified Fix 3\">'use strict';"},{"line":667,"text":"\tdata-sw-url=\"{{ link('support/service-worker') }}\"&gt;&lt;/span&gt;"}],"path":"_data/templates.xml","sha256":"04ed000e02dd040f0587cf276f8c2ad332b568c951b58bd5767df78406e10239"},{"hit_count":1,"hits":[{"line":30,"text":"  \"src/addons/Gram/Support/Pub/View/PwaServiceWorker.php\": \"700f01f005b818d63267e70dac7669a606c78fabbef5d3e01731c49db3d0be04\","}],"path":"hashes.json","sha256":"1f947a585ee5d5936c6d1c73a7d4602c0f77ceafd98936df74b89a6a4538921f"}],"ok":true},"guest_stderr_present":false,"inner_rc":0,"ok":true,"out_truncated":false,"transport_rc":0,"transport_stderr_bytes":0,"transport_stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"}
GRAM516R5RCA4_DECISION=PASS_SERVICE_WORKER_SOURCE_EVIDENCE_CAPTURED
GRAM516R5RCA4_NEXT_GATE=BUILD_EXACT_SERVICE_WORKER_FIX
HOMELAB_RESULT_CONTRACT={"version":1,"command_id":"SUPPORT-260918-GRAM-SUPPORT-SERVICE-WORKER-SOURCE-RCA-READONLY-516R5RCA4","status":"OK","changes_made":false,"rollback_started":false,"rollback_restored":null}

OUTPUT_END
CHAT_OUTPUT_END
