2010/01/07

iPod touch / iPhone で脱獄後にPHPを使ってオレオレサーバーをつくる。


iPod touchやiPhoneでPythonやらPHPやら使えないのかな〜?
と思ったら、ありました!という報告です。

ついでに、適当なサーバープログラムを作って他のマシンからたたいてみます。
上の3枚のスクリーンショットでピン!とくる人はくるかもしれませんね。
jailbreak(脱獄)することが前提なので、万人にはおすすめできませんが、そもそもこういうことを思いつく人自体それなりのハッカーの精神の持ち主かと思いますので、、ここは前提として進めます。

管理用のプログラムなどのインストール
パッケージマネージャー(ROCKとかCydiaとか)で簡単にできます。というか、ほぼこれだけです。
まず、OpenSSHを入れましょう。そしたらwi-fiからsshでiPod touchに入れるようになります。
ユーザー名・初期パスワードはmobile・alpineらしいです。ハッキングされないように変えておきましょう。


つづいて、いろいろなユーティリティーを。ほとんどLinuxからの移植モノなので、説明は省略


-nano (エディタ)
-wget
-screen
-php


さて、準備はこれでOK。
PHPで使える機能は一部ではありますが、JSONとかSimpleXMLとかそのへんはおおむねカバーしている模様。
詳しくはしたらわかりますね。
ちなみに、PHPのバージョンは5.2.8のようです。
ところで、file_get_contentsとかその辺が使えるだけでもまあうれしいと言えばうれしいのですが、
どうせならサーバーとか立ててみたいなあ、、、なんて思うのが変態精神。
しかし、socket_createを使おうとしたら、、、あれ?未定義?
これはやばい、と思いましたが、PHP5からのstream_socket_server関数は使えました。なので、とりあえずPHP
manualのサンプルを、使ってみます。

------------

$socket = stream_socket_server("tcp://0.0.0.0:8000", $errno, $errstr);
if (!$socket) {
echo "$errstr ($errno)\n";
} else {
while ($conn = stream_socket_accept($socket)) {
fwrite($conn, 'The local time is ' . date('n/j/Y g:i a') . "\n");
fclose($conn);
}
fclose($socket);
}
?>
------------

そして、別のPCからfirefoxでアクセスすると、、、


ちゃんと表示されましたね!もちろんiPod touchのSafariから localhost:8000/ でも(HTTPにしたがってちゃんと書けば)いけます。
あとは、screen上でこのプログラムを走らせっぱなしにしておけば、それなりのサーバーとして動いてくれるはずです。電池の持ちが悪くなりそうではありますが・・・。


iSSHなどのアプリを入れておけば、
出先でとりあえずPHPが書きたくなった時(←どんな時だよ?)に、localhostにログインしてプログラムを走らせたりできますね。
あ、ちなみに、電源OFF(電源ボタン長押し)をしない限り、プログラムは(スリープさせても)走り続けます。これもなかなかに便利ですね。
そんなに重たい処理をさせないのならば、自宅用の省電力サーバーとして使えるかもしれませんね。