This document is written so to provide a simple demonstration how to write a simple plugin for DnsIPUpdater. All plugins need to implement the interface IDnsIPPlugin. This interface is found inside DnsIPUpdateBase.dll Reference to the above assembly in visual studio and create a class. The class name has to be DnsIPPlugin.X, where X is the name of the DNS provider you will be using. The plugin must implement the following members: - ProviderName (must be equal to X see above) - Description (a string description) - URL (url to dns provider) - init (called once on init of plugin) - uninit (called once on uninit of plugin) - update (called when an update needs to be done) - UIConfigurationPanel (returns UI Form which can contain additional controls to provide additional configuration *can be null*) The class must also: - provide a static factory method called CreateProvider whose return type is that of IDnsIPPlugin and will return a new instance of the class. - have the namespace DnsIPPlugin Simple Example for DynDns follows: ================================== using System; using System.Collections.Generic; using System.Text; using DnsIPUpdater; using System.Net; namespace DnsIPPlugin { public class DynDns : IDnsIPPlugin { public DynDns() { } public string ProviderName { get { return "DynDns"; } } public string Description { get { return "Updates DynDns.org dynamic ip"; } } public string URL { get { return "www.dyndns.org"; } } public bool init(Pref p) { return true; } public bool uninit(Pref p) { return true; } public bool update(Pref p, string currentHost) { /*http://username:password@members.dyndns.org/nic/update?hostname=yourhostname&myip=ipaddress&wildcard=NOCHG&mx=NOCHG&backmx=NOCHG */ StringBuilder sbdomains = new StringBuilder(); for (int i = 0; i < p.domains.Count; i++) { sbdomains.AppendFormat("{0},", p.domains[i]); } string domains = sbdomains.ToString().Trim(','); //trim trailing , WebClient wc = new WebClient(); string url; string passwrd = Utility.decryptPassword(p.password); if (p.remoteip) { url = string.Format(@"http://{0}:{1}@members.dyndns.org/nic/update?hostname={2}", p.username, passwrd, domains); } else { url = string.Format(@"http://{0}:{1}@members.dyndns.org/nic/update?hostname={2}&myip={3}", p.username, passwrd, domains, currentHost); } string res = wc.DownloadString(url); Logger.Log("Result: " + res); return true; } public object UIConfigurationPanel { get { return null; } } //Factory Method public static IDnsIPPlugin CreateProvider() { return new DynDns(); } } }