Exemple #1
0
 public function checkDeviceFW($deviceID = false)
 {
     global $db_CS;
     global $access;
     global $allowedParams;
     global $allowedGroupsDeviceList;
     global $allowedGroupsArray;
     $deviceID = isset($_REQUEST['deviceID']) ? htmlspecialchars($_REQUEST['deviceID']) : $deviceID;
     $sql = "SELECT tLastAliveIP,tDeviceVPNName,tDeviceFirmware,tRootPwd FROM DeviceList WHERE id = '{$deviceID}'";
     $db_CS->autocommit(FALSE);
     $data["rstatus"] = false;
     if ($rs = $db_CS->query($sql)) {
         if ($connection = $rs->fetch_assoc()) {
             set_include_path(get_include_path() . PATH_SEPARATOR . '/var/www/html/sacp/includes/phpseclib');
             include 'Net/SSH2.php';
             include 'File/ANSI.php';
             $data["tDeviceVPNName"] = $connection["tDeviceVPNName"];
             if (filter_var($connection["tLastAliveIP"], FILTER_VALIDATE_IP)) {
                 $ssh = new Net_SSH2($connection["tLastAliveIP"], '22');
                 if (!$ssh->login('root', $connection["tRootPwd"])) {
                     $host_connected = false;
                     $data["result"] = "Auth failed!";
                     $data["alert_type"] = "danger alert";
                 } else {
                     // WE GOT A CONNECTION !
                     $ansi = new File_ANSI();
                     $ssh->enablePTY();
                     $fwCMD = "cat /http/default/_version.php | grep 'define' | grep 'PRODUCT_VERSION' | awk -F ',' '{print \$2}' | sed 's/[^[:alnum:]\\.[:space:]]\\+//g'";
                     $ssh->exec($fwCMD);
                     $ansi->appendString($ssh->read());
                     $response["cmdOutput"] = htmlspecialchars_decode(strip_tags($ansi->getHistory()));
                     if ($connection["tDeviceFirmware"] != $response["cmdOutput"]) {
                         $sql = "UPDATE DeviceList\n\t\t\t\t\t\t\t\t\tSET tDeviceFirmware = '" . $response["cmdOutput"] . "'\n\t\t\t\t\t\t\t\t\tWHERE id = '{$deviceID}'";
                         if ($db_CS->query($sql) && $db_CS->affected_rows > 0) {
                             if ($this->updateDeviceHistoryMember($deviceID, 'tDeviceFirmware')) {
                                 $db_CS->commit();
                                 $data["rstatus"] = true;
                                 $data["alert_type"] = "success alert";
                                 $data["result"] = "FW updated from " . $connection["tDeviceFirmware"] . " to " . $response["cmdOutput"] . "";
                             } else {
                                 $data["rstatus"] = true;
                                 //$data["sql"] = $sql;
                                 $data["alert_type"] = "danger alert";
                                 $data["result"] = 'Ошибка сохранения или такого устройства не существует';
                             }
                         }
                     } else {
                         $data["rstatus"] = true;
                         $data["alert_type"] = "success alert";
                         $data["result"] = "FW is up to date! (Answer: " . addslashes($response["cmdOutput"]) . ")";
                     }
                 }
             } else {
                 $data["result"] = "Wrong IP! (" . $connection["tLastAliveIP"] . ")";
             }
             header('Content-Type: application/json');
             echo json_encode($data);
         }
     }
 }
Exemple #2
0
     $host_connected = false;
     $sql = "UPDATE sshManagerQueue\n\t\t\t\tSET cmdOutput = 'Auth failed!',\n\t\t\t\t\tcmdTimestamp = UNIX_TIMESTAMP()\n\t\t\t\tWHERE memberID = '" . $connection["memberID"] . "'\n\t\t\t\t  AND jobTemplateID = '" . $connection["jobTemplateID"] . "'\n\t\t\t\t  AND deviceID = '" . $connection["deviceID"] . "'\n\t\t\t\t  AND cmdID = '" . $connection["cmdID"] . "'";
     //echo "Running sql auth error cmdID: ".$connection["cmdID"]."\n$sql";
     if ($db_CS->query($sql)) {
     }
 } else {
     // WE GOT A CONNECTION !
     //$ansi->appendString($ssh->read('username@username:~$'));
     $ansi = new File_ANSI();
     $sql = "UPDATE sshManagerQueue\n\t\t\t\tSET cmdOutput = 'Connected!',\n\t\t\t\t\tcmdTimestamp = UNIX_TIMESTAMP()\n\t\t\t\tWHERE memberID = '" . $connection["memberID"] . "'\n\t\t\t\t  AND jobTemplateID = '" . $connection["jobTemplateID"] . "'\n\t\t\t\t  AND cmdID = '" . $connection["cmdID"] . "'\n\t\t\t\t  AND deviceID = '" . $connection["deviceID"] . "'";
     if ($db_CS->query($sql)) {
         $ssh->enablePTY();
         $fwCMD = "cat /http/default/_version.php | grep 'define' | grep 'PRODUCT_VERSION' | awk -F ',' '{print \$2}' | sed 's/[^[:alnum:]\\.[:space:]]\\+//g'";
         $ssh->exec($fwCMD);
         $ansi->appendString($ssh->read());
         $response["cmdOutput"] = trim(htmlspecialchars_decode(strip_tags($ansi->getHistory())));
         //echo "Running sql success cmdID: ".$connection["cmdID"]."\n$sql";
         if ($db_CS->query($sql)) {
             if ($connection["tDeviceFirmware"] != $response["cmdOutput"]) {
                 $sql = "UPDATE sshManagerQueue\n\t\t\t\t\t\t\tSET cmdOutput = 'FW updated from " . $connection["tDeviceFirmware"] . " to " . $response["cmdOutput"] . "',\n\t\t\t\t\t\t\t\tcmdTimestamp = UNIX_TIMESTAMP()\n\t\t\t\t\t\t\tWHERE memberID = '" . $connection["memberID"] . "'\n\t\t\t\t\t\t\t  AND jobTemplateID = '" . $connection["jobTemplateID"] . "'\n\t\t\t\t\t\t\t  AND cmdID = '" . $connection["cmdID"] . "'\n\t\t\t\t\t\t\t  AND deviceID = '" . $connection["deviceID"] . "'";
                 $db_CS->query($sql);
                 $sql = "UPDATE DeviceList\n\t\t\t\t\t\t\tSET tDeviceFirmware = '" . $response["cmdOutput"] . "'\n\t\t\t\t\t\t\tWHERE id = '" . $connection["deviceID"] . "'";
                 if ($db_CS->query($sql) && $db_CS->affected_rows > 0) {
                     if (updateDeviceHistoryMember($connection["deviceID"], 'tDeviceFirmware', $connection["memberID"])) {
                         $db_CS->commit();
                     } else {
                         $db_CS->rollback();
                     }
                 }
             } else {
                 $sql = "UPDATE sshManagerQueue\n\t\t\t\t\t\t\tSET cmdOutput = 'FW is up to date! (Answer: " . addslashes($response["cmdOutput"]) . ")',\n\t\t\t\t\t\t\t\tcmdTimestamp = UNIX_TIMESTAMP()\n\t\t\t\t\t\t\tWHERE memberID = '" . $connection["memberID"] . "'\n\t\t\t\t\t\t\t  AND jobTemplateID = '" . $connection["jobTemplateID"] . "'\n\t\t\t\t\t\t\t  AND cmdID = '" . $connection["cmdID"] . "'\n\t\t\t\t\t\t\t  AND deviceID = '" . $connection["deviceID"] . "'";
     if ($db_CS->query($sql)) {
     }
 } else {
     // WE GOT A CONNECTION !
     //$ansi->appendString($ssh->read('username@username:~$'));
     $ansi = new File_ANSI();
     $sql = "UPDATE sshManagerQueue\n\t\t\t\tSET cmdOutput = 'Connected!',\n\t\t\t\t\tcmdTimestamp = UNIX_TIMESTAMP()\n\t\t\t\tWHERE memberID = '" . $connection["memberID"] . "'\n\t\t\t\t  AND jobTemplateID = '" . $connection["jobTemplateID"] . "'\n\t\t\t\t  AND cmdID = '" . $connection["cmdID"] . "'\n\t\t\t\t  AND deviceID = '" . $connection["deviceID"] . "'";
     if ($db_CS->query($sql)) {
         if (strstr($cmdText, 'top')) {
             $ssh->enablePTY();
             //echo "found TOP in command list\n";
             $ssh->exec($cmdText);
             $ssh->setTimeout(5);
             //$ansi->appendString($ssh->read('username@username:~$'));
             $ansi->appendString($ssh->read());
             $response["cmdOutput"] = $ansi->getHistory();
         } else {
             $ssh->enablePTY();
             //echo "not found TOP in command list\nExecuting $cmdText \n";
             $ssh->exec($cmdText . "\n");
             //$ssh->setTimeout(5);
             $ansi->appendString($ssh->read());
             $response["cmdOutput"] = $ansi->getHistory();
             //$response["cmdOutput"] = $ssh->exec($cmdText);
         }
         //echo "Response: \n".$response["cmdOutput"];
         $sql = "UPDATE sshManagerQueue\n\t\t\t\t\tSET cmdOutput = '" . addslashes($response["cmdOutput"]) . "',\n\t\t\t\t\t\tcmdTimestamp = UNIX_TIMESTAMP()\n\t\t\t\t\tWHERE memberID = '" . $connection["memberID"] . "'\n\t\t\t\t\t  AND jobTemplateID = '" . $connection["jobTemplateID"] . "'\n\t\t\t\t\t  AND cmdID = '" . $connection["cmdID"] . "'\n\t\t\t\t\t  AND deviceID = '" . $connection["deviceID"] . "'";
         //echo "Running sql success cmdID: ".$connection["cmdID"]."\n$sql";
         if ($db_CS->query($sql)) {
             $db->commit();
         }