public function matchRegex(Request $request, $url) { /* Match on custom defined regular expression */ if ($this->regex === null) { return null; } $parameters = []; if (preg_match($this->regex, $request->getHost() . $url, $parameters) > 0) { /* Remove global match */ $this->parameters = array_slice($parameters, 1); return true; } return false; }
/** * Method called to check if a domain matches * * @param Request $request * @return bool */ public function matchDomain(Request $request) { if (count($this->domains) === 0) { return true; } foreach ($this->domains as $domain) { $parameters = $this->parseParameters($domain, $request->getHost(), '.*'); if ($parameters !== null && count($parameters) > 0) { $this->parameters = $parameters; return true; } } return false; }
public function handle(Request $request) { $domain = env('DEBUG', false) ? 'dscuz' : str_ireplace('.' . Registry::getInstance()->get('host'), '', $request->getHost()); $request->source = Memcache::getInstance()->put('source_' . $domain, 60 * 60, function () use($domain) { return Source::getBySubdomain($domain); }); $this->setParameters($request); if (!$request->source->hasRow()) { throw new \ErrorException('Invalid source.'); } if ($request->source->getOrganisation() !== null && $request->source->getOrganisation()->disabled) { throw new OrganisationDisabledException('Source has been disabled'); } if ($request->source->require_ssl && !$request->getIsSecure()) { redirect('https://' . $request->getHost() . $request->getUri(), 101); } // Check for valid api-token if posting if ($request->getMethod() !== 'get') { $token = request()->getHeader('X-Auth-Token'); if ($token === null || $token !== $request->source->getOrganisation()->api_token) { throw new \InvalidArgumentException('Invalid X-Auth-Token.'); } } }