aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2016-03-24 00:07:31 +0100
committerDimitri Sokolyuk <demon@dim13.org>2016-03-24 00:07:31 +0100
commitb38e33d6b1c3973b40c306b754f8e29c27d010e0 (patch)
tree1d341791647ad87d8a1e713b6ed0153a4bea8803
parent04dc81bed2efa2a3c8a580d7e58b3c5be3775764 (diff)
Make lint happy
-rw-r--r--data.go2
-rw-r--r--route.go10
-rw-r--r--rpc.go4
3 files changed, 13 insertions, 3 deletions
diff --git a/data.go b/data.go
index 3932a65..474afae 100644
--- a/data.go
+++ b/data.go
@@ -5,6 +5,7 @@ import (
"os"
)
+// Save routes to persistent file
func (r Route) Save(fname string) error {
fd, err := os.Create(fname)
if err != nil {
@@ -14,6 +15,7 @@ func (r Route) Save(fname string) error {
return gob.NewEncoder(fd).Encode(r)
}
+// Load routes from persistent file
func (r *Route) Load(fname string) error {
fd, err := os.Open(fname)
if err != nil {
diff --git a/route.go b/route.go
index c9d05e0..f66d076 100644
--- a/route.go
+++ b/route.go
@@ -8,8 +8,10 @@ import (
"net/url"
)
+// Route defines a set of routes including correspondent TLS certificates
type Route map[string]Entry
+// Entry holds routing settings
type Entry struct {
ServerName string
Upstream string
@@ -18,6 +20,7 @@ type Entry struct {
cert *tls.Certificate
}
+// GetCertificate returns certificate for SNI negotiation
func (r Route) GetCertificate(h *tls.ClientHelloInfo) (*tls.Certificate, error) {
if e, ok := r[h.ServerName]; ok && e.cert != nil {
return e.cert, nil
@@ -25,6 +28,7 @@ func (r Route) GetCertificate(h *tls.ClientHelloInfo) (*tls.Certificate, error)
return nil, errors.New("no cert for " + h.ServerName)
}
+// Restore and update routes from in-memory state
func (r Route) Restore() error {
mux := http.NewServeMux()
for k, v := range route {
@@ -47,9 +51,9 @@ func (r Route) Restore() error {
}
func (e Entry) String() string {
+ ret := e.ServerName + " -> " + e.Upstream
if e.cert != nil {
- return e.ServerName + " -> " + e.Upstream + " with TLS"
- } else {
- return e.ServerName + " -> " + e.Upstream
+ ret += " with TLS"
}
+ return ret
}
diff --git a/rpc.go b/rpc.go
index 5fe434a..62a6a3f 100644
--- a/rpc.go
+++ b/rpc.go
@@ -5,6 +5,7 @@ import (
"net/rpc"
)
+// GoXY defines RPC interface
type GoXY struct{}
func init() {
@@ -12,6 +13,7 @@ func init() {
rpc.HandleHTTP()
}
+// Add adds a new route
func (GoXY) Add(e Entry, _ *struct{}) error {
log.Println("Add route", e)
defer route.Save(*data)
@@ -19,6 +21,7 @@ func (GoXY) Add(e Entry, _ *struct{}) error {
return route.Restore()
}
+// Del removes a route
func (GoXY) Del(e Entry, _ *struct{}) error {
log.Println("Del route", e)
defer route.Save(*data)
@@ -26,6 +29,7 @@ func (GoXY) Del(e Entry, _ *struct{}) error {
return route.Restore()
}
+// List routes
func (GoXY) List(_ struct{}, r *[]Entry) error {
for _, v := range route {
*r = append(*r, v)