summaryrefslogtreecommitdiff
path: root/roles/install_fastd/templates/fastd-api.php.j2
diff options
context:
space:
mode:
authorNiklas Yann Wettengel <niyawe@niyawe.de>2017-07-03 09:46:42 +0200
committerNiklas Yann Wettengel <niyawe@niyawe.de>2017-07-03 09:46:42 +0200
commitd82f8524972086862f64750f325ba067ea993d86 (patch)
treeaa7634db168da40d108e43c7c30fbce299bdc7ab /roles/install_fastd/templates/fastd-api.php.j2
parent90a8a597eaa3a008eac946460b5c621eafa8ec62 (diff)
fastd working
Diffstat (limited to 'roles/install_fastd/templates/fastd-api.php.j2')
-rw-r--r--roles/install_fastd/templates/fastd-api.php.j245
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');
+
+?>