|
|||
|
|||
|
#include <dns.h>
Inheritance diagram for Resolver:


Public Member Functions | |
| Resolver (InspIRCd *Instance, const std::string &source, QueryType qt, bool &cached, Module *creator=NULL) | |
| Initiate DNS lookup. | |
| virtual | ~Resolver () |
| The default destructor does nothing. | |
| virtual void | OnLookupComplete (const std::string &result, unsigned int ttl, bool cached, int resultnum=0)=0 |
| When your lookup completes, this method will be called. | |
| virtual void | OnError (ResolverError e, const std::string &errormessage) |
| If an error occurs (such as NXDOMAIN, no domain name found) then this method will be called. | |
| int | GetId () |
| Returns the id value of this class. | |
| Module * | GetCreator () |
| Returns the creator module, or NULL. | |
| void | TriggerCachedResult () |
| If the result is a cached result, this triggers the objects OnLookupComplete. | |
Protected Attributes | |
| InspIRCd * | ServerInstance |
| Pointer to creator. | |
| Module * | Creator |
| Pointer to creator module (if any, or NULL). | |
| std::string | input |
| The input data, either a host or an IP address. | |
| QueryType | querytype |
| True if a forward lookup is being performed, false if otherwise. | |
| std::string | server |
| The DNS erver being used for lookups. | |
| int | myid |
| The ID allocated to your lookup. | |
| CachedQuery * | CQ |
| Cached result, if there is one. | |
| int | time_left |
| Time left before cache expiry. | |
It can do forward and reverse IPv4 lookups, and where IPv6 is supported, will also be able to do those, transparent of protocols. Module developers must extend this class via inheritence, and then insert a pointer to their derived class into the core using Server::AddResolver(). Once you have done this, the class will be able to receive callbacks. There are two callbacks which can occur by calling virtual methods, one is a success situation, and the other an error situation.
Definition at line 182 of file dns.h.
|
||||||||||||||||||||||||
|
Initiate DNS lookup. Your class should not attempt to delete or free these objects, as the core will do this for you. They must always be created upon the heap using new, as you cannot be sure at what time they will be deleted. Allocating them on the stack or attempting to delete them yourself could cause the object to go 'out of scope' and cause a segfault in the core if the result arrives at a later time.
Definition at line 960 of file dns.cpp. References CachedQuery::CalcTTLRemaining(), CQ, DEBUG, DNS::DelCache(), DNS_QUERY_A, DNS_QUERY_AAAA, DNS_QUERY_CNAME, DNS_QUERY_PTR, DNS_QUERY_PTR4, DNS_QUERY_PTR6, DNS::GetCache(), DNS::GetCName(), DNS::GetIP(), DNS::GetIP6(), DNS::GetName(), DNS::GetNameForce(), irc::sockets::insp_aton(), LogManager::Log(), InspIRCd::Logs, myid, OnError(), PROTOCOL_IPV4, PROTOCOL_IPV6, querytype, InspIRCd::Res, RESOLVER_BADIP, RESOLVER_NSDOWN, ServerInstance, and time_left. |
|
|
The default destructor does nothing.
|
|
|
Returns the creator module, or NULL.
Definition at line 1055 of file dns.cpp. References Creator. |
|
|
Returns the id value of this class. This is primarily used by the core to determine where in various tables to place a pointer to your class, but it is safe to call and use this method. As specified in RFC1035, each dns request has a 16 bit ID value, ranging from 0 to 65535. If there is an issue and the core cannot send your request, this method will return -1. Definition at line 1050 of file dns.cpp. References myid. Referenced by DNS::AddResolverClass(). |
|
||||||||||||
|
If an error occurs (such as NXDOMAIN, no domain name found) then this method will be called.
Reimplemented in CGIResolver, DNSBLResolver, SQLresolver, SecurityIPResolver, ServernameResolver, and UserResolver. Definition at line 1038 of file dns.cpp. Referenced by DNS::CleanResolvers(), DNS::HandleEvent(), Resolver(), and RequestTimeout::Tick(). |
|
||||||||||||||||||||
|
When your lookup completes, this method will be called.
Implemented in CGIResolver, DNSBLResolver, SQLresolver, SecurityIPResolver, ServernameResolver, and UserResolver. Referenced by DNS::HandleEvent(), and TriggerCachedResult(). |
|
|
If the result is a cached result, this triggers the objects OnLookupComplete. This is done because it is not safe to call the abstract virtual method from the constructor. Definition at line 953 of file dns.cpp. References CQ, CachedQuery::data, OnLookupComplete(), and time_left. |
|
|
Cached result, if there is one.
Definition at line 216 of file dns.h. Referenced by Resolver(), and TriggerCachedResult(). |
|
|
Pointer to creator module (if any, or NULL).
Definition at line 192 of file dns.h. Referenced by GetCreator(). |
|
|
The input data, either a host or an IP address.
|
|
|
The ID allocated to your lookup. This is a pseudo-random number between 0 and 65535, a value of -1 indicating a failure. The core uses this to route results to the correct objects. Definition at line 211 of file dns.h. Referenced by GetId(), and Resolver(). |
|
|
True if a forward lookup is being performed, false if otherwise.
Definition at line 200 of file dns.h. Referenced by Resolver(). |
|
|
The DNS erver being used for lookups. If this is an empty string, the value of ServerConfig::DNSServer is used instead. |
|
|
Pointer to creator.
Definition at line 188 of file dns.h. Referenced by UserResolver::OnError(), SecurityIPResolver::OnError(), ServernameResolver::OnError(), SQLresolver::OnError(), CGIResolver::OnError(), UserResolver::OnLookupComplete(), ServernameResolver::OnLookupComplete(), DNSBLResolver::OnLookupComplete(), CGIResolver::OnLookupComplete(), and Resolver(). |
|
|
Time left before cache expiry.
Definition at line 221 of file dns.h. Referenced by Resolver(), and TriggerCachedResult(). |