You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			45 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			PHP
		
	
			
		
		
	
	
			45 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			PHP
		
	
#!/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');
 | 
						|
}
 | 
						|
?>
 |