Developing plug-ins for Simple DNS Plus (v. 5.2 and later)

NOTE: This article is specific to Simple DNS Plus v. 5.2 and later
Other versions of this article are available for:
Simple DNS Plus v. 5.0 / 5.1
 

Plug-ins can be developed in any .NET 2.0 (or later) language including Visual Basic.NET and C#.

The standard Simple DNS Plus installation includes the "sdnsplugin.dll" file (and "sdnsplugin.xml" file to provide Visual Studio intellisense) in the main installation directory.

To create your own plug-in for Simple DNS Plus, create a .NET 2.0 (or later) library (.dll file) that references "sdnsplugin.dll" with a public class that implements one (and only one) of the following 6 interfaces:

  • JHSoftware.SimpleDNS.Plugin.IGetHostPlugIn
    For plug-ins designed to fetch a single host record (A or AAAA) - that is the IP address (IPv4/IPv6) for a host name - and optionally the reverse (PTR).
     
  • JHSoftware.SimpleDNS.Plugin.IGetAnswerPlugIn
    For plug-ins designed to fetch multiple DNS records of any type.
    NOTE: Plug-ins based on this interface only work with the "unlimited zones" license type.
     
  • JHSoftware.SimpleDNS.Plugin.IIgnoreRequestPlugIn
    For plug-ins that instruct Simple DNS Plus to ignore (not answer) a DNS request when the DNS request meets conditions defined and evaluated by the plug-in.
     
  • JHSoftware.SimpleDNS.Plugin.ISkipPlugIn
    For plug-ins that instruct Simple DNS Plus to skip some or all of the following plug-in instances when a DNS request meets conditions defined and evaluated by the plug-in.
    This works similar to a script statement "IF <condition> THEN GOTO X" providing powerful flow control to the plug-in instances list.
     
  • JHSoftware.SimpleDNS.Plugin.ICloneAnswerPlugIn
    For plug-ins that instruct Simple DNS Plus to create a cloned response (clone the records in the response to a request for another domain name provided by the plug-in).
    NOTE: This interface requires Simple DNS Plus v. 5.2 build 111 or later.
    NOTE: Plug-ins based on this interface only work with the "unlimited zones" license type.
     
  • JHSoftware.SimpleDNS.Plugin.IPlugInBase
    For plug-ins that do not process DNS requests directly, but provide some other related functionality.

Additionally the plug-in class may implement one or more of the following interfaces:

  • JHSoftware.SimpleDNS.Plugin.IListsDomainName
    Implement this interface in plug-ins that in some way lists domain names. This can be used to create DNS request access rules for other plug-ins. I.E. "allow access if plug-in xyz lists the requested domain name".
     
  • JHSoftware.SimpleDNS.Plugin.IListsIPAddress
    Implement this interface in plug-ins that in some way lists IP addresses. This can be used to create DNS request access rules for other plug-ins. I.E. "allow access if plug-in xyz lists the sender's IP address".
     
  • JHSoftware.SimpleDNS.Plugin.IQuestions
    Implement this interface in plug-ins that provide one or more questions that Simple DNS Plus can ask of the plug-in.
    In Simple DNS Plus v. 5.2, these questions are used only in DNS request access rules for other plug-ins. Future Simple DNS Plus versions may define other uses for them.
     
  • JHSoftware.SimpleDNS.Plugin.ISignal
    Plug-in specific signaling between plug-in and Simple DNS Plus.
    Used for unique plug-in situations which require extra information to be passed between the plug-in and Simple DNS Plus. Also allows for the implementation of new features without changing the plug-in interfaces. Plug-in developers who need to retrieve/update settings etc. which are not provided by other plug-in methods may request a unique signal code for this.
     
  • JHSoftware.SimpleDNS.Plugin.ITSIGUpdateHost
    Implement this interface in plug-ins which can authenticate and process TSIG signed dynamic update requests for a single host record.
     
  • JHSoftware.SimpleDNS.Plugin.IUpdateHost
    Implement this interface in plug-ins that need to update DNS host records in local DNS zones.
     
  • JHSoftware.SimpleDNS.Plugin.IViewUI
    Implement this interface in plug-ins that provide a View (main Simple DNS Plus Window / View menu).
     

Your compiled library must be placed in the "plugins" sub-directory of the directory where Simple DNS Plus is installed, and it will appear in the plug-in components list in the Options dialog.

REFERENCES:
For more information, please see the following knowledge base articles:

 
KB Article Integration and scripting options
KB Article Plug-ins in Simple DNS Plus
Connect