no-image

value-domainのDDNS更新スクリプト

今まで自宅サーバのDNSの更新はDiCEでやってたんだけど、value-domainの設定がうまく動かなくて仕方なくdyndnsだかno-ipだかに登録したものをcnameで持ってくるみたいなキモすぎる設定になってたんだけど、せっかくOS入れ替えたので、スクリプトでも書いてみようと思ってぐぐったら川o・-・)<2nd life – rubyのhttp-access2という記事を発見したので喜んで動かしてみた。

しかしttlの設定かなんかが抜けてて動かなかった。ので適当に追加して動くようにした。

残念ながらソースコードは汚い。自分用なんだ。しかも今回は日記で書くネタがないからリポジトリから引っ張り出してきた他人に見せることをまったく考慮してないソースなんだ。うん。そもそも文法すら知らないRubyだし。


#!/usr/bin/env ruby
require 'http-access2'
def get_ip_address
  c = HTTPAccess2::Client.new
  #ip_url = 'http://taruo.net/e/'
  #param_list = c.request('GET', ip_url).content.scan(/<tt>(.*?)</tt>/)
  #ip_addr = param_list[1][0].strip.gsub(/241/, "")
  ip_url = 'http://checkip.dyndns.org/'
  ip_addr = c.request('GET', ip_url).content.scan(/<body>.*?:(.*?)</body>/)[0][0].strip
  return ip_addr
end
def get_before_ip_address
  file = open("log.txt")
  return file.gets.strip
end
def set_before_ip_address(ip_addr)
  file = open("log.txt", "w")
  file.puts ip_addr
  file.close
end
username = ''
password = ''
dnsid = '' #自分のhostのid。htmlソースとかに乗ってるのでログインすれば確かめられる。
ip_addr = get_ip_address
records = <<EOF
a @ #{ip_addr}
a www #{ip_addr}
EOF
login_uri = 'http://www.value-domain.com/login.php'
l_action = 'login2'
moddns_uri = 'http://www.value-domain.com/moddnsfree.php'
action = 'moddns3'
if ip_addr == get_before_ip_address then
  exit
end
c = HTTPAccess2::Client.new
c.set_cookie_store("cookie.dat")
c.request('POST',login_uri, {'username' => username , 'password' => password, 'action' => l_action , 'location' => '' ,'email'=>'','domainname'=>''})
c.request('POST',moddns_uri, {'action' => action , 'dnsid' => dnsid , 'records' => records, 'box' => '', 'ttl' => '120' })
c.save_cookie_store
set_before_ip_address(ip_addr)