fedora11のvsftpdでログの文字化け対策

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 でもログが文字化けすることなく見れます。
ただ、掲示板のほうにも書いてあったように、ログファイルに出力するところで印刷不能文字と判断したものを、? に置き換える処理を無理矢理やらないようにしているだけなので、問題がありそうです。
ただ、? に置き換えなければならないような文字ばファイルネームにも使えないので、そこまで気にする必要はないかも・・・

一応書いておくやつ。
この記事の内容を使用し、作成されたものに関して当方はいかなる責任も負わないものとします。

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください