/** * w3esxi_adminpoweroff() * * @param mixed $params * @return */ function w3esxi_adminpoweroff($params) { //Check Server is disabled? $serverid = $params['serverid']; $result = mysql_query("SELECT disabled FROM tblservers WHERE id = '{$serverid}'"); $row = mysql_fetch_assoc($result); $disabled = $row['disabled']; if ($disabled) { return "<strong>Server is disabled.<strong>"; } $result = null; $response = null; if ($params['moduletype'] == 'w3esxi') { $user = $params['serverusername']; $pass = $params['serverpassword']; $host = $params['serverip']; $vmid = w3e_getVMID($params); $force = w3e_getSettings('force_admin_commands'); $expireDate = w3e_getLastCommandExpireDate($params['serviceid']); if ($force || !$expireDate || $expireDate < time()) { if ($vmid != null) { $vmware = new VMware(); $vmware->setServerConfig($host, $user, $pass); $response = $vmware->powerOFF($vmid); } else { $response = false; } if ($response) { w3e_insertLog('poweroff', $params['serviceid'], $vmid, 'admin'); $result = 'success'; } else { $result = "Cannot Power OFF VPS"; } } else { $expireDate = abs(time() - $expireDate); $result = "Your request is already sent. You should wait {$expireDate} seconds"; } } return $result; }
private function processAllVmCommand() { if (!isset($_SESSION['W3EALLVM'])) { $this->setErrors('Filter form is not filled.', 'ERROR'); header('Location: ' . W3E_MOD_LINK . '&view=allvm'); exit; } $formElementsArr = array('page', 'back', 'filter', 'view', 'action', 'W3E_ACTION'); foreach ($formElementsArr as $element) { if (!isset($element, $_POST)) { $this->setErrors('Problem with saving form. Please go back to the AllVM page and try again.', 'ERROR'); header('Location: ' . W3E_MOD_LINK . '&view=allvm'); exit; } } $actionArr = array('poweron', 'poweroff', 'reset', 'rebootos', 'shutdownos', 'suspend', 'unsuspend'); $_POST['W3E_ACTION'] = trim($_POST['W3E_ACTION']); if (!in_array($_POST['W3E_ACTION'], $actionArr)) { $this->setErrors('Your action is not exist', 'ERROR'); header('Location: ' . W3E_MOD_LINK . '&view=allvm'); exit; } $location = 'Location: ' . W3E_MOD_LINK . '&view=allvm'; if ($_POST['back'] && intval($_POST['page']) > 0) { $location .= '&filter=1&page=' . intval($_POST['page']); } if (!isset($_POST['W3EServices']) || !count($_POST['W3EServices'])) { $this->setErrors('No item is selected.', 'WARNING'); header($location); exit; } //Services for ($i = 0; $i < count($_POST['W3EServices']); $i++) { $_POST['W3EServices'][$i] = intval($_POST['W3EServices'][$i]); } $serviceIdArr = implode(',', $_POST['W3EServices']); $query = "\r\nSELECT\r\nmod_w3esxi.vmid,mod_w3esxi.id w3eid,mod_w3esxi.serviceid,\r\ntblservers.id serverid,tblservers.name servername,tblservers.ipaddress,tblservers.username,tblservers.password\r\nFROM mod_w3esxi,tblservers\r\nWHERE\r\nmod_w3esxi.serviceid IN ({$serviceIdArr})\r\nAND\r\ntblservers.id = mod_w3esxi.serverid\r\nAND\r\ntblservers.type = 'w3esxi'\r\nAND\r\ntblservers.disabled = 0\r\nORDER BY tblservers.name ASC\r\n "; $dbresult = @mysql_query($query); if (!$dbresult) { $this->setErrors("Cannot get VMIDs from DB: " . mysql_error(), 'ERROR'); header('Location: ' . W3E_MOD_LINK . '&view=allvm'); exit; } if (!mysql_num_rows($dbresult)) { $this->setErrors("There is no item to change power state", 'ERROR'); header($location); exit; } $vmware = new VMware(); while ($row = mysql_fetch_assoc($dbresult)) { //Connect to vmware server $host = $row['ipaddress']; $user = $row['username']; $pass = decrypt($row['password']); $vmware->setServerConfig($host, $user, $pass); $result = null; switch ($_POST['W3E_ACTION']) { case 'poweron': $result = $vmware->powerON($row['vmid']); break; case 'poweroff': $result = $vmware->powerOFF($row['vmid']); break; case 'reset': $result = $vmware->reset($row['vmid']); break; case 'rebootos': $result = $vmware->rebootOS($row['vmid']); break; case 'shutdownos': $result = $vmware->shutdownOS($row['vmid']); break; case 'suspend': $result = $vmware->suspend($row['vmid']); break; case 'unsuspend': $result = $vmware->unSuspend($row['vmid']); break; } if (!$result) { $this->setErrors("Cannot {$_POST['W3E_ACTION']} VMID {$row['vmid']} from server {$row['servername']}", 'WARNING'); } else { //INSERT LOG: $userAgent = mysql_real_escape_string(trim($_SERVER["HTTP_USER_AGENT"])); $ip = mysql_real_escape_string(trim($_SERVER["REMOTE_ADDR"])); $loggedDate = strftime('%Y-%m-%d %H:%M:%S'); $expireDate = $loggedDate; $action = $_POST['W3E_ACTION']; if ($action != 'unsuspend' && $action != 'suspend') { $lockTime = $this->getSettings($action . '_lock_time'); $lockTime = str_replace(array('h', 's', 'm'), array(' hour', ' sec', ' min'), $lockTime); $expireDate = strftime('%Y-%m-%d %H:%M:%S', strtotime('+' . $lockTime)); } $insertArr = array('w3e_id' => $row['w3eid'], 'serviceid' => $row['serviceid'], 'date_logged' => $loggedDate, 'locking_date_expired' => $expireDate, 'client_ip' => $ip, 'user_agent' => $userAgent, 'command_by' => 'admin', 'action' => $action); insert_query('mod_w3esxi_logs', $insertArr); //suspend product in DB if ($_POST['W3E_ACTION'] == 'suspend') { update_query("tblhosting", array("domainstatus" => "Suspended"), array("id" => $row['serviceid'])); } //active product in DB if ($_POST['W3E_ACTION'] == 'unsuspend') { update_query("tblhosting", array("domainstatus" => "Active"), array("id" => $row['serviceid'])); } $this->setErrors("Action '{$action}' is done for vmid: {$row['vmid']}", 'SUCCESS'); } } header($location); exit; }