156 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
			
		
		
	
	
			156 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
| <?php
 | |
| /*****************************************************************************
 | |
| IP Reg, a PHP/MySQL IPAM tool
 | |
| Copyright (C) 2007-2009 Wietse Warendorff (up to v0.5)
 | |
| Copyright (C) 2011-2023 Thomas Hooge
 | |
| 
 | |
| SPDX-License-Identifier: GPL-3.0-or-later
 | |
| *****************************************************************************/
 | |
| 
 | |
| // strip mac address to 12 char string
 | |
| function strip_mac($mac) {
 | |
|     // strip chars we don't need
 | |
|     $mac = preg_replace("|[^a-fA-F0-9]|", "", $mac);
 | |
| 
 | |
|     // capitalize (just because it looks better eh)
 | |
|     $mac = strtoupper($mac);
 | |
| 
 | |
|     // and return
 | |
|     return ($mac);
 | |
| }
 | |
| 
 | |
| // rebuild mac address
 | |
| function write_mac($mac) {
 | |
|     // check string length
 | |
|     if (strlen($mac)!=12) {
 | |
|         // if the MAC is empty, or for whatever reason incorrect, just return
 | |
|         return $mac;
 | |
|     } else {
 | |
|         // count to 12...
 | |
|         for ($i=0; $i<12; $i++) {
 | |
|             // ... and strip mac to pieces
 | |
|             ${"mac".$i} = $mac{$i};
 | |
|         }
 | |
| 
 | |
|         // get user preference
 | |
|         $user_mac = $_SESSION['suser_mac'];
 | |
| 
 | |
|         // count to 12 again...
 | |
|         for($i=0; $i<12; $i++) {
 | |
|             // ... and replace user preference with pieces
 | |
|             $user_mac = preg_replace("/x/", ${"mac".$i}, $user_mac, 1);
 | |
|         }
 | |
| 
 | |
|         // and return
 | |
|         return $user_mac;
 | |
|     }
 | |
| }
 | |
| 
 | |
| // redirect page
 | |
| function header_location($location) {
 | |
|     // send header
 | |
|     header("location: " . $location);
 | |
| 
 | |
|     // exit to be sure
 | |
|     exit;
 | |
| }
 | |
| 
 | |
| // sanitize input
 | |
| function sanitize($input) {
 | |
|     global $dblink;
 | |
| 
 | |
|     // trim whitespaces
 | |
|     $input = @trim($input);
 | |
| 
 | |
|     // magic quotes enabled?
 | |
|     if(get_magic_quotes_gpc()) {
 | |
|         // strip slashes
 | |
|         $input = stripslashes($input);
 | |
|     }
 | |
| 
 | |
|     // convert to utf-8
 | |
|     iconv("UTF-8", "UTF-8", $input);
 | |
| 
 | |
|     // convert special chars
 | |
|     $input = htmlentities($input,ENT_QUOTES,'UTF-8');
 | |
| 
 | |
|     // and return
 | |
|     return $input;
 | |
| }
 | |
| 
 | |
| function mysql_nullstring($input) {
 | |
|     if (isset($input)) {
 | |
|         return $input;
 | |
|     } else {
 | |
|         return '';
 | |
|     }
 | |
| }
 | |
| 
 | |
| function lang_getfrombrowser ($allowed_languages, $default_language, $lang_variable = null, $strict_mode = true) {
 | |
|     if ($lang_variable === null) {
 | |
|         $lang_variable = $_SERVER['HTTP_ACCEPT_LANGUAGE'];
 | |
|     }
 | |
|     if (empty($lang_variable)) {
 | |
|         return $default_language;
 | |
|     }
 | |
|     $accepted_languages = preg_split('/,\s*/', $lang_variable);
 | |
|     $current_lang = $default_language;
 | |
|     $current_q = 0;
 | |
|     foreach ($accepted_languages as $accepted_language) {
 | |
|         $res = preg_match ('/^([a-z]{1,8}(?:-[a-z]{1,8})*)(?:;\s*q=(0(?:\.[0-9]{1,3})?|1(?:\.0{1,3})?))?$/i',
 | |
|                    $accepted_language, $matches);
 | |
|         if (!$res) {
 | |
|             continue;
 | |
|         }
 | |
|         $lang_code = explode ('-', $matches[1]);
 | |
|         if (isset($matches[2])) {
 | |
|             $lang_quality = (float)$matches[2];
 | |
|         } else {
 | |
|             $lang_quality = 1.0;
 | |
|         }
 | |
|         while (count ($lang_code)) {
 | |
|             if (in_array (strtolower (join ('-', $lang_code)), $allowed_languages)) {
 | |
|                 if ($lang_quality > $current_q) {
 | |
|                     $current_lang = strtolower (join ('-', $lang_code));
 | |
|                     $current_q = $lang_quality;
 | |
|                     break;
 | |
|                 }
 | |
|             }
 | |
|             if ($strict_mode) {
 | |
|                 break;
 | |
|             }
 | |
|             array_pop ($lang_code);
 | |
|         }
 | |
|     }
 | |
|     return $current_lang;
 | |
| }
 | |
| 
 | |
| function print_tree_rec($tree, $level) {
 | |
|     $output = '<ul class="treelvl' . $level. '">' . "\n";
 | |
|     foreach ($tree as $node) {
 | |
|         $output .= '<li><a href="' . $node['href'] . '">' . $node['value'] . '</a>';
 | |
|         if ($node['children']) {
 | |
|             $output .= "\n" . print_tree_rec($node['children'], $level+1);
 | |
|         }
 | |
|         $output .= "</li>\n";
 | |
|     }
 | |
|     $output .= "</ul>\n";
 | |
|     return $output;
 | |
| }
 | |
| 
 | |
| //function print_tree($params, &$smarty) {
 | |
| function print_tree($params, Smarty_Internal_Template $template) {
 | |
|     if (empty($params['level'])) {
 | |
|         $level = 0;
 | |
|     } else {
 | |
|         $level = $params['level'];
 | |
|     }
 | |
|     if (empty($params['tree'])) {
 | |
|         return '';
 | |
|     } else {
 | |
|         return print_tree_rec($params['tree'], $level);
 | |
|     }
 | |
| }
 | |
| 
 | |
| ?>
 |