WFM ist ein einfacher webbasierter Dateimanager. Sie können es als Webschnittstelle für ein NAS -Box, einen FTP -Server, eine "persönliche Cloud", eine Dokumentfreigabe -Site oder ein leichtes CMS verwenden. Es ermöglicht die Ausführung grundlegender Datei- und Ordneroperationen wie Download, Hochladen, Umbenennen, Verschieben, Löschen von Dateien und organisierte die Struktur der Verzeichnisbaum. Textdateien wie Markup, Markdown, Konfiguration usw. können direkt im Browser bearbeitet werden. WFM kann auch Lesezeichen erstellen und öffnen, Link- und Verknüpfungsdateien usw.

WFM ist ein eigenständiger Dienst mit seinem eigenen Webserver. Keine Notwendigkeit für Apache, Nginx, PHP usw. Es wird direkt von systemd , sysvinit , launchd , rc oder Docker ausgeführt. TLS / SSL wird durch automatische Zertifikaterzeugung durch Lets Encrypt / certbot unterstützt.
Ähnlich wie Docker, Kubernetes, Hugo usw. ist WFM in Go -Sprache geschrieben. Die Binärdatei ist statisch verknüpft, vollständig selbst inhaltlich und hat keine externen Abhängigkeiten. Ikonen sind Unicode Emojis. CA -Zertifikate sind zum gebauten Zeitpunkt eingebettet. Keine Notwendigkeit für Python, PHP, SQL, JavaScript, Knoten oder ein anderes Aufblähen. WFM -Ausgänge validiert HTML 4.01 ohne JavaScript. Es funktioniert sowohl in modernen als auch an den älteren Webbrowsern, die an Internet Explorer 1.x und Netscape 3.x zurückkehren.
WFM enthält einen Verzeichnisbaum über eine webbasierte Schnittstelle. Die primäre Methode zur Angabe des Stammverzeichnisses ist chroot über -chroot=/dir Flag oder von Ihrem Service Manager. Zum Beispiel systemd Servicedatei RootDirectory= Anweisung. WFM soll nicht ohne Chroot verwendet werden.
Für einige Dienste wie Docker muss ein Unterverzeichnis verwendet werden. Dies kann durch --prefix=/subdir:/ flag angegeben werden. Ein Unterverzeichnis sollte nicht als sicher angesehen werden, und Sie sollten davon ausgehen, dass Benutzer über dem Präfix bis zu Chroot auf Dateien zugreifen können.
Wie bei jedem anderen Webserver startet WFM den Prozess als root , um an den Port 80 oder 443 zu binden. Dann an einen mit -setuid=myuser angegebenen Benutzer an einen gewünschten Benutzer. In ähnlicher Weise führt die WFM Chroot mit einem mit -chroot=/datadir angegebenen Verzeichnis durch. Hier wird eine Beispieldienstdatei bereitgestellt.
Sie können entweder Systemd oder WFM CHROOT und SETUID durchführen lassen. Wenn Sie an Port 80 (und/oder 443) verbinden, müssen Sie WFM als Root starten.
Sie können systemd User= anderes als root angeben, wenn Sie RootDirectory= für chroot verwenden und nicht privilegierten Port (über 1024, z. B. 8080) verwenden oder Ihr Binär die angemessenen Funktionen eingestellt hat. Beispiel hier.
So installieren Sie die WFM -Servicedatei auf /etc/systemd/system/wfm.service Bearbeiten Sie die Konfiguration und führen Sie aus:
$ sudo systemctl daemon-reload
$ sudo systemctl enable --now wfmEine Beispiel -Launchd -Dienstdatei finden Sie hier.
Docker Hub: tenox7/wfm:latest
Hallo Welt:
$ docker run -d -p 8080:8080 --user 1234:1234 -v /some/host/dir:/data tenox7/wfm:latest -prefix /data:/ Wenn Sie keine Passwortdatei verwenden, müssen Sie möglicherweise auch addieren --nopass_rw .
Wenn Sie nicht angeben --user im Docker -Lauf, benötigen Sie möglicherweise auch --allow_root , da WFM im Container als Benutzer -ID 0 ausgeführt wird.
Erweiterte Bereitstellung mit Passwörtern und Autokert:
$ docker run -d
--restart=always
-p 80:8080
-p 443:8443
-v /some/host/datadir:/data
-v /some/dir/wfmpasswd.json:/etc/wfmusers.json
tenox7/wfm:latest
-passwd /etc/wfmusers.json
-addr :8443
-acm_addr :8080
-acm_host www.snakeoil.com
-chroot /data
-setuid $( id -u ) : $( id -g ) Die Flagge -prefix nimmt zwei von einem Dickdarm getrennte Verzeichnisse. Das links ist ein Dateisystemverzeichnis, das rechts ist der HTTP -Pfad. Der FSDIR ist von -chroot -Flagge betroffen. Wenn Sie ein Verzeichnis beispielsweise -chroot /home/ubuntu/dir zu einem Verzeichnis haben, sollte das Präfix wahrscheinlich nur die Root -Dire dieses Ordners verwenden -prefix /:/ -, was auch die Standardeinstellung ist.
Das HTTPPATH -Teil steuert URL -Suffix, standardmäßig ist es / , aber Sie können es jedoch auf einen anderen Pfad "/data" oder "/wfm" mit dem Flag -prefix=/:/httppath verschieben. Dies kann nützlich sein, um den Standardstandort zu verbergen oder bei einem anderen Dienst wie Reverse -Proxy zu verbergen.
In zukünftiger Bedeutung sollte WFM mehrere Präfixpaare unterstützen.
Ungetestet, aber Sie würden so etwas brauchen:
wfm -addr 127.0.0.1:9000 -fastcgiSie können WFM als SSL / TLS / HTTPS Secure Web Server mit Lets Encrypt Auto Cert Manager verwenden. ACM erhält automatisch ein SSL -Zertifikat für Ihre Website sowie für den Tastatur.
Beispielbereitstellung mit SSL:
ExecStart=/usr/local/sbin/wfm
-passwd=/usr/local/etc/wfmpasswd.json
-chroot=/var/www/html
-setuid=user
-addr=:443
-acm_addr=:80
-acm_file=/var/cache/wfm-certs.json
-acm_host=www.snakeoil.com
Durch das Flag -addr=:443 hört WFM auf Port 443 für HTTPS -Anforderungen an. Flag -acm_addr=:80 wird für das Auto -Cert -Manager verwendet, um das Cert zu erhalten und dann in Port 443/HTTPS umzuleiten. Flag -acm_file=/var/cache/wfm-certs.json sind dort, wo die Zertifikate und Schlüssel gespeichert werden. Diese Datei wird vor Chroot geöffnet. Als solches ist es gewünscht, dass WFM als Root gestartet wird, dann von SetUid und Chroot für sich selbst und nicht über Systemd/Launchd.
Das -acm_host= ist ein wiederholtes Flag, das Hosts zu einem Whitelisten hinzufügt. ACM erhält nur Zertifikate für weiße Hosts. Wenn Ihre WFM -Site in DNS mehrere Namen enthält, müssen Sie sie zur Whitelist hinzufügen.
Wenn die HTTPS-Site extern außerhalb Ihrer Firewall ausgesetzt ist, ist es manchmal auch gewünscht, dass auch ein lokaler HTTP-Hörer (Non-SSL) zugänglich ist. So aktivieren Sie diese Verwendung -addr_extra=:8080 Flag.
Die Authentifizierung erfolgt von HTTP Basic Auth (in Zukunft kann stattdessen ein benutzerdefiniertes Anmeldefenster implementiert werden). Wenn keine Kennwortdatei angegeben ist oder keine darin vorhandenen Benutzer (leer) und keine festcodierten Passwörter vorhanden sind. Der Authorer-Modus von wird nur schreibgeschützt (wie ein regulärer Webserver), es sei denn, Sie geben das Flag -nopass_rw Flag an.
Um die Authentifizierung zu aktivieren, geben Sie die Kennwortdatei über -passwd=/path/users.json -Flag an. Passwörter werden beim Start gelesen und können daher außerhalb des Chroot -Verzeichnisses platziert werden. Passwörter können auch in der Kompilierungszeit, SE unten, in der Binärdatei fest codiert werden.
Benutzer können mithilfe einer integrierten Helferfunktion verwaltet werden, die die angegebene JSON-Datei mit Passwort dient.
Beachten Sie, dass Änderungen an der Kennwortdatei einen Neustart von WFM -Daemon erfordern, um wirksam zu werden. Dies liegt daran, dass die Datei einmal beim Start gelesen wird, bevor chroot(2) durchgeführt wird.
Erstellen Sie eine neue leere Passwortdatei:
$ wfm -passwd=/path/users.json user newfileBenutzer hinzufügen:
$ wfm -passwd=/path/users.json user add myuser rwBenutzer löschen:
$ wfm -passwd=/path/users.json user delete myuserKennwort ändern:
$ wfm -passwd=/path/users.json user passwd myuserDie JSON -Datei kann manuell bearbeitet / verwaltet werden.
Eine Beispieldatei wird bereitgestellt. Das Format ist eine einfache Liste von Benutzern mit "Benutzer", "Salz", "Hash" und "RW" Boolean Field. Benutzer ist selbsterklärend. Salz ist eine kurze zufällige Zeichenfolge, mit der Passwörter schwieriger zu knacken sind. Es kann alles sein, aber für jeden Benutzer muss es anders sein. Das gleiche Salz muss auch beim Erstellen des Passworts übergeben werden. Hash ist eine Salz- + Kennwortzeichenfolge. RW Boolean gibt an, ob der Benutzer nur Schreibzugriff gelesen oder gelesen hat.
Die Passwortdatei kann auch in der Kompilierung in der Binärdatei festcodiert werden. Dies kann bei eingebetteten Operationen nützlich sein. So fügen Sie hartcodierte Benutzer ein Einträge in users var in auth.go hinzu.
WFM -Monitore fehlten die Nutzeranmeldesversuche und verbieten Benutzer für den zunehmenden Zeitraum mit mehr schlechten Versuchen. Dies ist standardmäßig aktiviert. Sie können dieses Verhalten mit -f2b=false Flag deaktivieren. Zusätzlich können Sie für Debugging -Zwecke ein Präfix aktivieren -f2b_dump=/dumpf2b in dem die Ban -Datenbank beispielsweise abgeladen wird.
Usage of wfm:
-about_runtime
Display runtime info in About Dialog (default true)
-acm_addr string
autocert manager listen address, eg: :80
-acm_file string
autocert cache, eg: /var/cache/wfm-acme.json
-acm_host value
autocert manager allowed hostname (multi)
-addr string
Listen address, eg: :443 (default ":8080")
-addr_extra string
Extra non-TLS listener address, eg: :8081
-allow_root
allow to run as uid=0/root without setuid
-cache_ctl string
HTTP Header Cache Control (default "no-cache")
-chroot string
Directory to chroot to
-f2b
ban ip addresses on user/pass failures (default true)
-f2b_dump string
enable f2b dump at this prefix, eg. /f2bdump (default no)
-favicon string
custom favicon file, empty use default
-form_maxmem int
maximum memory used for form parsing, increase for large uploads (default 10485760)
-list_archive_contents
list contents of archives (expensive!)
-logfile string
Log file name (default stdout)
-nopass_rw
allow read-write access if there is no password file
-passwd string
wfm password file, eg: /usr/local/etc/wfmpw.json
-prefix string
Prefix for WFM access, /fsdir:/httppath eg.: /var/files:/myfiles (default "/:/")
-proto string
tcp, tcp4, tcp6, etc (default "tcp")
-rate_limit int
rate limit for upload/download in MB/s, 0 no limit
-robots
allow robots
-setuid string
Username or uid:gid pair to setuid to
-show_dot
show dot files and folders
-site_name string
local site name to display (default "WFM")
-txt_le string
default line endings when editing text files (default "LF")
WFM begann sein Leben um 1994 als Perl CGI -Skript für CERN HTTPD Server. Es wurde entwickelt, um das Hochladen von Protokollen, Dumps und anderen Falldaten von Feldunterstützungsingenieuren, Kunden usw. über das Web und als Frontend zu FTP -Server zu ermöglichen. Später in C -Sprache umgeschrieben, als CGIC Library und Apache HTTPD veröffentlicht wurden. Bis 2015 war WFM eine kommerzielle Anwendung für geschlossene Quellen, die für das Leichtgewichtsmanagement verwendet und von einigen Kunden unterstützt wurde. Es wurde seitdem offen. Im Jahr 2022 wurde WFM in Go als eigenständige Anwendung mit integriertem Webserver für modernere Bereitstellungsszenarien umgeschrieben.