DownLoad getIP.lzh(ソースコード付き)
=====================================================================
JavaとCGIを使ったグローバルIPを自動的に取得する自宅サーバーに
絶対必要なシステム(仮) I-ichirow Suzuki(suzuki@kg-group.com)
=====================================================================
固定グローバルIPを持たないユーザーにとって、自宅サーバーへのアクセス誘導は重要課題です。
プロバイダによって割り当てられるグローバルIPアドレスは接続の都度不定期に変更されて
しまうので、せっかく自宅サーバーを立ち上げても、刻々と変動する自分のIPアドレスを、その
都度HTMLファイルを修正してFTPするのは大変です。
このアプリケーションはCGIの使えるレンタルサーバーにCGIの環境変数によって、自宅サーバー
のグローバルIPアドレスを取得するCGIファイルをおき、自宅サーバー側一定間隔でレンタル
サーバー上のCGIファイルへアクセスし、ユーザーを誘導する為のHTMLファイルを生成する仕組み
です。勿論HTMLファイルの編集はお好みでカスタマイズ可能です。
Windowsユーザーの場合は Javaアプリケーションとして実行する事も出来ますし、
Exeに固めてあるのでWindows実行アプリケーションとしても起動する事が出来ます。
その場合はJDKのインストールは不要です。しかも、きっとその方がマシンの付加も少ないです。
まず、in.cgiを自分のレンタルサーバーへFTPしてパーミッションを755にします。
urlData.txtファイルに in.cgiを転送したサーバーのフルパスを1行目に記述します。
ここにin.cgiを転送したとします。
http://www.kg-group.com/s/in.cgi
その場合はurlData.txtファイルの一行目にin.cgiのフルパスを記述します
http://www.kg-group.com/s/in.cgi
◆OSがWindowsの場合。
GetIP.exeをダブルクリックして起動してください。
または、GetIP.batをダブルクリックする事でJavaアプリケーションとして実行する事も出来ます。
◆OSがLinuxの場合
JDKがインストールされていてPATHが通っている事を前提として、
GetIP.sh を実行してください。
# ./GetIP.sh
◆その他
JDKがインストールされていれば コンソールから以下の様にJavaアプリケーションとして
起動する事が可能です。
# java GetIP
例)
java GetIP http://www.kg-group.com/s/in.cgi
上書き保存して GetIP.batをダブルクリックして起動します。
(今更なんですが、JDKがインストールされていてなおかつパスを通しておく必要があります)
うまくいった場合はDOSプロンプト、Linuxなどではコンソールが起動し、約1分ごとに
自宅サーバーが(実行しているマシン)レンタルサーバー上のin.cgiへアクセスして
グローバルIPを同じディレクトリのindex.htmlへ書き込みます。
な、訳で実際にユーザー同士がアクセスする場合は 例で行くと
例)
http://www.kg-group.com/s/index.html
にアクセスしてもらう事になります。
index.htmlの修正などは実際に見て頂いた方がよいと思います。
さらに今更なんなのですが、自宅サーバーにサーバー機能がないとだめですよん♪
/**
* JavaとCGIを使ったグローバルIPを自動的に取得する自宅サーバーに
* 絶対必要なシステム(仮) I-ichirow Suzuki(suzuki@kg-group.com)
*/
import java.io.*;
import java.net.*;
import java.util.*;
import java.text.*;
/**
* URLデータファイル in.cgiを固定グローバルIPを持つサーバーへ
* パーミッション 755 で転送。
*
* そのファイルへのフルパスを urlData.txtの一行目に記述
*
* 例) http://www.kg-group.com/s/in.cgi
* へin.cgiファイルをを編集して送信した場合
*
* urlData.txtの一行目に http://www.kg-group.com/s/in.cgi を記述
*/
public class GetIP
{
public static void main(String[] args)
{
try
{
// urlData.txtをReadLine
FileReader fr = new FileReader("urlData.txt") ;
BufferedReader br = new BufferedReader(fr) ;
String urlData = new String() ;
// File の1行目のURLをurlDataに格納
urlData = br.readLine() ;
// Connectt
URL url = new URL(urlData);
URLConnection urlconnection = url.openConnection();
// Starting Thread
Thread thread = Thread.currentThread();
Date date = new Date();
DateFormat df = new SimpleDateFormat("yyyy.MM.dd 'at' HH:mm:ss z");
while(true)
{// 1分ごとに指定ファイルへアクセスする
System.out.println((String)df.format(date) + " " + urlData + " へのアクセス完了");
Thread.sleep((1000*60*1));
}
}
catch(MalformedURLException e){}
catch(InterruptedException e){}
catch(IOException e){}
}
}
インターネットスタートページ 鈴木維一郎 石橋三重子
|