前エントリでTeraStationにたまってるDivXファイルを、なんとかHTMLリンク一覧としてHTTP共有できると、DLNAとかより便利かも、ということに気付いたので、早速チャレンジしてみました。
■CIFSでマウントする
TeraStationをLinuxマシンでマウントするには、とりあえずSMB、FTP、ちょっとゴニョってNFSという選択肢があるわけですが、とりあえず手軽そうなSMBを試してみたところできない。調べてみると、CentOS5ではsmbfsやsmbmountの代わりにCIFSというあたらしいWindowsファイル共有プロトコルを使えば良いとわかりました。
mount -t cifs -o user=<ユーザ名>,password=<パスワード> //<TeraStation名/<共有名> /mnt/terastation/
って感じでOKでした。
あとは、このフォルダをApacheのドキュメントルート下に適当にシンボリックリンクして、BASIC認証をかけます。
ただ、これだけだと、リストは取得できるんですが、動画ファイルにアクセスするとエラーになってしまいます。ターミナルからcpなどでコピーはできるんですが、Apacheを経由するとダメ。
これは
EnableSendfile Off
で解決。パフォーマンス向上のための機能のようなので、当該ディレクトリのディレクティブ内に設定するのが良いでしょう。
■Apacheのインデックスリストをカスタマイズして利用
さて、これでアドレスでディレクトリ名を指定すれば、(そのフォルダにindex.htmlが無いので)Apacheが生成するインデックスリスト(ファイル一覧画面)が表示され、PS3からそれをクリックして再生できるのが確認できました。しかし2バイト文字が文字化けしています。ブラウザの設定でUTF-8にすれば正常に表示されるんですが、ページ遷移するたびにするのは面倒だし、それこそ実家向けには難しすぎます。なんとかインデックスリストの文字コードを指定する方法を模索して、
IndexOptions Charset=UTF-8
でいけることを突き止めました。これも当該ディレクトリ内だけで良いんでしょうけど、特に他で弊害もでなさそうだったので、グローバルに指定しておきました。これで、きちんと日本語ファイル名で表示でき、先の実験でダメだったPS3からの再生/DLもなぜか出来てしまいました。
ついでに、インデックスリストをカスタマイズするオプションを色々見つけたので、最終更新日付を非表示にする、.AVIファイルのdescriptionに「DivX/etc Video Files」と表示する、Thumb.dbを隠す、などカスタマイズ。外部スタイルシートも指定できました。
ざっとこんな感じ。
IndexOptions Charset=UTF-8
AddDescription "DivX/etc Video File" .avi
<Directory /xxxxx/xxxxx/video/>
Options FollowSymLinks Indexes IncludesNOEXEC
AllowOverride None
IndexOptions SuppressLastModified SuppressHTMLPreamble HTMLTable
IndexIgnore *.db *~
IndexStyleSheet "video_list.css"
EnableSendfile Off
</Directory>