Source of file Iptest.php
Size: 2,303 Bytes - Last Modified: 2021-12-24T07:07:10+00:00
/var/www/docs.ssmods.com/process/src/tests/Iptest.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 | <?php namespace NSWDPC\UserForms\IpCollection\Tests; use SilverStripe\Dev\SapphireTest; use NSWDPC\UserForms\IpCollection\IP; class IpTest extends SapphireTest { /** * @var bool */ protected $usesDatabase = false; protected $ra, $cf, $xff = null; public function setUp() { parent::setUp(); // store original values if(isset($_SERVER['REMOTE_ADDR'])) { $this->ra = $_SERVER['REMOTE_ADDR']; } if(isset($_SERVER['HTTP_CF_CONNECTING_IP'])) { $this->cf = $_SERVER['HTTP_CF_CONNECTING_IP']; } if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])) { $this->xff = $_SERVER['HTTP_X_FORWARDED_FOR']; } } public function tearDown() { parent::tearDown(); // reset values if($this->ra) { $_SERVER['REMOTE_ADDR'] = $this->ra; } if($this->cf) { $_SERVER['HTTP_CF_CONNECTING_IP'] = $this->cf; } if($this->xff) { $_SERVER['HTTP_X_FORWARDED_FOR'] = $this->xff; } } /** * Test IP priority logic */ public function testIpPriority() { $cf = 'a.b.c.d'; $xff = '1.2.3.4'; $ra = 'r.em.ot.e'; $_SERVER['HTTP_CF_CONNECTING_IP'] = $cf; $_SERVER['HTTP_X_FORWARDED_FOR'] = $xff; $_SERVER['REMOTE_ADDR'] = $ra; $ip = IP::getByPriority(); $this->assertEquals($cf, $ip); } /** * Test IP fallback logic */ public function testIpFallback() { $cf = ''; $xff = ''; $ra = 'original'; $_SERVER['HTTP_CF_CONNECTING_IP'] = $cf; $_SERVER['HTTP_X_FORWARDED_FOR'] = $xff; $_SERVER['REMOTE_ADDR'] = $ra; $ip = IP::getByPriority(); $this->assertEquals($ra, $ip); } /** * Test untrusted data */ public function testIpClean() { $cf = '127.0.0.1,<a href="naughty">click here!</a>'; $xff = ''; $ra = 'original'; $_SERVER['HTTP_CF_CONNECTING_IP'] = $cf; $_SERVER['HTTP_X_FORWARDED_FOR'] = $xff; $_SERVER['REMOTE_ADDR'] = $ra; $ip = IP::getByPriority(); $expected = "127.0.0.1,click here!"; $this->assertEquals($expected, $ip); } } |