diff options
author | Alejandro Pulver <alepulver@FreeBSD.org> | 2007-02-07 04:04:45 +0000 |
---|---|---|
committer | Alejandro Pulver <alepulver@FreeBSD.org> | 2007-02-07 04:04:45 +0000 |
commit | dc6ea8adb7b4835c7bf4d26f14a8d2f9fa75fdf5 (patch) | |
tree | 36dea4c58514e781047909ae202d96f786501d44 /dns | |
parent | 68452bd59a3c00b8c60d186e1c600c3a030c1410 (diff) | |
download | ports-dc6ea8adb7b4835c7bf4d26f14a8d2f9fa75fdf5.tar.gz ports-dc6ea8adb7b4835c7bf4d26f14a8d2f9fa75fdf5.zip |
Notes
Diffstat (limited to 'dns')
-rw-r--r-- | dns/powerdns-devel/Makefile | 4 | ||||
-rw-r--r-- | dns/powerdns-devel/files/patch-opendbx | 152 | ||||
-rw-r--r-- | dns/powerdns-devel/files/pdns.conf | 2 | ||||
-rw-r--r-- | dns/powerdns-devel/files/pdns.in | 4 | ||||
-rw-r--r-- | dns/powerdns/Makefile | 4 | ||||
-rw-r--r-- | dns/powerdns/files/patch-opendbx | 152 | ||||
-rw-r--r-- | dns/powerdns/files/pdns.conf | 2 | ||||
-rw-r--r-- | dns/powerdns/files/pdns.in | 2 |
8 files changed, 159 insertions, 163 deletions
diff --git a/dns/powerdns-devel/Makefile b/dns/powerdns-devel/Makefile index 9ab118ba1516..5cf4a188428d 100644 --- a/dns/powerdns-devel/Makefile +++ b/dns/powerdns-devel/Makefile @@ -7,7 +7,7 @@ PORTNAME= powerdns PORTVERSION= 2.9.20 -PORTREVISION= 3 +PORTREVISION= 4 CATEGORIES= dns ipv6 MASTER_SITES= http://downloads.powerdns.com/releases/ \ http://mirrors.evolva.ro/powerdns.com/releases/ @@ -98,7 +98,7 @@ PLIST_SUB+= WITHSQLITE="@comment " .endif .if defined(WITH_OPENDBX) -LIB_DEPENDS+= opendbx.1:${PORTSDIR}/databases/opendbx +LIB_DEPENDS+= opendbx.[1-2]:${PORTSDIR}/databases/opendbx CONFIGURE_MODULES+= "opendbx" PLIST_SUB+= WITHOPENDBX="" CXXFLAGS+= -L${LOCALBASE}/lib diff --git a/dns/powerdns-devel/files/patch-opendbx b/dns/powerdns-devel/files/patch-opendbx index 3f24a01e82b4..159f2407298c 100644 --- a/dns/powerdns-devel/files/patch-opendbx +++ b/dns/powerdns-devel/files/patch-opendbx @@ -1,5 +1,5 @@ --- modules/opendbxbackend/odbxbackend.hh 2006-03-15 19:29:39.000000000 +0100 -+++ modules/opendbxbackend/odbxbackend.hh 2006-09-03 11:34:13.000000000 +0200 ++++ modules/opendbxbackend/odbxbackend.hh 2007-01-25 22:16:13.000000000 +0100 @@ -1,11 +1,10 @@ /* * PowerDNS OpenDBX Backend @@ -75,42 +75,46 @@ declare( suffix, "password","Password for connecting to the DBMS",""); - declare( suffix, "sql-list", "AXFR query", "SELECT domain_id, name, type, ttl, prio, content FROM records WHERE domain_id=':id'" ); -+ declare( suffix, "sql-list", "AXFR query", "SELECT domain_id, name, type, ttl, prio, content FROM records WHERE domain_id=:id" ); ++ declare( suffix, "sql-list", "AXFR query", "SELECT \"domain_id\", \"name\", \"type\", \"ttl\", \"prio\", \"content\" FROM \"records\" WHERE \"domain_id\"=:id" ); - declare( suffix, "sql-lookup", "Lookup query","SELECT domain_id, name, type, ttl, prio, content FROM records WHERE name=':name'" ); +- declare( suffix, "sql-lookup", "Lookup query","SELECT domain_id, name, type, ttl, prio, content FROM records WHERE name=':name'" ); - declare( suffix, "sql-lookupid", "Lookup query with id","SELECT domain_id, name, type, ttl, prio, content FROM records WHERE domain_id=':id' AND name=':name'" ); -+ declare( suffix, "sql-lookupid", "Lookup query with id","SELECT domain_id, name, type, ttl, prio, content FROM records WHERE domain_id=:id AND name=':name'" ); - declare( suffix, "sql-lookuptype", "Lookup query with type","SELECT domain_id, name, type, ttl, prio, content FROM records WHERE name=':name' AND type=':type'" ); +- declare( suffix, "sql-lookuptype", "Lookup query with type","SELECT domain_id, name, type, ttl, prio, content FROM records WHERE name=':name' AND type=':type'" ); - declare( suffix, "sql-lookuptypeid", "Lookup query with type and id","SELECT domain_id, name, type, ttl, prio, content FROM records WHERE domain_id=':id' AND name=':name' AND type=':type'" ); -+ declare( suffix, "sql-lookuptypeid", "Lookup query with type and id","SELECT domain_id, name, type, ttl, prio, content FROM records WHERE domain_id=:id AND name=':name' AND type=':type'" ); ++ declare( suffix, "sql-lookup", "Lookup query","SELECT \"domain_id\", \"name\", \"type\", \"ttl\", \"prio\", \"content\" FROM \"records\" WHERE \"name\"=':name'" ); ++ declare( suffix, "sql-lookupid", "Lookup query with id","SELECT \"domain_id\", \"name\", \"type\", \"ttl\", \"prio\", \"content\" FROM \"records\" WHERE \"domain_id\"=:id AND \"name\"=':name'" ); ++ declare( suffix, "sql-lookuptype", "Lookup query with type","SELECT \"domain_id\", \"name\", \"type\", \"ttl\", \"prio\", \"content\" FROM \"records\" WHERE \"name\"=':name' AND \"type\"=':type'" ); ++ declare( suffix, "sql-lookuptypeid", "Lookup query with type and id","SELECT \"domain_id\", \"name\", \"type\", \"ttl\", \"prio\", \"content\" FROM \"records\" WHERE \"domain_id\"=:id AND \"name\"=':name' AND \"type\"=':type'" ); - declare( suffix, "sql-zonedelete","Delete all records for this zone","DELETE FROM records WHERE domain_id=':id'" ); - declare( suffix, "sql-zoneinfo","Get domain info","SELECT d.id, d.name, d.type, d.master, d.last_check, r.content FROM domains AS d LEFT JOIN records AS r ON d.id=r.domain_id WHERE ( d.name=':name' AND r.type='SOA' ) OR ( d.name=':name' AND r.domain_id IS NULL )" ); -+ declare( suffix, "sql-zonedelete","Delete all records for this zone","DELETE FROM records WHERE domain_id=:id" ); -+ declare( suffix, "sql-zoneinfo","Get domain info","SELECT d.id, d.name, d.type, d.master, d.last_check, r.content FROM domains d LEFT JOIN records r ON ( d.id=r.domain_id AND r.type='SOA' ) WHERE d.name=':name' AND d.status='A'" ); ++ declare( suffix, "sql-zonedelete","Delete all records for this zone","DELETE FROM \"records\" WHERE \"domain_id\"=:id" ); ++ declare( suffix, "sql-zoneinfo","Get domain info","SELECT d.\"id\", d.\"name\", d.\"type\", d.\"master\", d.\"last_check\", r.\"content\" FROM \"domains\" d LEFT JOIN \"records\" r ON ( d.\"id\"=r.\"domain_id\" AND r.\"type\"='SOA' ) WHERE d.\"name\"=':name' AND d.\"status\"='A'" ); declare( suffix, "sql-transactbegin", "Start transaction", "BEGIN" ); declare( suffix, "sql-transactend", "Finish transaction", "COMMIT" ); declare( suffix, "sql-transactabort", "Abort transaction", "ROLLBACK" ); - declare( suffix, "sql-insert-slave","Add slave domain", "INSERT INTO domains ( name, type, master, account ) VALUES ( '%s', 'SLAVE', '%s', '%s' )" ); +- declare( suffix, "sql-insert-slave","Add slave domain", "INSERT INTO domains ( name, type, master, account ) VALUES ( '%s', 'SLAVE', '%s', '%s' )" ); - declare( suffix, "sql-insert-record","Feed record into table", "INSERT INTO records ( domain_id, name, type, ttl, prio, content ) VALUES ( '%d', '%s', '%s', '%d', '%d', '%s' )" ); -+ declare( suffix, "sql-insert-record","Feed record into table", "INSERT INTO records ( domain_id, name, type, ttl, prio, content ) VALUES ( %d, '%s', '%s', %d, %d, '%s' )" ); ++ declare( suffix, "sql-insert-slave","Add slave domain", "INSERT INTO \"domains\" ( \"name\", \"type\", \"master\", \"account\" ) VALUES ( '%s', 'SLAVE', '%s', '%s' )" ); ++ declare( suffix, "sql-insert-record","Feed record into table", "INSERT INTO \"records\" ( \"domain_id\", \"name\", \"type\", \"ttl\", \"prio\", \"content\" ) VALUES ( %d, '%s', '%s', %d, %d, '%s' )" ); ++ ++ declare( suffix, "sql-update-serial", "Set zone to notified", "UPDATE \"domains\" SET \"notified_serial\"=%d WHERE \"id\"=%d" ); ++ declare( suffix, "sql-update-lastcheck", "Set time of last check", "UPDATE \"domains\" SET \"last_check\"=%d WHERE \"id\"=%d" ); - declare( suffix, "sql-update-serial", "Set zone to notified", "UPDATE domains SET notified_serial='%d' WHERE id='%d'" ); - declare( suffix, "sql-update-lastcheck", "Set time of last check", "UPDATE domains SET last_check='%d' WHERE id='%d'" ); -+ declare( suffix, "sql-update-serial", "Set zone to notified", "UPDATE domains SET notified_serial=%d WHERE id=%d" ); -+ declare( suffix, "sql-update-lastcheck", "Set time of last check", "UPDATE domains SET last_check=%d WHERE id=%d" ); ++ declare( suffix, "sql-master", "Get master record for zone", "SELECT \"master\" FROM \"domains\" WHERE \"name\"=':name' AND \"status\"='A' AND \"type\"='SLAVE'" ); ++ declare( suffix, "sql-supermaster","Get supermaster info", "SELECT \"account\" FROM \"supermasters\" WHERE \"ip\"=':ip' AND \"nameserver\"=':ns'" ); - declare( suffix, "sql-master", "Get master record for zone", "SELECT master FROM domains WHERE name=':name' AND type='SLAVE'" ); -+ declare( suffix, "sql-master", "Get master record for zone", "SELECT master FROM domains WHERE name=':name' AND status='A' AND type='SLAVE'" ); - declare( suffix, "sql-supermaster","Get supermaster info", "SELECT account FROM supermasters WHERE ip=':ip' AND nameserver=':ns'" ); +- declare( suffix, "sql-supermaster","Get supermaster info", "SELECT account FROM supermasters WHERE ip=':ip' AND nameserver=':ns'" ); ++ declare( suffix, "sql-infoslaves", "Get all unfresh slaves", "SELECT d.\"id\", d.\"name\", d.\"master\", d.\"notified_serial\", d.\"last_check\", r.\"change_date\", r.\"content\" FROM \"domains\" d LEFT JOIN \"records\" r ON ( d.\"id\"=r.\"domain_id\" AND r.\"type\"='SOA' ) WHERE d.\"status\"='A' AND d.\"type\"='SLAVE'" ); ++ declare( suffix, "sql-infomasters", "Get all updated masters", "SELECT d.\"id\", d.\"name\", d.\"master\", d.\"notified_serial\", d.\"last_check\", r.\"change_date\", r.\"content\" FROM \"domains\" d JOIN \"records\" r ON d.\"id\"=r.\"domain_id\" WHERE d.\"status\"='A' AND d.\"type\"='MASTER' AND r.\"type\"='SOA'" ); - declare( suffix, "sql-infoslaves", "Get all unfresh slaves", "SELECT d.id, d.name, d.master, d.notified_serial, d.last_check, r.change_date, r.content FROM domains AS d LEFT JOIN records AS r ON d.id=r.domain_id WHERE ( d.type='SLAVE' AND r.type='SOA' ) OR ( d.type='SLAVE' AND r.domain_id IS NULL )" ); - declare( suffix, "sql-infomasters", "Get all updated masters", "SELECT d.id, d.name, d.master, d.notified_serial, d.last_check, r.change_date, r.content FROM domains AS d, records AS r WHERE d.type='MASTER' AND d.id=r.domain_id AND r.type='SOA'" ); -+ declare( suffix, "sql-infoslaves", "Get all unfresh slaves", "SELECT d.id, d.name, d.master, d.notified_serial, d.last_check, r.change_date, r.content FROM domains d LEFT JOIN records r ON ( d.id=r.domain_id AND r.type='SOA' ) WHERE d.status='A' AND d.type='SLAVE'" ); -+ declare( suffix, "sql-infomasters", "Get all updated masters", "SELECT d.id, d.name, d.master, d.notified_serial, d.last_check, r.change_date, r.content FROM domains d JOIN records r ON d.id=r.domain_id WHERE d.status='A' AND d.type='MASTER' AND r.type='SOA'" ); -+ + declare( suffix, "host", "depricated, use host-read and host-write instead","" ); } @@ -167,9 +171,9 @@ setArgPrefix( "opendbx" + suffix ); - stringtok( hosts, getArg( "host" ), ", " ); - -- idx = odbx_host_index++ % hosts.size(); - +- idx = odbx_host_index++ % hosts.size(); + - for( i = 0; i < hosts.size(); i++ ) + if( getArg( "host" ).size() > 0 ) { @@ -300,23 +304,23 @@ - len = snprintf( m_buffer, sizeof( m_buffer ) - 1, "%d", zoneid ); + size_t len = snprintf( m_buffer, sizeof( m_buffer ) - 1, "%d", zoneid ); ++ ++ if( len < 0 ) ++ { ++ L.log( m_myname + " list: Unable to convert zone id to string - format error", Logger::Error ); ++ return false; ++ } - if( len < 0 || len > sizeof( m_buffer ) - 1 ) -+ if( len < 0 ) ++ if( len > sizeof( m_buffer ) - 1 ) { - L.log( m_myname + " list: Unable to convert zone id to string", Logger::Error ); - throw( DBException( "Error: Libc error" ) ); -+ L.log( m_myname + " list: Unable to convert zone id to string - format error", Logger::Error ); ++ L.log( m_myname + " list: Unable to convert zone id to string - insufficient buffer space", Logger::Error ); + return false; } - stmt = strbind( ":id", string( m_buffer, len ), getArg( "sql-list" ) ); -+ if( len > sizeof( m_buffer ) - 1 ) -+ { -+ L.log( m_myname + " list: Unable to convert zone id to string - insufficient buffer space", Logger::Error ); -+ return false; -+ } -+ + string stmt = getArg( "sql-list" ); + string& stmtref = strbind( ":id", string( m_buffer, len ), stmt ); @@ -331,7 +335,7 @@ } return true; -@@ -181,23 +201,24 @@ +@@ -181,13 +201,13 @@ void OdbxBackend::lookup( const QType& qtype, const string& qname, DNSPacket* dnspkt, int zoneid ) { @@ -347,11 +351,8 @@ + m_result = NULL; m_qname = qname; -- -+ - if( zoneid < 0 ) - { - if( qtype.getCode() == QType::ANY ) + +@@ -197,7 +217,8 @@ { stmt = getArg( "sql-lookup" ); } else { @@ -369,25 +370,24 @@ + stmt = getArg( "sql-lookuptypeid" ); + stmtref = strbind( ":type", qtype.getName(), stmt ); } -- -+ + size_t len = snprintf( m_buffer, sizeof( m_buffer ) - 1, "%d", zoneid ); - if( len < 0 || len > sizeof( m_buffer ) - 1 ) + if( len < 0 ) ++ { ++ L.log( m_myname + " lookup: Unable to convert zone id to string - format error", Logger::Error ); ++ throw( DBException( "Error: Libc error" ) ); ++ } ++ ++ if( len > sizeof( m_buffer ) - 1 ) { - L.log( m_myname + " lookup: Unable to convert zone id to string", Logger::Error ); -+ L.log( m_myname + " lookup: Unable to convert zone id to string - format error", Logger::Error ); ++ L.log( m_myname + " lookup: Unable to convert zone id to string - insufficient buffer space", Logger::Error ); throw( DBException( "Error: Libc error" ) ); } - stmt = strbind( ":id", string( m_buffer, len ), stmt ); -+ if( len > sizeof( m_buffer ) - 1 ) -+ { -+ L.log( m_myname + " lookup: Unable to convert zone id to string - insufficient buffer space", Logger::Error ); -+ throw( DBException( "Error: Libc error" ) ); -+ } -+ + stmtref = strbind( ":id", string( m_buffer, len ), stmtref ); } @@ -453,19 +453,19 @@ - if( len < 0 || len > sizeof( m_buffer ) - 1 ) + if( len < 0 ) -+ { -+ L.log( m_myname + " setFresh: Unable to insert values into statement '" + getArg( "sql-update-lastcheck" ) + "' - format error", Logger::Error ); -+ throw( DBException( "Error: Libc error" ) ); -+ } -+ -+ if( len > sizeof( m_buffer ) - 1 ) { - L.log( m_myname + " setFresh: Unable to insert values into statement '" + getArg( "sql-update-lastcheck" ) + "'", Logger::Error ); -+ L.log( m_myname + " setFresh: Unable to insert values into statement '" + getArg( "sql-update-lastcheck" ) + "' - insufficient buffer space", Logger::Error ); ++ L.log( m_myname + " setFresh: Unable to insert values into statement '" + getArg( "sql-update-lastcheck" ) + "' - format error", Logger::Error ); throw( DBException( "Error: Libc error" ) ); } - execStmt( m_buffer, len, false ); ++ if( len > sizeof( m_buffer ) - 1 ) ++ { ++ L.log( m_myname + " setFresh: Unable to insert values into statement '" + getArg( "sql-update-lastcheck" ) + "' - insufficient buffer space", Logger::Error ); ++ throw( DBException( "Error: Libc error" ) ); ++ } ++ + if( !execStmt( m_buffer, len, WRITE ) ) + { + throw( DBException( "Error: DB statement failed" ) ); @@ -490,10 +490,10 @@ + L.log( m_myname + " setFresh: Master server is unreachable", Logger::Error ); + throw( DBException( "Error: Server unreachable" ) ); + } ++ ++ size_t len = snprintf( m_buffer, sizeof( m_buffer ) - 1, getArg( "sql-update-serial" ).c_str(), serial, domain_id ); - if( len < 0 || len > sizeof( m_buffer ) - 1 ) -+ size_t len = snprintf( m_buffer, sizeof( m_buffer ) - 1, getArg( "sql-update-serial" ).c_str(), serial, domain_id ); -+ + if( len < 0 ) { - L.log( m_myname + " setNotified: Unable to insert values into statement '" + getArg( "sql-update-serial" ) + "'", Logger::Error ); @@ -619,15 +619,15 @@ { - stmt = strbind( ":ip", escape( ip ), getArg( "sql-supermaster" ) ); - stmt = strbind( ":ns", escape( i->content ), stmt ); -- -- execStmt( stmt.c_str(), stmt.size(), true ); + string stmt = getArg( "sql-supermaster" ); + string& stmtref = strbind( ":ip", escape( ip, READ ), stmt ); + stmtref = strbind( ":ns", escape( i->content, READ ), stmtref ); -- if( !getRecord() ) { return false; } +- execStmt( stmt.c_str(), stmt.size(), true ); + if( !execStmt( stmtref.c_str(), stmtref.size(), READ ) ) { return false; } +- if( !getRecord() ) { return false; } +- - do + if( getRecord( READ ) ) { @@ -637,17 +637,15 @@ } - } - while( getRecord() ); - -- *ddb=this; -- return true; -+ while( getRecord( READ ) ); + -+ *ddb=this; -+ return true; -+ } ++ while( getRecord( READ ) ); + + *ddb=this; + return true; } } } ++ } catch ( exception& e ) { L.log( m_myname + " superMasterBackend: Caught STL exception - " + e.what(), Logger::Error ); @@ -674,27 +672,27 @@ + L.log( m_myname + " createSlaveDomain: Master server is unreachable", Logger::Error ); + return false; + } - -- if( len < 0 || len > sizeof( m_buffer ) - 1 ) ++ + string tmp = domain; + size_t len = snprintf( m_buffer, sizeof( m_buffer ) - 1, getArg( "sql-insert-slave" ).c_str(), escape( toLowerByRef( tmp ), WRITE ).c_str(), + escape( ip, WRITE ).c_str(), escape( account, WRITE ).c_str() ); -+ + +- if( len < 0 || len > sizeof( m_buffer ) - 1 ) + if( len < 0 ) { - L.log( m_myname + " createSlaveDomain: Unable to insert values in statement '" + getArg( "sql-insert-slave" ) + "'", Logger::Error ); - throw( DBException( "Error: Libc error" ) ); + L.log( m_myname + " createSlaveDomain: Unable to insert values in statement '" + getArg( "sql-insert-slave" ) + "' - format error", Logger::Error ); + return false; -+ } -+ + } + +- execStmt( m_buffer, len, false ); + if( len > sizeof( m_buffer ) - 1 ) + { + L.log( m_myname + " createSlaveDomain: Unable to insert values in statement '" + getArg( "sql-insert-slave" ) + "' - insufficient buffer space", Logger::Error ); + return false; - } - -- execStmt( m_buffer, len, false ); ++ } ++ + if( !execStmt( m_buffer, len, WRITE ) ) { return false; } } catch ( exception& e ) @@ -723,13 +721,13 @@ + L.log( m_myname + " feedRecord: Master server is unreachable", Logger::Error ); + return false; + } - -- if( len < 0 || len > sizeof( m_buffer ) - 1 ) ++ + string tmp = rr.qname; + size_t 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, rr.priority, + escape( rr.content, WRITE ).c_str() ); -+ + +- if( len < 0 || len > sizeof( m_buffer ) - 1 ) + if( len < 0 ) { - L.log( m_myname + " feedRecord: Unable to insert values in statement '" + getArg( "sql-insert-record" ) + "'", Logger::Error ); @@ -778,10 +776,10 @@ - len = snprintf( m_buffer, sizeof( m_buffer ) - 1, "%d", zoneid ); + string& stmtref = const_cast<string&>( getArg( "sql-transactbegin" ) ); + if( !execStmt( stmtref.c_str(), stmtref.size(), WRITE ) ) { return false; } ++ ++ size_t len = snprintf( m_buffer, sizeof( m_buffer ) - 1, "%d", zoneid ); - if( len < 0 || len > sizeof( m_buffer ) - 1 ) -+ size_t len = snprintf( m_buffer, sizeof( m_buffer ) - 1, "%d", zoneid ); -+ + if( len < 0 ) { - L.log( m_myname + " lookup: Unable to convert zone id to string", Logger::Error ); @@ -855,7 +853,7 @@ return true; --- modules/opendbxbackend/odbxprivate.cc 2006-03-15 19:29:39.000000000 +0100 -+++ modules/opendbxbackend/odbxprivate.cc 2006-09-02 01:02:36.000000000 +0200 ++++ modules/opendbxbackend/odbxprivate.cc 2007-01-21 18:00:22.000000000 +0100 @@ -2,7 +2,50 @@ @@ -885,7 +883,7 @@ + + if( ( err = odbx_init( &(m_handle[type]), getArg( "backend" ).c_str(), hosts[h].c_str(), getArg( "port" ).c_str() ) ) == ODBX_ERR_SUCCESS ) + { -+ if( ( err = odbx_bind_simple( m_handle[type], getArg( "database" ).c_str(), getArg( "username" ).c_str(), getArg( "password" ).c_str() ) ) == ODBX_ERR_SUCCESS ) ++ if( ( err = odbx_bind( m_handle[type], getArg( "database" ).c_str(), getArg( "username" ).c_str(), getArg( "password" ).c_str(), ODBX_BIND_SIMPLE ) ) == ODBX_ERR_SUCCESS ) + { + L.log( m_myname + " Database connection (" + (type ? "write" : "read") + ") to '" + hosts[h] + "' succeeded", Logger::Notice ); + return true; @@ -918,7 +916,7 @@ - L.log( m_myname + " execStmt: Unable to execute query - " + string( odbx_error( m_handle, err ) ), Logger::Error ); - throw( AhuException( "Error: odbx_query() failed" ) ); + L.log( m_myname + " execStmt: Unable to execute query - " + string( odbx_error( m_handle[type], err ) ), Logger::Error ); -+ connectTo( m_hosts[type], type ); ++ if( odbx_error_type( m_handle[type], err ) < 0 ) { connectTo( m_hosts[type], type ); } + return false; } diff --git a/dns/powerdns-devel/files/pdns.conf b/dns/powerdns-devel/files/pdns.conf index 2df98c574b3a..a11889e2b6a4 100644 --- a/dns/powerdns-devel/files/pdns.conf +++ b/dns/powerdns-devel/files/pdns.conf @@ -48,7 +48,7 @@ ################################# # config-dir Location of configuration directory (pdns.conf) # -# config-dir=/usr/local/etc +# config-dir=/usr/local/etc/pdns ################################# # config-name Name of this virtual configuration - will rename the binary image diff --git a/dns/powerdns-devel/files/pdns.in b/dns/powerdns-devel/files/pdns.in index 7894f49fef83..af54e0564ec4 100644 --- a/dns/powerdns-devel/files/pdns.in +++ b/dns/powerdns-devel/files/pdns.in @@ -1,6 +1,6 @@ #!/bin/sh # -# $FreeBSD: /tmp/pcvs/ports/dns/powerdns-devel/files/Attic/pdns.in,v 1.3 2007-01-12 23:49:04 gabor Exp $ +# $FreeBSD: /tmp/pcvs/ports/dns/powerdns-devel/files/Attic/pdns.in,v 1.4 2007-02-07 04:04:45 alepulver Exp $ # # PROVIDE: pdns_server @@ -25,7 +25,7 @@ command=%%PREFIX%%/sbin/pdns_server # set defaults pdns_enable=${pdns_enable:-"NO"} -pdns_conf=${pdns_conf:-"%%PREFIX%%/etc/pdns.conf"} +pdns_conf=${pdns_conf:-"%%PREFIX%%/etc/pdns/pdns.conf"} pdns_flags=${pdns_flags:-""} load_rc_config ${name} diff --git a/dns/powerdns/Makefile b/dns/powerdns/Makefile index 9ab118ba1516..5cf4a188428d 100644 --- a/dns/powerdns/Makefile +++ b/dns/powerdns/Makefile @@ -7,7 +7,7 @@ PORTNAME= powerdns PORTVERSION= 2.9.20 -PORTREVISION= 3 +PORTREVISION= 4 CATEGORIES= dns ipv6 MASTER_SITES= http://downloads.powerdns.com/releases/ \ http://mirrors.evolva.ro/powerdns.com/releases/ @@ -98,7 +98,7 @@ PLIST_SUB+= WITHSQLITE="@comment " .endif .if defined(WITH_OPENDBX) -LIB_DEPENDS+= opendbx.1:${PORTSDIR}/databases/opendbx +LIB_DEPENDS+= opendbx.[1-2]:${PORTSDIR}/databases/opendbx CONFIGURE_MODULES+= "opendbx" PLIST_SUB+= WITHOPENDBX="" CXXFLAGS+= -L${LOCALBASE}/lib diff --git a/dns/powerdns/files/patch-opendbx b/dns/powerdns/files/patch-opendbx index 3f24a01e82b4..159f2407298c 100644 --- a/dns/powerdns/files/patch-opendbx +++ b/dns/powerdns/files/patch-opendbx @@ -1,5 +1,5 @@ --- modules/opendbxbackend/odbxbackend.hh 2006-03-15 19:29:39.000000000 +0100 -+++ modules/opendbxbackend/odbxbackend.hh 2006-09-03 11:34:13.000000000 +0200 ++++ modules/opendbxbackend/odbxbackend.hh 2007-01-25 22:16:13.000000000 +0100 @@ -1,11 +1,10 @@ /* * PowerDNS OpenDBX Backend @@ -75,42 +75,46 @@ declare( suffix, "password","Password for connecting to the DBMS",""); - declare( suffix, "sql-list", "AXFR query", "SELECT domain_id, name, type, ttl, prio, content FROM records WHERE domain_id=':id'" ); -+ declare( suffix, "sql-list", "AXFR query", "SELECT domain_id, name, type, ttl, prio, content FROM records WHERE domain_id=:id" ); ++ declare( suffix, "sql-list", "AXFR query", "SELECT \"domain_id\", \"name\", \"type\", \"ttl\", \"prio\", \"content\" FROM \"records\" WHERE \"domain_id\"=:id" ); - declare( suffix, "sql-lookup", "Lookup query","SELECT domain_id, name, type, ttl, prio, content FROM records WHERE name=':name'" ); +- declare( suffix, "sql-lookup", "Lookup query","SELECT domain_id, name, type, ttl, prio, content FROM records WHERE name=':name'" ); - declare( suffix, "sql-lookupid", "Lookup query with id","SELECT domain_id, name, type, ttl, prio, content FROM records WHERE domain_id=':id' AND name=':name'" ); -+ declare( suffix, "sql-lookupid", "Lookup query with id","SELECT domain_id, name, type, ttl, prio, content FROM records WHERE domain_id=:id AND name=':name'" ); - declare( suffix, "sql-lookuptype", "Lookup query with type","SELECT domain_id, name, type, ttl, prio, content FROM records WHERE name=':name' AND type=':type'" ); +- declare( suffix, "sql-lookuptype", "Lookup query with type","SELECT domain_id, name, type, ttl, prio, content FROM records WHERE name=':name' AND type=':type'" ); - declare( suffix, "sql-lookuptypeid", "Lookup query with type and id","SELECT domain_id, name, type, ttl, prio, content FROM records WHERE domain_id=':id' AND name=':name' AND type=':type'" ); -+ declare( suffix, "sql-lookuptypeid", "Lookup query with type and id","SELECT domain_id, name, type, ttl, prio, content FROM records WHERE domain_id=:id AND name=':name' AND type=':type'" ); ++ declare( suffix, "sql-lookup", "Lookup query","SELECT \"domain_id\", \"name\", \"type\", \"ttl\", \"prio\", \"content\" FROM \"records\" WHERE \"name\"=':name'" ); ++ declare( suffix, "sql-lookupid", "Lookup query with id","SELECT \"domain_id\", \"name\", \"type\", \"ttl\", \"prio\", \"content\" FROM \"records\" WHERE \"domain_id\"=:id AND \"name\"=':name'" ); ++ declare( suffix, "sql-lookuptype", "Lookup query with type","SELECT \"domain_id\", \"name\", \"type\", \"ttl\", \"prio\", \"content\" FROM \"records\" WHERE \"name\"=':name' AND \"type\"=':type'" ); ++ declare( suffix, "sql-lookuptypeid", "Lookup query with type and id","SELECT \"domain_id\", \"name\", \"type\", \"ttl\", \"prio\", \"content\" FROM \"records\" WHERE \"domain_id\"=:id AND \"name\"=':name' AND \"type\"=':type'" ); - declare( suffix, "sql-zonedelete","Delete all records for this zone","DELETE FROM records WHERE domain_id=':id'" ); - declare( suffix, "sql-zoneinfo","Get domain info","SELECT d.id, d.name, d.type, d.master, d.last_check, r.content FROM domains AS d LEFT JOIN records AS r ON d.id=r.domain_id WHERE ( d.name=':name' AND r.type='SOA' ) OR ( d.name=':name' AND r.domain_id IS NULL )" ); -+ declare( suffix, "sql-zonedelete","Delete all records for this zone","DELETE FROM records WHERE domain_id=:id" ); -+ declare( suffix, "sql-zoneinfo","Get domain info","SELECT d.id, d.name, d.type, d.master, d.last_check, r.content FROM domains d LEFT JOIN records r ON ( d.id=r.domain_id AND r.type='SOA' ) WHERE d.name=':name' AND d.status='A'" ); ++ declare( suffix, "sql-zonedelete","Delete all records for this zone","DELETE FROM \"records\" WHERE \"domain_id\"=:id" ); ++ declare( suffix, "sql-zoneinfo","Get domain info","SELECT d.\"id\", d.\"name\", d.\"type\", d.\"master\", d.\"last_check\", r.\"content\" FROM \"domains\" d LEFT JOIN \"records\" r ON ( d.\"id\"=r.\"domain_id\" AND r.\"type\"='SOA' ) WHERE d.\"name\"=':name' AND d.\"status\"='A'" ); declare( suffix, "sql-transactbegin", "Start transaction", "BEGIN" ); declare( suffix, "sql-transactend", "Finish transaction", "COMMIT" ); declare( suffix, "sql-transactabort", "Abort transaction", "ROLLBACK" ); - declare( suffix, "sql-insert-slave","Add slave domain", "INSERT INTO domains ( name, type, master, account ) VALUES ( '%s', 'SLAVE', '%s', '%s' )" ); +- declare( suffix, "sql-insert-slave","Add slave domain", "INSERT INTO domains ( name, type, master, account ) VALUES ( '%s', 'SLAVE', '%s', '%s' )" ); - declare( suffix, "sql-insert-record","Feed record into table", "INSERT INTO records ( domain_id, name, type, ttl, prio, content ) VALUES ( '%d', '%s', '%s', '%d', '%d', '%s' )" ); -+ declare( suffix, "sql-insert-record","Feed record into table", "INSERT INTO records ( domain_id, name, type, ttl, prio, content ) VALUES ( %d, '%s', '%s', %d, %d, '%s' )" ); ++ declare( suffix, "sql-insert-slave","Add slave domain", "INSERT INTO \"domains\" ( \"name\", \"type\", \"master\", \"account\" ) VALUES ( '%s', 'SLAVE', '%s', '%s' )" ); ++ declare( suffix, "sql-insert-record","Feed record into table", "INSERT INTO \"records\" ( \"domain_id\", \"name\", \"type\", \"ttl\", \"prio\", \"content\" ) VALUES ( %d, '%s', '%s', %d, %d, '%s' )" ); ++ ++ declare( suffix, "sql-update-serial", "Set zone to notified", "UPDATE \"domains\" SET \"notified_serial\"=%d WHERE \"id\"=%d" ); ++ declare( suffix, "sql-update-lastcheck", "Set time of last check", "UPDATE \"domains\" SET \"last_check\"=%d WHERE \"id\"=%d" ); - declare( suffix, "sql-update-serial", "Set zone to notified", "UPDATE domains SET notified_serial='%d' WHERE id='%d'" ); - declare( suffix, "sql-update-lastcheck", "Set time of last check", "UPDATE domains SET last_check='%d' WHERE id='%d'" ); -+ declare( suffix, "sql-update-serial", "Set zone to notified", "UPDATE domains SET notified_serial=%d WHERE id=%d" ); -+ declare( suffix, "sql-update-lastcheck", "Set time of last check", "UPDATE domains SET last_check=%d WHERE id=%d" ); ++ declare( suffix, "sql-master", "Get master record for zone", "SELECT \"master\" FROM \"domains\" WHERE \"name\"=':name' AND \"status\"='A' AND \"type\"='SLAVE'" ); ++ declare( suffix, "sql-supermaster","Get supermaster info", "SELECT \"account\" FROM \"supermasters\" WHERE \"ip\"=':ip' AND \"nameserver\"=':ns'" ); - declare( suffix, "sql-master", "Get master record for zone", "SELECT master FROM domains WHERE name=':name' AND type='SLAVE'" ); -+ declare( suffix, "sql-master", "Get master record for zone", "SELECT master FROM domains WHERE name=':name' AND status='A' AND type='SLAVE'" ); - declare( suffix, "sql-supermaster","Get supermaster info", "SELECT account FROM supermasters WHERE ip=':ip' AND nameserver=':ns'" ); +- declare( suffix, "sql-supermaster","Get supermaster info", "SELECT account FROM supermasters WHERE ip=':ip' AND nameserver=':ns'" ); ++ declare( suffix, "sql-infoslaves", "Get all unfresh slaves", "SELECT d.\"id\", d.\"name\", d.\"master\", d.\"notified_serial\", d.\"last_check\", r.\"change_date\", r.\"content\" FROM \"domains\" d LEFT JOIN \"records\" r ON ( d.\"id\"=r.\"domain_id\" AND r.\"type\"='SOA' ) WHERE d.\"status\"='A' AND d.\"type\"='SLAVE'" ); ++ declare( suffix, "sql-infomasters", "Get all updated masters", "SELECT d.\"id\", d.\"name\", d.\"master\", d.\"notified_serial\", d.\"last_check\", r.\"change_date\", r.\"content\" FROM \"domains\" d JOIN \"records\" r ON d.\"id\"=r.\"domain_id\" WHERE d.\"status\"='A' AND d.\"type\"='MASTER' AND r.\"type\"='SOA'" ); - declare( suffix, "sql-infoslaves", "Get all unfresh slaves", "SELECT d.id, d.name, d.master, d.notified_serial, d.last_check, r.change_date, r.content FROM domains AS d LEFT JOIN records AS r ON d.id=r.domain_id WHERE ( d.type='SLAVE' AND r.type='SOA' ) OR ( d.type='SLAVE' AND r.domain_id IS NULL )" ); - declare( suffix, "sql-infomasters", "Get all updated masters", "SELECT d.id, d.name, d.master, d.notified_serial, d.last_check, r.change_date, r.content FROM domains AS d, records AS r WHERE d.type='MASTER' AND d.id=r.domain_id AND r.type='SOA'" ); -+ declare( suffix, "sql-infoslaves", "Get all unfresh slaves", "SELECT d.id, d.name, d.master, d.notified_serial, d.last_check, r.change_date, r.content FROM domains d LEFT JOIN records r ON ( d.id=r.domain_id AND r.type='SOA' ) WHERE d.status='A' AND d.type='SLAVE'" ); -+ declare( suffix, "sql-infomasters", "Get all updated masters", "SELECT d.id, d.name, d.master, d.notified_serial, d.last_check, r.change_date, r.content FROM domains d JOIN records r ON d.id=r.domain_id WHERE d.status='A' AND d.type='MASTER' AND r.type='SOA'" ); -+ + declare( suffix, "host", "depricated, use host-read and host-write instead","" ); } @@ -167,9 +171,9 @@ setArgPrefix( "opendbx" + suffix ); - stringtok( hosts, getArg( "host" ), ", " ); - -- idx = odbx_host_index++ % hosts.size(); - +- idx = odbx_host_index++ % hosts.size(); + - for( i = 0; i < hosts.size(); i++ ) + if( getArg( "host" ).size() > 0 ) { @@ -300,23 +304,23 @@ - len = snprintf( m_buffer, sizeof( m_buffer ) - 1, "%d", zoneid ); + size_t len = snprintf( m_buffer, sizeof( m_buffer ) - 1, "%d", zoneid ); ++ ++ if( len < 0 ) ++ { ++ L.log( m_myname + " list: Unable to convert zone id to string - format error", Logger::Error ); ++ return false; ++ } - if( len < 0 || len > sizeof( m_buffer ) - 1 ) -+ if( len < 0 ) ++ if( len > sizeof( m_buffer ) - 1 ) { - L.log( m_myname + " list: Unable to convert zone id to string", Logger::Error ); - throw( DBException( "Error: Libc error" ) ); -+ L.log( m_myname + " list: Unable to convert zone id to string - format error", Logger::Error ); ++ L.log( m_myname + " list: Unable to convert zone id to string - insufficient buffer space", Logger::Error ); + return false; } - stmt = strbind( ":id", string( m_buffer, len ), getArg( "sql-list" ) ); -+ if( len > sizeof( m_buffer ) - 1 ) -+ { -+ L.log( m_myname + " list: Unable to convert zone id to string - insufficient buffer space", Logger::Error ); -+ return false; -+ } -+ + string stmt = getArg( "sql-list" ); + string& stmtref = strbind( ":id", string( m_buffer, len ), stmt ); @@ -331,7 +335,7 @@ } return true; -@@ -181,23 +201,24 @@ +@@ -181,13 +201,13 @@ void OdbxBackend::lookup( const QType& qtype, const string& qname, DNSPacket* dnspkt, int zoneid ) { @@ -347,11 +351,8 @@ + m_result = NULL; m_qname = qname; -- -+ - if( zoneid < 0 ) - { - if( qtype.getCode() == QType::ANY ) + +@@ -197,7 +217,8 @@ { stmt = getArg( "sql-lookup" ); } else { @@ -369,25 +370,24 @@ + stmt = getArg( "sql-lookuptypeid" ); + stmtref = strbind( ":type", qtype.getName(), stmt ); } -- -+ + size_t len = snprintf( m_buffer, sizeof( m_buffer ) - 1, "%d", zoneid ); - if( len < 0 || len > sizeof( m_buffer ) - 1 ) + if( len < 0 ) ++ { ++ L.log( m_myname + " lookup: Unable to convert zone id to string - format error", Logger::Error ); ++ throw( DBException( "Error: Libc error" ) ); ++ } ++ ++ if( len > sizeof( m_buffer ) - 1 ) { - L.log( m_myname + " lookup: Unable to convert zone id to string", Logger::Error ); -+ L.log( m_myname + " lookup: Unable to convert zone id to string - format error", Logger::Error ); ++ L.log( m_myname + " lookup: Unable to convert zone id to string - insufficient buffer space", Logger::Error ); throw( DBException( "Error: Libc error" ) ); } - stmt = strbind( ":id", string( m_buffer, len ), stmt ); -+ if( len > sizeof( m_buffer ) - 1 ) -+ { -+ L.log( m_myname + " lookup: Unable to convert zone id to string - insufficient buffer space", Logger::Error ); -+ throw( DBException( "Error: Libc error" ) ); -+ } -+ + stmtref = strbind( ":id", string( m_buffer, len ), stmtref ); } @@ -453,19 +453,19 @@ - if( len < 0 || len > sizeof( m_buffer ) - 1 ) + if( len < 0 ) -+ { -+ L.log( m_myname + " setFresh: Unable to insert values into statement '" + getArg( "sql-update-lastcheck" ) + "' - format error", Logger::Error ); -+ throw( DBException( "Error: Libc error" ) ); -+ } -+ -+ if( len > sizeof( m_buffer ) - 1 ) { - L.log( m_myname + " setFresh: Unable to insert values into statement '" + getArg( "sql-update-lastcheck" ) + "'", Logger::Error ); -+ L.log( m_myname + " setFresh: Unable to insert values into statement '" + getArg( "sql-update-lastcheck" ) + "' - insufficient buffer space", Logger::Error ); ++ L.log( m_myname + " setFresh: Unable to insert values into statement '" + getArg( "sql-update-lastcheck" ) + "' - format error", Logger::Error ); throw( DBException( "Error: Libc error" ) ); } - execStmt( m_buffer, len, false ); ++ if( len > sizeof( m_buffer ) - 1 ) ++ { ++ L.log( m_myname + " setFresh: Unable to insert values into statement '" + getArg( "sql-update-lastcheck" ) + "' - insufficient buffer space", Logger::Error ); ++ throw( DBException( "Error: Libc error" ) ); ++ } ++ + if( !execStmt( m_buffer, len, WRITE ) ) + { + throw( DBException( "Error: DB statement failed" ) ); @@ -490,10 +490,10 @@ + L.log( m_myname + " setFresh: Master server is unreachable", Logger::Error ); + throw( DBException( "Error: Server unreachable" ) ); + } ++ ++ size_t len = snprintf( m_buffer, sizeof( m_buffer ) - 1, getArg( "sql-update-serial" ).c_str(), serial, domain_id ); - if( len < 0 || len > sizeof( m_buffer ) - 1 ) -+ size_t len = snprintf( m_buffer, sizeof( m_buffer ) - 1, getArg( "sql-update-serial" ).c_str(), serial, domain_id ); -+ + if( len < 0 ) { - L.log( m_myname + " setNotified: Unable to insert values into statement '" + getArg( "sql-update-serial" ) + "'", Logger::Error ); @@ -619,15 +619,15 @@ { - stmt = strbind( ":ip", escape( ip ), getArg( "sql-supermaster" ) ); - stmt = strbind( ":ns", escape( i->content ), stmt ); -- -- execStmt( stmt.c_str(), stmt.size(), true ); + string stmt = getArg( "sql-supermaster" ); + string& stmtref = strbind( ":ip", escape( ip, READ ), stmt ); + stmtref = strbind( ":ns", escape( i->content, READ ), stmtref ); -- if( !getRecord() ) { return false; } +- execStmt( stmt.c_str(), stmt.size(), true ); + if( !execStmt( stmtref.c_str(), stmtref.size(), READ ) ) { return false; } +- if( !getRecord() ) { return false; } +- - do + if( getRecord( READ ) ) { @@ -637,17 +637,15 @@ } - } - while( getRecord() ); - -- *ddb=this; -- return true; -+ while( getRecord( READ ) ); + -+ *ddb=this; -+ return true; -+ } ++ while( getRecord( READ ) ); + + *ddb=this; + return true; } } } ++ } catch ( exception& e ) { L.log( m_myname + " superMasterBackend: Caught STL exception - " + e.what(), Logger::Error ); @@ -674,27 +672,27 @@ + L.log( m_myname + " createSlaveDomain: Master server is unreachable", Logger::Error ); + return false; + } - -- if( len < 0 || len > sizeof( m_buffer ) - 1 ) ++ + string tmp = domain; + size_t len = snprintf( m_buffer, sizeof( m_buffer ) - 1, getArg( "sql-insert-slave" ).c_str(), escape( toLowerByRef( tmp ), WRITE ).c_str(), + escape( ip, WRITE ).c_str(), escape( account, WRITE ).c_str() ); -+ + +- if( len < 0 || len > sizeof( m_buffer ) - 1 ) + if( len < 0 ) { - L.log( m_myname + " createSlaveDomain: Unable to insert values in statement '" + getArg( "sql-insert-slave" ) + "'", Logger::Error ); - throw( DBException( "Error: Libc error" ) ); + L.log( m_myname + " createSlaveDomain: Unable to insert values in statement '" + getArg( "sql-insert-slave" ) + "' - format error", Logger::Error ); + return false; -+ } -+ + } + +- execStmt( m_buffer, len, false ); + if( len > sizeof( m_buffer ) - 1 ) + { + L.log( m_myname + " createSlaveDomain: Unable to insert values in statement '" + getArg( "sql-insert-slave" ) + "' - insufficient buffer space", Logger::Error ); + return false; - } - -- execStmt( m_buffer, len, false ); ++ } ++ + if( !execStmt( m_buffer, len, WRITE ) ) { return false; } } catch ( exception& e ) @@ -723,13 +721,13 @@ + L.log( m_myname + " feedRecord: Master server is unreachable", Logger::Error ); + return false; + } - -- if( len < 0 || len > sizeof( m_buffer ) - 1 ) ++ + string tmp = rr.qname; + size_t 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, rr.priority, + escape( rr.content, WRITE ).c_str() ); -+ + +- if( len < 0 || len > sizeof( m_buffer ) - 1 ) + if( len < 0 ) { - L.log( m_myname + " feedRecord: Unable to insert values in statement '" + getArg( "sql-insert-record" ) + "'", Logger::Error ); @@ -778,10 +776,10 @@ - len = snprintf( m_buffer, sizeof( m_buffer ) - 1, "%d", zoneid ); + string& stmtref = const_cast<string&>( getArg( "sql-transactbegin" ) ); + if( !execStmt( stmtref.c_str(), stmtref.size(), WRITE ) ) { return false; } ++ ++ size_t len = snprintf( m_buffer, sizeof( m_buffer ) - 1, "%d", zoneid ); - if( len < 0 || len > sizeof( m_buffer ) - 1 ) -+ size_t len = snprintf( m_buffer, sizeof( m_buffer ) - 1, "%d", zoneid ); -+ + if( len < 0 ) { - L.log( m_myname + " lookup: Unable to convert zone id to string", Logger::Error ); @@ -855,7 +853,7 @@ return true; --- modules/opendbxbackend/odbxprivate.cc 2006-03-15 19:29:39.000000000 +0100 -+++ modules/opendbxbackend/odbxprivate.cc 2006-09-02 01:02:36.000000000 +0200 ++++ modules/opendbxbackend/odbxprivate.cc 2007-01-21 18:00:22.000000000 +0100 @@ -2,7 +2,50 @@ @@ -885,7 +883,7 @@ + + if( ( err = odbx_init( &(m_handle[type]), getArg( "backend" ).c_str(), hosts[h].c_str(), getArg( "port" ).c_str() ) ) == ODBX_ERR_SUCCESS ) + { -+ if( ( err = odbx_bind_simple( m_handle[type], getArg( "database" ).c_str(), getArg( "username" ).c_str(), getArg( "password" ).c_str() ) ) == ODBX_ERR_SUCCESS ) ++ if( ( err = odbx_bind( m_handle[type], getArg( "database" ).c_str(), getArg( "username" ).c_str(), getArg( "password" ).c_str(), ODBX_BIND_SIMPLE ) ) == ODBX_ERR_SUCCESS ) + { + L.log( m_myname + " Database connection (" + (type ? "write" : "read") + ") to '" + hosts[h] + "' succeeded", Logger::Notice ); + return true; @@ -918,7 +916,7 @@ - L.log( m_myname + " execStmt: Unable to execute query - " + string( odbx_error( m_handle, err ) ), Logger::Error ); - throw( AhuException( "Error: odbx_query() failed" ) ); + L.log( m_myname + " execStmt: Unable to execute query - " + string( odbx_error( m_handle[type], err ) ), Logger::Error ); -+ connectTo( m_hosts[type], type ); ++ if( odbx_error_type( m_handle[type], err ) < 0 ) { connectTo( m_hosts[type], type ); } + return false; } diff --git a/dns/powerdns/files/pdns.conf b/dns/powerdns/files/pdns.conf index 2df98c574b3a..a11889e2b6a4 100644 --- a/dns/powerdns/files/pdns.conf +++ b/dns/powerdns/files/pdns.conf @@ -48,7 +48,7 @@ ################################# # config-dir Location of configuration directory (pdns.conf) # -# config-dir=/usr/local/etc +# config-dir=/usr/local/etc/pdns ################################# # config-name Name of this virtual configuration - will rename the binary image diff --git a/dns/powerdns/files/pdns.in b/dns/powerdns/files/pdns.in index 9c35fc092087..714ff93eba67 100644 --- a/dns/powerdns/files/pdns.in +++ b/dns/powerdns/files/pdns.in @@ -25,7 +25,7 @@ command=%%PREFIX%%/sbin/pdns_server # set defaults pdns_enable=${pdns_enable:-"NO"} -pdns_conf=${pdns_conf:-"%%PREFIX%%/etc/pdns.conf"} +pdns_conf=${pdns_conf:-"%%PREFIX%%/etc/pdns/pdns.conf"} pdns_flags=${pdns_flags:-""} load_rc_config ${name} |