2013年3月13日水曜日

AirCardのIPアドレスを知る - その1 サーバ側の準備

AirCardは無線LANのアクセスポイントにつないで
インターネットに出て行くことは可能なのですが、
如何せん自らが無線LANのアクセスポイントとなることが前提となる
応用方法しか準備されていません。
無線LANのアクセスポイントにつないだときにはDHCPでIPアドレスを取得できますが、
外部からアクセスするためには
AirCard自身のそのIPアドレスがあらかじめわからないと面倒です。
そこでIPアドレスを画像として作成してSDカード内に保存し、
デジカメからその画像を閲覧することでIPアドレスがわかるようにしてみました。
ただしAirCard内部で処理するのはつらいので、外部サーバの手助けを借ります。
今回はそのサーバ側の話です。
サーバにはServersMan@VPS(debian-32bit)を使いますが、
この機能を不特定多数に公開するつもりはないので、
個人で勝手に準備してください。

まずjpeg画像の生成ツールを以下でインストールします。
# apt-get install imagemagick
その後
$ convert -geometry <横のピクセル数>x<縦のピクセル数>! -fill <文字の色> -font <TrueTypeフォントのファイル名(フルパス)> -pointsize <文字の大きさ(ポイント)> label:<画像に埋め込む文字列> <生成するJPEGファイル名前(拡張子は".jpg")>
を実行して閲覧可能なjpegファイルが生成できることを確認します。
TrueTypeフォントのファイルは"/usr/share/fonts/truetype"ディレクトリの下に
拡張子が".ttf"なファイルがあると思うので適当に選んでください。
私の場合、画像の大きさはAirCardの制御用画像に倣って640×480とし、
文字の大きさは100ポイントとしました。
また文字の色は"blue"(青)にしています。
最初文字の色を明示的に設定せず黒にしていたのですが、
LUMIX GF1で表示できない画像とか言われたので、
# apt-get install jhead
# exit
$ jhead <生成したJPEGファイル>
で調べてみたところ
Color/bw     : Black and white
が含まれており、これが悪さをしているようでした。
で、とりあえず文字の色を変えてみたら問題なくなったのでそうしています。

それではこれまでの成果をウェブアプリケーションに落とし込みます。
以下を実行します。
# cd /var/www/html
# mkdir ip
# chmod 777 ip
# cd ip
# touch index.php
# chmod 644 index.php
なお"/var/www/html/p/index.php"の内容は以下のようにします。
私の環境に合わせているので適当に変更してください。
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
</style>
</head>
<body>
<?
$ip=$_GET["ip"];
system("convert -geometry 640x480! -fill blue -font /usr/share/fonts/truetype/kochi/kochi-gothic.ttf -pointsize 100 label:$ip ./ip.jpg");
?>
</body>
</html>
これで、ウェブブラウザから
http://<サーバ名>/p/index.php?ip=<IPアドレス>
にアクセスした後で
http://<サーバ名>/p/ip.jpg
にアクセスすることでIPアドレスを書き込んだ画像が取得できます。
ちなみにわざわざIPアドレスを引数で渡しているのは
NATを挟む場合を想定しているからです。

0 件のコメント:

コメントを投稿