Skip to content

Commit b4408a7

Browse files
committed
fix client url, added more server logs
1 parent 98cb623 commit b4408a7

File tree

3 files changed

+42
-12
lines changed

3 files changed

+42
-12
lines changed

chisel-forward/client/client.go

Lines changed: 32 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,12 @@
11
package client
22

33
import (
4+
"errors"
5+
"fmt"
46
"log"
57
"net"
8+
"net/url"
9+
"regexp"
610
"strings"
711

812
"github.com/hashicorp/yamux"
@@ -15,47 +19,64 @@ type Client struct {
1519
proxies []*Proxy
1620
}
1721

18-
func NewClient(auth, server string, remotes []string) *Client {
22+
func NewClient(auth, server string, remotes []string) (*Client, error) {
23+
24+
u, err := url.Parse(server)
25+
if err != nil {
26+
return nil, err
27+
}
28+
29+
//apply default port
30+
if !regexp.MustCompile(`:\d+$`).MatchString(u.Host) {
31+
if u.Scheme == "https" {
32+
u.Host = u.Host + ":443"
33+
} else {
34+
u.Host = u.Host + ":80"
35+
}
36+
}
37+
38+
//use websockets scheme
39+
u.Scheme = strings.Replace(u.Scheme, "http", "ws", 1)
1940

2041
c := &chisel.Config{
2142
Version: chisel.Version,
2243
Auth: auth,
23-
Server: server,
44+
Server: u.String(),
2445
}
2546

2647
for _, s := range remotes {
2748
r, err := chisel.DecodeRemote(s)
2849
if err != nil {
29-
log.Fatalf("Failed to decode remote '%s': %s", s, err)
50+
return nil, fmt.Errorf("Failed to decode remote '%s': %s", s, err)
3051
}
3152
c.Remotes = append(c.Remotes, r)
3253
}
3354

34-
return &Client{config: c}
55+
return &Client{config: c}, nil
3556
}
3657

37-
func (c *Client) Start() {
58+
func (c *Client) Start() error {
3859
encconfig, err := chisel.EncodeConfig(c.config)
3960
if err != nil {
40-
log.Fatal(err)
61+
return err
4162
}
4263

43-
url := strings.Replace(c.config.Server, "http:", "ws:", 1)
64+
url := strings.Replace(c.config.Server, "http", "ws", 1)
4465
ws, err := websocket.Dial(url, encconfig, "http://localhost/")
4566
if err != nil {
46-
log.Fatal(err)
67+
return err
4768
}
4869

4970
b := make([]byte, 0xff)
5071
n, _ := ws.Read(b)
5172
if msg := string(b[:n]); msg != "handshake-success" {
52-
log.Fatal(msg)
73+
return errors.New(msg)
5374
}
5475

5576
// Setup client side of yamux
5677
session, err := yamux.Client(ws, nil)
5778
if err != nil {
58-
log.Fatal(err)
79+
return err
5980
}
6081

6182
markClosed := make(chan bool)
@@ -84,4 +105,5 @@ func (c *Client) Start() {
84105
<-markClosed
85106
isClosed = true
86107
log.Printf("Disconnected\n")
108+
return nil
87109
}

chisel-forward/main.go

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ const help = `
2727
func main() {
2828
auth := flag.String("auth", "", "Optional authentication")
2929
flag.Usage = func() {
30-
fmt.Fprintf(os.Stderr, help, chisel.Versio)
30+
fmt.Fprintf(os.Stderr, help)
3131
}
3232
flag.Parse()
3333
args := flag.Args()
@@ -38,5 +38,12 @@ func main() {
3838
server := args[0]
3939
remotes := args[1:]
4040

41-
client.NewClient(*auth, server, remotes).Start()
41+
c, err := client.NewClient(*auth, server, remotes)
42+
if err != nil {
43+
log.Fatal(err)
44+
}
45+
err = c.Start()
46+
if err != nil {
47+
log.Fatal(err)
48+
}
4249
}

chiseld/server/server.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,7 @@ func (s *Server) handleWS(ws *websocket.Conn) {
9494
addr := r.RemoteHost + ":" + r.RemotePort
9595
e := NewEndpoint(id, addr)
9696
go e.start()
97+
log.Printf("Activate remote #%d %s", id, r)
9798
s.endpoints = append(s.endpoints, e)
9899
}
99100

0 commit comments

Comments
 (0)