Dynamic DO!.jpでDNSを更新してくれるJavaプログラム
Dynamic DO!.jpが提供している無料版のDDNSサービスに対して、コマンドベースでDNSを更新するプログラムをJavaで書いたので載せます。(Perl版はネットで見つけましたがJava版はなかったので、これで誰かの5分くらいは短縮できるかな?)
以下のソースを適当な場所に「Ddo.java」として保存して、「javac Ddo.java」と実行してコンパイルしてください。コンパイルにはJDK(たぶん1.5くらいで大丈夫)が必要です。
あとは「java Ddo [domain] [password]」とコマンドを打ってあげてください。
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.MalformedURLException; import java.net.URL; import java.util.regex.Matcher; import java.util.regex.Pattern; public class Ddo { private static String url1 = "http://ddo.jp/?free=on"; private static String url2 = "http://free.ddo.jp/dnsupdate.php"; public static void main(String[] args) { String domain; String password; if(args.length!=2){ printUsage(); return; }else{ domain = args[0]; password = args[1]; } URL url; String ip=null; try { url = new URL(url1); BufferedReader br = new BufferedReader(new InputStreamReader(url.openStream(),"EUC-JP")); String prefix = "<input type=text name=ip value=\""; String postfix = "\" size=30>"; String line; while((line=br.readLine())!=null){ if (line.indexOf(prefix)!=-1&&line.indexOf(postfix)!=-1){ ip = line.substring(line.indexOf(prefix)+prefix.length(),line.indexOf(postfix)); } } br.close(); if(ip==null){ System.out.println("IP Address Not Found(Not Updated)"); return; } } catch (MalformedURLException e) { printUrlIllegal(url1); e.printStackTrace(); return; } catch (IOException e) { printOtherIllegal(); e.printStackTrace(); return; } System.out.println("IP Address Found => "+ip); try { url = new URL(url2+"?dn="+domain+"&ip="+ip+"&pw="+password); BufferedReader br = new BufferedReader(new InputStreamReader(url.openStream(),"EUC-JP")); Pattern pattern = Pattern.compile("<.+?>", Pattern.DOTALL); StringBuffer result = new StringBuffer(); String line; while((line=br.readLine())!=null){ Matcher matcher = pattern.matcher(line); result.append(matcher.replaceAll("")+"\n"); } br.close(); System.out.println(result.toString()); } catch (MalformedURLException e) { printUrlIllegal(url2); e.printStackTrace(); return; } catch (IOException e) { printOtherIllegal(); e.printStackTrace(); return; } } private static void printUsage(){ System.out.println("Usage : java Ddo [domain] [password]"); } private static void printUrlIllegal(String url){ System.out.println("URL is illegal => "+url); } private static void printOtherIllegal(){ System.out.println("Probabry Network has any problems"); } }