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.

107 lines
3.7 KiB
PHP

<?php
if($input->urlSegment2) throw new Wire404Exception(); // urlSegment2 existiert nicht 404!
if($input->urlSegment1){
switch($input->urlSegment1){
case 'list':
$services = $pages->find('template=service, sort=-subtitle');
$table = '';
foreach($services as $service){
$status = ($service->online == 1 ? "alert success" : "alert danger");
$table .="<tr class='$status'>
<td>$service->subtitle</td>
<td>$service->static_ip</td>
<td><a href='{$pages->get('/profile/')->httpUrl}{$service->operator->name}'>{$service->operator->name}</a></td>
</tr>";
}
$page->table = $table;
$content = renderPage();
break;
case 'ips':
$useMain = false;
$services = $pages->find("template=service");
$service_serial = array();
foreach($services as $service){
if(!validateMac($service->title)) continue;
$service_serial[] = array('mac' => strtolower(str_replace(":", "", $service->title)),
'staticip' => strtoupper($service->static_ip));
}
echo serialize($service_serial);
break;
case 'add':
if($input->post->mac) $mac = normalizeMac($sanitizer->text($input->post->mac));
if($input->post->title) $inputTitle = $sanitizer->name($input->post->title);
if(!wire('user')->isLoggedin()){
$content = "<article><h2>Gesicherte Seite</h2>Bitte Anmelden oder Registrieren.</article>";
$session->redirectUrl = $page->path."add/";
} elseif(!$input->post->submit) {
$content = renderPage('ip_registration');
} else {
// Register Service
$user = wire('user')->name;
$parent = $pages->get($page->id);
$operator = wire('user')->id;
if($pages->get("template=services, title=$mac") instanceof Nullpage){
// Creat IP
do {
$ip = long2ip(rand(ip2long("{$pages->get('template=site-setting')->start_ip}"), ip2long("{$pages->get('template=site-setting')->end_ip}")));
} while(!$pages->get("template=services, static_ip=$ip") instanceof NullPage);
// Add new if not exist
$mac = strtoupper($mac);
$s = createPage('service', $parent, $mac);
$s->subtitle = $inputTitle;
$s->operator = $operator;
$s->static_ip = $ip;
$s->save();
} else {
// Update if exit
$operator = wire('user')->id;
$s = $pages->get("title={$input->post->mac}");
$s->operator = $operator;
$s->key = $input->post->key;
$s->of(false);
$s->save();
$s->of(true);
}
$content = "<h2>Node Hinzugefügt:</h2>
<p>
Titel: {$s->subtitle}<br>
MAC : {$s->title}<br>
IP : {$s->static_ip}<br>
Betreiber: {$users->get($s->operator)->name}
</p>";
$session->remove('key');
$session->remove('mac');
}
break;
default:
throw new Wire404Exception(); // alle anderen Segmente existieren nicht = 404!
}
} else {
$userid = wire('user')->id;
$services = $pages->find("operator=$userid, template=service, sort=-subtitle");
$table = '';
foreach($services as $service){
$status = ($service->online == 1 ? "alert success" : "alert danger");
$online = ($service->online == 1 ? "online" : "offline");
$table .="<tr class='$status'>
<td>$service->subtitle</td>
<td>$service->static_ip</td>
<td>{$service->operator->name}</td>
</tr>";
}
$page->table = $table;
$content = renderPage();
}