From 99a2fc51230b47c6bed4eb1926514c0489ca6c42 Mon Sep 17 00:00:00 2001 From: Lev Date: Sat, 15 Nov 2025 21:35:41 +0300 Subject: [PATCH] Site --- Frontend/Pages/index.html | 56 +++++ Frontend/Pages/offer.html | 118 +++++++++++ Frontend/Pages/privacy.html | 84 ++++++++ Frontend/Styles/index.css | 402 ++++++++++++++++++++++++++++++++++++ Frontend/Styles/offer.css | 85 ++++++++ 5 files changed, 745 insertions(+) create mode 100644 Frontend/Pages/index.html create mode 100644 Frontend/Pages/offer.html create mode 100644 Frontend/Pages/privacy.html create mode 100644 Frontend/Styles/index.css create mode 100644 Frontend/Styles/offer.css diff --git a/Frontend/Pages/index.html b/Frontend/Pages/index.html new file mode 100644 index 0000000..4c6d9b9 --- /dev/null +++ b/Frontend/Pages/index.html @@ -0,0 +1,56 @@ + + + + + + Spectralvpn + + + + +
+

SpectralVPN

+
+ + +
+
+
+

Максимальная скорость
и неуязвимое шифрование

+

Мы предлагаем современный протокол VLESS + Reality — шифрование трафика без потери скорости.

+
+
VLESS
+
Reality
+
TLS 1.3
+
1 Гбит/с
+
+ +
+
+
+

Speed

+

Высокая скорость

+

До 1 Гбит/с

+
+
+

Lock

+

Полное шифрование

+

VLESS + TLS 1.3 + Reality

+
+
+

Shield

+

Reality-маскировка

+

Трафик выглядит как обычное открытие Web-сайта

+
+
+
+

Подключитесь за 5 минут

+

Скачайте конфигурацию VLESS + Reality и импортируйте в любой клиент

+ +
+ + + \ No newline at end of file diff --git a/Frontend/Pages/offer.html b/Frontend/Pages/offer.html new file mode 100644 index 0000000..290955d --- /dev/null +++ b/Frontend/Pages/offer.html @@ -0,0 +1,118 @@ + + + + + + Пользовательское соглашение (Публичная оферта) — SpectralVPN + + + +
+
+

Пользовательское соглашение (Публичная оферта)

+

VPN-сервис SpectralVPN

+

Дата вступления в силу: 15 ноября 2025 г.

+
+ +
+

1. Термины и определения

+

1.1. VPN-сервис SpectralVPN (далее — «Продавец») — онлайн-сервис, расположенный на доменном имени spectralvpn.ru, а также его официальная система в мессенджере Telegram с учетной записью @spectralvpnbot (далее — «Телеграм-бот»). Продавец предоставляет платные услуги доступа к виртуальной частной сети (VPN) на условиях настоящего соглашения.

+

1.2. Пользователь (далее — «Покупатель») — дееспособное физическое либо юридическое лицо, посетившее Сайт или воспользовавшееся Телеграм-ботом и намеревающееся приобрести либо использующее услуги VPN-сервиса SpectralVPN. Факт использования Сайта или Телеграм-бота, включая оформление Заказа, означает полное и безоговорочное принятие Пользователем условий настоящего соглашения.

+

1.3. Услуга — услуга платного предоставления доступа к VPN-соединению, реализуемая путем выдачи Покупателю уникального URL для подключения к VPN-серверу по протоколу VLESS с использованием Reality. URL позволяет установить защищённое соединение с интернетом через серверы Продавца.

+

1.4. Заказ — должным образом оформленный запрос Покупателя на приобретение Услуги через Сайт или Телеграм-бот, совмещённый с внесением оплаты согласно выбранному тарифу. Оплата Заказа Покупателем признаётся акцептом настоящей оферты, то есть полным и безусловным принятием условий соглашения.

+

1.5. Стороны — совместное именование Продавца и Покупателя в рамках настоящего соглашения.

+
+ +
+

2. Предмет соглашения

+

2.1. Продавец обязуется предоставить Покупателю Услугу VPN-доступа на условиях настоящего соглашения, а Покупатель обязуется оплатить предоставление данной Услуги. Услуга заключается в выдаче Покупателю уникального URL для подключения к VPN-серверу по протоколу VLESS+Reality с целью защиты интернет-соединения и данных Покупателя. Покупатель самостоятельно выбирает клиентское приложение и настраивает подключение.

+

2.2. Настоящее соглашение является договором возмездного оказания услуг и публичной офертой в соответствии с п.2 ст. 437 ГК РФ. Полным и безоговорочным акцептом оферты признается совершение Покупателем оплаты Заказа. С момента акцепта договор считается заключённым.

+

2.3. Сервис предоставляется «как есть» (“as is”). Продавец не гарантирует бесперебойную работу на всех устройствах. Характеристики (скорость, задержка, доступность ресурсов) зависят от внешних факторов.

+
+ +
+

3. Порядок оформления заказа и предоставления Услуги

+

3.1. Оформление Заказа — через spectralvpn.ru или @spectralvpnbot. Покупатель предоставляет достоверный email.

+

3.2. Оплата — 100 % предоплата через ЮKassa. Момент зачисления — начало исполнения.

+

3.3. URL выдаётся в течение 72 часов (обычно мгновенно) в личном кабинете, по email или в Telegram. Обязательства Продавца выполнены с момента передачи работоспособного URL.

+

3.4. Покупатель самостоятельно настраивает клиент (Nekobox, v2rayNG и др.). Инструкции — на Сайте.

+

3.5. Продавец вправе отказать в Услуге до оплаты без объяснений. При отказе — полный возврат.

+

3.6. Возможны плановые работы. Перерывы не являются нарушением.

+
+ +
+

4. Условия использования и ограничения

+

4.1. URL — один Покупатель, неограниченное количество устройств. Передача третьим лицам запрещена.

+

4.2. Запрещено:

+
    +
  • Противоправные действия (хакерство, спам, мошенничество)
  • +
  • Распространение запрещённых материалов
  • +
  • Торренты (P2P) — автоматически блокируются системой 3x-ui
  • +
  • Утечка URL в открытый доступ
  • +
+

При нарушении — блокировка без возврата средств.

+

4.3. Покупатель несёт полную ответственность за свои действия в сети.

+

4.4. Продавец не ограничивает доступ к ресурсам, но оставляет право блокировки при выявлении нарушений.

+

4.5. URL действует до конца оплаченного периода. Продление — опционально.

+

4.6. IP-адрес сервера может меняться ежемесячно. Актуальный URL — в личном кабинете.

+
+ +
+

5. Стоимость и расчёты

+

5.1. Тарифы — в рублях РФ, на Сайте и в боте.

+

5.2. Цены могут меняться. Изменения не касаются оплаченных Заказов.

+

5.3. Оплата — 100 % предоплата через ЮKassa. Чек отправляется автоматически (ФЗ-54).

+

5.4. Услуга считается оказанной с момента выдачи URL.

+
+ +
+

6. Возврат средств

+

6.1. Возврат возможен в течение 7 календарных дней с момента оплаты, если подключение по URL технически невозможно по вине Продавца.

+

6.2. Если URL выдан и работает — возврат не производится.

+

6.3. При невыдаче URL в течение 72 часов — полный возврат в течение 10 рабочих дней.

+

6.4. При блокировке за нарушение — возврат не производится.

+
+ +
+

7. Конфиденциальность и защита данных

+

7.1. No-Logs политика: Продавец не ведёт журналы интернет-активности (IP, трафик, DNS, сайты). Вся передаваемая информация шифруется и не сохраняется.

+

7.2. Хранятся только:

+
    +
  • Email (для входа)
  • +
  • Хэш пароля
  • +
  • Приватный ключ (UUID)
  • +
  • Дата оплаты, тариф
  • +
  • Дата принятия соглашения
  • +
+

Объём трафика, IP, DNS — НЕ хранятся.

+

7.3. Покупатель отвечает за сохранность URL и пароля.

+

7.5. Обработка данных — в соответствии с Политикой конфиденциальности.

+
+ +
+

8. Ответственность сторон

+

8.1. Ответственность — по законодательству РФ с учётом ограничений.

+

8.2. Продавец отвечает только за выдачу работоспособного URL.

+

8.6. Максимальная ответственность — стоимость последнего оплаченного периода.

+

8.7. Форс-мажор: блокировки, сбои связи, действия властей.

+
+ +
+

9. Заключительные положения

+

9.1. Оферта действует бессрочно. Изменения публикуются на Сайте. Продолжение использования = согласие.

+

9.3. Недействительность одного пункта не влияет на остальные.

+

9.4. Споры — в суде по месту нахождения Продавца (РФ).

+

9.5. Безусловный акцепт — использование spectralvpn.ru или @spectralvpnbot. Начало использования = согласие с офертой.

+
+ + +
+ + \ No newline at end of file diff --git a/Frontend/Pages/privacy.html b/Frontend/Pages/privacy.html new file mode 100644 index 0000000..acfbd19 --- /dev/null +++ b/Frontend/Pages/privacy.html @@ -0,0 +1,84 @@ + + + + + + Политика конфиденциальности — SpectralVPN + + + +
+
+

Политика конфиденциальности

+

SpectralVPN — анонимный VPN без логов активности

+

Дата вступления в силу: 15 ноября 2025 г.

+
+ +
+

1. Общие положения

+

Настоящая Политика конфиденциальности регулирует порядок обработки персональных данных Пользователей сервиса SpectralVPN, расположенного по адресу spectralvpn.ru и в Telegram-боте @spectralvpnbot.

+

Использование Сервиса означает безоговорочное согласие Пользователя с настоящей Политикой.

+
+ +
+

2. Какие данные мы собираем

+

Мы собираем минимальный объём данных, необходимый только для предоставления Услуги:

+
    +
  • Email — для входа и получения URL
  • +
  • Хэш пароля — оригинал не хранится
  • +
  • Приватный ключ (UUID) — для аутентификации по VLESS+Reality
  • +
  • Дата оплаты и тариф
  • +
  • Дата принятия соглашения
  • +
+
+ Мы НЕ собираем и НЕ храним:
+ • IP-адреса
• Объём трафика
• DNS-запросы
• Посещаемые сайты
• Содержимое передаваемых данных +
+
+ +
+

3. No-Logs политика

+

Сервис SpectralVPN построен на принципе нулевого логирования активности. Весь трафик шифруется сквозным шифрованием и не сохраняется на серверах.

+
+ +
+

4. Как используются данные

+
    +
  • Выдача и активация URL
  • +
  • Продление подписки
  • +
  • Техподдержка
  • +
  • Соблюдение ФЗ-152, ФЗ-54
  • +
+
+ +
+

5. Хранение и защита

+

Данные хранятся на защищённых серверах в Европе (геолокация меняется ежемесячно). Применяется AES-256, ограничение доступа, резервное копирование. Данные удаляются через 30 дней после окончания подписки.

+
+ +
+

6. Передача третьим лицам

+

Передача только по судебному решению РФ или ЮKassa (сумма, email, статус).

+
+ +
+

7. Права Пользователя

+

Запрос доступа, удаления, отзыва согласия (прекратит доступ). Обращайтесь: support@spectralvpn.ru

+
+ +
+

8. Изменения

+

Обновления публикуются здесь. Продолжение использования = согласие.

+
+ + +
+ + \ No newline at end of file diff --git a/Frontend/Styles/index.css b/Frontend/Styles/index.css new file mode 100644 index 0000000..0cf19db --- /dev/null +++ b/Frontend/Styles/index.css @@ -0,0 +1,402 @@ +*{ + margin: 0; + padding: 0; +} + +body{ + background-color: black; + color: white; + font-family: 'Inter'; +} + +header{ + height: 5vh; + width: 100%; + display: flex; + justify-content: space-between; + align-items: center; + border: 0; + border-bottom: 1px; + border-style: solid; + border-color: rgb(41, 41, 41); +} + +header h2{ + margin-left: 2vw; +} + +h2 b{ + color: aqua; +} + +header div button{ + height: 4vh; + font-size: 14pt; + border-width: 0; + font-weight: 600; + padding-left: 10px; + padding-right: 10px; + border-radius: 5px; + cursor: pointer; +} + +#register{ + background-color: black; + color: white; + border-color: aqua; + border-width: 1px; + margin-right: 10px; + transition: 0.1s; +} + +#register:hover{ + color: black; + background-color: aqua; +} + +#register:active{ + opacity: 0.7; +} + +#login{ + background-color: aqua; + margin-right: 2vw; +} + +#login:hover{ + background-color: black; + border-color: aqua; + border-style: solid; + border-width: 1px; + color: white; +} + +#login:active{ + opacity: 0.7; +} + +#main{ + display: flex; + flex-direction: column; + align-items: center; + min-height: 50vh; +} + +#main h1{ + font-size: 25pt; + text-align: center; + margin-top: 10vh; + line-height: 35pt; +} + +#main h4{ + margin-top: 1vh; + font-size: 13pt; + font-weight: 500; + max-width: 550px; + text-align: center; + color: lightgrey; + line-height: 20pt; +} + +#main h4 b{ + font-weight: 700; +} + +#container{ + display: flex; + margin-top: 5vh; + flex-wrap: wrap; + justify-content: center; +} + +#container div{ + height: 4vh; + width: 100px; + background-color: rgba(10, 117, 136, 0.575); + border-radius: 7px; + border-width: 1px; + border-color: aqua; + border-style: solid; + margin: 5px; + color: aqua; + display: flex; + justify-content: center; + align-items: center; + font-size: 13pt; + font-weight: 700; + flex-wrap: wrap; +} + +#main button{ + margin-top: 3vh; + height: 5vh; + padding-left: 20px; + padding-right: 20px; + background-color: aqua; + border-radius: 7px; + border-style: none; + font-size: 14pt; + font-weight: 700; + cursor: pointer; + transition: 0.1s; + margin-bottom: 5vh; +} + +#main button:hover{ + background-color: black; + border-color: aqua; + border-style: solid; + border-width: 1px; + color: white; +} + +#main button:active{ + opacity: 0.7; +} + +#info{ + background-color: rgb(7, 7, 7); + display: flex; + flex-wrap: wrap; + justify-content: space-evenly; + padding: 5vh; + min-height: 30vh; + align-items: center; + border: 0; + border-top: 1px; + border-bottom: 1px; + border-style: solid; + border-color: rgb(27, 27, 27); +} + +#info div{ + margin: 5vh; + display: flex; + flex-direction: column; + align-items: center; +} + +#info div h1{ + font-weight: 300; + font-size: 25pt; + color: lightgray; +} + +#info div h3{ + font-size: 14pt; + margin-top: 1vh; +} + +#info div p{ + width: 250px; + text-align: center; + color: gray; + margin-top: 1vh; +} + +#final{ + display: flex; + flex-direction: column; + align-items: center; + padding: 5vh; +} + +#final h2{ + font-size: 25pt; +} + +#final h3{ + font-weight: 300; + color:gray; + margin-top: 2vh; + max-width: 500px; + text-align: center; + line-height: 17pt; +} + +#final button{ + color: white; + background-color: black; + border-color: aqua; + border-style: solid; + border-radius: 7px; + padding-left: 20px; + padding-right: 20px; + height: 5vh; + font-size: 15pt; + font-weight: 700; + margin-top: 3vh; + cursor: pointer; + transition: 0.1s; +} + +#final button:hover{ + color: black; + background-color: aqua; +} + +#final button:active{ + opacity: 0.7; +} + +footer{ + height: 5vh; + width: 100%; + display: flex; + align-items: center; + justify-content: space-around; + border: 0; + border-top: 1px; + border-style: solid; + border-color: rgb(41, 41, 41); +} + +footer a{ + color: darkgray; +} + +footer a:active{ + color: rgb(109, 109, 109); +} + +footer p{ + color: darkgray; +} + +@media (width < 600px) { + header { + height: 10vh; + padding: 0 15px; + flex-wrap: wrap; + width: 91vw; + } + + header h2 { + margin-left: 0; + font-size: 18pt; + } + + header div { + display: flex; + gap: 8px; + } + + header div button { + font-size: 12pt; + height: 4.5vh; + padding: 0 12px; + } + + #register { + margin-right: 0; + } + + #login { + margin-right: 0; + } + + /* Main Section */ + #main h1 { + font-size: 20pt; + line-height: 28pt; + margin-top: 8vh; + padding: 0 20px; + } + + #main h4 { + font-size: 12pt; + line-height: 18pt; + padding: 0 20px; + max-width: 90%; + } + + #container { + flex-wrap: wrap; + justify-content: center; + gap: 10px; + margin-top: 4vh; + padding: 0 20px; + } + + #container div { + width: 45%; + min-width: 90px; + height: 5.5vh; + font-size: 11pt; + margin: 0; + } + + #main button { + margin-top: 4vh; + height: 6vh; + font-size: 13pt; + width: 80%; + max-width: 300px; + } + + /* Info Section */ + #info { + flex-direction: column; + padding: 4vh 0; + gap: 3vh; + } + + #info div { + margin: 0; + width: 80%; + max-width: 300px; + } + + #info div h1 { + font-size: 22pt; + } + + #info div h3 { + font-size: 13pt; + } + + #info div p { + width: 100%; + font-size: 12pt; + line-height: 16pt; + } + + /* Final Section */ + #final { + padding: 6vh 20px; + } + + #final h2 { + font-size: 20pt; + text-align: center; + } + + #final h3 { + width: 100%; + font-size: 12pt; + line-height: 18pt; + margin-top: 2vh; + } + + #final button { + width: 80%; + max-width: 300px; + height: 6vh; + font-size: 13pt; + margin-top: 4vh; + } + + /* Footer */ + footer { + flex-direction: column; + height: auto; + padding: 15px 0; + text-align: center; + gap: 8px; + } + + footer a, footer p { + font-size: 11pt; + } +} \ No newline at end of file diff --git a/Frontend/Styles/offer.css b/Frontend/Styles/offer.css new file mode 100644 index 0000000..641c927 --- /dev/null +++ b/Frontend/Styles/offer.css @@ -0,0 +1,85 @@ +:root{ + --bg: #0f0f1a; + --text: #e0e0ff; + --accent: cyan; + --card: #1a1a2e; + --border: #333355; +} + +*{ box-sizing: border-box; margin:0; padding:0; } + +body{ + font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; + background: var(--bg); + color: var(--text); + line-height: 1.7; +} + +.container{ + max-width: 900px; + margin: 40px auto; + padding: 30px; + background: var(--card); + border-radius: 16px; + box-shadow: 0 10px 30px rgba(0,0,0,0.3); + border: 1px solid var(--border); +} + +header{ + text-align: center; + margin-bottom: 40px; + padding-bottom: 20px; + border-bottom: 1px solid var(--border); +} + +h1{ font-size: 2.2rem; color: var(--accent); margin:0; } +h2{ font-size: 1.5rem; color: var(--accent); margin-top: 2rem; border-left: 4px solid var(--accent); padding-left: 12px; } +h3{ font-size: 1.2rem; color: #c0c0ff; margin-top: 1.5rem; } + +p, li{ font-size: 1rem; margin: 0.8rem 0; } +ul, ol{ padding-left: 20px; } + +code{ + background: #2a2a3a; + padding: 2px 6px; + border-radius: 4px; + font-family: 'Courier New', monospace; +} + +.highlight{ + background: rgba(110, 86, 207, 0.15); + padding: 12px; + border-radius: 8px; + border-left: 4px solid var(--accent); + margin: 1rem 0; +} + +.footer{ + margin-top: 50px; + text-align: center; + font-size: 0.9rem; + color: #888; + padding-top: 20px; + border-top: 1px solid var(--border); +} + +.btn{ + display: inline-block; + margin: 15px 10px 0 0; + padding: 10px 20px; + background: var(--accent); + color: var(--card); + text-decoration: none; + border-radius: 8px; + font-weight: 600; + transition: 0.3s; +} +.btn:hover{ background: #5a45b0; transform: translateY(-2px); } + +a{ color: var(--accent); text-decoration: none; } +a:hover{ text-decoration: underline; } + +@media (max-width: 768px) { + .container { margin: 20px; padding: 20px; } + h1 { font-size: 1.8rem; } +} \ No newline at end of file