appConfig = $appConfig; } protected function configure(): void { $this ->setName('nc_bot_webhooks:debug:toggle') ->setDescription('Enable or disable the debug endpoint') ->addOption('enable', 'e', InputOption::VALUE_NONE, 'Enable the debug endpoint') ->addOption('disable', 'd', InputOption::VALUE_NONE, 'Disable the debug endpoint') ->addOption('status', null, InputOption::VALUE_NONE, 'Show current debug endpoint status'); } protected function execute(InputInterface $input, OutputInterface $output): int { $io = new SymfonyStyle($input, $output); if ($input->getOption('status')) { $enabled = (bool) $this->appConfig->getValueBool(self::APP_ID, self::DEBUG_KEY, false); $io->success($enabled ? 'Debug endpoint is ENABLED' : 'Debug endpoint is DISABLED (default)'); return Command::SUCCESS; } if ($input->getOption('enable') && $input->getOption('disable')) { $io->error('Cannot use both --enable and --disable at the same time.'); return Command::INVALID; } if ($input->getOption('enable')) { $this->appConfig->setValueBool(self::APP_ID, self::DEBUG_KEY, true); $io->warning('Debug endpoint is now ENABLED. Anyone can access /apps/nc_bot_webhooks/debug.'); $io->note('To disable later, run: php occ nc_bot_webhooks:debug:disable'); return Command::SUCCESS; } if ($input->getOption('disable')) { $this->appConfig->setValueBool(self::APP_ID, self::DEBUG_KEY, false); $io->success('Debug endpoint is now DISABLED.'); return Command::SUCCESS; } // No flag: toggle $current = (bool) $this->appConfig->getValueBool(self::APP_ID, self::DEBUG_KEY, false); $this->appConfig->setValueBool(self::APP_ID, self::DEBUG_KEY, !$current); $next = !$current ? 'enabled' : 'disabled'; $io->success("Debug endpoint is now $next."); return Command::SUCCESS; } }