get('ffNodeInfo'); $e = new HookEvent; $ffinfo->set_nodeinfo($e);*/ if($input->urlSegment2) throw new Wire404Exception(); // sobald mehr als ein urlSegment eingegeben wird 404! if($input->urlSegment1){ switch($input->urlSegment1){ /** * list gibt eine Liste aller Nodes aus. */ case 'list': // Finde und speichere alle Nodes sortiert nach dem subtitle $nodes = $pages->find('template=node, sort=-subtitle'); // Init variable $tablerow for the Node Table. $tablerow = ''; // Save each Node in a Row of the table foreach($nodes as $node){ $tablerow .=" $node->subtitle $node->title $node->latitude $node->longitude ".($node->online == 1 ? "online" : "offline")." httpUrl}{$node->operator->name}'>{$node->operator->name} "; } // Save the tablerow to the page Variable table. $page->table = $tablerow; // renderPage markup/list_node.inc $content = renderPage(); break; /** * map shows a map from all nodes * * Aktuell außer Funktion! */ case 'map': // Site settings $config->styles->add($config->urls->templates.'css/leaflet.css'); $config->scripts->add($config->urls->templates.'js/leaflet-src.js'); $fullwidth = true; $content= "
"; // Find all nodes with coordinate $nodes = $pages->find("template=node, latitude!=''"); $marker = ''; // create the node markers foreach($nodes as $node){ $marker .= "L.circle([".str_replace(',','.',$node->latitude).", ".str_replace(',','.',$node->longitude)."], 10, { color:".($node->online == 1 ? "'blue'" : "'red'").", fillColor: ".($node->online == 1 ? "'blue'" : "'red'")." }).addTo(map) .bindPopup('{$node->subtitle}');"; } // create the Map with Markers $script = ""; break; /** * add Nodes * * input: * mac string Macadresse eines Nodes * key string Key des Nodes */ case 'add': // Speichere MAC und Key in der Session wenn vorhanden; if(isset($input->get->mac)) $session->mac = strtolower(normalizeMac($input->get->mac)); if(isset($input->get->key)) $session->key = $input->get->key; // Checken ob der Nutzer eingeloggt ist if(wire('user')->isLoggedin()){ // Wurde das Formular abgesendet? if($input->post->submit){ // Registriere den neuen Node switch (registerNode($input->post->mac, $input->post->key)) { case '-1': $content = "Der Node existiert bereits und du hast keine Rechte ihn zu ändern"; break; case '0': $content = "Es ist ein Fehler aufgetreten, der Administrator wurde Informiet. Bitte versuche es zu einem späteren Zeitpunkt noch einmal."; break; case '1': // Zurück zur Privaten Routerliste $session->redirect($pages->get('/node/')->httpUrl, false); break; case '2': $content = "Dein Node wurde erfolgreich aktualisiert."; break; default: $content = "Es ist ein allgemeiner Fehler aufgetreten"; break; } } else { // Gebe das Formular aus $content = renderPage('node_registration'); } } else { $content = "

Gesicherte Seite

Bitte Anmelden oder Registrieren.
"; // Speicher die URL um auf diese Seite zurück zu kehren! $session->redirectUrl = wire('pages')->get('/node/')->httpUrl."/add"; } break; /** * keys * * Serialisierte Ausgabe der Keys von registrierten Nodes */ case 'keys': //if(!autorized($input->secret)) throw new Wire404Exception(); $useMain = false; // Find all nodes and store the MAC and PublicKey to an array $router_new = $pages->find("template=node, key!=''")->explode(function($item) { return array( 'MAC' => $item->title, 'PublicKey' => strtoupper($item->key) ); }); // get and merge the old and new keylist $router_old = file_get_contents("http://register.freifunk-myk.de/srvapi.php"); $router_old = unserialize($router_old); $list = array_merge($router_old, $router_new); // create the output $router = array(); $router = array_map("unserialize", array_unique(array_map("serialize", $list))); echo serialize($router); break; /** * import * * nur zur Migration der alten Node Datenbank. Kann gelöscht werden wenn alle Nodes migriert wurden. */ case 'import': if(!wire('user')->isLoggedin()){ $content = "

Gesicherte Seite

Bitte Anmelden oder Registrieren.
"; } elseif (!wire('user')->authsuccess) { $content = "

Authorisiere deinen Account

Um deine Nodes zu importieren musst du deine E-Mail Adresse verifizieren.

"; } else { $query = new mysqlMigrate(); $nodes = $query->searchNodes(wire('user')->email); if(empty($nodes)) { $content= "

Keine Nodes gefunden

Es konnten keine Nodes gefunden werden. Die Nodes werden mit Hilfe deiner E-Mail Adresse gesucht. Bitte überprüfe das deine E-Mail Adresse die selbe wie im alten System ist. Sollten weiterhin Probleme sein dann sprich einfach einen der Administratoren an.

"; break; } foreach($nodes as $node){ $content .= registerNode($node['MAC'], $node['PublicKey']); } $content = "

Nodes Hinzufügen

"; } break; /** * update * * führt die Aktuallisierung der Node Daten aus dem Node JSON aus. * * Benötigt: Module ffNodeInfo */ case 'update': if($input->get->key != "nre7u97ea") throw new WirePermissionException; // Without or with wrong key no Excption $useMain = false; $update = $modules->get('ffNodeInfo'); $update->set_nodeinfo(new HookEvent); echo "Node Info Updated"; break; /** * move * * Erste Version zum verschieben von Nodes von einem zum anderem Account. * Später auslagern in das Node module. */ case 'move': function moveNodes($from, $to, $search, $do = false){ $error = ""; $return = ""; // wenn es den Nutzer from nicht gibt if(!wire('users')->get("name|id=$from")) $error .= "Nutzer $from nicht vorhanden!
"; // wenn es das Ziel nicht gibt if(!wire('users')->get("name|id=$to")) $error .= "Ziehl $to nicht vorhanden!
"; // wenn es errors gibt dann return! if(!empty($error)) return $error; $from = wire('users')->get("name|id=$from"); $to = wire('users')->get("name|id=$to"); $moveNodes = wire('pages')->find("template=node, operator=$from->name, $search, sort=subtitle"); // first check if the right Nodes are choosed $return .= "

Folgende Nodes werden zu $to->name (ID: $to->id) übertragen:

"; foreach($moveNodes as $node){ $return .= "$node->subtitle - $node->title - {$node->operator->name}
"; } // confirm to move nodes if($do){ $return .= "
Übertragung zu $to->name
"; foreach ($moveNodes as $node) { $node->of(false); $node->operator = $to->id; $node->save(); $node->of(true); $return .= "$node->subtitle gehört nun zu {$node->operator->name}
"; } return "$return

Die Nodes sind erfolgreich Übretragen.

"; } return "$return

Wenn diese Auflistung korrekt ist hänge ein \"&do=true\" an die URL.

"; } $from = $sanitizer->name($input->get->from); $to = $sanitizer->name($input->get->to); $title = ( isset($input->get->title) ? $sanitizer->text($input->get->title) : ""); $mac = ( isset($input->get->mac) ? $sanitizer->text($input->get->mac) : ""); //$useMain = false; if(!wire('user')->isLoggedin() && !wire('user')->hasRole('manager|superuser')){ $content = "Du hast nicht die notwendigen rechte!"; } else { $filter = ""; if(!empty($title)) $filter .= "subtitle*=$title"; if(!empty($mac)) $filter .= (empty($filter) ? "mac=$mac" : ", mac=$mac"); $content = moveNodes($from, $to, $filter); if($sanitizer->text($input->get->do) == "true") { $content = moveNodes($from, $to, $filter, true); } } break; default: // Alle nicht vorhandenen Segmente führen zu einem 404! throw new Wire404Exception(); } } else { $user = wire('user')->id; $nodes = $pages->find("operator=$user, template=node, sort=-subtitle"); $table = ''; foreach($nodes as $node){ $table .=" $node->subtitle $node->title $node->node_firmware ".($node->online == 1 ? "online" : "offline")." {$node->operator->name} "; } $page->table = $table; $content = renderPage('list_nodes_private'); }