From 81c74a856e6bceace5a24311c18195987510c65a Mon Sep 17 00:00:00 2001 From: Dominik Hebeler <dominik@suma-ev.de> Date: Thu, 7 Feb 2019 10:45:59 +0100 Subject: [PATCH] Fixed Blacklist --- app/Models/Result.php | 42 +++++++++++++++++++++++++----------------- 1 file changed, 25 insertions(+), 17 deletions(-) diff --git a/app/Models/Result.php b/app/Models/Result.php index 865a28ca5..03349b5df 100644 --- a/app/Models/Result.php +++ b/app/Models/Result.php @@ -59,9 +59,9 @@ class Result } $this->valid = true; $this->host = @parse_url($link, PHP_URL_HOST); - $this->strippedHost = $this->getStrippedHost($this->anzeigeLink); - $this->strippedDomain = $this->getStrippedDomain($this->strippedHost); - $this->strippedLink = $this->getStrippedLink($this->anzeigeLink); + $this->strippedHost = $this->getStrippedHost($this->link); + $this->strippedDomain = $this->getStrippedDomain($this->link); + $this->strippedLink = $this->getStrippedLink($this->link); $this->rank = 0; $this->partnershop = isset($additionalInformation["partnershop"]) ? $additionalInformation["partnershop"] : false; $this->image = isset($additionalInformation["image"]) ? $additionalInformation["image"] : ""; @@ -385,22 +385,30 @@ return "https://proxy.suma-ev.de/mger/nph-proxy.cgi/en/w0/" . $tmp; */ public function getUrlElements($url) { - if (!preg_match("/(?:((?:http)|(?:https))(?::\/\/))?(?:([a-z0-9.\-_~]+):([a-z0-9.\-_~]+)@)?(?:(www)(?:\.))?((?:(?:[a-z0-9.\-_~]+\.)+)?([a-z0-9.\-_~]+\.[a-z0-9.\-_~]+))(?:(?::)(\d+))?((?:(?:\/[a-z0-9.\-_~]+)+)(?:\.[a-z0-9.\-_~]+)?)?(\?[a-z0-9.\-_~]+=[a-z0-9.\-_~]+(?:&[a-z0-9.\-_~]+=[a-z0-9.\-_~]+)*)?(?:(?:#)([a-z0-9.\-_~]+))?/i", $url, $match)) { - return; + $parts = parse_url($url); + $re = []; + + $re["schema"] = empty($parts["scheme"]) ? "" : $parts["scheme"]; + $re["username"] = empty($parts["user"]) ? "" : $parts["user"]; + $re["password"] = empty($parts["pass"]) ? "" : $parts["pass"]; + $re["web"] = ""; + $re["host"] = $parts["host"]; + if (stripos($re["host"], "www.") === 0) { + $re["web"] = "www."; + $re["host"] = substr($re["host"], strpos($re["host"], ".") + 1); + } + $hostParts = explode(".", $re["host"]); + if (sizeof($hostParts) >= 3) { + $re["domain"] = $hostParts[sizeof($hostParts) - 2] . "." . $hostParts[sizeof($hostParts) - 1]; } else { - $re = []; - if (isset($match[1])) {$re['schema'] = $match[1];} else { $re['schema'] = "";}; - if (isset($match[2])) {$re['username'] = $match[2];} else { $re['username'] = "";}; - if (isset($match[3])) {$re['password'] = $match[3];} else { $re['password'] = "";}; - if (isset($match[4])) {$re['web'] = $match[4];} else { $re['web'] = "";}; - if (isset($match[5])) {$re['host'] = $match[5];} else { $re['host'] = "";}; - if (isset($match[6])) {$re['domain'] = $match[6];} else { $re['domain'] = "";}; - if (isset($match[7])) {$re['port'] = $match[7];} else { $re['port'] = "";}; - if (isset($match[8])) {$re['path'] = $match[8];} else { $re['path'] = "";}; - if (isset($match[9])) {$re['query'] = $match[9];} else { $re['query'] = "";}; - if (isset($match[10])) {$re['fragment'] = $match[10];} else { $re['fragment'] = "";}; - return $re; + $re["domain"] = $re["host"]; } + $re["port"] = empty($parts["port"]) ? ($re["schema"] === "http" ? 80 : ($re["schema"] === "https" ? 443 : 80)) : $parts["port"]; + $re["path"] = empty($parts["path"]) ? "" : $parts["path"]; + $re["query"] = empty($parts["query"]) ? "" : $parts["query"]; + $re["fragment"] = empty($parts["fragment"]) ? "" : $parts["fragment"]; + + return $re; } # Getter -- GitLab