From 48d63e48546aeaeae0ecb05ff8a8ccd498e29b85 Mon Sep 17 00:00:00 2001 From: Zack Scholl Date: Wed, 2 Sep 2020 17:24:32 -0700 Subject: [PATCH 1/3] text works --- src/cli/cli.go | 34 ++++++++++++++++++++++++++++++++++ src/croc/croc.go | 10 ++++++++++ 2 files changed, 44 insertions(+) diff --git a/src/cli/cli.go b/src/cli/cli.go index f378ec7c..e5989cc4 100644 --- a/src/cli/cli.go +++ b/src/cli/cli.go @@ -50,6 +50,7 @@ func Run() (err error) { ArgsUsage: "[filename]", Flags: []cli.Flag{ cli.StringFlag{Name: "code, c", Usage: "codephrase used to connect to relay"}, + cli.StringFlag{Name: "text, t", Usage: "send some text"}, cli.BoolFlag{Name: "no-local", Usage: "disable local relay when sending"}, cli.BoolFlag{Name: "no-multi", Usage: "disable multiplexing"}, cli.StringFlag{Name: "ports", Value: "9009,9010,9011,9012,9013", Usage: "ports of the local relay (optional)"}, @@ -151,6 +152,7 @@ func send(c *cli.Context) (err error) { Ask: c.GlobalBool("ask"), NoMultiplexing: c.Bool("no-multi"), RelayPassword: c.GlobalString("pass"), + SendingText: c.String("text") != "", } if crocOptions.RelayAddress != models.DEFAULT_RELAY { crocOptions.RelayAddress6 = "" @@ -196,6 +198,18 @@ func send(c *cli.Context) (err error) { log.Error(err) } }() + } else if c.String("text") != "" { + fnames, err = makeTempFileWithString(c.String("text")) + if err != nil { + return + } + defer func() { + err = os.Remove(fnames[0]) + if err != nil { + log.Error(err) + } + }() + } else { fnames = append([]string{c.Args().First()}, c.Args().Tail()...) } @@ -246,6 +260,26 @@ func getStdin() (fnames []string, err error) { return } +func makeTempFileWithString(s string) (fnames []string, err error) { + f, err := ioutil.TempFile(".", "croc-stdin-") + if err != nil { + return + } + + _, err = f.WriteString(s) + if err != nil { + return + } + + err = f.Close() + if err != nil { + return + } + fnames = []string{f.Name()} + return + +} + func getPaths(fnames []string) (paths []string, haveFolder bool, err error) { haveFolder = false paths = []string{} diff --git a/src/croc/croc.go b/src/croc/croc.go index 51979a0a..10e5f111 100644 --- a/src/croc/croc.go +++ b/src/croc/croc.go @@ -61,6 +61,7 @@ type Options struct { NoMultiplexing bool DisableLocal bool Ask bool + SendingText bool } // Client holds the state of the croc transfer @@ -137,6 +138,7 @@ type SenderInfo struct { FilesToTransfer []FileInfo MachineID string Ask bool + SendingText bool } // New establishes a new connection for transferring files between two instances. @@ -667,6 +669,9 @@ func (c *Client) transfer(options TransferOptions) (err error) { c.FilesToTransfer[c.FilesToTransferCurrentNum].FolderRemote, c.FilesToTransfer[c.FilesToTransferCurrentNum].Name, ) + log.Debugf("pathToFile: %s", pathToFile) + // close if not closed already + c.CurrentFile.Close() if err := os.Remove(pathToFile); err != nil { log.Warnf("error removing %s: %v", pathToFile, err) } @@ -681,6 +686,10 @@ func (c *Client) processMessageFileInfo(m message.Message) (done bool, err error log.Error(err) return } + c.Options.SendingText = senderInfo.SendingText + if c.Options.SendingText { + c.Options.Stdout = true + } c.FilesToTransfer = senderInfo.FilesToTransfer fname := fmt.Sprintf("%d files", len(c.FilesToTransfer)) if len(c.FilesToTransfer) == 1 { @@ -937,6 +946,7 @@ func (c *Client) updateIfSenderChannelSecured() (err error) { FilesToTransfer: c.FilesToTransfer, MachineID: machID, Ask: c.Options.Ask, + SendingText: c.Options.SendingText, }) if err != nil { log.Error(err) From 8fbb7e5019eab355098f004cf7872dc6f965e260 Mon Sep 17 00:00:00 2001 From: Zack Scholl Date: Wed, 2 Sep 2020 17:33:53 -0700 Subject: [PATCH 2/3] send and receive text --- go.mod | 2 +- go.sum | 4 ++-- src/croc/croc.go | 3 +++ 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index e7cb7fee..bb4fd81b 100644 --- a/go.mod +++ b/go.mod @@ -15,7 +15,7 @@ require ( github.com/schollz/mnemonicode v1.0.1 github.com/schollz/pake/v2 v2.0.4 github.com/schollz/peerdiscovery v1.5.2 - github.com/schollz/progressbar/v3 v3.4.0 + github.com/schollz/progressbar/v3 v3.5.0 github.com/schollz/spinner v0.0.0-20180925172146-6bbc5f7804f9 github.com/spaolacci/murmur3 v1.1.0 // indirect github.com/stretchr/testify v1.4.0 diff --git a/go.sum b/go.sum index a44aeef1..ce24e6b9 100644 --- a/go.sum +++ b/go.sum @@ -47,8 +47,8 @@ github.com/schollz/peerdiscovery v1.5.2 h1:gc1iXQ0A9xj58nm7QHs5a1tCoYv7QDIrZbQfZ github.com/schollz/peerdiscovery v1.5.2/go.mod h1:hSU7N/NkfNH6AZwU/WBcDZtMABVbTfAWk/XD3XKxN+s= github.com/schollz/progressbar/v2 v2.15.0 h1:dVzHQ8fHRmtPjD3K10jT3Qgn/+H+92jhPrhmxIJfDz8= github.com/schollz/progressbar/v2 v2.15.0/go.mod h1:UdPq3prGkfQ7MOzZKlDRpYKcFqEMczbD7YmbPgpzKMI= -github.com/schollz/progressbar/v3 v3.4.0 h1:jHd2FiF+zpPc7di1m9cHRgt8AaUvId3L5p4bF9Nux9g= -github.com/schollz/progressbar/v3 v3.4.0/go.mod h1:Rp5lZwpgtYmlvmGo1FyDwXMqagyRBQYSDwzlP9QDu84= +github.com/schollz/progressbar/v3 v3.5.0 h1:rVya3NTks1kFmuFKaLYWt/3TYDiE+Cxb1iXuxeEjf5c= +github.com/schollz/progressbar/v3 v3.5.0/go.mod h1:Rp5lZwpgtYmlvmGo1FyDwXMqagyRBQYSDwzlP9QDu84= github.com/schollz/spinner v0.0.0-20180925172146-6bbc5f7804f9 h1:y08o5oQ/slxXE/F0uh5dd8mdVvb+w4NLcNSDSq4c2F0= github.com/schollz/spinner v0.0.0-20180925172146-6bbc5f7804f9/go.mod h1:kCMoQsqzx4MzGJWaALr6tKyCnlrY0kILGLkA1FOiLF4= github.com/shurcooL/sanitized_anchor_name v1.0.0 h1:PdmoCO6wvbs+7yrJyMORt4/BmY5IYyJwS/kOiWx8mHo= diff --git a/src/croc/croc.go b/src/croc/croc.go index 10e5f111..814edc0a 100644 --- a/src/croc/croc.go +++ b/src/croc/croc.go @@ -1097,6 +1097,7 @@ func (c *Client) createEmptyFileAndFinish(fileInfo FileInfo, i int) (err error) progressbar.OptionShowBytes(true), progressbar.OptionShowCount(), progressbar.OptionSetWriter(os.Stderr), + progressbar.OptionSetVisibility(!c.Options.SendingText), ) c.bar.Finish() return @@ -1182,6 +1183,7 @@ func (c *Client) updateState() (err error) { progressbar.OptionShowBytes(true), progressbar.OptionShowCount(), progressbar.OptionSetWriter(os.Stderr), + progressbar.OptionSetVisibility(!c.Options.SendingText), ) c.bar.Finish() } @@ -1227,6 +1229,7 @@ func (c *Client) setBar() { progressbar.OptionShowCount(), progressbar.OptionSetWriter(os.Stderr), progressbar.OptionThrottle(100*time.Millisecond), + progressbar.OptionSetVisibility(!c.Options.SendingText), ) byteToDo := int64(len(c.CurrentFileChunks) * models.TCP_BUFFER_SIZE / 2) if byteToDo > 0 { From 0eb095bf76e2272afc557eab07e4c433f4e016e8 Mon Sep 17 00:00:00 2001 From: Zack Scholl Date: Wed, 2 Sep 2020 17:35:36 -0700 Subject: [PATCH 3/3] println --- src/croc/croc.go | 1 + 1 file changed, 1 insertion(+) diff --git a/src/croc/croc.go b/src/croc/croc.go index 814edc0a..4c5646ab 100644 --- a/src/croc/croc.go +++ b/src/croc/croc.go @@ -675,6 +675,7 @@ func (c *Client) transfer(options TransferOptions) (err error) { if err := os.Remove(pathToFile); err != nil { log.Warnf("error removing %s: %v", pathToFile, err) } + fmt.Print("\n") } return }