mirror of
https://github.com/Dadido3/Scanyonero.git
synced 2025-06-06 01:10:00 +00:00
- 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.
58 lines
1.6 KiB
Go
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")
|
|
}
|