**Название сайта:** 1GVPN, 1Gbps, 1Gbps VPN for Home **Дизайн:** Скопировать "дизайн" (html, css, js?) с [dmzhost.co](https://dmzhost.co/). При копировании изменить картинки и цвет. **Технологии:** Frontend и backend на PHP 8.2+, MySQL. (nginx, php-fpm, mariadb, debian) **Требования:** - Чем проще, тем лучше. - Ссылки без .php. - Сайт на английском языке. - Каждая форма должна проверять ввод пользователя по pattern. - Все PHP скрипты должны проверять ввод и быть безопасными. - Парсинг информации с серверов через PHP. - Готовый скрипт для развертывания VPN сервера будет преимуществом. - Ограничение по времени: 1 месяц. - Нужно парсить информацию openvpn с серверов через php. - Сайт должен быть ненагруженный: без анимаций, modal (в админке можно) и прочего. - Убедитесь, что все формы проверяют ввод пользователя по pattern. - Все PHP скрипты должны проверять ввод и быть безопасными(mysql injections и тд). - Парсинг информации с серверов осуществляется через PHP. - Готовый скрипт для развертывания VPN сервера. - Нужно разрешить пользователю только TCP, UDP, PING (IPv4, IPV6), PING лимитировать до 5 в секунду от каждого пользователя (если невозможно, то весь пинг от OpenVPN до 10 в секунду). **Страницы:** 1. **Главная страница:** - Описание VPN сервиса, его назначение, технологии, доступные страны. - Внизу три раздела: services, company, links, и копирайт. - В меню сверху кнопки на страницы, доступные для пользователя. - Отображение скидки пользователя и количества покупок с суммой. (таблица users, orders) (можно на главной странице в кабинете) 2. **Страница покупки ключа активации:** - Опции покупки ключа: день, неделя, месяц, год. (таблица plans) - Ключ используется для доступа к скачиванию конфигурации OpenVPN. - Кнопки скачивания приложений и инструкция. - Оплата через кошелек Bybit с использованием их API для получения адресов и проверки транзакций. - Выбор криптовалюты для оплаты: BTC, LTC, USDT TRON20, USDT BSC20 (возможность изменения валют в PHP). - Оплата проверяется по копейкам (по точной сумме). Т.е. если юзер выбирает оплату на месяц и он стоит 2$, то к оплате добавляется 0.01$ или 0.02$, или 0.03$ чтобы получилась уникальная сумма. - Время на оплату: 24 часа. - Необязательный ввод email для сохранения ключа на почту, отправка на почту с помощью php если оплачено. - Кнопка обновления статуса и автоматическое обновление каждые 15 секунд в фоне. - Кнопка перехода на страницу скачивания конфигурации если оплачено. - Выбор страны (сервера), влияющий на цену. (таблица servers) - Учет скидок для залогиненных пользователей. (таблица users) - Выбор количества ключей для покупки. 3. **Страница скачивания конфигурации OpenVPN:** - Ввод ключа для получения информации о времени покупки, активации и окончания действия ключа. - Кнопки продления действия ключа на день, неделю, месяц, год. - Капча Cloudflare. - Инструкция по запуску и ссылки на скачивания приложений. 4. **Страница с контактами.** 5. **Страница входа:** - Вход по email и паролю (md5(md5(md5(password)))). **Страницы админки или кабинет ресслера:** 1. **Главная страница(доступна админу):** - Статус сервера, трафик in/out (https://raw.githubusercontent.com/flant/ovpn-admin/master/img/ovpn-admin-metrics.png). - Количество пользователей, активные пользователи. (данные из OpenVPN, не mysql) - Полезная информация от OpenVPN (вся информация с этой страницы из OpenVPN, не из базы данных). - Отображение скидки пользователя и количества покупок с суммой. (таблица users, orders) 2. **Страница ключей (orders) (доступна админу/реселлеру(юзеру)):** - Таблица с колонками: статус (green/red, брать из OpenVPN - не онлайн пользователя, а включена ли конфигурация), ключ, email, дата истечения, действия (revoke, renew). - Сортировка(по статусу, дате истечения), пагинация(100 ключей на страницу), поиск по ключу. 3. **Страница пользователей (доступна админу):** - Таблица с колонками: email, скидка, статистика, комментарий, действия (установить скидку, забанить пользователя, редактировать комментарий). - Кнопка добавления пользователя. **Процесс работы:** - Пользователь покупает ключ активации на сайте. - Пользователь скачивает конфигурационный файл OpenVPN. - Пользователь вставляет конфигурационный файл в приложение OpenVPN на Android, iOS или Windows. **Взаимодействие сайта с сервером:** - Сайт общается с сервером через PHP. - PHP управляет OpenVPN с помощью командной строки (или другого метода). **Крон задачи:** - Остановка и удаление конфигураций из OpenVPN по истечении срока действия (каждую минуту). - Проверка оплаты (каждую минуту). - Проверка израсходованного трафика ???????????? (каждую минуту) **OpenVPN:** - Конфигурация должна работать только на одном устройстве одновременно. При новом подключении VPN работает на новом устройстве. (вроде так и работает, ну это не точно) - Обход Роскомнадзора (проверка доступа к YouTube на мобильных операторах). Если не работает, подключить Shadowsocks или другое решение (согласование со мной). - Если без дополнительных прокси, OpenVPN должен работать на UDP. **MySQL таблицы:** plans(name, days, traffic_limit, speed_limit_if_traffic_expended) users(status, email, password, is_admin, discount) keys(key, server, config, expire, user) orders(keys, status, email, created_time, currency, amount) servers(name, api_url, country, comment, price) **Дополнительная информация:** - Используемый мной скрипт [angristan/openvpn-install](https://github.com/angristan/openvpn-install), проверено на Tele2 (работает). **Полезные ссылки:** https://testnet.bybit.com/en https://bybit-exchange.github.io/docs/v5/intro https://openvpn.net/community-resources/how-to/ https://openvpn.net/vpn-server-resources/command-line/ https://github.com/flant/ovpn-admin **Этапы разработки:** 1. **Разработка бэкенда:** 2. **Интеграция OpenVPN:** 3. **Интеграция платежного шлюза:** 4. **Разработка фронтенда:** 5. **Тестирование и развертывание:** ресслер - юзер в таблице users админ - юзер в таблице users с true в is_admin названия в таблицах можно свои более подходящие