mirror of
https://github.com/schollz/croc.git
synced 2025-10-11 13:21:00 +02:00
seems to work
This commit is contained in:
parent
ba07215226
commit
a66f71ac98
2 changed files with 46 additions and 29 deletions
|
@ -18,7 +18,6 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
var Version string
|
var Version string
|
||||||
var cr *croc.Client
|
|
||||||
|
|
||||||
func Run() (err error) {
|
func Run() (err error) {
|
||||||
|
|
||||||
|
@ -73,16 +72,6 @@ func Run() (err error) {
|
||||||
}
|
}
|
||||||
return receive(c)
|
return receive(c)
|
||||||
}
|
}
|
||||||
app.Before = func(c *cli.Context) error {
|
|
||||||
var err error
|
|
||||||
cr, err = croc.New(croc.Options{
|
|
||||||
Debug: c.GlobalBool("debug"),
|
|
||||||
NoPrompt: c.GlobalBool("yes"),
|
|
||||||
AddressRelay: c.GlobalString("relay"),
|
|
||||||
Stdout: c.GlobalBool("stdout"),
|
|
||||||
})
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
return app.Run(os.Args)
|
return app.Run(os.Args)
|
||||||
}
|
}
|
||||||
|
@ -92,6 +81,7 @@ func Run() (err error) {
|
||||||
// }
|
// }
|
||||||
|
|
||||||
func send(c *cli.Context) (err error) {
|
func send(c *cli.Context) (err error) {
|
||||||
|
|
||||||
var fnames []string
|
var fnames []string
|
||||||
stat, _ := os.Stdin.Stat()
|
stat, _ := os.Stdin.Stat()
|
||||||
if (stat.Mode() & os.ModeCharDevice) == 0 {
|
if (stat.Mode() & os.ModeCharDevice) == 0 {
|
||||||
|
@ -121,13 +111,14 @@ func send(c *cli.Context) (err error) {
|
||||||
return errors.New("must specify file: croc send [filename]")
|
return errors.New("must specify file: croc send [filename]")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var sharedSecret string
|
||||||
if c.String("code") != "" {
|
if c.String("code") != "" {
|
||||||
cr.Options.SharedSecret = c.String("code")
|
sharedSecret = c.String("code")
|
||||||
}
|
}
|
||||||
// cr.LoadConfig()
|
// cr.LoadConfig()
|
||||||
if len(cr.Options.SharedSecret) == 0 {
|
if len(sharedSecret) == 0 {
|
||||||
// generate code phrase
|
// generate code phrase
|
||||||
cr.Options.SharedSecret = utils.GetRandomName()
|
sharedSecret = utils.GetRandomName()
|
||||||
}
|
}
|
||||||
|
|
||||||
paths := []string{}
|
paths := []string{}
|
||||||
|
@ -154,29 +145,52 @@ func send(c *cli.Context) (err error) {
|
||||||
paths = append(paths, filepath.ToSlash(fname))
|
paths = append(paths, filepath.ToSlash(fname))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
cr, err := croc.New(croc.Options{
|
||||||
|
SharedSecret: sharedSecret,
|
||||||
|
IsSender: true,
|
||||||
|
Debug: c.GlobalBool("debug"),
|
||||||
|
NoPrompt: c.GlobalBool("yes"),
|
||||||
|
AddressRelay: c.GlobalString("relay"),
|
||||||
|
Stdout: c.GlobalBool("stdout"),
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
err = cr.Send(croc.TransferOptions{
|
err = cr.Send(croc.TransferOptions{
|
||||||
PathToFiles: paths,
|
PathToFiles: paths,
|
||||||
KeepPathInRemote: false,
|
KeepPathInRemote: false, // TODO: add options to change this
|
||||||
})
|
})
|
||||||
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
func receive(c *cli.Context) (err error) {
|
func receive(c *cli.Context) (err error) {
|
||||||
|
var sharedSecret string
|
||||||
if c.GlobalString("code") != "" {
|
if c.GlobalString("code") != "" {
|
||||||
cr.Options.SharedSecret = c.GlobalString("code")
|
sharedSecret = c.GlobalString("code")
|
||||||
}
|
}
|
||||||
if c.Args().First() != "" {
|
if c.Args().First() != "" {
|
||||||
cr.Options.SharedSecret = c.Args().First()
|
sharedSecret = c.Args().First()
|
||||||
}
|
}
|
||||||
if cr.Options.SharedSecret == "" {
|
if sharedSecret == "" {
|
||||||
cr.Options.SharedSecret = utils.GetInput("Enter receive code: ")
|
sharedSecret = utils.GetInput("Enter receive code: ")
|
||||||
}
|
}
|
||||||
if c.GlobalString("out") != "" {
|
if c.GlobalString("out") != "" {
|
||||||
os.Chdir(c.GlobalString("out"))
|
os.Chdir(c.GlobalString("out"))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
cr, err := croc.New(croc.Options{
|
||||||
|
SharedSecret: sharedSecret,
|
||||||
|
IsSender: false,
|
||||||
|
Debug: c.GlobalBool("debug"),
|
||||||
|
NoPrompt: c.GlobalBool("yes"),
|
||||||
|
AddressRelay: c.GlobalString("relay"),
|
||||||
|
Stdout: c.GlobalBool("stdout"),
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
err = cr.Receive()
|
err = cr.Receive()
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
|
@ -146,6 +146,8 @@ func New(ops Options) (c *Client, err error) {
|
||||||
|
|
||||||
// setup basic info
|
// setup basic info
|
||||||
c.Options = ops
|
c.Options = ops
|
||||||
|
Debug(c.Options.Debug)
|
||||||
|
log.Debugf("options: %+v", c.Options)
|
||||||
|
|
||||||
// set channels
|
// set channels
|
||||||
if c.Options.IsSender {
|
if c.Options.IsSender {
|
||||||
|
@ -156,8 +158,6 @@ func New(ops Options) (c *Client, err error) {
|
||||||
c.nameInChannel = c.Options.SharedSecret + "2"
|
c.nameInChannel = c.Options.SharedSecret + "2"
|
||||||
}
|
}
|
||||||
|
|
||||||
Debug(c.Options.Debug)
|
|
||||||
|
|
||||||
// initialize redis for communication in establishing channel
|
// initialize redis for communication in establishing channel
|
||||||
c.redisdb = redis.NewClient(&redis.Options{
|
c.redisdb = redis.NewClient(&redis.Options{
|
||||||
Addr: c.Options.AddressRelay,
|
Addr: c.Options.AddressRelay,
|
||||||
|
@ -431,15 +431,18 @@ func (c *Client) processMessage(m Message) (err error) {
|
||||||
totalSize += fi.Size
|
totalSize += fi.Size
|
||||||
}
|
}
|
||||||
c.spinner.Stop()
|
c.spinner.Stop()
|
||||||
fmt.Fprintf(os.Stderr, "\rAccept %s (%s) from machine '%s'? (y/n) ", fname, utils.ByteCountDecimal(totalSize), senderInfo.MachineID)
|
if !c.Options.NoPrompt {
|
||||||
if strings.ToLower(strings.TrimSpace(utils.GetInput(""))) != "y" {
|
fmt.Fprintf(os.Stderr, "\rAccept %s (%s) from machine '%s'? (y/n) ", fname, utils.ByteCountDecimal(totalSize), senderInfo.MachineID)
|
||||||
err = c.redisdb.Publish(c.nameOutChannel, Message{
|
if strings.ToLower(strings.TrimSpace(utils.GetInput(""))) != "y" {
|
||||||
Type: "error",
|
err = c.redisdb.Publish(c.nameOutChannel, Message{
|
||||||
Message: "refusing files",
|
Type: "error",
|
||||||
}.String()).Err()
|
Message: "refusing files",
|
||||||
return fmt.Errorf("refused files")
|
}.String()).Err()
|
||||||
|
return fmt.Errorf("refused files")
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
fmt.Fprintf(os.Stderr, "\rReceiving %s (%s) from machine '%s'\n", fname, utils.ByteCountDecimal(totalSize), senderInfo.MachineID)
|
||||||
}
|
}
|
||||||
// TODO: accept file question?
|
|
||||||
c.log.Debug(c.FilesToTransfer)
|
c.log.Debug(c.FilesToTransfer)
|
||||||
c.Step2FileInfoTransfered = true
|
c.Step2FileInfoTransfered = true
|
||||||
case "recipientready":
|
case "recipientready":
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue