AIRでWebServerを作ってみた

airwebserver_thumbWebServerってどういう風にできてるの?って思ったので作ってみた。
やることといったら、リクエストに応じてファイルをさばくこと、Cookie、Basic認証、POST、CGIくらいのものだけど。

airwebserver

ファイルさばき

ディレクトリのパスの最後に/を入れずにリクエストが来た場合に、/とindex.htmlを補完することになるのだけれども、その手順を確認できた。
サーバーは/を補完して、ブラウザに301で返す。出直して来い。
ブラウザはサーバーから指定されたURLに改めてリクエストしなおす、てな具合。

Cookie

サーバーサードのCookieを使う経験が少なかったので良い勉強になった。

Basic認証

Basic認証はSHA-1のみに対応。
.htaccessと.htpasswdを確認して、idとpwが一致しないとファイルを返さない。

暗号(Hash)はDESを使いたかったけど、as3cryptoだと、DESもMD5もうまく使いこなせなかった。
SHA-1だと行けたので、それで実装。

DESやMD5のsaltの使い方とかの話は読むと面白い。

今回のデモファイルでは、id:abc、pw:1234としている。

POST,CGI

POSTの受け取り自体は問題ないけど、CGIがサーバーとどう連携するのかを調べ切れなかった。コレやりだすと時間がかかりそうだったので、またの機会に。
今回は、C#で作ったexeをNativeProcessで引数渡しで起動、帰り値は標準入出力で受け取った。
cgi側(sakasa.exe)は、受け取った文字列を前後入れ替え、htmlをくっつけて返している。

GETでの受け取りの実装は忘れてた。(2015/2/16実装済み)

ファイル一式

https://github.com/umhr/AIRWebServer

参考

as3crypto – Cryptography library for ActionScript 3, including partial TLS 1.0 support – Google Project Hosting

STUDY-NET おぼえがき -【ActionScript】as3cryptoを使用してハッシュ値を取得

[AdobeAir][AS3]Windowsネイティヴインストーラーの作成 | MiLKySHADe * ミルキーシェイド

小悪魔女子大生のサーバエンジニア日記 » Blog Archive » DESとは?

ライブラリ|SBINS Developer Center