/** * 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'); }
/** * 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; }
/** * 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; } } } }
/** * 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); } }
} /** 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; }
<td width="10%"> </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"; ?>
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); }
<td width="10%"> </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