maintenanceMode = $maintenanceMode; $this->ipValidator = $ipValidator; parent::__construct(); } /** * Initialization of the command * * @return void */ protected function configure() { $arguments = [ new InputArgument( self::INPUT_KEY_IP, InputArgument::OPTIONAL | InputArgument::IS_ARRAY, 'Allowed IP addresses' ), ]; $options = [ new InputOption( self::INPUT_KEY_NONE, null, InputOption::VALUE_NONE, 'Clear allowed IP addresses' ), new InputOption( self::INPUT_KEY_ADD, null, InputOption::VALUE_NONE, 'Add the IP address to existing list' ), ]; $this->setName('maintenance:allow-ips') ->setDescription('Sets maintenance mode exempt IPs') ->setDefinition(array_merge($arguments, $options)); parent::configure(); } /** * {@inheritdoc} */ protected function execute(InputInterface $input, OutputInterface $output) { if (!$input->getOption(self::INPUT_KEY_NONE)) { $addresses = $input->getArgument(self::INPUT_KEY_IP); $messages = $this->validate($addresses); if (!empty($messages)) { $output->writeln('' . implode('' . PHP_EOL . '', $messages)); // we must have an exit code higher than zero to indicate something was wrong return \Magento\Framework\Console\Cli::RETURN_FAILURE; } if (!empty($addresses)) { if ($input->getOption(self::INPUT_KEY_ADD)) { $addresses = array_unique(array_merge($this->maintenanceMode->getAddressInfo(), $addresses)); } $this->maintenanceMode->setAddresses(implode(',', $addresses)); $output->writeln( 'Set exempt IP-addresses: ' . implode(' ', $this->maintenanceMode->getAddressInfo()) . '' ); } } else { $this->maintenanceMode->setAddresses(''); $output->writeln('Set exempt IP-addresses: none'); } return \Magento\Framework\Console\Cli::RETURN_SUCCESS; } /** * Validates IP addresses and return error messages * * @param string[] $addresses * @return string[] */ protected function validate(array $addresses) { return $this->ipValidator->validateIps($addresses, false); } }