1<?php 2 3class common_clientIP_test extends DokuWikiTest { 4 5 function test_simple_all(){ 6 $_SERVER['REMOTE_ADDR'] = '123.123.123.123'; 7 $_SERVER['HTTP_X_REAL_IP'] = ''; 8 $_SERVER['HTTP_X_FORWARDED_FOR'] = ''; 9 $out = '123.123.123.123'; 10 $this->assertEquals(clientIP(),$out); 11 } 12 13 function test_proxy1_all(){ 14 $_SERVER['REMOTE_ADDR'] = '123.123.123.123'; 15 $_SERVER['HTTP_X_REAL_IP'] = '77.77.77.77'; 16 $_SERVER['HTTP_X_FORWARDED_FOR'] = ''; 17 $out = '123.123.123.123,77.77.77.77'; 18 $this->assertEquals(clientIP(),$out); 19 } 20 21 function test_proxy2_all(){ 22 $_SERVER['REMOTE_ADDR'] = '123.123.123.123'; 23 $_SERVER['HTTP_X_REAL_IP'] = ''; 24 $_SERVER['HTTP_X_FORWARDED_FOR'] = '77.77.77.77'; 25 $out = '123.123.123.123,77.77.77.77'; 26 $this->assertEquals(clientIP(),$out); 27 } 28 29 function test_proxyhops_all(){ 30 $_SERVER['REMOTE_ADDR'] = '123.123.123.123'; 31 $_SERVER['HTTP_X_REAL_IP'] = ''; 32 $_SERVER['HTTP_X_FORWARDED_FOR'] = '77.77.77.77,66.66.66.66'; 33 $out = '123.123.123.123,77.77.77.77,66.66.66.66'; 34 $this->assertEquals(clientIP(),$out); 35 } 36 37 function test_simple_single(){ 38 $_SERVER['REMOTE_ADDR'] = '123.123.123.123'; 39 $_SERVER['HTTP_X_REAL_IP'] = ''; 40 $_SERVER['HTTP_X_FORWARDED_FOR'] = ''; 41 $out = '123.123.123.123'; 42 $this->assertEquals(clientIP(true),$out); 43 } 44 45 function test_proxy1_single(){ 46 $_SERVER['REMOTE_ADDR'] = '123.123.123.123'; 47 $_SERVER['HTTP_X_REAL_IP'] = '77.77.77.77'; 48 $_SERVER['HTTP_X_FORWARDED_FOR'] = ''; 49 $out = '77.77.77.77'; 50 $this->assertEquals(clientIP(true),$out); 51 } 52 53 function test_proxy2_single(){ 54 $_SERVER['REMOTE_ADDR'] = '123.123.123.123'; 55 $_SERVER['HTTP_X_REAL_IP'] = ''; 56 $_SERVER['HTTP_X_FORWARDED_FOR'] = '77.77.77.77'; 57 $out = '77.77.77.77'; 58 $this->assertEquals(clientIP(true),$out); 59 } 60 61 function test_proxyhops_single(){ 62 $_SERVER['REMOTE_ADDR'] = '123.123.123.123'; 63 $_SERVER['HTTP_X_REAL_IP'] = ''; 64 $_SERVER['HTTP_X_FORWARDED_FOR'] = '77.77.77.77,66.66.66.66'; 65 $out = '66.66.66.66'; 66 $this->assertEquals(clientIP(true),$out); 67 } 68 69 function test_local_all(){ 70 $_SERVER['REMOTE_ADDR'] = '123.123.123.123'; 71 $_SERVER['HTTP_X_REAL_IP'] = ''; 72 $_SERVER['HTTP_X_FORWARDED_FOR'] = '127.0.0.1'; 73 $out = '123.123.123.123,127.0.0.1'; 74 $this->assertEquals(clientIP(),$out); 75 } 76 77 function test_local1_single(){ 78 $_SERVER['REMOTE_ADDR'] = '123.123.123.123'; 79 $_SERVER['HTTP_X_REAL_IP'] = ''; 80 $_SERVER['HTTP_X_FORWARDED_FOR'] = '127.0.0.1'; 81 $out = '123.123.123.123'; 82 $this->assertEquals(clientIP(true),$out); 83 } 84 85 function test_local2_single(){ 86 $_SERVER['REMOTE_ADDR'] = '127.0.0.1'; 87 $_SERVER['HTTP_X_REAL_IP'] = ''; 88 $_SERVER['HTTP_X_FORWARDED_FOR'] = '123.123.123.123'; 89 $out = '123.123.123.123'; 90 $this->assertEquals(clientIP(true),$out); 91 } 92 93 function test_local3_single(){ 94 $_SERVER['REMOTE_ADDR'] = '123.123.123.123'; 95 $_SERVER['HTTP_X_REAL_IP'] = ''; 96 $_SERVER['HTTP_X_FORWARDED_FOR'] = '127.0.0.1,10.0.0.1,192.168.0.2,172.17.1.1,172.21.1.1,172.31.1.1'; 97 $out = '123.123.123.123'; 98 $this->assertEquals(clientIP(true),$out); 99 } 100 101 function test_local4_single(){ 102 $_SERVER['REMOTE_ADDR'] = '127.0.0.1'; 103 $_SERVER['HTTP_X_REAL_IP'] = ''; 104 $_SERVER['HTTP_X_FORWARDED_FOR'] = '192.168.0.5'; 105 $out = '192.168.0.5'; 106 $this->assertEquals(clientIP(true),$out); 107 } 108 109 function test_garbage_all(){ 110 $_SERVER['REMOTE_ADDR'] = '123.123.123.123'; 111 $_SERVER['HTTP_X_REAL_IP'] = ''; 112 $_SERVER['HTTP_X_FORWARDED_FOR'] = 'some garbage, or something, 222'; 113 $out = '123.123.123.123'; 114 $this->assertEquals(clientIP(),$out); 115 } 116 117 function test_garbage_single(){ 118 $_SERVER['REMOTE_ADDR'] = '123.123.123.123'; 119 $_SERVER['HTTP_X_REAL_IP'] = ''; 120 $_SERVER['HTTP_X_FORWARDED_FOR'] = 'some garbage, or something, 222'; 121 $out = '123.123.123.123'; 122 $this->assertEquals(clientIP(true),$out); 123 } 124 125 function test_garbageonly_all(){ 126 $_SERVER['REMOTE_ADDR'] = 'argh'; 127 $_SERVER['HTTP_X_REAL_IP'] = ''; 128 $_SERVER['HTTP_X_FORWARDED_FOR'] = 'some garbage, or something, 222'; 129 $out = '0.0.0.0'; 130 $this->assertEquals(clientIP(),$out); 131 } 132 133 function test_garbageonly_single(){ 134 $_SERVER['REMOTE_ADDR'] = 'argh'; 135 $_SERVER['HTTP_X_REAL_IP'] = ''; 136 $_SERVER['HTTP_X_FORWARDED_FOR'] = 'some garbage, or something, 222'; 137 $out = '0.0.0.0'; 138 $this->assertEquals(clientIP(true),$out); 139 } 140 141 function test_malicious(){ 142 $_SERVER['REMOTE_ADDR'] = ''; 143 $_SERVER['HTTP_X_REAL_IP'] = ''; 144 $_SERVER['HTTP_X_FORWARDED_FOR'] = '<?php set_time_limit(0);echo \'my_delim\';passthru(123.123.123.123);die;?>'; 145 $out = '0.0.0.0'; 146 $this->assertEquals(clientIP(),$out); 147 } 148 149} 150 151//Setup VIM: ex: et ts=4 : 152