au Wi-Fi SPOTにLinuxから接続できるようにしてみた
au Wi-Fi SPOTは2012年3月1日からスマートフォンだけでなく、PCやタブレットなど2台目の端末でも利用できるようになりました。
で、WindowsやOSX用の接続ツールはリリースされてるのですが、Linux用の接続ツールは当然リリースされていないため指を咥えてじっと耐えるしかありませんでした。
でもそんなのヤダヤダ、Linuxからも利用したい!のでついカッとなってLinuxから接続できるコマンドラインツールを作りました。GitHubにて公開しています。
https://github.com/matsuu/auwifispot-client
簡単な使い方はリンク先を参照してください。
内部で使用しているWISPrプロトコルについて
Wireless Internet Service Provider (WISP) Roamingというプロトコルで、キャリアをまたいだホットスポットを実現するためのプロトコルです。
1.0と2.0があるようですが、au Wi-Fi SPOTが採用しているのは1.0でした。関連資料は http://www.acmewisp.com/ が詳しいです。
実は今回のau Wi-Fi SPOTだけでなく、ソフトバンクのモバイルポイントなどもWISPrプロトコルに対応しています。しかしWISPr対応クライアント実装はあまり見つかりません。その理由は、ほとんどのホットスポットはWebブラウザを開くと自動的にユーザ情報入力フォームが開くようになっており、わざわざWISPrクライアントを実装する必要性がないんですね。ねるほどねー。
au Wi-Fi SPOTはこのブラウザでのログイン認証ができない実装となっているため、各OS用の接続ツール(おそらくWISPrクライアント)を用意しています。
http://www.acmewisp.com/ の資料を元にWISPrプロトコルの状態遷移図をざっと書いてみました。おおよそこんな感じだと思います。さほど複雑ではないですね。
TODO
- エラーチェックが貧弱なので修正する
- WISPr周りの実装が怪しいので修正する(Proxyとか対応してない)
- Net::WISPrとか作りたいですね
- Perl初心者なので添削してほしい
- ブラウザでも実装できるはず。FirefoxアドオンやGoogle Chrome拡張機能として実装しなおしてもいいかもしれない