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