Developing plug-ins for Simple DNS Plus

Plug-ins can be developed in any .NET Framework 4.8 programming language including Visual Basic.NET and C#.

The standard Simple DNS Plus installation includes the "sdnscommon.dll" file (and "sdnscommon.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 4.8 library (.dll file) that references "sdnscommon.dll" with a public class that implements one of the following 8 interfaces (ILookupHost, ILookupReverse, and ILookupTXT can be combined - the rest cannot):

  • JHSoftware.SimpleDNS.Plugin.ILookupHost
    For plug-ins designed to fetch a single host record (A or AAAA) - that is the IP address (IPv4/IPv6) for a host name.

  • JHSoftware.SimpleDNS.Plugin.ILookupReverse
    For plug-ins designed to fetch a reverse record (PTR) - that is the host name for an IP address (IPv4/IPv6).

  • JHSoftware.SimpleDNS.Plugin.ILookupTXT
    For plug-ins designed to fetch a single TXT record for a host name.

  • JHSoftware.SimpleDNS.Plugin.ILookupAnswer
    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.IIgnoreRequest
    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.ISkip
    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.ICloneAnswer
    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: Plug-ins based on this interface only work with the "Unlimited zones" license type.

  • JHSoftware.SimpleDNS.Plugin.INoDNS
    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.IOptionsUI
    Implement this interface in plug-ins that provide a user interface to configure plug-in settings.

  • JHSoftware.SimpleDNS.Plugin.IViewUI
    Implement this interface in plug-ins that provide a View (main Simple DNS Plus Window / View menu).

  • JHSoftware.SimpleDNS.Plugin.IState
    Implement this interface in plug-ins that need to store state between runs.

  • 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.
    These questions are used only in DNS request access rules for other plug-ins.

  • 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.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.

Your compiled library must be placed in the "Plugins" sub-directory of the directory where Simple DNS Plus is installed, and it will then appear in the list of available plug-in types when creating a new plug-in instance.

Related KB articles:

 Comments
Be the first to comment on this page:
(Never published. Used for replies and to show your Gravatar icon. Never used for any other purpose.)
Connect