redhat 系の OS にデフォルトでついている vsftpd のロギングが EUC-JP にしか対応してなくて、UTF-8 ではログが文字化けるのでどうにかしようっていうお話。
fedora11について炊き直しの記事です。
単にソースを拾って来て Build してもいいけどそれだけだとおもしろくないので rpm を作るところまでやりたい。
元々パッケージが提供されてるので srpm もある。
cd /usr/local/src yumdownloader --source vsftpd rpm -ivh vsftpd*src.rpm
これで、src.rpm がインストールされる
次にパッチを作成する。
ログの文字化けの対策は<a href=”http://bbs.fedora.jp/read.php?FID=2&TID=2689″>Fedora JPの掲示板</a>にあった。
cd ~/rpmbuild/SPECS/ rpmbuild -bc vsftpd.spec cd ~/rpmbuild/BUILD cp vsftpd*/logging.c vsftpd*/logging.c.hack vi vsftpd*/logging.c
163行目をコメントアウトする。
/* str_replace_unprintable(p_str, '?'); */
echo "diff -up vsftpd-2.1.2/logging.c.hack vsftpd-2.1.2/logging.c" > vsftpd-2.1.2-logging_charset.patch diff -up vsftpd-2.1.2/logging.c.hack vsftpd-2.1.2/logging.c >> vsftpd-2.1.2-logging_charset.patch mv vsftpd-2.1.2-logging_charset.patch ~/rpmbuild/SOURCES/
次に spec ファイルの修正をする。
cd ~/rpmbuild/SPECS vi vsftpd.spec
1行目を2行目に置換
Release: 1%{?dist} Release: 2%{?dist}
以下は上の行の下に追加
Patch9: vsftpd-2.1.0-userlist_log.patch Patch10: vsftpd-2.1.2-logging_charset.patch
%patch9 -p1 -b .userlist_log %patch10 -p1 -b .hack
rpm を build してインストールすれば完了
rpmbuild -ba vsftpd.spec rpm -Uvh ~/rpmbuild/RPMS/i386/vsftpd*rpm
これで、EUC-JP 以外の charset でもログが文字化けすることなく見れます。
ただ、掲示板のほうにも書いてあったように、ログファイルに出力するところで印刷不能文字と判断したものを、? に置き換える処理を無理矢理やらないようにしているだけなので、問題がありそうです。
ただ、? に置き換えなければならないような文字ばファイルネームにも使えないので、そこまで気にする必要はないかも・・・
一応書いておくやつ。
この記事の内容を使用し、作成されたものに関して当方はいかなる責任も負わないものとします。