mirror of https://github.com/schollz/croc.git
improve relay
This commit is contained in:
parent
e055918656
commit
dd8d8ee4ce
3
main.go
3
main.go
|
@ -117,6 +117,5 @@ func relay(c *cli.Context) error {
|
|||
cr.TcpPorts = strings.Split(c.GlobalString("tcp"), ",")
|
||||
cr.ServerPort = c.GlobalString("port")
|
||||
cr.CurveType = c.GlobalString("curve")
|
||||
fmt.Println("relay")
|
||||
return nil
|
||||
return cr.Relay()
|
||||
}
|
||||
|
|
|
@ -67,7 +67,7 @@ func (c *Croc) Send(fname string, codePhrase string) (err error) {
|
|||
}
|
||||
|
||||
// start relay for listening
|
||||
runClientError := make(chan error)
|
||||
runClientError := make(chan error, 2)
|
||||
go func() {
|
||||
d := Init()
|
||||
d.ServerPort = "8140"
|
||||
|
@ -94,7 +94,12 @@ func (c *Croc) Send(fname string, codePhrase string) (err error) {
|
|||
go func() {
|
||||
runClientError <- c.client(0, channel)
|
||||
}()
|
||||
return <-runClientError
|
||||
err = <-runClientError
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
err = <-runClientError
|
||||
return
|
||||
}
|
||||
|
||||
// Receive will receive something through the croc relay
|
||||
|
|
|
@ -22,7 +22,7 @@ import (
|
|||
|
||||
var isPrinted bool
|
||||
|
||||
func (c *Croc) client(role int, channel string, address ...string) (err error) {
|
||||
func (c *Croc) client(role int, channel string) (err error) {
|
||||
defer log.Flush()
|
||||
defer c.cleanup()
|
||||
// initialize the channel data for this client
|
||||
|
@ -31,16 +31,19 @@ func (c *Croc) client(role int, channel string, address ...string) (err error) {
|
|||
signal.Notify(interrupt, os.Interrupt)
|
||||
|
||||
// connect to the websocket
|
||||
var u url.URL
|
||||
if len(address) != 0 {
|
||||
u = url.URL{Scheme: strings.Split(address[0], "://")[0], Host: strings.Split(address[0], "://")[1], Path: "/"}
|
||||
} else {
|
||||
u = url.URL{Scheme: strings.Split(c.WebsocketAddress, "://")[0], Host: strings.Split(c.WebsocketAddress, "://")[1], Path: "/"}
|
||||
}
|
||||
u := url.URL{Scheme: strings.Split(c.WebsocketAddress, "://")[0], Host: strings.Split(c.WebsocketAddress, "://")[1], Path: "/"}
|
||||
log.Debugf("connecting to %s", u.String())
|
||||
ws, _, err := websocket.DefaultDialer.Dial(u.String(), nil)
|
||||
if err != nil {
|
||||
log.Error("dial:", err)
|
||||
// don't return error if sender can't connect, so
|
||||
// that croc can be used locally without
|
||||
// an internet connection
|
||||
if role == 0 {
|
||||
log.Debugf("dial %s error: %s", c.WebsocketAddress, err.Error())
|
||||
err = nil
|
||||
} else {
|
||||
log.Error("dial:", err)
|
||||
}
|
||||
return
|
||||
}
|
||||
defer ws.Close()
|
||||
|
|
Loading…
Reference in New Issue