Show
Ignore:
Timestamp:
04/30/10 22:49:09 (3 years ago)
Author:
ahu
Message:

teach zone2sql about dnssec 'auth' field

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • trunk/pdns/pdns/backends/bind/zone2sql.cc

    r1472 r1592  
    11/* 
    22    PowerDNS Versatile Database Driven Nameserver 
    3     Copyright (C) 2002 - 2007  PowerDNS.COM BV 
     3    Copyright (C) 2002 - 2010  PowerDNS.COM BV 
    44 
    55    This program is free software; you can redistribute it and/or modify 
     
    4848using namespace boost; 
    4949StatBag S; 
     50bool g_doDNSSEC; 
    5051 
    5152static const string sqlstr(const string &name) 
     
    124125  lastsoa_domain_id=dirty_hack_num; 
    125126 
     127  bool auth = true; 
     128  if(qtype == "NS" && !pdns_iequals(stripDot(domain), lastsoa_qname)) { 
     129    // cerr<<"'"<<domain<<"' != '"<<lastsoa_qname<<"'\n"; 
     130    auth=false; 
     131  } 
     132 
    126133  if(mode==MYSQL) { 
    127     cout<<"insert into records (domain_id, name,type,content,ttl,prio) values ("<< dirty_hack_num<<", "<< 
    128       sqlstr(stripDot(domain))<<", "<< 
    129       sqlstr(qtype)<<", "<< 
    130       sqlstr(stripDot(content))<<", "<<ttl<<", "<<prio<<");\n"; 
    131   } 
    132   if(mode==POSTGRES) { 
    133     cout<<"insert into records (domain_id, name,type,content,ttl,prio) select id ,"<< 
    134       sqlstr(toLower(stripDot(domain)))<<", "<< 
    135       sqlstr(qtype)<<", "<< 
    136       sqlstr(stripDot(content))<<", "<<ttl<<", "<<prio<<  
    137       " from domains where name="<<toLower(sqlstr(lastsoa_qname))<<";\n"; 
     134    if(!g_doDNSSEC) { 
     135       
     136      cout<<"insert into records (domain_id, name, type,content,ttl,prio) values ("<< dirty_hack_num<<", "<< 
     137        sqlstr(stripDot(domain))<<", "<< 
     138        sqlstr(qtype)<<", "<< 
     139        sqlstr(stripDot(content))<<", "<<ttl<<", "<<prio<<");\n"; 
     140    } else { 
     141      cout<<"insert into records (domain_id, name, ordername, auth, type,content,ttl,prio) values ("<< dirty_hack_num<<", "<< 
     142        sqlstr(stripDot(domain))<<", "<< 
     143        sqlstr(toLower(labelReverse(domain)))<<", "<< auth <<" ,"<< 
     144        sqlstr(qtype)<<", "<< 
     145        sqlstr(stripDot(content))<<", "<<ttl<<", "<<prio<<");\n"; 
     146    } 
     147  } 
     148  else if(mode==POSTGRES) { 
     149    if(!g_doDNSSEC) { 
     150      cout<<"insert into records (domain_id, name,type,content,ttl,prio) select id ,"<< 
     151        sqlstr(toLower(stripDot(domain)))<<", "<< 
     152        sqlstr(qtype)<<", "<< 
     153        sqlstr(stripDot(content))<<", "<<ttl<<", "<<prio<<  
     154        " from domains where name="<<toLower(sqlstr(lastsoa_qname))<<";\n"; 
     155    } else 
     156    { 
     157      cout<<"insert into records (domain_id, name, ordername, auth, type,content,ttl,prio) select id ,"<< 
     158        sqlstr(toLower(stripDot(domain)))<<", "<< 
     159        sqlstr(toLower(labelReverse(domain)))<<", "<<auth<<", "<< 
     160        sqlstr(qtype)<<", "<< 
     161        sqlstr(stripDot(content))<<", "<<ttl<<", "<<prio<<  
     162        " from domains where name="<<toLower(sqlstr(lastsoa_qname))<<";\n"; 
     163    } 
    138164  } 
    139165  else if(mode==ORACLE) { 
     
    180206    ::arg().setCmd("bare","Output in a bare format, suitable for further parsing"); 
    181207    ::arg().setSwitch("verbose","Verbose comments on operation")="no"; 
     208    ::arg().setSwitch("dnssec","Add DNSSEC related data")="no"; 
    182209    ::arg().setSwitch("slave","Keep BIND slaves as slaves")="no"; 
    183210    ::arg().setSwitch("transactions","If target SQL supports it, use transactions")="no"; 
     
    219246    } 
    220247 
     248    g_doDNSSEC=::arg().mustDo("dnssec"); 
     249       
    221250 
    222251    dirty_hack_num=::arg().asNum("start-id"); 
    223252    namedfile=::arg()["named-conf"]; 
    224253    zonefile=::arg()["zone"]; 
     254 
     255     
    225256 
    226257    int count=0, num_domainsdone=0; 
     
    312343      ZoneParserTNG zpt(zonefile, ::arg()["zone-name"]); 
    313344      DNSResourceRecord rr; 
    314       dirty_hack_num=-1; // trigger first SOA output 
     345      dirty_hack_num=::arg().asNum("start-id"); // trigger first SOA output 
    315346      while(zpt.get(rr))  
    316347        callback(0, rr.qname, rr.qtype.getName(), rr.content, rr.ttl, rr.priority);