diff --git a/apps/wechatpadpro/18.6/data.yml b/apps/wechatpadpro/18.6/data.yml new file mode 100644 index 000000000..1e39d08c2 --- /dev/null +++ b/apps/wechatpadpro/18.6/data.yml @@ -0,0 +1,144 @@ +additionalProperties: + formFields: + - child: + default: "" + envKey: PANEL_DB_HOST + required: true + type: service + default: mysql + edit: true + envKey: PANEL_DB_TYPE + labelZh: MySQL 服务 (前置检查) + labelEn: Database Service (Pre-check) + required: true + type: apps + values: + - label: MySQL + value: mysql + - label: MariaDB + value: mariadb + - label: Percona + value: percona + - child: + default: "" + envKey: PANEL_REDIS_SERVICE + required: true + type: service + default: redis + envKey: PANEL_REDIS_TYPE + labelZh: Redis 服务 (前置检查) + labelEn: Redis Service (Pre-check) + required: true + type: apps + values: + - label: Redis + value: redis + - default: "/home/wechatpadpro" + edit: true + envKey: WECHATPADPRO_ROOT_PATH + labelZh: 数据持久化路径 + labelEn: Data persistence path + required: true + type: text + - default: 1238 + edit: true + envKey: PANEL_APP_PORT_HTTP + labelZh: WebUI 端口 + labelEn: WebUI port + required: true + rule: paramPort + type: number + - default: 8080 + edit: true + envKey: PANEL_APP_PORT_WECHAT + labelZh: 微信 API 端口 + labelEn: WeChat API port + required: true + rule: paramPort + type: number + - default: "127.0.0.1" + edit: true + envKey: DB_HOST + labelZh: 数据库 主机 + labelEn: Database Host + required: true + type: text + - default: 3306 + edit: true + envKey: DB_PORT + labelZh: 数据库 端口 + labelEn: Database Port + required: true + rule: paramPort + type: number + - default: "wechatpadpro" + edit: true + envKey: DB_DATABASE + labelZh: 数据库 名称 + labelEn: Database Name + required: true + type: text + - default: "wechatpadpro" + edit: true + envKey: DB_USERNAME + labelZh: 数据库 用户名 + labelEn: Database Username + required: true + type: text + - default: "" + edit: true + envKey: DB_PASSWORD + labelZh: 数据库 密码 + labelEn: Database Password + required: true + type: password + - default: "127.0.0.1" + edit: true + envKey: REDIS_HOST + labelZh: Redis 主机 + labelEn: Redis Host + required: true + type: text + - default: 6379 + edit: true + envKey: REDIS_PORT + labelZh: Redis 端口 + labelEn: Redis Port + required: true + rule: paramPort + type: number + - default: 0 + edit: true + envKey: REDIS_DB + labelZh: Redis 索引 (0-20) + labelEn: Redis Index (0-20) + required: true + type: number + - default: "" + edit: true + envKey: REDIS_PASSWORD + labelZh: Redis 密码 + labelEn: Redis Password + required: false + type: password + - default: "" + edit: true + envKey: ADMIN_KEY + labelZh: 管理员密钥 + labelEn: Admin Key + required: true + type: text + - default: "" + edit: true + envKey: GH_WXID + labelZh: 推广公众号微信ID + labelEn: Promotion WeChat ID + required: false + type: text + - default: "" + edit: true + envKey: API_VERSION + labelZh: API 版本前缀 + labelEn: API Version Prefix + required: false + type: text diff --git a/apps/wechatpadpro/18.6/docker-compose.yml b/apps/wechatpadpro/18.6/docker-compose.yml new file mode 100644 index 000000000..dc8421e3b --- /dev/null +++ b/apps/wechatpadpro/18.6/docker-compose.yml @@ -0,0 +1,43 @@ +networks: + 1panel-network: + external: true + +services: + wechatpadpro: + image: wechatpadpro/wechatpadpro:v18.6 + container_name: ${CONTAINER_NAME} + labels: + createdBy: "Apps" + restart: always + networks: + - 1panel-network + ports: + - ${PANEL_APP_PORT_HTTP}:${PANEL_APP_PORT_HTTP} + - ${PANEL_APP_PORT_WECHAT}:${PANEL_APP_PORT_WECHAT} + env_file: + - ${GLOBAL_ENV_FILE:-/etc/1panel/envs/global.env} + - ${ENV_FILE:-/etc/1panel/envs/default.env} + volumes: + - ${WECHATPADPRO_ROOT_PATH}/.env:/app/.env + - ${WECHATPADPRO_ROOT_PATH}/config:/app/config + environment: + - TZ=Asia/Shanghai + - WECHAT_PORT=${PANEL_APP_PORT_WECHAT} + - PORT=${PANEL_APP_PORT_HTTP} + - DEBUG=false + - HOST=0.0.0.0 + - MCP_PORT=8099 + - REDIS_MAX_IDLE=30 + - REDIS_MAX_ACTIVE=100 + - REDIS_IDLE_TIMEOUT=5000 + - REDIS_MAX_CONN_LIFETIME=3600 + - REDIS_CONNECT_TIMEOUT=5000 + - REDIS_READ_TIMEOUT=10000 + - REDIS_WRITE_TIMEOUT=10000 + - WORKER_POOL_SIZE=500 + - MAX_WORKER_TASK_LEN=1000 + - WEB_DOMAIN=localhost:1238 + - WEB_TASK_NAME= + - WEB_TASK_APP_NUMBER= + - NEWS_SYN_WXID=true + - DT=true diff --git a/apps/wechatpadpro/18.6/envs/default.env b/apps/wechatpadpro/18.6/envs/default.env new file mode 100644 index 000000000..cd05f46e6 --- /dev/null +++ b/apps/wechatpadpro/18.6/envs/default.env @@ -0,0 +1,2 @@ +# copyright© 2024 XinJiang Ms Studio +ENV_FILE=.env diff --git a/apps/wechatpadpro/18.6/envs/global.env b/apps/wechatpadpro/18.6/envs/global.env new file mode 100644 index 000000000..e10989fe4 --- /dev/null +++ b/apps/wechatpadpro/18.6/envs/global.env @@ -0,0 +1,2 @@ +# copyright© 2024 XinJiang Ms Studio +TZ=Asia/Shanghai diff --git a/apps/wechatpadpro/18.6/scripts/init.sh b/apps/wechatpadpro/18.6/scripts/init.sh new file mode 100644 index 000000000..a1a79637f --- /dev/null +++ b/apps/wechatpadpro/18.6/scripts/init.sh @@ -0,0 +1,23 @@ +#!/bin/bash + +if [ -f .env ]; then + source .env + + # setup-1 add default values + CURRENT_DIR=$(pwd) + sed -i '/^ENV_FILE=/d' .env + sed -i '/^GLOBAL_ENV_FILE=/d' .env + echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env + echo "GLOBAL_ENV_FILE=${CURRENT_DIR}/envs/global.env" >> .env + + mkdir -p "$WECHATPADPRO_ROOT_PATH" + + # WECHATPADPRO_ROOT_PATH/.env 创建空文件 + touch "$WECHATPADPRO_ROOT_PATH/.env" + + + echo "Check Finish." + +else + echo "Error: .env file not found." +fi diff --git a/apps/wechatpadpro/18.6/scripts/uninstall.sh b/apps/wechatpadpro/18.6/scripts/uninstall.sh new file mode 100644 index 000000000..c86c4fbca --- /dev/null +++ b/apps/wechatpadpro/18.6/scripts/uninstall.sh @@ -0,0 +1,10 @@ +#!/bin/bash + +if [ -f .env ]; then + source .env + + echo "Check Finish." + +else + echo "Error: .env file not found." +fi diff --git a/apps/wechatpadpro/18.6/scripts/upgrade.sh b/apps/wechatpadpro/18.6/scripts/upgrade.sh new file mode 100644 index 000000000..07fb8c3fe --- /dev/null +++ b/apps/wechatpadpro/18.6/scripts/upgrade.sh @@ -0,0 +1,17 @@ +#!/bin/bash + +if [ -f .env ]; then + source .env + + # setup-1 add default values + CURRENT_DIR=$(pwd) + sed -i '/^ENV_FILE=/d' .env + sed -i '/^GLOBAL_ENV_FILE=/d' .env + echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env + echo "GLOBAL_ENV_FILE=${CURRENT_DIR}/envs/global.env" >> .env + + echo "Check Finish." + +else + echo "Error: .env file not found." +fi diff --git a/apps/wechatpadpro/README.md b/apps/wechatpadpro/README.md new file mode 100644 index 000000000..b73b4c0a3 --- /dev/null +++ b/apps/wechatpadpro/README.md @@ -0,0 +1,147 @@ +# WeChatPadPro + +基於 WeChat Pad 協議的高級管理工具v861 + +![WeChatPadPro](https://file.lifebus.top/imgs/wechatpadpro_cover.png) + +![](https://img.shields.io/badge/%E6%96%B0%E7%96%86%E8%90%8C%E6%A3%AE%E8%BD%AF%E4%BB%B6%E5%BC%80%E5%8F%91%E5%B7%A5%E4%BD%9C%E5%AE%A4-%E6%8F%90%E4%BE%9B%E6%8A%80%E6%9C%AF%E6%94%AF%E6%8C%81-blue) + +## 简介 + +### 🌟 主要特點 + +#### 🛡️ 安全可靠 + +採用最新的 WeChat Pad 協議,確保帳號安全 + +#### 🔄 自動化處理 + +支援訊息自動回覆、群管理等自動化操作 + +#### 🎯 精準控制 + +提供細粒度的功能控制和配置選項 + +#### 🔌 擴展性強 + +支援外掛系統,可自定義擴展功能 + +#### 📊 資料同步 + +支援多裝置資料同步,確保資訊統一 + +### 🎯 適用場景 + +#### 👥 個人用戶 + +訊息管理、自動回覆、防撤回等 + +#### 🏢 企業用戶 + +客戶管理、批量操作、資料分析等 + +#### 🤖 開發者 + +二次開發、功能擴展、自動化整合等 + +## 功能特性 + +WeChatPadPro 是基於 WeChat Pad 協議的高級 WeChat 管理工具,支援以下功能: + +> 🔐 微信登录验证码API功能 ⭐ 重点功能 + +### 多种登录方式支持 + +✅ 二维码登录 - 支持获取登录二维码,绕过验证码流程 +✅ 验证码登录 - 自动处理验证码提交,无需手动获取ticket +✅ 短信登录 - 支持短信验证码登录方式 +✅ 设备登录 - 支持A16数据登录和设备ID登录 + +### 自动验证码处理 + +✅ 自动获取ticket - 系统自动从Redis或状态缓存中获取ticket +✅ 自动生成data62 - 如果data62为空,系统会自动根据设备信息生成 +✅ 多重数据源 - 从Redis、状态缓存、用户信息、连接管理器等多个来源获取ticket +✅ 智能参数验证 - 自动检查必要参数,提供友好错误提示 + +### 实时状态检测 + +✅ 登录状态监控 - 实时检测扫码状态和登录进度 +✅ 验证码状态跟踪 - 自动识别是否需要验证码 +✅ 连接健康检查 - 实时监控连接状态,自动检测连接健康度 +✅ 心跳监控 - 增加心跳时间记录,超过10秒无心跳认为连接不健康 + +### RabbitMQ消息队列支持 + +✅ 智能重连机制 - 只在连接确实断开时才重连,避免频繁重连 +✅ 连接健康检查 - 实时监控连接状态,自动检测连接健康度 +✅ 并发安全 - 使用互斥锁确保重连过程的线程安全 +✅ 消息持久化 - 确保消息在服务器重启后不丢失 + +### 多账号管理 + +✅ 多账号并行 - 支持同时管理多个微信账号 +✅ 账号隔离 - 每个账号独立运行,互不影响 +✅ 统一管理 - 通过统一接口管理所有账号状态 + +### 自动Token刷新 + +✅ 自动刷新 - 系统自动检测并刷新过期的Token +✅ 无缝切换 - Token刷新过程中不影响正常使用 +✅ 状态同步 - 刷新后自动同步所有相关状态 + +### 🔄 API接口列表 + +#### 登录相关接口 + +> 获取微信登录二维码(绕过验证码) +> +> POST `/api/login/qr/newx` + +> 自动处理验证码提交 +> +> POST `/api/login/AutoVerificationcode` + +> 检测扫码登录状态 +> +> GET `/api/login/CheckLoginStatus` + +> 自动处理验证码(推荐) +> +> POST `/api/login/verify/auto` + +> 手动处理验证码 +> +> POST `/api/login/verify/manual` + +#### 状态检测接口 + +> 获取在线状态 +> +> GET `/api/login/GetLoginStatus` + +> 初始化状态 +> +> GET `/api/login/GetInItStatus` + +> 检测微信登录环境 +> +> GET `/api/login/CheckCanSetAlias` + +#### 设备管理接口 + +> 设备登录 +> +> POST `/api/login/DeviceLogin` + +> A16数据登录 +> +> POST `/api/login/A16Login` + +> 短信登录 +> +> POST `/api/login/SmsLogin` + +--- + +![Ms Studio](https://file.lifebus.top/imgs/ms_blank_001.png) diff --git a/apps/wechatpadpro/data.yml b/apps/wechatpadpro/data.yml new file mode 100644 index 000000000..c9fac6c92 --- /dev/null +++ b/apps/wechatpadpro/data.yml @@ -0,0 +1,14 @@ +additionalProperties: + key: wechatpadpro + name: WeChatPadPro + tags: + - WebSite + - Local + shortDescZh: 基于 WeChat Pad 的高级微信管理工具 + shortDescEn: A high-level WeChat management tool based on WeChat Pad + type: website + crossVersionUpdate: true + limit: 0 + website: https://github.com/WeChatPadPro/WeChatPadPro/ + github: https://github.com/WeChatPadPro/WeChatPadPro/ + document: https://github.com/WeChatPadPro/WeChatPadPro/ diff --git a/apps/wechatpadpro/logo.png b/apps/wechatpadpro/logo.png new file mode 100644 index 000000000..f70d4a7c7 Binary files /dev/null and b/apps/wechatpadpro/logo.png differ