2012年3月27日火曜日

ホストOS以外からVMWare Fusionの仮想マシンへ接続する

ゲストOSを固定IPアドレスにして、ホストOS以外から接続を受け付ける場合の設定方法がわかったのでメモ。
VMWare Fusionのバージョンは4.1.1

設定ファイルが/Library/Preferences/VMware\ Fusion/networkingにあるのでこれを編集。
このファイルにしたがってVMWare起動時に追加されるvmnet1,vmnet8のIPアドレスとかがが決まる。

以下の設定をnetworkingに追記して、仮想インターフェースを追加する。
VNET_2_VIRTUAL_ADAPTER_ADDRはゲストOSで設定した固定IPと合わせる。
VNET_2_HOSTONLY_NETMASK, VNET_2_HOSTONLY_SUBNETはHOSTONLYモード用!?だから不要かと思ったけど記述しないとVMNET_2を認識してくれないので、VNET_1のをとりあえずコピー。
VNET_3_xxxxxxxとかもOKだからVNET_4、VNET_5とかもいけそう。


設定が終わったらOSを再起動。なんか他の方法もありそうだけど、VMWareの再起動だけだとダメ。
再度VMWareを起動後、ifconfigの結果にvmnet2が追加されていればOK。


次にゲストOSでどの仮想インターフェースを使用するか設定。
仮想マシンのイメージ内にある拡張子が*.vmxのファイルを開いて以下を追記する。
vmnet*はifconfigで追加されたインターフェース名にする


なんかこの辺の設定方法とかどこかにまとまってるのかな、、、。
Tip #3: Adding additional networks to VMware Fusion 4を見つけてようやくできた。

メンドイからGUIから設定させて欲しいな。

2012年3月24日土曜日

Digest認証エリアをcapybara-webkitでキャプチャする

Digest認証が設定しているサイトでスクリーンショットを撮りたい。
capybara-webkitでwebページのスクリーンショットを撮る」を見つけたのでこれを使うことにした。

ヘッダーを操作メソッドがあるので、Digest認証もなんとかなるかと思ったけどダメだった。
cnonceの生成にリクエストするuriが含まれるので、CSSや画像を取得する際に401 Not Authorizeになっちゃう。

GET /auth/area/index.html HTTP/1.1
-> 200 OK

GET /auth/area/style.css HTTP/1.1
-> 401 Unauthorized

GET /auth/area/header.jpg HTTP/1.1
-> 401 Unauthorized

ってな具合。リクエスト毎に変えなくちゃだめって事だな。

capybara-webkiのissuseで認証はどうするの?的な話があったけど、
ヘッダーの設定で対応できるでしょってことでクローズされてる。

capybara-webkitのrubyソースいじってもどうにもならなそうなので、QTWebKitを調べると、
authenticationRequiredというシグナルがあり認証が必要な場合をハンドリングできそう。
で、認証をハンドリングできたのでAuthorizeコマンドとして実装してみた。

ソースはこちら。cloneしてextconf.rbを実行すればOK.
https://github.com/beatspace9/capybara-webkit/tree/digest-auth
上記を

利用方法。
5行目はgitでcloneしたリポジトリを利用するようパスを書き換える必要ある。
22行目でユーザー名とパスワードの設定