summaryrefslogtreecommitdiff
path: root/roles/install_dhcp/files/fastd-services-api.php
blob: 4eedd73b1b9691b2892fa726040351a64dc88c44 (plain)
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
#!/usr/bin/php -f
<?php
// add include "/etc/dhcpd.hosts.conf"; to your dhcp config
$url = 'https://www.freifunk-myk.de/services/ips';
$out = '/etc/dhcpd.hosts.conf';
 
if(!is_writable($out)) die('Output file perms');
 
if( ($data = file_get_contents($url)) === FALSE ) die('Error getting ips');
$data = unserialize($data);

$active=array();
 
foreach($data as $host) {
        if(!preg_match('/^[a-f0-9]{12}$/', $host['mac'])) {
                trigger_error('Host mit falscher MAC?!', E_USER_WARNING);
        }elseif(!preg_match('/^10\.222\.\(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?\)\.\(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?\)$/', $host['staticip'])) {
                trigger_error('Host mit falscher IP?!'.$host['mac'], E_USER_WARNING);
        }else{
                $active[] = $host;
        }
}
if(count($active) < 5) die('Less than 5 hosts? Database broken?'); 
$oldhash = hash_file("sha256", $out);
$fp=fopen($out, 'w');
foreach($active as $host) {
        fwrite($fp, "host host".$host['mac']." {"."\n");
        fwrite($fp, "\thardware ethernet ".
                substr($host['mac'],0,2).":".
                substr($host['mac'],2,2).":".
                substr($host['mac'],4,2).":".
                substr($host['mac'],6,2).":".
                substr($host['mac'],8,2).":".
                substr($host['mac'],10,2).
                ';'."\n");
        fwrite($fp, "\tfixed-address ".$host['staticip'].';'."\n");
        fwrite($fp, "}\n\n");
}
fclose($fp);
$newhash = hash_file("sha256", $out);
if($oldhash != $newhash) {
        exec('systemctl restart dhcpd4.service');
}
?>