Book

サンプルソースコード

By Hiroyuki OYAMA Tue Jul 29 19:43:19 2003

このページでは「Apacheモジュールプログラミングガイド」(技術評論社 ISBN4-7741-1799-4 2003/08)の各章で使用しているサンプルソースコードをまとめています。

使用条件など

各ソースコードはBSDライクなライセンスの元、自由に参照・修整・配布することができます。広告条件などの制約は設けていません。詳しくはパッケージのLICENSEファイルを参照してください。
各ソースコードはMac OS X 10.1.5で開発し、FreeBSD 4.7-STABLE、Linux 2.4.2で動作確認を行っています。また、各ソースコードは書籍のサンプルを目的に記述しているため、実際の運用には適さない場合があります。

ダウンロード: ap_mod_prog-src-1.1.tar.gz
書籍の詳細: WebエンジニアのためのApacheモジュールプログラミングガイド

内容と解説

第1章 イントロダクション

src/benchmark/benchmark.pl
src/benchmark/benchmark.c
src/benchmark/benchmark.php
src/benchmark/Benchmark.java
src/benchmark/mod_benchmark/mod_benchmark.c
現在時刻を"<li>Mon Jun 02 03:00:18 JST 2003</li>\n"の形式に50回整形し、クライアントに送信する。
CGI(Perl, C)、PHP、Java Servlet、mod_perl(Apache::Registry)、Apache moduleそれぞれの環境でのベンチマークテストに使用。

第2章 Hello World!

src/helloworld/mod_helloworld.c
apxsコマンドで作成したApacheモジュールの雛型。

第3章 Apacheの提供する機能

src/sendfile/mod_sendfile.c
ブラウザに/etc/servicesファイルの内容を送信する。

第4章 コンテンツハンドラ

src/reqinfo1/mod_reqinfo.c
src/reqinfo2/mod_reqinfo.c
リクエストの内容やクライアントの情報を取得・表示する。
 src/parse_param/mod_parse_param.c
Query-stringなどで送信されたリクエストパラメータを解析し、取得・表示する。
 src/ext_redirect/mod_ext_redirect.c
HTTPのリダイレクションメカニズムを使用して、クライアントを別のURLに転送する。
 src/int_redirect/mod_int_redirect.c
Apacheの内部転送メカニズムを使用して、クライアントに別のURIのコンテンツを送信する。

第5章 設定ファイルのカスタマイズ

src/simple_conf/mod_simple_conf.c
Apacheの設定ファイルで使用できるディレクティブ SetMessage を新たに定義して、設定値を参照する。

第6章 その他のリクエストフェーズ

src/agentdir/mod_agentdir.c
リクエストしてきたクライアントのUser-Agentヘッダに基づいて、ドキュメントルートを動的に切り替える。ap_translate_nameフェーズ(URIから実ファイルへの変換)のデモ。
 src/access_timeout/mod_access_timeout.c
src/access_timeout/settimer.cgi
HTTP Cookieを使用して、一定時間アクセスを許可する。ap_check_accessフェーズ(アクセス制御)のデモ。
 src/auth_badpasswd/mod_auth_badpasswd.c
ユーザ名とパスワードが同一の場合に認証する。ap_check_user_idフェーズ(ユーザIDの確認)のデモ。
 src/auth_regex/mod_auth_regex.c
指定した正規表現に一致するユーザへのアクセスを許可する。ap_check_authフェーズ(アクセス権の確認)のデモ。
 src/mime_skel/mod_mime_skel.c
Content-Type, Content-Language, Content-Encoding, コンテンツハンドラを設定する。ap_find_typesフェーズ(コンテンツタイプの決定)のデモ。
 src/guess_charset/mod_guess_charset.c
htmlファイルの漢字コードを自動判別し、Charsetオプションを付加する。ap_run_fixupsフェーズ(コンテンツ生成直前の微調整)のデモ。
 src/log_header/mod_log_header.c
送受信しているHTTPヘッダを、専用のログに出力する。ap_log_transactionフェーズ(ログの出力)のデモ。

第7章 コンテンツハンドラ応用

src/conditional_request/mod_conditional_request.c
コンテンツの更新日時等に基づいた条件リクエストを処理する。
 src/mysql_connect/mod_mysql_connect.c
libmysqlclientライブラリを使用して、MySQLに接続する。ビルドに際してMySQLの開発パッケージが必要。
 src/mysql_keep_connect/mod_mysql_keep_connect.c
MySQLに永続的に接続する。ビルドに際してMySQLの開発パッケージが必要。
 src/pg_connect/mod_pg_connect.c
libpqライブラリを使用して、PostgreSQLに接続する。ビルドに際してPostgreSQLの開発パッケージが必要。(このコードは本文中では使用していない)
 src/pg_keep_connect/mod_pg_keep_conect.c
PostgreSQLに永続的に接続する。ビルドに際してPostgreSQLの開発パッケージが必要。(このコードは本文中では使用していない)
 src/pluginclude/mod_pluginclude.c
src/pluginclude/echo.c
src/pluginclude/dir.c
src/pluginclude/httpget.c
HTMLに埋め込んだコマンドを解釈し、データを動的に埋め込みながら送信する。ダイナミックリンクインターフェイスを使用してモジュールへ機能をPluginするデモ。

第8章 セキュリティ

src/encrypt_store/mod_encrypt_store.c
クライアントから送信されたメッセージを、指定された秘密鍵で暗号化し格納する。opensslのlibcryptoライブラリを使用し、対称鍵暗号で暗号・復号する。ビルドに際しては OpenSSL の開発パッケージが必要。
 src/access_timeout_hmac/mod_access_timeout_hmac.c
HTTP Cookieを使用して、一定時間アクセスを許可する。第6章で使用したmod_access_timeoutモジュールのHMAC版。opensslのlibcryptoライブラリを使用する。ビルドに際しては OpenSSL の開発パッケージが必要。

第9章 Apache 2.0.xにおけるモジュールの開発

src/hello_apache2/mod_hello_apache2.c
Apache 2.0.x付属のapxsコマンドで生成した、Apacheモジュールの雛型。

Appendix libapreq - Generic Apache Request Library

src/send_cookie/mod_send_cookie.c
libapreqライブラリを使用してHTTP Cookieを整形・送信する。ビルドに際しては libapreq ライブラリが必要。
 src/get_cookie/mod_get_cookie.c
libapreqライブラリを使用してHTTP Cookieを受信・解析する。ビルドに際しては libapreq ライブラリが必要。
WebエンジニアのためのApacheモジュールプログラミングガイド

ApacheをHackする!
モジュールプログラミング強烈初体験!!
定価: 2,919円(税込)
ISBN: 4-7741-1799-4

Apache HTTP Server Dev

Apache Modules

Apache Source Chage

Apache Announce

Apache Users

Apache Tech


Home > Book > サンプルソースコード