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

66
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) { // 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" { // 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: Impossible de résoudre le chemin absolu de '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 // // 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 {
log.Printf("[FTP] ERREUR: Le dossier upload n'existe pas (%s) : %v", absBase, err) // log.Printf("[FTP] ERREUR: Le dossier upload n'existe pas (%s) : %v", absBase, err)
return nil, errors.New("le dossier upload est absent") // return nil, errors.New("le dossier upload est absent")
} // }
if !info.IsDir() { // if !info.IsDir() {
log.Printf("[FTP] ERREUR: Le chemin upload (%s) n'est pas un dossier", absBase) // log.Printf("[FTP] ERREUR: Le chemin upload (%s) n'est pas un dossier", absBase)
return nil, errors.New("upload n'est pas un dossier") // 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()) // 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 (d *ftpMainDriver) AuthUser(cc ftpserverlib.ClientContext, user, pass string) (ftpserverlib.ClientDriver, error) {
log.Printf("[FTP] Tentative login user='%s' pass='%s'", user, pass)
base := filepath.Clean("upload")
absBase, err := filepath.Abs(base)
if err != nil {
log.Printf("[FTP] Erreur chemin upload: %v", err)
return nil, errors.New("erreur chemin upload")
} }
return nil, errors.New("invalid login")} info, err := os.Stat(absBase)
if err != nil || !info.IsDir() {
log.Printf("[FTP] Dossier absent ou non dir: %v", err)
return nil, errors.New("le dossier upload est absent ou non accessible")
}
files, _ := os.ReadDir(absBase)
for _, f := range files {
log.Printf("[FTP] Fichier trouvé: %s (dir=%v)", f.Name(), f.IsDir())
}
fs := afero.NewBasePathFs(afero.NewOsFs(), absBase)
return &ftpClientDriver{fs: fs}, nil
}
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) }