/** * {@inheritdoc} */ public function register() { $this->container->registerSingleton([Request::class, 'request'], function ($container) { $config = $container->get('config'); $request = new Request(['languages' => $config->get('application.languages')], $container->get('signer')); $request->setTrustedProxies($config->get('application.trusted_proxies')); return $request; }); }
/** * */ public function testIP() { $server = $this->getServerData(); $request = new Request(['server' => $server]); $this->assertEquals('10.17.12.209', $request->ip()); // Should fall back to localhost if an invalid IP is detected $server['REMOTE_ADDR'] = 'invalid ip'; $request = new Request(['server' => $server]); $this->assertEquals('127.0.0.1', $request->ip()); // Should ignore the X-Forwarded-For header if no list of trusted proxies is specified $server['REMOTE_ADDR'] = '127.0.0.1'; $server['HTTP_X_FORWARDED_FOR'] = '10.17.12.211, 10.17.12.212, 10.17.12.213'; $request = new Request(['server' => $server]); $this->assertEquals('127.0.0.1', $request->ip()); // Should return the IP forwarded by the first trusted proxy $request = new Request(['server' => $server]); $request->setTrustedProxies(['10.17.12.213']); $this->assertEquals('10.17.12.212', $request->ip()); // Should return the IP forwarded by the first trusted proxy $request = new Request(['server' => $server]); $request->setTrustedProxies(['10.17.12.212', '10.17.12.213']); $this->assertEquals('10.17.12.211', $request->ip()); }