X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=plugins%2FRegisterThrottle%2FRegisterThrottlePlugin.php;h=d09642a6330872d0206d5a00406674c87ae4a3ee;hb=d968247f754d66f76e5715b3d1e6933328270eaa;hp=e3982427da5053b5400aa7bce0e38a8095339a78;hpb=c309bbae93aff3e4a47095bf15063725de107215;p=quix0rs-gnu-social.git diff --git a/plugins/RegisterThrottle/RegisterThrottlePlugin.php b/plugins/RegisterThrottle/RegisterThrottlePlugin.php index e3982427da..d09642a633 100644 --- a/plugins/RegisterThrottle/RegisterThrottlePlugin.php +++ b/plugins/RegisterThrottle/RegisterThrottlePlugin.php @@ -28,9 +28,7 @@ * @link http://status.net/ */ -if (!defined('STATUSNET')) { - exit(1); -} +if (!defined('GNUSOCIAL')) { exit(1); } /** * Throttle registration by IP address @@ -52,7 +50,6 @@ class RegisterThrottlePlugin extends Plugin * * Default is 3 registrations per hour, 5 per day, 10 per week. */ - public $regLimits = array(604800 => 10, // per week 86400 => 5, // per day 3600 => 3); // per hour @@ -61,13 +58,11 @@ class RegisterThrottlePlugin extends Plugin * Disallow registration if a silenced user has registered from * this IP address. */ - public $silenced = true; /** * Whether we're enabled; prevents recursion. */ - static private $enabled = true; /** @@ -77,44 +72,15 @@ class RegisterThrottlePlugin extends Plugin * * @return boolean hook value; true means continue processing, false means stop. */ - - function onCheckSchema() + public function onCheckSchema() { $schema = Schema::get(); // For storing user-submitted flags on profiles - - $schema->ensureTable('registration_ip', - array(new ColumnDef('user_id', 'integer', null, - false, 'PRI'), - new ColumnDef('ipaddress', 'varchar', 15, false, 'MUL'), - new ColumnDef('created', 'timestamp', null, false, 'MUL'))); - + $schema->ensureTable('registration_ip', Registration_ip::schemaDef()); return true; } - /** - * Load related modules when needed - * - * @param string $cls Name of the class to be loaded - * - * @return boolean hook value; true means continue processing, false means stop. - */ - - function onAutoload($cls) - { - $dir = dirname(__FILE__); - - switch ($cls) - { - case 'Registration_ip': - include_once $dir . '/'.$cls.'.php'; - return false; - default: - return true; - } - } - /** * Called when someone tries to register. * @@ -124,13 +90,13 @@ class RegisterThrottlePlugin extends Plugin * @param Action $action Action that is being executed * * @return boolean hook value - * */ - function onStartRegistrationTry($action) + public function onStartRegistrationTry(Action $action) { $ipaddress = $this->_getIpAddress(); if (empty($ipaddress)) { + // TRANS: Server exception thrown when no IP address can be found for a registation attempt. throw new ServerException(_m('Cannot find IP address.')); } @@ -146,7 +112,8 @@ class RegisterThrottlePlugin extends Plugin $now = time(); $this->debug("Comparing {$regtime} to {$now}"); if ($now - $regtime < $seconds) { - throw new Exception(_m("Too many registrations. Take a break and try again later.")); + // TRANS: Exception thrown when too many user have registered from one IP address within a given time frame. + throw new Exception(_m('Too many registrations. Take a break and try again later.')); } } } @@ -156,9 +123,10 @@ class RegisterThrottlePlugin extends Plugin if ($this->silenced) { $ids = Registration_ip::usersByIP($ipaddress); foreach ($ids as $id) { - $profile = Profile::staticGet('id', $id); + $profile = Profile::getKV('id', $id); if ($profile && $profile->isSilenced()) { - throw new Exception(_m("A banned user has registered from this address.")); + // TRANS: Exception thrown when attempting to register from an IP address from which silenced users have registered. + throw new Exception(_m('A banned user has registered from this address.')); } } } @@ -172,13 +140,10 @@ class RegisterThrottlePlugin extends Plugin * We record the successful registration and IP address. * * @param Profile $profile new user's profile - * @param User $user new user * * @return boolean hook value - * */ - - function onEndUserRegister($profile, $user) + public function onEndUserRegister(Profile $profile) { $ipaddress = $this->_getIpAddress(); @@ -189,12 +154,13 @@ class RegisterThrottlePlugin extends Plugin $reg = new Registration_ip(); - $reg->user_id = $user->id; + $reg->user_id = $profile->id; $reg->ipaddress = $ipaddress; + $reg->created = common_sql_now(); $result = $reg->insert(); - if (!$result) { + if ($result === false) { common_log_db_error($reg, 'INSERT', __FILE__); // @todo throw an exception? } @@ -209,14 +175,14 @@ class RegisterThrottlePlugin extends Plugin * * @return boolean hook value */ - - function onPluginVersion(&$versions) + public function onPluginVersion(array &$versions) { $versions[] = array('name' => 'RegisterThrottle', - 'version' => STATUSNET_VERSION, + 'version' => GNUSOCIAL_VERSION, 'author' => 'Evan Prodromou', 'homepage' => 'http://status.net/wiki/Plugin:RegisterThrottle', 'description' => + // TRANS: Plugin description. _m('Throttles excessive registration from a single IP address.')); return true; } @@ -226,10 +192,10 @@ class RegisterThrottlePlugin extends Plugin * * @return string IP address or null if not found. */ - private function _getIpAddress() { $keys = array('HTTP_X_FORWARDED_FOR', + 'HTTP_X_CLIENT', 'CLIENT-IP', 'REMOTE_ADDR'); @@ -250,7 +216,6 @@ class RegisterThrottlePlugin extends Plugin * * @return Registration_ip nth registration or null if not found. */ - private function _getNthReg($ipaddress, $n) { $reg = new Registration_ip(); @@ -276,8 +241,7 @@ class RegisterThrottlePlugin extends Plugin * * @return boolean hook value */ - - function onEndGrantRole($profile, $role) + public function onEndGrantRole(Profile $profile, $role) { if (!self::$enabled) { return true; @@ -291,7 +255,7 @@ class RegisterThrottlePlugin extends Plugin return true; } - $ri = Registration_ip::staticGet('user_id', $profile->id); + $ri = Registration_ip::getKV('user_id', $profile->id); if (empty($ri)) { return true; @@ -300,12 +264,11 @@ class RegisterThrottlePlugin extends Plugin $ids = Registration_ip::usersByIP($ri->ipaddress); foreach ($ids as $id) { - if ($id == $profile->id) { continue; } - $other = Profile::staticGet('id', $id); + $other = Profile::getKV('id', $id); if (empty($other)) { continue;