Esempio n. 1
0
 /**
  * Verifies server account
  *
  * @since 1.0
  * @package facileManager
  */
 function verify($data)
 {
     global $fmdb, $__FM_CONFIG;
     if (!isset($data['AUTHKEY'])) {
         return _('Account is not found.') . "\n";
     }
     extract($data);
     include ABSPATH . 'fm-modules/' . $module_name . '/variables.inc.php';
     /** Check account key */
     $account_status = $this->verifyAccount($AUTHKEY);
     if ($account_status !== true) {
         return $account_status;
     }
     /** Check serial number */
     if (isset($data['SERIALNO'])) {
         basicGet('fm_' . $__FM_CONFIG[$module_name]['prefix'] . 'servers', sanitize($SERIALNO), 'server_', 'server_serial_no', "AND server_installed='yes'", getAccountID($AUTHKEY));
         if (!$fmdb->num_rows) {
             return _('Server is not found.') . "\n";
         }
     }
     return _('Success');
 }
Esempio n. 2
0
 /**
  * Adds the new server
  */
 function add($post)
 {
     global $fmdb, $__FM_CONFIG, $fm_name;
     /** Validate entries */
     $post = $this->validatePost($post);
     if (!is_array($post)) {
         return $post;
     }
     $module = isset($post['module_name']) ? $post['module_name'] : $_SESSION['module'];
     /** Get a valid and unique serial number */
     $post['server_serial_no'] = isset($post['server_serial_no']) ? $post['server_serial_no'] : generateSerialNo($module);
     $sql_insert = "REPLACE INTO `fm_{$__FM_CONFIG[$_SESSION['module']]['prefix']}servers`";
     $sql_fields = '(';
     $sql_values = null;
     $post['account_id'] = $_SESSION['user']['account_id'];
     $exclude = array('submit', 'action', 'server_id', 'compress', 'AUTHKEY', 'module_name', 'module_type', 'config');
     foreach ($post as $key => $data) {
         $clean_data = sanitize($data);
         if ($key == 'server_name' && empty($clean_data)) {
             return __('No server name defined.');
         }
         if (!in_array($key, $exclude)) {
             $sql_fields .= $key . ',';
             $sql_values .= "'{$clean_data}',";
         }
     }
     $sql_fields = rtrim($sql_fields, ',') . ')';
     $sql_values = rtrim($sql_values, ',');
     $query = "{$sql_insert} {$sql_fields} VALUES ({$sql_values})";
     $result = $fmdb->query($query);
     if (!$fmdb->result) {
         return __('Could not add the server because a database error occurred.');
     }
     /** Add default fM interaction rules */
     $account_id = isset($post['AUTHKEY']) ? getAccountID($post['AUTHKEY']) : $_SESSION['user']['account_id'];
     include_once ABSPATH . 'fm-modules/' . $module . '/classes/class_policies.php';
     $fm_host_id = getNameFromID($fm_name, 'fm_' . $__FM_CONFIG[$module]['prefix'] . 'objects', 'object_', 'object_name', 'object_id', $account_id);
     $fm_service_id[] = 'g' . getNameFromID('Web Server', 'fm_' . $__FM_CONFIG[$module]['prefix'] . 'groups', 'group_', 'group_name', 'group_id', $account_id);
     if ($post['server_type'] == 'iptables') {
         $fm_service_id[] = 's' . getNameFromID('High TCP Ports', 'fm_' . $__FM_CONFIG[$module]['prefix'] . 'services', 'service_', 'service_name', 'service_id', $account_id);
     }
     $default_rules[] = array('account_id' => $account_id, 'server_serial_no' => $post['server_serial_no'], 'source_items' => 'o' . $fm_host_id, 'destination_items' => '', 'services_items' => implode(';', $fm_service_id), 'policy_comment' => sprintf(__('Required for %s client interaction.'), $fm_name));
     $default_rules[] = array('account_id' => $account_id, 'server_serial_no' => $post['server_serial_no'], 'policy_direction' => 'out', 'source_items' => '', 'destination_items' => 'o' . $fm_host_id, 'services_items' => implode(';', $fm_service_id), 'policy_comment' => sprintf(__('Required for %s client interaction.'), $fm_name));
     foreach ($default_rules as $rule) {
         $fm_module_policies->add($rule);
     }
     addLogEntry("Added server:\nName: {$post['server_name']} ({$post['server_serial_no']})\nType: {$post['server_type']}\n" . "Update Method: {$post['server_update_method']}\nConfig File: {$post['server_config_file']}");
     return true;
 }
Esempio n. 3
0
/**
 * Generates a server serial number
 *
 * @since 1.0
 * @package facileManager
 *
 * @param string $module Module to use
 * @return int
 */
function generateSerialNo($module = null)
{
    global $fmdb, $__FM_CONFIG;
    if ($module) {
        while (1) {
            if (array_key_exists('server_name', $_POST) && defined('CLIENT')) {
                $get_query = "SELECT * FROM `fm_{$__FM_CONFIG[$module]['prefix']}servers` WHERE `server_status`!='deleted' AND account_id='" . getAccountID(sanitize($_POST['AUTHKEY'])) . "' AND `server_name`='" . sanitize($_POST['server_name']) . "'";
                $fmdb->get_results($get_query);
                if ($fmdb->num_rows) {
                    $array = $fmdb->last_result;
                    return $array[0]->server_serial_no;
                }
            }
            $serialno = rand(100000000, 999999999);
            /** Ensure the serial number does not exist in any of the server tables */
            $all_tables = $fmdb->get_results("SELECT table_name FROM information_schema.tables t WHERE t.table_schema = '{$__FM_CONFIG['db']['name']}' AND t.table_name LIKE 'fm_%_servers'");
            $table_count = $fmdb->num_rows;
            $result = $fmdb->last_result;
            $taken = true;
            for ($i = 0; $i < $table_count; $i++) {
                basicGet($result[$i]->table_name, $serialno, 'server_', 'server_serial_no', null, 1);
                if (!$fmdb->num_rows) {
                    $taken = false;
                }
            }
            if (!$taken) {
                return $serialno;
            }
        }
    }
}
Esempio n. 4
0
 /**
  * Figures out what files to update on the DNS server
  *
  * @since 1.0
  * @package fmDNS
  */
 function buildCronConfigs($post_data)
 {
     global $fmdb, $__FM_CONFIG;
     $server_serial_no = sanitize($post_data['SERIALNO']);
     extract($post_data);
     basicGet('fm_' . $__FM_CONFIG['fmDNS']['prefix'] . 'servers', $server_serial_no, 'server_', 'server_serial_no');
     if ($fmdb->num_rows) {
         $result = $fmdb->last_result;
         $data = $result[0];
         extract(get_object_vars($data), EXTR_SKIP);
         /** check if this server is configured for cron updates */
         if ($server_update_method != 'cron') {
             $error = "This server is not configured to receive updates via cron.\n";
             if ($compress) {
                 echo gzcompress(serialize($error));
             } else {
                 echo serialize($error);
             }
             return;
         }
         /** check if there are updates */
         if ($server_update_config == 'no') {
             $error = "No updates found.\n";
             if ($compress) {
                 echo gzcompress(serialize($error));
             } else {
                 echo serialize($error);
             }
             return;
         }
         /** purge configs first? */
         $data->purge_config_files = getOption('purge_config_files', getAccountID($post_data['AUTHKEY']), 'fmDNS');
         /** process zone reloads if present */
         $track_reloads = $this->getReloadRequests($server_serial_no);
         if ($track_reloads && $server_update_config == 'yes') {
             /** process zone config build */
             for ($i = 0; $i < count($track_reloads); $i++) {
                 $query = "SELECT * FROM `fm_{$__FM_CONFIG['fmDNS']['prefix']}domains` WHERE `domain_status`='active' AND (`domain_id`=" . $track_reloads[$i]->domain_id . " OR `domain_clone_domain_id`=" . $track_reloads[$i]->domain_id . ") ORDER BY `domain_clone_domain_id`,`domain_name`";
                 $result = $fmdb->query($query);
                 if ($fmdb->num_rows) {
                     $zone_result = $fmdb->last_result[0];
                     /** Is this a clone id? */
                     if ($zone_result->domain_clone_domain_id) {
                         $zone_result = $this->mergeZoneDetails($zone_result, 'clone');
                     } elseif ($zone_result->domain_template_id) {
                         $zone_result = $this->mergeZoneDetails($zone_result, 'template');
                     }
                     if (getSOACount($zone_result->domain_id)) {
                         $domain_name = $this->getDomainName($zone_result->domain_mapping, trimFullStop($zone_result->domain_name));
                         $file_ext = $zone_result->domain_mapping == 'forward' ? 'hosts' : 'rev';
                         /** Are there multiple zones with the same name? */
                         if (isset($zone_result->parent_domain_id)) {
                             basicGet('fm_' . $__FM_CONFIG['fmDNS']['prefix'] . 'domains', $zone_result->domain_name, 'domain_', 'domain_name', 'AND domain_id!=' . $zone_result->parent_domain_id);
                             if ($fmdb->num_rows) {
                                 $file_ext = $zone_result->parent_domain_id . ".{$file_ext}";
                             }
                         } else {
                             $zone_result->parent_domain_id = $zone_result->domain_id;
                             basicGet('fm_' . $__FM_CONFIG['fmDNS']['prefix'] . 'domains', $zone_result->domain_name, 'domain_', 'domain_name', 'AND domain_id!=' . $zone_result->domain_id);
                             if ($fmdb->num_rows) {
                                 $file_ext = $zone_result->domain_id . ".{$file_ext}";
                             }
                         }
                         //							basicGet('fm_' . $__FM_CONFIG['fmDNS']['prefix'] . 'domains', $zone_result->domain_name, 'domain_', 'domain_name', 'AND domain_clone_domain_id=0 AND domain_id!=' . $zone_result->domain_id);
                         //							if ($fmdb->num_rows) $file_ext = $zone_result->domain_id . ".$file_ext";
                         /** Build zone file */
                         $data->files[$server_zones_dir . '/' . $zone_result->domain_type . '/db.' . $domain_name . $file_ext] = $this->buildZoneFile($zone_result);
                         /** Track reloads */
                         $data->reload_domain_ids[] = isset($zone_result->parent_domain_id) ? $zone_result->parent_domain_id : $zone_result->domain_id;
                     }
                 }
             }
             if (is_array($data->files)) {
                 return get_object_vars($data);
             }
         } else {
             /** process server config build */
             list($config, $message) = $this->buildServerConfig($post_data);
             $config['server_build_all'] = true;
             $config['purge_config_files'] = $data->purge_config_files;
             return $config;
         }
     }
     /** Bad DNS server */
     $error = "DNS server is not found.\n";
     if ($compress) {
         echo gzcompress(serialize($error));
     } else {
         echo serialize($error);
     }
 }
Esempio n. 5
0
            }
            /** Client upgrades */
            if (array_key_exists('upgrade', $_GET)) {
                if (!isset($__FM_CONFIG[$_POST['module_name']]['min_client_auto_upgrade_version'])) {
                    $__FM_CONFIG[$_POST['module_name']]['min_client_auto_upgrade_version'] = 0;
                }
                $current_module_version = getOption('client_version', 0, $_POST['module_name']);
                if ($_POST['server_client_version'] == $current_module_version) {
                    $data = sprintf(_("Latest version: %s\nNo upgrade available."), $current_module_version) . "\n";
                } elseif (version_compare($_POST['server_client_version'], $__FM_CONFIG[$_POST['module_name']]['min_client_auto_upgrade_version'], '<')) {
                    $data = sprintf(_("Latest version: %s\nThis upgrade requires a manual installation."), $current_module_version) . "\n";
                } else {
                    $data = array('latest_core_version' => $fm_version, 'latest_module_version' => $current_module_version);
                }
                // Probably need to move/remove this
                $fm_shared_module_servers->updateClientVersion();
            }
            if (array_key_exists('ssh', $_GET)) {
                $data = getOption('ssh_' . $_GET['ssh'], getAccountID($_POST['AUTHKEY']));
            }
        } else {
            $data = sprintf(_("failed\n\nInstallation aborted. %s is not an active module."), $_POST['module_name']) . "\n";
        }
    }
    if ($_POST['compress']) {
        echo gzcompress(serialize($data));
    } else {
        echo serialize($data);
    }
    exit;
}
Esempio n. 6
0
            <td width="10%">&nbsp;</td>
          </tr>
<?php 
    $x = 0;
    foreach ($hackers as $hackers => $v) {
        ?>
          <tr bgcolor="#<?php 
        echo $x % 2 == 0 ? "BBBBBB" : "AAAAAA";
        ?>
">
            <td align="center" width="5%"><?php 
        echo $v['hid'];
        ?>
</td>
            <td align="center" width="10%"><a href="index.php?editor=account&acctid=<?php 
        echo getAccountID($v['account']);
        ?>
"><?php 
        echo $v['account'];
        ?>
</a></td>
            <td align="center" width="15%"><a href="index.php?editor=player&playerid=<?php 
        echo getPlayerID($v['name']);
        ?>
"><?php 
        echo $v['name'];
        ?>
</a></td>
            <td align="center" width="15%"><?php 
        echo $v['zone'] ? $v['zone'] : "N/A";
        ?>
Esempio n. 7
0
function char_transfer()
{
    global $mysql, $acctid;
    $target_acct = getAccountID($_POST['tacct']);
    $char_id = $_GET['playerid'];
    $query = "UPDATE character_data SET account_id={$target_acct} WHERE id={$char_id}";
    $mysql->query_no_result($query);
}
Esempio n. 8
0
            <td width="10%">&nbsp;</td>
          </tr>
<?php 
    $x = 0;
    foreach ($hackers as $hackers => $v) {
        ?>
          <tr bgcolor="#<?php 
        echo $x % 2 == 0 ? "BBBBBB" : "AAAAAA";
        ?>
">
            <td align="center" width="5%"><?php 
        echo $v['hid'];
        ?>
</td>
            <td align="center" width="10%"><?php 
        echo getAccountID($v['account']) ? "<a href=\"index.php?editor=account&acctid=" . getAccountID($v['account']) . "\">" . $v['account'] . "</a>" : $v['account'];
        ?>
</td>
            <td align="center" width="15%"><?php 
        echo getPlayerID($v['name']) ? "<a href=\"index.php?editor=player&playerid=" . getPlayerID($v['name']) . "\">" . $v['name'] . "</a>" : $v['name'];
        ?>
</td>
            <td align="center" width="15%"><?php 
        echo $v['zone'] ? $v['zone'] : "N/A";
        ?>
</td>
            <td align="center" width="20%"><?php 
        echo $v['date'];
        ?>
</td>
            <td align="center" width="25%"><a title="<?php