Make server domain pattern block reason mandatory
This commit is contained in:
parent
e35651c44a
commit
97ccb4d2c4
|
@ -155,12 +155,12 @@ HELP;
|
||||||
*/
|
*/
|
||||||
private function addBlockedServer(): int
|
private function addBlockedServer(): int
|
||||||
{
|
{
|
||||||
if (count($this->args) < 2 || count($this->args) > 3) {
|
if (count($this->args) != 3) {
|
||||||
throw new CommandArgsException('Add needs a domain pattern and optionally a reason.');
|
throw new CommandArgsException('Add needs a domain pattern and a reason.');
|
||||||
}
|
}
|
||||||
|
|
||||||
$pattern = $this->getArgument(1);
|
$pattern = $this->getArgument(1);
|
||||||
$reason = (count($this->args) === 3) ? $this->getArgument(2) : DomainPatternBlocklist::DEFAULT_REASON;
|
$reason = $this->getArgument(2);
|
||||||
|
|
||||||
$result = $this->blocklist->addPattern($pattern, $reason);
|
$result = $this->blocklist->addPattern($pattern, $reason);
|
||||||
if ($result) {
|
if ($result) {
|
||||||
|
|
|
@ -31,8 +31,6 @@ use Friendica\Util\Emailer;
|
||||||
|
|
||||||
class DomainPatternBlocklist
|
class DomainPatternBlocklist
|
||||||
{
|
{
|
||||||
const DEFAULT_REASON = 'blocked';
|
|
||||||
|
|
||||||
/** @var IManageConfigValues */
|
/** @var IManageConfigValues */
|
||||||
private $config;
|
private $config;
|
||||||
|
|
||||||
|
@ -73,11 +71,11 @@ class DomainPatternBlocklist
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param string $pattern
|
* @param string $pattern
|
||||||
* @param string|null $reason
|
* @param string $reason
|
||||||
* @return int 0 if the block list couldn't be saved, 1 if the pattern was added, 2 if it was updated in place
|
* @return int 0 if the block list couldn't be saved, 1 if the pattern was added, 2 if it was updated in place
|
||||||
*/
|
*/
|
||||||
public function addPattern(string $pattern, string $reason = null): int
|
public function addPattern(string $pattern, string $reason): int
|
||||||
{
|
{
|
||||||
$update = false;
|
$update = false;
|
||||||
|
|
||||||
|
@ -86,7 +84,7 @@ class DomainPatternBlocklist
|
||||||
if ($blocked['domain'] === $pattern) {
|
if ($blocked['domain'] === $pattern) {
|
||||||
$blocklist[] = [
|
$blocklist[] = [
|
||||||
'domain' => $pattern,
|
'domain' => $pattern,
|
||||||
'reason' => $reason ?? self::DEFAULT_REASON,
|
'reason' => $reason,
|
||||||
];
|
];
|
||||||
|
|
||||||
$update = true;
|
$update = true;
|
||||||
|
@ -98,7 +96,7 @@ class DomainPatternBlocklist
|
||||||
if (!$update) {
|
if (!$update) {
|
||||||
$blocklist[] = [
|
$blocklist[] = [
|
||||||
'domain' => $pattern,
|
'domain' => $pattern,
|
||||||
'reason' => $reason ?? self::DEFAULT_REASON,
|
'reason' => $reason,
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -179,18 +177,11 @@ class DomainPatternBlocklist
|
||||||
|
|
||||||
$blocklist = [];
|
$blocklist = [];
|
||||||
while (($data = fgetcsv($fp, 1000)) !== false) {
|
while (($data = fgetcsv($fp, 1000)) !== false) {
|
||||||
$domain = $data[0];
|
$item = [
|
||||||
if (count($data) == 0) {
|
'domain' => $data[0],
|
||||||
$reason = self::DEFAULT_REASON;
|
'reason' => $data[1] ?? '',
|
||||||
} else {
|
|
||||||
$reason = $data[1];
|
|
||||||
}
|
|
||||||
|
|
||||||
$data = [
|
|
||||||
'domain' => $domain,
|
|
||||||
'reason' => $reason
|
|
||||||
];
|
];
|
||||||
if (!in_array($data, $blocklist)) {
|
if (!in_array($item, $blocklist)) {
|
||||||
$blocklist[] = $data;
|
$blocklist[] = $data;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -93,25 +93,6 @@ CONS;
|
||||||
self::assertEquals('The domain pattern \'testme.now\' is now blocked. (Reason: \'I like it!\')' . "\n", $txt);
|
self::assertEquals('The domain pattern \'testme.now\' is now blocked. (Reason: \'I like it!\')' . "\n", $txt);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Test blockedservers add command with the default reason
|
|
||||||
*/
|
|
||||||
public function testAddBlockedServerWithDefaultReason()
|
|
||||||
{
|
|
||||||
$this->blocklistMock
|
|
||||||
->shouldReceive('addPattern')
|
|
||||||
->with('testme.now', DomainPatternBlocklist::DEFAULT_REASON)
|
|
||||||
->andReturn(1)
|
|
||||||
->once();
|
|
||||||
|
|
||||||
$console = new ServerBlock($this->blocklistMock, $this->consoleArgv);
|
|
||||||
$console->setArgument(0, 'add');
|
|
||||||
$console->setArgument(1, 'testme.now');
|
|
||||||
$txt = $this->dumpExecute($console);
|
|
||||||
|
|
||||||
self::assertEquals('The domain pattern \'testme.now\' is now blocked. (Reason: \'' . DomainPatternBlocklist::DEFAULT_REASON . '\')' . "\n", $txt);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test blockedservers add command on existed domain
|
* Test blockedservers add command on existed domain
|
||||||
*/
|
*/
|
||||||
|
@ -170,16 +151,16 @@ CONS;
|
||||||
{
|
{
|
||||||
$this->blocklistMock
|
$this->blocklistMock
|
||||||
->shouldReceive('removePattern')
|
->shouldReceive('removePattern')
|
||||||
->with('not.exiting')
|
->with('not.existing')
|
||||||
->andReturn(1)
|
->andReturn(1)
|
||||||
->once();
|
->once();
|
||||||
|
|
||||||
$console = new ServerBlock($this->blocklistMock, $this->consoleArgv);
|
$console = new ServerBlock($this->blocklistMock, $this->consoleArgv);
|
||||||
$console->setArgument(0, 'remove');
|
$console->setArgument(0, 'remove');
|
||||||
$console->setArgument(1, 'not.exiting');
|
$console->setArgument(1, 'not.existing');
|
||||||
$txt = $this->dumpExecute($console);
|
$txt = $this->dumpExecute($console);
|
||||||
|
|
||||||
self::assertEquals('The domain pattern \'not.exiting\' wasn\'t blocked.' . "\n", $txt);
|
self::assertEquals('The domain pattern \'not.existing\' wasn\'t blocked.' . "\n", $txt);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -191,7 +172,14 @@ CONS;
|
||||||
$console->setArgument(0, 'add');
|
$console->setArgument(0, 'add');
|
||||||
$txt = $this->dumpExecute($console);
|
$txt = $this->dumpExecute($console);
|
||||||
|
|
||||||
self::assertStringStartsWith('[Warning] Add needs a domain pattern and optionally a reason.', $txt);
|
self::assertStringStartsWith('[Warning] Add needs a domain pattern and a reason.', $txt);
|
||||||
|
|
||||||
|
$console = new ServerBlock($this->blocklistMock, $this->consoleArgv);
|
||||||
|
$console->setArgument(0, 'add');
|
||||||
|
$console->setArgument(1, 'testme.now');
|
||||||
|
$txt = $this->dumpExecute($console);
|
||||||
|
|
||||||
|
self::assertStringStartsWith('[Warning] Add needs a domain pattern and a reason.', $txt);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -201,13 +189,14 @@ CONS;
|
||||||
{
|
{
|
||||||
$this->blocklistMock
|
$this->blocklistMock
|
||||||
->shouldReceive('addPattern')
|
->shouldReceive('addPattern')
|
||||||
->with('testme.now', DomainPatternBlocklist::DEFAULT_REASON)
|
->with('testme.now', 'I like it!')
|
||||||
->andReturn(0)
|
->andReturn(0)
|
||||||
->once();
|
->once();
|
||||||
|
|
||||||
$console = new ServerBlock($this->blocklistMock, $this->consoleArgv);
|
$console = new ServerBlock($this->blocklistMock, $this->consoleArgv);
|
||||||
$console->setArgument(0, 'add');
|
$console->setArgument(0, 'add');
|
||||||
$console->setArgument(1, 'testme.now');
|
$console->setArgument(1, 'testme.now');
|
||||||
|
$console->setArgument(2, 'I like it!');
|
||||||
$txt = $this->dumpExecute($console);
|
$txt = $this->dumpExecute($console);
|
||||||
|
|
||||||
self::assertEquals('Couldn\'t save \'testme.now\' as blocked domain pattern' . "\n", $txt);
|
self::assertEquals('Couldn\'t save \'testme.now\' as blocked domain pattern' . "\n", $txt);
|
||||||
|
|
Loading…
Reference in New Issue
Block a user