This file is indexed.

/usr/sbin/autodns-dhcp_cron is in autodns-dhcp 0.8ubuntu1.

This file is owned by root:root, with mode 0o755.

The actual contents of the file can be viewed below.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
#!/usr/bin/perl -T

# this script checks is the current version of /etc/dhcpd.leases is more
# current than the version stored in DDNSHOME. If so, autodns-dhcp_ddns
# is called to create the ndupdate data file. Then nsupdate is called to
# notify BIND of the changes.

use strict;

require '/etc/autodns-dhcp.conf' ;
exit 0 if ($main::DOMAIN eq "__DOMAIN__") ;

# Untaint PATH
$ENV{PATH} = '';

my $UPDATE="$main::DDNSHOME/nsupdate.data";
my $DHCPUP="$main::DDNSHOME/dhcpd.conf.new";
my $DHCPDLEASES_TEMP="$main::DDNSHOME/dhcpd.leases.last";
my $LOCKFILE="$main::DDNSHOME/lock";
my $DHCPDCONF="$main::DHCPDCONF";
my $DHCPDPID="$main::DHCPDPID";
my $DHCPDINIT="$main::DHCPDINIT";
my $DDNS="/usr/sbin/autodns-dhcp_ddns";

my($ref,$data);
my ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime,$blksize,$blocks);

# get timestamp on leases file
($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime,
 $blksize,$blocks)=stat($main::DHCPDLEASES);
$data=$mtime;

# get timestamp on saved file
($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime,
 $blksize,$blocks)=stat($DHCPDLEASES_TEMP);
$ref=$mtime;

if ($ref >= $data) {
    exit 0;
}

# are we locked? (JIC :-)
if (-e "$LOCKFILE") {
    exit 0;
}

# ok lock us up
system "/bin/touch", $LOCKFILE;

$ENV{DDNSHOME}=$main::DDNSHOME;
$ENV{DHCPDLEASES}=$main::DHCPDLEASES;
$ENV{DHCPDCONF}=$main::DHCPDCONF;
$ENV{UPDATE}=$UPDATE;
$ENV{DHCPDLEASES_TEMP}=$DHCPDLEASES_TEMP;
$ENV{DNS_DOMAIN}=$main::DOMAIN;
$ENV{DHCPUP}=$DHCPUP;

# call autodns-dhcp_ddns
system "/usr/bin/perl", $DDNS;

($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime,
 $blksize,$blocks)=stat($UPDATE);

# now call nsupdate to notify BIND
if ( $size > 0  && ! system $main::NSUPDATE,$UPDATE) {
   ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime,
    $blksize,$blocks)=stat($DHCPUP);
   $data=$size;
   ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime,
    $blksize,$blocks)=stat($DHCPDCONF);
   if ($data > $size) {
      system "/bin/cp",$DHCPUP,$DHCPDCONF;
      $ENV{'PATH'} = '/sbin:/bin';
      system "/sbin/start-stop-daemon --stop --quiet --pidfile $DHCPDPID --retry 5 >/dev/null";
      system "$DHCPDINIT start >/dev/null";
   } else {
      print STDERR "$data $size";
      print STDERR "Error creating the new dhcpd configuration.\n";
   }
}

# unlock the process
system "/bin/rm", $LOCKFILE;