https://github.com/dutchcoders/goftp
Golang FTP library with Walk support.
https://github.com/dutchcoders/goftp
Last synced: 3 months ago
JSON representation
Golang FTP library with Walk support.
- Host: GitHub
- URL: https://github.com/dutchcoders/goftp
- Owner: dutchcoders
- License: mit
- Created: 2014-12-30T13:48:39.000Z (over 10 years ago)
- Default Branch: v1
- Last Pushed: 2020-10-16T13:50:37.000Z (over 4 years ago)
- Last Synced: 2025-03-29T03:11:41.983Z (3 months ago)
- Language: Go
- Size: 72.3 KB
- Stars: 282
- Watchers: 16
- Forks: 99
- Open Issues: 25
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
goftp
=====Golang FTP library with Walk support.
## Features
* AUTH TLS support
* Walk## Sample
```go
package mainimport (
"crypto/sha256"
"crypto/tls"
"fmt"
"io"
"os""encoding/hex"
"gopkg.in/dutchcoders/goftp.v1"
)func main() {
var err error
var ftp *goftp.FTP// For debug messages: goftp.ConnectDbg("ftp.server.com:21")
if ftp, err = goftp.Connect("ftp.server.com:21"); err != nil {
panic(err)
}defer ftp.Close()
fmt.Println("Successfully connected to", server)// TLS client authentication
config := tls.Config{
InsecureSkipVerify: true,
ClientAuth: tls.RequestClientCert,
}if err = ftp.AuthTLS(config); err != nil {
panic(err)
}// Username / password authentication
if err = ftp.Login("username", "password"); err != nil {
panic(err)
}if err = ftp.Cwd("/"); err != nil {
panic(err)
}var curpath string
if curpath, err = ftp.Pwd(); err != nil {
panic(err)
}fmt.Printf("Current path: %s", curpath)
// Get directory listing
var files []string
if files, err = ftp.List(""); err != nil {
panic(err)
}
fmt.Println("Directory listing:", files)// Upload a file
var file *os.File
if file, err = os.Open("/tmp/test.txt"); err != nil {
panic(err)
}if err := ftp.Stor("/test.txt", file); err != nil {
panic(err)
}// Download each file into local memory, and calculate it's sha256 hash
err = ftp.Walk("/", func(path string, info os.FileMode, err error) error {
_, err = ftp.Retr(path, func(r io.Reader) error {
var hasher = sha256.New()
if _, err = io.Copy(hasher, r); err != nil {
return err
}hash := fmt.Sprintf("%s %x", path, hex.EncodeToString(hasher.Sum(nil)))
fmt.Println(hash)return err
})return nil
})
}
````## Contributions
Contributions are welcome.
* Sourav Datta: for his work on the anonymous user login and multiline return status.
* Vincenzo La Spesa: for his work on resolving login issues with specific ftp servers## Creators
**Remco Verhoef**
-
-## Copyright and license
Code and documentation copyright 2011-2014 Remco Verhoef.
Code released under [the MIT license](LICENSE).