From a16341304380c09fd5ba60ea1f6d9f86110865d0 Mon Sep 17 00:00:00 2001 From: Dima Malishev Date: Sat, 6 Aug 2011 16:08:27 +0300 Subject: [PATCH 1/5] 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']);
+  }
 }

From 4df3488c00fd71fb8b6f1362870514b243b669d6 Mon Sep 17 00:00:00 2001
From: Dima Malishev 
Date: Sat, 6 Aug 2011 16:12:20 +0300
Subject: [PATCH 2/5] php files cleaned, added php formatting

---
 web/vesta/config/Config.class.php             |   2 +-
 web/vesta/core/Vesta.class.php                | 206 +++++++++---------
 .../exceptions/ProtectionException.class.php  |   2 +-
 .../core/exceptions/SystemException.class.php |   2 +-
 web/vesta/core/utils/Message.class.php        |   2 +-
 5 files changed, 105 insertions(+), 109 deletions(-)

diff --git a/web/vesta/config/Config.class.php b/web/vesta/config/Config.class.php
index 4f193431..b64b1113 100644
--- a/web/vesta/config/Config.class.php
+++ b/web/vesta/config/Config.class.php
@@ -5,8 +5,8 @@
  *
  * Reads, manipulate configs
  *
- * @author Malishev Dima 
  * @author vesta, http://vestacp.com/
+ * @author Dmitry Malishev 
  * @copyright vesta 2010-2011
  */
 class Config 
diff --git a/web/vesta/core/Vesta.class.php b/web/vesta/core/Vesta.class.php
index 8b0c50e2..825fbfb6 100644
--- a/web/vesta/core/Vesta.class.php
+++ b/web/vesta/core/Vesta.class.php
@@ -4,106 +4,106 @@
  * Api Main class
  * Calls / Executes native vesta methods
  * 
- * @author Malishev Dima 
- * @author Naumov-Socolov 
  * @author vesta, http://vestacp.com/
+ * @author Dmitry Malishev 
+ * @author Dmitry Naumov-Socolov 
  * @copyright vesta 2010-2011
  */
 class Vesta 
 {
     // IP
-    const V_LIST_SYS_IPS                 = 'v_list_sys_ips';
-    const V_ADD_SYS_IP                     = 'v_add_sys_ip';
-    const V_ADD_SYS_USER_IP             = 'v_add_sys_user_ip'; 
-    const V_CHANGE_SYS_IP_OWNER         = 'v_change_sys_ip_owner';
-    const V_CHANGE_SYS_IP_NAME             = 'v_change_sys_ip_name';
-    const V_CHANGE_SYS_IP_STATUS         = 'v_change_sys_ip_status';    
-    const V_DEL_SYS_IP                     = 'v_del_sys_ip';    
-    const V_UPD_SYS_IP                     = 'v_upd_sys_ip';
-    const V_LIST_SYS_INTERFACES         = 'v_list_sys_interfaces';
+    const V_LIST_SYS_IPS                    = 'v_list_sys_ips';
+    const V_ADD_SYS_IP                      = 'v_add_sys_ip';
+    const V_ADD_SYS_USER_IP                 = 'v_add_sys_user_ip'; 
+    const V_CHANGE_SYS_IP_OWNER             = 'v_change_sys_ip_owner';
+    const V_CHANGE_SYS_IP_NAME              = 'v_change_sys_ip_name';
+    const V_CHANGE_SYS_IP_STATUS            = 'v_change_sys_ip_status';    
+    const V_DEL_SYS_IP                      = 'v_del_sys_ip';    
+    const V_UPD_SYS_IP                      = 'v_upd_sys_ip';
+    const V_LIST_SYS_INTERFACES             = 'v_list_sys_interfaces';
     // DNS
-    const V_LIST_DNS_DOMAINS             = 'v_list_dns_domains';
-    const V_LIST_DNS_DOMAIN_RECORDS     = 'v_list_dns_domain';
-    const V_ADD_DNS_DOMAIN                 = 'v_add_dns_domain';
-    const V_ADD_DNS_DOMAIN_RECORD         = 'v_add_dns_domain_record';
-    const V_CHANGE_DNS_DOMAIN_IP         = 'v_change_dns_domain_ip';
-    const V_CHANGE_DNS_DOMAIN_SOA         = 'v_change_dns_domain_soa';
-    const V_CHANGE_DNS_DOMAIN_TPL         = 'v_change_dns_domain_tpl';
-    const V_CHANGE_DNS_DOMAIN_TTL        = 'v_change_dns_domain_ttl';
-    const V_CHANGE_DNS_DOMAIN_EXP         = 'v_change_dns_domain_exp';
-    const V_CHANGE_DNS_DOMAIN_RECORD     = 'v_change_dns_domain_record';
-    const V_DEL_DNS_DOMAIN                 = 'v_del_dns_domain';
-    const V_DEL_DNS_DOMAIN_RECORD         = 'v_del_dns_domain_record';
+    const V_LIST_DNS_DOMAINS                = 'v_list_dns_domains';
+    const V_LIST_DNS_DOMAIN_RECORDS         = 'v_list_dns_domain';
+    const V_ADD_DNS_DOMAIN                  = 'v_add_dns_domain';
+    const V_ADD_DNS_DOMAIN_RECORD           = 'v_add_dns_domain_record';
+    const V_CHANGE_DNS_DOMAIN_IP            = 'v_change_dns_domain_ip';
+    const V_CHANGE_DNS_DOMAIN_SOA           = 'v_change_dns_domain_soa';
+    const V_CHANGE_DNS_DOMAIN_TPL           = 'v_change_dns_domain_tpl';
+    const V_CHANGE_DNS_DOMAIN_TTL           = 'v_change_dns_domain_ttl';
+    const V_CHANGE_DNS_DOMAIN_EXP           = 'v_change_dns_domain_exp';
+    const V_CHANGE_DNS_DOMAIN_RECORD        = 'v_change_dns_domain_record';
+    const V_DEL_DNS_DOMAIN                  = 'v_del_dns_domain';
+    const V_DEL_DNS_DOMAIN_RECORD           = 'v_del_dns_domain_record';
     // CRON
-    const V_LIST_CRON_JOBS                 = 'v_list_sys_cron';
-    const V_ADD_CRON_JOB                 = 'v_add_sys_cron';
-    const V_ADD_SYS_USER_REPORTS         = 'v_add_sys_user_reports';
-    const V_CHANGE_CRON_JOB             = 'v_change_sys_cron_job';
-    const V_SUSPEND_CRON_JOB             = 'v_suspend_sys_cron_job';
-    const V_SUSPEND_CRON_JOBS             = 'v_suspend_sys_cron_jobs';
-    const V_UNSUSPEND_CRON_JOB             = 'v_unsuspend_sys_cron_job';
-    const V_UNSUSPEND_CRON_JOBS         = 'v_unsuspend_sys_cron_jobs';
-    const V_DEL_CRON_JOB                 = 'v_del_sys_cron';
-    const V_DEL_SYS_USER_REPORTS         = 'v_del_sys_user_reports';
+    const V_LIST_CRON_JOBS                  = 'v_list_sys_cron';
+    const V_ADD_CRON_JOB                    = 'v_add_sys_cron';
+    const V_ADD_SYS_USER_REPORTS            = 'v_add_sys_user_reports';
+    const V_CHANGE_CRON_JOB                 = 'v_change_sys_cron_job';
+    const V_SUSPEND_CRON_JOB                = 'v_suspend_sys_cron_job';
+    const V_SUSPEND_CRON_JOBS               = 'v_suspend_sys_cron_jobs';
+    const V_UNSUSPEND_CRON_JOB              = 'v_unsuspend_sys_cron_job';
+    const V_UNSUSPEND_CRON_JOBS             = 'v_unsuspend_sys_cron_jobs';
+    const V_DEL_CRON_JOB                    = 'v_del_sys_cron';
+    const V_DEL_SYS_USER_REPORTS            = 'v_del_sys_user_reports';
     // USER
-    const V_LIST_SYS_USERS                 = 'v_list_sys_users';
-    const V_ADD_SYS_USER                 = 'v_add_sys_user';
-    const V_CHANGE_SYS_USER_CONTACT        = 'v_change_sys_user_contact';
-    const V_CHANGE_SYS_USER_NS             = 'v_change_sys_user_ns';
-    const V_CHANGE_SYS_USER_PACKAGE     = 'v_change_sys_user_package';
-    const V_CHANGE_SYS_USER_PASSWORD     = 'v_change_sys_user_password';
-    const V_CHANGE_SYS_USER_SHELL         = 'v_change_sys_user_shell';
-    const V_CHANGE_SYS_USER_ROLE         = 'v_change_sys_user_role';
-    const V_DEL_SYS_USER                 = 'v_del_sys_user';
+    const V_LIST_SYS_USERS                  = 'v_list_sys_users';
+    const V_ADD_SYS_USER                    = 'v_add_sys_user';
+    const V_CHANGE_SYS_USER_CONTACT         = 'v_change_sys_user_contact';
+    const V_CHANGE_SYS_USER_NS              = 'v_change_sys_user_ns';
+    const V_CHANGE_SYS_USER_PACKAGE         = 'v_change_sys_user_package';
+    const V_CHANGE_SYS_USER_PASSWORD        = 'v_change_sys_user_password';
+    const V_CHANGE_SYS_USER_SHELL           = 'v_change_sys_user_shell';
+    const V_CHANGE_SYS_USER_ROLE            = 'v_change_sys_user_role';
+    const V_DEL_SYS_USER                    = 'v_del_sys_user';
     // WEB_DOMAIN
-    const V_LIST_WEB_DOMAINS             = 'v_list_web_domains';
-    const V_LIST_WEB_DOMAINS_ALIAS         = 'v_list_web_domains_alias';
-    const V_LIST_WEB_DOMAINS_ELOG         = 'v_list_web_domains_elog';
-    const V_LIST_WEB_DOMAINS_PROXY         = 'v_list_web_domains_proxy';
-    const V_LIST_WEB_DOMAINS_SSL         = 'v_list_web_domains_ssl';
-    const V_LIST_WEB_DOMAINS_STATS         = 'v_list_web_domains_stats';
-    const V_LIST_WEB_TEMPLATES             = 'v_list_web_templates';
-    const V_ADD_WEB_DOMAIN                 = 'v_add_web_domain';
-    const V_ADD_WEB_DOMAIN_ALIAS         = 'v_add_web_domain_alias';
-    const V_ADD_WEB_DOMAIN_STAT         = 'v_add_web_domain_stat';
-    const V_ADD_WEB_DOMAIN_STAT_AUTH     = 'v_add_web_domain_stat_auth';
-    const V_ADD_WEB_DOMAIN_SSL             = 'v_add_web_domain_ssl';
-    const V_ADD_WEB_DOMAIN_ELOG         = 'v_add_web_domain_elog';
-    const V_ADD_WEB_DOMAIN_CGI             = 'v_add_web_domain_cgi';
-    const V_CHANGE_WEB_DOMAIN_IP         = 'v_change_web_domain_ip';
-    const V_CHANGE_WEB_DOMAIN_SSLCERT     = 'v_change_web_domain_sslcert';
-    const V_CHANGE_WEB_DOMAIN_SSLHOME     = 'v_change_web_domain_sslhome';
-    const V_CHANGE_WEB_DOMAIN_TPL         = 'v_change_web_domain_tpl';
-    const V_DEL_WEB_DOMAIN_CGI             = 'v_del_web_domain_cgi';
-    const V_DEL_WEB_DOMAIN_ELOG         = 'v_del_web_domain_elog';
-    const V_DEL_WEB_DOMAIN_SSL             = 'v_del_web_domain_ssl';
-    const V_DEL_WEB_DOMAIN_STAT         = 'v_del_web_domain_stat';
-    const V_DEL_WEB_DOMAIN_STAT_AUTH     = 'v_del_web_domain_stat_auth';
-    const V_DEL_WEB_DOMAIN_ALIAS         = 'v_del_web_domain_alias';
-    const V_SUSPEND_WEB_DOMAIN             = 'v_suspend_web_domain';
-    const V_SUSPEND_WEB_DOMAINS         = 'v_suspend_web_domains';
-    const V_UNSUSPEND_WEB_DOMAIN         = 'v_unsuspend_web_domain';
-    const V_UNSUSPEND_WEB_DOMAINS         = 'v_unsuspend_web_domains';
-    const V_UPD_WEB_DOMAIN_DISK         = 'v_upd_web_domain_disk';
-    const V_UPD_WEB_DOMAINS_DISK         = 'v_upd_web_domains_disk';
-    const V_UPD_WEB_DOMAIN_TRAFF         = 'v_upd_web_domain_traff';
-    const V_UPD_WEB_DOMAINS_TRAFF         = 'v_upd_web_domains_traff';
-    const V_DEL_WEB_DOMAIN                 = 'v_del_web_domain';
+    const V_LIST_WEB_DOMAINS                = 'v_list_web_domains';
+    const V_LIST_WEB_DOMAINS_ALIAS          = 'v_list_web_domains_alias';
+    const V_LIST_WEB_DOMAINS_ELOG           = 'v_list_web_domains_elog';
+    const V_LIST_WEB_DOMAINS_PROXY          = 'v_list_web_domains_proxy';
+    const V_LIST_WEB_DOMAINS_SSL            = 'v_list_web_domains_ssl';
+    const V_LIST_WEB_DOMAINS_STATS          = 'v_list_web_domains_stats';
+    const V_LIST_WEB_TEMPLATES              = 'v_list_web_templates';
+    const V_ADD_WEB_DOMAIN                  = 'v_add_web_domain';
+    const V_ADD_WEB_DOMAIN_ALIAS            = 'v_add_web_domain_alias';
+    const V_ADD_WEB_DOMAIN_STAT             = 'v_add_web_domain_stat';
+    const V_ADD_WEB_DOMAIN_STAT_AUTH        = 'v_add_web_domain_stat_auth';
+    const V_ADD_WEB_DOMAIN_SSL              = 'v_add_web_domain_ssl';
+    const V_ADD_WEB_DOMAIN_ELOG             = 'v_add_web_domain_elog';
+    const V_ADD_WEB_DOMAIN_CGI              = 'v_add_web_domain_cgi';
+    const V_CHANGE_WEB_DOMAIN_IP            = 'v_change_web_domain_ip';
+    const V_CHANGE_WEB_DOMAIN_SSLCERT       = 'v_change_web_domain_sslcert';
+    const V_CHANGE_WEB_DOMAIN_SSLHOME       = 'v_change_web_domain_sslhome';
+    const V_CHANGE_WEB_DOMAIN_TPL           = 'v_change_web_domain_tpl';
+    const V_DEL_WEB_DOMAIN_CGI              = 'v_del_web_domain_cgi';
+    const V_DEL_WEB_DOMAIN_ELOG             = 'v_del_web_domain_elog';
+    const V_DEL_WEB_DOMAIN_SSL              = 'v_del_web_domain_ssl';
+    const V_DEL_WEB_DOMAIN_STAT             = 'v_del_web_domain_stat';
+    const V_DEL_WEB_DOMAIN_STAT_AUTH        = 'v_del_web_domain_stat_auth';
+    const V_DEL_WEB_DOMAIN_ALIAS            = 'v_del_web_domain_alias';
+    const V_SUSPEND_WEB_DOMAIN              = 'v_suspend_web_domain';
+    const V_SUSPEND_WEB_DOMAINS             = 'v_suspend_web_domains';
+    const V_UNSUSPEND_WEB_DOMAIN            = 'v_unsuspend_web_domain';
+    const V_UNSUSPEND_WEB_DOMAINS           = 'v_unsuspend_web_domains';
+    const V_UPD_WEB_DOMAIN_DISK             = 'v_upd_web_domain_disk';
+    const V_UPD_WEB_DOMAINS_DISK            = 'v_upd_web_domains_disk';
+    const V_UPD_WEB_DOMAIN_TRAFF            = 'v_upd_web_domain_traff';
+    const V_UPD_WEB_DOMAINS_TRAFF           = 'v_upd_web_domains_traff';
+    const V_DEL_WEB_DOMAIN                  = 'v_del_web_domain';
     // DB    
-    const V_LIST_DB_BASES                 = 'v_list_db_bases';
-    const V_LIST_DB_HOSTS                 = 'v_list_db_hosts';
-    const V_ADD_DB_BASE                 = 'v_add_db_base';
-    const V_ADD_DB_HOST                 = 'v_add_db_host';
-    const V_SUSPEND_DB_BASE             = 'v_suspend_db_base';
-    const V_SUSPEND_DB_BASES             = 'v_suspend_db_bases';
-    const V_UNSUSPEND_DB_BASE             = 'v_unsuspend_db_base';
-    const V_UNSUSPEND_DB_BASES             = 'v_unsuspend_db_bases';
-    const V_CHANGE_DB_PASSWORD             = 'v_change_db_password';
-    const V_DEL_DB_BASE                 = 'v_del_db_base';
-    const V_DEL_DB_HOST                 = 'v_del_db_host';
-    const V_UPD_DB_BASE_DISK             = 'v_upd_db_base_disk';
-    const V_UPD_DB_BASES_DISK             = 'v_upd_db_bases_disk';
-    const PARAM_DELIMETER                 = ' ';
+    const V_LIST_DB_BASES                   = 'v_list_db_bases';
+    const V_LIST_DB_HOSTS                   = 'v_list_db_hosts';
+    const V_ADD_DB_BASE                     = 'v_add_db_base';
+    const V_ADD_DB_HOST                     = 'v_add_db_host';
+    const V_SUSPEND_DB_BASE                 = 'v_suspend_db_base';
+    const V_SUSPEND_DB_BASES                = 'v_suspend_db_bases';
+    const V_UNSUSPEND_DB_BASE               = 'v_unsuspend_db_base';
+    const V_UNSUSPEND_DB_BASES              = 'v_unsuspend_db_bases';
+    const V_CHANGE_DB_PASSWORD              = 'v_change_db_password';
+    const V_DEL_DB_BASE                     = 'v_del_db_base';
+    const V_DEL_DB_HOST                     = 'v_del_db_host';
+    const V_UPD_DB_BASE_DISK                = 'v_upd_db_base_disk';
+    const V_UPD_DB_BASES_DISK               = 'v_upd_db_bases_disk';
+    const PARAM_DELIMETER                   = ' ';
 
     /**
      * Execute vesta command
@@ -117,16 +117,15 @@ class Vesta
         $r = new Request();
         $_DEBUG = $r->getParameter("debug", FALSE);
 
-        if (!isset($cmd_command)) 
-        {
+        if (!isset($cmd_command)) {
             throw new ProtectionException('No function name passed into Vesta::execute'); // TODO: move msg to Messages::
         }
 
         $params = array(
-            'sudo'          => Config::get('sudo_path'),
-            'functions'  => Config::get('vesta_functions_path'),
-            'parameters' => implode("' '", $parameters),          
-        );
+                    'sudo'       => Config::get('sudo_path'),
+                    'functions'  => Config::get('vesta_functions_path'),
+                    'parameters' => implode("' '", $parameters),          
+                  );
     
         // e.g.: /usr/bin/sudo /usr/local/vesta/bin/v_list_sys_users vesta json 
         $cmd = "{$params['sudo']} {$params['functions']}{$cmd_command} '{$params['parameters']}' {$params['reply']}";
@@ -134,22 +133,21 @@ class Vesta
         exec($cmd, $output, $return);
 
         $result = 0;
-        $result = array('status' => TRUE,
+        $result = array(
+                        'status' => TRUE,
                         'data' => '',
                         'error_code' => '',
                         'error_message' => ''
-        );
+                  );
 
         // TODO: please remove this later :)
-        if ($_DEBUG)
-        {
+        if ($_DEBUG) {
             $result['debug'] = array(
                      "cmd" => $cmd,
                      "output" => $output,
                      "return" => $return
                  );
-            if ($debug == 2)
-            {
+            if ($debug == 2) {
                 echo '

'.$cmd; echo '
output: '; print_r($output); echo '
return: '.$return; @@ -157,14 +155,12 @@ class Vesta } } - if (!!(int)$return) - { + if (!!(int)$return) { $result['status'] = FALSE; $result['error_code'] = (int)$return; $result['error_message'] = implode('', $output); } - else - { + else { $result['data'] = json_decode(implode('', $output), true); } diff --git a/web/vesta/core/exceptions/ProtectionException.class.php b/web/vesta/core/exceptions/ProtectionException.class.php index b8ea308c..a9e383f1 100644 --- a/web/vesta/core/exceptions/ProtectionException.class.php +++ b/web/vesta/core/exceptions/ProtectionException.class.php @@ -5,8 +5,8 @@ * * Thrown if unexpected action or behaviour detected * - * @author Malishev Dima * @author vesta, http://vestacp.com/ + * @author Dmitry Malishev * @copyright vesta 2010-2011 */ class ProtectionException extends Exception diff --git a/web/vesta/core/exceptions/SystemException.class.php b/web/vesta/core/exceptions/SystemException.class.php index 6db36cdc..9265e320 100644 --- a/web/vesta/core/exceptions/SystemException.class.php +++ b/web/vesta/core/exceptions/SystemException.class.php @@ -7,8 +7,8 @@ * - system error occured * - unpredictable scenarios * - * @author Malishev Dima * @author vesta, http://vestacp.com/ + * @author Dmitry Malishev * @copyright vesta 2010-2011 */ class SystemException extends Exception { diff --git a/web/vesta/core/utils/Message.class.php b/web/vesta/core/utils/Message.class.php index e1a91dae..2bfa4bce 100644 --- a/web/vesta/core/utils/Message.class.php +++ b/web/vesta/core/utils/Message.class.php @@ -5,8 +5,8 @@ * * Contains messages, that are used in the code. * - * @author Malishev Dima * @author vesta, http://vestacp.com/ + * @author Dmitry Malishev * @copyright vesta 2010-2011 */ class Message From e92b5909a086c23d46d4234bfe5011dbcc4f3f2c Mon Sep 17 00:00:00 2001 From: Dima Malishev Date: Sat, 6 Aug 2011 16:18:52 +0300 Subject: [PATCH 3/5] Deleted tmp php files --- web/vesta/core/Request.class.php~ | 86 ------------ web/vesta/core/Vesta.class.php~ | 221 ------------------------------ 2 files changed, 307 deletions(-) delete mode 100644 web/vesta/core/Request.class.php~ delete mode 100644 web/vesta/core/Vesta.class.php~ diff --git a/web/vesta/core/Request.class.php~ b/web/vesta/core/Request.class.php~ deleted file mode 100644 index c4048853..00000000 --- a/web/vesta/core/Request.class.php~ +++ /dev/null @@ -1,86 +0,0 @@ -post = $_POST; - $this->get = $_GET; - $this->server = $_SERVER; - - $this->mergeContainers(); - } - - /** - * Merge holders into single holder - */ - function mergeContainers() { - $this->_merged = array_merge($this->server, $this->post, $this->get, $this->global); - $this->_spell = json_decode($this->_merged['spell'], true); - } - - /** - * Get parameter - * - * @param $key - * @param $default - * @return - * - */ - function getParameter($key, $default=false) { - return isset($this->_merged[$key]) ? $this->_merged[$key] : $default; - // return isset($this->_spell[$key]) ? $this->_spell[$key] : $default; - } - - function getSpell() { - return $this->_spell; - } - - function hasParameter($key, $default=false) { - return isset($this->_merged[$key]); - } - - /** - * Check if request is post - * - * TODO: write the method - * - * @return - */ - function isPost() { - return true; - } - - static function parseAjaxMethod($request) { - if (!$request->hasParameter('jedi_method')) { - throw new ProtectionException(Message::INVALID_METHOD); - } - - $method = explode('.', $request->getParameter('jedi_method')); - - if (count($method) != 2) { - throw new ProtectionException(Message::INVALID_METHOD); - } - - return array('namespace' => ucfirst($method[0]), 'function' => strtolower($method[1])); - } - -} - diff --git a/web/vesta/core/Vesta.class.php~ b/web/vesta/core/Vesta.class.php~ deleted file mode 100644 index daf46054..00000000 --- a/web/vesta/core/Vesta.class.php~ +++ /dev/null @@ -1,221 +0,0 @@ -getParameter("debug", FALSE); - - if (!isset($cmd_command)) { - throw new ProtectionException('No function name passed into Vesta::execute'); // TODO: move msg to Messages:: - } - - $params = array( - 'sudo' => Config::get('sudo_path'), - 'functions' => Config::get('vesta_functions_path'), - 'parameters' => implode("' '", $parameters), - // 'reply' => Config::get('response_type') - ); - - - $cmd = "{$params['sudo']} {$params['functions']}{$cmd_command} '{$params['parameters']}' {$params['reply']}"; - // /usr/bin/sudo /usr/local/vesta/bin/v_list_sys_users vesta json - exec($cmd, $output, $return); - - $result = 0; - $result = array('status' => TRUE, - 'data' => '', - 'error_code' => '', - 'error_message' => '' - ); - - if($debug) - { - $result['debug'] = array( - "cmd" => $cmd, - "output" => $output, - "return" => $return - ); - if($debug == 2) - { - echo '

'.$cmd; - echo '
output: '; print_r($output); - echo '
return: '.$return; - echo '

'; - } - } - - if(!!(int)$return) - { - $result['status'] = FALSE; - $result['error_code'] = (int)$return; - $result['error_message'] = implode('', $output); - } - else - { - $result['data'] = json_decode(implode('', $output), true); - } - - return $result; - } -} From 8dd2beb82ea879b6cf65eeab1dd8806aecde9749 Mon Sep 17 00:00:00 2001 From: Dima Malishev Date: Sat, 6 Aug 2011 16:19:52 +0300 Subject: [PATCH 4/5] JS updates. Added list / edit / add / delete functionality. Added Helpers methods. --- web/js/__init__.js | 8 +- web/js/_settings.js | 10 +- web/js/actions.js | 55 +++++++-- web/js/helpers.js | 81 ++++++++++---- web/js/html.js | 266 +++++++++++++++++++++++++++++++------------- web/js/model.js | 34 +++++- web/js/templates.js | 246 ++++++++++++++++++++++++++++++++-------- 7 files changed, 539 insertions(+), 161 deletions(-) diff --git a/web/js/__init__.js b/web/js/__init__.js index e4c133cb..655eee05 100644 --- a/web/js/__init__.js +++ b/web/js/__init__.js @@ -1,17 +1,15 @@ $(document).ready(function(){ try{ App.Utils.detectBrowser(); - - App.Env.world = 'USER'; + App.Env.world = 'CRON'; App.Pages.init(); - App.Ref.init(); - + //App.View.start(); App.Core.listen(); App.Core.initMenu(); App.Helpers.liveValidate(); - + }catch(e){ fb.error(e); } diff --git a/web/js/_settings.js b/web/js/_settings.js index 2f14e033..7f7b4cac 100644 --- a/web/js/_settings.js +++ b/web/js/_settings.js @@ -3,16 +3,18 @@ App.i18n.EN = {}; App.i18n.EN.incorrect_ip = 'Incorrect ip'; App.i18n.EN.confirm = 'Are you sure?'; App.i18n.getMessage = function(key) -{ +{ return 'undefined' != typeof App.i18n[App.Env.lang][key] ? App.i18n[App.Env.lang][key] : ''; } // Constants -App.Constants.IP_FORM_ID = 'ip-form'; -App.Constants.DNS_FORM_ID = 'dns-form'; -App.Constants.USER_FORM_ID = 'user-form'; +App.Constants.IP_FORM_ID = 'ip-form'; +App.Constants.DNS_FORM_ID = 'dns-form'; +App.Constants.USER_FORM_ID = 'user-form'; +App.Constants.WEB_DOMAIN_FORM_ID = 'web_domain-form'; +App.Constants.DB_FORM_ID = 'db-form'; App.Settings.ajax_url = 1; App.Settings.uri = location.href.replace('index.html', ''); diff --git a/web/js/actions.js b/web/js/actions.js index 314d8dbc..1b2ec115 100644 --- a/web/js/actions.js +++ b/web/js/actions.js @@ -104,14 +104,9 @@ App.Actions.save_form = function(evt) { var source = $(elm).find('.source').val(); var values = App.Helpers.getFormValues(elm); if(App.Validate.form(values, $('#'+elm_id))) { - App.Model.add(values, source); - //var form_id = App.Constants[App.Env.world + '_FORM_ID']; - //$('#'+form_id).remove(); + App.Model.add(values, source); App.Model.update(values, source, elm); - } - /*if(App.Validate.form(values, $('#'+elm_id))) { - App.Model.update(values, source); - }*/ + } } } @@ -148,6 +143,16 @@ App.Actions.cancel_form = function(evt, params) { App.Helpers.updateScreen(); } +App.Actions.suspend = function(evt) +{ + alert('Suspend?'); +} + +App.Actions.unsuspend = function(evt) +{ + alert('Unsuspend?'); +} + // do_action_form_help App.Actions.showFormHelp = function(evt) { var tpl_name = App.Env.world + '_form'; @@ -188,3 +193,39 @@ App.Actions.generate_pass = function() { $('.password').val(App.Helpers.generatePassword()); } + +App.Actions.toggle_section = function(evt) +{ + var elm = $(evt.target); + var ref = $(elm).parents('.form-options-group:first'); + fb.log(ref); + if ($('.sub_section:first', ref).hasClass('hidden')) { + $('.sub_section:first', ref).removeClass('hidden'); + $('.group-header:first', ref).removeClass('collapsed').addClass('expanded'); + } + else { + $('.sub_section:first', ref).addClass('hidden'); + $('.group-header:first', ref).removeClass('expanded').addClass('collapsed'); + } +} + +App.Actions.close_inner_popup = function(evt) +{ + App.Helpers.closeInnerPopup(); +} + +App.Actions.open_inner_popup = function(evt) +{ + var elm = $(evt.target); + App.Helpers.openInnerPopup(elm, $(elm).next('.inner-popup-html').val()); +} + +App.Actions.add_db_user = function(evt) +{ + alert('TODO'); +} + +App.Actions.backup_db = function(evt) +{ + alert('TODO'); +} diff --git a/web/js/helpers.js b/web/js/helpers.js index 529cb27c..a858fdac 100644 --- a/web/js/helpers.js +++ b/web/js/helpers.js @@ -1,3 +1,44 @@ + + +App.Helpers.getMbHumanMeasure = function(val) +{ + return App.Helpers.getMbHuman(val, true); +} + +/** + * Currently no bytes are used, minimal value is in MB + * uncomment in case we will use bytes instead + */ +App.Helpers.getMbHuman = function(val, only_measure) +{ + var bytes = val * 1024 * 1024; + var kilobyte = 1024; + var megabyte = kilobyte * 1024; + var gigabyte = megabyte * 1024; + var terabyte = gigabyte * 1024; + var precision = 0; + + /*if ((bytes >= 0) && (bytes < kilobyte)) { + return bytes + ' B'; + + } else if ((bytes >= kilobyte) && (bytes < megabyte)) { + return (bytes / kilobyte).toFixed(precision) + ' KB'; + + } else */ + if ((bytes >= megabyte) && (bytes < gigabyte)) { + return only_measure ? 'MB' : (bytes / megabyte).toFixed(precision); + + } else if ((bytes >= gigabyte) && (bytes < terabyte)) { + return only_measure ? 'GB' : (bytes / gigabyte).toFixed(precision); + + } else if (bytes >= terabyte) { + return only_measure ? 'TB' : (bytes / terabyte).toFixed(precision); + + } else { + return only_measure ? 'MB' : bytes; + } +} + App.Helpers.getFirst = function(obj) { try{ // TODO: remove try / catch @@ -101,22 +142,6 @@ App.Helpers.showConsoleHint = function() // TODO: } - -// UTILS -App.Utils.generatePasswordHash = function(length) -{ - var length = length || 11; - var chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890!~."; - var pass = ""; - for(var x=0;x.')); tpl.set(':CHECKED', ''); @@ -194,35 +162,39 @@ App.HTML.Build.dns_entry = function(o, is_new) var now = new Date(); tpl.set(':DATE', now.format("d.mm.yyyy")); } - + if (App.Constants.SUSPENDED_YES == o.SUSPEND) { - var sub_tpl = App.Templates.get('SUSPENDED_TPL_ENABLED', 'dns'); + var sub_tpl = App.Templates.get('SUSPENDED_TPL_NOT_SUSPENDED', 'general'); } else { - var sub_tpl = App.Templates.get('SUSPENDED_TPL_DISABLED', 'dns'); + var sub_tpl = App.Templates.get('SUSPENDED_TPL_SUSPENDED', 'general'); } - + tpl.set(':SUSPENDED_TPL', sub_tpl.finalize()); - + return tpl.finalize(); } App.HTML.Build.user_entry = function(o, key) { var processed_data = { - 'NICKNAME': key, - 'BANDWIDTH_PERCENTS': 90, - 'U_DISK_PERCENTS': 80 + 'NICKNAME' : key, + 'U_DISK_PERCENTAGE' : o.U_DISK > 0 ? o.U_DISK / o.DISK_QUOTA * 100 : 0.01, + 'U_BANDWIDTH_PERCENTAGE': o.U_BANDWIDTH > 0 ? o.U_BANDWIDTH / o.BANDWIDTH * 100 : 0.01, + 'DISK_QUOTA_MEASURE' : App.Helpers.getMbHumanMeasure(o.DISK_QUOTA), + 'BANDWIDTH_MEASURE' : App.Helpers.getMbHumanMeasure(o.BANDWIDTH), + 'BANDWIDTH' : App.Helpers.getMbHuman(o.BANDWIDTH), + 'DISK_QUOTA' : App.Helpers.getMbHuman(o.DISK_QUOTA) }; var o = $.extend(o, processed_data); var tpl = App.Templates.get('ENTRY', 'user'); tpl = App.HTML.setTplKeys(tpl, o); if (App.Constants.SUSPENDED_YES == o.SUSPENDED) { - var sub_tpl = App.Templates.get('SUSPENDED_TPL_ENABLED', 'ip'); + var sub_tpl = App.Templates.get('SUSPENDED_TPL_SUSPENDED', 'general'); } else { - var sub_tpl = App.Templates.get('SUSPENDED_TPL_DISABLED', 'ip'); + var sub_tpl = App.Templates.get('SUSPENDED_TPL_NOT_SUSPENDED', 'general'); } tpl.set(':SUSPENDED_TPL', sub_tpl.finalize()); @@ -258,27 +230,47 @@ App.HTML.Build.user_form = function(options, id) App.HTML.Build.web_domain_entry = function(o, key) { - // TODO: - /*~!:ALIAS~!,\ - naumov-socolov.org.md,\ - naumov-socolov.to\*/ var processed_data = { DOMAIN: key }; var o = $.extend(o, processed_data); - //fb.info(o); var tpl = App.Templates.get('ENTRY', 'web_domain'); tpl = App.HTML.setTplKeys(tpl, o); - /*if (App.Constants.SUSPENDED_YES == o.SUSPENDED) { - var sub_tpl = App.Templates.get('SUSPENDED_TPL_ENABLED', 'ip'); + if (App.Constants.SUSPENDED_YES == o.SUSPENDED) { + var sub_tpl = App.Templates.get('SUSPENDED_TPL_SUSPENDED', 'general'); } else { - var sub_tpl = App.Templates.get('SUSPENDED_TPL_DISABLED', 'ip'); + var sub_tpl = App.Templates.get('SUSPENDED_TPL_NOT_SUSPENDED', 'general'); + } + tpl.set(':SUSPENDED_TPL', sub_tpl.finalize()); + + return tpl.finalize(); +} + +App.HTML.Build.web_domain_form = function(options, id) +{ + if('undefined' == typeof App.Env.initialParams) { + return alert('PLease wait a bit. Some background processes are not yet executed. Thank you for patience.'); + } + var tpl = App.Templates.get('FORM', 'web_domain'); + tpl.set(':source', options); + tpl.set(':id', id || ''); + options = App.Helpers.evalJSON(options) || {}; + if (App.Helpers.isEmpty(options)) { + tpl.set(':title', 'New user'); + tpl.set(':save_button', 'ADD'); + } + else { + tpl.set(':title', 'Edit user'); + tpl.set(':save_button', 'SAVE'); } - tpl.set(':SUSPENDED_TPL', sub_tpl.finalize()); - */ + options = !App.Helpers.isEmpty(options) ? options : {'CONTACT':'', 'PASSWORD':'','LOGIN_NAME':'','NS':''}; + + tpl = App.HTML.setTplKeys(tpl, options, true); + tpl = App.HTML.Build.user_selects(tpl, options); + return tpl.finalize(); } @@ -295,17 +287,57 @@ App.HTML.Build.mail_entry = function(o, key) } App.HTML.Build.db_entry = function(o, key) -{ +{ + var user_list_html = []; + $(o['USERS']).each(function(i, o) + { + var tpl = App.Templates.get('USER_ITEM', 'db'); + tpl.set(':NAME', o); + user_list_html.push(tpl.finalize()); + }); + var wrapper = App.Templates.get('USER_ITEMS_WRAPPER', 'db'); + wrapper.set(':CONTENT', user_list_html.done()); var processed_data = { - DOMAIN: key + 'USER_LIST': wrapper.finalize(), + 'USERS': o['USERS'].length || 0, + 'U_DISK_PERCENTAGE' : o.U_DISK > 0 ? o.U_DISK / o.DISK * 100 : 0.01, + 'DISK_MEASURE': App.Helpers.getMbHumanMeasure(o.DISK), + 'DISK': App.Helpers.getMbHuman(o.DISK) }; var o = $.extend(o, processed_data); + var tpl = App.Templates.get('ENTRY', 'db'); tpl = App.HTML.setTplKeys(tpl, o); return tpl.finalize(); } +App.HTML.Build.db_form = function(options, id) +{ + if('undefined' == typeof App.Env.initialParams) { + return alert('PLease wait a bit. Some background processes are not yet executed. Thank you for patience.'); + } + var tpl = App.Templates.get('FORM', 'db'); + tpl.set(':source', options); + tpl.set(':id', id || ''); + options = App.Helpers.evalJSON(options) || {}; + if (App.Helpers.isEmpty(options)) { + tpl.set(':title', 'New database'); + tpl.set(':save_button', 'ADD'); + } + else { + tpl.set(':title', 'Edit database "'+options.DB+'"'); + tpl.set(':save_button', 'SAVE'); + } + + options = !App.Helpers.isEmpty(options) ? options : {'DB':'', 'USER':'','FORM':'', 'PASSWORD': ''}; + + tpl = App.HTML.setTplKeys(tpl, options, true); + tpl = App.HTML.Build.db_selects(tpl, options); + + return tpl.finalize(); +} + App.HTML.Build.cron_entry = function(o, key) { var processed_data = { @@ -313,7 +345,15 @@ App.HTML.Build.cron_entry = function(o, key) }; var o = $.extend(o, processed_data); var tpl = App.Templates.get('ENTRY', 'cron'); - tpl = App.HTML.setTplKeys(tpl, o); + tpl = App.HTML.setTplKeys(tpl, o); + + if (App.Constants.SUSPENDED_YES == o.SUSPENDED) { + var sub_tpl = App.Templates.get('SUSPENDED_TPL_SUSPENDED', 'general'); + } + else { + var sub_tpl = App.Templates.get('SUSPENDED_TPL_NOT_SUSPENDED', 'general'); + } + tpl.set(':SUSPENDED_TPL', sub_tpl.finalize()); return tpl.finalize(); } @@ -354,6 +394,7 @@ App.HTML.Build.user_selects = function(tpl, options) var tpl = App.Templates.get('select_option', 'general'); tpl.set(':VALUE', val); tpl.set(':TEXT', pkg[val]); + tpl.set(':SELECTED', val == options.PACKAGE ? 'selected="selected"' : ''); acc[acc.length++] = tpl.finalize(); }); tpl.set(':PACKAGE_OPTIONS', acc.done()); @@ -365,6 +406,7 @@ App.HTML.Build.user_selects = function(tpl, options) var tpl = App.Templates.get('select_option', 'general'); tpl.set(':VALUE', val); tpl.set(':TEXT', roles[val]); + tpl.set(':SELECTED', val == options.ROLE ? 'selected="selected"' : ''); acc[acc.length++] = tpl.finalize(); }); tpl.set(':ROLE_OPTIONS', acc.done()); @@ -376,6 +418,7 @@ App.HTML.Build.user_selects = function(tpl, options) var tpl = App.Templates.get('select_option', 'general'); tpl.set(':VALUE', val); tpl.set(':TEXT', shell[val]); + tpl.set(':SELECTED', val == options.SHELL ? 'selected="selected"' : ''); acc[acc.length++] = tpl.finalize(); }); tpl.set(':SHELL_OPTIONS', acc.done()); @@ -383,3 +426,70 @@ App.HTML.Build.user_selects = function(tpl, options) return tpl; } +App.HTML.Build.db_selects = function(tpl, options) +{ + var acc = []; + // PACKAGE + var items = App.Env.initialParams.DB.TYPE; + $.each(items, function(val) + { + var tpl = App.Templates.get('select_option', 'general'); + tpl.set(':VALUE', val); + tpl.set(':TEXT', items[val]); + tpl.set(':SELECTED', val == options.TYPE ? 'selected="selected"' : ''); + acc[acc.length++] = tpl.finalize(); + }); + tpl.set(':TYPE_OPTIONS', acc.done()); + // ROLE + acc = []; + var items = App.Env.initialParams.DB.HOST; + $.each(items, function(val) + { + var tpl = App.Templates.get('select_option', 'general'); + tpl.set(':VALUE', val); + tpl.set(':TEXT', items[val]); + tpl.set(':SELECTED', val == options.HOST ? 'selected="selected"' : ''); + acc[acc.length++] = tpl.finalize(); + }); + tpl.set(':HOST_OPTIONS', acc.done()); + + return tpl; +} + +App.HTML.Build.ip_selects = function(tpl, options) +{ + // OWNER + var users = App.Env.initialParams.IP.SYS_USERS || ['Skid']; + var opts = App.HTML.Build.options(users, options.OWNER); + tpl.set(':owner_options', opts); + + // STATUS + var opts = App.HTML.Build.options(App.Env.initialParams.IP.STATUSES, options.STATUS); + tpl.set(':status_options', opts); + + // INTERFACE + var opts = App.HTML.Build.options(App.Env.initialParams.IP.INTERFACES, options.INTERFACE); + tpl.set(':interface_options', opts); + + return tpl; +} + +App.HTML.Build.dns_selects = function(tpl, options) +{ + try { + // TPL + var obj = App.Env.initialParams.DNS.TPL; + var opts = App.HTML.Build.options(obj, options.TPL); + tpl.set(':TPL', opts); + tpl.set(':TPL_DEFAULT_VALUE', options.TPL || App.Helpers.getFirstKey(obj)); + } + catch (e) { + return ''; + } + + return tpl; +} + + + + diff --git a/web/js/model.js b/web/js/model.js index b68caed4..cc1cf46c 100644 --- a/web/js/model.js +++ b/web/js/model.js @@ -20,12 +20,40 @@ App.Model.WEB_DOMAIN.loadList = function() App.Model.MAIL.loadList = function() { - App.Ajax.request('MAIL.getList', {}, App.View.listItems); + //App.Ajax.request('MAIL.getList', {}, App.View.listItems); + App.Ref.CONTENT.html('

Under maintanance

'); } App.Model.DB.loadList = function() { - App.Ajax.request('DB.getList', {}, App.View.listItems); + App.Ajax.request('DB.getList', {}, function(reply) + { + var acc = []; + var build_method = App.Env.getWorldName() + '_entry'; + var data = reply.data; + // TODO: fix it data.data + $.each(data, function(key) + { + var db_list = data[key]; + fb.warn('KEY: %o', key); + fb.warn('DATA: %o', data[key]); + var tpl_divider = App.Templates.get('DIVIDER', 'db'); + tpl_divider.set(':TYPE', key); + acc[acc.length++] = tpl_divider.finalize(); + $(db_list).each(function(i, o) + { + acc[acc.length++] = App.HTML.Build[build_method](o, key); + }); + + /*var o = data[key]; + fb.warn(key); + acc[acc.length++] = App.HTML.Build[build_method](o, key);*/ + }); + + var html = acc.done().wrapperize('ENTRIES_WRAPPER', App.Env.getWorldName()); + App.Ref.CONTENT.html(html); + App.Helpers.updateScreen(); + }); } App.Model.CRON.loadList = function() @@ -71,7 +99,7 @@ App.Model.remove = function(world, elm) } App.Model.update = function(values, source_json, elm) -{ alert(source_json); +{ var method = App.Settings.getMethodName('update'); var build_method = App.Env.getWorldName() + '_entry'; App.Ajax.request(method, { diff --git a/web/js/templates.js b/web/js/templates.js index 4f36cf63..3e1f322d 100644 --- a/web/js/templates.js +++ b/web/js/templates.js @@ -16,13 +16,23 @@ App.Templates.html = { "Well," the farmer said, "I didn\'t have anymore rope, so I took off my belt and tied her tail to the rafter. In that moment, my pants fell down and my wife walked in ... Some things you just can\'t explain."'] }, general: { - loading: ['
\ + loading: ['
\
Loading...
\
'], popup: ['\ '], + inner_popup: ['
\ +
\ + ×\ +
\ + ~!:CONTENT~!\ +
\ +
\ +
'], select_option: [''], - error_elm: ['
~!:ERROR~!
'] + error_elm: ['
~!:ERROR~!
'], + SUSPENDED_TPL_NOT_SUSPENDED : ['enabled'], + SUSPENDED_TPL_SUSPENDED : ['disabled'] }, popup: { error: ['

Important: An Error Has Occured.


    Something went wrong and some of your actions can be not saved in system. Mostly, it happens when you have network connection errors.
,    However, please notify us about the situation. It would be helpfull if you will write us approximate time the error occured and last actions you were performing. You send your petition on this email: BLABLA,

Sorry for inconvinience. (We recommend you to reload the page)
'] @@ -70,13 +80,10 @@ App.Templates.html = {
\ \ Cancel\ - Help\ + Help\
\
' - ], - SUSPENDED_TPL_ENABLED : ['enabled\ - delete'], - SUSPENDED_TPL_DISABLED : ['suspended'], + ], ENTRIES_WRAPPER: ['
~!:content~!
'], ENTRY: ['
\ \ @@ -162,35 +169,35 @@ App.Templates.html = { FORM: ['\
\ \ + \
~!:title~!
\ -
\ -
\ +
\ +
\
\ \ \
\
\ \ - vesta\ - \ ~!:owner_options~!\ \
\
\ \ - shared\ - \ ~!:status_options~!\ \
\
\ \ - \ + \
\
\ \ - eth1\ - \ ~!:interface_options~!\ \
\ @@ -203,7 +210,7 @@ App.Templates.html = {
\ \ Cancel\ - Help\ + Help\
\
\ '], @@ -216,6 +223,7 @@ App.Templates.html = {
\
\ ~!:SUSPENDED_TPL~!\ + delete\
\
\
\ @@ -224,7 +232,7 @@ App.Templates.html = {
\
\
\ - ~!:IP_ADDRESS~!\ + ~!:IP_ADDRESS~!\
\ \ netmask:\ @@ -273,7 +281,7 @@ App.Templates.html = { \ \
~!:title~!
\ -