This commit is contained in:
cangui 2025-07-27 19:06:27 +02:00
parent db15619f39
commit dfe5d6cb96

46
main.go
View File

@ -39,31 +39,51 @@ func (d *ftpMainDriver) ClientConnected(cc ftpserverlib.ClientContext) (string,
} }
func (d *ftpMainDriver) ClientDisconnected(cc ftpserverlib.ClientContext) {} func (d *ftpMainDriver) ClientDisconnected(cc ftpserverlib.ClientContext) {}
func (d *ftpMainDriver) GetTLSConfig() (*tls.Config, error) { return nil, nil } func (d *ftpMainDriver) GetTLSConfig() (*tls.Config, error) { return nil, nil }
// func (d *ftpMainDriver) AuthUser(cc ftpserverlib.ClientContext, user, pass string) (ftpserverlib.ClientDriver, error) {
// log.Printf("[FTP] Tentative login user='%s' pass='%s'", user, pass)
// if user == "cangui2089" {
// base := filepath.Clean("upload")
// absBase, err := filepath.Abs(base)
// if err != nil {
// log.Printf("[FTP] ERREUR: Impossible de résoudre le chemin absolu de 'upload' : %v", err)
// return nil, errors.New("erreur chemin upload")
// }
// // Vérifie que le dossier existe vraiment et est accessible
// info, err := os.Stat(absBase)
// if err != nil {
// log.Printf("[FTP] ERREUR: Le dossier upload n'existe pas (%s) : %v", absBase, err)
// return nil, errors.New("le dossier upload est absent")
// }
// if !info.IsDir() {
// log.Printf("[FTP] ERREUR: Le chemin upload (%s) n'est pas un dossier", absBase)
// return nil, errors.New("upload n'est pas un dossier")
// }
// log.Printf("[FTP] OK dossier upload: %s (mode %v, owner UID=%d)", absBase, info.Mode(), info.Sys())
// fs := afero.NewBasePathFs(afero.NewOsFs(), absBase)
// return &ftpClientDriver{fs: fs}, nil
// }
// return nil, errors.New("invalid login")}
func (d *ftpMainDriver) AuthUser(cc ftpserverlib.ClientContext, user, pass string) (ftpserverlib.ClientDriver, error) { func (d *ftpMainDriver) AuthUser(cc ftpserverlib.ClientContext, user, pass string) (ftpserverlib.ClientDriver, error) {
log.Printf("[FTP] Tentative login user='%s' pass='%s'", user, pass) log.Printf("[FTP] Tentative login user='%s' pass='%s'", user, pass)
if user == "cangui2089" {
base := filepath.Clean("upload") base := filepath.Clean("upload")
absBase, err := filepath.Abs(base) absBase, err := filepath.Abs(base)
if err != nil { if err != nil {
log.Printf("[FTP] ERREUR: Impossible de résoudre le chemin absolu de 'upload' : %v", err) log.Printf("[FTP] Erreur chemin upload: %v", err)
return nil, errors.New("erreur chemin upload") return nil, errors.New("erreur chemin upload")
} }
// Vérifie que le dossier existe vraiment et est accessible
info, err := os.Stat(absBase) info, err := os.Stat(absBase)
if err != nil { if err != nil || !info.IsDir() {
log.Printf("[FTP] ERREUR: Le dossier upload n'existe pas (%s) : %v", absBase, err) log.Printf("[FTP] Dossier absent ou non dir: %v", err)
return nil, errors.New("le dossier upload est absent") return nil, errors.New("le dossier upload est absent ou non accessible")
} }
if !info.IsDir() { files, _ := os.ReadDir(absBase)
log.Printf("[FTP] ERREUR: Le chemin upload (%s) n'est pas un dossier", absBase) for _, f := range files {
return nil, errors.New("upload n'est pas un dossier") log.Printf("[FTP] Fichier trouvé: %s (dir=%v)", f.Name(), f.IsDir())
} }
log.Printf("[FTP] OK dossier upload: %s (mode %v, owner UID=%d)", absBase, info.Mode(), info.Sys())
fs := afero.NewBasePathFs(afero.NewOsFs(), absBase) fs := afero.NewBasePathFs(afero.NewOsFs(), absBase)
return &ftpClientDriver{fs: fs}, nil return &ftpClientDriver{fs: fs}, nil
} }
return nil, errors.New("invalid login")}
func (c *ftpClientDriver) Name() string { return "aferofs" } func (c *ftpClientDriver) Name() string { return "aferofs" }
func (c *ftpClientDriver) Create(name string) (afero.File, error) { return c.fs.Create(name) } func (c *ftpClientDriver) Create(name string) (afero.File, error) { return c.fs.Create(name) }