DDNSクライアントサービスを作ってみる.
スキルチャージプログラムでいただいたサーバをDDNSに登録しようかと.
ただ,一般的に使われるDiCEというクライアントアプリケーションはWindowsサービスで起動できない.
サービスで動いてくれないとサーバが再起動したときに,ログインするまでDDNSの更新作業が動作しない.
#どうやら有料版のDiCEはサービス登録できるらしいのだが,
というわけで,今回はサービス登録できるDDNSクライアントを作ってみた.
最初,Windowsサービスを作る方法を調べていたのだけれど
まさに同じようなことを考えていた人がw
#この人もスキルチャージプログラムに登録していた気がする
これのTimerコントロールのイベントにDDNS更新を書いてやればいい.
今回はDynamicDoを利用したので,以下の方法で更新すればいい模様.
定期的に自動で更新するには、 HTTPクライアントから下記URLを読み込んでください。
http://ddo.jp/dnsupdate.php?dn=ドメイン&pw=パスワード
(無料サービスの場合は http://free.ddo.jp/......)
そいで,具体的にはWebClientで上記での指定のアドレスを読み込めばいいんじゃないかと,ソースを書いてみる.
Private Sub Timer_Elapsed(ByVal sender As System.Object, ByVal e As System.Timers.ElapsedEventArgs) Handles Timer.Elapsed Dim regkey As Microsoft.Win32.RegistryKey = Microsoft.Win32.Registry.LocalMachine.OpenSubKey("Software\Verusoft\DynamicDoClient", False) If Not (regkey Is Nothing) Then Dim username As String = regkey.GetValue("username") Dim password As String = regkey.GetValue("password") Dim logfilepath As String = regkey.GetValue("logfilepath") Dim url As String = "http://free.ddo.jp/dnsupdate.php?" Dim wc As New Net.WebClient() Dim sw As New IO.StreamWriter(logfilepath, True) Dim html As IO.Stream = wc.OpenRead(url + "dn=" + username + "&pw=" + password) Dim sr As New IO.StreamReader(html, System.Text.Encoding.UTF8) sw.WriteLine("Send Query to DynamicDo!") sw.WriteLine(DateTime.Now.ToString) sw.WriteLine("username:" + username) sw.WriteLine("password:" + password) sw.WriteLine(sr.ReadToEnd) sw.WriteLine("================================================================================") sw.Close() End If End Sub
レジストリからユーザー名とパスワードを読み込んで,Getしているだけなんだけど,十分動いてくれている.
これでようやく,外部から参照できるね!