forked from GNUsocial/gnu-social
Added plugin AutoSandbox for spam-management: new users sandboxed by default
This commit is contained in:
parent
0a6b30552d
commit
c810f24851
96
plugins/AutoSandbox/AutoSandboxPlugin.php
Normal file
96
plugins/AutoSandbox/AutoSandboxPlugin.php
Normal file
@ -0,0 +1,96 @@
|
||||
<?php
|
||||
/**
|
||||
* StatusNet, the distributed open-source microblogging tool
|
||||
*
|
||||
* Plugin to automatically sandbox newly registered users in an effort to beat
|
||||
* spammers. If the user proves to be legitimate, moderators can un-sandbox them.
|
||||
*
|
||||
* PHP version 5
|
||||
*
|
||||
* LICENCE: This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* @category Plugin
|
||||
* @package StatusNet
|
||||
* @author Sean Carmody<seancarmody@gmail.com>
|
||||
* @copyright 2010
|
||||
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
|
||||
* @link http://status.net/
|
||||
*/
|
||||
|
||||
if (!defined('STATUSNET') && !defined('LACONICA')) {
|
||||
exit(1);
|
||||
}
|
||||
|
||||
define('AUTOSANDBOX', '0.1');
|
||||
|
||||
//require_once(INSTALLDIR.'/plugins/AutoSandbox/autosandbox.php');
|
||||
|
||||
class AutoSandboxPlugin extends Plugin
|
||||
{
|
||||
var $contact;
|
||||
var $debug;
|
||||
|
||||
function onInitializePlugin()
|
||||
{
|
||||
if(!isset($this->debug))
|
||||
{
|
||||
$this->debug = 0;
|
||||
}
|
||||
|
||||
if(!isset($this->contact)) {
|
||||
$default = common_config('newuser', 'default');
|
||||
if (!empty($default)) {
|
||||
$this->contact = $default;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function onPluginVersion(&$versions)
|
||||
{
|
||||
$versions[] = array('name' => 'AutoSandbox',
|
||||
'version' => STATUSNET_VERSION,
|
||||
'author' => 'Sean Carmody',
|
||||
'homepage' => 'http://status.net/wiki/Plugin:AutoSandbox',
|
||||
'rawdescription' =>
|
||||
_m('Automatically sandboxes newly registered members.'));
|
||||
return true;
|
||||
}
|
||||
|
||||
function onStartRegistrationFormData($action)
|
||||
{
|
||||
|
||||
$instr = 'Note you will initially be "sandboxed" so your posts will not appear in the public timeline.';
|
||||
|
||||
if (isset($this->contact)) {
|
||||
$contactuser = User::staticGet('nickname', $this->contact);
|
||||
if (!empty($contactuser)) {
|
||||
$contactlink = "@<a href=\"$contactuser->uri\">$contactuser->nickname</a>";
|
||||
$instr = $instr . " Send a message to $contactlink to speed up the unsandboxing process.";
|
||||
}
|
||||
}
|
||||
|
||||
$output = common_markup_to_html($instr);
|
||||
$action->elementStart('div', 'instructions');
|
||||
$action->raw($output);
|
||||
$action->elementEnd('div');
|
||||
}
|
||||
|
||||
function onEndUserRegister(&$profile,&$user)
|
||||
{
|
||||
$profile->sandbox();
|
||||
if ($this->debug) {
|
||||
common_log(LOG_WARNING, "AutoSandbox: sandboxed of $user->nickname");
|
||||
}
|
||||
}
|
||||
}
|
21
plugins/AutoSandbox/LICENSE
Normal file
21
plugins/AutoSandbox/LICENSE
Normal file
@ -0,0 +1,21 @@
|
||||
Copyright (c) 2010 Stubborn Mule - http://www.stubbornmule.net
|
||||
AUTHORS:
|
||||
Sean Carmody
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
39
plugins/AutoSandbox/README
Normal file
39
plugins/AutoSandbox/README
Normal file
@ -0,0 +1,39 @@
|
||||
StatusNet AutoSandbox plugin 0.1 03/16/10
|
||||
=========================================
|
||||
Automatically sandboxes newly registered users as a spam-management technique.
|
||||
Only really suits small sites where all users can be hand-moderated. A moderator
|
||||
will then have to unbox legimate users, using the following built-in script:
|
||||
|
||||
./scripts/userrole.php -n username -r moderator
|
||||
|
||||
(replace 'username' with the nickname of the user you wish to make a moderator).
|
||||
|
||||
The following note will be added to the top of the Registration form:
|
||||
|
||||
"Note you will initially be "sandboxed" so your posts will not appear in the
|
||||
public timeline."
|
||||
|
||||
This can be followed by the following extra information if a contact user (denoted
|
||||
here by XXX) is specified:
|
||||
|
||||
"Send a message to @XXX to speed up the unsandboxing process."
|
||||
|
||||
If no contact user is specified, it will default to the "Default subscription" user
|
||||
who automatically subscribes to new users (set in Admin -> User).
|
||||
|
||||
Use:
|
||||
1. Add plugin:
|
||||
|
||||
Default usage:
|
||||
addPlugin('AutoSandbox');
|
||||
|
||||
Specify a contact user (replace 'someuser' with appropriate username):
|
||||
addPlugin('AutoSandbox', array('contact' => 'someuser'));
|
||||
|
||||
Stop contact user from defaulting to the Defaul subscription:
|
||||
addPlugin('AutoSandbox', array('contact' => ''));
|
||||
|
||||
Changelog
|
||||
=========
|
||||
0.1 initial release
|
||||
|
Loading…
Reference in New Issue
Block a user