svn commit: samba r2873 - in branches/SAMBA_4_0/source: . script

metze at samba.org metze at samba.org
Sat Oct 9 10:11:27 GMT 2004


Author: metze
Date: 2004-10-09 10:11:26 +0000 (Sat, 09 Oct 2004)
New Revision: 2873

WebSVN: http://websvn.samba.org/websvn/changeset.php?rep=samba&path=/branches/SAMBA_4_0/source&rev=2873&nolog=1

Log:
create a DNS zone file for a BIND name server

metze

Added:
   branches/SAMBA_4_0/source/provision.zone
Modified:
   branches/SAMBA_4_0/source/provision.ldif
   branches/SAMBA_4_0/source/script/provision.pl


Changeset:
Modified: branches/SAMBA_4_0/source/provision.ldif
===================================================================
--- branches/SAMBA_4_0/source/provision.ldif	2004-10-09 07:16:49 UTC (rev 2872)
+++ branches/SAMBA_4_0/source/provision.ldif	2004-10-09 10:11:26 UTC (rev 2873)
@@ -38,7 +38,7 @@
 realm: ${REALM}
 dnsDomain: ${DNSDOMAIN}
 dc: ${DOMAIN}
-objectGUID: ${NEWGUID}
+objectGUID: ${DOMAINGUID}
 creationTime: ${NTTIME}
 forceLogoff: 0x8000000000000000
 lockoutDuration: -18000000000
@@ -438,20 +438,20 @@
 objectCategory: CN=Group,CN=Schema,CN=Configuration,${BASEDN}
 isCriticalSystemObject: TRUE
 
-dn: CN=${HOSTNAME},OU=Domain Controllers,${BASEDN}
+dn: CN=${NETBIOSNAME},OU=Domain Controllers,${BASEDN}
 objectClass: top
 objectClass: person
 objectClass: organizationalPerson
 objectClass: user
 objectClass: computer
-cn: ${HOSTNAME}
+cn: ${NETBIOSNAME}
 instanceType: 4
 whenCreated: ${LDAPTIME}
 whenChanged: ${LDAPTIME}
 uSNCreated: 1
 uSNChanged: 1
-name: ${HOSTNAME}
-objectGUID: ${NEWGUID}
+name: ${NETBIOSNAME}
+objectGUID: ${HOSTGUID}
 userAccountControl: 532480
 badPwdCount: 0
 codePage: 0
@@ -465,7 +465,7 @@
 objectSid: ${DOMAINSID}-1000
 accountExpires: 9223372036854775807
 logonCount: 30
-sAMAccountName: ${HOSTNAME}$
+sAMAccountName: ${NETBIOSNAME}$
 sAMAccountType: 805306369
 operatingSystem: Samba
 operatingSystemVersion: 4.0

Added: branches/SAMBA_4_0/source/provision.zone
===================================================================
--- branches/SAMBA_4_0/source/provision.zone	2004-10-09 07:16:49 UTC (rev 2872)
+++ branches/SAMBA_4_0/source/provision.zone	2004-10-09 10:11:26 UTC (rev 2873)
@@ -0,0 +1,31 @@
+; generate by provision.pl
+; for domain:
+; ${DNSDOMAIN}
+$TTL 1W
+@               IN SOA  @   Administrator (
+                                42              ; serial (d. adams)
+                                2D              ; refresh
+                                4H              ; retry
+                                6W              ; expiry
+                                1W )            ; minimum
+
+			IN NS	${HOSTIP}
+
+${HOSTNAME}		IN A	${HOSTIP}
+${HOSTGUID}._msdcs	IN CNAME ${HOSTNAME}
+
+_gc._tcp		IN SRV 0 100 3268	${HOSTNAME}
+_ldap._tcp		IN SRV 0 100 389	${HOSTNAME}
+_kerberos._tcp		IN SRV 0 100 88		${HOSTNAME}
+_kerberos._udp		IN SRV 0 100 88		${HOSTNAME}
+
+_ldap._tcp.dc._msdcs	IN SRV 0 100 389	${HOSTNAME}
+_ldap._tcp.gc._msdcs	IN SRV 0 100 389	${HOSTNAME}
+_ldap._tcp.pdc._msdcs	IN SRV 0 100 389	${HOSTNAME}
+
+_ldap._tcp.${DOMAINGUID}.domains._msdcs		IN SRV 0 100 389 ${HOSTNAME}
+_ldap._tcp.${DEFAULTSITE}._sites.dc._msdcs	IN SRV 0 100 389 ${HOSTNAME}
+_ldap._tcp.${DEFAULTSITE}._sites.cc._msdcs	IN SRV 0 100 389 ${HOSTNAME}
+
+_kerberos._tcp.dc._msdcs	IN SRV 0 100 389	${HOSTNAME}
+_kerberos._tcp.${DEFAULTSITE}._sites.dc._msdcs	IN SRV 0 100 88 ${HOSTNAME}

Modified: branches/SAMBA_4_0/source/script/provision.pl
===================================================================
--- branches/SAMBA_4_0/source/script/provision.pl	2004-10-09 07:16:49 UTC (rev 2872)
+++ branches/SAMBA_4_0/source/script/provision.pl	2004-10-09 10:11:26 UTC (rev 2873)
@@ -1,10 +1,12 @@
 #!/usr/bin/perl -w
 
 use strict;
+use Socket;
 use Getopt::Long;
 
 my $opt_hostname = `hostname`;
 chomp $opt_hostname;
+my $opt_hostip;
 my $opt_realm;
 my $opt_domain;
 my $opt_adminpass;
@@ -13,8 +15,10 @@
 my $opt_wheel;
 my $opt_users;
 my $dnsdomain;
+my $netbiosname;
 my $dnsname;
 my $basedn;
+my $defaultsite = "Default-First-Site-Name";
 
 # return the current NTTIME as an integer
 sub nttime()
@@ -38,6 +42,7 @@
 }
 
 my $domainguid = randguid();
+my $hostguid = randguid();
 
 sub randsid()
 {
@@ -96,10 +101,18 @@
 		return $opt_hostname;
 	}
 
+	if ($var eq "NETBIOSNAME") {
+		return $netbiosname;
+	}
+
 	if ($var eq "DNSNAME") {
 		return $dnsname;
 	}
 
+	if ($var eq "HOSTIP") {
+		return $opt_hostip;
+	}
+
 	if ($var eq "LDAPTIME") {
 		return ldaptime();
 	}
@@ -108,6 +121,18 @@
 		return randguid();
 	}
 
+	if ($var eq "DOMAINGUID") {
+		return $domainguid;
+	}
+
+	if ($var eq "HOSTGUID") {
+		return $hostguid;
+	}
+
+	if ($var eq "DEFAULTSITE") {
+		return $defaultsite;
+	}
+
 	if ($var eq "ADMINPASS") {
 		return $opt_adminpass;
 	}
@@ -202,6 +227,7 @@
   --realm     REALM        set realm
   --domain    DOMAIN       set domain
   --hostname  HOSTNAME     set hostname
+  --hostip    IPADDRESS    set ipaddress
   --adminpass PASSWORD     choose admin password (otherwise random)
   --nobody    USERNAME     choose 'nobody' user
   --nogroup   GROUPNAME    choose 'nogroup' group
@@ -221,6 +247,7 @@
 	    'realm=s' => \$opt_realm,
 	    'domain=s' => \$opt_domain,
 	    'hostname=s' => \$opt_hostname,
+	    'hostip=s' => \$opt_hostip,
 	    'adminpass=s' => \$opt_adminpass,
 	    'nobody=s' => \$opt_nobody,
 	    'nogroup=s' => \$opt_nogroup,
@@ -237,10 +264,20 @@
 
 $opt_realm=uc($opt_realm);
 $opt_domain=uc($opt_domain);
-$opt_hostname=uc($opt_hostname);
+$opt_hostname=lc($opt_hostname);
+$netbiosname=uc($opt_hostname);
 
-print "Provisioning host '$opt_hostname' for domain '$opt_domain' in realm '$opt_realm'\n";
+if (!$opt_hostip) {
+	my $hip = gethostbyname($opt_hostname);
+	if (defined $hip) {
+		$opt_hostip = inet_ntoa($hip);
+	} else {
+		$opt_hostip = "<0.0.0.0>";
+	}
+}
 
+print "Provisioning host '$opt_hostname'[$opt_hostip] for domain '$opt_domain' in realm '$opt_realm'\n";
+
 if (!$opt_nobody) {
 	if (defined getpwnam("nobody")) {
 		$opt_nobody = "nobody";
@@ -317,9 +354,31 @@
 
 system("ldbadd -H newsam.ldb newsam.ldif");
 
+print "done\n";
+
+print "generating dns zone file ...\n";
+
+$data = FileLoad("provision.zone") || die "Unable to load provision.zone\n";
+
+$res = "";
+
+print "applying substitutions ...\n";
+
+while ($data =~ /(.*?)\$\{(\w*)\}(.*)/s) {
+	my $sub = substitute($2);
+	$res .= "$1$sub";
+	$data = $3;
+}
+$res .= $data;
+
+print "saving dns zone to newdns.zone ...\n";
+
+FileSave("$dnsdomain.zone", $res);
+
 print "done
 
-Please move newsam.ldb to sam.ldb in the lib/private/ directory of your
-Samba4 installation
+Installation:
+- Please move newsam.ldb to sam.ldb in the lib/private/ directory of your
+  Samba4 installation
+- Please use $dnsdomain.zone to in BIND dns server
 ";
-



More information about the samba-cvs mailing list