mirror of
https://github.com/friendica/friendica
synced 2024-11-19 07:03:40 +00:00
Merge pull request #7431 from MrPetovan/task/server-blocklist-wildcard
Add shell wildcard patterns feature to server blocklist
This commit is contained in:
commit
a2d9a2865a
6 changed files with 1511 additions and 1376 deletions
|
@ -23,15 +23,20 @@ class ServerBlock extends Console
|
||||||
protected function getHelp()
|
protected function getHelp()
|
||||||
{
|
{
|
||||||
$help = <<<HELP
|
$help = <<<HELP
|
||||||
console serverblock - Manage blocked servers
|
console serverblock - Manage blocked server domain patterns
|
||||||
Usage
|
Usage
|
||||||
bin/console serverblock [-h|--help|-?] [-v]
|
bin/console serverblock [-h|--help|-?] [-v]
|
||||||
bin/console serverblock add <server> <reason> [-h|--help|-?] [-v]
|
bin/console serverblock add <pattern> <reason> [-h|--help|-?] [-v]
|
||||||
bin/console serverblock remove <server> [-h|--help|-?] [-v]
|
bin/console serverblock remove <pattern> [-h|--help|-?] [-v]
|
||||||
|
|
||||||
Description
|
Description
|
||||||
With this tool, you can list the current blocked servers
|
With this tool, you can list the current blocked server domain patterns
|
||||||
or you can add / remove a blocked server from the list
|
or you can add / remove a blocked server domain pattern from the list.
|
||||||
|
|
||||||
|
Patterns are case-insensitive shell wildcard comprising the following special characters:
|
||||||
|
- * : Any number of characters
|
||||||
|
- ? : Any single character
|
||||||
|
- [<char1><char2>...] : char1 or char2 or...
|
||||||
|
|
||||||
Options
|
Options
|
||||||
-h|--help|-? Show help information
|
-h|--help|-? Show help information
|
||||||
|
|
|
@ -28,7 +28,7 @@ class Server extends BaseAdminModule
|
||||||
'reason' => Strings::escapeTags(trim($_POST['newentry_reason']))
|
'reason' => Strings::escapeTags(trim($_POST['newentry_reason']))
|
||||||
];
|
];
|
||||||
Config::set('system', 'blocklist', $blocklist);
|
Config::set('system', 'blocklist', $blocklist);
|
||||||
info(L10n::t('Server added to blocklist.') . EOL);
|
info(L10n::t('Server domain pattern added to blocklist.') . EOL);
|
||||||
} else {
|
} else {
|
||||||
// Edit the entries from blocklist
|
// Edit the entries from blocklist
|
||||||
$blocklist = [];
|
$blocklist = [];
|
||||||
|
@ -61,9 +61,9 @@ class Server extends BaseAdminModule
|
||||||
if (is_array($blocklist)) {
|
if (is_array($blocklist)) {
|
||||||
foreach ($blocklist as $id => $b) {
|
foreach ($blocklist as $id => $b) {
|
||||||
$blocklistform[] = [
|
$blocklistform[] = [
|
||||||
'domain' => ["domain[$id]", L10n::t('Blocked domain'), $b['domain'], '', L10n::t('The blocked domain'), 'required', '', ''],
|
'domain' => ["domain[$id]", L10n::t('Blocked server domain pattern'), $b['domain'], '', 'required', '', ''],
|
||||||
'reason' => ["reason[$id]", L10n::t("Reason for the block"), $b['reason'], L10n::t('The reason why you blocked this domain.') . '(' . $b['domain'] . ')', 'required', '', ''],
|
'reason' => ["reason[$id]", L10n::t("Reason for the block"), $b['reason'], '', 'required', '', ''],
|
||||||
'delete' => ["delete[$id]", L10n::t("Delete domain") . ' (' . $b['domain'] . ')', false, L10n::t("Check to delete this entry from the blocklist")]
|
'delete' => ["delete[$id]", L10n::t("Delete server domain pattern") . ' (' . $b['domain'] . ')', false, L10n::t("Check to delete this entry from the blocklist")]
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -71,16 +71,22 @@ class Server extends BaseAdminModule
|
||||||
$t = Renderer::getMarkupTemplate('admin/blocklist/server.tpl');
|
$t = Renderer::getMarkupTemplate('admin/blocklist/server.tpl');
|
||||||
return Renderer::replaceMacros($t, [
|
return Renderer::replaceMacros($t, [
|
||||||
'$title' => L10n::t('Administration'),
|
'$title' => L10n::t('Administration'),
|
||||||
'$page' => L10n::t('Server Blocklist'),
|
'$page' => L10n::t('Server Domain Pattern Blocklist'),
|
||||||
'$intro' => L10n::t('This page can be used to define a black list of servers from the federated network that are not allowed to interact with your node. For all entered domains you should also give a reason why you have blocked the remote server.'),
|
'$intro' => L10n::t('This page can be used to define a blacklist of server domain patterns from the federated network that are not allowed to interact with your node. For each domain pattern you should also provide the reason why you block it.'),
|
||||||
'$public' => L10n::t('The list of blocked servers will be made publically available on the /friendica page so that your users and people investigating communication problems can find the reason easily.'),
|
'$public' => L10n::t('The list of blocked server domain patterns will be made publically available on the <a href="/friendica">/friendica</a> page so that your users and people investigating communication problems can find the reason easily.'),
|
||||||
|
'$syntax' => L10n::t('<p>The server domain pattern syntax is case-insensitive shell wildcard, comprising the following special characters:</p>
|
||||||
|
<ul>
|
||||||
|
<li><code>*</code>: Any number of characters</li>
|
||||||
|
<li><code>?</code>: Any single character</li>
|
||||||
|
<li><code>[<char1><char2>...]</code>: char1 or char2</li>
|
||||||
|
</ul>'),
|
||||||
'$addtitle' => L10n::t('Add new entry to block list'),
|
'$addtitle' => L10n::t('Add new entry to block list'),
|
||||||
'$newdomain' => ['newentry_domain', L10n::t('Server Domain'), '', L10n::t('The domain of the new server to add to the block list. Do not include the protocol.'), 'required', '', ''],
|
'$newdomain' => ['newentry_domain', L10n::t('Server Domain Pattern'), '', L10n::t('The domain pattern of the new server to add to the block list. Do not include the protocol.'), 'required', '', ''],
|
||||||
'$newreason' => ['newentry_reason', L10n::t('Block reason'), '', L10n::t('The reason why you blocked this domain.'), 'required', '', ''],
|
'$newreason' => ['newentry_reason', L10n::t('Block reason'), '', L10n::t('The reason why you blocked this server domain pattern.'), 'required', '', ''],
|
||||||
'$submit' => L10n::t('Add Entry'),
|
'$submit' => L10n::t('Add Entry'),
|
||||||
'$savechanges' => L10n::t('Save changes to the blocklist'),
|
'$savechanges' => L10n::t('Save changes to the blocklist'),
|
||||||
'$currenttitle' => L10n::t('Current Entries in the Blocklist'),
|
'$currenttitle' => L10n::t('Current Entries in the Blocklist'),
|
||||||
'$thurl' => L10n::t('Blocked domain'),
|
'$thurl' => L10n::t('Blocked server domain pattern'),
|
||||||
'$threason' => L10n::t('Reason for the block'),
|
'$threason' => L10n::t('Reason for the block'),
|
||||||
'$delentry' => L10n::t('Delete entry from blocklist'),
|
'$delentry' => L10n::t('Delete entry from blocklist'),
|
||||||
'$entries' => $blocklistform,
|
'$entries' => $blocklistform,
|
||||||
|
|
|
@ -472,7 +472,7 @@ class Network
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach ($domain_blocklist as $domain_block) {
|
foreach ($domain_blocklist as $domain_block) {
|
||||||
if (strcasecmp($domain_block['domain'], $host) === 0) {
|
if (fnmatch(strtolower($domain_block['domain']), strtolower($host))) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -316,15 +316,20 @@ CONS;
|
||||||
$txt = $this->dumpExecute($console);
|
$txt = $this->dumpExecute($console);
|
||||||
|
|
||||||
$help = <<<HELP
|
$help = <<<HELP
|
||||||
console serverblock - Manage blocked servers
|
console serverblock - Manage blocked server domain patterns
|
||||||
Usage
|
Usage
|
||||||
bin/console serverblock [-h|--help|-?] [-v]
|
bin/console serverblock [-h|--help|-?] [-v]
|
||||||
bin/console serverblock add <server> <reason> [-h|--help|-?] [-v]
|
bin/console serverblock add <pattern> <reason> [-h|--help|-?] [-v]
|
||||||
bin/console serverblock remove <server> [-h|--help|-?] [-v]
|
bin/console serverblock remove <pattern> [-h|--help|-?] [-v]
|
||||||
|
|
||||||
Description
|
Description
|
||||||
With this tool, you can list the current blocked servers
|
With this tool, you can list the current blocked server domain patterns
|
||||||
or you can add / remove a blocked server from the list
|
or you can add / remove a blocked server domain pattern from the list.
|
||||||
|
|
||||||
|
Patterns are case-insensitive shell wildcard comprising the following special characters:
|
||||||
|
- * : Any number of characters
|
||||||
|
- ? : Any single character
|
||||||
|
- [<char1><char2>...] : char1 or char2 or...
|
||||||
|
|
||||||
Options
|
Options
|
||||||
-h|--help|-? Show help information
|
-h|--help|-? Show help information
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -6,14 +6,17 @@
|
||||||
<div id="adminpage">
|
<div id="adminpage">
|
||||||
<h1>{{$title}} - {{$page}}</h1>
|
<h1>{{$title}} - {{$page}}</h1>
|
||||||
<p>{{$intro}}</p>
|
<p>{{$intro}}</p>
|
||||||
<p>{{$public}}</p>
|
<p>{{$public nofilter}}</p>
|
||||||
|
{{$syntax nofilter}}
|
||||||
|
|
||||||
<h2>{{$addtitle}}</h2>
|
<h2>{{$addtitle}}</h2>
|
||||||
<form action="{{$baseurl}}/admin/blocklist/server" method="post">
|
<form action="{{$baseurl}}/admin/blocklist/server" method="post">
|
||||||
<input type="hidden" name="form_security_token" value="{{$form_security_token}}">
|
<input type="hidden" name="form_security_token" value="{{$form_security_token}}">
|
||||||
{{include file="field_input.tpl" field=$newdomain}}
|
{{include file="field_input.tpl" field=$newdomain}}
|
||||||
{{include file="field_input.tpl" field=$newreason}}
|
{{include file="field_input.tpl" field=$newreason}}
|
||||||
<div class="submit"><input type="submit" name="page_blocklist_save" value="{{$submit}}" /></div>
|
<div class="submit">
|
||||||
|
<button type="submit" class="btn btn-primary" name="page_blocklist_save" value="{{$submit}}">{{$submit}}</button>
|
||||||
|
</div>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
{{if $entries}}
|
{{if $entries}}
|
||||||
|
@ -26,8 +29,9 @@
|
||||||
{{include file="field_input.tpl" field=$e.reason}}
|
{{include file="field_input.tpl" field=$e.reason}}
|
||||||
{{include file="field_checkbox.tpl" field=$e.delete}}
|
{{include file="field_checkbox.tpl" field=$e.delete}}
|
||||||
{{/foreach}}
|
{{/foreach}}
|
||||||
<div class="submit"><input type="submit" name="page_blocklist_edit" value="{{$savechanges}}" /></div>
|
<div class="submit">
|
||||||
|
<button type="submit" class="btn btn-primary" name="page_blocklist_edit" value="{{$savechanges}}">{{$savechanges}}</button>
|
||||||
|
</div>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
Loading…
Reference in a new issue