Создать сайт VPN сервиса на PHP и настройка OpenVPN server
- Описание
**Название сайта:** 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
названия в таблицах можно свои более подходящие
- Приложения
-
new_24.txtnew_24.txt 9.62 KB
- Безопасное сотрудничество
- Работодатель готов использовать "Безопасную сделку".
- Категория