From 2f3459b670fe67f039f44dcb1cc920007b507d06 Mon Sep 17 00:00:00 2001 From: NW Date: Thu, 6 Mar 2025 16:13:11 +0000 Subject: [PATCH] mart litle update --- README.md | 155 +++++++++++++++++++++++++++++++++++---------- docker-compose.yml | 26 ++++---- wg/start.sh | 73 +++++++++++++-------- 3 files changed, 180 insertions(+), 74 deletions(-) diff --git a/README.md b/README.md index 597614f..3f47724 100644 --- a/README.md +++ b/README.md @@ -1,53 +1,139 @@ -**Универсальный Телеграмм Магазин** +# Универсальный Телеграмм Магазин **Описание проекта**: -"Универсальный Телеграмм Магазин" — это телеграмм-бот, предназначенный для организации и управления онлайн-продажами товаров и услуг через популярную платформу Telegram. Магазин включает функционал как для пользователей, так и для администраторов, обеспечивая удобное взаимодействие с товарами, балансами, кошельками и покупками. +"Универсальный Телеграмм Магазин" — это телеграмм-бот для организации онлайн-продаж через Telegram. Проект предоставляет полный цикл управления магазином, включая работу с криптовалютами, управление товарами и пользователями, а также интеграцию с VPN через WireGuard для безопасных транзакций. + +**Основные технологии**: +- Node.js + Telegraf для работы с Telegram API +- SQLite для хранения данных +- Docker для контейнеризации +- WireGuard для защищенных соединений +- Поддержка криптокошельков (Bitcoin, Ethereum, Litecoin) Проект включает несколько ключевых разделов для удобной работы пользователей и администраторов, а также позволяет интегрировать систему криптокошельков для расчетов, управления товарами и отслеживания покупок. -### Цели проекта: -- Создание удобного и универсального интерфейса для покупок через Telegram. -- Обеспечение безопасности и простоты транзакций с использованием криптовалют и традиционных средств. -- Внедрение эффективной системы управления для администраторов, с возможностью мониторинга пользователей, товаров, кошельков и комиссий. -- Реализация системы профилей с возможностью редактирования, управления балансами и удаления аккаунтов. +### Основной функционал + +#### Для пользователей: +- Просмотр товаров по категориям с фильтрацией по локациям +- Совершение покупок с использованием криптовалют +- Управление криптокошельками (создание, пополнение, просмотр баланса) +- Просмотр истории транзакций и покупок +- Настройка профиля (локация, контактные данные) +- Подключение к защищенному VPN через WireGuard для безопасных транзакций + +#### Для администраторов: +- Полное управление товарами и категориями +- Управление пользователями (блокировка, редактирование балансов) +- Контроль транзакций и комиссий +- Создание дампов базы данных с автоматическим списанием комиссии (% от балансов кошельков) +- Управление локациями и настройками VPN +- Мониторинг активности пользователей +- SaaS система с автоматическим расчетом комиссий: + - Комиссия за оборот по магазину перед выгрузкой кошельков --- -### Структура проекта: +### Установка и запуск -#### 1. **Пользовательский раздел** - Пользователи могут: - - Просматривать и покупать товары, управлять своим балансом. - - Следить за историей покупок. - - Пополнять свои криптокошельки. - - Управлять своим профилем, изменяя локацию и удаляя аккаунт. +#### Требования: +- Node.js 18+ +- Docker и Docker Compose +- Telegram Bot Token +- SQLite connection string +- WireGuard конфигурация -#### 2. **Административный раздел** - Администраторы могут: - - Управлять пользователями: блокировать, удалять и редактировать балансы. - - Управлять товарами: добавлять, редактировать, удалять товары и категории. - - Управлять кошельками: контролировать пополнения и комиссионные платежи. - - Создавать дампы для переноса базы данных магазина. +#### 1. Установка зависимостей: +```bash +npm install +``` + +#### 2. Настройка конфигурации: +Создайте файл `.env` в корне проекта со следующим содержимым: +```env +TELEGRAM_BOT_TOKEN=your_bot_token +MONGO_URI=mongodb://localhost:27017/telegram_shop +WIREGUARD_CONFIG_PATH=./wg/config/wg0.conf +``` + +#### 3. Запуск через Docker: +```bash +docker-compose up -d +``` + +#### 4. Настройка WireGuard: +1. Сгенерируйте ключи: +```bash +wg genkey | tee privatekey | wg pubkey > publickey +``` +2. Настройте wg0.conf: +```ini +[Interface] +PrivateKey = +Address = 10.0.0.1/24 +ListenPort = 51820 + +[Peer] +PublicKey = +AllowedIPs = 10.0.0.2/32 +``` + +#### 5. Запуск бота: +```bash +npm start +``` --- -### Основной функционал: +### Структура проекта -#### 1. **Покупки и товары** - - **Продукты**: Пользователи могут выбирать товары по категориям, проверять наличие средств и совершать покупки. - - **Профиль**: В разделе профиля можно изменять локацию, а также удалять аккаунт. - - **История покупок**: Пользователи могут отслеживать свои покупки с описанием товаров и статусов. - - **Кошельки**: Возможность добавлять новые криптокошельки, пополнять их через QR-коды и просматривать историю транзакций. +``` +├── src/ +│ ├── config/ # Конфигурация приложения +│ ├── context/ # Контекст и состояния бота +│ ├── handlers/ # Обработчики команд +│ ├── models/ # Модели данных +│ ├── services/ # Бизнес-логика +│ ├── utils/ # Вспомогательные утилиты +│ └── index.js # Точка входа +├── wg/ # Конфигурация WireGuard +├── docker-compose.yml # Docker конфигурация +└── Dockerfile # Docker образ +``` -#### 2. **Администрирование** - - **Управление пользователями**: Администратор может просматривать информацию о пользователях, управлять их балансами, блокировать или удалять аккаунты. - - **Управление товарами**: Добавление новых товаров, редактирование существующих и управление их категориями. - - **Создание дампов**: Администратор может создать дамп магазина, чтобы перенести данные на другой сервер или сохранить их для архивации. +--- -#### 3. **Работа с криптовалютами** - - Поддержка различных типов криптокошельков (биткойн, эфириум, лайткоин и другие). - - Проверка баланса кошельков через общедоступные API. - - Управление комиссионными, которые необходимы для загрузки дампа магазина. +### Разработка + +#### Запуск в режиме разработки: +```bash +npm run dev +``` + +#### Линтинг и форматирование: +```bash +npm run lint +npm run format +``` + +#### Тестирование: +```bash +npm test +``` + +--- + +### Лицензия + +Проект распространяется под лицензией MIT. Подробнее см. в файле LICENSE. + +--- + +### Контакты + +По вопросам сотрудничества и поддержки: +- Email: support@telegram-shop.com +- Telegram: @telegram_shop_support --- @@ -87,4 +173,3 @@ ### Заключение: **Универсальный Телеграмм Магазин** предоставляет эффективное решение для организации торговых процессов в Telegram, с возможностью работы с криптовалютами и традиционными средствами. Проект ориентирован на пользователей, которые ценят удобство, безопасность и скорость совершения покупок. Для администраторов — это мощный инструмент для управления товаром, пользователями и финансовыми потоками магазина. - diff --git a/docker-compose.yml b/docker-compose.yml index e8320fd..b9d8d8e 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -8,17 +8,19 @@ services: container_name: telegram_shop_prod restart: always environment: - - BOT_TOKEN=7626758249:AAEdcbXJpW1VsnJJtc8kZ5VBsYMFR242wgk - - ADMIN_IDS=732563549,390431690,217546867 - - SUPPORT_LINK=https://t.me/neroworm - - CATALOG_PATH=./catalog - - COMMISSION_ENABLED=true - - COMMISSION_PERCENT=5 - - COMMISSION_WALLET_BTC=bc1qyourbtcaddress - - COMMISSION_WALLET_LTC=ltc1qyourltcaddress - - COMMISSION_WALLET_USDT=0x654dbef74cae96f19aa03e1b0abf569b111572cc - - COMMISSION_WALLET_USDC=0xYourUsdcAddress - - COMMISSION_WALLET_ETH=0xYourEthAddress + - WG_ENABLED=false # Включение/выключение WireGuard (true/false) + - BOT_TOKEN=7626758249:AAEdcbXJpW1VsnJJtc8kZ5VBsYMFR242wgk # Токен Telegram бота + - ADMIN_IDS=732563549,390431690,217546867 # ID администраторов через запятую + - SUPPORT_LINK=https://t.me/neroworm # Ссылка на поддержку + - CATALOG_PATH=./catalog # Путь к каталогу товаров + - COMMISSION_ENABLED=true # Включение комиссии (true/false) + - COMMISSION_PERCENT=5 # Процент комиссии + # Кошельки для комиссий: + - COMMISSION_WALLET_BTC=bc1qyourbtcaddress # Bitcoin + - COMMISSION_WALLET_LTC=ltc1qyourltcaddress # Litecoin + - COMMISSION_WALLET_USDT=0x654dbef74cae96f19aa03e1b0abf569b111572cc # USDT (ERC-20) + - COMMISSION_WALLET_USDC=0xYourUsdcAddress # USDC (ERC-20) + - COMMISSION_WALLET_ETH=0xYourEthAddress # Ethereum volumes: - ./db:/app/db/ # Синхронизация базы данных - ./src:/app/src/ # Синхронизация исходного кода @@ -34,4 +36,4 @@ services: - net.ipv4.conf.all.src_valid_mark=1 # Необходимо для маршрутизации privileged: true # Даем контейнеру повышенные привилегии networks: - default: \ No newline at end of file + default: diff --git a/wg/start.sh b/wg/start.sh index 4657706..3ecd6a4 100644 --- a/wg/start.sh +++ b/wg/start.sh @@ -44,6 +44,16 @@ print_result() { print_separator } +# Проверка включения WireGuard +if [ "$WG_ENABLED" = "false" ]; then + print_stage "WireGuard is disabled" + print_result "Skipping WireGuard setup" + print_stage "Starting application" + echo "║ Application is starting..." + exec node src/index.js + exit 0 +fi + # Проверка наличия /etc/resolv.conf print_stage "Checking /etc/resolv.conf" if [ ! -f /etc/resolv.conf ]; then @@ -112,36 +122,45 @@ else fi fi -# Запуск WireGuard -print_stage "Starting WireGuard" -wg-quick up wg0 2>&1 | tee /tmp/wg.log -wg_status=$? -if [ $wg_status -eq 0 ]; then - echo "║ WireGuard started successfully." - print_result "WireGuard interface activated successfully." +# Проверка включения WireGuard +print_stage "Checking WireGuard status" +if [ "$WG_ENABLED" = "true" ]; then + echo "║ WireGuard is enabled. Starting..." + + # Запуск WireGuard + wg-quick up wg0 2>&1 | tee /tmp/wg.log + wg_status=$? + if [ $wg_status -eq 0 ]; then + echo "║ WireGuard started successfully." + print_result "WireGuard interface activated successfully." + else + echo "║ WireGuard failed to start. Logs:" + cat /tmp/wg.log | sed 's/^/║ /' + print_result "Failed to start WireGuard interface!" + exit 1 + fi + + # Проверка маршрутизации после запуска WireGuard + print_stage "Routing table AFTER WireGuard" + ip route | sed 's/^/║ /' + print_separator + + # Проверка сети ПОСЛЕ включения WireGuard + print_stage "Testing connectivity AFTER WireGuard" + echo "║ Pinging 1.1.1.1..." + ping -c 4 1.1.1.1 > /tmp/ping.log 2>&1 + if [ $? -eq 0 ]; then + echo "║ Ping successful." + cat /tmp/ping.log | sed 's/^/║ /' + else + echo "║ Ping failed." + fi + print_separator else - echo "║ WireGuard failed to start. Logs:" - cat /tmp/wg.log | sed 's/^/║ /' - print_result "Failed to start WireGuard interface!" - exit 1 + echo "║ WireGuard is disabled. Skipping..." + print_result "WireGuard is disabled in configuration." fi -# Проверка маршрутизации после запуска WireGuard -print_stage "Routing table AFTER WireGuard" -ip route | sed 's/^/║ /' -print_separator - -# Проверка сети ПОСЛЕ включения WireGuard -print_stage "Testing connectivity AFTER WireGuard" -echo "║ Pinging 1.1.1.1..." -ping -c 4 1.1.1.1 > /tmp/ping.log 2>&1 -if [ $? -eq 0 ]; then - echo "║ Ping successful." - cat /tmp/ping.log | sed 's/^/║ /' -else - echo "║ Ping failed." -fi -print_separator # Проверка DNS print_stage "Testing DNS"