--- rpms/e-smith-tinydns/sme9/e-smith-tinydns-2.4.0_add_hostname_following_dhcpdleases_hostname.patch 2014/05/18 15:10:52 1.1 +++ rpms/e-smith-tinydns/sme9/e-smith-tinydns-2.4.0_add_hostname_following_dhcpdleases_hostname.patch 2015/01/09 23:33:20 1.3 @@ -1,7 +1,7 @@ -diff -Nur e-smith-tinydns-2.4.0.old/createlinks e-smith-tinydns-2.4.0/createlinks ---- e-smith-tinydns-2.4.0.old/createlinks 2014-05-18 01:58:17.822368168 +0200 -+++ e-smith-tinydns-2.4.0/createlinks 2014-05-18 02:04:52.426622645 +0200 -@@ -26,3 +26,27 @@ +diff -Nur e-smith-tinydns-2.4.0/createlinks e-smith-tinydns-2.4.0.bz2388/createlinks +--- e-smith-tinydns-2.4.0/createlinks 2006-03-14 23:01:42.000000000 +0100 ++++ e-smith-tinydns-2.4.0.bz2388/createlinks 2015-01-09 22:18:42.489639249 +0100 +@@ -26,3 +26,24 @@ service_link_enhanced("tinydns", "K65", "6"); service_link_enhanced("tinydns", "K65", "0"); service_link_enhanced("tinydns", "K65", "1"); @@ -15,9 +15,6 @@ diff -Nur e-smith-tinydns-2.4.0.old/crea + safe_symlink("restart", "root/etc/e-smith/events/$event/services2adjust/dhcpd"); + safe_symlink("restart", "root/etc/e-smith/events/$event/services2adjust/dhcp-dns"); + -+ # actions to perform -+ safe_symlink("../actions/dnscache-change", "root/etc/e-smith/events/$event/S20dnscache-change"); -+ + # Template to event + templates2events("/var/service/tinydns/root/data", $event); + } @@ -29,31 +26,21 @@ diff -Nur e-smith-tinydns-2.4.0.old/crea + service_link_enhanced("dhcp-dns", "K65", "0"); + service_link_enhanced("dhcp-dns", "K65", "1"); + safe_symlink("/var/service/dhcp-dns/", "root/service/dhcp-dns"); -diff -Nur e-smith-tinydns-2.4.0.old/root/etc/e-smith/db/configuration/defaults/dhcp-dns/status e-smith-tinydns-2.4.0/root/etc/e-smith/db/configuration/defaults/dhcp-dns/status ---- e-smith-tinydns-2.4.0.old/root/etc/e-smith/db/configuration/defaults/dhcp-dns/status 1970-01-01 01:00:00.000000000 +0100 -+++ e-smith-tinydns-2.4.0/root/etc/e-smith/db/configuration/defaults/dhcp-dns/status 2014-05-18 02:05:57.345788401 +0200 +diff -Nur e-smith-tinydns-2.4.0/root/etc/e-smith/db/configuration/defaults/dhcp-dns/status e-smith-tinydns-2.4.0.bz2388/root/etc/e-smith/db/configuration/defaults/dhcp-dns/status +--- e-smith-tinydns-2.4.0/root/etc/e-smith/db/configuration/defaults/dhcp-dns/status 1970-01-01 01:00:00.000000000 +0100 ++++ e-smith-tinydns-2.4.0.bz2388/root/etc/e-smith/db/configuration/defaults/dhcp-dns/status 2015-01-08 13:33:30.870973725 +0100 @@ -0,0 +1 @@ +enabled -diff -Nur e-smith-tinydns-2.4.0.old/root/etc/e-smith/db/configuration/defaults/dhcp-dns/type e-smith-tinydns-2.4.0/root/etc/e-smith/db/configuration/defaults/dhcp-dns/type ---- e-smith-tinydns-2.4.0.old/root/etc/e-smith/db/configuration/defaults/dhcp-dns/type 1970-01-01 01:00:00.000000000 +0100 -+++ e-smith-tinydns-2.4.0/root/etc/e-smith/db/configuration/defaults/dhcp-dns/type 2014-05-18 02:05:57.304783191 +0200 +diff -Nur e-smith-tinydns-2.4.0/root/etc/e-smith/db/configuration/defaults/dhcp-dns/type e-smith-tinydns-2.4.0.bz2388/root/etc/e-smith/db/configuration/defaults/dhcp-dns/type +--- e-smith-tinydns-2.4.0/root/etc/e-smith/db/configuration/defaults/dhcp-dns/type 1970-01-01 01:00:00.000000000 +0100 ++++ e-smith-tinydns-2.4.0.bz2388/root/etc/e-smith/db/configuration/defaults/dhcp-dns/type 2015-01-08 13:33:30.870973725 +0100 @@ -0,0 +1 @@ +service -diff -Nur e-smith-tinydns-2.4.0.old/root/etc/e-smith/events/actions/dnscache-change e-smith-tinydns-2.4.0/root/etc/e-smith/events/actions/dnscache-change ---- e-smith-tinydns-2.4.0.old/root/etc/e-smith/events/actions/dnscache-change 1970-01-01 01:00:00.000000000 +0100 -+++ e-smith-tinydns-2.4.0/root/etc/e-smith/events/actions/dnscache-change 2014-05-18 02:05:58.604948433 +0200 -@@ -0,0 +1,3 @@ -+#!/bin/sh -+ -+/usr/bin/sv 1 /service/tinydns -diff -Nur e-smith-tinydns-2.4.0.old/root/etc/e-smith/templates/var/service/tinydns/root/data/65dhcpARecords e-smith-tinydns-2.4.0/root/etc/e-smith/templates/var/service/tinydns/root/data/65dhcpARecords ---- e-smith-tinydns-2.4.0.old/root/etc/e-smith/templates/var/service/tinydns/root/data/65dhcpARecords 1970-01-01 01:00:00.000000000 +0100 -+++ e-smith-tinydns-2.4.0/root/etc/e-smith/templates/var/service/tinydns/root/data/65dhcpARecords 2014-05-18 02:06:05.227790167 +0200 -@@ -0,0 +1,48 @@ +diff -Nur e-smith-tinydns-2.4.0/root/etc/e-smith/templates/var/service/tinydns/root/data/65dhcpARecords e-smith-tinydns-2.4.0.bz2388/root/etc/e-smith/templates/var/service/tinydns/root/data/65dhcpARecords +--- e-smith-tinydns-2.4.0/root/etc/e-smith/templates/var/service/tinydns/root/data/65dhcpARecords 1970-01-01 01:00:00.000000000 +0100 ++++ e-smith-tinydns-2.4.0.bz2388/root/etc/e-smith/templates/var/service/tinydns/root/data/65dhcpARecords 2015-01-09 22:09:02.149175482 +0100 +@@ -0,0 +1,76 @@ +{ -+ # we need perl-Text-DHCPparse rpm from Dag's repo -+ use Text::DHCPparse; -+ + # we need perl-Date-Manip to convert to a unix timestamp + use Date::Manip qw /UnixDate/; + @@ -62,8 +49,40 @@ diff -Nur e-smith-tinydns-2.4.0.old/root + + # copy of dhcpd.leases file to /tmp because working directly on the original + # is not a good idea -+ system "cat /var/lib/dhcpd/dhcpd.leases > /tmp/dhcpd.leases"; -+ ++ use File::Copy; ++ copy('/var/lib/dhcpd/dhcpd.leases', '/tmp/dhcpd.leases') ++ or die ("Error dhcp-dns Service : Can't copy the /var/lib/dhcpd/dhcpd.leases"); ++ ++ #Text::DHCPparse forked because it doesn't allow to retrieve the end of lease ++ #Only the start is found by the leaseparse of DHCPparse.pm s/starts/ends ++ sub leaseparse { ++ my $logfile = shift; ++ my ( %list, $ip ); ++ open FILE, $logfile or die; ++ ++ while () { ++ next if /^#|^$/; ++ if (/^lease (\d+\.\d+\.\d+\.\d+)/) { ++ $ip = $1; ++ $list{$ip} = sprintf("%-17s", $ip); ++ } ++ /^\s*hardware ethernet (.*);/ && ($list{$ip} .= sprintf("%-19s", $1)); ++ /^\s*ends \d (.*);/ && ($list{$ip} .= sprintf("%-21s", $1)); ++ /^\s*(abandoned).*/ && ($list{$ip} .= sprintf("%-19s", $1)); ++ /^\s*client-hostname "(.*)";/ && ($list{$ip} .= sprintf("%-17s", $1)); ++ } ++ ++ close FILE; ++ ++ # make all entries 74 characters long to format properly ++ foreach (keys %list) { ++ #$list{$_} = sprintf("%-74s", $list{$_}) if (length$list{$_} < 76); ++ $list{$_} = sprintf("%-74.74s", $list{$_}); ++ } ++ ++ return \%list; ++} ++ + # now we parse the leases + $return = leaseparse('/tmp/dhcpd.leases'); + @@ -74,9 +93,8 @@ diff -Nur e-smith-tinydns-2.4.0.old/root + + foreach (keys %$return) { + ($ip, $time, $mac, $name) = unpack("A17 A21 A19 A30", $return->{$_}); -+ -+ # sometimes $name is empty.. we want only non empty one -+ if ( (defined $name) && (defined $ip)) { ++ # when the dhcp lease is over $name is empty .. we want only non empty one ++ if ( $name ne "" ) { + # we skip also ips already allocated + unless (exists $allocated_ips{$ip}) + { @@ -89,19 +107,19 @@ diff -Nur e-smith-tinydns-2.4.0.old/root + # Determine TTL + my $ttl = ''; + $ttl = 0 unless ($ts <= time); -+ + $OUT .= "=$name.$localdomain:$ip:$ttl:$endtai\n"; + } + $allocated_ips{$ip} = 1; + } + } + # remove the temp file -+ system "rm -f /tmp/dhcpd.leases"; ++ system ("rm -f /tmp/dhcpd.leases") ==0 ++ or die ("Error dhcp-dns Service : Can't rm the /tmp/dhcpd.leases"); +} -diff -Nur e-smith-tinydns-2.4.0.old/root/var/service/dhcp-dns/dhcp-dns e-smith-tinydns-2.4.0/root/var/service/dhcp-dns/dhcp-dns ---- e-smith-tinydns-2.4.0.old/root/var/service/dhcp-dns/dhcp-dns 1970-01-01 01:00:00.000000000 +0100 -+++ e-smith-tinydns-2.4.0/root/var/service/dhcp-dns/dhcp-dns 2014-05-18 02:06:08.370189551 +0200 -@@ -0,0 +1,33 @@ +diff -Nur e-smith-tinydns-2.4.0/root/var/service/dhcp-dns/dhcp-dns e-smith-tinydns-2.4.0.bz2388/root/var/service/dhcp-dns/dhcp-dns +--- e-smith-tinydns-2.4.0/root/var/service/dhcp-dns/dhcp-dns 1970-01-01 01:00:00.000000000 +0100 ++++ e-smith-tinydns-2.4.0.bz2388/root/var/service/dhcp-dns/dhcp-dns 2015-01-09 22:22:32.389241240 +0100 +@@ -0,0 +1,38 @@ +#!/usr/bin/perl + +my $lease_file = "/var/lib/dhcpd/dhcpd.leases"; @@ -110,7 +128,7 @@ diff -Nur e-smith-tinydns-2.4.0.old/root +my $modtime = 0; + +# seconds to wait -+my $update_freq = 15; ++my $update_freq = 30; + +########################################################################### +# Main Loop @@ -124,8 +142,15 @@ diff -Nur e-smith-tinydns-2.4.0.old/root + if ($stats[9] > $modtime) { + + $modtime = $stats[9]; ++ system ("expand-template /var/service/tinydns/root/data") ==0 ++ or warn ("Error service dhcp-dns : can't do expand-template /var/service/tinydns/root/data"); ++ ++ system ("/usr/bin/sv 1 /service/tinydns") ==0 ++ or warn ("Error service dhcp-dns : can't do sv 1 /service/tinydns"); ++ ++ system ("/usr/bin/sv 1 /service/dnscache") ==0 ++ or warn ("Error service dhcp-dns : can't do sv 1 /service/dnscache"); + -+ system ("/usr/bin/sv 1 /service/tinydns"); + } + + # wait till next check time @@ -133,11 +158,9 @@ diff -Nur e-smith-tinydns-2.4.0.old/root + +} # end main +########################################################################### -+ -+ -diff -Nur e-smith-tinydns-2.4.0.old/root/var/service/dhcp-dns/run e-smith-tinydns-2.4.0/root/var/service/dhcp-dns/run ---- e-smith-tinydns-2.4.0.old/root/var/service/dhcp-dns/run 1970-01-01 01:00:00.000000000 +0100 -+++ e-smith-tinydns-2.4.0/root/var/service/dhcp-dns/run 2014-05-18 02:06:08.429197051 +0200 +diff -Nur e-smith-tinydns-2.4.0/root/var/service/dhcp-dns/run e-smith-tinydns-2.4.0.bz2388/root/var/service/dhcp-dns/run +--- e-smith-tinydns-2.4.0/root/var/service/dhcp-dns/run 1970-01-01 01:00:00.000000000 +0100 ++++ e-smith-tinydns-2.4.0.bz2388/root/var/service/dhcp-dns/run 2015-01-08 13:33:30.871973834 +0100 @@ -0,0 +1,4 @@ +#!/bin/sh +