add blacklist settings
This commit is contained in:
parent
7bcd586eae
commit
0d48496768
3 changed files with 80 additions and 0 deletions
|
@ -106,6 +106,14 @@ class Admin {
|
||||||
'default' => array( 'post', 'pages' ),
|
'default' => array( 'post', 'pages' ),
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
\register_setting(
|
||||||
|
'activitypub', 'activitypub_blacklist', array(
|
||||||
|
'type' => 'string',
|
||||||
|
'description' => \esc_html__( 'Block fediverse instances', 'activitypub' ),
|
||||||
|
'show_in_rest' => true,
|
||||||
|
'default' => 'gab.com',
|
||||||
|
)
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function add_settings_help_tab() {
|
public static function add_settings_help_tab() {
|
||||||
|
|
|
@ -287,3 +287,50 @@ function url_to_authorid( $url ) {
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the blacklist from the WordPress options table
|
||||||
|
*
|
||||||
|
* @return array the list of blacklisted hosts
|
||||||
|
*
|
||||||
|
* @uses apply_filters() Calls 'activitypub_blacklist' filter
|
||||||
|
*/
|
||||||
|
function get_blacklist() {
|
||||||
|
$blacklist = \get_option( 'activitypub_blacklist' );
|
||||||
|
$blacklist_hosts = \explode( PHP_EOL, $blacklist );
|
||||||
|
|
||||||
|
// if no values have been set, revert to the defaults
|
||||||
|
if ( ! $blacklist || ! $blacklist_hosts || ! is_array( $blacklist_hosts ) ) {
|
||||||
|
$blacklist_hosts = array(
|
||||||
|
'gab.com',
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// clean out any blank values
|
||||||
|
foreach ( $blacklist_hosts as $key => $value ) {
|
||||||
|
if ( empty( $value ) ) {
|
||||||
|
unset( $blacklist_hosts[ $key ] );
|
||||||
|
} else {
|
||||||
|
$blacklist_hosts[ $key ] = \trim( $blacklist_hosts[ $key ] );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return \apply_filters( 'activitypub_blacklist', $blacklist_hosts );
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check if an URL is blacklisted
|
||||||
|
*
|
||||||
|
* @param string $url an URL to check
|
||||||
|
*
|
||||||
|
* @return boolean
|
||||||
|
*/
|
||||||
|
function is_blacklisted( $url ) {
|
||||||
|
foreach ( \ActivityPub\get_blacklist() as $blacklisted_host ) {
|
||||||
|
if ( \strpos( $url, $blacklisted_host ) !== false ) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
|
@ -90,6 +90,31 @@
|
||||||
|
|
||||||
<?php \do_settings_fields( 'activitypub', 'activity' ); ?>
|
<?php \do_settings_fields( 'activitypub', 'activity' ); ?>
|
||||||
|
|
||||||
|
<h2><?php \esc_html_e( 'Server', 'activitypub' ); ?></h2>
|
||||||
|
|
||||||
|
<p><?php \esc_html_e( 'Server related settings.', 'activitypub' ); ?></p>
|
||||||
|
|
||||||
|
<?php
|
||||||
|
// load the existing blacklist from the WordPress options table
|
||||||
|
$activitypub_blacklist = \trim( \implode( PHP_EOL, \ActivityPub\get_blacklist() ), PHP_EOL );
|
||||||
|
?>
|
||||||
|
|
||||||
|
<table class="form-table">
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<th scope="row">
|
||||||
|
<?php \esc_html_e( 'Blacklist', 'activitypub' ); ?>
|
||||||
|
</th>
|
||||||
|
<td>
|
||||||
|
<textarea name="activitypub_blacklist" id="activitypub_blacklist" rows="10" cols="50" class="large-text"><?php echo $activitypub_blacklist; ?></textarea>
|
||||||
|
<p class="description"><?php \_e( 'A list of hosts, you want to block, one host per line. Please use only the host/domain of the server you want to block, without <code>http://</code> and without <code>www.</code>. For example <code>example.com</code>.', 'activitypub' ); ?></p>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<?php \do_settings_fields( 'activitypub', 'server' ); ?>
|
||||||
|
|
||||||
<?php \do_settings_sections( 'activitypub' ); ?>
|
<?php \do_settings_sections( 'activitypub' ); ?>
|
||||||
|
|
||||||
<?php \submit_button(); ?>
|
<?php \submit_button(); ?>
|
||||||
|
|
Loading…
Reference in a new issue