samba4 and libdlz_bind9.so

Gémes Géza geza at kzsdabas.hu
Fri Jul 8 10:56:09 MDT 2011


Hi Matthieu,
> Hi Gemes,
>
> First thanks for spending sometime in this patch, the rest of my email
> might sound like the only word I know is "no", which of course is not
> true.
> Don't give up !
>> Hi,
>>
>> What about a patch like the attached?
> Well not !
>>
>> --- a/source4/scripting/python/samba/provision/__init__.py   
>> 2011-07-07 08:10:40.000171756 +0200
>> +++ b/source4/scripting/python/samba/provision/__init__.py   
>> 2011-07-08 13:12:52.764589429 +0200
>> @@ -1763,7 +1763,7 @@
>>                       dnsdomain=names.dnsdomain,
>>                       dns_keytab_path=paths.dns_keytab, dnspass=dnspass)
>>
>> -                setup_ad_dns(samdb, names=names, hostip=hostip,
>> hostip6=hostip6)
>> +                setup_ad_dns(samdb, names=names, hostip=hostip,
>> hostip6=hostip6, dom_for_fun_level=dom_for_fun_level)
>>   
>
> Can we use a shorter name, like forest_level ?
Yes, but see below
>
>
>> --- a/source4/scripting/python/samba/provision/sambadns.py   
>> 2011-07-07 08:10:40.008170916 +0200
>> +++ b/source4/scripting/python/samba/provision//sambadns.py   
>> 2011-07-08 13:08:13.675811563 +0200
>> @@ -79,7 +79,16 @@
>>           srv.wWeight = weight
>>           self.data = srv
>>
>> -def setup_ad_dns(samdb, names, hostip=None, hostip6=None):
>> +def setup_ad_dns(samdb, names, hostip=None, hostip6=None,
>> dom_for_fun_level=None):
>> +
>> +    if dom_for_fun_level is None:
>> +        dom_for_fun_level = DS_DOMAIN_FUNCTION_2003
>> +
>> +    if dom_for_fun_level == DS_DOMAIN_FUNCTION_2003:
>> +        dns_ldap_root = "CN=MicrosoftDNS,CN=System,%s"
>> +    elif dom_for_fun_level == DS_DOMAIN_FUNCTION_2008 ||
>> dom_for_fun_level == DS_DOMAIN_FUNCTION_2008_R2:
>> +        dns_ldap_root = "CN=MicrosoftDNS,DC=DomainDnsZones"
> What about the forest level 2000 ? Is it the forest level or the
> domain level that has an influence on container location ?
Level 2000 is quite history, but noting stops us to use it anyway.
If the behavior depends on forest or domain level has to be
investigated. Unfortunately I don't have the resources (mean software
licenses) for this.
>> +
>>       domaindn = names.domaindn
>>       dnsdomain = names.dnsdomain.lower()
>>       hostname = names.netbiosname.lower()
>> @@ -113,7 +122,7 @@
>>           at_aaaa_record = AAAARecord(hostip6)
>>           dns_records.append(ndr_pack(at_aaaa_record))
>>
>> -    msg = ldb.Message(ldb.Dn(samdb,
>> "DC=@,DC=%s,CN=MicrosoftDNS,CN=System,%s" %\
>> +    msg = ldb.Message(ldb.Dn(samdb, "DC=@,DC=%s,"+dns_ldap_root %\
>>                                       (dnsdomain, domaindn )))
>>       msg["objectClass"] = ["top", "dnsNode"]
>>       msg["dnsRecord"] = ldb.MessageElement(soa_subrecords +
>> dns_records,
>
> Avoid the "foo" + "bar" notation, prefer the % one, ie
> dnscontainer = "%s, %s" % ("CN=MicrosoftDNS,CN=System", "domaindn")
> "DC=@, DC=%s, %" % (dnsdomain, dnscontainerdn)
>
>>   @@ -123,7 +132,7 @@
>>       # _gc._tcp record
>>       gc_tcp_record = SRVRecord(dnsname, 3268)
>>       msg = ldb.Message(ldb.Dn(samdb,
>> -            "DC=_gc._tcp,DC=%s,CN=MicrosoftDNS,CN=System,%s" % \
>> +            "DC=_gc._tcp,DC=%s,"+dns_ldap_root % \
>>                       (dnsdomain, domaindn)))
>>       msg["objectClass"] = ["top", "dnsNode"]
>>       msg["dnsRecord"] = [ndr_pack(gc_tcp_record)]
>> @@ -131,7 +140,7 @@
>>
>>       # _gc._tcp.sitename._site record
>>       msg = ldb.Message(ldb.Dn(samdb,
>> -           
>> "DC=_gc._tcp.%s._sites,DC=%s,CN=MicrosoftDNS,CN=System,%s" % \
>> +            "DC=_gc._tcp.%s._sites,DC=%s,"+dns_ldap_root % \
>>                       (names.sitename, dnsdomain, domaindn)))
>>       msg["objectClass"] = ["top", "dnsNode"]
>>       msg["dnsRecord"] = [ndr_pack(gc_tcp_record)]
>> @@ -140,7 +149,7 @@
>>       # _kerberos._tcp record
>>       kerberos_record = SRVRecord(dnsname, 88)
>>       msg = ldb.Message(ldb.Dn(samdb,
>> -            "DC=_kerberos._tcp,DC=%s,CN=MicrosoftDNS,CN=System,%s" % \
>> +            "DC=_kerberos._tcp,DC=%s,"+dns_ldap_root % \
>>                       (dnsdomain, domaindn)))
>>       msg["objectClass"] = ["top", "dnsNode"]
>>       msg["dnsRecord"] = [ndr_pack(kerberos_record)]
>> @@ -148,7 +157,7 @@
>>
>>       # _kerberos._tcp.sitename._site record
>>       msg = ldb.Message(ldb.Dn(samdb,
>> -           
>> "DC=_kerberos._tcp.%s._sites,DC=%s,CN=MicrosoftDNS,CN=System,%s" % \
>> +            "DC=_kerberos._tcp.%s._sites,DC=%s,"+dns_ldap_root % \
>>                       (site, dnsdomain, domaindn)))
>>       msg["objectClass"] = ["top", "dnsNode"]
>>       msg["dnsRecord"] = [ndr_pack(kerberos_record)]
>> @@ -156,7 +165,7 @@
>>
>>       # _kerberos._udp record
>>       msg = ldb.Message(ldb.Dn(samdb,
>> -            "DC=_kerberos._udp,DC=%s,CN=MicrosoftDNS,CN=System,%s" % \
>> +            "DC=_kerberos._udp,DC=%s,"+dns_ldap_root % \
>>                       (dnsdomain, domaindn)))
>>       msg["objectClass"] = ["top", "dnsNode"]
>>       msg["dnsRecord"] = [ndr_pack(kerberos_record)]
>> @@ -165,7 +174,7 @@
>>       # _kpasswd._tcp record
>>       kpasswd_record = SRVRecord(dnsname, 464)
>>       msg = ldb.Message(ldb.Dn(samdb,
>> -            "DC=_kpasswd._tcp,DC=%s,CN=MicrosoftDNS,CN=System,%s" % \
>> +            "DC=_kpasswd._tcp,DC=%s,"+dns_ldap_root % \
>>                       (dnsdomain, domaindn)))
>>       msg["objectClass"] = ["top", "dnsNode"]
>>       msg["dnsRecord"] = [ndr_pack(kpasswd_record)]
>> @@ -173,7 +182,7 @@
>>
>>       # _kpasswd._udp record
>>       msg = ldb.Message(ldb.Dn(samdb,
>> -            "DC=_kpasswd._udp,DC=%s,CN=MicrosoftDNS,CN=System,%s" % \
>> +            "DC=_kpasswd._udp,DC=%s,"+dns_ldap_root % \
>>                       (dnsdomain, domaindn)))
>>       msg["objectClass"] = ["top", "dnsNode"]
>>       msg["dnsRecord"] = [ndr_pack(kpasswd_record)]
>> @@ -182,7 +191,7 @@
>>       # _ldap._tcp record
>>       ldap_record = SRVRecord(dnsname, 389)
>>       msg = ldb.Message(ldb.Dn(samdb,
>> -            "DC=_ldap._tcp,DC=%s,CN=MicrosoftDNS,CN=System,%s" % \
>> +            "DC=_ldap._tcp,DC=%s,"+dns_ldap_root % \
>>                       (dnsdomain, domaindn)))
>>       msg["objectClass"] = ["top", "dnsNode"]
>>       msg["dnsRecord"] = [ndr_pack(ldap_record)]
>> @@ -190,7 +199,7 @@
>>
>>       # _ldap._tcp.sitename._site record
>>       msg = ldb.Message(ldb.Dn(samdb,
>> -           
>> "DC=_ldap._tcp.%s._site,DC=%s,CN=MicrosoftDNS,CN=System,%s" % \
>> +            "DC=_ldap._tcp.%s._site,DC=%s,"+dns_ldap_root % \
>>                       (site, dnsdomain, domaindn)))
>>       msg["objectClass"] = ["top", "dnsNode"]
>>       msg["dnsRecord"] = [ndr_pack(ldap_record)]
>> @@ -199,7 +208,7 @@
>>       # _msdcs record
>>       msdcs_record = NSRecord(dnsname)
>>       msg = ldb.Message(ldb.Dn(samdb,
>> -            "DC=_msdcs,DC=%s,CN=MicrosoftDNS,CN=System,%s" % \
>> +            "DC=_msdcs,DC=%s,"+dns_ldap_root % \
>>                       (dnsdomain, domaindn)))
>>       msg["objectClass"] = ["top", "dnsNode"]
>>       msg["dnsRecord"] = [ndr_pack(msdcs_record)]
>> @@ -211,7 +220,7 @@
>>       # doesn't set up any IPs
>>       if len(dns_records)>  0:
>>           msg = ldb.Message(ldb.Dn(samdb,
>> -                "DC=%s,DC=%s,CN=MicrosoftDNS,CN=System,%s" % \
>> +                "DC=%s,DC=%s,"+dns_ldap_root % \
>>                           (hostname, dnsdomain, domaindn)))
>>           msg["objectClass"] = ["top", "dnsNode"]
>>           msg["dnsRecord"] = ldb.MessageElement(dns_records,
>> @@ -220,7 +229,7 @@
>>
>>           # DomainDnsZones record
>>           msg = ldb.Message(ldb.Dn(samdb,
>> -               
>> "DC=DomainDnsZones,DC=%s,CN=MicrosoftDNS,CN=System,%s" % \
>> +                "DC=DomainDnsZones,DC=%s,"+dns_ldap_root % \
>>                           (dnsdomain, domaindn)))
>>           msg["objectClass"] = ["top", "dnsNode"]
>>           msg["dnsRecord"] = ldb.MessageElement(dns_records,
> Same remarks
>
>
>
> I would prefer more than patch, one than make the DN for DNS object
> container defined in a variable and that replace all the place 
What do you mean by all the place?
> then a second one that introduce multiple name for the DN depending on
> the forest or domain level.
For each forest/domain level you want a new name for a variable?
>
> But for this to work we have to add also naming context.
>
>
I'm already working on that part.

Cheers

Geza


More information about the samba-technical mailing list