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