1
0
Fork 0

Move admin/blocklist/server to src/Module

- Add Module\Admin\Blocklist\Server class
- Add route for admin/blocklist/server
- Add server blocklist admin aside menu entry
- Move templates/admin/blocklist.tpl to templates/admin/blocklist/server.tpl
- Remove admin_page_blocklist and admin_page_blocklist_post from mod/admin.php
This commit is contained in:
Hypolite Petovan 2019-04-21 21:40:05 -04:00
commit 5750623b48
5 changed files with 96 additions and 100 deletions

View file

@ -114,9 +114,6 @@ function admin_post(App $a)
case 'logs':
admin_page_logs_post($a);
break;
case 'blocklist':
admin_page_blocklist_post($a);
break;
case 'deleteitem':
admin_page_deleteitem_post($a);
break;
@ -237,9 +234,6 @@ function admin_content(App $a)
case 'workerqueue':
$o = admin_page_workerqueue($a, false);
break;
case 'blocklist':
$o = admin_page_blocklist($a);
break;
case 'deleteitem':
$o = admin_page_deleteitem($a);
break;
@ -256,98 +250,6 @@ function admin_content(App $a)
}
}
/**
* @brief Subpage to modify the server wide block list via the admin panel.
*
* This function generates the subpage of the admin panel to allow the
* modification of the node wide block/black list to block entire
* remote servers from communication with this node. The page allows
* adding, removing and editing of entries from the blocklist.
*
* @param App $a
* @return string
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
*/
function admin_page_blocklist(App $a)
{
$blocklist = Config::get('system', 'blocklist');
$blocklistform = [];
if (is_array($blocklist)) {
foreach ($blocklist as $id => $b) {
$blocklistform[] = [
'domain' => ["domain[$id]", L10n::t('Blocked domain'), $b['domain'], '', L10n::t('The blocked 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', '', ''],
'delete' => ["delete[$id]", L10n::t("Delete domain") . ' (' . $b['domain'] . ')', false, L10n::t("Check to delete this entry from the blocklist")]
];
}
}
$t = Renderer::getMarkupTemplate('admin/blocklist.tpl');
return Renderer::replaceMacros($t, [
'$title' => L10n::t('Administration'),
'$page' => L10n::t('Server 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.'),
'$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.'),
'$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', '', ''],
'$newreason' => ['newentry_reason', L10n::t('Block reason'), '', L10n::t('The reason why you blocked this domain.'), 'required', '', ''],
'$submit' => L10n::t('Add Entry'),
'$savechanges' => L10n::t('Save changes to the blocklist'),
'$currenttitle' => L10n::t('Current Entries in the Blocklist'),
'$thurl' => L10n::t('Blocked domain'),
'$threason' => L10n::t('Reason for the block'),
'$delentry' => L10n::t('Delete entry from blocklist'),
'$entries' => $blocklistform,
'$baseurl' => System::baseUrl(true),
'$confirm_delete' => L10n::t('Delete entry from blocklist?'),
'$form_security_token' => BaseModule::getFormSecurityToken("admin_blocklist")
]);
}
/**
* @brief Process send data from Admin Blocklist Page
*
* @param App $a
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
*/
function admin_page_blocklist_post(App $a)
{
if (empty($_POST['page_blocklist_save']) && empty($_POST['page_blocklist_edit'])) {
return;
}
BaseModule::checkFormSecurityTokenRedirectOnError('/admin/blocklist', 'admin_blocklist');
if (!empty($_POST['page_blocklist_save'])) {
// Add new item to blocklist
$blocklist = Config::get('system', 'blocklist');
$blocklist[] = [
'domain' => Strings::escapeTags(trim($_POST['newentry_domain'])),
'reason' => Strings::escapeTags(trim($_POST['newentry_reason']))
];
Config::set('system', 'blocklist', $blocklist);
info(L10n::t('Server added to blocklist.') . EOL);
} else {
// Edit the entries from blocklist
$blocklist = [];
foreach ($_POST['domain'] as $id => $domain) {
// Trimming whitespaces as well as any lingering slashes
$domain = Strings::escapeTags(trim($domain, "\x00..\x1F/"));
$reason = Strings::escapeTags(trim($_POST['reason'][$id]));
if (empty($_POST['delete'][$id])) {
$blocklist[] = [
'domain' => $domain,
'reason' => $reason
];
}
}
Config::set('system', 'blocklist', $blocklist);
info(L10n::t('Site blocklist updated.') . EOL);
}
$a->internalRedirect('admin/blocklist');
return; // NOTREACHED
}
/**
* @brief Subpage where the admin can delete an item from their node given the GUID
*