PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.20.0
GiveWP – Donation Plugin and Fundraising Platform v2.20.0
4.16.3 4.16.2 4.16.1 4.16.0 4.15.5 4.15.4 4.15.3 4.15.2 4.15.1 4.15.0 2.3.0 2.3.1 2.3.2 2.30.0 2.31.0 2.31.1 2.32.0 2.33.0 2.33.1 2.33.2 2.33.3 2.33.4 2.33.5 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.4.7 2.5.0 2.5.1 2.5.10 2.5.11 2.5.12 2.5.13 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.5.7 2.5.8 2.5.9 2.6.0 2.6.1 2.6.2 2.6.3 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.8.0 2.8.1 2.9.0 2.9.1 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.1.0 3.1.1 3.1.2 3.10.0 3.11.0 3.12.0 3.12.1 3.12.2 3.12.3 3.13.0 3.14.0 3.14.1 3.14.2 3.15.0 3.15.1 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.17.0 3.17.1 3.17.2 3.18.0 3.19.0 3.19.1 3.19.2 3.19.3 3.19.4 3.2.0 3.2.1 3.2.2 3.20.0 3.21.0 3.21.1 3.22.0 3.22.1 3.22.2 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.5.0 3.5.1 3.6.0 3.6.1 3.6.2 3.7.0 3.8.0 3.9.0 4.0.0 4.1.0 4.1.1 4.10.0 4.10.1 4.11.0 4.12.0 4.13.0 4.13.1 4.13.2 4.14.0 4.14.1 4.14.2 4.14.3 4.14.4 4.14.5 4.14.6 4.2.0 4.2.1 4.3.0 4.3.1 4.3.2 4.4.0 4.5.0 4.6.1 4.7.0 4.7.1 4.8.0 4.8.1 4.9.0 trunk 1.9.0 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.2 2.11.3 2.12.0 2.12.1 2.12.2 2.12.3 2.13.0 2.13.1 2.13.2 2.13.3 2.13.4 2.14.0 2.15.0 2.16.0 2.16.1 2.17.0 2.17.1 2.17.3 2.18.0 2.18.1 2.19.1 2.19.2 2.19.3 2.19.4 2.19.5 2.19.6 2.19.7 2.19.8 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.6 2.20.0 2.20.1 2.20.2 2.21.0 2.21.1 2.21.2 2.21.3 2.21.4 2.22.0 2.22.1 2.22.2 2.22.3 2.23.0 2.23.1 2.23.2 2.24.0 2.24.1 2.24.2 2.25.0 2.25.1 2.25.2 2.25.3 2.26.0 2.27.0 2.27.1 2.27.2 2.27.3 2.28.0 2.29.0 2.29.1 2.29.2
give / vendor / symfony / http-foundation / RequestMatcher.php
give / vendor / symfony / http-foundation Last commit date
Exception 4 years ago File 4 years ago Session 4 years ago Tests 4 years ago AcceptHeader.php 4 years ago AcceptHeaderItem.php 4 years ago ApacheRequest.php 4 years ago BinaryFileResponse.php 4 years ago Cookie.php 4 years ago ExpressionRequestMatcher.php 4 years ago FileBag.php 4 years ago HeaderBag.php 4 years ago IpUtils.php 4 years ago JsonResponse.php 4 years ago LICENSE 4 years ago ParameterBag.php 4 years ago RedirectResponse.php 4 years ago Request.php 4 years ago RequestMatcher.php 4 years ago RequestMatcherInterface.php 4 years ago RequestStack.php 4 years ago Response.php 4 years ago ResponseHeaderBag.php 4 years ago ServerBag.php 4 years ago StreamedResponse.php 4 years ago
RequestMatcher.php
178 lines
1 <?php
2
3 /*
4 * This file is part of the Symfony package.
5 *
6 * (c) Fabien Potencier <fabien@symfony.com>
7 *
8 * For the full copyright and license information, please view the LICENSE
9 * file that was distributed with this source code.
10 */
11
12 namespace Symfony\Component\HttpFoundation;
13
14 /**
15 * RequestMatcher compares a pre-defined set of checks against a Request instance.
16 *
17 * @author Fabien Potencier <fabien@symfony.com>
18 */
19 class RequestMatcher implements RequestMatcherInterface
20 {
21 /**
22 * @var string|null
23 */
24 private $path;
25
26 /**
27 * @var string|null
28 */
29 private $host;
30
31 /**
32 * @var string[]
33 */
34 private $methods = [];
35
36 /**
37 * @var string[]
38 */
39 private $ips = [];
40
41 /**
42 * @var array
43 */
44 private $attributes = [];
45
46 /**
47 * @var string[]
48 */
49 private $schemes = [];
50
51 /**
52 * @param string|null $path
53 * @param string|null $host
54 * @param string|string[]|null $methods
55 * @param string|string[]|null $ips
56 * @param string|string[]|null $schemes
57 */
58 public function __construct($path = null, $host = null, $methods = null, $ips = null, array $attributes = [], $schemes = null)
59 {
60 $this->matchPath($path);
61 $this->matchHost($host);
62 $this->matchMethod($methods);
63 $this->matchIps($ips);
64 $this->matchScheme($schemes);
65
66 foreach ($attributes as $k => $v) {
67 $this->matchAttribute($k, $v);
68 }
69 }
70
71 /**
72 * Adds a check for the HTTP scheme.
73 *
74 * @param string|string[]|null $scheme An HTTP scheme or an array of HTTP schemes
75 */
76 public function matchScheme($scheme)
77 {
78 $this->schemes = null !== $scheme ? array_map('strtolower', (array) $scheme) : [];
79 }
80
81 /**
82 * Adds a check for the URL host name.
83 *
84 * @param string|null $regexp A Regexp
85 */
86 public function matchHost($regexp)
87 {
88 $this->host = $regexp;
89 }
90
91 /**
92 * Adds a check for the URL path info.
93 *
94 * @param string|null $regexp A Regexp
95 */
96 public function matchPath($regexp)
97 {
98 $this->path = $regexp;
99 }
100
101 /**
102 * Adds a check for the client IP.
103 *
104 * @param string $ip A specific IP address or a range specified using IP/netmask like 192.168.1.0/24
105 */
106 public function matchIp($ip)
107 {
108 $this->matchIps($ip);
109 }
110
111 /**
112 * Adds a check for the client IP.
113 *
114 * @param string|string[]|null $ips A specific IP address or a range specified using IP/netmask like 192.168.1.0/24
115 */
116 public function matchIps($ips)
117 {
118 $this->ips = null !== $ips ? (array) $ips : [];
119 }
120
121 /**
122 * Adds a check for the HTTP method.
123 *
124 * @param string|string[]|null $method An HTTP method or an array of HTTP methods
125 */
126 public function matchMethod($method)
127 {
128 $this->methods = null !== $method ? array_map('strtoupper', (array) $method) : [];
129 }
130
131 /**
132 * Adds a check for request attribute.
133 *
134 * @param string $key The request attribute name
135 * @param string $regexp A Regexp
136 */
137 public function matchAttribute($key, $regexp)
138 {
139 $this->attributes[$key] = $regexp;
140 }
141
142 /**
143 * {@inheritdoc}
144 */
145 public function matches(Request $request)
146 {
147 if ($this->schemes && !\in_array($request->getScheme(), $this->schemes, true)) {
148 return false;
149 }
150
151 if ($this->methods && !\in_array($request->getMethod(), $this->methods, true)) {
152 return false;
153 }
154
155 foreach ($this->attributes as $key => $pattern) {
156 if (!preg_match('{'.$pattern.'}', $request->attributes->get($key))) {
157 return false;
158 }
159 }
160
161 if (null !== $this->path && !preg_match('{'.$this->path.'}', rawurldecode($request->getPathInfo()))) {
162 return false;
163 }
164
165 if (null !== $this->host && !preg_match('{'.$this->host.'}i', $request->getHost())) {
166 return false;
167 }
168
169 if (IpUtils::checkIp($request->getClientIp(), $this->ips)) {
170 return true;
171 }
172
173 // Note to future implementors: add additional checks above the
174 // foreach above or else your check might not be run!
175 return 0 === \count($this->ips);
176 }
177 }
178