This commit is contained in:
dela
2026-01-26 15:04:02 +08:00
commit 4813449f9c
31 changed files with 8439 additions and 0 deletions

159
get_cloudmail_token.py Normal file
View File

@@ -0,0 +1,159 @@
#!/usr/bin/env python3
"""
Cloud Mail Token 生成脚本
使用方法:
python get_cloudmail_token.py
注意:生成新 Token 会使之前的 Token 失效!
"""
import httpx
import json
import getpass
def get_cloudmail_token(api_url: str, admin_email: str, admin_password: str):
"""
调用 Cloud Mail API 生成 Token
参数:
api_url: Cloud Mail API 基础 URL (例如: https://mygoband.com)
admin_email: 管理员邮箱
admin_password: 管理员密码
返回:
生成的 Token 字符串
"""
url = f"{api_url.rstrip('/')}/api/public/genToken"
payload = {
"email": admin_email,
"password": admin_password
}
print(f"\n正在请求: {url}")
print(f"管理员邮箱: {admin_email}")
print("-" * 60)
try:
response = httpx.post(
url,
json=payload,
headers={"Content-Type": "application/json"},
timeout=30.0
)
print(f"HTTP 状态码: {response.status_code}")
print(f"响应内容: {response.text}\n")
if response.status_code != 200:
print(f"❌ 请求失败: HTTP {response.status_code}")
return None
data = response.json()
if data.get("code") != 200:
print(f"❌ API 错误: {data.get('message', 'Unknown error')}")
return None
token = data.get("data", {}).get("token")
if not token:
print("❌ 响应中没有找到 token")
return None
print("✅ Token 生成成功!")
print("=" * 60)
print(f"Token: {token}")
print("=" * 60)
print("\n请将此 Token 复制到 .env 文件中的 MAIL_CLOUDMAIL_TOKEN")
print("\n⚠️ 警告:此 Token 会使之前生成的所有 Token 失效!")
return token
except httpx.TimeoutException:
print("❌ 请求超时,请检查网络连接和 API URL")
return None
except httpx.NetworkError as e:
print(f"❌ 网络错误: {e}")
return None
except Exception as e:
print(f"❌ 发生错误: {e}")
return None
def main():
print("=" * 60)
print("Cloud Mail Token 生成器")
print("=" * 60)
# 获取用户输入
api_url = input("\n请输入 Cloud Mail API URL (例如 https://mygoband.com): ").strip()
if not api_url:
print("❌ API URL 不能为空")
return
admin_email = input("请输入管理员邮箱: ").strip()
if not admin_email:
print("❌ 管理员邮箱不能为空")
return
admin_password = getpass.getpass("请输入管理员密码: ")
if not admin_password:
print("❌ 管理员密码不能为空")
return
# 生成 Token
token = get_cloudmail_token(api_url, admin_email, admin_password)
if token:
# 询问是否自动更新 .env 文件
update_env = input("\n是否自动更新 .env 文件?(y/N): ").lower()
if update_env == 'y':
try:
import os
from pathlib import Path
env_file = Path(".env")
if env_file.exists():
# 读取现有内容
content = env_file.read_text()
# 检查是否已有 MAIL_CLOUDMAIL_TOKEN
if "MAIL_CLOUDMAIL_TOKEN" in content:
# 替换现有值
import re
content = re.sub(
r'MAIL_CLOUDMAIL_TOKEN=.*',
f'MAIL_CLOUDMAIL_TOKEN={token}',
content
)
print("✅ 已更新 .env 文件中的 MAIL_CLOUDMAIL_TOKEN")
else:
# 添加新行
content += f"\nMAIL_CLOUDMAIL_TOKEN={token}\n"
print("✅ 已添加 MAIL_CLOUDMAIL_TOKEN 到 .env 文件")
# 写回文件
env_file.write_text(content)
else:
print("⚠️ .env 文件不存在,请手动创建")
except Exception as e:
print(f"❌ 更新 .env 文件失败: {e}")
print("请手动复制 Token 到 .env 文件")
if __name__ == "__main__":
try:
main()
except KeyboardInterrupt:
print("\n\n⚠️ 操作已取消")
except Exception as e:
print(f"\n❌ 程序错误: {e}")