'Vesta Server Manager V2', ); } /** * Returns link to account management page * * @return string */ public function getLoginUrl() { $host = 'http'; if ($this->_config['secure']) { $host .= 's'; } $host .= '://' . $this->_config['host'] . ':'.$this->_config['port'].'/'; return $host; } /** * Returns link to reseller account management * @return string */ public function getResellerLoginUrl() { return 'http://www.google.com?q=whm'; } private function _makeRequest($params) { $host = 'http'; if ($this->_config['secure']) { $host .= 's'; } $host .= '://' . $this->_config['host'] . ':'.$this->_config['port'].'/api/'; // Server credentials $params['user'] = $this->_config['username']; $params['password'] = $this->_config['password']; // Send POST query via cURL $postdata = http_build_query($params); $curl = curl_init(); $timeout = 5; curl_setopt($curl, CURLOPT_URL, $host); curl_setopt($curl, CURLOPT_RETURNTRANSFER,true); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($curl, CURLOPT_POST, true); curl_setopt($curl, CURLOPT_POSTFIELDS, $postdata); curl_setopt ($curl, CURLOPT_CONNECTTIMEOUT, $timeout); $result = curl_exec($curl); curl_close($curl); if(strpos($result, 'Error')!== false){ throw new Server_Exception('Connection to server failed '.$result); } return $result; } private function _getPackageName(Server_Package $package) { $name = $package->getName(); return $name; } /** * This method is called to check if configuration is correct * and class can connect to server * * @return boolean */ public function testConnection() { // Server credentials $vst_command = 'v-check-user-password'; $vst_returncode = 'yes'; // Prepare POST query $postvars = array( 'returncode' => $vst_returncode, 'cmd' => $vst_command, 'arg1' => $this->_config['username'], 'arg2' => $this->_config['password'], ); // Make request and check sys info $result = $this->_makeRequest($postvars); if(strpos($result, 'Error')!== false){ throw new Server_Exception('Connection to server failed '.$result); } else { if ($result == 0) { return true; } else { throw new Server_Exception('Connection to server failed '.$result); } } return true; } /** * MEthods retrieves information from server, assignes new values to * cloned Server_Account object and returns it. * @param Server_Account $a * @return Server_Account */ public function synchronizeAccount(Server_Account $a) { $this->getLog()->info('Synchronizing account with server '.$a->getUsername()); $new = clone $a; //@example - retrieve username from server and set it to cloned object //$new->setUsername('newusername'); return $new; } /** * Create new account on server * * @param Server_Account $a */ public function createAccount(Server_Account $a) { $p = $a->getPackage(); $packname = $this->_getPackageName($p); $client = $a->getClient(); // Server credentials $vst_command = 'v-add-user'; $vst_returncode = 'yes'; $parts = explode(" ", $client->getFullName()); $lastname = array_pop($parts); $firstname = implode(" ", $parts); // Prepare POST query $postvars = array( 'returncode' => $vst_returncode, 'cmd' => $vst_command, 'arg1' => $a->getUsername(), 'arg2' => $a->getPassword(), 'arg3' => $client->getEmail(), 'arg4' => $packname, 'arg5' => $firstname, 'arg6' => $lastname ); // Make request and create user $result = $this->_makeRequest($postvars); if($result == 0) { // Create Domain Prepare POST query $postvars2 = array( 'returncode' => 'yes', 'cmd' => 'v-add-domain', 'arg1' => $a->getUsername(), 'arg2' => $a->getDomain() ); $result2 = $this->_makeRequest($postvars2); } else { } if($result2 != '0'){ throw new Server_Exception('Server Manager Vesta CP Error: Create Domain failure '.$result2); } return true; } /** * Suspend account on server * @param Server_Account $a */ public function suspendAccount(Server_Account $a) { $user = $a->getUsername(); // Prepare POST query $postvars = array( 'returncode' => 'yes', 'cmd' => 'v-suspend-user', 'arg1' => $a->getUsername(), 'arg2' => 'no' ); // Make request and suspend user $result = $this->_makeRequest($postvars); // Check if error 6 the account is suspended on server if($result == '6'){ return true; } if($result != '0'){ throw new Server_Exception('Server Manager Vesta CP Error: Suspend Account Error '.$result.$suspended); } return true; } /** * Unsuspend account on server * @param Server_Account $a */ public function unsuspendAccount(Server_Account $a) { // Server credentials $vst_command = 'v-unsuspend-user'; $vst_returncode = 'yes'; // Prepare POST query $postvars = array( 'returncode' => $vst_returncode, 'cmd' => $vst_command, 'arg1' => $a->getUsername(), 'arg2' => 'no', 'arg3' =>'', 'arg4' =>'', 'arg5' =>'', 'arg6' =>'', 'arg7' =>'', 'arg8' =>'', 'arg9' =>'' ); $result = $this->_makeRequest($postvars); if($result != '0'){ throw new Server_Exception('Server Manager Vesta CP Error: unSuspend Account Error '.$result); } return true; } /** * Cancel account on server * @param Server_Account $a */ public function cancelAccount(Server_Account $a) { // Server credentials $vst_username = $this->_config['username']; $vst_password = $this->_config['password']; $vst_command = 'v-delete-user'; $vst_returncode = 'yes'; // Prepare POST query $postvars = array( 'returncode' => $vst_returncode, 'cmd' => $vst_command, 'arg1' => $a->getUsername(), 'arg2' => 'no' ); // Make request and delete user $result = $this->_makeRequest($postvars); if($result == '3'){ return true; } else {if($result != '0'){ throw new Server_Exception('Server Manager Vesta CP Error: Cancel Account Error '.$result); }} return true; } /** * Change account package on server * @param Server_Account $a * @param Server_Package $p */ public function changeAccountPackage(Server_Account $a, Server_Package $p) { $package = $a->getPackage()->getName(); // Server credentials $vst_username = $this->_config['username']; $vst_password = $this->_config['password']; $vst_command = 'v-change-user-package'; $vst_returncode = 'yes'; // Prepare POST query $postvars = array( 'returncode' => $vst_returncode, 'cmd' => $vst_command, 'arg1' => $a->getUsername(), 'arg2' => $this->_getPackageName($p), 'arg3' => 'no' ); // Make request and change package $result = $this->_makeRequest($postvars); if($result != '0'){ throw new Server_Exception('Server Manager Vesta CP Error: Change User package Account Error '.$result); } return true; } /** * Change account username on server * @param Server_Account $a * @param type $new - new account username */ public function changeAccountUsername(Server_Account $a, $new) { { throw new Server_Exception('Server Manager Vesta CP Error: Not Supported'); } } /** * Change account domain on server * @param Server_Account $a * @param type $new - new domain name */ public function changeAccountDomain(Server_Account $a, $new) { { throw new Server_Exception('Server Manager Vesta CP Error: Not Supported'); } } /** * Change account password on server * @param Server_Account $a * @param type $new - new password */ public function changeAccountPassword(Server_Account $a, $new) { // Server credentials $vst_username = $this->_config['username']; $vst_password = $this->_config['password']; $vst_command = 'v-change-user-password'; $vst_returncode = 'yes'; // Prepare POST query $postvars = array( 'returncode' => $vst_returncode, 'cmd' => $vst_command, 'arg1' => $a->getUsername(), 'arg2' => $new ); // Make request and change password $result = $this->_makeRequest($postvars); if($result != '0'){ throw new Server_Exception('Server Manager Vesta CP Error: Change Password Account Error '.$result); } return true; } /** * Change account IP on server * @param Server_Account $a * @param type $new - account IP */ public function changeAccountIp(Server_Account $a, $new) { { throw new Server_Exception('Server Manager Vesta CP Error: Not Supported'); } } }