#!/usr/bin/perl -w  
#               -w ワーニングを出す
# /usr/local/bin/ddns4nifty/ddns4nifty-081211.pl
# nifty ddns 2008/12/3 のリニューアルに対応
use strict; # 宣言した変数以外を使えなくする

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

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 $ip_change_log="/usr/local/bin/ddns4nifty/ip_change_log.txt";
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;   # ゼロ以外が代入されると出力をバッファリングしなくなる。



# ########################
# 2008/12/03 までのもの $wget = `wget --no-check-certificate -O- -q https://www.atnifty.com/ddns/p13.php`; 
$wget = `wget --no-check-certificate -O- -q http://domain.nifty.com/domain/DdnsIpChangeConfirm.do?DDNS_CHANGE_IP=IP%95%CF%8DX%83y%81%5B%83W%82%D6` ; # 2008/12/3 niftyのddnsリニューアルに伴い変更
#print "debug  wget p13.php\n"; # 確認用の文を出力


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

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


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


# ###########################
# get ipaddress error check  (2008/06/21 追加 )
#
 if ($ipaddr eq $null) {
      $ipaddr = $oldipaddr ;
      print "Debug get ip address error null  ";
      print "Debug ipaddress = oldipaddress"
  }


# ###########################
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"; # 確認用の文を出力
}


# ##########################
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" ;
	print FH "$ipaddr" ;
	close FH;

#	$wget=`wget --secure-protocol=auto -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`;

# ここは2008/12/3以前の部分        $wget=`wget --secure-protocol=auto --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`; # --secure-protocol=autoを追加した(2008/8/19) 

$wget=`wget --secure-protocol=auto --no-check-certificate -O- -v  -a $ip_change_log --http-user=$niftyid --http-passwd=$niftypass  https://domain.nifty.com/cp/ddns/DdnsIpChangeAdd.do?change_type=ip` ; # 2008/12/3 のniftyのddnsリニューアルに伴い変更


#   print "finish change ip address\n"; # 確認用の文を出力

}