func (f *FTP) SendFile(remoteDir, remoteFile, localFile string) (err error) { var ( file *os.File ftp *goftp.FTP ) if ftp, err = goftp.Connect(f.host); err != nil { return } defer ftp.Close() if err = ftp.Login(f.user, f.pass); err != nil { return } if file, err = os.Open(localFile); err != nil { return } defer file.Close() if f.testMode { return } if err = ftp.Mkd(remoteDir); err != nil { return } if err = ftp.Cwd(remoteDir); err != nil { return } ftp.Stor(remoteFile, file) return }
func CopyBuildToFTP(config Configuration, lastBuild os.FileInfo, ftpConnection *goftp.FTP, buildsPath string, ftpBuildPaths string) { var buildFiles []os.FileInfo = GetBuildFiles(buildsPath + "/" + lastBuild.Name()) for i := 0; i < len(buildFiles); i++ { var fileInfo os.FileInfo = buildFiles[i] var file *os.File var err error if file, err = os.Open(buildsPath + "/" + lastBuild.Name() + "/" + fileInfo.Name()); err != nil { panic(err) } var reader io.Reader = (*os.File)(file) if err := ftpConnection.Stor(ftpBuildPaths+"/"+lastBuild.Name()+"/"+fileInfo.Name(), reader); err != nil { panic(err) } fmt.Println(file.Name(), "copied to", ftpBuildPaths, "/", lastBuild.Name()) } }
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:8863"); err != nil { panic(err) } defer ftp.Close() config := tls.Config{ InsecureSkipVerify: true, ClientAuth: tls.RequestClientCert, } if err = ftp.AuthTLS(config); err != nil { panic(err) } 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) var files []string if files, err = ftp.List(""); err != nil { panic(err) } fmt.Println(files) 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) } 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, sha256.Sum256(nil)) fmt.Println(hash) return err }) return nil }) }