2015年05月10日

PHP で NW-7 バーコード画像を生成する

PHP の Pear には、バーコードを生成するライブラリー Image_Barcode2 クラスが提供されているけれど、なぜか NW7 が含まれていないので作ってみた。

(1) Barcode2.php ファイルを探し (通常は /usr/share/pear/Image/Barcode2.php など)、Image_Barcode2 のクラス内定数に BARCODE_NW7 を追加:

const BARCODE_NW7 = 'nw7';

(2) Barcode2 の Driver ディレクトリーに、今回作成した NW-7 用のドライバーファイル Nw7.php を追加。

設置は以上で完了。

使い方は、たとえば:
<?php
require 'Image/Barcode2.php';                                                    
$code = new Image_Barcode2();                                                    
$code->draw('a01234567b', 'nw7');                      
などとすれば、バーコード画像が表示される。
posted by K/I at 22:43 | 東京 ☁ | Comment(0) | TrackBack(0) | 技術メモ | このブログの読者になる | 更新情報をチェックする

2014年09月28日

Fedora 16以前のバージョン "End of Life" !!!

Fedoraは 17 以降から、fedup というツールでお手軽にアップグレードができるようになっていたらしい。

それが理由なのか、あるいは Systemd 導入が理由なのかわからないが、Fedora 16 までのバージョンは "End Of Life" になっていた。
しかもかなり以前に:
https://bugzilla.redhat.com/show_bug.cgi?id=834795

EOF になると、アップグレードすらできなくなるのか。
Fedora 13 で運営しているサーバーがあるのだが、こいつは完全に世間から取り残された。。。
posted by K/I at 21:34 | 東京 ☀ | Comment(0) | TrackBack(0) | 技術メモ | このブログの読者になる | 更新情報をチェックする

2014年09月26日

PHPの意外なハマりどころ

フォームで、name 属性に . を使うと、_ に自動変換されてしまうのね。
今まで知らなかった。。。
posted by K/I at 21:25 | 東京 ☁ | Comment(0) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2014年06月30日

Apache組み込まれている静的モジュール/動的モジュールの一覧取得方法

いつも忘れてしまうので、メモ。

Apache2 で、組み込まれている Static Module の一覧は、
# httpd -l

ロードされている Dynamic Module の一覧は、
# apachectl -M

で調べられる。
タグ:Apache
posted by K/I at 20:15 | 東京 ☁ | Comment(0) | TrackBack(0) | 技術メモ | このブログの読者になる | 更新情報をチェックする

2014年06月13日

CentOS 6.5 への MongoDB のインストール

CentOS 6.5 に MongoDB サーバーをインストールしようとしたら、パッケージは存在しているのにレポジトリからダウンロードできずインストールできないと言われた。
CentOS 6.4 はうまくいくのに。。。

やむなく、MongoDB 本家のレポジトリを追加してインストールすることに。
http://docs.mongodb.org/manual/tutorial/install-mongodb-on-red-hat-centos-or-fedora-linux/
基本的には上記URLのとおりにやればOK。

ただ、既存の YUM レポジトリーの MongoDB 関連パッケージとかち合うのが気になるので、enabled=0 のほうがよいかも。
posted by K/I at 22:16 | 東京 ☀ | Comment(0) | TrackBack(0) | 技術メモ | このブログの読者になる | 更新情報をチェックする

2014年03月16日

Subversion の Secure connection truncated エラー

Subversion で巨大なレポジトリーをチェックアウトしようとすると、Secure connection truncated エラーが出ていっぺんにダウンロードできない場合がある。

ssh でレポジトリーにアクセスできるなら、そちらを使えばエラーを回避できるようだ。

SSH で接続する場合のレポジトリーの URL は、

svn+ssh://(ホスト名)/(レポジトリーのパス)
タグ:SVN subversion
posted by K/I at 21:23 | 東京 ☀ | Comment(0) | TrackBack(0) | 技術メモ | このブログの読者になる | 更新情報をチェックする

Subversionで無視ファイルを探すには?

Subversion の「無視リスト」はなにかと便利ではあるけれど、作業ディレクトリーを一時的に削除しようと思った時に「はて?すべてあっさり消してしまってよかったのだっけ?それとも作業環境依存の設定ファイルを無視リストに設定してあるのだっけ?」と悩むことがある。
svn コマンドで
$ svn stat --no-ignore
というのがあるけれど、これだとあらかじめ無視パターンに設定したファイルも表示されてしまう。
明示的に svn:ignore プロパティーに設定したファイルだけ探し出したいのだが。

結局わからず、上記コマンドで表示された大量のファイルを点検。
めんどくさ。。。
タグ:SVN subversion
posted by K/I at 18:01 | 東京 ☀ | Comment(0) | TrackBack(0) | 技術メモ | このブログの読者になる | 更新情報をチェックする

2014年02月02日

Postfix で POP before SMTP

POP before SMTP を実現するにはどうすればいいのか、調べてみた。
意外と簡単。

手元の環境は:
OS: CentOS release 6.4 (Final)
MTA: Postfix 2.6.6
POP/IMAP: Dovecot 2.0.9

Pop-before-smtp パッケージは yum ではインストールできないようなので、Pop-before-smtp プロジェクトのサイト (http://popbsmtp.sourceforge.net/) からダウンロードしてインストールする。
Quickstart Guide が用意されているので、基本的にはそれを元に作業すればOK。

1. Pop-before-smtp のインストールと起動

まずは、必要なパッケージのインストール:
# yum install perl-TimeDate perl-Net-Netmask perl-DB_File

Pop-before-smtp のファイル一式をダウンロードして展開したら、ファイルをコピーする (なんと手作業インストール!)。
# cp pop-before-smtp.init /etc/rc.d/init.d/pop-before-smtp # cp pop-before-smtp /usr/sbin/ # cp pop-before-smtp-conf.pl /etc

設定ファイル /etc/pop-before-smtp-conf.pl を編集する。
  1. 以下の行を探し、必要に応じて設定:
    # Set the log file we will watch for pop3d/imapd records. #$file_tail{'name'} = '/var/log/maillog';
  2. $patを定義していると箇所を探し出し、システムの設定に合ったものをコメントアウト。
    今回は Dovecot + syslog なので、以下の部分をコメントアウトした:
    # For Dovecot POP3/IMAP when using syslog. $pat = '^[LOGTIME] \S+ (?:dovecot: )?(?:imap|pop3)-login: ' . 'Login: .*? (?:\[|rip=)[:f]*(\d+\.\d+\.\d+\.\d+)[],]'; $out_pat = '^[LOGTIME] \S+ (?:dovecot: )?(?:imap|pop3)-login: ' . 'Disconnected.*? (?:\[|rip=)[:f]*(\d+\.\d+\.\d+\.\d+)[],]';
設定は、とりあえずこれで完了。
$pat の設定が正しいかどうかは、以下のコマンドでテストできる。
# pop-before-smtp --debug --nowrite --reproces Feb 2 17:21:32 starting up (v1.42) Feb 2 17:21:32 Using 2 values for pre-authorized networks: `XX.XX.XX.XX/32', `127.0.0.0/8' Feb 2 03:14:02 startup log-scan complete Feb 2 03:14:02 ignoring local-net ip=XX.XX.XX.XX : Feb 2 15:34:02 ignoring local-net ip=XX.XX.XX.XX Feb 2 15:44:05 ignoring local-net ip=XX.XX.XX.XX Feb 2 15:44:41 found ip=XX.XX.XX.XX (-1) Feb 2 15:54:09 ignoring local-net ip=XX.XX.XX.XX :
こんな感じに表示されれば問題無し。

デーモンをスタートしてみる:
# chkconfig --add pop-before-smtp # chkconfig --list | grep -i pop pop-before-smtp 0:off 1:off 2:on 3:on 4:on 5:on 6:off # service pop-before-smtp start Starting pop-before-smtp: done

正常に動作すれば、データベースファイルが作られる:
# ls -l /etc/postfix/pop-before-smtp* -rw-r--r-- 1 root root 12288 Feb 2 18:00 /etc/postfix/pop-before-smtp.db

2. Postfix の設定

設定ファイル /etc/postfix/main.cf を開き、どこかに:
check_client_access = hash:/etc/postfix/pop-before-smtp
の1行を追記する。
ついでに、説明書のアドバイスに従って以下の設定も追加:
smtpd_recipient_restrictions = permit_mynetworks,reject_non_fqdn_recipient, check_client_access hash:/etc/postfix/pop-before-smtp, reject_unauth_destination
Postfix の設定再読み込み。
# service postfix reload

3. 動作の確認

まず、Pop-before-smtp に登録されている IP アドレスのリストを確認してみる。
# pop-before-smtp --list The database holds 0 IPs.
となっていれば、まだ登録されていない状態。
この状態で、メール送信を試してみると、メールーサーバのログに:
Feb 2 19:25:58 localhost postfix/smtpd[3537]: connect from xxx.yyy.zzz[XX.XX.XX.XX]
Feb 2 19:25:58 localhost postfix/smtpd[3537]: NOQUEUE: reject: RCPT from xxx.yyy.zzz[XX.XX.XX.XX]: 554 5.7.1 <aaa@bbb.ccc.ddd>: Relay access denied; from=<k-ishik@ll.mm.nn> to=<aaa@bbb.ccc.ddd> proto=ESMTP helo=<[192.168.0.10]>
Feb 2 19:25:58 localhost postfix/smtpd[3537]: disconnect from xxx.yyy.zzz[XX.XX.XX.XX]
といったエラーが出力される。
(メール転送が許可されない)

次に、POP 受信した後に試してみる。
# pop-before-smtp --list The database holds 1 IP: XX.XX.XX.XX
と表示されれば、Pop-before-smtp は正常に動作している。
メール送信も正常に行われる (はず)。
posted by K/I at 18:47 | 東京 ☀ | Comment(0) | TrackBack(0) | 技術メモ | このブログの読者になる | 更新情報をチェックする

2013年12月31日

Postfix+Cyrus SASL で SMTP 認証

SMTPサーバーの認証をやらざるをえなくなり、SASL を導入した。
Cyrus SASL はこれまでにも何度か試したけれど、いつも何やら難しそうで途中で放棄していた。
今回は、なんとかやりおおせた。。。

使用した環境は以下のとおり:
OS: CentOS release 6.4 (Final)

1. Cyrus SASL のインストールと設定

SASL ではさまざまな認証機構を選択できるが、あまり複雑なことをやるとハマりそうなので Linux のパスワードファイル /etc/shadow での認証を採用した。
/etc/shadow での認証は、saslauthd で実現できる。
saslauthd は、CentOS の RPM パッケージ cyrus-sasl に含まれている。

PLAIN 認証機構のパッケージ cyrus-sasl-plain もインストールが必要。
# yum install cyrus-sasl cyrus-sasl-plain
saslauthd を実行する前に、/etc/sysconfig/saslauthd ファイルの起動オプションを設定して /etc/shadow での認証を行うようにする。
MECH=shadow
起動してみる。
# service saslauthd start
saslauthd での認証がうまくいくかどうかは、testsaslauthd コマンドで確認できる。
# testsaslauthd -u ユーザ名 -p パスワード
0: OK "Success." と表示されれば成功。

Postfix の SMTP 認証のために saslauthd は起動させておく必要がある。
chkconfig で on に設定しておこう。
# chkconfig saslauthd on

2. Postfix の設定

Postfix の SASL 認証は、SASL ライブラリーを経由して行っている。
SASL ライブラリーの設定ファイル /etc/sasl2/smtpd.conf を以下のように設定する。
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN

Postfix 本体の設定を以下のようにする。
(設定項目が存在しなければ追加)
smtpd_sasl_auth_enable = yes
smtpd_sasl_type = cyrus
smtpd_sasl_path = smtpd
smtpd_recipient_restrictions =
permit_mynetworks
permit_sasl_authenticated
reject_unauth_destination
最後の設定は、リレーを許可するためのもの。
なお、Cyrus SASL ライブラリーは設定ファイルの検索パスから「smtpd_sasl_path の設定値+.conf」というファイル名のファイルを探し出してそれを読み込むので、認証がうまくいかない場合は前述の /etc/sasl2/smtpd.conf ファイルのファイル名と smtpd_sasl_path の設定値が一致しているかどうか確認するとよい。

/etc/postfix/master.cfg ファイルで、-o smtpd_sasl_auth_enable=yes-o smtpd_client_restrictions=permit_sasl_authenticated,reject オプションを有効にする。
smtp inet n - n - - smtpd
#submission inet n - n - - smtpd
# -o smtpd_tls_security_level=encrypt
-o smtpd_sasl_auth_enable=yes
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
# -o milter_macro_daemon_name=ORIGINATING

Postfix の設定リロードを行って完了。
# service postfix reload
posted by K/I at 18:13 | 東京 ☀ | Comment(0) | TrackBack(0) | 技術メモ | このブログの読者になる | 更新情報をチェックする

SETI@home/BOINC をコマンドラインで実行する (Linux)・改

しばらく貢献を怠っていた SETI@home に久しぶりに参加しようと思い、以前書いた記事「SETI@home/BOINC をコマンドラインで実行する (Linux)」を読み返したものの、さすがに古すぎてほとんど役に立たず。
改めて調べてみた。

使用したOSは CentOS release 6.4 (Final)。
現在は RPM パッケージが用意されており、rc ファイルも完備されているので操作が楽になっている。

1. BOINCクライアントのインストール

rpm パッケージが用意されているので、yum 等でインストールする。
# yum install boinc-client
インストールが完了したら boinc-client を起動する。
# service boinc-client start

2. SETI@home のプロジェクト登録

まずは、SETI@home のアカウントキーを取得する必要がある。
SETI@home にアカウントを持っている場合には、次のコマンドでアカウントキーを取得できる。
# boinccmd --lookup_account http://setiathome.berkeley.edu/ \
メールアドレス パスワード
まだアカウントを作っていない場合は、次のコマンドを実行する。
# boinccmd --create_account http://setiathome.berkeley.edu/ \
メールアドレス パスワード アカウント名
アカウントキーを取得したら、BOINC デーモンに SETI@home を登録する。
# boinccmd --project_attach http://setiathome.berkeley.edu/ アカウントキー
ステータスは、
# boinccmd --get_results
で確認できる。
posted by K/I at 12:14 | 東京 ☀ | Comment(0) | TrackBack(0) | 技術メモ | このブログの読者になる | 更新情報をチェックする
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。