mirror of
https://github.com/schollz/croc.git
synced 2024-11-30 23:52:07 +03:00
add spinner
This commit is contained in:
parent
3e5aa91f34
commit
6d7911ab24
32
connect.go
32
connect.go
@ -18,6 +18,7 @@ import (
|
|||||||
"syscall"
|
"syscall"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"github.com/briandowns/spinner"
|
||||||
"github.com/dustin/go-humanize"
|
"github.com/dustin/go-humanize"
|
||||||
homedir "github.com/mitchellh/go-homedir"
|
homedir "github.com/mitchellh/go-homedir"
|
||||||
"github.com/schollz/croc/keypair"
|
"github.com/schollz/croc/keypair"
|
||||||
@ -49,6 +50,7 @@ type Connection struct {
|
|||||||
rate int
|
rate int
|
||||||
keypair keypair.KeyPair
|
keypair keypair.KeyPair
|
||||||
encryptedPassword string
|
encryptedPassword string
|
||||||
|
spinner *spinner.Spinner
|
||||||
}
|
}
|
||||||
|
|
||||||
type FileMetaData struct {
|
type FileMetaData struct {
|
||||||
@ -144,7 +146,9 @@ func NewConnection(config *AppConfig) (*Connection, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if info.Mode().IsDir() { // if our file is a dir
|
if info.Mode().IsDir() { // if our file is a dir
|
||||||
fmt.Println("Compressing folder...")
|
c.spinner = spinner.New(spinner.CharSets[24], 100*time.Millisecond) // Build our new spinner
|
||||||
|
c.spinner.Suffix = " Compressing folder.."
|
||||||
|
c.spinner.Start()
|
||||||
|
|
||||||
// we "tarify" the file
|
// we "tarify" the file
|
||||||
log.Debugf("compressing %s to %s", config.File, path.Base(config.File)+".tar")
|
log.Debugf("compressing %s to %s", config.File, path.Base(config.File)+".tar")
|
||||||
@ -157,6 +161,7 @@ func NewConnection(config *AppConfig) (*Connection, error) {
|
|||||||
config.File = path.Base(config.File) + ".tar"
|
config.File = path.Base(config.File) + ".tar"
|
||||||
// we set the value IsDir to true
|
// we set the value IsDir to true
|
||||||
c.File.IsDir = true
|
c.File.IsDir = true
|
||||||
|
c.spinner.Stop()
|
||||||
}
|
}
|
||||||
c.File.Name = path.Base(config.File)
|
c.File.Name = path.Base(config.File)
|
||||||
c.File.Path = path.Dir(config.File)
|
c.File.Path = path.Dir(config.File)
|
||||||
@ -225,7 +230,10 @@ func (c *Connection) Run() error {
|
|||||||
} else {
|
} else {
|
||||||
fmt.Fprintf(os.Stderr, "Sending %s file named '%s'\n", humanize.Bytes(uint64(c.File.Size)), c.File.Name)
|
fmt.Fprintf(os.Stderr, "Sending %s file named '%s'\n", humanize.Bytes(uint64(c.File.Size)), c.File.Name)
|
||||||
}
|
}
|
||||||
fmt.Fprintf(os.Stderr, "Code is: %s\n", c.Code)
|
fmt.Fprintf(os.Stderr, "Code is: %s\n\n", c.Code)
|
||||||
|
c.spinner = spinner.New(spinner.CharSets[24], 100*time.Millisecond) // Build our new spinner
|
||||||
|
c.spinner.Suffix = " Waiting for recipient.."
|
||||||
|
c.spinner.Start()
|
||||||
|
|
||||||
log.Debug("starting relay in case local connections")
|
log.Debug("starting relay in case local connections")
|
||||||
relay := NewRelay(&AppConfig{
|
relay := NewRelay(&AppConfig{
|
||||||
@ -261,7 +269,6 @@ func (c *Connection) Run() error {
|
|||||||
}()
|
}()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
fmt.Fprintf(os.Stderr, "Your public key: %s\n", c.keypair.Public)
|
|
||||||
|
|
||||||
log.Debug("checking code validity")
|
log.Debug("checking code validity")
|
||||||
if len(c.Code) == 0 && !c.IsSender {
|
if len(c.Code) == 0 && !c.IsSender {
|
||||||
@ -399,7 +406,9 @@ func (c *Connection) runClient(serverName string) error {
|
|||||||
publicKeyRecipient := receiveMessage(connection)
|
publicKeyRecipient := receiveMessage(connection)
|
||||||
// check if okay again
|
// check if okay again
|
||||||
if id == 0 {
|
if id == 0 {
|
||||||
fmt.Fprintf(os.Stderr, "Send to public key: %s\n", publicKeyRecipient)
|
c.spinner.Stop()
|
||||||
|
fmt.Fprintf(os.Stderr, "Your public key: %s\n", c.keypair.Public)
|
||||||
|
fmt.Fprintf(os.Stderr, "Recipient public key: %s\n", publicKeyRecipient)
|
||||||
getOK := "y"
|
getOK := "y"
|
||||||
if !c.Yes {
|
if !c.Yes {
|
||||||
getOK = getInput("ok? (y/n): ")
|
getOK = getInput("ok? (y/n): ")
|
||||||
@ -446,11 +455,15 @@ func (c *Connection) runClient(serverName string) error {
|
|||||||
c.File.IsEncrypted = false
|
c.File.IsEncrypted = false
|
||||||
} else {
|
} else {
|
||||||
// encrypt
|
// encrypt
|
||||||
|
c.spinner = spinner.New(spinner.CharSets[24], 100*time.Millisecond) // Build our new spinner
|
||||||
|
c.spinner.Suffix = " Encrypting..."
|
||||||
|
c.spinner.Start()
|
||||||
log.Debugf("encrypting %s with passphrase [%s]", path.Join(c.File.Path, c.File.Name), passphraseString)
|
log.Debugf("encrypting %s with passphrase [%s]", path.Join(c.File.Path, c.File.Name), passphraseString)
|
||||||
if err := EncryptFile(path.Join(c.File.Path, c.File.Name), c.File.Name+".enc", passphraseString); err != nil {
|
if err := EncryptFile(path.Join(c.File.Path, c.File.Name), c.File.Name+".enc", passphraseString); err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
c.File.IsEncrypted = true
|
c.File.IsEncrypted = true
|
||||||
|
c.spinner.Stop()
|
||||||
}
|
}
|
||||||
// split file into pieces to send
|
// split file into pieces to send
|
||||||
if err := SplitFile(c.File.Name+".enc", c.NumberOfConnections); err != nil {
|
if err := SplitFile(c.File.Name+".enc", c.NumberOfConnections); err != nil {
|
||||||
@ -541,6 +554,7 @@ func (c *Connection) runClient(serverName string) error {
|
|||||||
}
|
}
|
||||||
log.Debugf("meta data received: %v", c.File)
|
log.Debugf("meta data received: %v", c.File)
|
||||||
fType := "file"
|
fType := "file"
|
||||||
|
c.Path = "."
|
||||||
fName := path.Join(c.Path, c.File.Name)
|
fName := path.Join(c.Path, c.File.Name)
|
||||||
if c.File.IsDir {
|
if c.File.IsDir {
|
||||||
fType = "folder"
|
fType = "folder"
|
||||||
@ -551,7 +565,6 @@ func (c *Connection) runClient(serverName string) error {
|
|||||||
} else {
|
} else {
|
||||||
fmt.Fprintf(os.Stderr, "Overwriting %s %s (%s)\n", fType, fName, humanize.Bytes(uint64(c.File.Size)))
|
fmt.Fprintf(os.Stderr, "Overwriting %s %s (%s)\n", fType, fName, humanize.Bytes(uint64(c.File.Size)))
|
||||||
}
|
}
|
||||||
fmt.Fprintf(os.Stderr, "from public key: "+publicKeySender+"\n")
|
|
||||||
var sentFileNames []string
|
var sentFileNames []string
|
||||||
|
|
||||||
if c.AskPath {
|
if c.AskPath {
|
||||||
@ -564,6 +577,8 @@ func (c *Connection) runClient(serverName string) error {
|
|||||||
fmt.Fprintf(os.Stderr, "Will not overwrite file!")
|
fmt.Fprintf(os.Stderr, "Will not overwrite file!")
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
|
fmt.Fprintf(os.Stderr, "Your public key: %s\n", c.keypair.Public)
|
||||||
|
fmt.Fprintf(os.Stderr, "Sender public key: %s\n", publicKeySender)
|
||||||
getOK := "y"
|
getOK := "y"
|
||||||
if !c.Yes {
|
if !c.Yes {
|
||||||
getOK = getInput("ok? (y/n): ")
|
getOK = getInput("ok? (y/n): ")
|
||||||
@ -692,8 +707,13 @@ func (c *Connection) runClient(serverName string) error {
|
|||||||
} else {
|
} else {
|
||||||
log.Debugf("is encrypted: %+v", c.File.IsEncrypted)
|
log.Debugf("is encrypted: %+v", c.File.IsEncrypted)
|
||||||
if c.File.IsEncrypted {
|
if c.File.IsEncrypted {
|
||||||
|
c.spinner = spinner.New(spinner.CharSets[24], 100*time.Millisecond) // Build our new spinner
|
||||||
|
c.spinner.Suffix = " Decrypting file.."
|
||||||
|
c.spinner.Start()
|
||||||
log.Debugf("decrypting file with [%s]", c.encryptedPassword)
|
log.Debugf("decrypting file with [%s]", c.encryptedPassword)
|
||||||
if err := DecryptFile(path.Join(c.Path, c.File.Name+".enc"), path.Join(c.Path, c.File.Name), c.encryptedPassword); err != nil {
|
err := DecryptFile(path.Join(c.Path, c.File.Name+".enc"), path.Join(c.Path, c.File.Name), c.encryptedPassword)
|
||||||
|
c.spinner.Stop()
|
||||||
|
if err != nil {
|
||||||
log.Error(err)
|
log.Error(err)
|
||||||
return errors.Wrap(err, "Problem decrypting file")
|
return errors.Wrap(err, "Problem decrypting file")
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user