summaryrefslogtreecommitdiff
path: root/_test/tests/inc/common_clientip.test.php
blob: 5b569cd987d4357e15d48651d0d9ad3f5ef90fe5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
<?php

class common_clientIP_test extends DokuWikiTest {

    function test_simple_all(){
        $_SERVER['REMOTE_ADDR']          = '123.123.123.123';
        $_SERVER['HTTP_X_REAL_IP']       = '';
        $_SERVER['HTTP_X_FORWARDED_FOR'] = '';
        $out = '123.123.123.123';
        $this->assertEquals(clientIP(),$out);
    }

    function test_proxy1_all(){
        $_SERVER['REMOTE_ADDR']          = '123.123.123.123';
        $_SERVER['HTTP_X_REAL_IP']       = '77.77.77.77';
        $_SERVER['HTTP_X_FORWARDED_FOR'] = '';
        $out = '123.123.123.123,77.77.77.77';
        $this->assertEquals(clientIP(),$out);
    }

    function test_proxy2_all(){
        $_SERVER['REMOTE_ADDR']          = '123.123.123.123';
        $_SERVER['HTTP_X_REAL_IP']       = '';
        $_SERVER['HTTP_X_FORWARDED_FOR'] = '77.77.77.77';
        $out = '123.123.123.123,77.77.77.77';
        $this->assertEquals(clientIP(),$out);
    }

    function test_proxyhops_all(){
        $_SERVER['REMOTE_ADDR']          = '123.123.123.123';
        $_SERVER['HTTP_X_REAL_IP']       = '';
        $_SERVER['HTTP_X_FORWARDED_FOR'] = '77.77.77.77,66.66.66.66';
        $out = '123.123.123.123,77.77.77.77,66.66.66.66';
        $this->assertEquals(clientIP(),$out);
    }

    function test_simple_single(){
        $_SERVER['REMOTE_ADDR']          = '123.123.123.123';
        $_SERVER['HTTP_X_REAL_IP']       = '';
        $_SERVER['HTTP_X_FORWARDED_FOR'] = '';
        $out = '123.123.123.123';
        $this->assertEquals(clientIP(true),$out);
    }

    function test_proxy1_single(){
        $_SERVER['REMOTE_ADDR']          = '123.123.123.123';
        $_SERVER['HTTP_X_REAL_IP']       = '77.77.77.77';
        $_SERVER['HTTP_X_FORWARDED_FOR'] = '';
        $out = '77.77.77.77';
        $this->assertEquals(clientIP(true),$out);
    }

    function test_proxy2_single(){
        $_SERVER['REMOTE_ADDR']          = '123.123.123.123';
        $_SERVER['HTTP_X_REAL_IP']       = '';
        $_SERVER['HTTP_X_FORWARDED_FOR'] = '77.77.77.77';
        $out = '77.77.77.77';
        $this->assertEquals(clientIP(true),$out);
    }

    function test_proxyhops_single(){
        $_SERVER['REMOTE_ADDR']          = '123.123.123.123';
        $_SERVER['HTTP_X_REAL_IP']       = '';
        $_SERVER['HTTP_X_FORWARDED_FOR'] = '77.77.77.77,66.66.66.66';
        $out = '66.66.66.66';
        $this->assertEquals(clientIP(true),$out);
    }

    function test_local_all(){
        $_SERVER['REMOTE_ADDR']          = '123.123.123.123';
        $_SERVER['HTTP_X_REAL_IP']       = '';
        $_SERVER['HTTP_X_FORWARDED_FOR'] = '127.0.0.1';
        $out = '123.123.123.123,127.0.0.1';
        $this->assertEquals(clientIP(),$out);
    }

    function test_local1_single(){
        $_SERVER['REMOTE_ADDR']          = '123.123.123.123';
        $_SERVER['HTTP_X_REAL_IP']       = '';
        $_SERVER['HTTP_X_FORWARDED_FOR'] = '127.0.0.1';
        $out = '123.123.123.123';
        $this->assertEquals(clientIP(true),$out);
    }

    function test_local2_single(){
        $_SERVER['REMOTE_ADDR']          = '127.0.0.1';
        $_SERVER['HTTP_X_REAL_IP']       = '';
        $_SERVER['HTTP_X_FORWARDED_FOR'] = '123.123.123.123';
        $out = '123.123.123.123';
        $this->assertEquals(clientIP(true),$out);
    }

    function test_local3_single(){
        $_SERVER['REMOTE_ADDR']          = '123.123.123.123';
        $_SERVER['HTTP_X_REAL_IP']       = '';
        $_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';
        $out = '123.123.123.123';
        $this->assertEquals(clientIP(true),$out);
    }

    function test_local4_single(){
        $_SERVER['REMOTE_ADDR']          = '127.0.0.1';
        $_SERVER['HTTP_X_REAL_IP']       = '';
        $_SERVER['HTTP_X_FORWARDED_FOR'] = '192.168.0.5';
        $out = '192.168.0.5';
        $this->assertEquals(clientIP(true),$out);
    }

    function test_garbage_all(){
        $_SERVER['REMOTE_ADDR']          = '123.123.123.123';
        $_SERVER['HTTP_X_REAL_IP']       = '';
        $_SERVER['HTTP_X_FORWARDED_FOR'] = 'some garbage, or something, 222';
        $out = '123.123.123.123';
        $this->assertEquals(clientIP(),$out);
    }

    function test_garbage_single(){
        $_SERVER['REMOTE_ADDR']          = '123.123.123.123';
        $_SERVER['HTTP_X_REAL_IP']       = '';
        $_SERVER['HTTP_X_FORWARDED_FOR'] = 'some garbage, or something, 222';
        $out = '123.123.123.123';
        $this->assertEquals(clientIP(true),$out);
    }

    function test_garbageonly_all(){
        $_SERVER['REMOTE_ADDR']          = 'argh';
        $_SERVER['HTTP_X_REAL_IP']       = '';
        $_SERVER['HTTP_X_FORWARDED_FOR'] = 'some garbage, or something, 222';
        $out = '0.0.0.0';
        $this->assertEquals(clientIP(),$out);
    }

    function test_garbageonly_single(){
        $_SERVER['REMOTE_ADDR']          = 'argh';
        $_SERVER['HTTP_X_REAL_IP']       = '';
        $_SERVER['HTTP_X_FORWARDED_FOR'] = 'some garbage, or something, 222';
        $out = '0.0.0.0';
        $this->assertEquals(clientIP(true),$out);
    }

    function test_malicious(){
        $_SERVER['REMOTE_ADDR']          = '';
        $_SERVER['HTTP_X_REAL_IP']       = '';
        $_SERVER['HTTP_X_FORWARDED_FOR'] = '<?php set_time_limit(0);echo \'my_delim\';passthru(123.123.123.123);die;?>';
        $out = '0.0.0.0';
        $this->assertEquals(clientIP(),$out);
    }

}

//Setup VIM: ex: et ts=4 :