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
		
	
			
		
		
	
	
			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();
 | |
| }
 |