WFMは、シンプルなWebベースのファイルマネージャーです。 NASボックス、FTPサーバー、「パーソナルクラウド」、ドキュメント共有サイト、または軽量CMSのWebインターフェイスとして使用できます。ダウンロード、アップロード、変更、移動、ファイルの削除、ディレクトリツリー構造の整理など、基本的なファイルおよびフォルダー操作を実行できます。マークアップ、マークダウン、構成などのテキストファイルは、ブラウザで直接編集できます。 WFMは、ブックマーク、リンク、ショートカットファイルなどを作成および開くこともできます。

WFMは、独自のWebサーバーを備えたスタンドアロンサービスです。 Apache、Nginx、Phpなどは必要ありませんsysvinit systemd launchd 、 rc 、Dockerから直接実行されます。 TLS / SSLは、LETS / CERTBOTによって自動証明書生成でサポートされています。
Docker、Kubernetes、Hugoなどと同じように、WFMはGO言語で書かれています。バイナリは静的にリンクされており、完全に自己封じ込められており、外部依存関係がゼロです。アイコンはユニコード絵文字です。 CA証明書は、構築された時期に埋め込まれています。 Python、PHP、SQL、JavaScript、ノード、またはその他の膨満感は必要ありません。 WFM出力JavaScriptなしで検証されたHTML 4.01。 Internet Explorer 1.xとNetscape 3.xに戻るModernおよびLegacy Webブラウザの両方で機能します。
WFMは、Webベースのインターフェイスを介してディレクトリツリーを公開します。ルートディレクトリを指定する主要な方法は-chroot=/dirフラグを介したChroot、またはサービスマネージャーです。たとえば、SystemDサービスファイルRootDirectory= directive。 WFMは、Chrootなしで使用することを意図していません。
Dockerのような一部のサービスの場合、サブディレクトリを使用する必要があります。これは--prefix=/subdir:/ flagで指定できます。サブディレクトリは安全であると見なされるべきではありません。ユーザーがプレフィックスの上のファイルにアクセスできると仮定する必要があります。
他のWebサーバーと同様に、WFMはrootとしてプロセスを開始して、ポート80または443にバインドします。次に、 -setuid=myuserで指定された目的のユーザーにSetUIDを使用します。同様に、WFMは-chroot=/datadirで指定されたディレクトリにChrootを実行します。ここでは、サンプルサービスファイルが提供されています。
SystemDまたはWFMがChrootとSetUidを実行することができます。ポート80(および/または443)に拘束されている場合は、wfmをルートとして開始する必要があります。
RootDirectory= for chrootにも使用し、非特権ポート(1024を超えて、たとえば8080)を使用する場合、またはバイナリには適切な機能が設定されている場合、root以外のSystemD User=を指定できます。ここに例。
WFMサービスファイルをインストールするには/etc/systemd/system/wfm.service system/wfm.serviceにコピーして構成を編集して実行します。
$ sudo systemctl daemon-reload
$ sudo systemctl enable --now wfmここで発売されたサービスファイルの例が提供されています。
Docker Hub: tenox7/wfm:latest
こんにちは世界:
$ docker run -d -p 8080:8080 --user 1234:1234 -v /some/host/dir:/data tenox7/wfm:latest -prefix /data:/パスワードファイルを使用していない場合は、 --nopass_rw追加する必要があります。
Docker Runの--userを指定しない場合は、WFMがコンテナ内でユーザーID 0として実行されるため、 --allow_rootな場合もあります。
パスワードとオートセートを使用した高度な展開:
$ 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 ) -prefixフラグには、コロンで区切られた2つのディレクトリがあります。左側のものはファイルシステムディレクトリで、右側のものはHTTPパスです。 FSDIRは-chrootフラグの影響を受けます。 -chroot /home/ubuntu/dirなどのディレクトリにchrootする場合、プレフィックスはおそらくそのフォルダー-prefix /:/ - のroot dirを使用する必要があります。
httppathパーツはURLの接尾辞を制御します。デフォルトでは/が、flag -prefix=/:/httppathで「/data」または「/wfm」などの別のパスに移動できます。これは、デフォルトの場所を隠すか、逆プロキシなどの別のサービスからルーティングする場合に役立ちます。
将来、WFMは複数のプレフィックスペアをサポートする必要があります。
テストされていませんが、このようなものが必要です:
wfm -addr 127.0.0.1:9000 -fastcgiWFMをSSL / TLS / HTTPS Secure Webサーバーとして使用して、Lets Auto CERTマネージャーを暗号化できます。 ACMは、サイトとキーペアのSSL証明書を自動的に取得します。
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
flag -addr=:443 httpsリクエストのためにポート443でWFMをリスニングさせます。 flag -acm_addr=:80自動証明書マネージャーが証明書を取得し、ポート443/httpsにリダイレクトするために使用されます。 flag -acm_file=/var/cache/wfm-certs.jsonは、証明書とキーが保存される場所です。このファイルは、Chrootの前に開かれます。そのため、WFMがrootとして開始されることが望まれます。次に、Systemd/launchdではなく、それ自体でsetuidとchrootを使用します。
-acm_host=ホストをホワイトリストに追加する繰り返しフラグです。 ACMは、ホワイトリストに登録されたホストの証明書のみを取得します。 WFMサイトにDNSに複数の名前がある場合は、ホワイトリストに追加する必要があります。
HTTPSサイトがファイアウォールの外側に外部に露出している場合、ローカルHTTP(非SSL)リスナーを持つことも望まれます。この使用を有効にするには-addr_extra=:8080フラグ。
認証はHTTP Basic Authによって実行されます(将来、代わりにカスタムログインウィンドウを実装できます)。パスワードファイルが指定されていない場合、またはユーザーが存在しない場合(空白)、ハードコードされたパスワードが存在しない場合、WFMはユーザー名/パスワードを要求しません。 -nopass_rwフラグを指定しない限り、認定モードによる読み取り専用モード(通常のWebサーバーのように)になります。
認証を有効にするには、 -passwd=/path/users.jsonフラグを介してパスワードファイルを指定します。パスワードは起動時に読まれるため、Chrootディレクトリの外側に配置できます。パスワードは、以下のコンパイル時にバイナリでハードコードすることもできます。
ユーザーは、指定されたパスワードJSONファイルにサービスを提供する組み込みのヘルパー関数を使用して管理できます。
パスワードファイルを変更すると、有効になるためにWFMデーモンの再起動が必要であることに注意してください。これは、 chroot(2)が実行される前に、ファイルが起動時に1回読み取られるためです。
新しい空白のパスワードファイルを作成します:
$ wfm -passwd=/path/users.json user newfileユーザーを追加:
$ wfm -passwd=/path/users.json user add myuser rw削除ユーザー:
$ wfm -passwd=/path/users.json user delete myuserパスワードを変更する:
$ wfm -passwd=/path/users.json user passwd myuserJSONファイルは手動で編集 /管理できます。
サンプルファイルが提供されています。このフォーマットは、「ユーザー」、「ソルト」、「ハッシュ」文字列、「RW」ブールフィールドを持つユーザーのシンプルなリストです。ユーザーは自明です。塩は、パスワードをクラックするのが難しくなるために使用される短いランダムな文字列です。それは何でもかまいませんが、すべてのユーザーで異なる必要があります。パスワードを生成するときは、同じ塩も渡す必要があります。ハッシュはハッシュされた塩 +パスワード文字列です。 RW Booleanは、ユーザーが読み取りのみを読み取っているか、書き込みアクセスを読み取っているかどうかを指定します。
パスワードファイルは、コンパイル時にバイナリ内でハードコーディングすることもできます。これは、組み込み操作に役立つ場合があります。ハードコードされたユーザーを追加するには、 auth.goのusers varにエントリを追加します。
WFMモニターは、ユーザーログインの試みに失敗し、ユーザーを禁止し、より悪い試みで期間を増やします。これはデフォルトで有効になります。 -f2b=falseフラグでこの動作を無効にすることができます。さらに、デバッグ目的では、 -f2b_dump=/dumpf2bなど、禁止データベースがダンプされるプレフィックスを有効にすることができます。
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は、CERN HTTPDサーバーのPERL CGIスクリプトとして1994年頃にその生活を始めました。フィールドサポートエンジニア、顧客などによるログ、ダンプ、その他のケースデータをWeb上およびFTPサーバーのフロントエンドとしてアップロードできるように開発されました。 CGICライブラリとApache HTTPDがリリースされたときに、後にC言語で書き直されました。 2015年までのWFMは、軽量のドキュメント管理に使用され、少数の顧客がサポートするために使用されるクローズドソースの商用アプリケーションです。その後、オープンソースがあります。 2022年、WFMは、より近代的な展開シナリオのために、組み込みのWebサーバーを備えたスタンドアロンアプリケーションとしてGOで書き直されました。