コーディング規約ってやっぱりあった方がいいですよね。できるだけ多くの人が馴染みやすいのがいいですよね。
PHPのコーディングで参考になるものはと見つけたのが PEAR (PHP Extension and Application Repository) の標準コーディング規約です。
https://pear.php.net/manual/en/standards.php
PEAR ライブラリを使ってなくても、このような標準コーディングが公開されていることは大変参考になります。
コーディング規約ってやっぱりあった方がいいですよね。できるだけ多くの人が馴染みやすいのがいいですよね。
PHPのコーディングで参考になるものはと見つけたのが PEAR (PHP Extension and Application Repository) の標準コーディング規約です。
https://pear.php.net/manual/en/standards.php
PEAR ライブラリを使ってなくても、このような標準コーディングが公開されていることは大変参考になります。
CentOS 上でのSVN(Subversion)リポジトリを新しいサーバに移動する必要があったのでその簡単な方法の備忘録です。
手順は現行サーバーのリポジトリをバックアップ(dump)して、それを新サーバーでレストア(load)するだけです。
1. リポジトリのバックアップ
# svnadmin dump /var/www/svn/projects > projects.dump
2. リポジトリのレストア
※ レストアの前に、こちらの手順で予めサブバージョンのインストールとレポジトリを作成しておきます。
# svnadmin load /var/www/svn/projects < projects.dump
前回はTLS設定で呼制御の暗号化を試みました。今回は通話の暗号化を試みます。
1. sip.conf の変更
/etc/asterisk/sip.conf のSIPクライアント(例 2001 )の定義に “encryption=yes” を追加します。
[2001] type=peer secret=password ; this is NOT a secure password host=dynamic ...(省略)... transport=tls encryption=yes
2. クライアントの設定
Zoiper で 暗号化 を有効にして確認します。
Preferences -> Accounts -> Advanced -> Use rport media をチェック Preferences -> Accounts -> Advanced -> Use TLS with SDES SRTP を選択
以上です。
通話を開始すると Zoiper 上にカギのアイコンが表示されます。
また、今回の設定は Zoiper 以外にも AGEphone Business の評価版での試用をしました。
サポートの方に教えて頂きました AGEphone Business の設定方法は下記のとおりです。
Windows - AGEphone Biz3 TLS - アカウント設定 > 接続種別 = TLS - アカウント設定 > 全般の設定 > トランスポートにTLSを使う = ON SRTP - アカウント設定 > 全般の設定 > メディア暗号化(SRTP) = ON
Asterisk には TLS(Transport Layer Security) と SRTP(Secure Real-time Transport Protocol) により通信を安全に行う方法があります。
TLS は Asterisk と SIPクライアントの SIP によるやりとりを暗号化し、SRTP は電話の音声ストリームを暗号化します。
ここでは CentOS6.x 上で Asterisk 13 をソースをビルドしてインストール方法は省略します。ただし、Asterisk 13 のビルドは下記の必要なパッケージをインストールしてから行ってください。
1. 必要なパッケージのインストール
まず、暗号化にに必要な OpenSSL と LibSRTP をインストールします。
# yum install openssl openssl-devel # yum install libsrtp libsrtp-devel
2. 自己署名証明書の作成
Asterisk で利用する自己署名証明書を生成するために Asterisk のソースディレクトリ下の contrib/scripts/に ast_tls_cert という便利なツールが付属しています。これで サーバー証明書とクライアント証明書を生成します。
# mkdir /etc/asterisk/keys # ./ast_tls_cert -C foo.com -O "Foo Company" -d /etc/asterisk/keys # ./ast_tls_cert -m client -c /etc/asterisk/keys/ca.crt -k /etc/asterisk/keys/ca.key -C foo.com -O "Foo Company" -d /etc/asterisk/keys -o sipclient ※ foo.com や "Foo Company" は実際のサーバーのFQDN またはIPアドレス、社名に置き換えてください。また、コマンドの途中でパスフレーズを数回入力するように促されますので適切なものを入力します。
コマンドを実行すると以下のファイルが /etc/asterisk/keys ディレクトリに生成されます。
# ll /etc/asterisk/keys asterisk.crt asterisk.csr asterisk.key asterisk.pem sipclient.crt sipclient.csr sipclient.key sipclient.pem ca.cfg ca.crt ca.key tmp.cfg
3. sip.conf の変更
/etc/asterisk/sip.conf に以下を追加します。
tlsenable=yes tlsbindaddr=0.0.0.0:5061 tlscertfile=/etc/asterisk/keys/asterisk.pem tlscafile=/etc/asterisk/keys/ca.crt tlscipher=ALL tlsclientmethod=tlsv1
続けて、SIPクライアント(例 2001 )の定義に “transport=tls” を追加します。
[2001] type=peer secret=password ; this is NOT a secure password host=dynamic ...(省略)... transport=tls
4. クライアントの設定
Zoiper で TLS を有効にして確認します。
Preferences -> Accounts -> Advanced -> Use rport をチェック Preferences -> Accounts -> Advanced -> Use TLS transport を選択 Preferences -> Advanced -> Security -> Extra CA certificate に sipclient.pem ファイルを選択 Preferences -> Advanced -> Security -> Protocol suite: から TLS v1 を選択 Preferences -> Advanced -> Security -> Disable certificate verification をチェック ※1
※1 このチェックボックスは DANGEROUS DO NOT USE! と表記されていますが、これをチェックしないと
Certificatge: Issuer untrusted/not found/not valid/wrong purpose というエラーになります。
自己署名の証明書のためと思われます。また、再起動するとチェックが解除されていますので、起動のたびにチェックをする必要があります。
これが、フリー版の制限なのか、自己署名証明書のせいなのかはわかりません。;)
xargsは標準入力を読み込み、それを引数として指定したコマンドを実行することができます。
例えば、以下のシェルスクリプトを実行すると指定したディレクトリにある更新日時が3日前のファイルを削除することができます。
$ find /tmp -mtime +3 -type f | xargs rm
ところが find でファイルが見つからなかった場合、 rm のオペランドが不足ということになります。
rm: missing operand Try `rm --help' for more information.
そこで、xargs に –no-run-if-empty というオプションを指定し実行することで、ファイルがない場合の対処ができます。
$ find /tmp -mtime +3 -type f | xargs --no-run-if-empty rm
以上です。