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