try {
     $xml = new SimpleXMLElement($return_string);
     $data = simplexml2array($xml);
     $data['router_id'] = $router->getRouterId();
     $data['system_data']['status'] = "online";
 } catch (Exception $e) {
     echo nl2br($e->getMessage());
     echo "\t\t\tThere was an error parsing the crawled XML\n";
     $data = array();
     $data['router_id'] = $router->getRouterId();
     $data['system_data']['status'] = "unknown";
 }
 /**Insert Router System Data*/
 echo "\t\t\tInserting RouterStatus into DB\n";
 $router_status = new RouterStatus(false, (int) $actual_crawl_cycle, $router->getRouterId(), $data['system_data']['status'], false, $data['system_data']['hostname'], (int) $data['client_count'], $data['system_data']['chipset'], $data['system_data']['cpu'], (int) $data['system_data']['memory_total'], (int) $data['system_data']['memory_caching'], (int) $data['system_data']['memory_buffering'], (int) $data['system_data']['memory_free'], $data['system_data']['loadavg'], $data['system_data']['processes'], $data['system_data']['uptime'], $data['system_data']['idletime'], $data['system_data']['local_time'], $data['system_data']['distname'], $data['system_data']['distversion'], $data['system_data']['openwrt_core_revision'], $data['system_data']['openwrt_feeds_packages_revision'], $data['system_data']['firmware_version'], $data['system_data']['firmware_revision'], $data['system_data']['kernel_version'], $data['system_data']['configurator_version'], $data['system_data']['nodewatcher_version'], $data['system_data']['fastd_version'], $data['system_data']['batman_advanced_version']);
 if ($router_status->store()) {
     echo "\t\t\tInserting Batman advanced interfaces into DB\n";
     /**Insert Batman advanced Interfaces*/
     foreach ($data['batman_adv_interfaces'] as $bat_adv_int) {
         try {
             DB::getInstance()->exec("INSERT INTO crawl_batman_advanced_interfaces (router_id, crawl_cycle_id, name, status, crawl_date)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t VALUES ('{$data['router_id']}', '{$actual_crawl_cycle}', '{$bat_adv_int['name']}', '{$bat_adv_int['status']}', NOW());");
         } catch (PDOException $e) {
             echo $e->getMessage();
         }
     }
     echo "\t\t\tInserting Batman advanced originators into DB\n";
     /**Insert Batman Advanced Originators*/
     $originator_count = count($data['batman_adv_originators']);
     RrdTool::updateRouterBatmanAdvOriginatorsCountHistory($data['router_id'], $originator_count);
     $average_link_quality = 0;
     if (!empty($data['batman_adv_originators'])) {
Esempio n. 2
0
if (empty($actual_crawl_cycle) or strtotime($actual_crawl_cycle['crawl_date']) + ($GLOBALS['crawl_cycle'] - 1) * 60 <= time()) {
    echo "Create crawl data for offline routers\n";
    //Set all routers in old crawl cycle that have not been crawled yet to status offline
    try {
        $stmt = DB::getInstance()->prepare("SELECT *\n\t\t\t\t\t\t\t\t\t\t\t\tFROM routers\n\t\t\t\t\t\t\t\t\t\t\t\tWHERE id not in (SELECT router_id\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t FROM crawl_routers\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t WHERE crawl_cycle_id={$actual_crawl_cycle['id']})");
        $stmt->execute();
        $result = $stmt->fetchAll(PDO::FETCH_ASSOC);
    } catch (PDOException $e) {
        echo $e->getMessage();
        echo $e->getTraceAsString();
    }
    foreach ($result as $router) {
        echo "\tInserting offline data for router " . $router['hostname'] . "\n";
        //store offline crawl for offline router
        $router_status = new RouterStatus(false, (int) $actual_crawl_cycle['id'], (int) $router['id'], "offline");
        $router_status->store();
    }
    echo "Create crawl data for offline interfaces\n";
    //store offline crawl for all interfaces of offline router
    try {
        $stmt = DB::getInstance()->prepare("SELECT *\n\t\t\t\t\t\t\t\t\t\t\t\tFROM interfaces\n\t\t\t\t\t\t\t\t\t\t\t\tWHERE id not in (SELECT interface_id\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t FROM crawl_interfaces\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t WHERE crawl_cycle_id={$actual_crawl_cycle['id']})");
        $stmt->execute();
        $result = $stmt->fetchAll(PDO::FETCH_ASSOC);
    } catch (PDOException $e) {
        echo $e->getMessage();
        echo $e->getTraceAsString();
    }
    foreach ($result as $interface) {
        echo "\tInserting offline data for interface " . $interface['name'] . "\n";
        $networkinterface_status = new NetworkinterfaceStatus(false, (int) $actual_crawl_cycle['id'], (int) $interface['id'], (int) $interface['router_id']);
        $networkinterface_status->store();
Esempio n. 3
0
 public function insertNewRouter()
 {
     $check_router_hostname_exist = Router_old::getRouterByHostname($_POST['hostname']);
     if (!isset($_POST['allow_router_auto_assign'])) {
         $_POST['allow_router_auto_assign'] = 0;
         $_POST['router_auto_assign_login_string'] = '';
     }
     if ($_POST['allow_router_auto_assign'] == '1' and !empty($_POST['router_auto_assign_login_string'])) {
         $check_router_auto_assign_login_string = Router_old::getRouterByAutoAssignLoginString($_POST['router_auto_assign_login_string']);
     }
     if (empty($_POST['hostname'])) {
         $message[] = array("Bitte geben Sie einen Hostname an.", 2);
         Message::setMessage($message);
         return array("result" => false, "router_id" => $router_id);
     } elseif (!empty($check_router_hostname_exist)) {
         $message[] = array("Ein Router mit dem Hostnamen {$_POST['hostname']} existiert bereits, bitte wählen Sie einen anderen Hostnamen.", 2);
         Message::setMessage($message);
         return array("result" => false, "router_id" => $router_id);
     } elseif (!(is_string($_POST['hostname']) and strlen($_POST['hostname']) <= 255 and preg_match("/^([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9])(\\.([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9]))*\$/", $_POST['hostname']))) {
         //check for valid hostname as specified in rfc 1123
         //see http://stackoverflow.com/a/3824105
         $message[] = array("Der Hostname ist ungültig. Erlaubt sind Hostnames nach RFC 1123.", 2);
         Message::setMessage($message);
         return array("result" => false, "router_id" => $router_id);
     } elseif (!empty($check_router_auto_assign_login_string)) {
         $message[] = array("Der Router Auto Assign Login String wird bereits verwendet.", 2);
         Message::setMessage($message);
         return array("result" => false, "router_id" => $router_id);
     } elseif ($_POST['allow_router_auto_assign'] == '1' and ($_POST['router_auto_assign_login_string'] == "Mac-Adresse..." or empty($_POST['router_auto_assign_login_string']) or ctype_space($_POST['router_auto_assign_login_string']))) {
         $message[] = array("Wenn Automatische Routerzuweisung aktiviert ist, muss eine Mac-Adresse gesetzt werden.", 2);
         $message[] = array("Du findest die Mac-Adresse oft auf der Rückseite des Routers.", 0);
         Message::setMessage($message);
         return array("result" => false, "router_id" => $router_id);
     } else {
         if (!is_numeric($_POST['latitude']) or !is_numeric($_POST['longitude'])) {
             $_POST['latitude'] = 0;
             $_POST['longitude'] = 0;
         }
         try {
             $stmt = DB::getInstance()->prepare("INSERT INTO routers (user_id, create_date, update_date, crawl_method, hostname, allow_router_auto_assign, router_auto_assign_login_string, description, location, latitude, longitude, chipset_id)\n\t\t\t\t\t\t\t\t    VALUES (?, NOW(), NOW(), ?, ?, ?, ?, ?, ?, ?, ?, ?)");
             $stmt->execute(array($_SESSION['user_id'], $_POST['crawl_method'], $_POST['hostname'], $_POST['allow_router_auto_assign'], $_POST['router_auto_assign_login_string'], $_POST['description'], $_POST['location'], $_POST['latitude'], $_POST['longitude'], $_POST['chipset_id']));
             $router_id = DB::getInstance()->lastInsertId();
         } catch (PDOException $e) {
             echo $e->getMessage();
             echo $e->getTraceAsString();
         }
         $crawl_cycle_id = Crawling::getLastEndedCrawlCycle();
         $router_status = new RouterStatus(false, (int) $crawl_cycle_id['id'], (int) $router_id, "offline");
         $router_status->store();
         //add new api key
         do {
             $api_key = new ApiKey(false, ApiKey::generateApiKey(), (int) $router_id, "router", "Initial key");
             $api_key_id = $api_key->store();
         } while (!$api_key_id);
         if ($_POST['allow_router_auto_assign'] == '1' and !empty($_POST['router_auto_assign_login_string'])) {
             RoutersNotAssigned::deleteByAutoAssignLoginString($_POST['router_auto_assign_login_string']);
         }
         $message[] = array("Der Router {$_POST['hostname']} wurde angelegt.", 1);
         //Add event for new router
         //TODO: add Router Object to data array
         $event = new Event(false, 'router', (int) $router_id, 'new', array());
         $event->store();
         //Send Message to twitter
         if ($_POST['twitter_notification'] == '1') {
             Message::postTwitterMessage(Config::getConfigValueByName('community_name') . " hat einen neuen #Freifunk Knoten! Wo? Schau nach: " . Config::getConfigValueByName('url_to_netmon') . "/router.php?router_id={$router_id}");
         }
         Message::setMessage($message);
         return array("result" => true, "router_id" => $router_id);
     }
 }