/* $ModDesc: Povides a proof-of-concept test /WOOT command */
-class MyResolver : public Resolver
+class MyV6Resolver : public Resolver
{
+ bool fw;
public:
- MyResolver(const std::string &source, bool forward, const std::string &dnsserver = "") : Resolver(source, forward, dnsserver) { }
+ MyV6Resolver(const std::string &source, bool forward) : Resolver(source, forward ? DNS_QUERY_AAAA : DNS_QUERY_PTR6)
+ {
+ fw = forward;
+ }
virtual void OnLookupComplete(const std::string &result)
{
- log(DEBUG,"*** RESOLVER COMPLETED LOOKUP, IP IS: '%s'",result.c_str());
+ log(DEBUG,"*** RESOLVER COMPLETED %s LOOKUP, IP IS: '%s'",fw ? "FORWARD" : "REVERSE", result.c_str());
}
- virtual void OnError(ResolverError e)
+ virtual void OnError(ResolverError e, const std::string &errormessage)
{
- log(DEBUG,"*** RESOLVER GOT ERROR: %d",e);
+ log(DEBUG,"*** RESOLVER GOT ERROR: %d: %s",e,errormessage.c_str());
}
};
this->source = "m_testcommand.so";
}
- void Handle (char **parameters, int pcnt, userrec *user)
+ void Handle (const char** parameters, int pcnt, userrec *user)
{
/* We dont have to worry about deleting 'r', the core will
* do it for us as required.*/
- MyResolver* r = new MyResolver("brainbox.ath.cx", true);
- Srv->AddResolver(r);
+
+ try
+ {
+ MyV6Resolver* r = new MyV6Resolver("shake.stacken.kth.se", true);
+ Srv->AddResolver(r);
+ r = new MyV6Resolver("2001:6b0:1:ea:202:a5ff:fecd:13a6", false);
+ Srv->AddResolver(r);
+ }
+ catch (ModuleException& e)
+ {
+ log(DEBUG,"Danger, will robinson! There was an exception: %s",e.GetReason());
+ }
}
};