mirror of
https://github.com/yusing/godoxy.git
synced 2026-04-24 09:48:49 +02:00
implement godoxy-agent
This commit is contained in:
46
cmd/new_agent.go
Normal file
46
cmd/new_agent.go
Normal file
@@ -0,0 +1,46 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"encoding/base64"
|
||||
"log"
|
||||
"net"
|
||||
"os"
|
||||
|
||||
"github.com/yusing/go-proxy/agent/pkg/certs"
|
||||
)
|
||||
|
||||
func NewAgent(args []string) {
|
||||
if len(args) != 2 {
|
||||
log.Fatalf("invalid arguments: %v", args)
|
||||
}
|
||||
host := args[0]
|
||||
certDataBase64 := args[1]
|
||||
|
||||
ip, _, err := net.SplitHostPort(host)
|
||||
if err != nil {
|
||||
log.Fatalf("invalid host: %v", err)
|
||||
}
|
||||
|
||||
_, err = net.ResolveIPAddr("ip", ip)
|
||||
if err != nil {
|
||||
log.Fatalf("invalid host: %v", err)
|
||||
}
|
||||
|
||||
certData, err := base64.StdEncoding.DecodeString(certDataBase64)
|
||||
if err != nil {
|
||||
log.Fatalf("invalid cert data: %v", err)
|
||||
}
|
||||
|
||||
f, err := os.OpenFile(certs.AgentCertsFilename(host), os.O_CREATE|os.O_WRONLY|os.O_TRUNC, 0600)
|
||||
if err != nil {
|
||||
log.Fatalf("failed to create file: %v", err)
|
||||
}
|
||||
defer f.Close()
|
||||
|
||||
_, err = f.Write(certData)
|
||||
if err != nil {
|
||||
log.Fatalf("failed to write cert data: %v", err)
|
||||
}
|
||||
|
||||
log.Printf("agent cert created: %s", certs.AgentCertsFilename(host))
|
||||
}
|
||||
Reference in New Issue
Block a user