aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2016-03-23 20:46:32 +0100
committerDimitri Sokolyuk <demon@dim13.org>2016-03-23 20:46:32 +0100
commit8094a1d9a9e6279dbd59ce3492f01acff1b3d8b6 (patch)
tree0e7d287e18f3b76da34db8dfc1b9c0589f6e0264
parent37c0e16ad1b90b16a78405f8a0a7125e24bc888e (diff)
Fix empty cert
-rw-r--r--goxyctl/main.go6
-rw-r--r--main.go12
2 files changed, 10 insertions, 8 deletions
diff --git a/goxyctl/main.go b/goxyctl/main.go
index 64af637..f360f41 100644
--- a/goxyctl/main.go
+++ b/goxyctl/main.go
@@ -16,7 +16,7 @@ var (
remove = flag.Bool("remove", false, "remove entry")
)
-type RPCEntry struct {
+type Entry struct {
ServerName string
Upstream string
Cert []byte
@@ -26,7 +26,7 @@ type RPCEntry struct {
func main() {
flag.Parse()
- e := RPCEntry{
+ e := Entry{
ServerName: *servername,
Upstream: *upstream,
}
@@ -53,7 +53,7 @@ func main() {
case e.ServerName != "" && *remove:
err = client.Call("GoXY.Del", e, nil)
default:
- var r []RPCEntry
+ var r []Entry
err = client.Call("GoXY.List", struct{}{}, &r)
for _, v := range r {
log.Println(v.ServerName, "->", v.Upstream)
diff --git a/main.go b/main.go
index de273cc..784d1d7 100644
--- a/main.go
+++ b/main.go
@@ -41,12 +41,14 @@ func (r Route) SNI(h *tls.ClientHelloInfo) (*tls.Certificate, error) {
func (r Route) Restore() error {
server.Handler = http.NewServeMux()
for k, v := range route {
- cert, err := tls.X509KeyPair(v.Cert, v.Key)
- if err != nil {
- return err
+ if v.Cert != nil && v.Key != nil {
+ cert, err := tls.X509KeyPair(v.Cert, v.Key)
+ if err != nil {
+ return err
+ }
+ v.cert = &cert
+ r[k] = v
}
- v.cert = &cert
- r[k] = v
v.NewHandle()
}
return nil