diff options
author | Niklas Yann Wettengel <niyawe@niyawe.de> | 2017-07-03 09:46:42 +0200 |
---|---|---|
committer | Niklas Yann Wettengel <niyawe@niyawe.de> | 2017-07-03 09:46:42 +0200 |
commit | d82f8524972086862f64750f325ba067ea993d86 (patch) | |
tree | aa7634db168da40d108e43c7c30fbce299bdc7ab /roles/install_fastd/templates/fastd-api.php.j2 | |
parent | 90a8a597eaa3a008eac946460b5c621eafa8ec62 (diff) |
fastd working
Diffstat (limited to 'roles/install_fastd/templates/fastd-api.php.j2')
-rw-r--r-- | roles/install_fastd/templates/fastd-api.php.j2 | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/roles/install_fastd/templates/fastd-api.php.j2 b/roles/install_fastd/templates/fastd-api.php.j2 new file mode 100644 index 0000000..7b1fc17 --- /dev/null +++ b/roles/install_fastd/templates/fastd-api.php.j2 @@ -0,0 +1,45 @@ +#!/usr/bin/php -f +<?php +//$url = 'http://register.freifunk-myk.de/srvapi.php'; +$url = 'https://www.freifunk-myk.de/node/keys'; +$out = '/etc/fastd/ff{{ item.name }}/peers/'; + +if(!is_dir($out)) die('Output Dir missing'); +if(!is_writable($out)) die('Output Dir perms'); + +if( ($data = file_get_contents($url)) === FALSE ) die('Error getting keys'); +$data = unserialize($data); + +$active=array(); + +foreach($data as $router) { + $router['MAC'] = trim($router['MAC']); + $router['PublicKey'] = trim($router['PublicKey']); + if(!preg_match('/^[A-F0-9]{2}:[A-F0-9]{2}:[A-F0-9]{2}:[A-F0-9]{2}:[A-F0-9]{2}:[A-F0-9]{2}$/', $router['MAC'])) { + //trigger_error('Router mit falscher MAC?!', E_USER_WARNING); + }elseif(!preg_match('/^[A-F0-9]{64}$/', $router['PublicKey'])) { + //trigger_error('Router mit falschem Key?!'.$router['MAC'], E_USER_WARNING); + }else{ + $filename='client_'.str_replace(':', '-', $router['MAC']); + $fp=fopen($out.$filename, 'w'); + fwrite($fp, 'key "'.$router['PublicKey'].'";'."\n"); + fclose($fp); + $active[] = $filename; + } +} + +//Check if we fscked up +if(count($active) < 10) die('Less than 10 nodes? Database broken?'); + +$dh = opendir($out); +while(($file = readdir($dh)) !== false) { + if($file != '.' && $file != '..') { + if(!in_array($file, $active) && (strpos($file, 'client_') !== false)) { + unlink($out.$file); + } + } +} + +exec('killall -SIGHUP fastd'); + +?> |