2011年06月24日

GUI 版「stone for Android」公開のお知らせ


SSL 対応のパケットリピータ「stone」を Android 上で動かすことにはさまざまなメリットがあります。 以前このブログに次の記事を書きました。

  ・「パケットリピータ stone を Android へポーティング
  ・「Android 上のブラウザから SSL クライアント認証の必要なサーバへアクセスする方法


当時は Android NDK でビルドしたネイティブの stone バイナリとビルド用リソースの一式を公開しましたが、その後 GUI 版の開発を手がけ、「stone for Android」として Android マーケットへの登録を行いました。

これはいわゆる「普通の Android アプリ」ですから端末へのインストールも取りまわしもとても簡単です。 興味のある方はぜひご利用下さい。ソースコードも公開しています。


ブラウザから端末へ PUSH インストールの可能なページ


■ GUI 版 stone を作った理由?

もともと stone を Android で動かしたいと考えたのは「自分で使うため」だったため、ELF 実行形式を USB ケーブル経由で端末へ持ち込んでターミナルエミュレータ上で操作するというやり方にそれほど不満は感じていませんでした。 しかし、社内には私と同様に「Android のブラウザから SSL-VPN 経由で社内のイントラにアクセスしたい!」という向きが多い反面、やり方を説明すると技術系以外のメンバーは端末へケーブルをつなぐという手順の時点で急に及び腰になり結局そのまま、という状況が多く見られました。

それを見過ごすのも何だかしのびなく、ネイティブの stone バイナリを内蔵しそのラッパとして動作する簡単な GUI アプリを作り社内で配ってみたところ、ケーブルもターミナルソフトも要らないため楽だと喜ばれました。そして、それを見た別方面から「どうせならイントラ専用ツールではなく Android 用の stone として体裁を整え公開してはどうか?何だかんだ言っても GUI の方が便利だし」という意見が寄せられました。これが「stone for Android」を開発したきっかけです。


■ インストール方法

「stone for Android」は Android マーケットで公開しています。端末へのインストールにはこの記事の冒頭に記載の QR コードを利用するか、PC 上のブラウザから端末へ PUSH インストールの可能なページを利用して下さい。


■ 使い方 1: 概要

以下、本アプリの使い方を簡単に説明します。
インストール後にラウンチャアイコンをタップするとメインの画面が表示されます。最上段のフィールドに stone へのパラメータを記述し、「Run」ボタンを押下するとそのパラメータを使って stone プロセスがバックグラウンドで起動します。中段以下のエリアには stone がコンソール(stderr)出力したログメッセージがトレースされます。

初期状態では上段のフィールドに簡単なパラメータ記述例が示されています。これは「-dd www.gcd.org:80 localhost:1234」という内容で、localhost の 1234 番ポートへのアクセスを http://www.gcd.org/ (stone 公式ページを含むサイト)へ繋ぐ指定です。動作確認をかねてまずこのパラメータで stone を走らせてブラウザから「http://localhost:1234」へのアクセスを試してみるといいでしょう。

stone プロセスがバックグラウンドで稼動している間、端末のステータスバー(通知領域)には「石」のアイコンが表示されます。稼動中に「Stop」ボタンを押下するとユーザ確認を経て stone プロセスを終了します。 なお、本アプリは端末の BACK キーにより Exit しますが、stone プロセス稼動中に BACK キーを押下すると GUI のみを終了し stone はバックグラウンドで動作を継続します。再度本アプリを起動すれば GUI はふたたび stone プロセスと連携します。

デフォルトのサンプルパラメータで stone プロセスを起動し、ブラウザから「http://localhost:1234/」へアクセスを試して下さい。図の要領で「GCD's Homepage」が表示されれば stone は正しく動作しています。


■ 使い方 2: メニューの内容

本アプリのメニュー内容を以下に示します。「証明書のインストール」の項目は Android 2.x 以上の端末でのみ表示されます。証明書インストールについては次項で説明します。


■ 使い方 3: 証明書のインストールについて

本アプリは、Android 2.x 以上の端末において、Android キーストアへの証明書のインストールと参照に対応しています。[MENU] - [証明書のインストール] をタップして下さい。
下図左のメッセージが表示された場合は、Android の「認証情報ストレージ (Credential Storage)」の初期化が必要です。メッセージに添ってパスワードを設定後に再度本アプリでの操作を行って下さい。
下図右のパネルは認証情報ストレージがロック状態の場合に表示されます。端末の電源を投入した時点では認証情報ストレージはロックされています。設定ずみのパスワードでこれを解除して下さい。

認証情報ストレージを利用できる状態になると、SD カード上に存在する証明書ファイルが一覧表示されます。インストール対象とする証明書ファイル名をタップすると処理が始まります。証明書パスワードの問い合わせに対し正しいパスワードを投入すると証明書ファイルから情報が抽出され、最後に識別用の名前の問い合わせが行われます。特に理由がなければデフォルトのままで良いでしょう。

証明書のインストールが正常に終了すると、その証明書を指定したパラメータ記述例がパラメータフィールドに提示されます。ホスト名その他の指定を適宜変更して利用して下さい。なお、「History」ボタンの押下により表示されるパラメータ履歴のリストには以前のパラメータも保持されています。


■ 最後に

長くなったので今回はアプリの紹介と使い方の話題にとどめますが、後日あらためて処理内容についても記事を書きたいと考えています。


■ ライセンスに関する情報

Copyright (C) 2011 KLab Inc.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

本ソフトウェアは、オープンソースソフトウェアです。本ソフトウェアのソースコードは https://github.com/mkttanabe/stone-for-Android で公開しています。

本ソフトウェアは、パケットリピーター 「stone」 の著作権者である仙石浩明 (Hiroaki Sengoku) 氏との特別な合意に基づき CUI 版 stone の実行形式バイナリファイルを含んでいます。 この実行形式ファイルは本ソフトウェアプロジェクトの成果物ではありません。 stone のソースファイルは http://sourceforge.jp/cvs/view/stone/stone/ (revision 2.3.3.13) で公開されています。 ただし、本ソフトウェアが保持しているビルド以外の stone を本ソフトウェアとともに配布することは許されません。 また、改変した stone バイナリを含む本ソフトウェアを配布することもできません。

本ソフトウェアは、既存の以下のオープンソースソフトウェア資産を使用しています。

  • Android の「CertInstaller」ならびに関連するソースコード   著作権者: The Android Open Source Project   ライセンス: Apache License, Version 2.0   ウェブサイト: http://source.android.com/   本ソフトウェアで使用しているソースコードの一覧:    frameworks/base/keystore/java/android/security/ [NOTICE]      - Credentials.java      - KeyStore.java    packages/apps/CertInstaller/src/com/android/certinstaller/ [NOTICE]      - CertFile.java      - CertFileList.java      - CertInstaller.java      - CertInstallerMain.java      - CredentialHelper.java      - Util.java      - ViewHelper.java    packages/apps/Settings/src/com/android/settings/ [NOTICE]      - CredentialInstaller.java
  • これらのソースファイルは、改変箇所にコメントを加えた上でオリジナルの「NOTICE」ファイルとともに前述のリポジトリに配置しています。

    素晴らしいソフトウェアを公開されている各氏に深謝するとともに、私たちは本ソフトウェアがあなたにとって有用であることを願っています。


    (tanabe)
    klab_gijutsu2 at 17:55│Comments(9)TrackBack(0)Android | win

    トラックバックURL

    この記事へのコメント

    1. Posted by hayakawa   2011年08月10日 13:21
    5 早速(というには少し遅いかも)使わせてもらっています。
    2. Posted by tanabe   2011年08月10日 13:44
    hayakawa さん、CUI 版以来のご利用ありがとうございます。GUI 版のリリースに気づかれたかどうか気になっていたのでちょっと安心しました
    3. Posted by sage   2011年10月26日 11:28
    It will be great if i can directly download APK file from web server;i dont want to get google account.
    4. Posted by tanabe   2011年10月26日 11:55
    Hi sage, try following URL.
    http://dsas.blog.klab.org/data/stoneforandroid/jp.klab.stone.apk
    This URL is valid only for a few days. Thank you.
    5. Posted by sage   2011年10月26日 21:37
    Hi tanabe,
    Thank you for uploading apk file :)

    -dd 20.zzz.10.ooo:5354/tcp localhost:53/udp

    But I can't execute this command on Android(works fine on Windows).
    Maybe Android can't repeat dns packet.

    Again,thank you for upload!
    6. Posted by tanabe   2011年10月27日 09:27
    I'm glad I could help.
    > But I can't execute this command on Android(works fine on Windows).
    > Maybe Android can't repeat dns packet.
    I've not tried such operation. But, at least, root privilege is required for your command. Since port 53 is a well-known port. Is your Android device rooted? If so, you can try CUI version of "stone version 2.3e for Android" on terminal emulator after "su" command.
    http://dsas.blog.klab.org/archives/51813490.html
    7. Posted by sage(報告です   2011年11月10日 21:38
    ご返信ありがとうございます。
    完全に(ROMレベルで)root化済です。
    「su」コマンドでも失敗しました。

    >6. 端末のターミナルアプリ上で stone を実行

    $ export PATH=...(etc
    $ su
    #
    # cd data/local/tmp
    # ./stone
    Nov 10 ...(etc...)
    # ./stone -dd 20.zzz.10.ooo:5354/tcp localhost:53/udp
    Nov 10...(etc
    Nov 10...(etc
    Nov 10 (Time) stone 12: Can't bind 127.0.0.1:domain err=0
    #

    (*) 20.zzz.10.ooo = My Server IP
    8. Posted by tanabe   2011年11月11日 12:23
    なるほど、投稿元のホストが jp ドメインでコメントの印象にもあまり文化的な距離感がないなぁと思っていたらやはり日本のかただったようですね(笑)。それはともかく、CUI 版のほうはいろいろ融通が利きますからいろいろ実験なさって下さい。何かの形でお役に立つことを祈ります。
    9. Posted by 無理した初心者。   2011年12月31日 23:11
    4 11月まで、T-01Cをイオンsim運用でAirStation WHR-HP-GNに
    VPN接続して使っていました。(050plusを使うため。)

    12月からF-12Cに買い替えsimもイオンsimからイーモバイルsimに
    切り替えました。

    イーモバイルの契約プランがデータプランBのため
    イオンsimで使えたVPNが使えません。

    いろいろ調べてみたところ、stoneならHTTP / HTTPS プロトコルさえ
    利用可能であればほぼすべての TCP/IP 上で動作するプロトコルを用いた
    通信が可能だと思うのですが、間違ってますでしょうか?
    stone for AndroidでGUI版となり敷居が
    少しだけ下がったので勉強して使いたいと思ってます。

    目指すは、制限で使えない(VOIP)を使うことです。

    この記事にコメントする

    名前:
    URL:
      情報を記憶: 評価: 顔   
     
     
     
    Archives
    このブログについて
    DSASとは、KLab が構築し運用しているコンテンツサービス用のLinuxベースのインフラです。現在4ヶ所のデータセンタにて構築し、運用していますが、我々はDSASをより使いやすく、より安全に、そしてより省力で運用できることを目指して、日々改良に勤しんでいます。
    このブログでは、そんな DSAS で使っている技術の紹介や、実験してみた結果の報告、トラブルに巻き込まれた時の経験談など、広く深く、色々な話題を織りまぜて紹介していきたいと思います。

    また、わたしたちが開発したソフトウエアやノウハウ、実験的なサービスを公開している、

    もあわせてご覧いただければと思います。(DSASブログのエントリをシリーズ別に整理した「DSASブログまとめ」もあります)
    KLabについて
    KLab株式会社は、信頼性の高いクラウドサービス、ソフトウェアパッケージ、自社で企画・開発したソーシャルアプリやデジタルコンテンツを提供しています。
    Blog内検索
    QRコード
    QRコード
    最新トラックバック