【追記】
メールをよく読むと新しい課金システムを導入するだけで、無料化はそのままと書いてあった。でも、毎月confirmするの面倒だから、No-IPは退会しよう。
【/追記】
なんかメールが来ていて、「後数カ月したらサブスクリプション導入するよ」と書いてあったので、irc.noizumi.org のDDNSを考えなくてはいけなくなった。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
$hosts = gethostbynamel('home.example.com'); $myip= file_get_contents('https://server.example.com/ip.txt'); if($hosts[0]!=$myip){ //if(TRUE){ $params = array( 'username' => 'xsvxXXXXXXX', 'password' => 'password', 'sv' => 'sv000', 'service' => 'xserver', 'action_user_login'=>'true' ); $ch = curl_init(); $fp = fopen("tmp", "w"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_COOKIEJAR, "cookie"); // curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_WRITEHEADER, $fp); curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/x-www-form-urlencoded')); curl_setopt($ch, CURLOPT_POST, TRUE); curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($params)); curl_setopt($ch, CURLOPT_URL, 'https://secure.xserver.ne.jp/xserver/sv000/'); // ログイン $output = curl_exec($ch); // print "CURL OUTPUT:\n{$output}\n"; $params = array( 'dns_id' => '00000000', 'dns_host' => 'home', 'dns_type' => 'A', 'dns_content' => $myip, 'dns_prio'=>'0', 'action_user_dns_edit_index'=>mb_convert_encoding('変更', 'eucjp-win','UTF-8'), 'did'=>'example.com' ); curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($params)); curl_setopt($ch, CURLOPT_URL, 'https://secure.xserver.ne.jp/xserver/sv000/?action_user_dns_list=on&did=example.com'); // DNSレコード設定 $output = curl_exec($ch); // print "CURL OUTPUT:\n{$output}\n"; if(preg_match('/.*name="id" value="(.*)"/', $output, $matches)){ unset($params['action_user_dns_edit_index']); $params['action_user_dns_edit_conf'] = mb_convert_encoding('DNSレコードの編集(確認)', 'eucjp-win','UTF-8'); $params['id'] = $matches[1]; curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($params)); curl_setopt($ch, CURLOPT_URL, 'https://secure.xserver.ne.jp/xserver/sv000/?action_user_dns_list=on&did=example.com'); // 変更確認 $output = curl_exec($ch); // print "CURL OUTPUT:\n{$output}\n"; } if(preg_match('/.*name="uniqid" value="(.*)"/', $output, $matches)){ unset($params['id']); unset($params['action_user_dns_edit_conf']); $params['uniqid'] = $matches[1]; $params['action_user_dns_edit_do'] = mb_convert_encoding('DNSレコードの変更(確定)', 'eucjp-win','UTF-8'); curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($params)); curl_setopt($ch, CURLOPT_URL, 'https://secure.xserver.ne.jp/xserver/sv000/?action_user_dns_list=on&did=example.com'); // 変更確定 $output = curl_exec($ch); print "CURL OUTPUT:\n{$output}\n"; } fclose($fp); curl_close($ch); } |
そこで、xserver のサーバーパネルを操作するプログラム組んだ。
レンタルサーバーで家の回線のIPアドレスを出力するプログラムを走らせて、それとDNSで引いたIPアドレスが同一かを比較し、違っていたらサーバーパネルのDNS設定で、IPアドレスを変更するというプログラム
割と顰蹙物だと思うので、分かる人だけ使ってくらさい :-p