123 lines
2.7 KiB
Go
123 lines
2.7 KiB
Go
package main
|
|
|
|
import (
|
|
"acme-client/src"
|
|
"bufio"
|
|
"encoding/json"
|
|
"github.com/go-acme/lego/v4/log"
|
|
"io"
|
|
"net/http"
|
|
"os"
|
|
"strings"
|
|
)
|
|
|
|
func main() {
|
|
// 读取server参数,如果没有提示添加
|
|
config := src.GetClientConfig()
|
|
server := config.Server
|
|
if server == "" {
|
|
log.Println("请输入服务端地址; 如: http://acme.server.com:8080")
|
|
reader := bufio.NewReader(os.Stdin)
|
|
serverAddr, err := reader.ReadString('\n')
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
serverAddr = strings.Trim(serverAddr, "\r\n")
|
|
config.Server = serverAddr
|
|
src.WriteConfig()
|
|
}
|
|
|
|
// 读取服务器RSA公钥, 没有提示添加
|
|
rsaPublicKey := config.RsaPublicKey
|
|
if rsaPublicKey == "" {
|
|
log.Println("请输入服务端下发的RAS公钥;")
|
|
reader := bufio.NewReader(os.Stdin)
|
|
rsaPublicKeyContent, err := reader.ReadString('\n')
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
rsaPublicKeyContent = strings.Trim(rsaPublicKeyContent, "\r\n")
|
|
config.RsaPublicKey = rsaPublicKeyContent
|
|
src.WriteConfig()
|
|
}
|
|
|
|
// 获取指令, 如果没有则提示添加
|
|
args := os.Args
|
|
if len(args) < 2 {
|
|
log.Println("请输入命令; 如: add")
|
|
log.Println("或者输入 help 查看帮助")
|
|
return
|
|
}
|
|
onCommand()
|
|
}
|
|
|
|
func onCommand() {
|
|
command := os.Args[1]
|
|
switch command {
|
|
case "help":
|
|
showHelp()
|
|
case "-s":
|
|
onServerCommand()
|
|
default:
|
|
log.Fatalf("Unknown command: %s", command)
|
|
}
|
|
}
|
|
|
|
func showHelp() {
|
|
log.Printf("help\t查看帮助")
|
|
log.Printf("list\t查看配置列表")
|
|
log.Printf("add\t添加配置")
|
|
log.Printf("del\t删除配置")
|
|
log.Printf("edit\t编辑配置")
|
|
log.Printf("-s list\t查看服务端已配置的Domain名称")
|
|
}
|
|
func showList() {
|
|
for i := range src.GetClientConfig().Domains {
|
|
domain := src.GetClientConfig().Domains[i]
|
|
log.Printf("- %s", domain.Name)
|
|
log.Printf(" - cert: %s", domain.CertFile)
|
|
log.Printf(" - key: %s", domain.KeyFile)
|
|
log.Println()
|
|
}
|
|
}
|
|
|
|
func onServerCommand() {
|
|
args := os.Args
|
|
if len(args) < 3 {
|
|
log.Fatal("参数错误, 请检查")
|
|
}
|
|
command := args[2]
|
|
switch command {
|
|
case "list":
|
|
showServerList()
|
|
default:
|
|
log.Fatal("参数错误, 请检查")
|
|
}
|
|
}
|
|
|
|
func showServerList() {
|
|
server := src.GetClientConfig().Server
|
|
token, encryptToken := src.GenToken()
|
|
url := server + "/api/v1/domain/list?token=" + encryptToken
|
|
resp, err := http.Get(url)
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
defer resp.Body.Close()
|
|
body, err := io.ReadAll(resp.Body)
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
result := src.Result{}
|
|
err = json.Unmarshal(body, &result)
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
if result.Code != 200 {
|
|
log.Fatal("读取数据出错; ", result.Msg)
|
|
}
|
|
data := result.Data
|
|
text := src.DecryptByToken(token, data)
|
|
println(text)
|
|
}
|