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.
		
		
		
		
		
			
		
			
				
	
	
		
			57 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			PHP
		
	
			
		
		
	
	
			57 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			PHP
		
	
<?php
 | 
						|
class jsonparser {
 | 
						|
        private $src = 'http://status.freifunk-myk.de/nodedata/nodes.json';
 | 
						|
 | 
						|
        private $cache = false;
 | 
						|
        private $cache_node = array();
 | 
						|
 | 
						|
        function __construct() {
 | 
						|
            $htmlcache = file_get_contents($this->src);
 | 
						|
            $this->cache = json_decode($htmlcache);
 | 
						|
            $this->gen_nodecache();
 | 
						|
        }
 | 
						|
 | 
						|
        function gen_nodecache() {
 | 
						|
            foreach($this->cache->nodes as $node) {
 | 
						|
                $this->cache_node[base64_encode(strtoupper($node->nodeinfo->node_id))] = $node;
 | 
						|
            }
 | 
						|
            $this->cache=false;
 | 
						|
        }
 | 
						|
 | 
						|
        function get_nodeinfo($mac) {
 | 
						|
            $mac = strtoupper(str_replace(':', '', $mac));
 | 
						|
            $data = array(
 | 
						|
                'addresses' => array(''),
 | 
						|
                'hardware' => 'unbekannt',
 | 
						|
                'firmware' => 'unbekannt',
 | 
						|
                'autoupdater_state' => false,
 | 
						|
                'name' => 'unbekannt',
 | 
						|
                'lastseen' => 0,
 | 
						|
                'geo' => array(0,0),
 | 
						|
                'ip' => ''
 | 
						|
            );
 | 
						|
 | 
						|
            if(!isset($this->cache_node[base64_encode($mac)])) return $data;
 | 
						|
            $info = $this->cache_node[base64_encode($mac)];
 | 
						|
 | 
						|
            $ip = '';
 | 
						|
            if(isset($info->nodeinfo->network->addresses)) {
 | 
						|
                foreach($info->nodeinfo->network->addresses as $tip) {
 | 
						|
                    if(substr($tip, 0, 4) == '2a01') $ip = $tip;
 | 
						|
                }
 | 
						|
            }
 | 
						|
 | 
						|
            $data = array(
 | 
						|
                'addresses' => $info->nodeinfo->network->addresses,
 | 
						|
                'hardware' => $info->nodeinfo->hardware->model,
 | 
						|
                'firmware' => $info->nodeinfo->software->firmware->release,
 | 
						|
                'autoupdater_state' => $info->nodeinfo->software->autoupdater->enabled,
 | 
						|
                'name' => $info->nodeinfo->hostname,
 | 
						|
                'lastseen' => $info->lastseen,
 | 
						|
                'geo' => $info->nodeinfo->location,
 | 
						|
                'ip' => $ip
 | 
						|
            );
 | 
						|
            return $data;
 | 
						|
        }
 | 
						|
    }
 |