From 62fa5c31ba39ebf968f98a7ee46525f14c0ea97c Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Wed, 23 Mar 2016 16:05:38 +0100 Subject: Rewrite into config-les setup --- goxyctl/main.go | 68 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 goxyctl/main.go (limited to 'goxyctl') diff --git a/goxyctl/main.go b/goxyctl/main.go new file mode 100644 index 0000000..824f892 --- /dev/null +++ b/goxyctl/main.go @@ -0,0 +1,68 @@ +package main + +import ( + "crypto/rsa" + "crypto/tls" + "encoding/gob" + "flag" + "log" + "net/rpc" +) + +var ( + rpcserver = flag.String("server", ":http-alt", "RPC Server port") + servername = flag.String("servername", "", "from") + upstream = flag.String("upstream", "", "to") + keyfile = flag.String("keyfile", "", "TLS Key file") + crtfile = flag.String("crtfile", "", "TLC Crt file") + remove = flag.Bool("remove", false, "remove entry") +) + +type Entry struct { + ServerName string + Upstream string + Cert *tls.Certificate +} + +func init() { + gob.Register(rsa.PrivateKey{}) +} + +func main() { + flag.Parse() + + e := Entry{ + ServerName: *servername, + Upstream: *upstream, + } + + if *keyfile != "" && *crtfile != "" { + crt, err := tls.LoadX509KeyPair(*crtfile, *keyfile) + if err != nil { + log.Fatal(err) + } + e.Cert = &crt + } + + client, err := rpc.DialHTTP("tcp", *rpcserver) + if err != nil { + log.Fatal(err) + } + defer client.Close() + + switch { + case e.ServerName != "" && e.Upstream != "": + err = client.Call("GoXY.Add", e, nil) + case e.ServerName != "" && *remove: + err = client.Call("GoXY.Del", e, nil) + default: + var r map[string]Entry + err = client.Call("GoXY.List", struct{}{}, &r) + for k, v := range r { + log.Println(k, v) + } + } + if err != nil { + log.Fatal(err) + } +} -- cgit v1.2.3