WindowsでPT2を使った録画サーバを構築してるのですが、
本日大変調子が悪くなったことからOSを再インストールしました。
そこでPT2環境も再セットアップした時に少し構成変更したのでメモ。
前提
再インストール前は「BonCasLink(Server)」と「BonCasProxy」を使ってBCASカードを管理していました。
前者がBCASカードの接続を共有するソフトウェア、後者が共有されたBCASをLAN内で共有するソフトウェアです。
ふつーであればスマートカードリーダーをPCに挿しておけば済む話なのでこれらは不要です。
が、リモートデスクトップで接続するとスマートカードリーダーが切断されるという宿命みたいな仕様があり、
このため別ユーザでBCASをLAN公開して、そこにローカルホスト接続するとかいう、
Linuxみたいな回避策を取らざるを得ませんでした。
一度構築しちゃったのでこの構成でも良かったのですが、
再インストールに際して環境再現が非常に面倒くさかったので、BCASサーバを別立てしようと思いつきました。
探してみるとPerlでBCAS共有を実現している人が。世の中には凄い人がいるんですね・・。
Raspberry Pi3でのセットアップ
$ uname -a
Linux GameWatch 4.4.9-v7+ #884 SMP Fri May 6 17:28:59 BST 2016 armv7l GNU/Linux
OSはRaspbian。リーダーはSCR3310-NTTComです。
ほとんど以下のサイトの手順で実施しました。(ありがとうございます)
http://blog.techlab-xe.net/archives/4136
リーダーは最初から繋いでてもOKです。特にドライバもありません。
さっそくGitHubからダウンロードして、改行コードを処理します。
$ git clone https://github.com/walkure/bcs-perl
$ cd bcs-perl/
$ mv bcs-perl.pl bcs-perl.bak; tr -d \\r < bcs-perl.bak > bcs-perl.pl
この状態でbcs-perl.plにlistをつけて実行。
$ ./bcs-perl.pl list
Can’t locate Chipcard/PCSC.pm in @INC (you may need to install the Chipcard::PCSC module) (@INC contains: /etc/perl /usr/local/lib/arm-linux-gnueabihf/perl/5.20.2 /usr/local/share/perl/5.20.2 /usr/lib/arm-linux-gnueabihf/perl5/5.20 /usr/share/perl5 /usr/lib/arm-linux-gnueabihf/perl/5.20 /usr/share/perl/5.20 /usr/local/lib/site_perl .) at ./bcs-perl.pl line 12.
BEGIN failed–compilation aborted at ./bcs-perl.pl line 12.
怒られた。
”PCSCモジュールが無い”っぽいので入れてみます。
$ sudo apt-get install pcsc-tools
※以下を参考にして入れました。他にも入れなきゃいけないかも?
http://www.utilities-online.info/articles/GettingStarted-With-SmartCard-In-Linux/#.WYaYR63ANmA
List of PC/SC card reader
NTT Communications Corp. SCR3310-NTTCom USB SmartCard Reader [Vendor Interface] 00 00
>>EOL
今度は成功。わあい。
ここで表示される文字列を控え、bcs-perl.plの変数$selected_readerに設定します。
my $selected_reader = ‘NTT Communications Corp. SCR3310-NTTCom USB SmartCard Reader [Vendor Interface] 00 00’;
設定後にbcs-perl.plを実行してみて、以下のようなログがでればOKです。
$ ./bcs-perl.pl
>>Reader:NTT Communications Corp. SCR3310-NTTCom USB SmartCard Reader [Vendor Interface] 00 00
>>Card Status:[Card Present][Powered][Ready for PTS]
>>Card Ver:2
>>Card Manufacture ID:M
>>Card ID: 0000 3202 4408 6635 0845
>>Begin Listening(0.0.0.0:6900)…..
BonCasLinkの宛先をRaspberry Piに向けてやればめでたくBCAS共有ができます。
多分以下のような構成になるんじゃないかと思います。
rcスクリプト例
起動確認が終わったらrcスクリプトを書いてデーモン化しておきます。
起動チェック類が多少ぬるいです・・っていうかそもそも動作保証しません。
#!/bin/sh PID_FILE="/usr/local/bin/bcs-perl/bcs-perl.pid" if [ -f ${PID_FILE} ] ; then FILE_PID=`cat ${PID_FILE}` ps -p ${FILE_PID} > /dev/null NOT_RUNNING=$? else NOT_RUNNING=1 fi case "$1" in start ) if [ ${NOT_RUNNING} -eq 1 ] ; then /usr/local/bin/bcs-perl/bcs-perl.pl > /dev/null 2>&1 & echo $! > ${PID_FILE} else echo "bcs-perl was running. (PID=${FILE_PID})" fi ;; stop ) if [ ${NOT_RUNNING} -eq 0 ] ; then kill ${FILE_PID} rm ${PID_FILE} else echo "bcs-perl is not running." fi ;; status ) if [ ${NOT_RUNNING} -eq 1 ] ; then echo "bcs-perl is not running." else echo "bcs-perl was running. (PID=${FILE_PID})" fi : ;; * ) echo "$0 {start|stop|status} " ;; esac
#すげえニッチなエントリになった。。