Mac のApache に mod_bonjour ってモジュールがついていてURLをBonjourで共有できるけど、バグってるから入れ直してみようって

表題通り。元ネタのソースは http://deeperdesign.wordpress.com/2010/06/13/apples-mod_bonjour-is-broken-in-snow-leopard-so-i-fixed-it/ になります

Mac には mod_bonjour ってなApacheのモジュールがついています

www.opensource.apple.com にソースがありますが、Apple製のようですね。 普段 Linux ばっかり触ってるので、OSXの仕様に寄せたモジュールは新鮮です。

ApacheからBonjourを扱えるモジュールです。

デモ

/etc/apache2/other/bonjour.conf をいじることで 任意のURLをbonjourで共有(ブロードキャスト?)できます

下記のような設定を書くと...

<IfModule bonjour_module>
        RegisterUserSite customized-users 
        # "http://<Macのホスト名>/perl というURLがブロードキャストされる
	RegisterResource “hibomaのperl"    "/perl"
</IfModule>

Safariでこんな風↓に表示されます。 なお、予めSafariの設定でBonjourを有効にしてください

実名やら余計なの混じってますが、気にせずに。

DNS/hosts を用意していなくてもホスト名でHTTP接続することができます。

だが、しかし mod_bonjour はバグってる

ところがですね、元ネタ によると 元から入ってるmod_bonjour はバグもちなので, https://github.com/orj/mod_bonjour の修正版ソースを使うと良いようです。バグの内容は、複数の RegisterResource を書いても一個しか反映されないという挙動らしいです。Appleさん...

修正版の mod_bonjour ビルドの手順は下記になります

# githubで更新されたらここのURL変わるので、注意ね
$ wget https://download.github.com/orj-mod_bonjour-ef5af6a.tar.gz
$ tar xvfz orj-mod_bonjour-ef5af6a.tar.gz
$ cd orj-mod_bonjour-ef5af6a

# warning 結構出る。無視
$ make 
$ sudo make install
$ sudo apachectl restart

インストール後、Safariで確認してみましょう

後日談

iOSSafariBonjourに対応しててくれたら便利そだったんですが、そうでもないみたいっですね... 残念です

Bonjour経由で名前解決出来た。Bonjourを使ってるデバイス一覧を取れるUIが無いだけかな