mirror of
https://github.com/schollz/croc.git
synced 2025-10-11 13:21:00 +02:00
send file looks better
This commit is contained in:
parent
e2198faa24
commit
6cdf8cecfc
3 changed files with 79 additions and 59 deletions
|
@ -5,6 +5,6 @@ go 1.13
|
||||||
require (
|
require (
|
||||||
fyne.io/fyne v1.1.1
|
fyne.io/fyne v1.1.1
|
||||||
github.com/gotk3/gotk3 v0.0.0-20190930052053-f6994e9a1558 // indirect
|
github.com/gotk3/gotk3 v0.0.0-20190930052053-f6994e9a1558 // indirect
|
||||||
github.com/schollz/croc/v6 v6.1.6-0.20191009002122-3fcccecf3750
|
github.com/schollz/croc/v6 v6.1.6-0.20191009003006-e2198faa24d0
|
||||||
github.com/sqweek/dialog v0.0.0-20190728103509-6254ed5b0d3c
|
github.com/sqweek/dialog v0.0.0-20190728103509-6254ed5b0d3c
|
||||||
)
|
)
|
||||||
|
|
|
@ -58,6 +58,8 @@ github.com/schollz/croc/v6 v6.1.5 h1:+qBtJXDb5uSoGpFELvfjofkSTrGc1g4YkNjF8XgEXwY
|
||||||
github.com/schollz/croc/v6 v6.1.5/go.mod h1:tri46MTpgVh2pPQ9IJJsJDQKHK63VfMW4+lvJAKqVlE=
|
github.com/schollz/croc/v6 v6.1.5/go.mod h1:tri46MTpgVh2pPQ9IJJsJDQKHK63VfMW4+lvJAKqVlE=
|
||||||
github.com/schollz/croc/v6 v6.1.6-0.20191009002122-3fcccecf3750 h1:LkqHUcYqFzWi1xWV1Mtz23yUTrgKKOgTpY72IuaTi/Y=
|
github.com/schollz/croc/v6 v6.1.6-0.20191009002122-3fcccecf3750 h1:LkqHUcYqFzWi1xWV1Mtz23yUTrgKKOgTpY72IuaTi/Y=
|
||||||
github.com/schollz/croc/v6 v6.1.6-0.20191009002122-3fcccecf3750/go.mod h1:Wd/ZHrsZlxT21hRqbxaEWl8ww1uCHGR6xACaZQQV/wk=
|
github.com/schollz/croc/v6 v6.1.6-0.20191009002122-3fcccecf3750/go.mod h1:Wd/ZHrsZlxT21hRqbxaEWl8ww1uCHGR6xACaZQQV/wk=
|
||||||
|
github.com/schollz/croc/v6 v6.1.6-0.20191009003006-e2198faa24d0 h1:UH27BGqcbGDIog19qzaOGp6yYOwKNRZM1FgnKGpJ3PQ=
|
||||||
|
github.com/schollz/croc/v6 v6.1.6-0.20191009003006-e2198faa24d0/go.mod h1:Wd/ZHrsZlxT21hRqbxaEWl8ww1uCHGR6xACaZQQV/wk=
|
||||||
github.com/schollz/logger v1.0.1 h1:BuBAU+euqphM0Ny9qFVScl4RSxatis4nCHIkOxO2cUU=
|
github.com/schollz/logger v1.0.1 h1:BuBAU+euqphM0Ny9qFVScl4RSxatis4nCHIkOxO2cUU=
|
||||||
github.com/schollz/logger v1.0.1/go.mod h1:P6F4/dGMGcx8wh+kG1zrNEd4vnNpEBY/mwEMd/vn6AM=
|
github.com/schollz/logger v1.0.1/go.mod h1:P6F4/dGMGcx8wh+kG1zrNEd4vnNpEBY/mwEMd/vn6AM=
|
||||||
github.com/schollz/mnemonicode v1.0.1 h1:LiH5hwADZwjwnfXsaD4xgnMyTAtaKHN+e5AyjRU6WSU=
|
github.com/schollz/mnemonicode v1.0.1 h1:LiH5hwADZwjwnfXsaD4xgnMyTAtaKHN+e5AyjRU6WSU=
|
||||||
|
|
134
src/win/main.go
134
src/win/main.go
|
@ -73,74 +73,92 @@ func main() {
|
||||||
progress := widget.NewProgressBar()
|
progress := widget.NewProgressBar()
|
||||||
var sendFileButton *widget.Button
|
var sendFileButton *widget.Button
|
||||||
pathToFile := ""
|
pathToFile := ""
|
||||||
sendFileButton = widget.NewButton("Select file", func() {
|
fname := ""
|
||||||
|
currentInfo := widget.NewLabel("")
|
||||||
|
sendFileButton = widget.NewButton("Choose a file to send", func() {
|
||||||
filename, err := nativedialog.File().Title("Select a file to send").Load()
|
filename, err := nativedialog.File().Title("Select a file to send").Load()
|
||||||
pathToFile = filename
|
pathToFile = filename
|
||||||
if err == nil {
|
if err == nil {
|
||||||
fnames := strings.Split(filename, "\\")
|
fnames := strings.Split(filename, "\\")
|
||||||
sendFileButton.SetText(fnames[len(fnames)-1])
|
fname = fnames[len(fnames)-1]
|
||||||
|
sendFileButton.SetText(fmt.Sprintf("Sending '%s'", fname))
|
||||||
|
}
|
||||||
|
for {
|
||||||
|
if len(filename) > 0 {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
time.Sleep(50 * time.Millisecond)
|
||||||
}
|
}
|
||||||
})
|
|
||||||
currentInfo := widget.NewLabel("")
|
|
||||||
|
|
||||||
|
codePhrase := utils.GetRandomName()
|
||||||
|
codePhrase = "zack1"
|
||||||
|
crocOptions := croc.Options{
|
||||||
|
SharedSecret: codePhrase,
|
||||||
|
IsSender: true,
|
||||||
|
Debug: false,
|
||||||
|
NoPrompt: true,
|
||||||
|
RelayAddress: models.DEFAULT_RELAY,
|
||||||
|
Stdout: false,
|
||||||
|
DisableLocal: true,
|
||||||
|
RelayPorts: strings.Split("9009,9010,9011,9012,9013", ","),
|
||||||
|
}
|
||||||
|
cr, err := croc.New(crocOptions)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
finfo, err := os.Stat(pathToFile)
|
||||||
|
if err != nil {
|
||||||
|
// TODO show something
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
currentInfo.SetText("Code phrase: " + codePhrase)
|
||||||
|
finished := false
|
||||||
|
transfering := false
|
||||||
|
prog := dialog.NewProgress("Progress", fmt.Sprintf("Transfering '%s' (%s)", fname, utils.ByteCountDecimal(finfo.Size())), w)
|
||||||
|
prog.Hide()
|
||||||
|
startTime := time.Now()
|
||||||
|
go func() {
|
||||||
|
for {
|
||||||
|
if finished || cr == nil {
|
||||||
|
mbPerSecond := float64(finfo.Size()) / time.Since(startTime).Seconds()
|
||||||
|
currentInfo.SetText(fmt.Sprintf("Finished transfer (%s/s).", utils.ByteCountDecimal(int64(mbPerSecond))))
|
||||||
|
prog.Hide()
|
||||||
|
sendFileButton.SetText("Choose a file to send")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if cr.Step1ChannelSecured {
|
||||||
|
currentInfo.SetText("Channel secured.")
|
||||||
|
}
|
||||||
|
if cr.Step4FileTransfer && !transfering {
|
||||||
|
transfering = true
|
||||||
|
currentInfo.SetText("Transfering file.")
|
||||||
|
prog.Show()
|
||||||
|
startTime = time.Now()
|
||||||
|
}
|
||||||
|
if cr.Bar != nil {
|
||||||
|
prog.SetValue(cr.Bar.State().CurrentPercent)
|
||||||
|
}
|
||||||
|
time.Sleep(100 * time.Millisecond)
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
err = cr.Send(croc.TransferOptions{
|
||||||
|
PathToFiles: []string{pathToFile},
|
||||||
|
KeepPathInRemote: false,
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
// TODO: do something
|
||||||
|
}
|
||||||
|
cr = nil
|
||||||
|
finished = true
|
||||||
|
fmt.Println("send")
|
||||||
|
})
|
||||||
sendScreen := widget.NewVBox(
|
sendScreen := widget.NewVBox(
|
||||||
widget.NewLabelWithStyle("Send a file", fyne.TextAlignCenter, fyne.TextStyle{Bold: true}),
|
widget.NewLabelWithStyle("Send a file", fyne.TextAlignCenter, fyne.TextStyle{Bold: true}),
|
||||||
sendFileButton,
|
sendFileButton,
|
||||||
widget.NewButton("Send", func() {
|
|
||||||
|
|
||||||
codePhrase := utils.GetRandomName()
|
|
||||||
crocOptions := croc.Options{
|
|
||||||
SharedSecret: codePhrase,
|
|
||||||
IsSender: true,
|
|
||||||
Debug: false,
|
|
||||||
NoPrompt: true,
|
|
||||||
RelayAddress: models.DEFAULT_RELAY,
|
|
||||||
Stdout: false,
|
|
||||||
DisableLocal: true,
|
|
||||||
RelayPorts: strings.Split("9009,9010,9011,9012,9013", ","),
|
|
||||||
}
|
|
||||||
cr, err := croc.New(crocOptions)
|
|
||||||
if err != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
currentInfo.SetText("Code phrase: " + codePhrase)
|
|
||||||
finished := false
|
|
||||||
go func() {
|
|
||||||
for {
|
|
||||||
if finished || cr == nil {
|
|
||||||
currentInfo.SetText("Finished transfer.")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
if cr.Step1ChannelSecured {
|
|
||||||
currentInfo.SetText("Channel secured.")
|
|
||||||
}
|
|
||||||
if cr.Step4FileTransfer {
|
|
||||||
currentInfo.SetText("Transfering file.")
|
|
||||||
}
|
|
||||||
if cr.Bar != nil {
|
|
||||||
progress.SetValue(cr.Bar.State().CurrentPercent)
|
|
||||||
}
|
|
||||||
time.Sleep(100 * time.Millisecond)
|
|
||||||
}
|
|
||||||
}()
|
|
||||||
err = cr.Send(croc.TransferOptions{
|
|
||||||
PathToFiles: []string{pathToFile},
|
|
||||||
KeepPathInRemote: false,
|
|
||||||
})
|
|
||||||
if err != nil {
|
|
||||||
// TODO: do something
|
|
||||||
}
|
|
||||||
cr = nil
|
|
||||||
finished = true
|
|
||||||
fmt.Println("send")
|
|
||||||
}),
|
|
||||||
layout.NewSpacer(),
|
|
||||||
currentInfo,
|
currentInfo,
|
||||||
widget.NewHBox(
|
layout.NewSpacer(),
|
||||||
widget.NewLabel("Progress:"),
|
|
||||||
progress,
|
|
||||||
),
|
|
||||||
)
|
)
|
||||||
|
|
||||||
var codePhraseToReceive string
|
var codePhraseToReceive string
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue