筆者について
FreeBSDを通じてOSSにささかな貢献を。
- 日本xrdpユーザ会発起人
- xrdp developer
- FreeBSD developer
OSS活動をご支援いただける方を募集しています
2007-12-27 シェルスクリプトでいろいろ
■ ディレクトリ内の画像をランダムに表示する CGI
Linux カテゴリなんだか、UNIX カテゴリなんだかよくわからなくなってきた。 いつもなら Ruby でちゃっちゃと書く所だけど、この程度ならシェルスクリプトで書いたほうが早いがするので書いてみた。
#!/bin/bash RANDOM=`date +%s` FILES=(`ls | grep jpg`) N=${#FILES[@]} echo "Cache-Control: no-cache" echo "Content-Type: image/jpeg" echo "" cat ${FILES[`expr $RANDOM % $N`]}
こののスクリプトを適当な名前で保存して実行権つけてやればスクリプトと同じディレクトリ内のファイルがランダムに出力される。 適当に作ったのでファイル名に jpg が含まれているか見てるだけで、拡張子は見てない。
シェルスクリプトで書いたほうが早かったけど、それが速いかどうかは…。これだけで 5個くらいプロセス起動するので、リクエストが多いと重いかもしれない。
bash で乱数を取得するにはシェル変数 RANDOM を使えばいいみたい。
- RANDOM
- Each time this parameter is referenced, a random integer between 0 and 32767 is generated. The sequence of random numbers may be initialized by assigning a value to RANDOM. If RANDOM is unset, it loses its special properties, even if it is subsequently reset
2012-12-27 2012年のラストコミット?
■ FreeBSD ports/173566: net/xrdp のインストール時の挙動を変更
ports/173566 がようやくコミットされました。PR を出したのが丁度不正侵入が検知されたのと同じ日だったのと 9.1-RELEASE の ports freeze 中だったためにコミットまでにかなり時間がかかりました。
日本の FreeBSD ユーザの中で net/xrdp のユーザはかなり少ないと思うのですが、今回の変更について解説します。
- インストール時にサーバの鍵ペアを新しく生成するように変更
- xrdp と xrdp-sesman の2つのデーモンを独立して制御できるように起動スクリプトを修正
1番はセキュリティ上の都合で RDP の暗号化に使用する鍵をインストール後に自動生成するように変更しました。これまでは配布物に含まれる鍵をそのまま使用していましたが、これでは十分にセキュアでないので sshd などで初回起動時にホスト鍵を自動生成するのと似たような挙動にしました。配布物に含まれる鍵がそのまま使われていた場合、鍵を再生成します。
pkg-message が表示される前にこんなのが出ていれば鍵が再生成されています。
===> Installing rc.d startup script(s) Generating 512 bit rsa key... ssl_gen_key_xrdp1 ok saving to /tmp/xrdp-0.6.0_2_1/etc/xrdp/rsakeys.ini
2番は xrdp を単なる RDP ゲートウェイとして使う場合など、xrdp のセッションマネージャである xrdp-sesman を同じホスト上で動かす必要がない場合のために、xrdp と xrdp-sesman の起動を独立に制御できるようにしました。pkg-message を見るとわかりますが、rc.conf への記述が少し変更になっています。xrdpsesman_enable="YES" と書いていたものが xrdp_sesman_enable="YES" に変わりました。
xrdp_enable="YES" # これは変更なし xrdpsesman_enable="YES" # これまで xrdp_sesman_enable="YES" # これから(必須でなくなった)
2012/12/27 3:30 追記
ports/173566 でコミットされたインストール時の RSA 鍵ペア生成ですが、うまく RSA 鍵を生成できていなかったため、 これを修正する ports/174721 を submit しました。
2013/01/15 8:00 追記
コミットされました。今後は
- net/xrdp - xrdp 0.6.0 系 重要な更新のみだけを行う
- net/xrdp-devel - xrdp 0.7.0 系 最新の開発ツリーを取り込む
という方針でメンテナンスを行っていく予定です。
2017-12-27
■ xrdp v0.9.5 リリース
2017年12月27日、xrdp v0.9.5をリリースしました。四半期ごとのリリースに開発体制が変更になって以来、ちょうど1年、4回目のリリースです。リリースノートはGitHubのリリースページを参照ください。
今回のリリースの主なトピックはCVE-2017-16927の脆弱性修正です。xrdpチームからパッチが出ましたが、そのパッチには不備がありDebianから追加のパッチが提供されました。
他には、オーディオ転送のためのPulseAudioモジュールのビルド方法が古くなっていたのをリニューアルし、最新の手順をリリースに含めています。xrdpでオーディオ転送を実現したい場合、下記ドキュメントを参照してください。
セキュリティフィックス
- ローカルサービス拒否攻撃につながる脆弱性CVE-2017-16927修正
新機能
- DEBUGより詳細な新たなログレベル TRACE の追加
- RDP経由でのSSHエージェントフォワーディングのサポート(要FreeRDP)
- 横ホイールによるスクロールを正式にサポート
バグフィックス
- sesmanのポートがハードコードされていたのを修正
- NeutrinoRDPモードでWindows Server 2008と接続した際、描画が乱れるのを修正
- AACオーディオ転送で音が乱れるのを修正
- vsockサポートを追加
- TLS接続時にCPU使用率が100%になる問題を修正
その他の修正
- US Dvorak キーボードサポートを追加
- いくつかの誤解を招くログを修正
- フィンランド語キーボードサポートを追加
- Xorgの設定により親切なコメントを追加
- PulseAudioモジュールのドキュメントを改定
- その他多くのリファクタリング
既知の問題
Windowsのクライアントでオーディオ転送使用時、コーデックがMP3だと音が鳴らない不具合があります。AACを代わりに使用してください。