<?php
/**
- * @copyright Copyright (C) 2020, Friendica
+ * @copyright Copyright (C) 2010-2021, the Friendica project
*
* @license GNU AGPL version 3 or any later version
*
use Asika\SimpleConsole\CommandArgsException;
use Asika\SimpleConsole\Console;
use Console_Table;
-use Friendica\Core\Config\IConfig;
+use Friendica\Core\Config\Capability\IManageConfigValues;
/**
* Manage blocked servers
protected $helpOptions = ['h', 'help', '?'];
/**
- * @var IConfig
+ * @var IManageConfigValues
*/
private $config;
return $help;
}
- public function __construct(IConfig $config, $argv = null)
+ public function __construct(IManageConfigValues $config, $argv = null)
{
parent::__construct($argv);
* Exports the list of blocked domains including the reason for the
* block to a CSV file.
*
- * @param IConfig $config
+ * @param IManageConfigValues $config
*/
- private function exportBlockedServers(IConfig $config)
+ private function exportBlockedServers(IManageConfigValues $config)
{
$filename = $this->getArgument(1);
$blocklist = $config->get('system', 'blocklist', []);
$fp = fopen($filename, 'w');
+ if (!$fp) {
+ throw new Exception(sprintf('The file "%s" could not be created.', $filename));
+ }
foreach ($blocklist as $domain) {
fputcsv($fp, $domain);
}
* Imports a list of domains and a reason for the block from a CSV
* file, e.g. created with the export function.
*
- * @param IConfig $config
+ * @param IManageConfigValues $config
*/
- private function importBlockedServers(IConfig $config)
+ private function importBlockedServers(IManageConfigValues $config)
{
$filename = $this->getArgument(1);
$currBlockList = $config->get('system', 'blocklist', []);
$newBlockList = [];
- if (($fp = fopen($filename, 'r')) !== FALSE) {
- while (($data = fgetcsv($fp, 1000, ',')) !== FALSE) {
+ if (($fp = fopen($filename, 'r')) !== false) {
+ while (($data = fgetcsv($fp, 1000, ',')) !== false) {
$domain = $data[0];
- if (count($data) == 0) {
+ if (count($data) == 0) {
$reason = self::DEFAULT_REASON;
} else {
$reason = $data[1];
'domain' => $domain,
'reason' => $reason
];
- if (!in_array($data, $newBlockList))
+ if (!in_array($data, $newBlockList)) {
$newBlockList[] = $data;
+ }
}
foreach ($currBlockList as $blocked) {
- if (!in_array($blocked, $newBlockList))
+ if (!in_array($blocked, $newBlockList)) {
$newBlockList[] = $blocked;
+ }
}
if ($config->set('system', 'blocklist', $newBlockList)) {
$this->out(sprintf("Entries from %s that were not blocked before are now blocked", $filename));
return 1;
}
+ } else {
+ throw new Exception(sprintf('The file "%s" could not be opened for importing', $filename));
}
}
/**
* Prints the whole list of blocked domains including the reason
*
- /* @param IConfig $config
+ * @param IManageConfigValues $config
*/
- private function printBlockedServers(IConfig $config)
+ private function printBlockedServers(IManageConfigValues $config)
{
$table = new Console_Table();
$table->setHeaders(['Domain', 'Reason']);
/**
* Adds a server to the blocked list
*
- * @param IConfig $config
+ * @param IManageConfigValues $config
*
* @return int The return code (0 = success, 1 = failed)
*/
- private function addBlockedServer(IConfig $config)
+ private function addBlockedServer(IManageConfigValues $config)
{
if (count($this->args) < 2 || count($this->args) > 3) {
throw new CommandArgsException('Add needs a domain and optional a reason.');
/**
* Removes a server from the blocked list
*
- * @param IConfig $config
+ * @param IManageConfigValues $config
*
* @return int The return code (0 = success, 1 = failed)
*/
- private function removeBlockedServer(IConfig $config)
+ private function removeBlockedServer(IManageConfigValues $config)
{
if (count($this->args) !== 2) {
throw new CommandArgsException('Remove needs a second parameter.');