Completed
Push — master ( 6fa8c1...df30fc )
by Martijn van
02:49
created
code/model/IpAccess.php 3 patches
Indentation   +167 added lines, -167 removed lines patch added patch discarded remove patch
@@ -13,172 +13,172 @@
 block discarded – undo
13 13
  */
14 14
 class IpAccess extends Object
15 15
 {
16
-    /**
17
-     * @var array
18
-     */
19
-    public $allowedIps = array();
20
-
21
-    /**
22
-     * @config
23
-     * @var array
24
-     */
25
-    private static $allowed_ips = array();
26
-
27
-    /**
28
-     * @var string
29
-     */
30
-    private $ip = '';
31
-
32
-    /**
33
-     * IpAccess constructor.
34
-     *
35
-     * @param string $ip
36
-     * @param array $allowedIps
37
-     */
38
-    public function __construct($ip = '', $allowedIps = array())
39
-    {
40
-        parent::__construct();
41
-        $this->ip = $ip;
42
-
43
-        self::config()->allowed_ips = $allowedIps;
44
-    }
45
-
46
-    /**
47
-     * @param $ip
48
-     */
49
-    public function setIp($ip)
50
-    {
51
-        $this->ip = $ip;
52
-    }
53
-
54
-    /**
55
-     * @return array
56
-     */
57
-    public function getAllowedIps()
58
-    {
59
-        if (!empty($this->allowedIps)) {
60
-            Deprecation::notice('1.1', 'Use the "IpAccess.allowed_ips" config setting instead');
61
-            self::config()->allowed_ips = $this->allowedIps;
62
-        }
63
-        return self::$allowed_ips ? self::$allowed_ips : (array)self::config()->allowed_ips;
64
-    }
65
-
66
-    /**
67
-     * @return bool
68
-     */
69
-    public function isEnabled()
70
-    {
71
-        return (bool)Config::inst()->get('IpAccess', 'enabled');
72
-    }
73
-
74
-    /**
75
-     * @return bool
76
-     */
77
-    public function hasAccess()
78
-    {
79
-        if (!$this->isEnabled() || !(bool)$this->getAllowedIps()) {
80
-            return true;
81
-        }
82
-
83
-        return $this->matchIp();
84
-    }
85
-
86
-    /**
87
-     * @return bool
88
-     */
89
-    public function matchIp()
90
-    {
91
-        return ($this->matchExact() || $this->matchRange() || $this->matchCIDR() || $this->matchWildCard());
92
-    }
93
-
94
-    /**
95
-     * @param Controller $controller
96
-     * @throws SS_HTTPResponse_Exception
97
-     */
98
-    public function respondNoAccess(Controller $controller)
99
-    {
100
-        $response = null;
101
-        if (class_exists('ErrorPage', true)) {
102
-            $response = ErrorPage::response_for(403);
103
-        }
104
-        $controller->httpError(403, $response ? $response : 'The requested page could not be found.');
105
-    }
106
-
107
-    /**
108
-     * @return string
109
-     */
110
-    public function matchExact()
111
-    {
112
-        return in_array($this->ip, $this->getAllowedIps()) ? $this->ip : '';
113
-    }
114
-
115
-    /**
116
-     * Try to match against a ip range
117
-     * Example : 192.168.1.50-100
118
-     *
119
-     * @return string
120
-     */
121
-    public function matchRange()
122
-    {
123
-        $ranges = array_filter($this->getAllowedIps(), function ($ip) {
124
-            return strstr($ip, '-');
125
-        });
126
-
127
-        $ip = $this->ip;
128
-
129
-        $matches = array_filter($ranges, function ($range) use ($ip) {
130
-            $ipFirstPart    = substr($ip, 0, strrpos($ip, '.') + 1);
131
-            $ipLastPart     = substr(strrchr($ip, '.'), 1);
132
-            $rangeFirstPart = substr($range, 0, strrpos($range, '.') + 1);
133
-
134
-            list ($start, $end) = explode('-', substr(strrchr($range, '.'), 1));
135
-
136
-            return $ipFirstPart === $rangeFirstPart && $ipLastPart >= $start && $ipLastPart <= $end;
137
-        });
138
-
139
-        return array_shift($matches);
140
-    }
141
-
142
-    /**
143
-     * Try to match cidr range
144
-     * Example : 192.168.1.0/24
145
-     *
146
-     * @return string
147
-     */
148
-    public function matchCIDR()
149
-    {
150
-        $ranges = array_filter($this->getAllowedIps(), function ($ip) {
151
-            return strstr($ip, '/');
152
-        });
153
-
154
-        if (!empty($ranges)) foreach ($ranges as $range) {
155
-            list ($net, $mask) = explode('/', $range);
156
-            if ((ip2long($this->ip) & ~((1 << (32 - $mask)) - 1)) == ip2long($net)) {
157
-                return $range;
158
-            }
159
-        }
160
-        return '';
161
-    }
162
-
163
-    /**
164
-     * Try to match against a range that ends with a wildcard *
165
-     * Example : 192.168.1.*
166
-     * Example : 192.168.*
167
-     *
168
-     * @return string
169
-     */
170
-    public function matchWildCard()
171
-    {
172
-        $ranges = array_filter($this->getAllowedIps(), function ($ip) {
173
-            return substr($ip, -1) === '*';
174
-        });
175
-
176
-        if (!empty($ranges)) foreach ($ranges as $range) {
177
-            if (substr($this->ip, 0, strlen(substr($range, 0, -1))) === substr($range, 0, -1)) {
178
-                return $range;
179
-            }
180
-        }
181
-        return '';
182
-    }
16
+	/**
17
+	 * @var array
18
+	 */
19
+	public $allowedIps = array();
20
+
21
+	/**
22
+	 * @config
23
+	 * @var array
24
+	 */
25
+	private static $allowed_ips = array();
26
+
27
+	/**
28
+	 * @var string
29
+	 */
30
+	private $ip = '';
31
+
32
+	/**
33
+	 * IpAccess constructor.
34
+	 *
35
+	 * @param string $ip
36
+	 * @param array $allowedIps
37
+	 */
38
+	public function __construct($ip = '', $allowedIps = array())
39
+	{
40
+		parent::__construct();
41
+		$this->ip = $ip;
42
+
43
+		self::config()->allowed_ips = $allowedIps;
44
+	}
45
+
46
+	/**
47
+	 * @param $ip
48
+	 */
49
+	public function setIp($ip)
50
+	{
51
+		$this->ip = $ip;
52
+	}
53
+
54
+	/**
55
+	 * @return array
56
+	 */
57
+	public function getAllowedIps()
58
+	{
59
+		if (!empty($this->allowedIps)) {
60
+			Deprecation::notice('1.1', 'Use the "IpAccess.allowed_ips" config setting instead');
61
+			self::config()->allowed_ips = $this->allowedIps;
62
+		}
63
+		return self::$allowed_ips ? self::$allowed_ips : (array)self::config()->allowed_ips;
64
+	}
65
+
66
+	/**
67
+	 * @return bool
68
+	 */
69
+	public function isEnabled()
70
+	{
71
+		return (bool)Config::inst()->get('IpAccess', 'enabled');
72
+	}
73
+
74
+	/**
75
+	 * @return bool
76
+	 */
77
+	public function hasAccess()
78
+	{
79
+		if (!$this->isEnabled() || !(bool)$this->getAllowedIps()) {
80
+			return true;
81
+		}
82
+
83
+		return $this->matchIp();
84
+	}
85
+
86
+	/**
87
+	 * @return bool
88
+	 */
89
+	public function matchIp()
90
+	{
91
+		return ($this->matchExact() || $this->matchRange() || $this->matchCIDR() || $this->matchWildCard());
92
+	}
93
+
94
+	/**
95
+	 * @param Controller $controller
96
+	 * @throws SS_HTTPResponse_Exception
97
+	 */
98
+	public function respondNoAccess(Controller $controller)
99
+	{
100
+		$response = null;
101
+		if (class_exists('ErrorPage', true)) {
102
+			$response = ErrorPage::response_for(403);
103
+		}
104
+		$controller->httpError(403, $response ? $response : 'The requested page could not be found.');
105
+	}
106
+
107
+	/**
108
+	 * @return string
109
+	 */
110
+	public function matchExact()
111
+	{
112
+		return in_array($this->ip, $this->getAllowedIps()) ? $this->ip : '';
113
+	}
114
+
115
+	/**
116
+	 * Try to match against a ip range
117
+	 * Example : 192.168.1.50-100
118
+	 *
119
+	 * @return string
120
+	 */
121
+	public function matchRange()
122
+	{
123
+		$ranges = array_filter($this->getAllowedIps(), function ($ip) {
124
+			return strstr($ip, '-');
125
+		});
126
+
127
+		$ip = $this->ip;
128
+
129
+		$matches = array_filter($ranges, function ($range) use ($ip) {
130
+			$ipFirstPart    = substr($ip, 0, strrpos($ip, '.') + 1);
131
+			$ipLastPart     = substr(strrchr($ip, '.'), 1);
132
+			$rangeFirstPart = substr($range, 0, strrpos($range, '.') + 1);
133
+
134
+			list ($start, $end) = explode('-', substr(strrchr($range, '.'), 1));
135
+
136
+			return $ipFirstPart === $rangeFirstPart && $ipLastPart >= $start && $ipLastPart <= $end;
137
+		});
138
+
139
+		return array_shift($matches);
140
+	}
141
+
142
+	/**
143
+	 * Try to match cidr range
144
+	 * Example : 192.168.1.0/24
145
+	 *
146
+	 * @return string
147
+	 */
148
+	public function matchCIDR()
149
+	{
150
+		$ranges = array_filter($this->getAllowedIps(), function ($ip) {
151
+			return strstr($ip, '/');
152
+		});
153
+
154
+		if (!empty($ranges)) foreach ($ranges as $range) {
155
+			list ($net, $mask) = explode('/', $range);
156
+			if ((ip2long($this->ip) & ~((1 << (32 - $mask)) - 1)) == ip2long($net)) {
157
+				return $range;
158
+			}
159
+		}
160
+		return '';
161
+	}
162
+
163
+	/**
164
+	 * Try to match against a range that ends with a wildcard *
165
+	 * Example : 192.168.1.*
166
+	 * Example : 192.168.*
167
+	 *
168
+	 * @return string
169
+	 */
170
+	public function matchWildCard()
171
+	{
172
+		$ranges = array_filter($this->getAllowedIps(), function ($ip) {
173
+			return substr($ip, -1) === '*';
174
+		});
175
+
176
+		if (!empty($ranges)) foreach ($ranges as $range) {
177
+			if (substr($this->ip, 0, strlen(substr($range, 0, -1))) === substr($range, 0, -1)) {
178
+				return $range;
179
+			}
180
+		}
181
+		return '';
182
+	}
183 183
 
184 184
 }
Please login to merge, or discard this patch.
Spacing   +7 added lines, -7 removed lines patch added patch discarded remove patch
@@ -60,7 +60,7 @@  discard block
 block discarded – undo
60 60
             Deprecation::notice('1.1', 'Use the "IpAccess.allowed_ips" config setting instead');
61 61
             self::config()->allowed_ips = $this->allowedIps;
62 62
         }
63
-        return self::$allowed_ips ? self::$allowed_ips : (array)self::config()->allowed_ips;
63
+        return self::$allowed_ips ? self::$allowed_ips : (array) self::config()->allowed_ips;
64 64
     }
65 65
 
66 66
     /**
@@ -68,7 +68,7 @@  discard block
 block discarded – undo
68 68
      */
69 69
     public function isEnabled()
70 70
     {
71
-        return (bool)Config::inst()->get('IpAccess', 'enabled');
71
+        return (bool) Config::inst()->get('IpAccess', 'enabled');
72 72
     }
73 73
 
74 74
     /**
@@ -76,7 +76,7 @@  discard block
 block discarded – undo
76 76
      */
77 77
     public function hasAccess()
78 78
     {
79
-        if (!$this->isEnabled() || !(bool)$this->getAllowedIps()) {
79
+        if (!$this->isEnabled() || !(bool) $this->getAllowedIps()) {
80 80
             return true;
81 81
         }
82 82
 
@@ -120,13 +120,13 @@  discard block
 block discarded – undo
120 120
      */
121 121
     public function matchRange()
122 122
     {
123
-        $ranges = array_filter($this->getAllowedIps(), function ($ip) {
123
+        $ranges = array_filter($this->getAllowedIps(), function($ip) {
124 124
             return strstr($ip, '-');
125 125
         });
126 126
 
127 127
         $ip = $this->ip;
128 128
 
129
-        $matches = array_filter($ranges, function ($range) use ($ip) {
129
+        $matches = array_filter($ranges, function($range) use ($ip) {
130 130
             $ipFirstPart    = substr($ip, 0, strrpos($ip, '.') + 1);
131 131
             $ipLastPart     = substr(strrchr($ip, '.'), 1);
132 132
             $rangeFirstPart = substr($range, 0, strrpos($range, '.') + 1);
@@ -147,7 +147,7 @@  discard block
 block discarded – undo
147 147
      */
148 148
     public function matchCIDR()
149 149
     {
150
-        $ranges = array_filter($this->getAllowedIps(), function ($ip) {
150
+        $ranges = array_filter($this->getAllowedIps(), function($ip) {
151 151
             return strstr($ip, '/');
152 152
         });
153 153
 
@@ -169,7 +169,7 @@  discard block
 block discarded – undo
169 169
      */
170 170
     public function matchWildCard()
171 171
     {
172
-        $ranges = array_filter($this->getAllowedIps(), function ($ip) {
172
+        $ranges = array_filter($this->getAllowedIps(), function($ip) {
173 173
             return substr($ip, -1) === '*';
174 174
         });
175 175
 
Please login to merge, or discard this patch.
Braces   +6 added lines, -2 removed lines patch added patch discarded remove patch
@@ -151,8 +151,10 @@  discard block
 block discarded – undo
151 151
             return strstr($ip, '/');
152 152
         });
153 153
 
154
-        if (!empty($ranges)) foreach ($ranges as $range) {
154
+        if (!empty($ranges)) {
155
+        	foreach ($ranges as $range) {
155 156
             list ($net, $mask) = explode('/', $range);
157
+        }
156 158
             if ((ip2long($this->ip) & ~((1 << (32 - $mask)) - 1)) == ip2long($net)) {
157 159
                 return $range;
158 160
             }
@@ -173,9 +175,11 @@  discard block
 block discarded – undo
173 175
             return substr($ip, -1) === '*';
174 176
         });
175 177
 
176
-        if (!empty($ranges)) foreach ($ranges as $range) {
178
+        if (!empty($ranges)) {
179
+        	foreach ($ranges as $range) {
177 180
             if (substr($this->ip, 0, strlen(substr($range, 0, -1))) === substr($range, 0, -1)) {
178 181
                 return $range;
182
+        }
179 183
             }
180 184
         }
181 185
         return '';
Please login to merge, or discard this patch.