RegisterThrottle list-profiles-by-ip

This commit is contained in:
Mikael Nordfeldth 2016-02-13 01:02:18 +01:00
parent 557ad2d1fd
commit be35975b12
2 changed files with 60 additions and 3 deletions

View File

@ -81,6 +81,13 @@ class RegisterThrottlePlugin extends Plugin
return true;
}
public function onRouterInitialized(URLMapper $m)
{
$m->connect('main/ipregistrations/:ipaddress',
array('action' => 'ipregistrations'),
array('ipaddress' => '[0-9a-f\.\:]+'));
}
/**
* Called when someone tries to register.
*
@ -141,6 +148,12 @@ class RegisterThrottlePlugin extends Plugin
return true;
}
$target = $action->getTarget();
if (!$target->isSilenced()) {
// Only show the IP of users who are not silenced.
return true;
}
$scoped = $action->getScoped();
if (!$scoped instanceof Profile || !$scoped->hasRight(self::VIEWMODLOG)) {
// only continue if we are allowed to VIEWMODLOG
@ -160,7 +173,11 @@ class RegisterThrottlePlugin extends Plugin
$action->element('h2', null, _('Registration IP'));
$action->element('strong', null, _('Registered from:'));
$action->element('span', ['class'=>'ipaddress'], $ipaddress ?: 'unknown');
$action->element('a',
[ 'class'=>'ipaddress',
'href'=>common_local_url('ipregistrations', array('ipaddress'=>$ipaddress)),
],
$ipaddress ?: 'unknown');
$action->elementEnd('div');
}
@ -185,8 +202,8 @@ class RegisterThrottlePlugin extends Plugin
$reg = new Registration_ip();
$reg->user_id = $profile->id;
$reg->ipaddress = $ipaddress;
$reg->user_id = $profile->getID();
$reg->ipaddress = mb_strtolower($ipaddress);
$reg->created = common_sql_now();
$result = $reg->insert();

View File

@ -0,0 +1,40 @@
<?php
if (!defined('GNUSOCIAL')) { exit(1); }
class IpregistrationsAction extends ManagedAction
{
protected $needLogin = true;
protected $ipaddress = null;
function title()
{
return sprintf(_('Registrations from IP %s'), $this->ipaddress);
}
protected function doPreparation()
{
if (!$scoped->hasRight(self::VIEWMODLOG) && !$scoped->hasRole(Profile_role::ADMINISTRATOR)) {
throw new AuthorizationException(_('You do not have privileges to see this page'));
}
$this->ipaddress = $this->trimmed('ipaddress');
$this->profile_ids = Registration_ip::usersByIP($this->ipaddress);
}
public function showContent()
{
$this->elementStart('ul');
foreach (Profile::listGet('id', $this->profile_ids) as $profile) {
$this->elementStart('li');
try {
$this->element('a', ['href'=>$profile->getUrl()], $profile->getFancyName());
} catch (InvalidUrlException $e) {
$this->element('span', null, $profile->getFancyName());
}
$this->elementEnd('li');
}
$this->elementEnd('ul');
}
}