==================================================== 【ソフト名 】WebServer 【バージョン】Ver 1.0b3104 【著作権  】つーたん 【作者HP 】http://www.eonet.ne.jp/~tsu-tan/ 【動作環境 】Windows 98/ME/2000/XP 【開発言語 】Hot Soup Processor Ver2.61 【ソフト種別】フリーソフト ==================================================== ■概要  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ HSP製のWebサーバーです。 (IISとかApacheよりは使いづらいですが...(´Д` ;) ■本ソフトウェアのファイルの構成  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ 本ソフトウェアのファイルの構成は以下の通りです webserver.exe ソフト本体 Readme.txt マニュアル&ヘルプ jcc.dll 拡張プラグイン pcbnet.hpi 拡張プラグイン hspext.dll 拡張プラグイン mod_getenv.as サンプルスクリプト uptest.as サンプルスクリプト CGI.as サンプルスクリプト $set.ini 設定ファイル(詳しくは「■細かな設定」を見てください。) ■アンインストールについて  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ 本ソフトはレジストリの書き換えなどは行っていません。 ソフトが不要になったらフォルダごと削除してください。 ■免責・著作権・転載条件・サポート  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ 本プログラムの著作権はつーたんに帰属します。 jcc.dllはANTARESさんに著作権があります。 pcbnet.hpiはPCBさんに著作権があります。 hspext.dllはおにたまさんに著作権があります。 なお、再配布や転載等については事前にメール等で必ず連絡を下さい。 バグやご意見などはメール(tsu_tanweb@anet.ne.jp)やWeb上にて受け付けております。 作者はこれの使用によって生じたいかなる損害につきましても作者は責任を負わないものとします。 ■使用方法  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ public_htmlフォルダにHTMLファイルなどを入れて...起動。 (サンプルとして最初から入れてあります) そこに書かれているURLにファイルがアップロードされています。 基本的にソフト側は設定なし。 なお、インターネット上に自宅サーバとして公開したい場合はルータなどを設定したら普通に公開されます。 ポート番号は基本は80番です。ただし、使用されていた場合は番号が自動的にずれます。(80番以降になっていきます) ■細かな設定(上級者用)  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ 内部の設定するには... 1.「$set.ini」というファイルを「set.ini」というファイル名に変更 2.「set.ini」をメモ帳などで開いて設定 注意:set.iniは自動作成はされません。 ================================================================================================= ↓以下は参考資料など...(汗 ■主な機能  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ○HTTPコマンド関係  ・HTTP 1.0GET/POST対応、ただし1.1のKeep-Aliveは未対応  ・アスキーモード(Text)/バイナリモード(binary)対応  ・200,301,400,403,404,500は対応 ○関数関係  ・サーバー独自の関数命令   関数のヘルプは、「http://サーバーのIP/$help_command」で表示します。 ○そのほか  ・自動空きポート検索機能(port80~)  ・高速起動 ○HSP製のCGI(Win32コンソール)関係  ・CGI対応(Win32の)   サンプルとして、BBSCGI、アップロードチェックCGIをつけています。  ・[cgi-bin]フォルダ下位アクセス制御機能  ・環境変数&コンソール対応 ただし、標準入力ができません。なので環境変数QUERY_STRINGを参照してください ○ネットワーク(機能/ソケット)関係  ・大容量データ対応(分割送信方法採用)  ・複数コネクション接続可能(16台)  ・コネクション強制切断対応  ・コネクション接続優先度を接続毎に変更 ■アクセス制限  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ○条件なし  htaccess,htapasswdの拡張子があるファイルはブラウザからのアクセス禁止 ○条件  ◇[cgi-bin]フォルダ下位   txt,log,ini,dat,dll,hpiの拡張子があるファイルはブラウザからのアクセス禁止   cgi,exeは、サーバ側で実行、結果表示 asp,plの拡張子があるファイルはサーバが対応していないため500番エラーを返します。 ■拡張子のないファイルについて...  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ 基本的に拡張子のないファイルは置かないでください。 なぜなら、次の時に困るからです。 例: 「test」という拡張子のないファイルが「root/test」にあり、 「test」というフォルダが「root/test/」にあるとき... ブラウザーで「http:///test」や「http:///test 」を行ったときは、 「test」というファイルが呼び出されます。 ブラウザーで「http:///test/」や「http:///test/ 」を行ったときは、 「test」というフォルダの中にあるindex.htmが呼び出されます。 ■最後のファイル,フォルダ名に空欄があるときついて...  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ 基本的にファイル名の最後に空欄をつけないでください。 なぜなら、次の時にややこしくなります。 例: 「test 」という拡張子のないファイルが「root/test」にあるとき... ブラウザーで「http:///test 」や「http:///test」を行ったときは、 「test」というファイルが呼び出されます。 (なので上記に書いてある「test 」というファイルは呼び出されません。) 「test 」というフォルダが「root/test /」にあるとき... ブラウザーで「http:///test /」や「http:///test/」を行ったときは、 「test」というフォルダの中にあるindex.htmが呼び出されます。 (なので上記に書いてある「test 」というフォルダの中にあるindex.htmは呼び出されません。) ※ただし、間に空欄がある場合などは正しく呼び出されます。 例:「aa aa.txt」「b a.htm」「b bssja.mid」 ■CGI  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ 一般的に使われているPerlなどはまだ対応してません。m(__)m (コンソール型のCGIを除く。) また、CGIは[cgi-bin]フォルダ下位においてください。 そのほかにおくとふつうにダウンロードができてしまします。 なお、[cgi-bin]フォルダ下位はlog,ini,dat,dll,hpi,exeの拡張子があるファイルはアクセス禁止に設定されています。 (サーバによるCGIからの呼び出しは可能です。) ※サンプルスクリプト(CGI.as/uptest.as)を置いています。  これをHSPでコンソールモードでコンパイルして拡張子exeをcgiに変更して試してみてください。 ■CGI(Win32)の規格  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ コンソールアプリならOKです。(HSPで作成の時は、コンソールモードで出力してください。) その場合は一様拡張子「exe」を「cgi」に変えておいてください。 例:DOSのファイルなど.... 一様、だいたいの流れを書いておきます 1.環境変数QUERY_STRINGにクライアントから来たデータがデコードされずに送られます。   使うときはCGI側でデコードしてください。   また入力待ちになるようなコンソールはつかえません。(標準入力が対応していません) 2.実行できる時間は約350msです。これ以内に応答が帰ってこなかった場合は、   サーバー側は「応答なし」として処理されます。(クライアントには500番が表示されます。)   また、処理が終わっているのにもかかわらず終了されていない場合は、「処理中」と判断され、   350msが過ぎるとクライアントには500番が表示されます。 3.HTMLの出力はコンソール画面に出力してください。   また、最後は必ず終了するようにしてください。   ※なお、最大出力サイズは600000byteとなっています。   ※出力をHTMLで表示されるときには必ず「Content-type: text/html」から「」まで出力してください。 ■対応している環境変数  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ 主にこれだけの環境変数があります。 SERVER_NAME・・・サーバの名前(Tsu-tan Server/xxx) SERVER_PROTOCOL・・・サーバのプロトコル(HTTP/1.0) SERVER_SOFTWARE・・・サーバのソフト名(Tsu-tan Server/xxx) QUERY_STRING・・・GETによって?以降に送られるデータ。ただしPOSTの時も書き込みます。 REQUEST_METHOD・・・サーバーへのリクエスト要求方法(GET/POST) CONTENT_LENGTH・・・POSTによって送られてきた文字の量。このソフトではPOSTの時にサイズを書き込みます。 ■アップロードのフォルダを変更する場合  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ 起動時に[Shift]キーをおしながら起動してください。 そうするとフォルダ選択ダイアログがでますのでそこで変更してください。 ■サーバ設定のMIMEタイプ  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ・MIME [text/html]  .html .htm .xml ・MIME [image/gif]  .gif ・MIME [image/jpeg]  .jpg .jpeg ・MIME [image/x-png]  .png ・MIME [video/avi]  .avi ・MIME [video/mpeg]  .mov .wma .wmv ・MIME [application/x-midi]  .mid .midi ・MIME [application/x-shockwave-flash]  .swf ■今の問題  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ・処理速度が遅い。 ・ヘッダー部のファイル更新情報がまだ完成していない。(月、曜日が送られていません) ・Webサーバソフト(パイプ処理)→CGIへの標準入力の問題。どうしてもCGI側が入力待ちになってサーバがハングアップしてしまう。 ・Keep-Aliveに未対応 ・環境変数の数が少ない ■履歴  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ 1.0b3304・・・バグ修正・ソケットの切り替えアルゴリズムを変更・設定できるようにした 1.0b3303・・・ちょっと修正 1.0b3302・・・公開 以前のモノはバグ修正などで...