From e8a29cf134f7df1a1e7637083f6d7adf64949b7c Mon Sep 17 00:00:00 2001 From: jmontoya <jmontoya@ispconfig3> Date: Wed, 04 Aug 2010 12:57:28 -0400 Subject: [PATCH] Adding new functions to the Remoting class --- interface/lib/classes/remoting.inc.php | 310 +++++++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 274 insertions(+), 36 deletions(-) diff --git a/interface/lib/classes/remoting.inc.php b/interface/lib/classes/remoting.inc.php index 1a9c351..4bdccb8 100644 --- a/interface/lib/classes/remoting.inc.php +++ b/interface/lib/classes/remoting.inc.php @@ -122,6 +122,29 @@ return ($app->db->affectedRows() == 1); } + + /** + Gets the server configuration + @param int session id + @param int server id + @param string section of the config field in the server table. Could be 'web', 'dns', 'mail', 'dns', 'cron', etc + @author Julio Montoya <gugli100@gmail.com> BeezNest 2010 + */ + public function server_get($session_id, $server_id, $section ='') { + global $app; + if(!$this->checkPerm($session_id, 'server_get')) { + $this->server->fault('permission_denied', 'You do not have the permissions to access this function.'); + return false; + } + if (!empty($session_id) && !empty($server_id)) { + $app->uses('remoting_lib , getconf'); + $section_config = $app->getconf->get_server_config($server_id,$section); + return $section_config; + } else { + return false; + } + } + //* Get mail domain details public function mail_domain_get($session_id, $primary_id) { @@ -240,8 +263,8 @@ $this->server->fault('permission_denied','You do not have the permissions to access this function.'); return false; } - $affected_rows = $this->insertQuery('../mail/form/mail_user_filter.tform.php', $client_id, $params); - $app->plugin->raiseEvent('mail:mail_user_filter:on_after_insert',$this); + $affected_rows = $this->insertQuery('../mail/form/mail_user_filter.tform.php', $client_id, $params,'mail:mail_user_filter:on_after_insert'); + // $app->plugin->raiseEvent('mail:mail_user_filter:on_after_insert',$this); return $affected_rows; } @@ -253,8 +276,8 @@ $this->server->fault('permission_denied','You do not have the permissions to access this function.'); return false; } - $affected_rows = $this->updateQuery('../mail/form/mail_user_filter.tform.php', $client_id, $primary_id, $params); - $app->plugin->raiseEvent('mail:mail_user_filter:on_after_update',$this); + $affected_rows = $this->updateQuery('../mail/form/mail_user_filter.tform.php', $client_id, $primary_id, $params,'mail:mail_user_filter:on_after_update'); + // $app->plugin->raiseEvent('mail:mail_user_filter:on_after_update',$this); return $affected_rows; } @@ -1174,7 +1197,8 @@ $this->server->fault('permission_denied', 'You do not have the permissions to access this function.'); return false; } - return $this->insertQuery('../sites/form/web_domain.tform.php',$client_id,$params); + $affected_rows = $this->insertQuery('../sites/form/web_domain.tform.php',$client_id,$params, 'sites:web_domain:on_after_insert'); + return $affected_rows; } //* Update a record @@ -1921,22 +1945,13 @@ //* Save changes to Datalog if($app->remoting_lib->formDef["db_history"] == 'yes') { $new_rec = $app->remoting_lib->getDataRecord($insert_id); - $app->remoting_lib->datalogSave('INSERT',$primary_id,array(),$new_rec); - - $app->remoting_lib->ispconfig_sysuser_add($params,$insert_id); - + $app->remoting_lib->datalogSave('INSERT',$primary_id,array(),$new_rec); + $app->remoting_lib->ispconfig_sysuser_add($params,$insert_id); } - - - - return $insert_id; } - - - - private function insertQuery($formdef_file, $client_id, $params) + private function insertQuery($formdef_file, $client_id, $params,$event_identifier = '') { global $app, $tform, $remoting_lib; @@ -1964,26 +1979,23 @@ $insert_id = $app->db->insertID(); + // set a few values for compatibility with tform actions, mostly used by plugins + $this->id = $insert_id; + $this->dataRecord = $params; + if($event_identifier != '') $app->plugin->raiseEvent($event_identifier,$this); //$app->uses('tform'); //* Save changes to Datalog if($app->remoting_lib->formDef["db_history"] == 'yes') { $new_rec = $app->remoting_lib->getDataRecord($insert_id); - $app->remoting_lib->datalogSave('INSERT',$primary_id,array(),$new_rec); - - } - - // set a few values for compatibility with tform actions, mostly used by plugins - $this->id = $insert_id; - $this->dataRecord = $params; - - + $app->remoting_lib->datalogSave('INSERT',$primary_id,array(),$new_rec); + } return $insert_id; } - private function updateQuery($formdef_file, $client_id, $primary_id, $params) + private function updateQuery($formdef_file, $client_id, $primary_id, $params, $event_identifier = '') { global $app; @@ -2009,7 +2021,6 @@ $this->id = $primary_id; $this->dataRecord = $params; - $app->db->query($sql); if($app->db->errorMessage != '') { @@ -2019,13 +2030,13 @@ $affected_rows = $app->db->affectedRows(); + if($event_identifier != '') $app->plugin->raiseEvent($event_identifier,$this); + //* Save changes to Datalog if($app->remoting_lib->formDef["db_history"] == 'yes') { $new_rec = $app->remoting_lib->getDataRecord($primary_id); $app->remoting_lib->datalogSave('UPDATE',$primary_id,$old_rec,$new_rec); } - - return $affected_rows; } @@ -2037,10 +2048,17 @@ $app->uses('remoting_lib'); //* load the user profile of the client - $app->remoting_lib->loadUserProfile($client_id); + $app->remoting_lib->loadUserProfile(0); //* Load the form definition $app->remoting_lib->loadFormDef($formdef_file); + + $old_rec = $app->remoting_lib->getDataRecord($primary_id); + + // set a few values for compatibility with tform actions, mostly used by plugins + $this->oldDataRecord = $old_rec; + $this->id = $primary_id; + $this->dataRecord = $params; //* Get the SQL query $sql = $app->remoting_lib->getDeleteSQL($primary_id); @@ -2056,8 +2074,7 @@ //* Save changes to Datalog if($app->remoting_lib->formDef["db_history"] == 'yes') { - $rec = $app->remoting_lib->getDataRecord($primary_id); - $app->remoting_lib->datalogSave('DELETE',$primary_id,$rec,array()); + $app->remoting_lib->datalogSave('DELETE',$primary_id,$old_rec,array()); } @@ -2067,7 +2084,7 @@ private function checkPerm($session_id, $function_name) { - $dobre=Array(); + $dobre=array(); $session = $this->getSession($session_id); if(!$session){ return false; @@ -2099,6 +2116,227 @@ return false; } } -} + + //--- + + + /** + * Gets sites by $sys_userid & $sys_groupid + * @param int session id + * @param int user id + * @param array list of groups + * @return mixed array with sites by user + * @author Julio Montoya <gugli100@gmail.com> BeezNest 2010 + */ + public function client_get_sites_by_user($session_id, $sys_userid, $sys_groupid) { + global $app; + if(!$this->checkPerm($session_id, 'client_get_sites_by_user')) { + $this->server->fault('permission_denied', 'You do not have the permissions to access this function.'); + return false; + } + $sys_userid = intval($sys_userid); + $sys_groupid = explode(',', $sys_groupid); + $new_group = array(); + foreach($sys_groupid as $group_id) { + $new_group[] = intval( $group_id); + } + $group_list = implode(',', $new_group); + $sql ="SELECT domain, domain_id, document_root FROM web_domain WHERE ( (sys_userid = $sys_userid AND sys_perm_user LIKE '%r%') OR (sys_groupid IN ($group_list) AND sys_perm_group LIKE '%r%') OR sys_perm_other LIKE '%r%') AND type = 'vhost'"; + $result = $app->db->queryAllRecords($sql); + if(isset($result)) { + return $result; + } else { + $this->server->fault('no_client_found', 'There is no site for this user'); + return false; + } + } + + /** + * Change domains status + * @param int session id + * @param int site id + * @param string active or inactive string + * @return mixed false if error + * @author Julio Montoya <gugli100@gmail.com> BeezNest 2010 + */ + + public function sites_web_domain_set_status($session_id, $primary_id, $status) { + global $app; + if(!$this->checkPerm($session_id, 'sites_web_domain_set_status')) { + $this->server->fault('permission_denied', 'You do not have the permissions to access this function.'); + return false; + } + if(in_array($status, array('active', 'inactive'))) { + if ($status == 'active') { + $status = 'y'; + } else { + $status = 'n'; + } + $sql = "UPDATE web_domain SET active = '$status' WHERE domain_id = ".intval($primary_id); + $app->db->query($sql); + $result = $app->db->affectedRows(); + return $result; + } else { + $this->server->fault('status_undefined', 'The status is not available'); + return false; + } + } + + /** + * Get sys_user information by username + * @param int session id + * @param string user's name + * @return mixed false if error + * @author Julio Montoya <gugli100@gmail.com> BeezNest 2010 + */ + public function client_get_by_username($session_id, $username) { + global $app; + if(!$this->checkPerm($session_id, 'client_get_by_username')) { + $this->server->fault('permission_denied', 'You do not have the permissions to access this function.'); + return false; + } + $username = $app->db->quote($username); + $rec = $app->db->queryOneRecord("SELECT * FROM sys_user WHERE username = '".$username."'"); + if (isset($rec)) { + return $rec; + } else { + $this->server->fault('no_client_found', 'There is no user account for this user name.'); + return false; + } + } -?> + /** + * Changes client password + * + * @param int session id + * @param int client id + * @param string new password + * @return bool true if success + * @author Julio Montoya <gugli100@gmail.com> BeezNest 2010 + * + */ + public function client_change_password($session_id, $client_id, $new_password) { + global $app; + + if(!$this->checkPerm($session_id, 'client_change_password')) { + $this->server->fault('permission_denied', 'You do not have the permissions to access this function.'); + return false; + } + $client_id = intval($client_id); + $client = $app->db->queryOneRecord("SELECT client_id FROM client WHERE client_id = ".$client_id); + if($client['client_id'] > 0) { + $new_password = $app->db->quote($new_password); + $sql = "UPDATE client SET password = md5('".($new_password)."') WHERE client_id = ".$client_id; + $app->db->query($sql); + $sql = "UPDATE sys_user SET passwort = md5('".($new_password)."') WHERE client_id = ".$client_id; + $app->db->query($sql); + return true; + } else { + $this->server->fault('no_client_found', 'There is no user account for this client_id'); + return false; + } + } + + + /** + * Get a list of functions + * @param int session id + * @return mixed array of the available functions + * @author Julio Montoya <gugli100@gmail.com> BeezNest 2010 + */ + public function get_function_list($session_id) + { + if(!$this->checkPerm($session_id, 'get_function_list')) { + $this->server->fault('permission_denied', 'You do not have the permissions to access this function.'); + return false; + } + return get_class_methods($this); + } + + /** + * Get all databases by user + * @author Julio Montoya <gugli100@gmail.com> BeezNest 2010 + */ + public function sites_database_get_all_by_user($session_id, $client_id) + { + global $app; + if(!$this->checkPerm($session_id, 'sites_database_get_all_by_user')) { + $this->server->fault('permission_denied', 'You do not have the permissions to access this function.'); + return false; + } + $client_id = intval($client_id); + $sql = "SELECT database_id, database_name, database_user, database_password FROM web_database WHERE sys_userid = $client_id "; + $all = $app->db->queryAllRecords($sql); + return $all; + } + + /** + * Get all client templates + * @param int session id + * @author Julio Montoya <gugli100@gmail.com> BeezNest 2010 + */ + public function client_templates_get_all($session_id) { + global $app; + if(!$this->checkPerm($session_id, 'client_templates_get_all')) { + $this->server->fault('permission_denied', 'You do not have the permissions to access this function.'); + return false; + } + $sql = "SELECT * FROM client_template"; + $result = $app->db->queryAllRecords($sql); + return $result; + } + + /** + * Get all DNS zone by user + *@author Julio Montoya <gugli100@gmail.com> BeezNest 2010 + */ + /* + I will update this function + public function dns_zone_get_by_user($session_id, $client_id, $server_id) { + global $app; + if(!$this->checkPerm($session_id, 'dns_zone_get')) { + //$this->server->fault('permission_denied', 'You do not have the permissions to access this function.'); + //return false; + } + if (!empty($client_id) && !empty($server_id)) { + $server_id = intval($server_id); + $client_id = intval($client_id); + $sql = "SELECT id, origin FROM dns_soa d INNER JOIN sys_user s on(d.sys_groupid = s.default_group) WHERE client_id = '$client_id' AND server_id = $server_id"; + $result = $app->db->queryAllRecords($sql); + return $result; + } + return false; + } + */ + + /** + * Changes DNS zone status + * @param int session id + * @param int dns soa id + * @param string status active or inactive string + * @author Julio Montoya <gugli100@gmail.com> BeezNest 2010 + */ + + public function dns_zone_set_status($session_id, $primary_id, $status) { + global $app; + if(!$this->checkPerm($session_id, 'dns_zone_set_status')) { + $this->server->fault('permission_denied', 'You do not have the permissions to access this function.'); + return false; + } + if(in_array($status, array('active', 'inactive'))) { + if ($status == 'active') { + $status = 'y'; + } else { + $status = 'n'; + } + $sql = "UPDATE dns_soa SET active = '$status' WHERE id = ".intval($primary_id); + $app->db->query($sql); + $result = $app->db->affectedRows(); + return $result; + } else { + $this->server->fault('status_undefined', 'The status is not available'); + return false; + } + } +} +?> \ No newline at end of file -- Gitblit v1.9.1