httpd in awk
数年前に, ASCII刊
「インターネットを256倍使う本」の /bin/sh httpd
(shttpd) に触発されて, awk でも簡単なWebサーバ ahttpd
を書いてみました.
shttpd ではさすがに全部 /bin/sh で行うのは無理なので
(誰か zsh で書きませんか :)), 内部で sed などのコマンドを起動していますが,
ahttpd では基本的に awk の中だけで処理しています.
まったくの遊びですが, 外に接続しない環境など, apache や cern httpd を
入れなくてもお手軽に使えますのでどうぞ。:)
- ソースコード: ahttpd (awk 151行)
- インストール:
使うポート名をたとえば 8002 とします.
- スクリプト中の BEGIN の中の変数を適当に設定する.
- /etc/inetd.conf に
ahttp stream tcp nowait root /usr/local/sbin/ahttpd ahttpd
/etc/services に
ahttp 8002/tcp # awk http service
の行を書き, % kill -HUP <inetd pid> で inetd を再起動する.
- http://yourhost:8002/~me/ などでアクセスできます.
一応, 簡単なセキュリティ対策もあります (../../etc/passwd などは不可.)
- trickey な点:
awk のバージョンを得る getversion() ルーチンが多少トリッキーかも
しれません。ypを使っている場合は, /etc/passwd を
解析する getpwhome() の代わりに getypwhome() を使って下さい。
- 動作確認
- gawk 2.15.6
- gawk 2.15.6+multibyte extension 1.04
- gawk 3.0.4+multibyte extension 1.12
で動作確認しています. GNU awk 以外では動かないかもしれません.
関連リンク:
daiti-m@is.aist-nara.ac.jp
Last modified: Wed Apr 26 13:55:26 JST 2000