declare(suffix, "basic-query", "Basic query", record_query+" disabled=0 and type='%s' and name='%s'");
declare(suffix, "id-query", "Basic with ID query", record_query+" disabled=0 and type='%s' and name='%s' and domain_id=%d");
- declare(suffix, "wildcard-query", "Wildcard query", record_query+" disabled=0 and type='%s' and name like '%s'");
- declare(suffix, "wildcard-id-query", "Wildcard with ID query", record_query+" disabled=0 and type='%s' and name like '%s' and domain_id='%d'");
-
declare(suffix, "any-query", "Any query", record_query+" disabled=0 and name='%s'");
declare(suffix, "any-id-query", "Any with ID query", record_query+" disabled=0 and name='%s' and domain_id=%d");
- declare(suffix, "wildcard-any-query", "Wildcard ANY query", record_query+" disabled=0 and name like '%s'");
- declare(suffix, "wildcard-any-id-query", "Wildcard ANY with ID query", record_query+" disabled=0 and name like '%s' and domain_id='%d'");
declare(suffix, "list-query", "AXFR query", record_query+" (disabled=0 OR %d) and domain_id='%d' order by name, type");
declare(suffix, "list-subzone-query", "Subzone listing", record_query+" disabled=0 and (name='%s' OR name like '%s') and domain_id='%d'");
declare(suffix, "basic-query", "Basic query", record_query+" disabled=0 and type='%s' and name='%s'");
declare(suffix, "id-query", "Basic with ID query", record_query+" disabled=0 and type='%s' and name='%s' and domain_id=%d");
- declare(suffix, "wildcard-query", "Wildcard query", record_query+" disabled=0 and type='%s' and name like '%s'");
- declare(suffix, "wildcard-id-query", "Wildcard with ID query", record_query+" disabled=0 and type='%s' and name like '%s' and domain_id='%d'");
-
declare(suffix, "any-query", "Any query", record_query+" disabled=0 and name='%s'");
declare(suffix, "any-id-query", "Any with ID query", record_query+" disabled=0 and name='%s' and domain_id=%d");
- declare(suffix, "wildcard-any-query", "Wildcard ANY query", record_query+" disabled=0 and name like '%s'");
- declare(suffix, "wildcard-any-id-query", "Wildcard ANY with ID query", record_query+" disabled=0 and name like '%s' and domain_id='%d'");
declare(suffix, "list-query", "AXFR query", record_query+" (disabled=0 OR 1=%d) and domain_id='%d' order by name, type");
declare(suffix, "list-subzone-query", "Subzone listing", record_query+" disabled=0 and (name='%s' OR name like '%s') and domain_id='%d'");
declare(suffix, "basic-query", "Basic query", record_query+" disabled=false and type='%s' and name=E'%s'");
declare(suffix, "id-query", "Basic with ID query", record_query+" disabled=false and type='%s' and name=E'%s' and domain_id=%d");
- declare(suffix, "wildcard-query", "Wildcard query", record_query+" disabled=false and type='%s' and name like E'%s'");
- declare(suffix, "wildcard-id-query", "Wildcard with ID query", record_query+" disabled=false and type='%s' and name like E'%s' and domain_id='%d'");
-
declare(suffix, "any-query", "Any query", record_query+" disabled=false and name=E'%s'");
declare(suffix, "any-id-query", "Any with ID query", record_query+" disabled=false and name=E'%s' and domain_id=%d");
- declare(suffix, "wildcard-any-query", "Wildcard ANY query", record_query+" disabled=false and name like E'%s'");
- declare(suffix, "wildcard-any-id-query", "Wildcard ANY with ID query", record_query+" disabled=false and name like E'%s' and domain_id='%d'");
declare(suffix, "list-query", "AXFR query", record_query+" (disabled=false OR %d::bool) and domain_id='%d' order by name, type");
declare(suffix, "list-subzone-query", "Subzone listing", record_query+" disabled=false and (name=E'%s' OR name like E'%s') and domain_id='%d'");
declare(suffix, "basic-query", "Basic query", record_query+" disabled=0 and type='%s' and name='%s'");
declare(suffix, "id-query", "Basic with ID query", record_query+" disabled=0 and type='%s' and name='%s' and domain_id=%d");
- declare(suffix, "wildcard-query", "Wildcard query", record_query+" disabled=0 and type='%s' and name like '%s'");
- declare(suffix, "wildcard-id-query", "Wildcard with ID query", record_query+" disabled=0 and type='%s' and name like '%s' and domain_id='%d'");
-
declare(suffix, "any-query", "Any query", record_query+" disabled=0 and name='%s'");
declare(suffix, "any-id-query", "Any with ID query", record_query+" disabled=0 and name='%s' and domain_id=%d");
- declare(suffix, "wildcard-any-query", "Wildcard ANY query", record_query+" disabled=0 and name like '%s'");
- declare(suffix, "wildcard-any-id-query", "Wildcard ANY with ID query", record_query+" disabled=0 and name like '%s' and domain_id='%d'");
declare(suffix, "list-query", "AXFR query", record_query+" (disabled=0 OR %d) and domain_id='%d' order by name, type");
declare(suffix, "list-subzone-query", "Subzone listing", record_query+" disabled=0 and (name='%s' OR name like '%s') and domain_id=%d");
d_dnssecQueries = false;
}
- d_noWildCardNoIDQuery=getArg("basic-query");
- d_noWildCardIDQuery=getArg("id-query");
- d_wildCardNoIDQuery=getArg("wildcard-query");
- d_wildCardIDQuery=getArg("wildcard-id-query");
-
- d_noWildCardANYNoIDQuery=getArg("any-query");
- d_noWildCardANYIDQuery=getArg("any-id-query");
- d_wildCardANYNoIDQuery=getArg("wildcard-any-query");
- d_wildCardANYIDQuery=getArg("wildcard-any-id-query");
-
+ d_NoIdQuery=getArg("basic-query");
+ d_IdQuery=getArg("id-query");
+ d_ANYNoIdQuery=getArg("any-query");
+ d_ANYIdQuery=getArg("any-id-query");
+
d_listQuery=getArg("list-query");
d_listSubZoneQuery=getArg("list-subzone-query");
void GSQLBackend::lookup(const QType &qtype,const string &qname, DNSPacket *pkt_p, int domain_id)
{
- string format;
- char output[1024];
-
string lcqname=toLower(qname);
-
- // lcqname=labelReverse(makeRelative(lcqname, "net"));
+ string query;
if(qtype.getCode()!=QType::ANY) {
- // qtype qname domain_id
- if(domain_id<0) {
- if(qname[0]=='%')
- format=d_wildCardNoIDQuery;
- else
- format=d_noWildCardNoIDQuery;
-
- snprintf(output,sizeof(output)-1, format.c_str(),sqlEscape(qtype.getName()).c_str(), sqlEscape(lcqname).c_str());
- }
- else {
- if(qname[0]!='%')
- format=d_noWildCardIDQuery;
- else
- format=d_wildCardIDQuery;
- snprintf(output,sizeof(output)-1, format.c_str(),sqlEscape(qtype.getName()).c_str(),sqlEscape(lcqname).c_str(),domain_id);
+ if(domain_id < 0) {
+ query = (boost::format(d_NoIdQuery)
+ % sqlEscape(qtype.getName())
+ % sqlEscape(lcqname)
+ ).str();
+ } else {
+ query = (boost::format(d_IdQuery)
+ % sqlEscape(qtype.getName())
+ % sqlEscape(lcqname)
+ % domain_id
+ ).str();
}
- }
- else {
+ } else {
// qtype==ANY
- // qname domain_id
- if(domain_id<0) {
- if(qname[0]=='%')
- format=d_wildCardANYNoIDQuery;
- else
- format=d_noWildCardANYNoIDQuery;
-
- snprintf(output,sizeof(output)-1, format.c_str(),sqlEscape(lcqname).c_str());
- }
- else {
- if(qname[0]!='%')
- format=d_noWildCardANYIDQuery;
- else
- format=d_wildCardANYIDQuery;
- snprintf(output,sizeof(output)-1, format.c_str(),sqlEscape(lcqname).c_str(),domain_id);
+ if(domain_id < 0) {
+ query = (boost::format(d_ANYNoIdQuery)
+ % sqlEscape(lcqname)
+ ).str();
+ } else {
+ query = (boost::format(d_ANYIdQuery)
+ % sqlEscape(lcqname)
+ % domain_id
+ ).str();
}
}
try {
- d_db->doQuery(output);
+ d_db->doQuery(query);
}
catch(SSqlException &e) {
- throw PDNSException(e.txtReason());
+ throw PDNSException("GSQLBackend lookup query:"+e.txtReason());
}
d_qname=qname;
SSql *d_db;
SSql::result_t d_result;
- string d_wildCardNoIDQuery;
- string d_noWildCardNoIDQuery;
- string d_noWildCardIDQuery;
- string d_wildCardIDQuery;
- string d_wildCardANYNoIDQuery;
- string d_noWildCardANYNoIDQuery;
- string d_noWildCardANYIDQuery;
- string d_wildCardANYIDQuery;
+ string d_NoIdQuery;
+ string d_IdQuery;
+ string d_ANYNoIdQuery;
+ string d_ANYIdQuery;
+
string d_listQuery;
string d_listSubZoneQuery;
string d_logprefix;