maintenanceMode = $maintenanceMode;
$this->ipValidator = $ipValidator;
parent::__construct();
}
/**
* Initialization of the command
*
* @return void
*/
protected function configure()
{
$options = [
new InputOption(
self::INPUT_KEY_IP,
null,
InputOption::VALUE_IS_ARRAY | InputOption::VALUE_REQUIRED,
"Allowed IP addresses (use 'none' to clear allowed IP list)"
),
];
$this->setDefinition($options);
parent::configure();
}
/**
* Get maintenance mode to set
*
* @return bool
*/
abstract protected function isEnable();
/**
* Get display string after mode is set
*
* @return string
*/
abstract protected function getDisplayString();
/**
* {@inheritdoc}
*/
protected function execute(InputInterface $input, OutputInterface $output)
{
$addresses = $input->getOption(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;
}
$this->maintenanceMode->set($this->isEnable());
$output->writeln($this->getDisplayString());
if (!empty($addresses)) {
$addresses = implode(',', $addresses);
$addresses = ('none' == $addresses) ? '' : $addresses;
$this->maintenanceMode->setAddresses($addresses);
$output->writeln(
'Set exempt IP-addresses: ' . (implode(', ', $this->maintenanceMode->getAddressInfo()) ?: '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, true);
}
}