0
0
Fork 0
mirror of https://github.com/schollz/croc.git synced 2025-10-11 13:21:00 +02:00

reduce complexity

This commit is contained in:
Zack Scholl 2019-09-20 09:54:10 -07:00
parent cfbd65be31
commit 7ac7e5d56d

View file

@ -228,44 +228,24 @@ func (c *Client) sendCollectFiles(options TransferOptions) (err error) {
return return
} }
// Send will send the specified file func (c *Client) setupLocalRelay() {
func (c *Client) Send(options TransferOptions) (err error) {
err = c.sendCollectFiles(options)
if err != nil {
return
}
otherRelay := ""
if c.Options.RelayAddress != models.DEFAULT_RELAY {
otherRelay = "--relay " + c.Options.RelayAddress + " "
}
fmt.Fprintf(os.Stderr, "Code is: %s\nOn the other computer run\n\ncroc %s%s\n", c.Options.SharedSecret, otherRelay, c.Options.SharedSecret)
// // c.spinner.Suffix = " waiting for recipient..."
// c.spinner.Start()
// create channel for quitting
// connect to the relay for messaging
errchan := make(chan error, 1)
if !c.Options.DisableLocal {
// add two things to the error channel
errchan = make(chan error, 2)
// setup the relay locally // setup the relay locally
for _, port := range c.Options.RelayPorts { for _, port := range c.Options.RelayPorts {
go func(portStr string) { go func(portStr string) {
debugString := "warn" debugString := "warn"
if c.Options.Debug { if c.Options.Debug {
debugString = "debug" debugString = "debug"
} }
err = tcp.Run(debugString, portStr, strings.Join(c.Options.RelayPorts[1:], ",")) err := tcp.Run(debugString, portStr, strings.Join(c.Options.RelayPorts[1:], ","))
if err != nil { if err != nil {
panic(err) panic(err)
} }
}(port) }(port)
} }
}
func (c *Client) broadcastOnLocalNetwork() {
// look for peers first // look for peers first
go func() {
discoveries, err := peerdiscovery.Discover(peerdiscovery.Settings{ discoveries, err := peerdiscovery.Discover(peerdiscovery.Settings{
Limit: -1, Limit: -1,
Payload: []byte(c.Options.RelayPorts[0]), Payload: []byte(c.Options.RelayPorts[0]),
@ -277,9 +257,9 @@ func (c *Client) Send(options TransferOptions) (err error) {
if err == nil && len(discoveries) > 0 { if err == nil && len(discoveries) > 0 {
log.Debug("using local server") log.Debug("using local server")
} }
}() }
go func() { func (c *Client) transferOverLocalRelay(options TransferOptions, errchan chan<- error) {
time.Sleep(500 * time.Millisecond) time.Sleep(500 * time.Millisecond)
log.Debug("establishing connection") log.Debug("establishing connection")
var banner string var banner string
@ -302,7 +282,32 @@ func (c *Client) Send(options TransferOptions) (err error) {
c.Options.RelayPorts = strings.Split(banner, ",") c.Options.RelayPorts = strings.Split(banner, ",")
c.ExternalIP = ipaddr c.ExternalIP = ipaddr
errchan <- c.transfer(options) errchan <- c.transfer(options)
}() }
// Send will send the specified file
func (c *Client) Send(options TransferOptions) (err error) {
err = c.sendCollectFiles(options)
if err != nil {
return
}
otherRelay := ""
if c.Options.RelayAddress != models.DEFAULT_RELAY {
otherRelay = "--relay " + c.Options.RelayAddress + " "
}
fmt.Fprintf(os.Stderr, "Code is: %s\nOn the other computer run\n\ncroc %s%s\n", c.Options.SharedSecret, otherRelay, c.Options.SharedSecret)
// // c.spinner.Suffix = " waiting for recipient..."
// c.spinner.Start()
// create channel for quitting
// connect to the relay for messaging
errchan := make(chan error, 1)
if !c.Options.DisableLocal {
// add two things to the error channel
errchan = make(chan error, 2)
c.setupLocalRelay()
go c.broadcastOnLocalNetwork()
go c.transferOverLocalRelay(options, errchan)
} }
go func() { go func() {