SSI(Server-Side Include)機能を提供します。 本モジュールを利用する場合は、同時に、 環境変数設定モジュールもロードする必要があります。 SSI モジュールはフィルタとして動作するモジュールです。 そのため、CGI プログラムの出力が、 SSI のメディアタイプ(text/x-server-parsed-html)である場合、 SSI の処理が行われます。
以下に Wyvern で利用可能な SSI の書式を示します。
#fsize コマンドなどで表示される ファイルサイズのフォーマットを指定します。 〜 にbytes を 指定するとバイト単位で、 addrev を指定すると Bytes, KBytes, MBytes などの適切な単位で表示されるようになります。
#echo コマンドなどで時刻を表示する際の フォーマットを指定します。 〜 には strftime(3) 内に記述されている '%' で始まる特別な表記を指定します。
指定したファイルを読み込んで表示します。 file="〜" の 〜 にはファイル名を指定します。 現在の URL からの相対パスによるファイル名の指定となります。 「..」による相対パスおよび 「.」と「/」で始まるはファイル名は指定できません。
virtual="〜" の 〜 には仮想パス名を指定します。 仮想パス名は、「http://サーバ名/パス名」の「/パス名」の部分か 「http://サーバ名/~ユーザ名/パス名」の「/パス名」の部分です。
指定した環境変数の値を表示します。 〜 には次表に示す環境変数名を指定します。
SSI の #echo 書式で利用できる環境変数一覧 環境変数 説明 DOCUMENT_NAME 現在の文書のファイル名 DOCUMENT_URI 文書の仮想パス名(/docs/tutorials/foo.shtml など) QUERY_STRING_UNESCAPED クライアントから送信された検索用文字列 DATE_LOCAL 現在の時刻(ローカル時刻) DATE_GMT 現在の時刻(グリニッジ標準時) LAST_MODIFIED 現在の文書の最終更新時刻 時刻の表示は、 <!--#config timefmt="..."--> で指定したフォーマットに従います。
指定したファイルのサイズを表示します。表示のフォーマットは <!--#config sizefmt="..."--> で指定した内容に従います。 file="〜" と virtual="〜" の内容は #include コマンドと同様です。
指定したファイルの最終更新時刻を表示します。表示のフォーマットは <!--#config timefmt="..."--> で指定した内容に従います。 file="〜" と virtual="〜" の内容は #include コマンドと同様です。
〜で指定したコマンドを実行し、その結果を表示します。 引数の指定は、空白で区切って指定します。
<!--#exec cmd="/bin/ls -l /home/kouichi/"-->コマンド名は、必ず絶対パスで指定しないと正常に動作しないので、 注意してください。 コマンド実行時の環境変数は、 環境変数設定モジュールで示した内容が渡ります。
また、 &;`'\"|*?~<>^()[]{}$\n\r などの シェルのメタ文字を含むコマンドは、 セキュリティ上危険であると判断して実行しません。 同時に、<security-log> で指定されたファイルにコマンドが記録されます。
次のような既述は問題があり、コマンドは実行されません。
- <!--#exec cmd="/bin/cat /etc/passwd|mail kouichi@MysticWALL.COM"-->
- <!--#exec cmd="mail kouichi@MysticWALL.COM < /etc/passwd"-->
設定ファイルへの記述例: <wyvern> ... <module> ... <path>/usr/local/wyvern/modules/mod_env.so</path> <path>/usr/local/wyvern/modules/mod_ssi.so</path> ... </module> ... </wyvern>