2021-12-16 10:03:58 +00:00
|
|
|
package ftp
|
|
|
|
|
|
|
|
import (
|
|
|
|
"github.com/Xhofe/alist/drivers/base"
|
|
|
|
"github.com/Xhofe/alist/model"
|
|
|
|
"github.com/jlaffaye/ftp"
|
|
|
|
)
|
|
|
|
|
2022-01-13 14:56:07 +00:00
|
|
|
var connMap map[string]*ftp.ServerConn
|
|
|
|
|
2021-12-16 10:03:58 +00:00
|
|
|
func (driver FTP) Login(account *model.Account) (*ftp.ServerConn, error) {
|
2022-01-13 14:56:07 +00:00
|
|
|
conn, ok := connMap[account.Name]
|
|
|
|
if ok {
|
|
|
|
return conn, nil
|
|
|
|
}
|
2021-12-16 10:03:58 +00:00
|
|
|
conn, err := ftp.Connect(account.SiteUrl)
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
err = conn.Login(account.Username, account.Password)
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
2022-01-29 16:04:31 +00:00
|
|
|
connMap[account.Name] = conn
|
2021-12-16 10:03:58 +00:00
|
|
|
return conn, nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func init() {
|
|
|
|
base.RegisterDriver(&FTP{})
|
2022-01-29 16:55:12 +00:00
|
|
|
connMap = make(map[string]*ftp.ServerConn)
|
2022-01-13 14:56:07 +00:00
|
|
|
}
|