aboutsummaryrefslogtreecommitdiff
path: root/rpc.go
diff options
context:
space:
mode:
Diffstat (limited to 'rpc.go')
-rw-r--r--rpc.go29
1 files changed, 2 insertions, 27 deletions
diff --git a/rpc.go b/rpc.go
index a96bb61..29a5a93 100644
--- a/rpc.go
+++ b/rpc.go
@@ -1,7 +1,6 @@
package goxy
import (
- "crypto/tls"
"encoding/json"
"errors"
"fmt"
@@ -46,36 +45,12 @@ func DialRPC(server string) (*rpc.Client, error) {
// Add adds a new route
func (s *GoXY) Add(e Entry, _ *struct{}) error {
- host, err := url.Parse(e.Host)
+ r, err := NewRoute(e)
if err != nil {
return err
}
- up, err := url.Parse(e.Upstream)
- if err != nil {
- return err
- }
- if host.Host == "" || up.Host == "" {
- return ErrNoHost
- }
- if host.Path == "" {
- host.Path = "/"
- }
- r := Route{
- ServerName: host,
- Upstream: up,
- }
- if host.Scheme == "https" {
- if e.Cert == nil || e.Key == nil {
- return ErrNoCert
- }
- crt, err := tls.X509KeyPair(e.Cert, e.Key)
- if err != nil {
- return err
- }
- r.Certificate = &crt
- }
defer s.server.Save(s.server.DataFile)
- s.server.Routes[host.Host] = r
+ s.server.Routes[r.ServerName.Host] = r
return s.server.Update()
}