libwrap(tcp_wrapper) の設定を確認するコマンドを書いてみた。 /etc/hosts.allow や /etc/hosts.deny の試し書きをして、それが正しく接続を許可・拒否するかを調べるのに便利かもしれない。 例えば、ホスト hogefuga.masaruyokoi.com から SSH connection が張れるかどうかを検査するには 「check_hosts_access.c -d sshd -n hogefuga.masaruyokoi.com」なんていうふうに実行してみてください。
/* check_host_access.c : evaluate hosts.allow/hosts.deny condition.
*
* Requires:
* libwrap (tcp_wrappers)
*
* How to compile:
* cc check_hosts_access.c -o check_hosts_access -lwrap
*
* How to use:
*
* When check connection will be accepted/denied from a host
* addressed as 192.168.1.2 to the daemon in.telnetd, execcute it as
* following:
*
* ./check_hosts_access -d in.telnetd -a 192.168.1.2
*
* When check with remote host name, specify with -n option.
*
* ./check_hosts_access -d in.telnetd -n a-host-name
*
*
*/
#include <stdio.h>
#include <tcpd.h>
extern char *optarg;
extern int optind, opterr, optopt;
#define printusage() { \
printf("%s -d <daemon name> [-n hostname|-a addr] [-u user]\n", argv[0]); \
exit(0); }
int main (int argc, char ** argv) {
struct request_info req;
char *addr = NULL, *daemon = NULL, *name = NULL, *user = NULL;
int c, result;
opterr = 0;
while ((c = getopt(argc, argv, "a:d:n:u:h")) != -1) {
switch(c) {
case 'a':
addr = optarg;
break;
case 'd':
daemon = optarg;
break;
case 'n':
name = optarg;
break;
case 'u':
user = optarg;
break;
case '?':
if (isprint(optopt))
errx("Unknown option : -%c.\n", optopt);
else
errx("Unknown option character : \\x%x.\n", optopt);
break;
case 'h':
default:
printusage();
}
}
if (daemon == NULL && name == NULL && addr == NULL)
printusage();
if (daemon == NULL) {
printf("daemon name (-d) is not specified.\n");
exit(1);
}
if (name == NULL && addr == NULL) {
printf("client name (-n) and addr (-a) is not specified.\n");
exit(1);
}
request_init(&req, RQ_DAEMON, daemon, 0);
if (name != NULL)
request_set(&req, RQ_CLIENT_NAME, name, 0);
if (addr != NULL)
request_set(&req, RQ_CLIENT_ADDR, addr, 0);
if (user != NULL)
request_set(&req, RQ_USER, user, 0);
result = hosts_access(&req);
printf("daemon=\"%s\" addr=\"%s\" name=\"%s\" user=\"%s\" : %s (%d)\n",
daemon, addr, name, user, result ? "accept" : "deny", result);
}
Shibuya Perl Mongers 1周年記念テクニカルトーク レビューリンク集と配布資料の竹迫良範氏の発表資料「 mod_perl における C10K problem」を読んで知った。 khttpd みたいな全然便利じゃないようなもの使わずに、 Light weight な httpd を実装して、そいつを介して、 mod_perl などのリソース喰いまくる状態の httpd を backend で実行させるっていう手もあるのね。 普段の利用シーンを見ていると、 ESE HTTP Server に実装されている機能だけで十分に使える気がするが。 あ、Basic 認証でなく Digest 認証が欲しいぐらいだな。
Yendotより。2ch の Emacs スレの「括弧が見えないと困るとか入力忘れるとか逝ってる香具師へ。」など。うん、うまくまとまっていますな。
あと、対応する括弧を XEmacs できちんと表示させるために
(paren-activate)
なんて書いてみた。 便利便利。
今日の日本シリーズは雨天順延っすか。
Sun ヤヴァいんじゃないの なんて思ってしまったんだけど、日商岩井が B- だったりするので、まぁ知れているといえば知れている。 ただ、坂道を下るスピードに関しては、日商岩井より Sun のほうが圧倒的に速そうだけど。(笑) その辺のことは S&P 指標には織り込まれているのかなぁ、ちと不明。
ちなみに S&P の格付けに関しては、格付けの種類と定義っていうのが載っているから、それを参考にしてね。
それはさておき、S&Pって McGraw-Hill なんだ、知らなかった。 S&P のページの下のほうに「Standard & Poor's, a division of the McGraw-Hill Companies.」なんて書いてあるし。ちなみに、McGraw-Hill っていうのは、日本では日経BPの前身の会社の日経マグロウヒルっていう会社があって、日経マグロウヒル事件っていうのがあったのです。 それで McGraw-Hill のことを思い出したんだけど。
OpenSSL-0.9.7c の Makefile、だめだめすぎ。 "chmod 644 /usr/lib/pkgconfig" とか、ディレクトリに対して 644 のパーミッションあてたり、 "Modes of DES.7" とかいうスペースの入ったファイル名の manpage をインストールしたり、 もう滅茶苦茶、クソ。
Turbolinux 10 Desktop の Cuick-in のパッケージに Emacs-21.3.50 が収録されていて、これの場合 Mule-UCS がなくても UTF-8 で日本語が書かれたファイルの読み書きができるはすなんだけど、デフォルトの .emacs.el のままでは、UTF-8 の日本語の文字の部分のテーブルが登録されていない。 んで、utf-translate-cjk-mode っていうのを使うと、日本語や中国語の変換テーブルが読み込まれる。 ということで、下記のような内容を ~/.emacs.el に追加した。
(utf-translate-cjk-mode t)
ついでに、対応する括弧を highlight 表示させるために、show-paren-mode も設定した。
(setq show-paren-style 'parenthesis) (show-paren-mode t)
週末はいろいろと疲れた。 金曜日は秋葉原で製品発表があり、そのあと 11:30 ごろまで会社の人たちと飲んでいた。 土曜日は秋葉原のぷらっとホームの店頭で製品解説の兄ちゃんをやっていて、そのあとに SuSE の Mike Fabian の来日記念宴会にいって、KDE ユーザ会の人たちと 11:00 ごろまで飲んでいた。 日曜日は昼から日本酒の蔵元を囲んで試飲会みたいなイベントにいって、14:00 頃まで飲んでいた。 今日は微妙に胃の調子がよろしくない。
Mozilla って KDE3 と Gnome2 のどちらが相性いいのかしらべてみた。 調べた対象は Turbolinux 10 の Mozilla, KDE3, Gnome2 の組み合わせ。
以下、調査中
Gnome2 を実行すると、勝手に自分のところで生成したリソースを xrdb -merge してしまう。 このなかに Xft のリソースを設定するところがあって、こんな値を指定していた。
$ xrdb -query |grep ^Xft Xft.antialias: 1 Xft.dpi: 96.000000 Xft.hinting: 1 Xft.hintstyle: hintmedium Xft.rgba: none
これの Xft.dpi っていうやつによって、Gtk2 Mozilla のフォントのサイズが変わっていることにようやく気づいた。 んで、Gnome2 の [デスクトップ設定] の [フォント] の [フォントのレンダリング形式] の部分を変更すると、リソースの antialias や hintingstyle、rgba の値が変更されるようになっている。 そして、Mozilla の起動時の段階での設定が Mozilla 実行中にずっと使われているのは、このリソースを起動時にのみ読んでいるためだということもようやく理解した。
一応それなりに設定が継承されているのでそれなりの統一感というか出来映えだとは思うけど、設定が変更されると同時に Mozilla にも反映されたらカッコイイなと思ってみたり。 そこまで求めるんだったら、epiphany使ってっていう意見あるかもしれないけど。
なんか ProFTPD のプロセスが、無限ループに突入したかのように CPU resource を消費している。 ひとまず異常になったプロセスに gdb でアタッチして backtrace 吐かしてみたら、strcpy() がズラズラとでてきてアレゲだ。 まずは debug symbol を strip していない proftpd をインストールして、こいつ使うしかないかも。 ただ本番マシンでやるにはアレなので... もうちっと考えてみよ。
ProFTPD の RPM パッケージの SPEC ファイル見ていて気づいたんだけど、ProFTPD をビルドするときに環境変数 LDFLAGS に "-s" なんていうものが設定されていた。 んで、ld と gcc のオプションで "-s" をすると、これの出力が strip されるみたいだ。 実は make 直後の proftpd のバイナリのファイルが stripped な状態になっていて、どうなっているのか調べたらこういうことだった。
明日は会社の人と、会社を辞めた人たちで構成されているバイク部と一緒に西伊豆まで。 朝7時に海老名サービスエリア集合ってことなので、6時には出発しないと....
・ name [5S0YG0 この間も俊太郎の詩をお, ]