forked from GNUsocial/gnu-social
		
	RegisterThrottle list-profiles-by-ip
This commit is contained in:
		@@ -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();
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										40
									
								
								plugins/RegisterThrottle/actions/ipregistrations.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										40
									
								
								plugins/RegisterThrottle/actions/ipregistrations.php
									
									
									
									
									
										Normal 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');
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user