どうやら DHCP にはたくさんのオプションがあるらしく、
ISC の DHCP サーバにはそれらがちゃんと実装されている様子。
というわけで、DHCP のオプションを使って遊んでみることにしました。
今回の遊びの目的は、
DHCP を用いて、クライアントの Web ブラウザのホームページを無理矢理変更してやる、というもの。
DHCP サーバ側には、/etc/dhcp3/dhcpd.conf をいじって、
options www-server "www_server_address"
を追加。
DHCP クライアント側についても、/etc/dhcp3/dhclient.conf をいじって、
www-server オプションをゲットしてくるように設定。
以上で、www-server オプションのやりとりはうまくいくわけですが、
これだけだと、やりとりされた情報をうまく利用できません。
これらの情報については、
$ man dhclient-script
をみると書いてあるとおり、スクリプトの変数に格納されるそうな。
その変数の名前は、DHCP オプションの頭に $new_ をつけて、ハイフンをアンダースコアに変更したものらしい。
つまり
www-server ==> $new_www_server
smtp-server ==> $new_smtp_server
みたいになるらしい。
ってなわけで、少しスクリプトを書いてみました。
スクリプトは /etc/dhcp3/dhclient-enter-hooks.d/ の下に置けば、dhclientが自動で実行してくれます。
ファイル名も適当で大丈夫。
以下がそのスクリプト。
make_firefox_homepage() {
if [ -z $new_www_server ]; then
return
fi
pref_file=`find /home/*/.mozilla/firefox/*default/ -maxdepth 1 -name "prefs.js"`
echo $pref_file
echo "user_pref(\"browser.startup.homepage\", \"http://"$new_www_server"/\");" >> $pref_file
}
make_firefox_homepage
このスクリプトは、Ubuntu において Firefox の設定ファイルが、
$HOME/.mozilla/firefox/*default/pref.js
であることを利用したスクリプトなので、他のOS、ブラウザでは動かない可能性が大です。
使う場合は適当に変更することが必要だと思われます。
他のオプションについても同様に利用すればいいっぽいです。
なんだ、結構簡単じゃん。