AN HTTP Server の ISAPI 対応状況
Version 0.9 beta 5c
1997年12月06日
中田 昭雄
nakata@st.rim.or.jp
ISAPI 特に PerlIS を使うことにより、CGI/SSIの動作が速くなります。
そのため(だけ)に組み込んでみました。
PWSのない Windows95 で、PerlISをインストールすると IIS がない、といってインストールが中止されますが、
それはそれで大丈夫です。
- An HTTP Server の ISAPI 対応
- GetServerVariable(), WriteClient(), ReadClient() に対応。
- ServerSupportFunction() は以下のリクエストに対応。
- HSE_REQ_SEND_RESPONSE_HEADER
- HSE_REQ_SEND_URL_REDIRECT_RESP
- 現在使えるDLL
- サーバーサイドクリッカブルマップ(imagemap.dll, htimage.dll)
- dll は、cgi-bin ディレクトリにあります。
- Options/General で Use ISAPI をチェックすれば exe の代わりに dll を使います。
- Perlスクリプト(PerlIS.dll)
- PerlIS.dll は別途入手し、perl.exe と同じディレクトリにインストールしてください。
- perl.exe の代わりに PerlIS.dll を使用するには、Options/General で Use perlIS をチェックしてください。
- Perlスクリプトにいくつかの制限があります。詳細は下記を参照してください。
- テスト版バッチファイル用DLL(cmdIS.dll)
- cmdIS.dll は、scripts ディレクトリにあります。
- echo, echob, set, type にのみ対応。echob は、改行のみを出力します。
他のコマンド、パイプ、リダイレクト、外部コマンドは使えません。
いずれ、外部コマンド以外には対応する予定。
- cmdIS.dll は SSIでは使えません。
- PWSに付属の counter.dll も動きます。
- PWSに付属の counter.dll は、C:\Webshare\Scripts にあります。
- Perlスクリプト使用上の注意
- 拡張子は .pl と .cgi です。
- SSI, CGI で使用できます。
- #exec cgi= では、print "Content-type: text/html\n\n" を忘れないようにしてください。
- #exec cmd= で引数をつけると、引数は QUERY_STRING に入ります。$ARGV[0] などの引数としては受け付けません。
- PerlIS の制限
- パイプ入出力は使えません。
標準入力からの読み込みはできるだけ
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'})
を使う方がよいようです。
- カレントディレクトリを変える操作はできるようですが、避けた方がよいようです。(httpd が動くディレクトリが変更されます。)
- バッククオート, system( ), exec( ) などによる外部プログラムの実行はできません。無視されるようです。
- Location: を含むヘッダを返すときは、
初めに "HTTP/1.0 302 Found\n" を出力(print)してください。
そうしないと、"HTTP/1.0 200 OK\n" になってしまいます。
実例
ISAPI、PerlIS 関連リンク