update 11/06-1

This commit is contained in:
r0n1n7an 2023-11-06 09:39:10 +08:00
parent 75c147d3dd
commit 56b4d89e9d
3 changed files with 53 additions and 37 deletions

Binary file not shown.

View File

@ -24,6 +24,7 @@ var (
retry int = 0 retry int = 0
intrv int = 0 intrv int = 0
) )
var ftp *goftp.FTP
func init() { func init() {
flag.StringVar(&host, "h", "203.93.100.58", "FTPS Server Address") flag.StringVar(&host, "h", "203.93.100.58", "FTPS Server Address")
@ -47,46 +48,61 @@ func main() {
os.Exit(1) os.Exit(1)
} }
var err error err := _InitFTP()
var ftp *goftp.FTP
ftp, err = goftp.Connect(fmt.Sprintf("%s:%s", host, port))
if err != nil { if err != nil {
log.Printf("[ERR] %s\r\n", err.Error())
os.Exit(1)
}
defer ftp.Close()
cfg := tls.Config{
InsecureSkipVerify: true,
MinVersion: tls.VersionTLS10,
}
err = ftp.AuthTLS(&cfg)
if err != nil {
log.Printf("[ERR] %s\r\n", err.Error())
os.Exit(1)
}
err = ftp.Login(user, pswd)
if err != nil {
log.Printf("[ERR] %s\r\n", err.Error())
os.Exit(1) os.Exit(1)
} }
switch act { switch act {
case "list": case "list":
_List(ftp, rmt) _List(rmt)
case "dnld": case "dnld":
_Download(ftp, loc, rmt) _Download(loc, rmt)
case "upld": case "upld":
_Upload(ftp, loc, rmt) _Upload(loc, rmt)
default: default:
_List(ftp, loc) _List(rmt)
} }
} }
func _List(ftp *goftp.FTP, path string) { func _InitFTP() error {
var err error
for i := 0; i <= retry; i++ {
if i > 0 {
fmt.Println("[###] Retrying Connect ...")
}
ftp, err = goftp.Connect(fmt.Sprintf("%s:%s", host, port))
if err != nil {
log.Printf("[ERR] %s\r\n", err.Error())
continue
}
defer ftp.Close()
cfg := tls.Config{
InsecureSkipVerify: true,
MinVersion: tls.VersionTLS10,
}
err = ftp.AuthTLS(&cfg)
if err != nil {
log.Printf("[ERR] %s\r\n", err.Error())
continue
}
err = ftp.Login(user, pswd)
if err != nil {
log.Printf("[ERR] %s\r\n", err.Error())
continue
}
}
if err != nil {
log.Printf("[***] %s; %s\r\n", rmt, loc)
return err
}
return nil
}
func _List(path string) {
files, err := ftp.List(path) files, err := ftp.List(path)
if err != nil { if err != nil {
log.Printf("[ERR] %s\r\n", err.Error()) log.Printf("[ERR] %s\r\n", err.Error())
@ -97,14 +113,14 @@ func _List(ftp *goftp.FTP, path string) {
} }
} }
func _Download(ftp *goftp.FTP, local, remote string) { func _Download(local, remote string) {
log.Printf("[MSG] Downloading: %s\r\n", remote) log.Printf("[MSG] Downloading: %s\r\n", remote)
var err error var err error
base := filepath.Base(remote) base := filepath.Base(remote)
for i := 0; i <= retry; i++ { for i := 0; i <= retry; i++ {
if i > 0 { if i > 0 {
time.Sleep(time.Second * time.Duration(intrv)) time.Sleep(time.Second * time.Duration(intrv))
log.Printf("[***] Retrying Download %d/%d: %s\r\n", i, retry, remote) log.Printf("[###] Retrying Download %d/%d: %s\r\n", i, retry, remote)
} }
_, err = ftp.Retr(remote, func(rdr io.Reader) error { _, err = ftp.Retr(remote, func(rdr io.Reader) error {
wtr, oserr := os.Create(local + base) wtr, oserr := os.Create(local + base)
@ -123,20 +139,20 @@ func _Download(ftp *goftp.FTP, local, remote string) {
} }
} }
if err != nil { if err != nil {
log.Printf("[***] %s\r\n", err.Error()) log.Printf("[***] %s; %s\r\n", remote, local)
log.Printf("[ERR] Download NG: %s\r\n", remote) log.Printf("[ERR] Download NG: %s; %s\r\n", remote, err.Error())
return return
} }
log.Printf("[MSG] Download OK: %s\r\n", remote) log.Printf("[MSG] Download OK: %s\r\n", remote)
} }
func _Upload(ftp *goftp.FTP, local, remote string) { func _Upload(local, remote string) {
log.Printf("[MSG] Uploading: %s\r\n", local) log.Printf("[MSG] Uploading: %s\r\n", local)
var err error var err error
for i := 0; i <= retry; i++ { for i := 0; i <= retry; i++ {
if i > 0 { if i > 0 {
time.Sleep(time.Second * time.Duration(intrv)) time.Sleep(time.Second * time.Duration(intrv))
log.Printf("[***] Retrying Upload %d/%d: %s\r\n", i, retry, local) log.Printf("[###] Retrying Upload %d/%d: %s\r\n", i, retry, local)
} }
err = ftp.Cwd(remote) err = ftp.Cwd(remote)
if err != nil { if err != nil {
@ -149,8 +165,8 @@ func _Upload(ftp *goftp.FTP, local, remote string) {
break break
} }
if err != nil { if err != nil {
log.Printf("[***] %s\r\n", err.Error()) log.Printf("[***] %s; %s\r\n", remote, local)
log.Printf("[ERR] Upload NG: %s\r\n", local) log.Printf("[ERR] Upload NG: %s; %s\r\n", local, err.Error())
return return
} }
log.Printf("[MSG] Upload OK: %s\r\n", local) log.Printf("[MSG] Upload OK: %s\r\n", local)

2
go.mod
View File

@ -1,5 +1,5 @@
module ftpsClient module ftpsClient
go 1.21.1 go 1.20
require gopkg.in/dutchcoders/goftp.v1 v1.0.0-20170301105846-ed59a591ce14 require gopkg.in/dutchcoders/goftp.v1 v1.0.0-20170301105846-ed59a591ce14