-inline string& toLowerByRef( string& str )
-{
- for( unsigned int i = 0; i < str.length(); i++ )
- {
- str[i] = dns_tolower( str[i] );
- }
-
- return str;
-}
-
-
-
OdbxBackend::OdbxBackend( const string& suffix )
{
vector<string> hosts;
-bool OdbxBackend::getDomainInfo( const string& domain, DomainInfo& di )
+bool OdbxBackend::getDomainInfo( const DNSName& domain, DomainInfo& di )
{
const char* tmp;
DLOG( L.log( m_myname + " getDomainInfo()", Logger::Debug ) );
string stmt = getArg( "sql-zoneinfo" );
- string& stmtref = strbind( ":name", escape( toLower( domain ), READ ), stmt );
+ string& stmtref = strbind( ":name", escape( domain.makeLowerCase().toStringRootDot(), READ ), stmt );
if( !execStmt( stmtref.c_str(), stmtref.size(), READ ) ) { return false; }
if( !getRecord( READ ) ) { return false; }
if( ( tmp = odbx_field_value( m_result, 1 ) ) != NULL )
{
- di.zone = DNSName(string( tmp, odbx_field_length( m_result, 1 ) ));
+ di.zone = DNSName(string( tmp, odbx_field_length( m_result, 1 ) ));
}
if( ( tmp = odbx_field_value( m_result, 0 ) ) != NULL )
DLOG( L.log( m_myname + " getSOA()", Logger::Debug ) );
string stmt = getArg( "sql-lookupsoa" );
- string& stmtref = strbind( ":name", escape( domain.toStringNoDot(), READ ), stmt );
+ string& stmtref = strbind( ":name", escape( domain.makeLowerCase().toStringRootDot(), READ ), stmt );
if( !execStmt( stmtref.c_str(), stmtref.size(), READ ) ) { return false; }
if( !getRecord( READ ) ) { return false; }
if( sd.nameserver.empty() )
{
- sd.nameserver = DNSName(arg()["default-soa-name"]);
+ sd.nameserver = DNSName(arg()["default-soa-name"]);
}
if( sd.hostmaster.empty() )
{
- sd.hostmaster = DNSName("hostmaster") + DNSName(domain);
+ sd.hostmaster = DNSName("hostmaster") + DNSName(domain);
}
sd.db = this;
{
DLOG( L.log( m_myname + " list()", Logger::Debug ) );
- m_qname.clear();
+ m_qname.clear();
m_result = NULL;
int len = snprintf( m_buffer, sizeof( m_buffer ) - 1, "%d", zoneid );
{
if( qtype.getCode() == QType::ANY )
{
- stmt = getArg( "sql-lookupid" );
+ stmt = getArg( "sql-lookupid" );
} else {
stmt = getArg( "sql-lookuptypeid" );
stmtref = strbind( ":type", qtype.getName(), stmt );
stmtref = strbind( ":id", string( m_buffer, len ), stmtref );
}
- string tmp = qname.toStringNoDot();
- stmtref = strbind( ":name", escape( toLowerByRef( tmp ), READ ), stmtref );
+ stmtref = strbind( ":name", escape( qname.makeLowerCase().toStringRootDot(), READ ), stmtref );
if( !execStmt( stmtref.c_str(), stmtref.size(), READ ) )
{
if( m_qname.empty() && ( tmp = odbx_field_value( m_result, 1 ) ) != NULL )
{
- rr.qname = DNSName( string(tmp, odbx_field_length( m_result, 1 ) ));
+ rr.qname = DNSName( string(tmp, odbx_field_length( m_result, 1 ) ));
}
if( ( tmp = odbx_field_value( m_result, 2 ) ) != NULL )
-bool OdbxBackend::isMaster( const string& domain, const string& ip )
+bool OdbxBackend::isMaster( const DNSName& domain, const string& ip )
{
try
{
DLOG( L.log( m_myname + " isMaster()", Logger::Debug ) );
string stmt = getArg( "sql-master" );
- string& stmtref = strbind( ":name", escape( toLower( domain ), READ ), stmt );
+ string& stmtref = strbind( ":name", escape( domain.makeLowerCase().toStringRootDot(), READ ), stmt );
if( !execStmt( stmtref.c_str(), stmtref.size(), READ ) ) { return false; }
if( !getRecord( READ ) ) { return false; }
-bool OdbxBackend::superMasterBackend( const string& ip, const string& domain, const vector<DNSResourceRecord>& set, string *nameserver, string* account, DNSBackend** ddb )
+bool OdbxBackend::superMasterBackend( const string& ip, const DNSName& domain, const vector<DNSResourceRecord>& set, string *nameserver, string* account, DNSBackend** ddb )
{
try
{
-bool OdbxBackend::createSlaveDomain( const string& ip, const string& domain, const string &nameserver, const string& account )
+bool OdbxBackend::createSlaveDomain( const string& ip, const DNSName& domain, const string &nameserver, const string& account )
{
try
{
return false;
}
- string tmp = domain;
- int len = snprintf( m_buffer, sizeof( m_buffer ) - 1, getArg( "sql-insert-slave" ).c_str(), escape( toLowerByRef( tmp ), WRITE ).c_str(),
+ int len = snprintf( m_buffer, sizeof( m_buffer ) - 1, getArg( "sql-insert-slave" ).c_str(), escape( domain.makeLowerCase().toStringRootDot(), WRITE ).c_str(),
escape( ip, WRITE ).c_str(), escape( account, WRITE ).c_str() );
if( len < 0 )
return false;
}
- string tmp = rr.qname.toStringNoDot();
-
unsigned int priority=0;
string content(rr.content);
}
int len = snprintf( m_buffer, sizeof( m_buffer ) - 1, getArg( "sql-insert-record" ).c_str(), rr.domain_id,
- escape( toLowerByRef( tmp ), WRITE ).c_str(), rr.qtype.getName().c_str(), rr.ttl, priority,
+ escape( rr.qname.makeLowerCase().toStringRootDot(), WRITE ).c_str(), rr.qtype.getName().c_str(), rr.ttl, priority,
escape( content, WRITE ).c_str() );
if( len < 0 )
-bool OdbxBackend::startTransaction( const string& domain, int zoneid )
+bool OdbxBackend::startTransaction( const DNSName& domain, int zoneid )
{
try
{
return false;
}
- string stmtref = getArg( "sql-transactbegin" );
- if( !execStmt( stmtref.c_str(), stmtref.size(), WRITE ) ) { return false; }
+ string stmtref = getArg( "sql-transactbegin" );
+ if( !execStmt( stmtref.c_str(), stmtref.size(), WRITE ) ) { return false; }
int len = snprintf( m_buffer, sizeof( m_buffer ) - 1, "%d", zoneid );
if( len < 0 )
}
if(zoneid >= 0) {
- string stmt = getArg( "sql-zonedelete" );
- stmtref = strbind( ":id", string( m_buffer, len ), stmt );
- if( !execStmt( stmtref.c_str(), stmtref.size(), WRITE ) ) { return false; }
+ string stmt = getArg( "sql-zonedelete" );
+ stmtref = strbind( ":id", string( m_buffer, len ), stmt );
+ if( !execStmt( stmtref.c_str(), stmtref.size(), WRITE ) ) { return false; }
}
}
catch ( std::exception& e )
bool list( const DNSName& target, int domain_id, bool include_disabled=false ) override;
bool get( DNSResourceRecord& rr ) override;
- bool startTransaction( const string& domain, int domain_id ) override;
+ bool startTransaction( const DNSName& domain, int domain_id ) override;
bool commitTransaction() override;
bool abortTransaction() override;
- bool isMaster( const string& domain, const string& ip ) override;
- bool getDomainInfo( const string& domain, DomainInfo& di ) override;
+ bool isMaster( const DNSName& domain, const string& ip ) override;
+ bool getDomainInfo( const DNSName& domain, DomainInfo& di ) override;
bool feedRecord( const DNSResourceRecord& rr, const DNSName& ordername ) override;
- bool createSlaveDomain( const string& ip, const string& domain, const string &nameserver, const string& account ) override;
- bool superMasterBackend( const string& ip, const string& domain, const vector<DNSResourceRecord>& nsset, string *nameserver, string* account, DNSBackend** ddb ) override;
+ bool createSlaveDomain( const string& ip, const DNSName& domain, const string &nameserver, const string& account ) override;
+ bool superMasterBackend( const string& ip, const DNSName& domain, const vector<DNSResourceRecord>& nsset, string *nameserver, string* account, DNSBackend** ddb ) override;
void getUpdatedMasters( vector<DomainInfo>* updated ) override;
void getUnfreshSlaveInfos( vector<DomainInfo>* unfresh ) override;
OdbxLoader()
{
BackendMakers().report( &factory );
- L<< Logger::Info << "[opendbxbackend] This is the opendbx backend version " VERSION
+ L<< Logger::Info << "[opendbxbackend] This is the opendbx backend version " VERSION
#ifndef REPRODUCIBLE
- << " (" __DATE__ " " __TIME__ ")"
+ << " (" __DATE__ " " __TIME__ ")"
#endif
- << " reporting" << endl;
+ << " reporting" << endl;
}
};