pf-tools commit: r786 [ccaillet-guest] - in /branches/next-gen: doc/networkfile-syntax lib/PFTools/Net.pm sbin/mk_sitezone

parmelan-guest at users.alioth.debian.org parmelan-guest at users.alioth.debian.org
Tue Jul 27 15:16:25 UTC 2010


Author: ccaillet-guest
Date: Tue Jul 27 15:16:09 2010
New Revision: 786

URL: http://svn.debian.org/wsvn/pf-tools/?sc=1&rev=786
Log:
UPDATE:
  * sbin/mk_sitezone
    - moving __Mk_zoneheader and Mk_zone_for_site from Net.pm only used by this script
    - use Retrieve_GLOBAL for accessing to global structure instead of parsing all files
  * lib/PFTools/Net.pm
    - removing useless code
DOC:
  * doc/networkfile-syntax
    - removing netmask and netmask6 key which are useless according to CIDR format
    - now netmask, broadcast ... are computed from NetAddr::IP object from Net.pm


Modified:
    branches/next-gen/doc/networkfile-syntax
    branches/next-gen/lib/PFTools/Net.pm
    branches/next-gen/sbin/mk_sitezone

Modified: branches/next-gen/doc/networkfile-syntax
URL: http://svn.debian.org/wsvn/pf-tools/branches/next-gen/doc/networkfile-syntax?rev=786&op=diff
==============================================================================
--- branches/next-gen/doc/networkfile-syntax (original)
+++ branches/next-gen/doc/networkfile-syntax Tue Jul 27 15:16:09 2010
@@ -29,10 +29,8 @@
 	? comment	::= <STR>
 	! site		::= <STR>
 	? tag		::= <INT> 802.1q tag
-	! network	::= <NETWORK> define here the network in IPv4 format if CIDR format is used netmask key is not needed
-	? network6	::= <NETWORK> define here the prefix in IPv6 format
-	? netmask	::= <NETMASK> define here the netmask in IPv4 format or in CIDR format e.g. /XX
-	? netmask6	::= <NETMASK> define here the netmask in IPv6 format or in CIDR format e.g. /XX
+	! network	::= <NETWORK> define here the network in IPv4 format in CIDR format
+	? network6	::= <NETWORK> define here the prefix in IPv6 format in CIDR format
 	! scope		::= private|public, if private is defined this network will be ONLY added on zone private for site
 	? gateway	::= <IPV4>
 

Modified: branches/next-gen/lib/PFTools/Net.pm
URL: http://svn.debian.org/wsvn/pf-tools/branches/next-gen/lib/PFTools/Net.pm?rev=786&op=diff
==============================================================================
--- branches/next-gen/lib/PFTools/Net.pm (original)
+++ branches/next-gen/lib/PFTools/Net.pm Tue Jul 27 15:16:09 2010
@@ -30,38 +30,14 @@
 our @ISA = ('Exporter');
 
 our @EXPORT = qw(
-    Init_lib_net
-
-    Get_Active_Filename
-    Get_Active_Systemmap
-    Get_PXE_Filename
-    Get_Ordered_Filtered_Hosts
-    Get_dns_from_hostname
-    Get_dns_from_zone
-    Get_If
-    Get_UM_If
-    Get_Dhcp_Infos
-    Get_Cmdline
-    Get_Initrd_Filename
-    Get_Ramdisk_size_from_Initrd
-    Resolv
-
-    Mk_interfaces
-    Mk_zone
-    Parse_routing_table
-    Cmp_routing_table
-    
-    cmpif
-    
-    Add_network
-    Add_site
-    Add_zone
-    Add_server
-    Add_host
-    Get_site_list
-    Get_site_zone_from_GLOBAL
-
-    Mk_zone_for_site
+	Mk_interfaces
+	Add_network
+	Add_site
+	Add_zone
+	Add_server
+	Add_host
+	Get_site_list
+	Get_site_zone_from_GLOBAL
 );
 
 our @EXPORT_OK = qw();
@@ -69,7 +45,6 @@
 use Fcntl ':mode';
 use POSIX qw(ceil floor);
 
-# use PFTools::Conf;
 use PFTools::Logger;
 use PFTools::Parser;
 use NetAddr::IP;
@@ -77,39 +52,6 @@
 use Data::Dumper;
 #$Data::Dumper::Sortkeys = 1;
 #$Data::Dumper::Useperl = 1;
-
-our $HOST_CONFIG_REGEX = qr{
-	\A
-	(				# HOSTTYPE
-	(
-	    (			# POPNAME (optional)
-		[a-z]{3}\d{1}
-	    )
-	    -
-	)?
-	(
-	    [a-z0-9-]+[a-z-]	# host type (without the POP name)
-	)
-    )
-    %*				# % sign designate the number of digit at the end of real hostname
-    \z
-}xms;
-our $HOSTTYPE_CONFIG_REGEX = qr{
-	\A
-	(				# HOSTTYPE
-	(
-	    (			# POPNAME (optional)
-		[a-z]{3}\d{1}
-	    )
-	    -
-	)?
-	(
-	    [a-z0-9-]+[a-z-]	# host type (without the POP name)
-	)
-    )
-    \z
-}xms;
-
 
 my @DEFAULTDHCPVLAN = ('vlan-7');
 
@@ -832,28 +774,6 @@
 
 #########################################################################
 #
-# STR Get_site_zone_from_GLOBAL ( STR , HASHREF )
-#
-# This function returns the zone name which is defined for the specified site
-# Inputs :
-#  - $site			: site name
-#  - $global_config	: hashref where is stored global configuration
-#
-# Output :
-#  Return a string containing the zone defined for this site.
-#
-sub Get_site_zone_from_GLOBAL ($$) {
-	my ( $site, $global_config ) = @_;
-	
-	if ( ! defined $global_config->{'SITE'}->{'BY_NAME'}->{$site} ) {
-		Abort ( $CODE->{'UNDEF_KEY'},
-			"" );
-	}
-	return $global_config->{'SITE'}->{'BY_NAME'}->{$site}->{'zone'};
-}
-
-#########################################################################
-#
 # ARRAYREF __Get_site_list ( HASHREF , HASHREF )
 #
 # This function adds build the site list for a given section
@@ -988,7 +908,7 @@
 			$net_part->{$netaddr_key}->{$net_block->cidr()}	= $net_name;
 			$net_part->{'BY_TAG'}->{$ref_net->{'tag'}}		= $net_name if ( $ref_net->{'tag'} );
 			# Adding entries for network, netmask, broadcast etc. into the DNS zone
-			my $zone		= Get_site_zone_from_GLOBAL ( $site, $global_config );
+			my $zone		= $global_config->{'SITE'}->{'BY_NAME'}->{$site}->{'zone'};
 			my $zone_part = $global_config->{$zone_key}->{'BY_NAME'}->{$zone};
 			push ( @{$zone_part->{'__network_order'}->{$site}}, $net_name );
 			$zone_part->{'BY_SITE'}->{$site}->{$net_name} = {};
@@ -1393,7 +1313,7 @@
 			$site_part->{'HOST'}->{'BY_NAME'}->{$hostclass} = {};
 		}
 		my $srv_part	= $site_part->{'HOST'}->{'BY_NAME'}->{$hostclass};
-		my $zone		= Get_site_zone_from_GLOBAL ( $site, $global_config );
+		my $zone		= $site_part->{'zone'};
 		my $prefix		= __Get_site_prefix ( $site, $global_config->{'SITE'}->{'BY_NAME'}->{$site} );
 		my $vlan_list	= __Get_vlan_list_from_server ( $srv2add );
 		foreach my $hostnum ( 0 .. $host_last ) {
@@ -1650,7 +1570,7 @@
 			$site_part->{'HOST'}->{'BY_NAME'}->{$hostclass} = {};
 		}
 		my $host_part	= $site_part->{'HOST'}->{'BY_NAME'}->{$hostclass};
-		my $zone		= Get_site_zone_from_GLOBAL ( $site, $global_config );
+		my $zone		= $site_part->{'zone'};
 		my $prefix		= __Get_site_prefix ( $site, $global_config->{'SITE'}->{'BY_NAME'}->{$site} );
 		foreach my $hostnum ( 0 .. $host_last ) {
 			foreach my $hostnode (  0 .. $node_last ) {
@@ -1790,7 +1710,7 @@
 		}
 	}
 	my $site_part					= $global_config->{'SITE'}->{'BY_NAME'}->{$site};
-	my $zone						= Get_site_zone_from_GLOBAL ( $site, $global_config );
+	my $zone						= $site_part->{'zone'};
 	$hostname						=~ /^([^.]+)(\.([^.]+))?(\.$zone)?$/ ;
 	my ( $hostshort, $hostvlan )	= ( $1, $3 ) ;
 	my $hosttype					= Get_hosttype_from_hostname ( $hostname, $global_config );
@@ -1802,100 +1722,6 @@
     my ( $hostname, $global_config, $site ) = @_ ;
 
 	return Get_host_config_from_CONFIG ( $hostname, $global_config, $site );
-}
-
-
-###############################################################
-### Building zone file for IPv4 entries
-
-sub __Mk_zoneheader ($$$) {
-	my ( $zone_name, $zone_site, $zone_part ) = @_;
-	my $zone_result = [];
-
-	# SOA
-	push ( @{$zone_result}, ";;" );
-	push ( @{$zone_result}, ";; BIND configuration file for zone : ".$zone_name );
-	push ( @{$zone_result}, ";; Site : ".$zone_site );
-	push ( @{$zone_result}, ";;" );
-	push ( @{$zone_result}, ";; ", $zone_part->{'SOA'}->{'comment'} );
-	push ( @{$zone_result}, "\n;;============================================================================\n" );
-	push ( @{$zone_result}, "\$TTL ".$zone_part->{'SOA'}->{'ttl'} );
-	push ( @{$zone_result}, "\@\t\tIN SOA ".$zone_part->{'SOA'}->{'soa'}." ".$zone_part->{'SOA'}->{'mail'}." (" );
-	my $serial =  ( $zone_part->{'SOA'}->{'serial'} eq 'AUTO' ) ? time."\t; Serial" : $zone_part->{'SOA'}->{'serial'};
-	push ( @{$zone_result}, "\t\t\t".$serial );
-	foreach my $spec ( 'refresh', 'retry', 'expire', 'negttl' ) {
-		push ( @{$zone_result}, "\t\t\t".$zone_part->{'SOA'}->{$spec} );
-	}
-	push ( @{$zone_result}, "\t\t)" );
-	push ( @{$zone_result}, "\n" );
-	# NS fields
-	foreach my $nameserver ( @{ $zone_part->{'SOA'}->{'@ns'} } ) {
-		push ( @{$zone_result}, "\t\tIN NS\t".$nameserver );
-	}
-	push ( @{$zone_result}, "\n" );
-	# MX fields
-	foreach my $mx ( @{ $zone_part->{'SOA'}->{'@mx'} } ) {
-		push ( @{$zone_result}, "\t\tIN MX\t".$mx );
-	}
-	push ( @{$zone_result}, "\n" );
-	return $zone_result;
-}
-
-#
-#	VOID Mk_zone (STRING $fic_zone, HASHREF $Z)
-#
-#	Construit un le fichier $fic_zone pour la zone DNS decrite par la structure $Z
-#
-#==============================================================================================
-sub Mk_zone_for_site ($$$) {
-    my ( $zone_name, $zone_site, $global_config ) = @_;
-	my $zone_result	= [];
-
-	# Building Header (SOA, NS an MX fileds)
-	$zone_result	= __Mk_zoneheader( $zone_name, $zone_site, $global_config->{'ZONE'}->{'BY_NAME'}->{$zone_name} );
-	my $zone_part	= $global_config->{'ZONE'}->{'BY_NAME'}->{$zone_name}->{'BY_SITE'}->{$zone_site};
-
-	### Building Networks part
-	push ( @{$zone_result}, "\n\n;;" );
-	push ( @{$zone_result}, ";; Networks" );
-	push ( @{$zone_result}, ";;============================================================================\n" );
-
-	foreach my $network ( @{$global_config->{'ZONE'}->{'BY_NAME'}->{$zone_name}->{'__network_order'}->{$zone_site}} ) {
-		my $head	= $network;
-		$head		.= " : ".$zone_part->{$network}->{'comment'} if ( $zone_part->{$network}->{'comment'} );
-		push ( @{$zone_result}, "; ".$head );
-		push ( @{$zone_result}, ";----------------------------------------------------------------------------" );
-		foreach my $spec ( 'network', 'netmask', 'broadcast', 'gateway' ) {
-			next if ( ! defined $zone_part->{$network}->{$spec} );
-			push ( @{$zone_result}, $spec.".".$network."\t\t".$zone_part->{$network}->{$spec} );
-		}
-		push ( @{$zone_result}, "" );
-	}
-
-	### Servers
-	push ( @{$zone_result}, "\n\n;;" );
-	push ( @{$zone_result}, ";; Servers" );
-	push ( @{$zone_result}, ";;============================================================================\n" );
-
-	foreach my $server ( @{$global_config->{'ZONE'}->{'BY_NAME'}->{$zone_name}->{'__hostclass_order'}->{$zone_site}} ) {
-		my $head	= $server;
-		$head		.= " : ".$zone_part->{$server}->{'comment'} if ( $zone_part->{$server}->{'comment'} );
-		push ( @{$zone_result}, "; ".$head );
-		push ( @{$zone_result}, ";----------------------------------------------------------------------------" );
-		foreach my $field ( sort keys %{$zone_part->{$server}} ) {
-			next if ( $field eq 'comment' );
-			if ( ref $zone_part->{$server}->{$field} eq 'ARRAY' ) {
-				foreach my $elt ( @{$zone_part->{$server}->{$field}} ) {
-					push ( @{$zone_result}, $field."\t\t".$elt );
-				}
-			}
-			else {
-				push ( @{$zone_result}, $field."\t".$zone_part->{$server}->{$field} );
-			}
-		}
-		push ( @{$zone_result}, "" );
-	}
-	return $zone_result;
 }
 
 #

Modified: branches/next-gen/sbin/mk_sitezone
URL: http://svn.debian.org/wsvn/pf-tools/branches/next-gen/sbin/mk_sitezone?rev=786&op=diff
==============================================================================
--- branches/next-gen/sbin/mk_sitezone (original)
+++ branches/next-gen/sbin/mk_sitezone Tue Jul 27 15:16:09 2010
@@ -27,9 +27,7 @@
 
 use Getopt::Long qw( :config ignore_case_always bundling );
 use PFTools::Conf;
-use PFTools::Net;
 use PFTools::Logger;
-use Sys::Hostname;
 
 #################################
 # VARS
@@ -46,6 +44,9 @@
 
 my $version = sprintf( "svn-r%s", q$Revision$ =~ /([\d.]+)/ );
 
+#################################################
+# Functions
+
 sub Do_help {
     print STDERR << "# ENDHELP";
     $program - version $version
@@ -60,6 +61,102 @@
 # ENDHELP
 }
 
+###############################################################
+### Building zone file for IPv4 entries
+
+sub __Mk_zoneheader ($$$) {
+	my ( $zone_name, $zone_site, $zone_part ) = @_;
+	my $zone_result = [];
+
+	# SOA
+	push ( @{$zone_result}, ";;" );
+	push ( @{$zone_result}, ";; BIND configuration file for zone : ".$zone_name );
+	push ( @{$zone_result}, ";; Site : ".$zone_site );
+	push ( @{$zone_result}, ";;" );
+	push ( @{$zone_result}, ";; ", $zone_part->{'SOA'}->{'comment'} );
+	push ( @{$zone_result}, "\n;;============================================================================\n" );
+	push ( @{$zone_result}, "\$TTL ".$zone_part->{'SOA'}->{'ttl'} );
+	push ( @{$zone_result}, "\@\t\tIN SOA ".$zone_part->{'SOA'}->{'soa'}." ".$zone_part->{'SOA'}->{'mail'}." (" );
+	my $serial =  ( $zone_part->{'SOA'}->{'serial'} eq 'AUTO' ) ? time."\t; Serial" : $zone_part->{'SOA'}->{'serial'};
+	push ( @{$zone_result}, "\t\t\t".$serial );
+	foreach my $spec ( 'refresh', 'retry', 'expire', 'negttl' ) {
+		push ( @{$zone_result}, "\t\t\t".$zone_part->{'SOA'}->{$spec} );
+	}
+	push ( @{$zone_result}, "\t\t)" );
+	push ( @{$zone_result}, "\n" );
+	# NS fields
+	foreach my $nameserver ( @{ $zone_part->{'SOA'}->{'@ns'} } ) {
+		push ( @{$zone_result}, "\t\tIN NS\t".$nameserver );
+	}
+	push ( @{$zone_result}, "\n" );
+	# MX fields
+	foreach my $mx ( @{ $zone_part->{'SOA'}->{'@mx'} } ) {
+		push ( @{$zone_result}, "\t\tIN MX\t".$mx );
+	}
+	push ( @{$zone_result}, "\n" );
+	return $zone_result;
+}
+
+#
+#	VOID Mk_zone (STRING $fic_zone, HASHREF $Z)
+#
+#	Construit un le fichier $fic_zone pour la zone DNS decrite par la structure $Z
+#
+#==============================================================================================
+sub Mk_zone_for_site ($$$) {
+    my ( $zone_name, $zone_site, $global_config ) = @_;
+	my $zone_result	= [];
+
+	# Building Header (SOA, NS an MX fileds)
+	$zone_result	= __Mk_zoneheader( $zone_name, $zone_site, $global_config->{'ZONE'}->{'BY_NAME'}->{$zone_name} );
+	my $zone_part	= $global_config->{'ZONE'}->{'BY_NAME'}->{$zone_name}->{'BY_SITE'}->{$zone_site};
+
+	### Building Networks part
+	push ( @{$zone_result}, "\n\n;;" );
+	push ( @{$zone_result}, ";; Networks" );
+	push ( @{$zone_result}, ";;============================================================================\n" );
+
+	foreach my $network ( @{$global_config->{'ZONE'}->{'BY_NAME'}->{$zone_name}->{'__network_order'}->{$zone_site}} ) {
+		my $head	= $network;
+		$head		.= " : ".$zone_part->{$network}->{'comment'} if ( $zone_part->{$network}->{'comment'} );
+		push ( @{$zone_result}, "; ".$head );
+		push ( @{$zone_result}, ";----------------------------------------------------------------------------" );
+		foreach my $spec ( 'network', 'netmask', 'broadcast', 'gateway' ) {
+			next if ( ! defined $zone_part->{$network}->{$spec} );
+			push ( @{$zone_result}, $spec.".".$network."\t\t".$zone_part->{$network}->{$spec} );
+		}
+		push ( @{$zone_result}, "" );
+	}
+
+	### Servers
+	push ( @{$zone_result}, "\n\n;;" );
+	push ( @{$zone_result}, ";; Servers" );
+	push ( @{$zone_result}, ";;============================================================================\n" );
+
+	foreach my $server ( @{$global_config->{'ZONE'}->{'BY_NAME'}->{$zone_name}->{'__hostclass_order'}->{$zone_site}} ) {
+		my $head	= $server;
+		$head		.= " : ".$zone_part->{$server}->{'comment'} if ( $zone_part->{$server}->{'comment'} );
+		push ( @{$zone_result}, "; ".$head );
+		push ( @{$zone_result}, ";----------------------------------------------------------------------------" );
+		foreach my $field ( sort keys %{$zone_part->{$server}} ) {
+			next if ( $field eq 'comment' );
+			if ( ref $zone_part->{$server}->{$field} eq 'ARRAY' ) {
+				foreach my $elt ( @{$zone_part->{$server}->{$field}} ) {
+					push ( @{$zone_result}, $field."\t\t".$elt );
+				}
+			}
+			else {
+				push ( @{$zone_result}, $field."\t".$zone_part->{$server}->{$field} );
+			}
+		}
+		push ( @{$zone_result}, "" );
+	}
+	return $zone_result;
+}
+
+##########################################################""
+### MAIN
+
 GetOptions (
 	'help'			=> \$HELP,
 	'site|s=s'		=> \$SITE,
@@ -99,15 +196,18 @@
 	Abort ( $CODE->{'UNDEF_KEY'},
 		"A site MUST BE defined for building DNS zone forward" );
 }
-
-my $zone_name = Get_site_zone_from_GLOBAL ( $SITE, $GLOBAL_STRUCT );
-my $zone = Mk_zone_for_site ( $zone_name, $SITE, $GLOBAL_STRUCT );
-
-unless ( open ( ZONE, ">".$OUTPUT_FILE ) ) {
-	Abort ( $CODE->{'OPEN'},
-		"Unable to open zone file ".$OUTPUT_FILE );
-}
-print ZONE join ( "\n", @{$zone} );
-close ( ZONE );
+elsif ( ! defined $GLOBAL_STRUCT->{'SITE'}->{'BY_NAME'}->{$SITE} ) {
+	Abort ( $CODE->{'UNDEF_KEY'},
+		"Site ".$SITE." is not defined into global configuration" );
+}
+else {
+	my $zone = Mk_zone_for_site ( $GLOBAL_STRUCT->{'SITE'}->{'BY_NAME'}->{$SITE}->{'zone'}, $SITE, $GLOBAL_STRUCT );
+	unless ( open ( ZONE, ">".$OUTPUT_FILE ) ) {
+		Abort ( $CODE->{'OPEN'},
+			"Unable to open zone file ".$OUTPUT_FILE );
+	}
+	print ZONE join ( "\n", @{$zone} );
+	close ( ZONE );
+}
 
 exit 0;




More information about the pf-tools-commits mailing list