SSIモジュール

SSI(Server-Side Include)機能を提供します。 本モジュールを利用する場合は、 同時に、 環境変数設定モジュールもロードする必要があります。 SSI モジュールはフィルタとして動作する特別なモジュールです。 そのため、CGI プログラムの出力が、 SSI のメディアタイプ(text/x-server-parsed-html)である場合、 SSI の処理が行われます。

以下に Wyvern で利用可能な SSI の書式を示します。

<!--#config sizefmt="〜"-->

#fsize コマンドなどで表示される ファイルサイズのフォーマットを指定します。 bytes を 指定するとバイト単位で、 addrev を指定すると Bytes, KBytes, MBytes などの適切な単位で表示されるようになります。

<!--#config timefmt="〜"-->

#echo コマンドなどで時刻を表示する際の フォーマットを指定します。 には strftime(3) 内に記述されている '%' で始まる特別な表記を指定します。

<!--#include file="〜"-->
<!--#include virtual="〜"-->

指定したファイルを読み込んで表示します。 file="〜" にはファイル名を指定します。 現在の URL からの相対パスによるファイル名の指定となります。 「..」による相対パスおよび 「.」と「/」で始まるはファイル名は指定できません。

virtual="〜" には仮想パス名を指定します。 仮想パス名は、「http://サーバ名/パス名」の「/パス名」の部分か 「http://サーバ名/~ユーザ名/パス名」の「/パス名」の部分です。

<!--#echo var="〜"-->

指定した環境変数の値を表示します。 には次表に示す環境変数名を指定します。

SSI の #echo 書式で利用できる環境変数一覧
環境変数説明
DOCUMENT_NAME 現在の文書のファイル名
DOCUMENT_URI 文書の仮想パス名(/docs/tutorials/foo.shtml など)
QUERY_STRING_UNESCAPED クライアントから送信された検索用文字列
DATE_LOCAL 現在の時刻(ローカル時刻)
DATE_GMT 現在の時刻(グリニッジ標準時)
LAST_MODIFIED 現在の文書の最終更新時刻

時刻の表示は、 <!--#config timefmt="..."--> で指定したフォーマットに従います。

<!--#fsize file="〜"-->
<!--#fsize virtual="〜"-->

指定したファイルのサイズを表示します。表示のフォーマットは <!--#config sizefmt="..."--> で指定した内容に従います。 file="〜" と virtual="〜" の内容は #include コマンドと同様です。

<!--#flastmod file="〜"-->
<!--#flastmod virtual="〜"-->

指定したファイルの最終更新時刻を表示します。表示のフォーマットは <!--#config timefmt="..."--> で指定した内容に従います。 file="〜" と virtual="〜" の内容は #include コマンドと同様です。

<!--#exec cmd="〜"-->

〜で指定したコマンドを実行し、その結果を表示します。 引数の指定は、空白で区切って指定します。

  <!--#exec cmd="/bin/ls -l /home/kouichi/"-->

コマンド名は、必ず絶対パスで指定しないと正常に動作しないので、 注意してください。 コマンド実行時の環境変数は、 環境変数設定モジュールで示した内容が渡ります。

また、 &;`'\"|*?~<>^()[]{}$\n\r などの シェルのメタ文字を含むコマンドは、 セキュリティ上危険であると判断して実行しません。 同時に、ErrorLog で指定されたファイルにコマンドが記録されます。

次のような既述は問題があり、コマンドは実行されません。

  • <!--#exec cmd="/bin/cat /etc/passwd|mail kouichi@MysticWALL.COM"-->
  • <!--#exec cmd="mail kouichi@MysticWALL.COM < /etc/passwd"-->