From a16341304380c09fd5ba60ea1f6d9f86110865d0 Mon Sep 17 00:00:00 2001 From: Dima Malishev Date: Sat, 6 Aug 2011 16:08:27 +0300 Subject: [PATCH] php files cleaned, php formatting added --- web/vesta/api/AjaxHandler.php | 69 +- web/vesta/api/CRON.class.php | 379 +++++---- web/vesta/api/DB.class.php | 264 ++++--- web/vesta/api/DNS.class.php | 343 +++++---- web/vesta/api/IP.class.php | 196 +++-- web/vesta/api/MAIN.class.php | 253 +++--- web/vesta/api/PARAMS.class.php | 171 ++--- web/vesta/api/USER.class.php | 222 +++--- web/vesta/api/WEB_DOMAIN.class.php | 1147 ++++++++++++---------------- 9 files changed, 1442 insertions(+), 1602 deletions(-) diff --git a/web/vesta/api/AjaxHandler.php b/web/vesta/api/AjaxHandler.php index 1f152a8e..5bbc8899 100644 --- a/web/vesta/api/AjaxHandler.php +++ b/web/vesta/api/AjaxHandler.php @@ -1,12 +1,14 @@ + * @author Dmitry Naumov-Socolov * @copyright vesta 2010-2011 */ -class AjaxHandler -{ +class AjaxHandler { static public $instance = null; @@ -28,14 +30,12 @@ class AjaxHandler * return $this->reply($result, $data, $msg, $extra); * * @param Request $request - * @return mixed + * @return string */ - function dispatch($request) - { + function dispatch($request) { $method = Request::parseAjaxMethod($request); $inc_file = V_ROOT_DIR . 'api' . DIRECTORY_SEPARATOR . $method['namespace'] . '.class.php'; - if (!is_readable($inc_file)) - { + if (!is_readable($inc_file)) { throw new SystemException(Message::INVALID_METHOD); } @@ -44,8 +44,7 @@ class AjaxHandler $space = new $method['namespace']; $method = $method['function'] . 'Execute'; - if (!method_exists($space, $method)) - { + if (!method_exists($space, $method)) { throw new SystemException(Message::INVALID_METHOD); } @@ -53,15 +52,9 @@ class AjaxHandler } /** - * Prepare the result of method execution into ajax-readable format - * - * @param boolean $result - result of method execution - * @param array $data - data to be replied - * @param string $message - replied message - * @param array $extra - extra data + * Prepare response for ajax */ - function reply($result, $data, $message = '', $extra = array()) - { + function reply($result, $data, $message = '', $extra = array()) { return json_encode(array('result' => $result, 'data' => $data, 'message' => $message, @@ -70,12 +63,7 @@ class AjaxHandler )); } - /** - * TODO: delete this method - * @deprecated - */ - static function makeReply($reply) - { + static function makeReply($reply) { print $reply; } @@ -83,43 +71,24 @@ class AjaxHandler // Error handlers // - /** - * Generate general error - * @param Exception $error - */ - static function generalError($error) - { + static function generalError($error) { self::renderGlobalError(Message::ERROR, Message::GENERAL_ERROR, $error); } - /** - * Generate protection error - * @param Exception $error - */ - static function protectionError($error) - { + static function protectionError($error) { self::renderGlobalError(Message::ERROR, Message::PROTECTION_ERROR, $error); } - /** - * Generate system error - * @param Exception $error - */ - static function systemError($error) - { + static function systemError($error) { self::renderGlobalError(Message::ERROR, Message::SYSTEM_ERROR, $error); } - /** - * Prepare and render the error - * @param Exception $error - */ - static function renderGlobalError($type, $message, $error) - { - $trace = $error->getTrace(); + static function renderGlobalError($type, $message, $error) { + /*$trace = $error->getTrace(); AjaxHandler::makeReply( - AjaxHandler::getInstance()->reply(false, $type, $message . ': ' . $error->getMessage(), $trace[0]['file'] . ' / ' . $trace[0]['line']) - ); + AjaxHandler::getInstance()->reply(false, $type, $message . ': ' . $error->getMessage(), $trace[0]['file'] . ' / ' . $trace[0]['line']) + );*/ + print $message; } } diff --git a/web/vesta/api/CRON.class.php b/web/vesta/api/CRON.class.php index ad8a8165..6eb9c6ab 100644 --- a/web/vesta/api/CRON.class.php +++ b/web/vesta/api/CRON.class.php @@ -1,270 +1,247 @@ - * @author Malishev Dima * @author vesta, http://vestacp.com/ + * @author Dmitry Malishev + * @author Dmitry Naumov-Socolov * @copyright vesta 2010-2011 */ + class CRON extends AjaxHandler { - /** - * List cron entries + * Get CRON entries * * @param Request $request - * @return + * @return string - Ajax Reply */ public function getListExecute($request) { $_user = 'vesta'; $reply = array(); - - $result = Vesta::execute(Vesta::V_LIST_CRON_JOBS, - array($_user, Config::get('response_type'))); - - foreach ($result['data'] as $id => $record) - { + $result = Vesta::execute(Vesta::V_LIST_CRON_JOBS, array($_user, Config::get('response_type'))); + + foreach ($result['data'] as $id => $record) { $reply[$id] = array( - 'CMD' => $record['CMD'], - 'MIN' => $record['MIN'], - 'HOUR' => $record['HOUR'], - 'DAY' => $record['DAY'], - 'MONTH' => $record['MONTH'], - 'WDAY' => $record['WDAY'], - 'SUSPEND' => $record['SUSPEND'], - 'DATE' => date(Config::get('ui_date_format', strtotime($record['DATE']))) - ); + 'CMD' => $record['CMD'], + 'MIN' => $record['MIN'], + 'HOUR' => $record['HOUR'], + 'DAY' => $record['DAY'], + 'MONTH' => $record['MONTH'], + 'WDAY' => $record['WDAY'], + 'SUSPEND' => $record['SUSPEND'], + 'DATE' => date(Config::get('ui_date_format', strtotime($record['DATE']))) + ); } - - if (!$result['status']) - { + + if (!$result['status']) { $this->errors[] = array($result['error_code'] => $result['error_message']); } - + return $this->reply($result['status'], $reply); } /** - * Add cron entry + * Add CRON entry * * @param Request $request - * @return + * @return string - Ajax Reply */ public function addExecute($request) { - $r = new Request(); - $_s = $r->getSpell(); - $_user = 'vesta'; - + $r = new Request(); + $_s = $r->getSpell(); + $_user = 'vesta'; $params = array( - 'USER' => $_user, - 'MIN' => $_s['MIN'], - 'HOUR' => $_s['HOUR'], - 'DAY' => $_s['DAY'], - 'MONTH' => $_s['MONTH'], - 'WDAY' => $_s['WDAY'], - 'CMD' => $_s['CMD'] - ); - + 'USER' => $_user, + 'MIN' => $_s['MIN'], + 'HOUR' => $_s['HOUR'], + 'DAY' => $_s['DAY'], + 'MONTH' => $_s['MONTH'], + 'WDAY' => $_s['WDAY'], + 'CMD' => $_s['CMD'] + ); + $result = Vesta::execute(Vesta::V_ADD_CRON_JOB, $params); - if ($_s['REPORTS']) - { + if ($_s['REPORTS']) { $result = array(); - $result = Vesta::execute(Vesta::V_ADD_SYS_USER_REPORTS, - array('USER' => $_user)); - if (!$result['status']) - { - $this->status = FALSE; + $result = Vesta::execute(Vesta::V_ADD_SYS_USER_REPORTS, array('USER' => $_user)); + if (!$result['status']) { + $this->status = FALSE; $this->errors['REPORTS'] = array($result['error_code'] => $result['error_message']); } } - if (!$result['status']) - { + if (!$result['status']) { $this->errors[] = array($result['error_code'] => $result['error_message']); } - - return $this->reply($result['status'], $result['data']); - } - - /** - * Delete cron entry - * - * @param Request $request - * @return - */ - function delExecute($request) - { - $r = new Request(); - $_s = $r->getSpell(); - $_user = 'vesta'; - - $params = array( - 'USER' => $_user, - 'JOB' => $_s['JOB'] - ); - $result = Vesta::execute(Vesta::V_DEL_CRON_JOB, $params); - - if (!$result['status']) - { - $this->errors[] = array($result['error_code'] => $result['error_message']); - } - + return $this->reply($result['status'], $result['data']); } /** - * Change cron entry + * Delete CRON entry * * @param Request $request - * @return + * @return string - Ajax Reply */ - function changeExecute($request) + public function delExecute($request) { - $r = new Request(); - $_s = $r->getSpell(); - $_old = $_s['old']; - $_new = $_s['new']; - - $_user = 'vesta'; - $_JOB = $_new['JOB']; - + $r = new Request(); + $_s = $r->getSpell(); + $_user = 'vesta'; + + $params = array( + 'USER' => $_user, + 'JOB' => $_s['JOB'] + ); + + $result = Vesta::execute(Vesta::V_DEL_CRON_JOB, $params); + + if (!$result['status']) { + $this->errors[] = array($result['error_code'] => $result['error_message']); + } + + return $this->reply($result['status'], $result['data']); + } + + /** + * Change CRON entry + * + * @param Request $request + * @return string - Ajax Reply + */ + public function changeExecute($request) + { + $r = new Request(); + $_s = $r->getSpell(); + $_old = $_s['old']; + $_new = $_s['new']; + $_user = 'vesta'; + $_JOB = $_new['JOB']; $result = array(); $params = array( - 'USER' => $_user, - 'JOB' => $_JOB, - 'MIN' => $_new['MIN'], - 'HOUR' => $_new['HOUR'], - 'DAY' => $_new['DAY'], - 'MONTH' => $_new['MONTH'], - 'WDAY' => $_new['WDAY'], - 'CMD' => $_new['CMD'] - ); + 'USER' => $_user, + 'JOB' => $_JOB, + 'MIN' => $_new['MIN'], + 'HOUR' => $_new['HOUR'], + 'DAY' => $_new['DAY'], + 'MONTH' => $_new['MONTH'], + 'WDAY' => $_new['WDAY'], + 'CMD' => $_new['CMD'] + ); $result = Vesta::execute(Vesta::V_CHANGE_CRON_JOB, $params); - if (!$result['status']) - { + if (!$result['status']) { $this->errors[] = array($result['error_code'] => $result['error_message']); } - - return $this->reply($result['status'], $result['data']); - } - - /** - * Suspend cron entry - * - * @param Request $request - * @return - */ - function suspendExecute($request) - { - $r = new Request(); - $_s = $r->getSpell(); - - $_user = 'vesta'; - $_JOB = $_s['JOB']; - - $params = array( - 'USER' => $_user, - 'JOB' => $_JOB - ); - - $result = Vesta::execute(Vesta::V_SUSPEND_CRON_JOB, $params); - if (!$result['status']) - { - $this->errors[] = array($result['error_code'] => $result['error_message']); - } - - return $this->reply($result['status'], $result['data']); - } - - - /** - * Unsuspend cron entry - * - * @param Request $request - * @return - */ - function unsuspendExecute($request) - { - $r = new Request(); - $_s = $r->getSpell(); - - $_user = 'vesta'; - $_JOB = $_s['JOB']; - - $params = array( - 'USER' => $_user, - 'JOB' => $_JOB - ); - - $result = Vesta::execute(Vesta::V_UNSUSPEND_CRON_JOB, $params); - - if (!$result['status']) - { - $this->errors[] = array($result['error_code'] => $result['error_message']); - } - - return $this->reply($result['status'], $result['data']); - } - - /** - * Batch suspend cron entries - * - * @param Request $request - * @return - */ - function suspendAllExecute($request) - { - $r = new Request(); - $_s = $r->getSpell(); - - $_user = 'vesta'; - $_JOB = $_s['JOB']; - - $params = array( - 'USER' => $_user - ); - - $result = Vesta::execute(Vesta::V_SUSPEND_CRON_JOBS, $params); - - if (!$result['status']) - { - $this->errors[] = array($result['error_code'] => $result['error_message']); - } - - return $this->reply($result['status'], $result['data']); - } + return $this->reply($result['status'], $result['data']); + } + + /** - * Batch suspend cron entry + * Suspend CRON entry * * @param Request $request - * @return + * @return string - Ajax Reply */ - function unsuspendAllExecute($request) + public function suspendExecute($request) + { + $r = new Request(); + $_s = $r->getSpell(); + $_user = 'vesta'; + $_JOB = $_s['JOB']; + $params = array( + 'USER' => $_user, + 'JOB' => $_JOB + ); + + $result = Vesta::execute(Vesta::V_SUSPEND_CRON_JOB, $params); + + if (!$result['status']) { + $this->errors[] = array($result['error_code'] => $result['error_message']); + } + + return $this->reply($result['status'], $result['data']); + } + + /** + * Unsuspend CRON entry + * + * @param Request $request + * @return string - Ajax Reply + */ + public function unsuspendExecute($request) + { + $r = new Request(); + $_s = $r->getSpell(); + $_user = 'vesta'; + $_JOB = $_s['JOB']; + $params = array( + 'USER' => $_user, + 'JOB' => $_JOB + ); + + $result = Vesta::execute(Vesta::V_UNSUSPEND_CRON_JOB, $params); + + if (!$result['status']) { + $this->errors[] = array($result['error_code'] => $result['error_message']); + } + + return $this->reply($result['status'], $result['data']); + } + + + /** + * Batch suspend CRON entries + * + * @param Request $request + * @return string - Ajax Reply + */ + public function suspendAllExecute($request) { $r = new Request(); $_s = $r->getSpell(); - $_user = 'vesta'; - + $_JOB = $_s['JOB']; $params = array( - 'USER' => $_user - ); - - $result = Vesta::execute(Vesta::V_UNSUSPEND_CRON_JOBS, $params); - - if (!$result['status']) - { + 'USER' => $_user + ); + + $result = Vesta::execute(Vesta::V_SUSPEND_CRON_JOBS, $params); + + if (!$result['status']) { $this->errors[] = array($result['error_code'] => $result['error_message']); } + + return $this->reply($result['status'], $result['data']); + } + /** + * Batch unsuspend CRON entries + * + * @param Request $request + * @return string - Ajax Reply + */ + public function unsuspendAllExecute($request) + { + $r = new Request(); + $_s = $r->getSpell(); + $_user = 'vesta'; + $params = array( + 'USER' => $_user + ); + + $result = Vesta::execute(Vesta::V_UNSUSPEND_CRON_JOBS, $params); + + if (!$result['status']) { + $this->errors[] = array($result['error_code'] => $result['error_message']); + } + return $this->reply($result['status'], $result['data']); } diff --git a/web/vesta/api/DB.class.php b/web/vesta/api/DB.class.php index 942d1c13..d0a39329 100644 --- a/web/vesta/api/DB.class.php +++ b/web/vesta/api/DB.class.php @@ -3,246 +3,244 @@ /** * DB * - * @author Naumov-Socolov - * @author Malishev Dima * @author vesta, http://vestacp.com/ - * @copyright vesta 2011 + * @author Dmitry Malishev + * @author Dmitry Naumov-Socolov + * @copyright vesta 2010-2011 */ + class DB extends AjaxHandler { /** - * List entries + * Get DB entries * * @param Request $request - * @return + * @return string - Ajax Reply */ public function getListExecute($request) { - $_user = 'vesta'; - $reply = array(); + $_user = 'vesta'; + $reply = array(); $result = Vesta::execute(Vesta::V_LIST_DB_BASES, array($_user, Config::get('response_type'))); + + foreach ($result['data'] as $db => $record) { + $type = $record['TYPE']; + if (!isset($reply[$type])) { + $reply[$type] = array(); + } - foreach ($result['data'] as $db => $record) - { - $reply[$db] = array( - 'DB' => $db, - 'USER' => $record['USER'], - 'HOST' => $record['HOST'], - 'TYPE' => $record['TYPE'], - 'U_DISK' => $record['U_DISK'], - 'SUSPEND' => $record['SUSPEND'], - 'DATE' => date(Config::get('ui_date_format', strtotime($record['DATE']))) - ); + $reply[$type][] = array( + 'DB' => $db, + 'OWNER' => 'John Travlolta', + 'USERS' => (array)$record['USER'], + 'HOST' => $record['HOST'], + 'TYPE' => $record['TYPE'], + 'U_DISK' => $record['U_DISK'], + 'DISK' => 2024, + 'SUSPEND' => $record['SUSPEND'], + 'DATE' => date(Config::get('ui_date_format', strtotime($record['DATE']))) + ); } - - if (!$result['status']) - { + + if (!$result['status']) { $this->errors[] = array($result['error_code'] => $result['error_message']); } - + + $reply['postgre'][] = array( + 'DB' => 'x', + 'OWNER' => 'John Travlolta', + 'USERS' => array('E'), + 'HOST' => 'xxx', + 'TYPE' => '34', + 'U_DISK' => '0', + 'SUSPEND' => 'false', + 'DATE' => '2011-01-01' + ); + return $this->reply($result['status'], $reply); } /** - * Add entry + * Add DB entry * * @param Request $request - * @return + * @return string - Ajax Reply */ public function addExecute($request) { - $r = new Request(); - $_s = $r->getSpell(); - $_user = 'vesta'; - + $r = new Request(); + $_s = $r->getSpell(); + $_user = 'vesta'; + $params = array( - 'USER' => $_user, - 'DB' => $_s['DB'], - 'DB_USER' => $_s['DB_USER'], - 'DB_PASSWORD' => $_s['DB_PASSWORD'], - 'TYPE' => $_s['TYPE'] - ); - if ($_s['HOST']) - { + 'USER' => $_user, + 'DB' => $_s['DB'], + 'DB_USER' => $_s['DB_USER'], + 'DB_PASSWORD' => $_s['DB_PASSWORD'], + 'TYPE' => $_s['TYPE'] + ); + + if ($_s['HOST']) { $params['HOST'] = $_s['HOST']; - } - + } + $result = Vesta::execute(Vesta::V_ADD_DB_BASE, $params); - - if (!$result['status']) - { + + if (!$result['status']) { $this->errors[] = array($result['error_code'] => $result['error_message']); } - + return $this->reply($result['status'], $result['data']); } - + /** - * Delete entry + * Delete DB entry * * @param Request $request - * @return + * @return string - Ajax Reply */ public function delExecute($request) { - $r = new Request(); - $_s = $r->getSpell(); - $_user = 'vesta'; - + $r = new Request(); + $_s = $r->getSpell(); + $_user = 'vesta'; $params = array( - 'USER' => $_user, - 'DB' => $_user.'_'.$_s['DB'] - ); - + 'USER' => $_user, + 'DB' => $_user.'_'.$_s['DB'] + ); + $result = Vesta::execute(Vesta::V_DEL_DB_BASE, $params); - - if (!$result['status']) - { + + if (!$result['status']) { $this->errors[] = array($result['error_code'] => $result['error_message']); } - + return $this->reply($result['status'], $result['data']); } - + /** - * Change password + * Change Password * * @param Request $request - * @return + * @return string - Ajax Reply */ public function changePasswordExecute($request) { - $r = new Request(); - $_s = $r->getSpell(); - - $_user = 'vesta'; - + $r = new Request(); + $_s = $r->getSpell(); + $_user = 'vesta'; $result = array(); $params = array( - 'USER' => $_user, - 'DB' => $_user.'_'.$_s['DB'], - 'PASSWORD' => $_s['DB_PASSWORD'] - ); + 'USER' => $_user, + 'DB' => $_user.'_'.$_s['DB'], + 'PASSWORD' => $_s['DB_PASSWORD'] + ); $result = Vesta::execute(Vesta::V_CHANGE_DB_PASSWORD, $params); - - if (!$result['status']) - { + + if (!$result['status']) { $this->errors[] = array($result['error_code'] => $result['error_message']); } - + return $this->reply($result['status'], $result['data']); } - + /** - * suspend user + * Suspend DB entry * * @param Request $request - * @return + * @return string - Ajax Reply */ public function suspendExecute($request) { - $r = new Request(); - $_s = $r->getSpell(); - - $_user = 'vesta'; - + $r = new Request(); + $_s = $r->getSpell(); + $_user = 'vesta'; $params = array( - 'USER' => $_user, - 'DB' => $_user.'_'.$_s['DB'] - ); - + 'USER' => $_user, + 'DB' => $_user.'_'.$_s['DB'] + ); + $result = Vesta::execute(Vesta::V_SUSPEND_DB_BASE, $params); - - if (!$result['status']) - { + + if (!$result['status']) { $this->errors[] = array($result['error_code'] => $result['error_message']); } - + return $this->reply($result['status'], $result['data']); } /** - * unsuspend entry + * Unsuspend DB entry * * @param Request $request - * @return + * @return string - Ajax Reply */ public function unsuspendExecute($request) { - $r = new Request(); - $_s = $r->getSpell(); - - $_user = 'vesta'; - + $r = new Request(); + $_s = $r->getSpell(); + $_user = 'vesta'; $params = array( - 'USER' => $_user, - 'DB' => $_user.'_'.$_s['DB'] - ); - + 'USER' => $_user, + 'DB' => $_user.'_'.$_s['DB'] + ); $result = Vesta::execute(Vesta::V_UNSUSPEND_DB_BASE, $params); - - if (!$result['status']) - { + + if (!$result['status']) { $this->errors[] = array($result['error_code'] => $result['error_message']); } - + return $this->reply($result['status'], $result['data']); } /** - * Batch suspend entries + * Batch Suspend DB entries * * @param Request $request - * @return + * @return string - Ajax Reply */ public function suspendAllExecute($request) { - $r = new Request(); - $_s = $r->getSpell(); - - $_user = 'vesta'; - $_JOB = $_s['JOB']; - + $r = new Request(); + $_s = $r->getSpell(); + $_user = 'vesta'; + $_JOB = $_s['JOB']; + $params = array( - 'USER' => $_user - ); - + 'USER' => $_user + ); + $result = Vesta::execute(Vesta::V_SUSPEND_DB_BASES, $params); - - if (!$result['status']) - { + + if (!$result['status']) { $this->errors[] = array($result['error_code'] => $result['error_message']); } - + return $this->reply($result['status'], $result['data']); } /** - * Batch unsuspend entries + * Batch unsuspend DB entries * * @param Request $request - * @return + * @return string - Ajax Reply */ public function unsuspendAllExecute($request) { - $r = new Request(); - $_s = $r->getSpell(); - - $_user = 'vesta'; - + $r = new Request(); + $_s = $r->getSpell(); + $_user = 'vesta'; $params = array( - 'USER' => $_user - ); - + 'USER' => $_user + ); $result = Vesta::execute(Vesta::V_UNSUSPEND_DB_BASES, $params); - - if (!$result['status']) - { + + if (!$result['status']) { $this->errors[] = array($result['error_code'] => $result['error_message']); } - + return $this->reply($result['status'], $result['data']); } diff --git a/web/vesta/api/DNS.class.php b/web/vesta/api/DNS.class.php index 87b627a8..7c5e3989 100644 --- a/web/vesta/api/DNS.class.php +++ b/web/vesta/api/DNS.class.php @@ -3,116 +3,121 @@ /** * DNS * - * @author Naumov-Socolov - * @author Malishev Dima + * TODO: Too many "if" statements. Code should be refactored in order to not use a lot of "if" conditions + * * @author vesta, http://vestacp.com/ + * @author Dmitry Malishev + * @author Dmitry Naumov-Socolov * @copyright vesta 2010-2011 */ + class DNS extends AjaxHandler { - + /** - * list entries + * Get DNS entries * * @param Request $request - * @return + * @return string - Ajax Reply */ - public function getListExecute($request) { + public function getListExecute($request) + { $_user = 'vesta'; $reply = array(); - $result = Vesta::execute(Vesta::V_LIST_DNS_DOMAINS, array($_user, Config::get('response_type'))); - foreach ($result['data'] as $dns_domain => $details) - { + foreach ($result['data'] as $dns_domain => $details) { $reply[] = array( - 'DNS_DOMAIN' => $dns_domain, - 'IP' => $details['IP'], - 'TPL' => $details['TPL'], - 'TTL' => $details['TTL'], - 'EXP' => $details['EXP'], - 'SOA' => $details['SOA'], - 'SUSPEND' => $details['SUSPEND'], - 'DATE' => date(Config::get('ui_date_format', strtotime($details['DATE']))) - ); + 'DNS_DOMAIN' => $dns_domain, + 'IP' => $details['IP'], + 'TPL' => $details['TPL'], + 'TTL' => $details['TTL'], + 'EXP' => $details['EXP'], + 'SOA' => $details['SOA'], + 'SUSPEND' => $details['SUSPEND'], + 'DATE' => date(Config::get('ui_date_format', strtotime($details['DATE']))) + ); } - if (!$result['status']) - { + + if (!$result['status']) { $this->errors[] = array($result['error_code'] => $result['error_message']); } - + return $this->reply($result['status'], $reply); } - + /** - * List records of entries + * Get DNS records * * @param Request $request - * @return + * @return string - Ajax Reply */ public function getListRecordsExecute($request) { - $r = new Request(); - $_s = $r->getSpell(); - $_user = 'vesta'; - - $reply = array(); + $r = new Request(); + $_s = $r->getSpell(); + $_user = 'vesta'; + $reply = array(); $result = Vesta::execute(Vesta::V_LIST_DNS_DOMAIN_RECORDS, array($_user, $_s['DNS_DOMAIN'], Config::get('response_type'))); - foreach ($result['data'] as $record_id => $details) - { + foreach ($result['data'] as $record_id => $details) { $reply[$record_id] = array( - 'RECORD_ID' => $record_id, - 'RECORD' => $details['RECORD'], - 'RECORD_TYPE' => $details['TYPE'], - 'RECORD_VALUE' => $details['VALUE'], - 'SUSPEND' => $details['SUSPEND'], - 'DATE' => date(Config::get('ui_date_format', strtotime($details['DATE']))) - ); + 'RECORD_ID' => $record_id, + 'RECORD' => $details['RECORD'], + 'RECORD_TYPE' => $details['TYPE'], + 'RECORD_VALUE' => $details['VALUE'], + 'SUSPEND' => $details['SUSPEND'], + 'DATE' => date(Config::get('ui_date_format', strtotime($details['DATE']))) + ); } - if (!$result['status']) - { + if (!$result['status']) { $this->errors[] = array($result['error_code'] => $result['error_message']); } - + return $this->reply($result['status'], $reply); } /** - * Add entry + * Add DB entry * * v_add_dns_domain user domain ip [template] [exp] [soa] [ttl] * http://95.163.16.160:8083/dispatch.php?jedi_method=DNS.add&USER=vesta&DOMAIN=dev.vestacp.com&IP_ADDRESS=95.163.16.160&TEMPLATE=default&EXP=01-01-12&SOA=ns1.vestacp.com&TTL=3600 * * @param Request $request - * @return - */ + * @return string - Ajax Reply + */ public function addExecute($_spell = false) { $r = new Request(); - if ($_spell) - { + if ($_spell) { $_s = $_spell; } - else - { + else { $_s = $r->getSpell(); } $_user = 'vesta'; - $params = array( - 'USER' => $_user, // TODO: examine if OWNER ??? - 'DNS_DOMAIN' => $_s['DNS_DOMAIN'], - 'IP' => $_s['IP'] - ); - ($_s['TPL']) ? $params['TPL'] = $_s['TPL'] : -1; - ($_s['EXP']) ? $params['EXP'] = $_s['EXP'] : -1; - ($_s['SOA']) ? $params['SOA'] = $_s['SOA'] : -1; - ($_s['TTL']) ? $params['TTL'] = $_s['TTL'] : -1; - + $params = array( + 'USER' => $_user, /// OWNER ??? + 'DNS_DOMAIN' => $_s['DNS_DOMAIN'], + 'IP' => $_s['IP'] + ); + // TODO: rewrite this block. Get away from if/if/if/if + if ($_s['TPL']) { + $params['TPL'] = $_s['TPL']; + } + if ($_s['EXP']) { + $params['EXP'] = $_s['EXP']; + } + if ($_s['SOA']) { + $params['SOA'] = $_s['SOA']; + } + if ($_s['TTL']) { + $params['TTL'] = $_s['TTL']; + } + $result = Vesta::execute(Vesta::V_ADD_DNS_DOMAIN, $params); - if (!$result['status']) - { + if (!$result['status']) { $this->errors[] = array($result['error_code'] => $result['error_message']); } @@ -120,177 +125,170 @@ class DNS extends AjaxHandler } /** - * Add record + * Add DNS record + * + * v_add_dns_domain_record user domain record type value [id] + * http://95.163.16.160:8083/dispatch.php?jedi_method=DNS.addRecord&USER=vesta&DOMAIN=dev.vestacp.com&RECORD=ftp&TYPE=a&VALUE=87.248.190.222 * * @param Request $request - * @return + * @return string - Ajax Reply */ - public function addRecordExecute($request) - { + public function addRecordExecute($request) + { $r = new Request(); $_s = $r->getSpell(); $_user = 'vesta'; $params = array( - 'USER' => $_s['USER'], // TODO: find out if it's OWNER ??? - 'DOMAIN' => $_s['DOMAIN'], - 'RECORD' => $_s['RECORD'], - 'RECORD_TYPE' => $_s['TYPE'], - 'RECORD_VALUE' => $_s['VALUE'], - 'RECORD_ID' => $_s['RECORD_ID'] - ); - + 'USER' => $_s['USER'], /// OWNER ??? + 'DOMAIN' => $_s['DOMAIN'], + 'RECORD' => $_s['RECORD'], + 'RECORD_TYPE' => $_s['TYPE'], + 'RECORD_VALUE' => $_s['VALUE'], + 'RECORD_ID' => $_s['RECORD_ID'] + ); + $result = Vesta::execute(Vesta::V_ADD_DNS_DOMAIN_RECORD, $params); - - if (!$result['status']) - { + + if (!$result['status']) { $this->errors[] = array($result['error_code'] => $result['error_message']); } return $this->reply($result['status'], $result['data']); } - /** - * Delete entry + * Delete DNS entry * - * @param mixed $_spell - * @return + * v_del_dns_domain user domain + * http://95.163.16.160:8083/dispatch.php?jedi_method=DNS.del&USER=vesta&DOMAIN=dev.vestacp.com + * + * @param Request $request + * @return string - Ajax Reply */ public function delExecute($_spell = false) { $r = new Request(); - if ($_spell) - { + if ($_spell) { $_s = $_spell; } - else - { + else { $_s = $r->getSpell(); } - + $_user = 'vesta'; - $params = array( - 'USER' => $_user, // TODO: find out -> OWNER ??? - 'DOMAIN' => $_s['DNS_DOMAIN'], - ); - + $params = array( + 'USER' => $_user, /// OWNER ??? + 'DOMAIN' => $_s['DNS_DOMAIN'], + ); + $result = Vesta::execute(Vesta::V_DEL_DNS_DOMAIN, $params); - if (!$result['status']) - { + if (!$result['status']) { $this->errors[] = array($result['error_code'] => $result['error_message']); } return $this->reply($result['status'], $result['data']); } - - /** - * Delete record + * Add DNS record + * + * v_del_dns_domain_record user domain id + * http://95.163.16.160:8083/dispatch.php?jedi_method=DNS.delRecord&USER=vesta&DOMAIN=dev.vestacp.com&RECORD_ID=9 * * @param Request $request - * @return + * @return string - Ajax Reply */ - function delRecordExecute($request) + public function delRecordExecute($request) { $r = new Request(); $_s = $r->getSpell(); $_user = 'vesta'; - + $params = array( - 'USER' => $_user, // TODO: find out if -> OWNER ??? - 'DOMAIN' => $_s['DOMAIN'], - 'RECORD_ID' => $_s['RECORD_ID'] - ); - + 'USER' => $_user, // TODO: OWNER ??? + 'DOMAIN' => $_s['DOMAIN'], + 'RECORD_ID' => $_s['RECORD_ID'] + ); + $result = Vesta::execute(Vesta::V_DEL_DNS_DOMAIN_RECORD, $params); - - if (!$result['status']) - { + + if (!$result['status']) { $this->errors[] = array($result['error_code'] => $result['error_message']); } return $this->reply($result['status'], $result['data']); } - + /** - * Change entry + * Change DNS entry + * + * TODO: get away from multiple "if" statements + * + * DNS.change&spell={"old":{"DNS_DOMAIN": "dev.vestacp.com","IP": "95.163.16.160","TPL": "default","TTL": "3377","EXP": "12-12-12","SOA": "ns2.vestacp.com"},"new":{"DNS_DOMAIN": "dev.vestacp.com","IP": "95.163.16.160","TPL": "default","TTL": "3600","EXP": "02-02-12","SOA": "ns1.vestacp.com"}} * * @param Request $request - * @return + * @return string - Ajax Reply */ public function changeExecute($request) { - $r = new Request(); - $_s = $r->getSpell(); - $_old = $_s['old']; - $_new = $_s['new']; - - $_user = 'vesta'; - + $r = new Request(); + $_s = $r->getSpell(); + $_old = $_s['old']; + $_new = $_s['new']; + $_user = 'vesta'; $_DNS_DOMAIN = $_new['DNS_DOMAIN']; - - if ($_old['IP'] != $_new['IP']) - { + + if ($_old['IP'] != $_new['IP']) { $result = array(); + $result = Vesta::execute(Vesta::V_CHANGE_DNS_DOMAIN_IP, array('USER' => $_user, 'DNS_DOMAIN' => $_DNS_DOMAIN, 'IP' => $_new['IP'])); - if(!$result['status']) - { + if (!$result['status']) { $this->status = FALSE; $this->errors['IP_ADDRESS'] = array($result['error_code'] => $result['error_message']); } } - - if ($_old['TPL'] != $_new['TPL']) - { + + if ($_old['TPL'] != $_new['TPL']) { $result = array(); $result = Vesta::execute(Vesta::V_CHANGE_DNS_DOMAIN_TPL, array('USER' => $_user, 'DNS_DOMAIN' => $_DNS_DOMAIN, 'IP' => $_new['TPL'])); - if(!$result['status']) - { + if (!$result['status']) { $this->status = FALSE; $this->errors['TPL'] = array($result['error_code'] => $result['error_message']); } } - - if ($_old['TTL'] != $_new['TTL']) - { + + if ($_old['TTL'] != $_new['TTL']) { $result = array(); $result = Vesta::execute(Vesta::V_CHANGE_DNS_DOMAIN_TTL, array('USER' => $_user, 'DNS_DOMAIN' => $_DNS_DOMAIN, 'IP' => $_new['TTL'])); - if(!$result['status']) - { + if (!$result['status']) { $this->status = FALSE; $this->errors['TTL'] = array($result['error_code'] => $result['error_message']); } } - if ($_old['EXP'] != $_new['EXP']) - { + if ($_old['EXP'] != $_new['EXP']) { $result = array(); $result = Vesta::execute(Vesta::V_CHANGE_DNS_DOMAIN_EXP, array('USER' => $_user, 'DNS_DOMAIN' => $_DNS_DOMAIN, 'IP' => $_new['EXP'])); - if (!$result['status']) - { + if (!$result['status']) { $this->status = FALSE; $this->errors['EXP'] = array($result['error_code'] => $result['error_message']); } } - - if ($_old['SOA'] != $_new['SOA']) - { + + if ($_old['SOA'] != $_new['SOA']) { $result = array(); $result = Vesta::execute(Vesta::V_CHANGE_DNS_DOMAIN_SOA, array('USER' => $_user, 'DNS_DOMAIN' => $_new['DNS_DOMAIN'], 'IP' => $_new['SOA'])); - if (!$result['status']) - { + if (!$result['status']) { $this->status = FALSE; $this->errors['SOA'] = array($result['error_code'] => $result['error_message']); } } - if (!$this->status) - { - Vesta::execute(Vesta::V_CHANGE_DNS_DOMAIN_IP, array('USER' => $_user, 'DNS_DOMAIN' => $_DNS_DOMAIN, 'IP' => $_old['IP'])); + if (!$this->status) { + Vesta::execute(Vesta::V_CHANGE_DNS_DOMAIN_IP, array('USER' => $_user, 'DNS_DOMAIN' => $_DNS_DOMAIN, 'IP' => $_old['IP'])); Vesta::execute(Vesta::V_CHANGE_DNS_DOMAIN_TPL, array('USER' => $_user, 'DNS_DOMAIN' => $_DNS_DOMAIN, 'IP' => $_old['TPL'])); Vesta::execute(Vesta::V_CHANGE_DNS_DOMAIN_TTL, array('USER' => $_user, 'DNS_DOMAIN' => $_DNS_DOMAIN, 'IP' => $_old['TTL'])); Vesta::execute(Vesta::V_CHANGE_DNS_DOMAIN_EXP, array('USER' => $_user, 'DNS_DOMAIN' => $_DNS_DOMAIN, 'IP' => $_old['EXP'])); @@ -301,44 +299,40 @@ class DNS extends AjaxHandler } /** - * Change record + * Change DNS record * * @param Request $request - * @return - */ + * @return string - Ajax Reply + */ public function changeRecordsExecute($request) { - $r = new Request(); - $_s = $r->getSpell(); - $_old = $_s['old']; - $_new = $_s['new']; - $_user = 'vesta'; + $r = new Request(); + $_s = $r->getSpell(); + $_old = $_s['old']; + $_new = $_s['new']; + $_user = 'vesta'; $_DNS_DOMAIN = $_s['DNS_DOMAIN']; - foreach ($_new as $record_id => $record_data) - { + foreach ($_new as $record_id => $record_data) { // checking if record existed - update - if(is_array($_old[$record_id])) - { - // TODO: Remove this. is it necessary??! - echo '
updating'.$record_id; - - $result = Vesta::execute(Vesta::V_CHANGE_DNS_DOMAIN_RECORD, array('USER' => $_user, 'DNS_DOMAIN' => $_DNS_DOMAIN, 'ID' => $record_id, 'RECORD' => $record_data['RECORD'], 'TYPE' => $record_data['RECORD_TYPE'], 'VALUE' => $record_data['RECORD_VALUE'])); - if(!$result['status']) - { + if (is_array($_old[$record_id])) { + $result = Vesta::execute(Vesta::V_CHANGE_DNS_DOMAIN_RECORD, + array( + 'USER' => $_user, + 'DNS_DOMAIN' => $_DNS_DOMAIN, + 'ID' => $record_id, + 'RECORD' => $record_data['RECORD'], + 'TYPE' => $record_data['RECORD_TYPE'], + 'VALUE' => $record_data['RECORD_VALUE'] + )); + if (!$result['status']) { $this->status = FALSE; $this->errors[$record_id] = array($result['error_code'] => $result['error_message']); } } - else - { - // record is new - add - // TODO: Remove this. is it necessary??! - echo '
adding'.$record_id; - + else { $result = Vesta::execute(Vesta::V_ADD_DNS_DOMAIN_RECORD, array('USER' => $_user, 'DNS_DOMAIN' => $_DNS_DOMAIN, 'RECORD' => $record_data['RECORD'], 'TYPE' => $record_data['RECORD_TYPE'], 'VALUE' => $record_data['RECORD_VALUE'], 'ID' => $record_id)); - if(!$result['status']) - { + if (!$result['status']) { $this->status = FALSE; $this->errors[$record_id] = array($result['error_code'] => $result['error_message']); } @@ -348,13 +342,16 @@ class DNS extends AjaxHandler } // in $_old have remained only record that do not present in new - so they have to be deleted - foreach ($_old as $record_id => $record_data) - { - echo '
deleting'.$record_id; + foreach ($_old as $record_id => $record_data) { + /* + $result = Vesta::execute(Vesta::V_DEL_DNS_DOMAIN_RECORD, array('USER' => $_user, 'DNS_DOMAIN' => $_DNS_DOMAIN, 'ID' => $record_id,)); + if (!$result['status']) { + $this->status = FALSE; + $this->errors[$record_id] = array($result['error_code'] => $result['error_message']); + } + */ } return $this->reply($this->status, ''); } - - } diff --git a/web/vesta/api/IP.class.php b/web/vesta/api/IP.class.php index 10ab48e9..0f363b03 100644 --- a/web/vesta/api/IP.class.php +++ b/web/vesta/api/IP.class.php @@ -2,204 +2,186 @@ /** * IP * - * @author Naumov-Socolov - * @author Malishev Dima * @author vesta, http://vestacp.com/ + * @author Dmitry Malishev + * @author Dmitry Naumov-Socolov * @copyright vesta 2010-2011 */ + class IP extends AjaxHandler { + /** - * List entries + * Get IP entries * * @param Request $request - * @return - */ + * @return string - Ajax Reply + */ public function getListExecute($request) { - $reply = array(); - - $result = Vesta::execute(Vesta::V_LIST_SYS_IPS, array(Config::get('response_type'))); - foreach ($result['data'] as $ip => $details) - { - $reply[] = array_merge(array( - 'IP_ADDRESS' => $ip, - 'DATE' => date(Config::get('ui_date_format', strtotime($details['DATE']))) - ), $details); + $reply = array(); + $result = Vesta::execute(Vesta::V_LIST_SYS_IPS, array(Config::get('response_type'))); + foreach ($result['data'] as $ip => $details) { + $reply[] = array_merge( + array( + 'IP_ADDRESS' => $ip, + 'DATE' => date(Config::get('ui_date_format', strtotime($details['DATE']))) + ), $details); } - - if (!$result['status']) - { + + if (!$result['status']) { $this->errors[] = array($result['error_code'] => $result['error_message']); } - + return $this->reply($result['status'], $reply); } /** - * List user ips entries + * Get user's IPs * * @param Request $request - * @return - */ + * @return string - Ajax Reply + */ public function getListUserIpsExecute($request) { - $reply = array(); - - $result = Vesta::execute(Vesta::V_LIST_SYS_IPS, array(Config::get('response_type'))); - foreach ($result['data'] as $ip => $details) - { - $reply[] = array_merge(array( - 'IP_ADDRESS' => $ip, - 'DATE' => date(Config::get('ui_date_format', strtotime($details['DATE']))) - ), $details); + $reply = array(); + $result = Vesta::execute(Vesta::V_LIST_SYS_IPS, array(Config::get('response_type'))); + foreach ($result['data'] as $ip => $details) { + $reply[] = array_merge( + array( + 'IP_ADDRESS' => $ip, + 'DATE' => date(Config::get('ui_date_format', strtotime($details['DATE']))) + ), $details); } - - if (!$result['status']) - { + + if (!$result['status']) { $this->errors[] = array($result['error_code'] => $result['error_message']); } - + return $this->reply($result['status'], $reply); } /** - * Add entry + * Add IP entry * * @param Request $request - * @return - */ + * @return string - Ajax Reply + */ public function addExecute($request) { - $r = new Request(); - $_s = $r->getSpell(); - $_user = 'vesta'; - + $r = new Request(); + $_s = $r->getSpell(); + $_user = 'vesta'; + $params = array( - 'IP_ADDRESS' => $_s['IP_ADDRESS'], - 'MASK' => $_s['MASK'], - 'INTERFACE' => $_s['INTERFACE'], - 'OWNER' => $_s['OWNER'], - 'IP_STATUS' => $_s['IP_STATUS'], - 'IP_NAME' => $_s['IP_NAME'] - ); - + 'IP_ADDRESS' => $_s['IP_ADDRESS'], + 'MASK' => $_s['MASK'], + 'INTERFACE' => $_s['INTERFACE'], + 'OWNER' => $_s['OWNER'], + 'IP_STATUS' => $_s['IP_STATUS'], + 'IP_NAME' => $_s['IP_NAME'] + ); + $result = Vesta::execute(Vesta::V_ADD_SYS_IP, $params); - - - if (!$result['status']) - { + + if (!$result['status']) { $this->errors[] = array($result['error_code'] => $result['error_message']); } - + return $this->reply($result['status'], $result['data']); } /** - * Delete entry + * Delete IP entry * * @param Request $request - * @return - */ + * @return string - Ajax Reply + */ public function delExecute($request) { - $r = new Request(); - $_s = $r->getSpell(); - $_user = 'vesta'; - + $r = new Request(); + $_s = $r->getSpell(); + $_user = 'vesta'; $params = array( - 'IP_ADDRESS' => $_s['IP_ADDRESS'] - ); - + 'IP_ADDRESS' => $_s['IP_ADDRESS'] + ); + $result = Vesta::execute(Vesta::V_DEL_SYS_IP, $params); - - if (!$result['status']) - { + + if (!$result['status']) { $this->errors[] = array($result['error_code'] => $result['error_message']); } - + return $this->reply($result['status'], $result['data']); } /** - * Change entry + * Change IP entry * * @param Request $request - * @return - */ + * @return string - Ajax Reply + */ public function changeExecute($request) { - $r = new Request(); - $_s = $r->getSpell(); - $_old = $_s['old']; - $_new = $_s['new']; - - $_user = 'vesta'; - - if ($_old['OWNER'] != $_new['OWNER']) - { + $r = new Request(); + $_s = $r->getSpell(); + $_old = $_s['old']; + $_new = $_s['new']; + $_user = 'vesta'; + + if ($_old['OWNER'] != $_new['OWNER']) { $result = array(); $result = Vesta::execute(Vesta::V_CHANGE_SYS_IP_OWNER, array('OWNER' => $_new['OWNER'], 'IP' => $_new['IP_ADDRESS'])); - if(!$result['status']) - { + if (!$result['status']) { $this->status = FALSE; $this->errors['OWNER'] = array($result['error_code'] => $result['error_message']); } } - if ($_old['NAME'] != $_new['NAME']) - { + if ($_old['NAME'] != $_new['NAME']) { $result = array(); $result = Vesta::execute(Vesta::V_CHANGE_SYS_IP_NAME, array('IP' => $_new['IP_ADDRESS'], 'NAME' => $_new['NAME'])); - if (!$result['status']) - { + if (!$result['status']) { $this->status = FALSE; $this->errors['NAME'] = array($result['error_code'] => $result['error_message']); } } - if ($_old['IP_STATUS'] != $_new['IP_STATUS']) - { + if ($_old['IP_STATUS'] != $_new['IP_STATUS']) { $result = array(); $result = Vesta::execute(Vesta::V_CHANGE_SYS_IP_STATUS, array('IP' => $_new['IP_ADDRESS'], 'IP_STATUS' => $_new['IP_STATUS'])); - if (!$result['status']) - { + if (!$result['status']) { $this->status = FALSE; $this->errors['IP_STATUS'] = array($result['error_code'] => $result['error_message']); } } - - if (!$result['status']) - { + if (!$result['status']) { $this->errors[] = array($result['error_code'] => $result['error_message']); } - + return $this->reply($result['status'], $result['data']); } - + /** - * Get sys interfaces + * Get Sys interfaces * * @param Request $request - * @return - */ + * @return string - Ajax Reply + */ public function getSysInterfacesExecute($request) { - $reply = array(); + $reply = array(); + $result = Vesta::execute(Vesta::V_LIST_SYS_INTERFACES, array(Config::get('response_type'))); - $result = Vesta::execute(Vesta::V_LIST_SYS_INTERFACES, array(Config::get('response_type'))); - - foreach ($result['data'] as $iface) - { + foreach ($result['data'] as $iface) { $reply[$iface] = $iface; } - - if (!$result['status']) - { + + if (!$result['status']) { $this->errors[] = array($result['error_code'] => $result['error_message']); } - + return $this->reply($result['status'], $reply); } diff --git a/web/vesta/api/MAIN.class.php b/web/vesta/api/MAIN.class.php index 39838bba..7493e701 100644 --- a/web/vesta/api/MAIN.class.php +++ b/web/vesta/api/MAIN.class.php @@ -9,123 +9,194 @@ * - methods, used for ajax executions must be postfixed with execute keyword * Eg.: getDnsInformationExecute() * - * @author Naumov-Socolov - * @author Malishev Dima * @author vesta, http://vestacp.com/ + * @author Dmitry Malishev + * @author Dmitry Naumov-Socolov * @copyright vesta 2010-2011 */ class MAIN extends AjaxHandler { - + /** - * Get version + * Get Version * * @param Request $request - * @return - */ + * @return string - Ajax Reply + */ public function versionExecute($request) { $result = array( - 'version' => '1.0', - 'author' => 'http://vestacp.com/', - 'docs' => 'http://vestacp.com/docs' - ); + 'version' => '1.0', + 'author' => 'http://vestacp.com/', + 'docs' => 'http://vestacp.com/docs' + ); return $this->reply(true, $result); } /** - * Get initial params + * Get Initial params. + * Global constants / variables / configs * * @param Request $request - * @return - */ + * @return string - Ajax Reply + */ public function getInitialExecute($request) { require_once V_ROOT_DIR . 'api/IP.class.php'; require_once V_ROOT_DIR . 'api/USER.class.php'; - - $ip_obj = new IP(); - $user_obj = new USER(); - - $user_ips = json_decode($ip_obj->getListUserIpsExecute(), TRUE); - foreach ($user_ips['data'] as $ip) - { + // IP + $ip_obj = new IP(); + $user_ips = json_decode($ip_obj->getListUserIpsExecute(), TRUE); + foreach ($user_ips['data'] as $ip) { $ips[$ip['IP_ADDRESS']] = $ip['IP_ADDRESS']; } + // USER + $user_obj = new USER(); + $users = json_decode($user_obj->getListExecute(), TRUE); + $user_names = array_keys($users['data']['data']); + $db_types = array('mysql' => 'mysql', 'postgress' => 'postgress'); + $interfaces_arr = json_decode($ip_obj->getSysInterfacesExecute(), TRUE); + $interfaces = $interfaces_arr['data']; - $users = json_decode($user_obj->getListExecute(), TRUE); - $user_names = array_keys($users['data']['data']); - $db_types = array( - 'mysql' => 'mysql', - 'postgress' => 'postgress' - ); - - $interfaces_arr = json_decode($ip_obj->getSysInterfacesExecute(), TRUE); - $interfaces = $interfaces_arr['data']; - - - $reply = array( - 'WEB_DOMAIN' => array( - 'TPL' => array('default' => 'default'), - 'ALIAS' => array(), - 'STAT' => array( - 'webalizer' => 'webalizer', - 'awstats' => 'awstats'), - 'IP' => $ips - ), - 'CRON' => array(), - 'IP' => array( - 'SYS_USERS' => $user_names, - 'STATUSES' => array( - 'shared' => 'shared', - 'exclusive' => 'exclusive' - ), - 'INTERFACES' => $interfaces, - 'MASK' => array( - '255.255.255.0' => '255.255.255.0', - '255.255.255.128' => '255.255.255.128', - '255.255.255.192' => '255.255.255.192', - '255.255.255.224' => '255.255.255.224', - '255.255.255.240' => '255.255.255.240', - '255.255.255.248' => '255.255.255.248', - '255.255.255.252' => '255.255.255.252', - '255.255.255.255' => '255.255.255.255' - ), - 'OWNER' => array() - ), - 'DNS' => array( - 'IP' => $ips, - 'TPL' => array( - 'default' => 'default' - ), - 'EXP' => array(), - 'SOA' => array(), - 'TTL' => array(), - 'record' => array( - 'RECORD' => array(), - 'RECORD_TYPE' => array('a' => 'a', 'reverse' => 'reverse'), - 'RECORD_VALUE' => array() - ) - ), - 'DB' => array( - 'TYPE' => $db_types - ), - 'USERS' => array( - 'ROLE' => array('user' => 'user'), - 'OWNER' => $user_names, - 'PACKAGE' => array('default' => 'default'), - 'NS1' => array('' => ''), - 'NS2' => array('' => ''), - 'SHELL' => array( - '/bin/sh' => '/bin/sh', - '/bin/bash' => '/bin/bash', - '/sbin/nologin' => '/sbin/nologin', - '/bin/tcsh' => '/bin/tcsh', - '/bin/csh' => '/bin/csh') - ) - ); + $data_web_domain = array('ips' => $ips); + $data_ip = array('user_names' => $user_names, 'interfaces' => $interfaces); + $data_dns = array('ips' => $ips); + $data_db = array('db_types' => $db_types); + $data_users = array('user_names' => $user_names); + $reply = array( + 'WEB_DOMAIN' => $this->getWebDomainParams($data_web_domain), + 'CRON' => $this->getCronParams(), + 'IP' => $this->getIpParams($data_ip), + 'DNS' => $this->getDnsParams(), + 'DB' => $this->getDbParams($data_db), + 'USERS' => $this->getUsersParams($data_users) + ); + return $this->reply(true, $reply); } + + // + // + // + + /** + * WEB DOMAIN initial params + * + * @params array $data + * @return array + */ + public function getWebDomainParams($data = array()) + { + return array( + 'TPL' => array('default' => 'default'), + 'ALIAS' => array(), + 'STAT' => array( + 'webalizer' => 'webalizer', + 'awstats' => 'awstats' + ), + 'IP' => $data['ips'] + ); + } + + /** + * CRON initial params + * + * @params array $data + * @return array + */ + public function getCronParams($data = array()) + { + return array(); + } + + /** + * IP initial params + * + * @params array $data + * @return array + */ + public function getIpParams($data = array()) + { + return array( + 'SYS_USERS' => $data['user_names'], + 'STATUSES' => array( + 'shared' => 'shared', + 'exclusive' => 'exclusive' + ), + 'INTERFACES' => $data['interfaces'], + 'MASK' => array( + '255.255.255.0' => '255.255.255.0', + '255.255.255.128' => '255.255.255.128', + '255.255.255.192' => '255.255.255.192', + '255.255.255.224' => '255.255.255.224', + '255.255.255.240' => '255.255.255.240', + '255.255.255.248' => '255.255.255.248', + '255.255.255.252' => '255.255.255.252', + '255.255.255.255' => '255.255.255.255' + ), + 'OWNER' => array('Chuck Norris' => 'Chuck Norris') + ); + } + + /** + * DNS initial params + * + * @params array $data + * @return array + */ + public function getDnsParams($data = array()) + { + return array( + 'IP' => $data['ips'], + 'TPL' => array('default' => 'default'), + 'EXP' => array(), + 'SOA' => array(), + 'TTL' => array(), + 'record' => array( + 'RECORD' => array(), + 'RECORD_TYPE' => array('a' => 'a', 'reverse' => 'reverse'), + 'RECORD_VALUE' => array() + ) + ); + } + + /** + * DB initial params + * + * @params array $data + * @return array + */ + public function getDbParams($data = array()) + { + return array( + 'TYPE' => $data['db_types'], + 'HOST' => array('vestacp.com' => 'vestacp.com', 'askcow.org' => 'askcow.org') + ); + } + + /** + * Users initial params + * + * @params array $data + * @return array + */ + public function getUsersParams($data = array()) + { + return array( + 'ROLE' => array('user' => 'user'), + 'OWNER' => $data['user_names'], + 'PACKAGE' => array('default' => 'default'), + 'NS1' => array('' => ''), + 'NS2' => array('' => ''), + 'SHELL' => array( + '/bin/sh' => '/bin/sh', + '/bin/bash' => '/bin/bash', + '/sbin/nologin' => '/sbin/nologin', + '/bin/tcsh' => '/bin/tcsh', + '/bin/csh' => '/bin/csh') + ); + } + } diff --git a/web/vesta/api/PARAMS.class.php b/web/vesta/api/PARAMS.class.php index 4e448af9..076a8c7a 100644 --- a/web/vesta/api/PARAMS.class.php +++ b/web/vesta/api/PARAMS.class.php @@ -1,107 +1,100 @@ - * @author Malishev Dima + * @deprecated + * * @author vesta, http://vestacp.com/ - * @copyright vesta 2010-2011 + * @author Dmitry Malishev + * @author Dmitry Naumov-Socolov + * @copyright vesta 2010-2011 */ -class PARAMS extends AjaxHandler -{ - /** - * Get initial params - * - * @param Request $request - * @return - */ - public function getInitialExecute($request) +class PARAMS extends AjaxHandler { + /* + function getInitialExecute($request) { - require_once V_ROOT_DIR . 'api/IP.class.php'; - require_once V_ROOT_DIR . 'api/USER.class.php'; - + require_once V_ROOT_DIR . 'api/IP.class.php'; $ip_obj = new IP(); - $user_obj = new USER(); - $user_ips = json_decode($ip_obj->getListUserIpsExecute(), TRUE); - foreach ($user_ips['data'] as $ip) - { - $ips[$ip['IP_ADDRESS']] = $ip['IP_ADDRESS']; - } - + foreach($user_ips['data'] as $ip) + $ips[$ip['IP_ADDRESS']] = $ip['IP_ADDRESS']; + + require_once V_ROOT_DIR . 'api/USER.class.php'; + $user_obj = new USER(); $users = json_decode($user_obj->getListExecute(), TRUE); - $user_names = array_keys($users['data']['data']); + $user_names = array_keys($users['data']['data']); - $db_types = array( - 'mysql' => 'mysql', - 'postgress' => 'postgress' - ); + $db_types = array('mysql' => 'mysql', 'postgress' => 'postgress'); + + $interfaces_arr = json_decode($ip_obj->getSysInterfacesExecute(), TRUE); + $interfaces = $interfaces_arr['data']; - $interfaces_arr = json_decode($ip_obj->getSysInterfacesExecute(), TRUE); - $interfaces = $interfaces_arr['data']; $reply = array( 'WEB_DOMAIN' => array( - 'TPL' => array('default' => 'default'), - 'ALIAS' => array(), - 'STAT' => array( - 'webalizer' => 'webalizer', - 'awstats' => 'awstats'), - 'IP' => $ips - ), - 'CRON' => array(), - 'IP' => array( - 'SYS_USERS' => $user_names, - 'STATUSES' => array( - 'shared' => 'shared', - 'exclusive' => 'exclusive' - ), - 'INTERFACES' => $interfaces, - 'MASK' => array( - '255.255.255.0' => '255.255.255.0', - '255.255.255.128' => '255.255.255.128', - '255.255.255.192' => '255.255.255.192', - '255.255.255.224' => '255.255.255.224', - '255.255.255.240' => '255.255.255.240', - '255.255.255.248' => '255.255.255.248', - '255.255.255.252' => '255.255.255.252', - '255.255.255.255' => '255.255.255.255' - ), - 'OWNER' => array() - ), - 'DNS' => array( - 'IP' => $ips, - 'TPL' => array( - 'default' => 'default' - ), - 'EXP' => array(), - 'SOA' => array(), - 'TTL' => array(), - 'record' => array( - 'RECORD' => array(), - 'RECORD_TYPE' => array('a' => 'a', 'reverse' => 'reverse'), - 'RECORD_VALUE' => array() - ) - ), - 'DB' => array( - 'TYPE' => $db_types - ), - 'USERS' => array( - 'ROLE' => array('user' => 'user'), - 'OWNER' => $user_names, - 'PACKAGE' => array('default' => 'default'), - 'NS1' => array('' => ''), - 'NS2' => array('' => ''), - 'SHELL' => array( - '/bin/sh' => '/bin/sh', - '/bin/bash' => '/bin/bash', - '/sbin/nologin' => '/sbin/nologin', - '/bin/tcsh' => '/bin/tcsh', - '/bin/csh' => '/bin/csh') - ) - ); + 'TPL' => array('default' => 'default'), + 'ALIAS' => array(), + 'STAT' => array( + 'webalizer' => 'webalizer', + 'awstats' => 'awstats'), + 'IP' => $ips + ), + + 'CRON' => array(), + + 'IP' => array( + 'SYS_USERS' => $user_names, + 'STATUSES' => array( + 'shared' => 'shared', + 'exclusive' => 'exclusive' + ), + 'INTERFACES' => $interfaces, + 'MASK' => array( + '255.255.255.0' => '255.255.255.0', + '255.255.255.128' => '255.255.255.128', + '255.255.255.192' => '255.255.255.192', + '255.255.255.224' => '255.255.255.224', + '255.255.255.240' => '255.255.255.240', + '255.255.255.248' => '255.255.255.248', + '255.255.255.252' => '255.255.255.252', + '255.255.255.255' => '255.255.255.255' + ), + 'OWNER' => array() + ), + + 'DNS' => array( + 'IP' => $ips, + 'TPL' => array('default' => 'default'), + 'EXP' => array(), + 'SOA' => array(), + 'TTL' => array(), + 'record' => array( + 'RECORD' => array(), + 'RECORD_TYPE' => array('a' => 'a', 'reverce' => 'reverce'), + 'RECORD_VALUE' => array() + ) + ), + + 'DB' => array( + 'TYPE' => $db_types, + 'HOST' => array('vestacp.com' => 'vestacp.com', 'askcow.org' => 'askcow.org') + ), + + 'USERS' => array( + 'ROLE' => array('user' => 'user'), + 'OWNER' => $user_names, + 'PACKAGE' => array('default' => 'default'), + 'NS1' => array('' => ''), + 'NS2' => array('' => ''), + 'SHELL' => array( + '/bin/sh' => '/bin/sh', + '/bin/bash' => '/bin/bash', + '/sbin/nologin' => '/sbin/nologin', + '/bin/tcsh' => '/bin/tcsh', + '/bin/csh' => '/bin/csh') + ) + ); return $this->reply(true, $reply); - } + }*/ } diff --git a/web/vesta/api/USER.class.php b/web/vesta/api/USER.class.php index 6b2219ac..77dac79e 100644 --- a/web/vesta/api/USER.class.php +++ b/web/vesta/api/USER.class.php @@ -2,117 +2,150 @@ /** * USERS * - * @author Naumov-Socolov - * @author Malishev Dima * @author vesta, http://vestacp.com/ + * @author Dmitry Malishev + * @author Dmitry Naumov-Socolov * @copyright vesta 2010-2011 */ + class USER extends AjaxHandler { /** - * Get list + * Get USER entries * * @param Request $request - * @return - */ + * @return string - Ajax Reply + */ public function getListExecute($request) { - $reply = array(); + $reply = array(); $result = Vesta::execute(Vesta::V_LIST_SYS_USERS, array(Config::get('response_type'))); + $users = array('Han Solo', 'Darth Vader', 'Jabba the Hutt', 'Boba Fett', 'Jango Fett', ' Aurra Sing', 'Padme', + 'Tusken Raider', 'General Grievous', 'Wedge Antilles', 'Padme Amidala', 'Bib Fortuna', 'Kyle Katarn', + 'Quinlan Vos', 'Princess Leia', 'Obi-Wan Kenobi', 'Han Solo', 'Hondo Ohnaka', 'Noa Briqualon', 'C3P0', + 'R2-D2', 'Quinlan Vos', 'Mara Jade' , 'Luke Skywalker', 'Luke Skywalker' , 'Luke Skywalker' + ); - foreach ($result as $ip => $details) - { - $reply[] = array( - 'interface' => $details['INTERFACE'], - 'sys_users' => $details['U_SYS_USERS'], - 'web_domains' => $details['U_WEB_DOMAINS'], - 'status' => $details['STATUS'], - 'ip' => $ip, - 'net_mask' => $details['NETMASK'], - 'name' => $details['NAME'], - 'owner' => $details['OWNER'], - 'created_at' => date(Config::get('ui_date_format', strtotime($details['DATE']))) - ); - } - - return $this->reply(true, $result); + foreach ($result['data'] as $user => $details) { + $fullname_id = rand(0, count($users)-1); + $fullname = $users[$fullname_id]; + + $reply[$user] = array( + "LOGIN_NAME" => $user, + "FULLNAME" => $fullname, // TODO skid + "PACKAGE" => $details['PACKAGE'], + "WEB_DOMAINS" => $details['WEB_DOMAINS'], + "WEB_SSL" => $details['WEB_SSL'], + "WEB_ALIASES" => $details['WEB_ALIASES'], + "DATABASES" => $details['DATABASES'], + "MAIL_DOMAINS" => $details['MAIL_DOMAINS'], + "MAIL_BOXES" => $details['MAIL_BOXES'], + "MAIL_FORWARDERS" => $details['MAIL_FORWARDERS'], + "DNS_DOMAINS" => $details['DNS_DOMAINS'], + "DISK_QUOTA" => $details['DISK_QUOTA'],//$disk_quota, + "BANDWIDTH" => $details['BANDWIDTH'],//$bandwidth, + "NS_LIST" => array($details['NS1'], $details['NS2']), // TODO skid + "SHELL" => $details['"SHELL'], + "BACKUPS" => $details['BACKUPS'], + "WEB_TPL" => $details['WEB_TPL'], + "MAX_CHILDS" => $details['MAX_CHILDS'], + "SUSPENDED" => $details['SUSPENDED'], + "OWNER" => $details['OWNER'], + "ROLE" => $details['ROLE'], + "IP_OWNED" => $details['IP_OWNED'], + "U_CHILDS" => $details['U_CHILDS'], + "U_DISK" => $details['U_DISK'],//$u_disk, + "U_BANDWIDTH" => $details['U_BANDWIDTH'],//$u_bandwidth, + "U_WEB_DOMAINS" => $details['U_WEB_DOMAINS'], + "U_WEB_SSL" => $details['U_WEB_SSL'], + "U_DNS_DOMAINS" => $details['U_DNS_DOMAINS'], + "U_DATABASES" => $details['U_DATABASES'], + "U_MAIL_DOMAINS" => $details['U_MAIL_DOMAINS'], + "CONTACT" => $details['CONTACT'], + "DATE" => $details['DATE'], + + "U_MAIL_BOXES" => rand(1, 10), // TODO: skid + "U_MAIL_FORWARDERS" => rand(1, 10), // TODO: skid + "REPORTS_ENABLED" => 'enabled' // TODO: skid + ); + } + + return $this->reply(TRUE, $reply); } /** - * Add action + * Add USER entry * * @param Request $request - * @return + * @return string - Ajax Reply */ - public function addExecute($_spell = false) + public function addExecute($_spell = FALSE) { $r = new Request(); - if ($_spell) - { + if ($_spell) { $_s = $_spell; } - else - { + else { $_s = $r->getSpell(); } - $_user = 'vesta'; - $params = array( - 'USER' => $_s['USER'], - 'PASSWORD' => $_s['PASSWORD'], - 'EMAIL' => $_s['EMAIL'], - 'ROLE' => $_s['ROLE'], - 'OWNER' => $_user, - 'PACKAGE' => $_s['PACKAGE'], - 'NS1' => $_s['NS1'], - 'NS2' => $_s['NS2'] - ); + $_user = 'vesta'; + $params = array( + 'USER' => $_s['USER'], + 'PASSWORD' => $_s['PASSWORD'], + 'EMAIL' => $_s['EMAIL'], + 'ROLE' => $_s['ROLE'], + 'OWNER' => $_user, + 'PACKAGE' => $_s['PACKAGE'], + 'NS1' => $_s['NS1'], + 'NS2' => $_s['NS2'] + ); + $result = Vesta::execute(Vesta::V_ADD_SYS_USER, $params); - if (!$result['status']) - { + + if (!$result['status']) { $this->errors[] = array($result['error_code'] => $result['error_message']); } - + return $this->reply($result['status'], $result['data']); } - + /** - * Delete action + * Delete USER entry * * @param Request $request - * @return + * @return string - Ajax Reply */ public function delExecute($_spell = false) { $r = new Request(); - if ($_spell) - { + if ($_spell) { $_s = $_spell; } - else - { + else { $_s = $r->getSpell(); } + $_user = 'vesta'; $params = array( 'USER' => $_s['USER'] - ); + ); + $result = Vesta::execute(Vesta::V_DEL_SYS_USER, $params); - - if (!$result['status']) - { - $this->errors[] = array($result['error_code'] => $result['error_message']); + + if (!$result['status']) { + $this->errors[] = array($result['error_code'] => $result['error_message']); } - + return $this->reply($result['status'], $result['data']); } /** - * Change action + * Change USER entry * * @param Request $request - * @return + * @return string - Ajax Reply */ public function changeExecute($request) { @@ -122,94 +155,73 @@ class USER extends AjaxHandler $_new = $_s['new']; $_USER = $_new['USER']; - - if($_old['USER'] != $_new['USER']) - { + + if ($_old['USER'] != $_new['USER']) { $result = array(); // creating new user - $result = $this->addExecute($_new); - + $result = $this->addExecute($_new); // deleting old - if ($result['status']) - { + if ($result['status']) { $result = array(); - + $result = $this->delExecute($_old); return $this->reply($this->status, ''); } } - if ($_old['PASSWORD'] != $_new['PASSWORD']) - { + if ($_old['PASSWORD'] != $_new['PASSWORD']) { $result = array(); - $result = Vesta::execute(Vesta::V_CHANGE_SYS_USER_PASSWORD, - array('USER' => $_USER, 'PASSWORD' => $_new['PASSWORD'])); - if (!$result['status']) - { + $result = Vesta::execute(Vesta::V_CHANGE_SYS_USER_PASSWORD, array('USER' => $_USER, 'PASSWORD' => $_new['PASSWORD'])); + if (!$result['status']) { $this->status = FALSE; $this->errors['PASSWORD'] = array($result['error_code'] => $result['error_message']); } } - if ($_old['PACKAGE'] != $_new['PACKAGE']) - { + if ($_old['PACKAGE'] != $_new['PACKAGE']) { $result = array(); - $result = Vesta::execute(Vesta::V_CHANGE_SYS_USER_PACKAGE, - array('USER' => $_USER, 'PACKAGE' => $_new['PACKAGE'])); - if (!$result['status']) - { + $result = Vesta::execute(Vesta::V_CHANGE_SYS_USER_PACKAGE, array('USER' => $_USER, 'PACKAGE' => $_new['PACKAGE'])); + if (!$result['status']) { $this->status = FALSE; $this->errors['PACKAGE'] = array($result['error_code'] => $result['error_message']); } } - - if ($_old['EMAIL'] != $_new['EMAIL']) - { + + if ($_old['EMAIL'] != $_new['EMAIL']) { $result = array(); - $result = Vesta::execute(Vesta::V_CHANGE_SYS_USER_CONTACT, - array('USER' => $_USER, 'EMAIL' => $_new['EMAIL'])); - if (!$result['status']) - { + $result = Vesta::execute(Vesta::V_CHANGE_SYS_USER_CONTACT, array('USER' => $_USER, 'EMAIL' => $_new['EMAIL'])); + if (!$result['status']) { $this->status = FALSE; $this->errors['EMAIL'] = array($result['error_code'] => $result['error_message']); } } - if ($_old['NS1'] != $_new['NS1'] || $_old['NS2'] != $_new['NS2']) - { + if ($_old['NS1'] != $_new['NS1'] || $_old['NS2'] != $_new['NS2']) { $result = array(); - $result = Vesta::execute(Vesta::V_CHANGE_SYS_USER_NS, - array('USER' => $_USER, 'NS1' => $_new['NS1'], 'NS2' => $_new['NS2'])); - if (!$result['status']) - { + $result = Vesta::execute(Vesta::V_CHANGE_SYS_USER_NS, array('USER' => $_USER, 'NS1' => $_new['NS1'], 'NS2' => $_new['NS2'])); + if (!$result['status']) { $this->status = FALSE; $this->errors['NS'] = array($result['error_code'] => $result['error_message']); } } - if ($_old['SHELL'] != $_new['SHELL']) - { + if ($_old['SHELL'] != $_new['SHELL']) { $result = array(); - $result = Vesta::execute(Vesta::V_CHANGE_SYS_USER_SHELL, - array('USER' => $_USER, 'SHELL' => $_new['SHELL'])); - if (!$result['status']) - { + $result = Vesta::execute(Vesta::V_CHANGE_SYS_USER_SHELL, array('USER' => $_USER, 'SHELL' => $_new['SHELL'])); + if (!$result['status']) { $this->status = FALSE; $this->errors['SHELL'] = array($result['error_code'] => $result['error_message']); } } - if (!$this->status) - { + if (!$this->status) { Vesta::execute(Vesta::V_CHANGE_SYS_USER_PASSWORD, array('USER' => $_USER, 'PASSWORD' => $_old['PASSWORD'])); - Vesta::execute(Vesta::V_CHANGE_SYS_USER_PACKAGE, array('USER' => $_USER, 'PACKAGE' => $_old['PACKAGE'])); - Vesta::execute(Vesta::V_CHANGE_SYS_USER_CONTACT, array('USER' => $_USER, 'EMAIL' => $_old['EMAIL'])); - // change role // $result = Vesta::execute(Vesta::V_CHANGE_SYS_USER_PACKAGE, array('USER' => $_USER, 'PACKAGE' => $_new['PACKAGE'])); - Vesta::execute(Vesta::V_CHANGE_SYS_USER_NS, array('USER' => $_USER, 'NS1' => $_old['NS1'], 'NS2' => $_old['NS2'])); - Vesta::execute(Vesta::V_CHANGE_SYS_USER_SHELL, array('USER' => $_USER, 'SHELL' => $_old['SHELL'])); + Vesta::execute(Vesta::V_CHANGE_SYS_USER_PACKAGE, array('USER' => $_USER, 'PACKAGE' => $_old['PACKAGE'])); + Vesta::execute(Vesta::V_CHANGE_SYS_USER_CONTACT, array('USER' => $_USER, 'EMAIL' => $_old['EMAIL'])); + Vesta::execute(Vesta::V_CHANGE_SYS_USER_NS, array('USER' => $_USER, 'NS1' => $_old['NS1'], 'NS2' => $_old['NS2'])); + Vesta::execute(Vesta::V_CHANGE_SYS_USER_SHELL, array('USER' => $_USER, 'SHELL' => $_old['SHELL'])); } return $this->reply($this->status, ''); } - } diff --git a/web/vesta/api/WEB_DOMAIN.class.php b/web/vesta/api/WEB_DOMAIN.class.php index a9b8763c..062a0625 100644 --- a/web/vesta/api/WEB_DOMAIN.class.php +++ b/web/vesta/api/WEB_DOMAIN.class.php @@ -1,671 +1,512 @@ - * @author Malishev Dima * @author vesta, http://vestacp.com/ - * @copyright vesta 2010-2011 + * @author Dmitry Malishev + * @author Dmitry Naumov-Socolov + * @copyright vesta 2010-2011 */ -class WEB_DOMAIN extends AjaxHandler -{ - - /** - * Get list - * - * @param Request $request - * @return - */ - public function getListExecute($request) +class WEB_DOMAIN extends AjaxHandler { + function getListExecute($request) { - $_user = 'vesta'; - $reply = array(); + $_user = 'vesta'; + $reply = array(); + + $result = Vesta::execute(Vesta::V_LIST_WEB_DOMAINS, array($_user, Config::get('response_type'))); + + // echo '
';
+      //      print_r($result);
+      
+      foreach($result['data'] as $web_domain => $data)
+	{
+	  $reply[$web_domain] = array(
+				      'IP' => $record['IP'],
+				      'U_DISK' => $record['U_DISK'],
+				      'U_BANDWIDTH' => $record['U_BANDWIDTH'],
+				      'TPL' => $record['TPL'],
+				      'ALIAS' => $record['ALIAS'],
+				      'PHP' => $record['PHP'],
+				      'CGI' => $record['CGI'],
+				      'ELOG' => $record['ELOG'],
+				      'STATS' => $record['STATS'],
+				      'STATS_AUTH' => $record['STATS_AUTH'],
+				      'SSL' => $record['SSL'],
+				      'SSL_HOME' => $record['SSL_HOME'],
+				      'SSL_CERT' => $record['SSL_CERT'],
+				      'NGINX' => $record['NGINX'],
+				      'NGINX_EXT' => $record['NGINX_EXT'],
+				      'SUSPEND' => $record['SUSPEND'],
+				      'DATE' => date(Config::get('ui_date_format', strtotime($record['DATE'])))
+				      );
+	}
+      
+      if(!$result['status'])
+	$this->errors[] = array($result['error_code'] => $result['error_message']);
+      
+      return $this->reply($result['status'], $reply);
+    }
+    
+    
+    
+    function addExecute($request) 
+    {
+      $r = new Request();
+      $_s = $r->getSpell();
+      $_user = 'vesta';
 
-        $result = Vesta::execute(Vesta::V_LIST_WEB_DOMAINS, array($_user, Config::get('response_type')));
-        foreach ($result['data'] as $web_domain => $data)
-        {
-            $reply[$web_domain] = array(
-                      'IP' => $record['IP'],
-                      'U_DISK' => $record['U_DISK'],
-                      'U_BANDWIDTH' => $record['U_BANDWIDTH'],
-                      'TPL' => $record['TPL'],
-                      'ALIAS' => $record['ALIAS'],
-                      'PHP' => $record['PHP'],
-                      'CGI' => $record['CGI'],
-                      'ELOG' => $record['ELOG'],
-                      'STATS' => $record['STATS'],
-                      'STATS_AUTH' => $record['STATS_AUTH'],
-                      'SSL' => $record['SSL'],
-                      'SSL_HOME' => $record['SSL_HOME'],
-                      'SSL_CERT' => $record['SSL_CERT'],
-                      'NGINX' => $record['NGINX'],
-                      'NGINX_EXT' => $record['NGINX_EXT'],
-                      'SUSPEND' => $record['SUSPEND'],
-                      'DATE' => date(Config::get('ui_date_format', strtotime($record['DATE'])))
-            );
-        }
+      $params = array(
+		      'USER' => $_user,
+		      'DOMAIN' => $_s['DOMAIN'],
+		      'IP' => $_s['IP']
+		      );
+      
+      $result = Vesta::execute(Vesta::V_ADD_WEB_DOMAIN, $params);
+      
+      if(!$result['status'])
+	$this->errors[] = array($result['error_code'] => $result['error_message']);
+      
+      
+      
+      //    if(0)
+      if($_s['TPL'])
+	{
+	  $params = array('USER' => $_user,
+			'DOMAIN' => $_s['DOMAIN'],
+			  'TPL' => $_s['TPL']);
+	  $result = 0;
+	  $result = Vesta::execute(Vesta::V_CHANGE_WEB_DOMAIN_TPL, $params);
+	  
+	  if(!$result['status'])
+	    $this->errors['CHANGE_TPL'] = array($result['error_code'] => $result['error_message']);
+	}
+      
+      //    if(0)
+      if($_s['ALIAS'])
+	{
+	$alias_arr = explode(',', $_s['ALIAS']);
+	
+	foreach($alias_arr as $alias)
+	  {
+	    $params = array('USER' => $_user,
+			    'DOMAIN' => $_s['DOMAIN'],
+			    'ALIAS' => trim($alias));
+	    $result = 0;
+	    
+	    $result = Vesta::execute(Vesta::V_ADD_WEB_DOMAIN_ALIAS, $params);
+	    
+	    if(!$result['status'])
+	      $this->errors['ALIAS'] = array($result['error_code'] => $result['error_message']);
+	  }
+	}
+      
+      //    if(0)
+      if($_s['STAT'])
+	{
+	  $params = array('USER' => $_user,
+			  'DOMAIN' => $_s['DOMAIN'],
+			  'STAT' => $_s['STAT']);
+	  $result = 0;
+	  $result = Vesta::execute(Vesta::V_ADD_WEB_DOMAIN_STAT, $params);
+	  
+	  if(!$result['status'])
+	    $this->errors['STATS'] = array($result['error_code'] => $result['error_message']);
+	}
+      
+      //    if(0)
+      if($_s['STAT_AUTH'])
+	{
+	  $params = array('USER' => $_user,
+			  'DOMAIN' => $_s['DOMAIN'],
+			  'STAT_USER' => $_s['STAT_USER'],
+			  'STAT_PASSWORS' => $_s['STAT_PASSWORD']);
+	  $result = 0;
+	  $result = Vesta::execute(Vesta::V_ADD_WEB_DOMAIN_STAT_AUTH, $params);
+	  
+	  if(!$result['status'])
+	    $this->errors['STAT_AUTH'] = array($result['error_code'] => $result['error_message']);
+	}
 
-        if (!$result['status'])
-        {
-            $this->errors[] = array($result['error_code'] => $result['error_message']);
-        }
+      if(0)
+	if($_s['SSL'])
+	  {
+	    $params = array('USER' => $_user,
+			    'DOMAIN' => $_s['DOMAIN'],
+			    'SSL_CERT' => $_s['SSL_CERT']);
+	    
+	    if($_s['SSL_HOME'])
+	      $params['SSL_HOME'] = $_s['SSL_HOME'];
+	    
+	    if($_s['SSL_TEXT'])
+	      {}
+	    //	if($_FILES['SSL_CERT'])
+	    // $ssl_text = file_get_contents($_FILES...);
+	    
+	    
+	    $result = 0;
+	    $result = Vesta::execute(Vesta::V_ADD_WEB_DOMAIN_SSL, $params);
+	    
+	    if(!$result['status'])
+	      $this->errors['SSL'] = array($result['error_code'] => $result['error_message']);
+	  }
+      
+    //    if(0)
+      if($_s['CREATE_DNS_DOMAIN'])
+	{
+	  $params = array('USER' => $_user,
+			  'DNS_DOMAIN' => $_s['DOMAIN'],
+			  'IP' => $_s['IP']);
+	  
+	  require_once V_ROOT_DIR . 'api/DNS.class.php';
+	  
+	  $dns = new DNS();
+	  $result = 0;
+	  $result = $dns->addExecute($params);
+	  if(!$result['status'])
+	    $this->errors['DNS_DOMAIN'] = array($result['error_code'] => $result['error_message']);
+	}
+      
+      if(0)
+	if($_s['CREATE_MAIL_DOMAIN'])
+	  {
+	    $params = array('USER' => $_user,
+			    'MAIL_DOMAIN' => $_s['DOMAIN'],
+			    'IP' => $_s['IP']);
+	    
+	    
+	    require_once V_ROOT_DIR . 'api/MAIL.class.php';
+	    
+	    $mail = new MAIL();
+	    $result = 0;
+	    $result = $mail->addExecute($params);
+	    if(!$result['status'])
+	      $this->errors['MAIL_DOMAIN'] = array($result['error_code'] => $result['error_message']);
+	  }
+      
+      return $this->reply($result['status'], $result['data']);
+    }
+    
+    function delExecute($request) 
+    {
+      $r = new Request();
+      $_s = $r->getSpell();
+      $_user = 'vesta';
+      
+      $params = array(
+		      'USER' => $_user,
+		      'DOMAIN' => $_s['DOMAIN']
+		      );
+      
+      $result = Vesta::execute(Vesta::V_DEL_WEB_DOMAIN, $params);
+      
+      if(!$result['status'])
+	$this->errors[] = array($result['error_code'] => $result['error_message']);
 
-        return $this->reply($result['status'], $reply);
-    }
-        
-    /**
-     * Add entry
-     * 
-     * @param Request $request
-     * @return
-     */    
-    public function addExecute($request)
-    {
-        $r     = new Request();
-        $_s    = $r->getSpell();
-        $_user = 'vesta';
-        
-        $params = array(
-            'USER' => $_user,
-            'DOMAIN' => $_s['DOMAIN'],
-            'IP' => $_s['IP']
-        );
-        
-        $result = Vesta::execute(Vesta::V_ADD_WEB_DOMAIN, $params);
-        
-        if (!$result['status'])
-        {
-            $this->errors[] = array(
-                $result['error_code'] => $result['error_message']
-            );
-        }
-            
-        if ($_s['TPL']) 
-        {
-            $params = array(
-                'USER' => $_user,
-                'DOMAIN' => $_s['DOMAIN'],
-                'TPL' => $_s['TPL']
-            );
-            $result = 0;
-            $result = Vesta::execute(Vesta::V_CHANGE_WEB_DOMAIN_TPL, $params);
-            
-            if (!$result['status'])
-            {
-                $this->errors['CHANGE_TPL'] = array(
-                    $result['error_code'] => $result['error_message']
-                );
-            }
-        }
 
-        if ($_s['ALIAS']) 
-        {
-            $alias_arr = explode(',', $_s['ALIAS']);
-            
-            foreach ($alias_arr as $alias) 
-            {
-                $params = array(
-                    'USER' => $_user,
-                    'DOMAIN' => $_s['DOMAIN'],
-                    'ALIAS' => trim($alias)
-                );
-                $result = 0;
-                
-                $result = Vesta::execute(Vesta::V_ADD_WEB_DOMAIN_ALIAS, $params);
-                
-                if (!$result['status'])
-                {
-                    $this->errors['ALIAS'] = array(
-                        $result['error_code'] => $result['error_message']
-                    );
-                }
-            }
-        }
-    
-        if ($_s['STAT']) 
-        {
-            $params = array(
-                'USER' => $_user,
-                'DOMAIN' => $_s['DOMAIN'],
-                'STAT' => $_s['STAT']
-            );
-            $result = 0;
-            $result = Vesta::execute(Vesta::V_ADD_WEB_DOMAIN_STAT, $params);
-            
-            if (!$result['status'])
-            {
-                $this->errors['STATS'] = array(
-                    $result['error_code'] => $result['error_message']
-                );
-            }
-        }
-        
-        if ($_s['STAT_AUTH']) 
-        {
-            $params = array(
-                'USER' => $_user,
-                'DOMAIN' => $_s['DOMAIN'],
-                'STAT_USER' => $_s['STAT_USER'],
-                'STAT_PASSWORS' => $_s['STAT_PASSWORD']
-            );
-            $result = 0;
-            $result = Vesta::execute(Vesta::V_ADD_WEB_DOMAIN_STAT_AUTH, $params);
-            
-            if (!$result['status'])
-            {
-                $this->errors['STAT_AUTH'] = array(
-                    $result['error_code'] => $result['error_message']
-                );
-            }
-        }
-        
-        
-        if ($_s['SSL']) 
-        {
-            $params = array(
-                'USER' => $_user,
-                'DOMAIN' => $_s['DOMAIN'],
-                'SSL_CERT' => $_s['SSL_CERT']
-            );
-            
-            if ($_s['SSL_HOME'])
-            {
-                $params['SSL_HOME'] = $_s['SSL_HOME'];
-            }
-            
-            if ($_s['SSL_TEXT']) 
-            {
-                // TODO: write it up
-            }
-                                
-            $result = 0;
-            $result = Vesta::execute(Vesta::V_ADD_WEB_DOMAIN_SSL, $params);
-            
-            if (!$result['status'])
-            {
-                $this->errors['SSL'] = array(
-                    $result['error_code'] => $result['error_message']
-                );
-            }
-        }
-                
-        if ($_s['CREATE_DNS_DOMAIN']) 
-        {
-            $params = array(
-                'USER' => $_user,
-                'DNS_DOMAIN' => $_s['DOMAIN'],
-                'IP' => $_s['IP']
-            );
-            
-            require_once V_ROOT_DIR . 'api/DNS.class.php';
-            
-            $dns    = new DNS();
-            $result = 0;
-            $result = $dns->addExecute($params);
-            if (!$result['status'])
-            {
-                $this->errors['DNS_DOMAIN'] = array(
-                    $result['error_code'] => $result['error_message']
-                );
-            }
-        }
-                
-        if ($_s['CREATE_MAIL_DOMAIN']) 
-        {
-            $params = array(
-                'USER' => $_user,
-                'MAIL_DOMAIN' => $_s['DOMAIN'],
-                'IP' => $_s['IP']
-            );
-                        
-            require_once V_ROOT_DIR . 'api/MAIL.class.php';
-            
-            $mail   = new MAIL();
-            $result = 0;
-            $result = $mail->addExecute($params);
-            if (!$result['status'])
-            {
-                $this->errors['MAIL_DOMAIN'] = array(
-                    $result['error_code'] => $result['error_message']
-                );
-            }
-        }
-        
-        return $this->reply($result['status'], $result['data']);
-    }
-    
-    /**
-     * Delete entry
-     * 
-     * @param Request $request
-     * @return
-     */    
-    public function delExecute($request)
-    {
-        $r     = new Request();
-        $_s    = $r->getSpell();
-        $_user = 'vesta';
-        
-        $params = array(
-            'USER' => $_user,
-            'DOMAIN' => $_s['DOMAIN']
-        );
-        
-        $result = Vesta::execute(Vesta::V_DEL_WEB_DOMAIN, $params);
-        
-        if (!$result['status'])
-            $this->errors[] = array(
-                $result['error_code'] => $result['error_message']
-            );
-                
-        $params = array(
-            'USER' => $_user,
-            'DNS_DOMAIN' => $_s['DOMAIN']
-        );
-        
-        require_once V_ROOT_DIR . 'api/DNS.class.php';
-        $dns    = new DNS();
-        $result = $dns->delExecute($params);
-        
-        if (!$result['status'] && $result['error_code'] != 31) // domain not found
-        {
-            $this->errors['DNS'] = array(
-                $result['error_code'] => $result['error_message']
-            );
-        }
-        
-        require_once V_ROOT_DIR . 'api/DNS.class.php';
-        
-        $params = array(
-            'USER' => $_user,
-            'MAIL_DOMAIN' => $_s['DOMAIN']
-        );
-        
-        return $this->reply($result['status'], $result['data']);
-    }
-          
-    /**
-     * Change entry
-     * 
-     * @param Request $request
-     * @return
-     */          
-    public function changeExecute($request)
-    {
-        $r    = new Request();
-        $_s   = $r->getSpell();
-        $_old = $_s['old'];
-        $_new = $_s['new'];
-        
-        $_user   = 'vesta';
-        $_DOMAIN = $_new['DOMAIN'];
-        
-        if ($_old['IP'] != $_new['IP']) 
-        {
-            $result = array();
-            $result = Vesta::execute(Vesta::V_CHANGE_WEB_DOMAIN_IP, array(
-                'USER' => $_user,
-                'DOMAIN' => $_DOMAIN,
-                'IP' => $_new['IP']
-            ));
-            if (!$result['status']) 
-            {
-                $this->status               = FALSE;
-                $this->errors['IP_ADDRESS'] = array(
-                    $result['error_code'] => $result['error_message']
-                );
-            }
-        }
-                
-        if ($_old['TPL'] != $_new['TPL']) 
-        {
-            $result = array();
-            $result = Vesta::execute(Vesta::V_CHANGE_WEB_DOMAIN_TPL, array(
-                'USER' => $_user,
-                'DOMAIN' => $_DOMAIN,
-                'TPL' => $_new['TPL']
-            ));
-            if (!$result['status']) 
-            {
-                $this->status        = FALSE;
-                $this->errors['TPL'] = array(
-                    $result['error_code'] => $result['error_message']
-                );
-            }
-        }
-        
-        if ($_old['ALIAS'] != $_new['ALIAS']) 
-        {
-            $result = array();
-            
-            $old_arr = explode(',', $_old['ALIAS']);
-            $new_arr = explode(',', $_new['ALIAS']);
-            
-            $added   = array_diff($new_arr, $old_arr);
-            $deleted = array_diff($old_arr, $new_arr);
-            
-            foreach ($added as $alias) 
-            {
-                $result = Vesta::execute(Vesta::V_ADD_WEB_DOMAIN_ALIAS, array(
-                    'USER' => $_user,
-                    'DOMAIN' => $_DOMAIN,
-                    'ALIAS' => $alias
-                ));
-                if (!$result['status']) 
-                {
-                    $this->status              = FALSE;
-                    $this->errors['ADD_ALIAS'] = array(
-                        $result['error_code'] => $result['error_message']
-                    );
-                }
-            }
-            foreach ($deleted as $alias) 
-            {
-                $result = Vesta::execute(Vesta::V_DEL_WEB_DOMAIN_ALIAS, array(
-                    'USER' => $_user,
-                    'DOMAIN' => $_DOMAIN,
-                    'ALIAS' => $alias
-                ));
-                if (!$result['status']) 
-                {
-                    $this->status              = FALSE;
-                    $this->errors['DEL_ALIAS'] = array(
-                        $result['error_code'] => $result['error_message']
-                    );
-                }
-            }
-        }
-        
-        
-        if ($_old['STAT'] != $_new['STAT']) 
-        {
-            if ($_new['STAT'] == true) 
-            {
-                $result = array();
-                $result = Vesta::execute(Vesta::V_ADD_WEB_DOMAIN_STAT, array(
-                    'USER' => $_user,
-                    'DOMAIN' => $_DOMAIN,
-                    'STAT' => $_new['STAT']
-                ));
-                if (!$result['status']) 
-                {
-                    $this->status             = FALSE;
-                    $this->errors['ADD_STAT'] = array(
-                        $result['error_code'] => $result['error_message']
-                    );
-                }
-            }
-            
-            if ($_new['STAT'] == false) 
-            {
-                $result = array();
-                $result = Vesta::execute(Vesta::V_DEL_WEB_DOMAIN_STAT, array(
-                    'USER' => $_user,
-                    'DOMAIN' => $_DOMAIN
-                ));
-                if (!$result['status']) 
-                {
-                    $this->status             = FALSE;
-                    $this->errors['DEL_STAT'] = array(
-                        $result['error_code'] => $result['error_message']
-                    );
-                }
-                $result = array();
-                
-                $result = Vesta::execute(Vesta::V_DEL_WEB_DOMAIN_STAT_AUTH, array(
-                    'USER' => $_user,
-                    'DOMAIN' => $_DOMAIN,
-                    'STAT_USER' => $_new['STAT_USER']
-                ));
-                if (!$result['status']) 
-                {
-                    $this->status                  = FALSE;
-                    $this->errors['DEL_STAT_AUTH'] = array(
-                        $result['error_code'] => $result['error_message']
-                    );
-                }
-            }
-        }
 
-        if ($_old['SSL'] != $_new['SSL']) 
-        {
-            if ($_new['SSL'] == true) 
-            {
-                // TODO: write it
-            }
-            if ($_new['SSL'] == false) 
-            {
-                // TODO: write it
-            }
-        } 
-        else 
-        {
-            if ($_old['SSL_CERT'] != $_new['SSL_CERT']) 
-            {
-                $result    = array();
-                $_SSL_CERT = $_new['SSL_CERT'];
-                // or read uploaded tmp file
-                
-                $result = Vesta::execute(Vesta::V_CHANGE_WEB_DOMAIN_CERT, array(
-                    'USER' => $_user,
-                    'DOMAIN' => $_DOMAIN,
-                    'SSL_CERT' => $_SSL_CERT
-                ));
-                if (!$result['status']) 
-                {
-                    $this->status             = FALSE;
-                    $this->errors['SSL_CERT'] = array(
-                        $result['error_code'] => $result['error_message']
-                    );
-                }
-            }
-            if ($_old['SSL_HOME'] != $_new['SSL_HOME']) 
-            {
-                $result = array();
-                $result = Vesta::execute(Vesta::V_CHANGE_WEB_DOMAIN_SSLHOME, array(
-                    'USER' => $_user,
-                    'DOMAIN' => $_DOMAIN,
-                    'SSL_HOME' => $_new['SSL_HOME']
-                ));
-                if (!$result['status']) 
-                {
-                    $this->status             = FALSE;
-                    $this->errors['SSL_HOME'] = array(
-                        $result['error_code'] => $result['error_message']
-                    );
-                }
-            }
-        }
-        
-        if ($_old['CGI'] != $_new['CGI']) 
-        {
-            if ($_new['CGI'] == true) 
-            {
-                $result = array();
-                $result = Vesta::execute(Vesta::V_ADD_WEB_DOMAIN_CGI, array(
-                    'USER' => $_user,
-                    'DOMAIN' => $_DOMAIN
-                ));
-                if (!$result['status']) 
-                {
-                    $this->status            = FALSE;
-                    $this->errors['ADD_CGI'] = array(
-                        $result['error_code'] => $result['error_message']
-                    );
-                }
-            }
-            if ($_new['CGI'] == false) 
-            {
-                $result = array();
-                $result = Vesta::execute(Vesta::V_DEL_WEB_DOMAIN_CGI, array(
-                    'USER' => $_user,
-                    'DOMAIN' => $_DOMAIN
-                ));
-                if (!$result['status']) 
-                {
-                    $this->status            = FALSE;
-                    $this->errors['DEL_CGI'] = array(
-                        $result['error_code'] => $result['error_message']
-                    );
-                }
-            }
-        }
-        
-        if ($_old['ELOG'] != $_new['ELOG']) 
-        {
-            if ($_new['ELOG'] == true) 
-            {
-                $result = array();
-                $result = Vesta::execute(Vesta::V_ADD_WEB_DOMAIN_ELOG, array(
-                    'USER' => $_user,
-                    'DOMAIN' => $_DOMAIN
-                ));
-                if (!$result['status']) 
-                {
-                    $this->status             = FALSE;
-                    $this->errors['ADD_ELOG'] = array(
-                        $result['error_code'] => $result['error_message']
-                    );
-                }
-            }
-            if ($_new['ELOG'] == false) 
-            {
-                $result = array();
-                $result = Vesta::execute(Vesta::V_DEL_WEB_DOMAIN_ELOG, array(
-                    'USER' => $_user,
-                    'DOMAIN' => $_DOMAIN
-                ));
-                if (!$result['status']) 
-                {
-                    $this->status             = FALSE;
-                    $this->errors['DEL_ELOG'] = array(
-                        $result['error_code'] => $result['error_message']
-                    );
-                }
-            }
-        }
-        
-        
-        return $this->reply($result['status'], $result['data']);
-    }
+    $params = array(
+		    'USER' => $_user,
+		    'DNS_DOMAIN' => $_s['DOMAIN']
+		    );
+   
+    require_once V_ROOT_DIR . 'api/DNS.class.php';
+    $dns = new DNS();
+    $result = $dns->delExecute($params);
     
-    /**
-     * Suspend entry
-     * 
-     * @param Request $request
-     * @return
-     */    
-    public function suspendExecute($request)
-    {
-        $r  = new Request();
-        $_s = $r->getSpell();
-        
-        $_user = 'vesta';
-        
-        $params = array(
-            'USER' => $_user,
-            'DOMAIN' => $_s['DOMAIN']
-        );
-        
-        $result = Vesta::execute(Vesta::V_SUSPEND_WEB_DOMAIN, $params);
-        
-        if (!$result['status'])
-        {
-            $this->errors[] = array(
-                $result['error_code'] => $result['error_message']
-            );
-        }
-        
-        return $this->reply($result['status'], $result['data']);
-    }
+    if(!$result['status'] && $result['error_code'] != 31) // domain not found
+      $this->errors['DNS'] = array($result['error_code'] => $result['error_message']);
+   
+    require_once V_ROOT_DIR . 'api/DNS.class.php';
+
+    $params = array(
+		    'USER' => $_user,
+		    'MAIL_DOMAIN' => $_s['DOMAIN']
+		    );
+
+    /*
+    require_once V_ROOT_DIR . 'api/MAIL.class.php';
+    $mail = new MAIL();
+    $result = $mail->delExecute($params);
     
-    /**
-     * Unsuspend entry
-     * 
-     * @param Request $request
-     * @return
-     */    
-    public function unsuspendExecute($request)
-    {
-        $r  = new Request();
-        $_s = $r->getSpell();
-        
-        $_user = 'vesta';
-        
-        $params = array(
-            'USER' => $_user,
-            'DOMAIN' => $_s['DOMAIN']
-        );
-        
-        $result = Vesta::execute(Vesta::V_UNSUSPEND_WEB_DOMAIN, $params);
-        
-        if (!$result['status'])
-        {
-            $this->errors[] = array(
-                $result['error_code'] => $result['error_message']
-            );
-        }
-        
-        return $this->reply($result['status'], $result['data']);
-    }
+    if(!$result['status'] && $result['error_code'] != 31) // domain not found
+      $this->errors['MAIL'] = array($result['error_code'] => $result['error_message']);
+    */
+    return $this->reply($result['status'], $result['data']);
+  }
+  
     
-    /**
-     * Batch suspend entries
-     * 
-     * @param Request $request
-     * @return
-     */    
-    public function suspendAllExecute($request)
-    {
-        $r  = new Request();
-        $_s = $r->getSpell();
-        
-        $_user = 'vesta';
-        
-        $params = array(
-            'USER' => $_user
-        );
-        
-        $result = Vesta::execute(Vesta::V_SUSPEND_WEB_DOMAINS, $params);
-        
-        if (!$result['status'])
-        {
-            $this->errors[] = array(
-                $result['error_code'] => $result['error_message']
-            );
-        }
-        
-        return $this->reply($result['status'], $result['data']);
-    }
+  
+  function changeExecute($request)
+  {
+    $r = new Request();
+    $_s = $r->getSpell();
+    $_old = $_s['old'];
+    $_new = $_s['new'];
+
+    $_user = 'vesta';
+    $_DOMAIN = $_new['DOMAIN'];
     
-    /**
-     * Batch unsuspend entry
-     * 
-     * @param Request $request
-     * @return
-     */    
-    public function unsuspendAllExecute($request)
-    {
-        $r  = new Request();
-        $_s = $r->getSpell();
-        
-        $_user = 'vesta';
-        
-        $params = array(
-            'USER' => $_user
-        );
-        
-        $result = Vesta::execute(Vesta::V_UNSUSPEND_WEB_DOMAINS, $params);
-        
-        if (!$result['status'])
-        {
-            $this->errors[] = array(
-                $result['error_code'] => $result['error_message']
-            );
-        }
-        
-        return $this->reply($result['status'], $result['data']);
-    }
+    if($_old['IP'] != $_new['IP'])
+      {
+	$result = array();
+	$result = Vesta::execute(Vesta::V_CHANGE_WEB_DOMAIN_IP, array('USER' => $_user, 'DOMAIN' => $_DOMAIN, 'IP' => $_new['IP']));
+	if(!$result['status'])
+	  {
+	    $this->status = FALSE;
+	    $this->errors['IP_ADDRESS'] = array($result['error_code'] => $result['error_message']);
+	  }
+      }
+
+
+    if($_old['TPL'] != $_new['TPL'])
+      {
+	$result = array();
+	$result = Vesta::execute(Vesta::V_CHANGE_WEB_DOMAIN_TPL, array('USER' => $_user, 'DOMAIN' => $_DOMAIN, 'TPL' => $_new['TPL']));
+	if(!$result['status'])
+	  {
+	    $this->status = FALSE;
+	    $this->errors['TPL'] = array($result['error_code'] => $result['error_message']);
+	  }
+      }
+
+    if($_old['ALIAS'] != $_new['ALIAS'])
+      {
+	$result = array();
+
+	$old_arr = explode(',', $_old['ALIAS']);
+	$new_arr = explode(',', $_new['ALIAS']);
+
+	$added = array_diff($new_arr, $old_arr);
+	$deleted = array_diff($old_arr, $new_arr);
+
+	foreach($added as $alias)
+	  {
+	    $result = Vesta::execute(Vesta::V_ADD_WEB_DOMAIN_ALIAS, array('USER' => $_user, 'DOMAIN' => $_DOMAIN, 'ALIAS' => $alias));
+	    if(!$result['status'])
+	      {
+		$this->status = FALSE;
+		$this->errors['ADD_ALIAS'] = array($result['error_code'] => $result['error_message']);
+	      }
+	  }
+	foreach($deleted as $alias)
+	  {
+	    $result = Vesta::execute(Vesta::V_DEL_WEB_DOMAIN_ALIAS, array('USER' => $_user, 'DOMAIN' => $_DOMAIN, 'ALIAS' => $alias));
+	    if(!$result['status'])
+	      {
+		$this->status = FALSE;
+		$this->errors['DEL_ALIAS'] = array($result['error_code'] => $result['error_message']);
+	      }
+	  }
+      }
+
+
+    if($_old['STAT'] != $_new['STAT'])
+      {
+	if($_new['STAT'] == true)
+	  {
+	    $result = array();
+	    $result = Vesta::execute(Vesta::V_ADD_WEB_DOMAIN_STAT, array('USER' => $_user, 'DOMAIN' => $_DOMAIN, 'STAT' => $_new['STAT']));
+	    if(!$result['status'])
+	      {
+		$this->status = FALSE;
+		$this->errors['ADD_STAT'] = array($result['error_code'] => $result['error_message']);
+	      }
+	  }
+
+	if($_new['STAT'] == false)
+	  {
+	    $result = array();
+	    $result = Vesta::execute(Vesta::V_DEL_WEB_DOMAIN_STAT, array('USER' => $_user, 'DOMAIN' => $_DOMAIN));
+	    if(!$result['status'])
+	      {
+		$this->status = FALSE;
+		$this->errors['DEL_STAT'] = array($result['error_code'] => $result['error_message']);
+	      }
+	    $result = array();
+
+	    $result = Vesta::execute(Vesta::V_DEL_WEB_DOMAIN_STAT_AUTH, array('USER' => $_user, 'DOMAIN' => $_DOMAIN, 'STAT_USER' => $_new['STAT_USER']));
+	    if(!$result['status'])
+	      {
+		$this->status = FALSE;
+		$this->errors['DEL_STAT_AUTH'] = array($result['error_code'] => $result['error_message']);
+	      }
+	  }
+      }
+
+    if(0)
+    // ssl
+    if($_old['SSL'] != $_new['SSL'])
+      {
+	if($_new['SSL'] == true)
+	  {
+
+
+	  }
+	if($_new['SSL'] == false)
+	  {
+
+
+	  }
+      }
+    else
+      {
+	if($_old['SSL_CERT'] != $_new['SSL_CERT'])
+	  {
+	    $result = array();
+	    $_SSL_CERT = $_new['SSL_CERT'];
+	    // or read uploaded tmp file
+
+	    $result = Vesta::execute(Vesta::V_CHANGE_WEB_DOMAIN_CERT, array('USER' => $_user, 'DOMAIN' => $_DOMAIN, 'SSL_CERT' => $_SSL_CERT ));
+	    if(!$result['status'])
+	    {
+	      $this->status = FALSE;
+	      $this->errors['SSL_CERT'] = array($result['error_code'] => $result['error_message']);
+	    }
+	  }
+	if($_old['SSL_HOME'] != $_new['SSL_HOME'])
+	  {
+	    $result = array();
+	    $result = Vesta::execute(Vesta::V_CHANGE_WEB_DOMAIN_SSLHOME, array('USER' => $_user, 'DOMAIN' => $_DOMAIN, 'SSL_HOME' => $_new['SSL_HOME']));
+	    if(!$result['status'])
+	      {
+		$this->status = FALSE;
+		$this->errors['SSL_HOME'] = array($result['error_code'] => $result['error_message']);
+	      }
+	  }
+      }
+
+    if($_old['CGI'] != $_new['CGI'])
+      {
+	if($_new['CGI'] == true)
+	{
+	  $result = array();
+	  $result = Vesta::execute(Vesta::V_ADD_WEB_DOMAIN_CGI, array('USER' => $_user, 'DOMAIN' => $_DOMAIN));
+	  if(!$result['status'])
+	    {
+	      $this->status = FALSE;
+	      $this->errors['ADD_CGI'] = array($result['error_code'] => $result['error_message']);
+	    }
+	}
+	if($_new['CGI'] == false)
+	{
+	  $result = array();
+	  $result = Vesta::execute(Vesta::V_DEL_WEB_DOMAIN_CGI, array('USER' => $_user, 'DOMAIN' => $_DOMAIN));
+	  if(!$result['status'])
+	    {
+	      $this->status = FALSE;
+	      $this->errors['DEL_CGI'] = array($result['error_code'] => $result['error_message']);
+	    }
+	}
+      }
+
+    if($_old['ELOG'] != $_new['ELOG'])
+      {
+	if($_new['ELOG'] == true)
+	{
+	  $result = array();
+	  $result = Vesta::execute(Vesta::V_ADD_WEB_DOMAIN_ELOG, array('USER' => $_user, 'DOMAIN' => $_DOMAIN));
+	  if(!$result['status'])
+	    {
+	      $this->status = FALSE;
+	      $this->errors['ADD_ELOG'] = array($result['error_code'] => $result['error_message']);
+	    }
+	}
+	if($_new['ELOG'] == false)
+	{
+	  $result = array();
+	  $result = Vesta::execute(Vesta::V_DEL_WEB_DOMAIN_ELOG, array('USER' => $_user, 'DOMAIN' => $_DOMAIN));
+	  if(!$result['status'])
+	    {
+	      $this->status = FALSE;
+	      $this->errors['DEL_ELOG'] = array($result['error_code'] => $result['error_message']);
+	    }
+	}
+      }
+
+
+    return $this->reply($result['status'], $result['data']);
+  }
+
+
+
+  function suspendExecute($request)
+  {
+    $r = new Request();
+    $_s = $r->getSpell();
+
+    $_user = 'vesta';
     
+    $params = array(
+		    'USER' => $_user,
+		    'DOMAIN' => $_s['DOMAIN']
+		    );
+    
+    $result = Vesta::execute(Vesta::V_SUSPEND_WEB_DOMAIN, $params);
+    
+    if(!$result['status'])
+      $this->errors[] = array($result['error_code'] => $result['error_message']);
+    
+    return $this->reply($result['status'], $result['data']);
+  }
+
+
+  function unsuspendExecute($request)
+  {
+    $r = new Request();
+    $_s = $r->getSpell();
+
+    $_user = 'vesta';
+    
+    $params = array(
+		    'USER' => $_user,
+		    'DOMAIN' => $_s['DOMAIN']
+		    );
+    
+    $result = Vesta::execute(Vesta::V_UNSUSPEND_WEB_DOMAIN, $params);
+    
+    if(!$result['status'])
+      $this->errors[] = array($result['error_code'] => $result['error_message']);
+    
+    return $this->reply($result['status'], $result['data']);
+  }
+
+
+
+  function suspendAllExecute($request)
+  {
+    $r = new Request();
+    $_s = $r->getSpell();
+
+    $_user = 'vesta';
+    
+    $params = array(
+		    'USER' => $_user
+		    );
+    
+    $result = Vesta::execute(Vesta::V_SUSPEND_WEB_DOMAINS, $params);
+    
+    if(!$result['status'])
+      $this->errors[] = array($result['error_code'] => $result['error_message']);
+    
+    return $this->reply($result['status'], $result['data']);
+  }
+
+  function unsuspendAllExecute($request)
+  {
+    $r = new Request();
+    $_s = $r->getSpell();
+
+    $_user = 'vesta';
+    
+    $params = array(
+		    'USER' => $_user
+		    );
+    
+    $result = Vesta::execute(Vesta::V_UNSUSPEND_WEB_DOMAINS, $params);
+    
+    if(!$result['status'])
+      $this->errors[] = array($result['error_code'] => $result['error_message']);
+    
+    return $this->reply($result['status'], $result['data']);
+  }
 }