}
-bool MyDNSBackend::list(const string &target, int zoneId, bool include_disabled) {
+bool MyDNSBackend::list(const DNSName &target, int zoneId, bool include_disabled) {
string query;
string sname;
SSqlStatement::row_t rrow;
return true;
}
-bool MyDNSBackend::getSOA(const string& name, SOAData& soadata, DNSPacket*) {
+bool MyDNSBackend::getSOA(const DNSName& name, SOAData& soadata, DNSPacket*) {
string query;
SSqlStatement::row_t rrow;
if (name.empty())
return false;
- string dotname = name+".";
+ string dotname = name.toString()+".";
try {
d_soaQuery_stmt->
reset();
}
catch (SSqlException &e) {
- throw PDNSException("MyDNSBackend unable to get soa for domain "+name+": "+e.txtReason());
+ throw PDNSException("MyDNSBackend unable to get soa for domain "+name.toString()+": "+e.txtReason());
}
if (d_result.empty()) return false;
return true;
}
-void MyDNSBackend::lookup(const QType &qtype, const string &qname, DNSPacket *p, int zoneId) {
+void MyDNSBackend::lookup(const QType &qtype, const DNSName &qname, DNSPacket *p, int zoneId) {
string query;
string sname;
string zoneIdStr = itoa(zoneId);
DLOG(L<<Logger::Debug<<"MyDNSBackend::lookup(" << qtype.getName() << "," << qname << ",p," << zoneId << ")" << endl);
- sname = qname;
+ sname = qname.toString();
sname += ".";
if (zoneId < 0) {
reset();
}
catch (SSqlException &e) {
- throw PDNSException("MyDNSBackend unable to lookup "+qname+": "+e.txtReason());
+ throw PDNSException("MyDNSBackend unable to lookup "+qname.toString()+": "+e.txtReason());
}
if (d_result.empty() == false) {
reset();
}
catch (SSqlException &e) {
- throw PDNSException("MyDNSBackend unable to lookup "+qname+": "+e.txtReason());
+ throw PDNSException("MyDNSBackend unable to lookup "+qname.toString()+": "+e.txtReason());
}
if(d_result.empty()) {
if (qname.length() == d_origin.length())
host = "";
else
- host = qname.substr(0, (qname.length() - d_origin.length())-1);
+ host = qname.toString().substr(0, (qname.length() - d_origin.length())-1);
try {
if (qtype.getCode()==QType::ANY) {
- string dotqname = qname+".";
+ string dotqname = qname.toString()+".";
d_query_stmt = d_anyQuery_stmt;
d_query_stmt->
bind("domain_id", zoneId)->
}
}
catch (SSqlException &e) {
- throw PDNSException("MyDNSBackend unable to lookup "+qname+": "+e.txtReason());
+ throw PDNSException("MyDNSBackend unable to lookup "+qname.toString()+": "+e.txtReason());
}
- d_qname = qname;
+ d_qname = qname.toString();
}
}
// use this to distinguish between select with 'name' field (list()) and one without
rr.qname=d_qname;
} else {
- rr.qname=rrow[5];
- if (!rr.qname.empty() && rr.qname[rr.qname.length()-1] == '.') {
- rr.qname.erase(rr.qname.length()-1); // Fully qualified, nuke the last .
+ string tmpQname = rrow[5];
+
+ //TODO: Refactor
+ if (!tmpQname.empty() && tmpQname[tmpQname.length()-1] == '.') {
+ tmpQname.erase(tmpQname.length()-1); // Fully qualified, nuke the last .
} else {
- if (!rr.qname.empty())
- rr.qname += ".";
- rr.qname += d_origin; // Not fully qualified
+ if (!tmpQname.empty()) {
+ tmpQname += ".";
+ }
+ tmpQname += d_origin; // Not fully qualified
}
+ rr.qname = DNSName(tmpQname);
}
if (rr.qtype.getCode() == QType::NS || rr.qtype.getCode()==QType::MX ||
declare(suffix,"use-minimal-ttl","Setting this to 'yes' will make the backend behave like MyDNS on the TTL values. Setting it to 'no' will make it ignore the minimal-ttl of the zone.","yes");
}
- MyDNSBackend *make(const string &suffix = "") {
+ DNSBackend *make(const string &suffix="") {
return new MyDNSBackend(suffix);
}
class MyDNSBackend : public DNSBackend
{
public:
- MyDNSBackend(const string &suffix="");
+ MyDNSBackend(const string &suffix);
~MyDNSBackend();
- void lookup(const QType &, const string &qdomain, DNSPacket *p=0, int zoneId=-1);
- bool list(const string &target, int domain_id, bool include_disabled=false);
+ void lookup(const QType &, const DNSName &qdomain, DNSPacket *p=0, int zoneId=-1);
+ bool list(const DNSName &target, int domain_id, bool include_disabled=false);
bool get(DNSResourceRecord &r);
- bool getSOA(const string& name, SOAData& soadata, DNSPacket*);
+ bool getSOA(const DNSName& name, SOAData& soadata, DNSPacket*);
private:
SMySQL *d_db;
SSqlStatement* d_basicQuery_stmt;
SSqlStatement* d_anyQuery_stmt;
};
-#endif /* MYDNSBACKEND_HH */
+
+#endif /* MYDNSBACKEND_HH */
\ No newline at end of file