From e7b05770d892573ec47e70a764545ecf950fe343 Mon Sep 17 00:00:00 2001 From: Dylan William Hardison Date: Thu, 21 Jun 2018 15:41:05 -0400 Subject: port BlockIP to mojolicious --- Bugzilla/ModPerl/BlockIP.pm | 44 -------------------------------------- Bugzilla/Quantum/Plugin/BlockIP.pm | 44 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 44 insertions(+), 44 deletions(-) delete mode 100644 Bugzilla/ModPerl/BlockIP.pm create mode 100644 Bugzilla/Quantum/Plugin/BlockIP.pm diff --git a/Bugzilla/ModPerl/BlockIP.pm b/Bugzilla/ModPerl/BlockIP.pm deleted file mode 100644 index 57f61c71f..000000000 --- a/Bugzilla/ModPerl/BlockIP.pm +++ /dev/null @@ -1,44 +0,0 @@ -package Bugzilla::Quantum::Plugin::BlockIP; -use 5.10.1; -use Mojo::Base 'Mojolicious::Plugin'; - -use Bugzilla::Memcached; - -use constant BLOCK_TIMEOUT => 60*60; - -my $MEMCACHED = Bugzilla::Memcached->_new()->{memcached}; - -sub register { - my ( $self, $app, $conf ) = @_; - - $app->hook(before_routes => \&_before_routes) - $app->helper(block_ip => \&_block_ip); - $app->helper(unblock_ip => \&_unblock_ip); -} - -sub _block_ip { - my ($class, $ip) = @_; - $MEMCACHED->set("block_ip:$ip" => 1, BLOCK_TIMEOUT) if $MEMCACHED; -} - -sub _unblock_ip { - my ($class, $ip) = @_; - $MEMCACHED->delete("block_ip:$ip") if $MEMCACHED; -} - -sub _before_routes { - my ( $c ) = @_; - return if $c->stash->{'mojo.static'}; - - my $ip = $c->tx->remote_address; - $c->app->log->debug("remote ip: $ip"); - if ($MEMCACHED && $MEMCACHED->get("block_ip:$ip")) { - $c->block_ip($ip); - $c->res->code(429); - $c->res->message("Too Many Requests"); - $c->res->body("Too Many Requests"); - $c->finish; - } -} - -1; diff --git a/Bugzilla/Quantum/Plugin/BlockIP.pm b/Bugzilla/Quantum/Plugin/BlockIP.pm new file mode 100644 index 000000000..57f61c71f --- /dev/null +++ b/Bugzilla/Quantum/Plugin/BlockIP.pm @@ -0,0 +1,44 @@ +package Bugzilla::Quantum::Plugin::BlockIP; +use 5.10.1; +use Mojo::Base 'Mojolicious::Plugin'; + +use Bugzilla::Memcached; + +use constant BLOCK_TIMEOUT => 60*60; + +my $MEMCACHED = Bugzilla::Memcached->_new()->{memcached}; + +sub register { + my ( $self, $app, $conf ) = @_; + + $app->hook(before_routes => \&_before_routes) + $app->helper(block_ip => \&_block_ip); + $app->helper(unblock_ip => \&_unblock_ip); +} + +sub _block_ip { + my ($class, $ip) = @_; + $MEMCACHED->set("block_ip:$ip" => 1, BLOCK_TIMEOUT) if $MEMCACHED; +} + +sub _unblock_ip { + my ($class, $ip) = @_; + $MEMCACHED->delete("block_ip:$ip") if $MEMCACHED; +} + +sub _before_routes { + my ( $c ) = @_; + return if $c->stash->{'mojo.static'}; + + my $ip = $c->tx->remote_address; + $c->app->log->debug("remote ip: $ip"); + if ($MEMCACHED && $MEMCACHED->get("block_ip:$ip")) { + $c->block_ip($ip); + $c->res->code(429); + $c->res->message("Too Many Requests"); + $c->res->body("Too Many Requests"); + $c->finish; + } +} + +1; -- cgit v1.2.3-24-g4f1b