ファイルパスを検索し結果をJSONで返すサーバーを立て、ブラウザに表示するファイルを配信します。
2.5K
ファイルパスを検索し結果をJSONで返すサーバーを立て、ブラウザに表示するファイルを配信します。

ウェブブラウザからの入力で指定ディレクトリ下にあるファイル内の文字列に対してlocateコマンドを使用した正規表現検索を行い、結果をhtmlにしてウェブブラウザに表示します。
Windows, Linux OK
MacOS 未テスト
Usage of ./locate-server:
-d string
Path of locate database directory (default "/var/lib/mlocate")
-debug
Debug mode
-dir string
Path of locate database directory (default "/var/lib/mlocate")
-p string
Server port number. Default access to http://localhost:8080/ (default "8080")
-port string
Server port number. Default access to http://localhost:8080/ (default "8080")
-r string
DB insert prefix for directory path
-root string
DB insert prefix for directory path
-s OS path split windows backslash
-t string
DB trim prefix for directory path
-trim string
DB trim prefix for directory path
-v show version
-version
show version
-windows-path-separate
OS path separate windows backslash
$ locate-server \
-d /home/mydir/mlocate \
-windows-path-separate \
-trim '\\gr.jp\share' \
$ go install github.com/u1and0/locate-server@latest
or use docker
$ docker pull u1and0/locate-server
locate-server実行時にglibcが必要
./locate-server: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.32' not found (required by ./locate-server)
cgoを無効にしてビルドすれば解決。
CGO_ENABLED=0 go build
$ go test
(aaa|bbb)のグループ化表現が使えます。(OR検索)
?が使えます。
ページタイトルに検索ワードが付属するので、ブラウザの戻るを長押ししたときに検索履歴が表示されます。
ブックマークすることで、ワンクリックで検索を開始し、結果を表示できます。
検索バーのURLは他人に送付することができます。 URLを送られた人はリンクをクリックするだけで検索バーに入力した文字列で検索を開始し、結果を閲覧することができます。
検索ツールボックスにはこれまで検索した検索語を検索候補として表示します。
インターネット設定からhttp://(ホストマシンのIPアドレス)を信頼するサイトに追加します。
参考: MS11-057 KB2559049 更新後 file://プロトコルでリンクしている共有ファイルが開けない
拡張機能を追加します。
"GoogleChromeでリンクをクリックしてもファイルが開かない現象について" を参照してください。
アドオンを追加します。
Dockerコンテナによるシステム構成
docker create --name db -v /var/lib/mlocate -v /ShareUsers:/ShareUsers:ro busybox
このコマンドではdbコンテナの/varlib/mlocateを外部に晒して、
ホストのShareUsersをdbコンテナにマウントする。
ShareUsersがlocateコマンドをかける対象のディレクトリ。
docker run --name app\
--volumes-from db\
-e UPDATEDB_PATH=/ShareUsers/<path to the db root>\
-e OUTPUT=mlocatepersonal.db\
u1and0/upadtedb
このコマンドではdbコンテナのボリュームを参照し、
updatedbをかけるパスをUPDATEDB_PATHで指定している。
dbでマウントしているのでこのコンテナで再度マウントする必要はない。
環境変数OUTPUTは出力するファイル名を指定する。
ディレクトリは/var/lib/mlocateに固定される。
docker run --name web --volumes-from db u1and0/locate-server [OPTIONS]
docker run --name web --rm -t\
--volumes-from db\
-e TZ='Asia/Tokyo'\
-e LOCATE_PATH='/var/lib/mlocate/mlocatepersonal.db:/var/lib/mlocate/mlocatecommon.db'\
-p 8081:8080\
u1and0/locate-server -s -r '\\DFS' # オプションのみ
TZを指定しないとDBの更新日時がGMTになってしまう。
LOCATE_PATHはappコンテナで指定したパスの数だけ:で区切って記述する。
u1and0/locate-serverコンテナはENTRYPOINTで動くのでコンテナの指定後はオプションのみを記述する。
$ docker inspect --format='{{range .Config.Env}}{{println .}}{{end}}' web
TZ=Asia/Tokyo
LOCATE_PATH=/var/lib/mlocate/mlocatepersonal.db:/var/lib/mlocate/mlocatecommon.db:/var/lib/mlocate/mlocatecommunication.db
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
LANG=C.UTF-8
docker run --name personal --volumes-from db\
-e TZ='Asia/Tokyo'\
-e UPDATEDB_PATH=/ShareUsers/UserTokki/Personal\
-e OUTPUT=mlocatepersonal.db\
-d u1and0/updatedb
LOCATE_PATHの内容を変更したものを再度作成( run )する
2.1. docker stop web
2.2. docker rename web web_old # 今まで使っていたコンテナを退避(バックアップ)
2.3. 新しい環境変数を設定したコンテナをrun `docker run ... -e LOCATE_PATH="..."``既知のバグ報告。
内部的にString.ReplaceAll()を使用しているため。
gocate -- -S を使用せず、locate -Sd "dbpathのファイル" を使用するように変更locate-server -P [NUM]を実装しました。-P 1以外の指定で検索されないときがあります。man xargs の -Pオプションを参照してください。locate -Sの結果にerrorがあった場合の挙動を加えました。リンク右端の"<<"をクリックすると、そのファイルがあるフォルダがファイルエクスプローラーにて開きます。
Content type
Image
Digest
sha256:00ce11f29…
Size
51.6 MB
Last updated
6 months ago
docker pull u1and0/locate-server