Files
order_site/apps/dcauth/ui_other.go
T
yml2213 ef36453694 feat(dcauth): 移除机器码,改用纯设备码认证
- DCAuth 协议升级到 v2,签名原文只含设备码;客户端 2.0.0,旧版本返回 426
- 删除客户端机器码采集、后端 machine_code_* 字段与日志、后台机器码展示
- 102 迁移在生产执行前直接改为无机器码结构;SQL 守卫仅放行该文件
- Mock 短信不启用每日限额;修复慢电脑首次启动的协议转发竞态
- 新增 macOS DCAuth.app 打包脚本,注册 dcauth:// 协议,浏览器可直接唤起
2026-10-21 20:46:25 +08:00

65 lines
1.5 KiB
Go

//go:build !windows && !darwin
package main
import (
"fmt"
"os"
)
func runClient(protocolArg string) {
identity, err := loadOrCreateIdentity()
if err != nil {
showError("DCAuth 初始化失败", err.Error())
return
}
if protocolArg == "" {
text := fmt.Sprintf(
"DCAuth v%s\n设备码:%s\n\n设备码用于识别本机设备。\n请从后台登录页点击“验证本机”完成登录。",
clientVersion,
identity.deviceID,
)
copyToClipboard(identity.deviceID)
showInfo("DCAuth v"+clientVersion+" 设备信息", text+"\n\n设备码已复制到剪贴板。")
return
}
target, err := parseAuthorizeURL(protocolArg)
if err != nil {
showError("DCAuth 协议无效", err.Error())
return
}
app := appRegistry[target.App]
if !confirm(
app.DisplayName+" · 本机登录确认",
fmt.Sprintf("是否确认使用本机设备登录「%s」?\n\n设备码:%s", app.DisplayName, identity.deviceID),
) {
return
}
if err := submitAuthorization(identity, target); err != nil {
showError("本机验证失败", err.Error())
return
}
showInfo("本机验证成功", "已确认本机设备,请回到浏览器继续登录。")
}
func showInfo(title, text string) {
fmt.Printf("[%s]\n%s\n", title, text)
}
func showError(title, text string) {
fmt.Fprintf(os.Stderr, "[%s]\n%s\n", title, text)
}
func confirm(title, text string) bool {
fmt.Printf("[%s]\n%s\n[y/N] ", title, text)
var answer string
_, _ = fmt.Scanln(&answer)
return answer == "y" || answer == "Y"
}
func copyToClipboard(text string) {
_ = text
}