tualo / sftp-vfs
tualo - sftp virtual file system
Requires
- phpseclib/phpseclib: ^3.0
README
Ein Composer-Paket für den Einsatz eines SFTP-basierten virtuellen Dateisystems innerhalb von Tualo Office.
Überblick
Das Paket registriert einen eigenen Stream-Wrapper für ein beliebiges SFTP-Schema und macht SFTP-Server über PHP-Streams wie lokale Dateien erreichbar. Dazu wird phpseclib/phpseclib verwendet.
Installation
composer require tualo/sftp-vfs
Middleware-Automatik
Das Paket wird beim Anwendungsstart automatisch über die Middleware geladen. Dazu werden Einträge aus der Tabelle sftp_vfs_config verarbeitet.
Die Tabelle sollte mindestens folgende Spalten enthalten:
create table if not exists `sftp_vfs_config` ( `schema_id` varchar(36) not null, `name` varchar(255) not null, `host` varchar(255) not null, `port` int(11) not null default '22', `username` varchar(255) not null, `password` varchar(255) default null, `private_key` text default null, `passphrase` varchar(255) default null, primary key (`schema_id`) );
Konfiguration
Beispiel für einen Eintrag:
$cfg = [ 'schema_id' => 'my-sftp', 'scheme' => 'sftp', 'host' => 'sftp.example.com', 'port' => 22, 'username' => 'demo', 'password' => 'secret', ]; \Tualo\Office\SftpVFS\VFS::registerVFS(new \Tualo\Office\SftpVFS\VFSConfig($cfg));
Alternativ kann auch ein privater SSH-Key verwendet werden:
$cfg = [ 'schema_id' => 'my-sftp', 'scheme' => 'sftp', 'host' => 'sftp.example.com', 'port' => 22, 'username' => 'demo', 'private_key' => "-----BEGIN OPENSSH PRIVATE KEY-----\n...", 'passphrase' => 'optional-passphrase', ];
Verschlüsselte Werte in der Datenbank
Die Werte für password, private_key und passphrase können verschlüsselt gespeichert werden. Dazu muss in der Tualo-Konfiguration ein Pfad zu einer Schlüsseld Datei gesetzt werden:
TualoApplication::configuration('sftp', 'encryption_file', '/pfad/zur/oeffentlichen/pgp-key-datei');
Wenn diese Konfiguration gesetzt ist, dekodiert und entschlüsselt das Paket die Werte automatisch beim Lesen über die Getter-Methoden. Dadurch bleiben sensible Daten nicht im Klartext in der Datenbank liegen.
Nutzung
Nach der Registrierung kann auf Dateien über das konfigurierte Schema zugegriffen werden:
$file = 'sftp://path/to/file.txt'; $content = file_get_contents($file);
Oder mit einem eigenen Schema:
$file = 'sftp://path/to/file.txt';
Hinweise
- Das Paket verwendet
phpseclib/phpseclibfür die SFTP-Integration. - Der Stream-Wrapper wird über
stream_wrapper_register()registriert. - Die Middleware lädt die Konfiguration automatisch beim Start der Anwendung.