#!/usr/bin/perl -w  
#               -w ワーニングを出す(2008/06/21)
use strict; # 宣言した変数以外を使えなくする

my $niftyid="NIFTYID";
my $niftypass="NIFTYPASSWORD";

my $file="/usr/local/bin/ddns4nifty/ipaddr.txt";
my $update="/usr/local/bin/ddns4nifty/update.log";
my $no_update="/usr/local/bin/ddns4nifty/no_update.log";
my $wget;
my $ipaddr;
my $valid;
my $oldipaddr;
my $sec;
my $min;
my $hour;
my $mday;
my $mon;
my $year;
my $wday;
my $yday;
my $isdst;
my $tt;
my $null="";

$| = 1;   # ゼロ以外が代入されると出力をバッファリングしなくなる。



# ######################## 新しいIPアドレスをチェックする
$wget = `wget --no-check-certificate -O- -q https://www.atnifty.com/ddns/p13.php`; # IPアドレスを得る
#print "debug  wget p13.php\n"; # 確認用の文を出力


$wget =~/[0-9]+(\.[0-9]+){3}/; # IPアドレスとのマッチパターン
$ipaddr = $&;  # マッチしたIPアドレスを入力
#print "Debug get ip address=$ipaddr\n"; # 確認用の文を出力

$wget =~/name="valid" value="[a-zA-Z0-9]+"/;  # validの部分を探す(マッチ)
$valid = $&;   # マッチした部分を入力
$valid =~s/name="valid" value="//;  # 値の前の部分を除去
$valid =~s/"//;    # 値の後ろの部分(")を除去
#print "Debug finish  valid=$valid\n"; # 確認用の文を出力


# ########################### 古いIPアドレスをファイルから読み込む
open FH, "<",$file || die "Error: ipaddr.txt $!\n" ;# IPアドレス読み込み用ファイルを開く
$oldipaddr = <FH> # 記録されているIPアドレスを入力
close FH;
#print "Debug get old ip address\n"; # 確認用の文を出力


# ########################### IPアドレスがうまく得られたかチェック
# get ipaddress error check  (2008/06/21 追加 )
#
 if ($ipaddr eq $null) {
      $ipaddr = $oldipaddr ; #ヌルの場合は古いIPアドレスを与える
      print "Debug get ip address error null  ";
      print "Debug ipaddress = oldipaddress"
  }


# ########################### IPアドレスが変わらない場合
if($ipaddr eq $oldipaddr){
        open (OUT,">> $no_update"); # 追加書き込み用ファイルを開く
         $tt=time();
         ($sec, $min, $hour, $mday, $mon, $year,
           $wday, $yday, $isdst) = localtime($tt);
         $year=$year+1900;
         $mon=$mon+1;
         print OUT $year,"/",$mon,"/",$mday,"   ",$hour,":",$min,":",$sec,"  "  ;
	     print OUT "ip address is not changed:$ipaddr\n" ;  #IPアドレスに変更無し
        close(OUT);
#   print "Debug not change ip address\n"; # 確認用の文を出力
}


# ########################## IPアドレスの変更があった場合
else{
        open (OUT,">> $update"); # 追加書き込み用ファイルを開く
         $tt=time();
         ($sec, $min, $hour, $mday, $mon, $year,
           $wday, $yday, $isdst) = localtime($tt);
         $year=$year+1900;
         $mon=$mon+1;
         print OUT $year,"/",$mon,"/",$mday,"   ",$hour,":",$min,":",$sec,"  "  ;
	     print OUT "ip addres is changed:$ipaddr\n" ;
        close(OUT);
        open FH,">",$file|| die "Error: ipaddr.txt $!\n" ;# IPアドレス書き込み用ファイルを開く
         print FH "$ipaddr" ;
        close FH;

        $wget=`wget --no-check-certificate -O- -q --http-user=$niftyid --http-passwd=$niftypass --post-data="ipaddress=$ipaddr&nifty_id=&update=newip&valid=$valid"  https://gateway.nifty.com/service/g-way/ddns/nifty/secure/config/update.php`; # コメントを表示しないに戻した。
#   print "finish change ip address\n"; # 確認用の文を出力

}