Scanyonero/ftpserver/driver.go
David Vogel 853a1bb58d Rework into FTP scanning server
- Rename to Scanyonero
- Add FTP server that ingests TIFF, PNG, JPEG or PDF files
- Add web interface to check and modify ingested files
- Rework how ocrmypdf is invoked

Basics are working, but the program is not in a usable state.
2025-05-14 12:08:38 +02:00

58 lines
1.6 KiB
Go

package ftpserver
import (
"crypto/tls"
"fmt"
ftpserver "github.com/fclairamb/ftpserverlib"
"github.com/spf13/afero"
)
type driver struct {
User, Pass string
ListenAddr string
ClientDriver afero.Fs
}
// GetSettings returns some general settings around the server setup
func (d *driver) GetSettings() (*ftpserver.Settings, error) {
//log.Printf("Passed settings to ftpserverlib.")
return &ftpserver.Settings{
ListenAddr: d.ListenAddr,
DefaultTransferType: ftpserver.TransferTypeBinary,
}, nil
}
// ClientConnected is called to send the very first welcome message
func (d *driver) ClientConnected(cc ftpserver.ClientContext) (string, error) {
//log.Printf("Client %q connected.", cc.RemoteAddr())
return "Welcome to the Scanyonero FTP server.", nil
}
// ClientDisconnected is called when the user disconnects, even if he never authenticated
func (d *driver) ClientDisconnected(cc ftpserver.ClientContext) {
//log.Printf("Client %q disconnected.", cc.RemoteAddr())
}
// AuthUser authenticates the user and selects an handling driver
func (d *driver) AuthUser(cc ftpserver.ClientContext, user, pass string) (ftpserver.ClientDriver, error) {
if d.User != "" && d.Pass != "" {
if user != d.User || pass != d.Pass {
return nil, fmt.Errorf("wrong username or password")
}
}
//log.Printf("Client %q authenticated with %q and %q.", cc.RemoteAddr(), user, pass)
return d.ClientDriver, nil
}
// GetTLSConfig returns a TLS Certificate to use
// The certificate could frequently change if we use something like "let's encrypt"
func (d *driver) GetTLSConfig() (*tls.Config, error) {
return nil, fmt.Errorf("tls not implemented")
}