Safariってタブブラウザだったのか! (今さら気付いた)
IPv6サポートは、DNSに両方のエントリがある場合はIPv4優先でIPv4で接続失敗したら失敗で終了、というのがデフォルトの動作。 IPv6優先にする方法はmacosxhintsに書いてあった。
これでSafariから http://www.kame.net の亀が踊る。
…けど再起動したら戻ってしまった。デフォルトの動作を変える方法はどうやるんだ。
オライリーのRADIUS本は、 FreeRADIUSベースで説明をしている役に立つ本だった。 が、外部プログラムによる認証については結局何も触れられていない。ソースとにらめっこしながら外部プログラムによる認証の実験をした。
今回は認証するだけなので、認証に成功した場合にユーザによってRADIUS属性を追加したりするような処理はしない。 位置的にはPAPやCHAPと同じような処理をさせる設定にした。
radiusd.confに以下の部分を追加。
modules {
...
exec hogeauth {
wait = yes
program = "/local/bin/hogeauth"
input_pairs = request
}
}
authenticate {
...
Auth-Type HOGEAUTH {
hogeauth
}
}
usersの先頭に以下の部分を追加。
DEFAULT Auth-Type := HOGEAUTH
Service-Type = Framed-User,
Framed-Protocol = PPP,
Framed-IP-Address = 255.255.255.254,
Framed-IP-Netmask = 255.255.255.255,
Idle-Timeout = 3600
Fall-Through = Yes (失敗した場合に別の認証方式も試す場合)
/local/bin/hogeauthはとりあえずリクエストの内容をログに取るだけ。
#!/usr/bin/perl
open OFP,">>/tmp/hogeauth.log";
foreach $var (sort(keys(%ENV))) {
$val = $ENV{$var};
$val =~ s|\n|\\n|g;
print OFP "${var}\t${val}\n";
}
print OFP "\n";
close OFP;
exit(0); # success
# exit(1); # fail
取ったログを調べると、以下のようにクオートされた文字列が渡されていた。
USER_NAME "id" USER_PASSWORD "password"
というわけでこのような場合の外部プログラムの仕様は以下のようになっているようだ。
Apacheにおけるmod_perlみたいなのもある。rlm_perl Documentation