/** * Called before the test functions will be executed * this function is defined in PHPUnit_TestCase and overwritten * here. * * @since 1.0 */ protected function setUp() { $config = ConfigProvider::getInstance(); $config->set('session.provider.name', 'Alpha\\Util\\Http\\Session\\SessionProviderArray'); $this->blacklistedClient = new BlacklistedClient(); $this->blacklistedClient->rebuildTable(); $this->blacklistedClient->set('client', $this->badAgent); $this->blacklistedClient->save(); $this->blacklistedIP = new BlacklistedIP(); $this->blacklistedIP->rebuildTable(); $this->blacklistedIP->set('IP', $this->badIP); $this->blacklistedIP->save(); $this->badRequest1 = new BadRequest(); $this->badRequest1->rebuildTable(); $this->badRequest1->set('client', $this->badAgent); $this->badRequest1->set('IP', $this->badIP); $this->badRequest1->set('requestedResource', '/doesNotExist'); $this->badRequest1->save(); $this->badRequest2 = new BadRequest(); $this->badRequest2->set('client', $this->badAgent); $this->badRequest2->set('IP', $this->badIP); $this->badRequest2->set('requestedResource', '/doesNotExist'); $this->badRequest2->save(); $this->badRequest3 = new BadRequest(); $this->badRequest3->set('client', $this->badAgent); $this->badRequest3->set('IP', $this->badIP); $this->badRequest3->set('requestedResource', '/doesNotExist'); $this->badRequest3->save(); }
/** * {@inheritdoc} */ public function process($request) { $client = $request->getUserAgent(); // if no user agent string is provided, we can't filter by it anyway to might as well skip if ($client == null) { return; } if (!empty($client)) { $badClient = new BlacklistedClient(); try { $badClient->loadByAttribute('client', $client); } catch (RecordNotFoundException $bonf) { // client is not on the list! return; } // if we got this far then the client is bad self::$logger->warn('The client [' . $client . '] was blocked from accessing the resource [' . $request->getURI() . ']'); throw new ResourceNotAllowedException('Not allowed!'); } }