more work on vendor blocking

This commit is contained in:
Mike Macgirvin 2024-04-30 14:48:43 +10:00
parent 888e9c9519
commit bf7a54dfaa

View file

@ -222,10 +222,65 @@ class Superblock extends Controller
} }
} }
$type = BLOCKTYPE_VENDOR;
$blockproj = trim($_REQUEST['blockproj']);
if ($blockproj) {
$handled = true;
$servers = Activity::get_actor_hublocs($blockproj);
if ($servers) {
foreach ($servers as $server) {
$m = parse_url($server['hubloc_url']);
if ($m['scheme'] && $m['host']) {
if (strcasecmp($m['host'], App::get_hostname()) === 0) {
notice(t('Blocking this software is not permitted.'));
if ($inline) {
return;
}
killme();
}
$blockproj = $m['host'];
$bl = [
'block_channel_id' => local_channel(),
'block_entity' => $blockproj,
'block_type' => $type,
'block_comment' => t('Added by Superblock')
];
LibBlock::store($bl);
$sync = [];
$sync['block'] = [LibBlock::fetch_by_entity(local_channel(), $blockproj)];
Libsync::build_sync_packet(0, $sync);
}
}
}
}
$unblockproj = trim($_REQUEST['unblockproj']);
if ($unblockproj) {
$handled = true;
if (check_form_security_token('superblock', 'sectok')) {
$r = LibBlock::fetch_by_entity(local_channel(), $unblockproj);
if ($r) {
LibBlock::remove(local_channel(), $unblockproj);
$sync = [];
$sync['block'] = [[
'block_channel_id' => local_channel(),
'block_entity' => $unblockproj,
'block_type' => $type,
'deleted' => true,
]];
Libsync::build_sync_packet(0, $sync);
}
}
}
if ($handled) { if ($handled) {
info(t('superblock settings updated') . EOL); info(t('superblock settings updated') . EOL);
if ($unblocked || $unblockedsite || $inline) { if ($unblocked || $unblockedsite || $unblockproj || $inline) {
return; return;
} }
killme(); killme();