tbrehm
2012-10-30 5768a2388aa666f7ee7b34c42f5c18d967a1e412
Fixed: FS#2501 - Check some remote api functions
5 files modified
84 ■■■■ changed files
interface/lib/classes/db_mysql.inc.php 9 ●●●●● patch | view | raw | blame | history
interface/lib/classes/remoting.inc.php 63 ●●●●● patch | view | raw | blame | history
interface/web/client/client_del.php 8 ●●●● patch | view | raw | blame | history
remoting_client/examples/client_delete_everything.php 2 ●●● patch | view | raw | blame | history
remoting_client/examples/soap_config.php 2 ●●●●● patch | view | raw | blame | history
interface/lib/classes/db_mysql.inc.php
@@ -466,12 +466,21 @@
      if($rows = $app->db->queryAllRecords('SHOW FIELDS FROM '.$table_name)){
    foreach($rows as $row) {
      /*
      $name = $row[0];
      $default = $row[4];
      $key = $row[3];
      $extra = $row[5];
      $isnull = $row[2];
      $type = $row[1];
      */
      $name = $row['Field'];
      $default = $row['Default'];
      $key = $row['Key'];
      $extra = $row['Extra'];
      $isnull = $row['Null'];
      $type = $row['Type'];
      $column = array();
interface/lib/classes/remoting.inc.php
@@ -1130,61 +1130,56 @@
    public function client_delete_everything($session_id, $client_id)
    {
        global $app, $conf;
        if(!$this->checkPerm($session_id, 'client_delete_everything')) {
            $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
            return false;
        }
        $client_id = $app->functions->intval($client_id);
    $client_group = $app->db->queryOneRecord("SELECT groupid FROM sys_group WHERE client_id = $client_id");
        $client_id = $app->functions->intval($client_id);
    $tables = 'client,dns_rr,dns_soa,dns_slave,ftp_user,mail_access,mail_content_filter,mail_domain,mail_forwarding,mail_get,mail_user,mail_user_filter,shell_user,spamfilter_users,support_message,web_database,web_database_user,web_domain,web_traffic';
        $tables_array = explode(',',$tables);
        $client_group_id = $app->functions->intval($client_group['groupid']);
        $table_list = array();
        if($client_group_id > 1) {
            foreach($tables_array as $table) {
                if($table != '') {
                    $records = $app->db->queryAllRecords("SELECT * FROM $table WHERE sys_groupid = ".$client_group_id);
                    $number = count($records);
                    if($number > 0) $table_list[] = array('table' => $table."(".$number.")");
                }
            }
        }
    if($client_id > 0) {
            // remove the group of the client from the resellers group
        if($client_id > 0) {
            //* remove the group of the client from the resellers group
            $parent_client_id = $app->functions->intval($this->dataRecord['parent_client_id']);
            $parent_user = $app->db->queryOneRecord("SELECT userid FROM sys_user WHERE client_id = $parent_client_id");
            $client_group = $app->db->queryOneRecord("SELECT groupid FROM sys_group WHERE client_id = $client_id");
            $app->auth->remove_group_from_user($parent_user['userid'],$client_group['groupid']);
            
            // delete the group of the client
            //* delete the group of the client
            $app->db->query("DELETE FROM sys_group WHERE client_id = $client_id");
            
            // delete the sys user(s) of the client
            //* delete the sys user(s) of the client
            $app->db->query("DELETE FROM sys_user WHERE client_id = $client_id");
            
            // Delete all records (sub-clients, mail, web, etc....)  of this client.
            //* Delete all records (sub-clients, mail, web, etc....)  of this client.
            $tables = 'client,dns_rr,dns_soa,dns_slave,ftp_user,mail_access,mail_content_filter,mail_domain,mail_forwarding,mail_get,mail_user,mail_user_filter,shell_user,spamfilter_users,support_message,web_database,web_database_user,web_domain,web_traffic';
            $tables_array = explode(',',$tables);
            $client_group_id = $app->functions->intval($client_group['groupid']);
            if($client_group_id > 1) {
                foreach($tables_array as $table) {
                    if($table != '') {
                        $records = $app->db->queryAllRecords("SELECT * FROM $table WHERE sys_groupid = ".$client_group_id);
                        // find the primary ID of the table
                        //* find the primary ID of the table
                        $table_info = $app->db->tableInfo($table);
                        $index_field = '';
                        foreach($table_info as $tmp) {
                            if($tmp['option'] == 'primary') $index_field = $tmp['name'];
                        }
                        // Delete the records
                        //* Delete the records
                        if($index_field != '') {
                            if(is_array($records)) {
                                foreach($records as $rec) {
                                    $app->db->datalogDelete($table, $index_field, $rec[$index_field]);
                                    //* Delete traffic records that dont have a sys_groupid column
                                    if($table == 'web_domain') {
                                        $app->db->query("DELETE FROM web_traffic WHERE hostname = '".$app->db->quote($rec['domain'])."'");
                                    }
                                    //* Delete mail_traffic records that dont have a sys_groupid
                                    if($table == 'mail_user') {
                                        $app->db->query("DELETE FROM mail_traffic WHERE mailuser_id = '".$app->db->quote($rec['mailuser_id'])."'");
                                    }
                                }
                            }
                        }
@@ -1193,21 +1188,15 @@
                }
            }
            
        }
        
        if (!$this->checkPerm($session_id, 'client_delete'))
            {
                    $this->server->fault('permission_denied','You do not have the permissions to access this function.');
                    return false;
            }
            $affected_rows = $this->deleteQuery('../client/form/client.tform.php',$client_id);
            // $app->remoting_lib->ispconfig_sysuser_delete($client_id);
        if (!$this->checkPerm($session_id, 'client_delete')) {
            $this->server->fault('permission_denied','You do not have the permissions to access this function.');
            return false;
        }
        $affected_rows = $this->deleteQuery('../client/form/client.tform.php',$client_id);
        return false;
        return $affected_rows;
    }
    
    // Website functions ---------------------------------------------------------------------------------------
interface/web/client/client_del.php
@@ -81,7 +81,7 @@
        $client_group = $app->db->queryOneRecord("SELECT groupid FROM sys_group WHERE client_id = $client_id");
        
        // Get all records (sub-clients, mail, web, etc....)  of this client.
        $tables = 'cron,client,dns_rr,dns_soa,dns_slave,ftp_user,mail_access,mail_content_filter,mail_domain,mail_forwarding,mail_get,mail_user,mail_user_filter,shell_user,spamfilter_users,support_message,web_database,web_domain';
        $tables = 'cron,client,dns_rr,dns_soa,dns_slave,ftp_user,mail_access,mail_content_filter,mail_domain,mail_forwarding,mail_get,mail_user,mail_user_filter,shell_user,spamfilter_users,support_message,web_database,web_database_user,web_domain';
        $tables_array = explode(',',$tables);
        $client_group_id = $app->functions->intval($client_group['groupid']);
        
@@ -131,20 +131,20 @@
            $app->db->query("DELETE FROM sys_user WHERE client_id = $client_id");
            
            // Delete all records (sub-clients, mail, web, etc....)  of this client.
            $tables = 'client,dns_rr,dns_soa,dns_slave,ftp_user,mail_access,mail_content_filter,mail_domain,mail_forwarding,mail_get,mail_user,mail_user_filter,shell_user,spamfilter_users,support_message,web_database,web_domain,web_folder,web_folder_user,domain';
            $tables = 'client,dns_rr,dns_soa,dns_slave,ftp_user,mail_access,mail_content_filter,mail_domain,mail_forwarding,mail_get,mail_user,mail_user_filter,shell_user,spamfilter_users,support_message,web_database,web_database_user,web_domain,web_folder,web_folder_user,domain';
            $tables_array = explode(',',$tables);
            $client_group_id = $app->functions->intval($client_group['groupid']);
            if($client_group_id > 1) {
                foreach($tables_array as $table) {
                    if($table != '') {
                        $records = $app->db->queryAllRecords("SELECT * FROM $table WHERE sys_groupid = ".$client_group_id);
                        // find the primary ID of the table
                        //* find the primary ID of the table
                        $table_info = $app->db->tableInfo($table);
                        $index_field = '';
                        foreach($table_info as $tmp) {
                            if($tmp['option'] == 'primary') $index_field = $tmp['name'];
                        }
                        // Delete the records
                        //* Delete the records
                        if($index_field != '') {
                            if(is_array($records)) {
                                foreach($records as $rec) {
remoting_client/examples/client_delete_everything.php
@@ -21,7 +21,7 @@
    //* Delete client
    $affected_rows = $client->client_delete_everything($session_id, $client_id);
    echo "Client ".$client_id." has been deleted.<br>";
    //echo "Client ".$client_id." has been deleted.<br>";
    //print_r($affected_rows);
    
    if($client->logout($session_id)) {
remoting_client/examples/soap_config.php
@@ -8,7 +8,9 @@
$soap_uri = 'http://localhost:8080/ispconfig3_3.0.5/interface/web/remote/';
*/
$soap_location = 'http://192.168.0.105:8080/remote/index.php';
$soap_uri = 'http://192.168.0.105:8080/remote/';
?>