function ViewCommunityProfile($sid, $name) { $objResponse = new xajaxResponse(); global $userbank, $username; if (!$userbank->is_admin()) { $objResponse->redirect("index.php?p=login&m=no_access", 0); $log = new CSystemLog("w", "Ошибка доступа", $username . " пытался посмотреть профиль '" . htmlspecialchars($name) . "', не имея на это прав."); return $objResponse; } $sid = (int) $sid; require INCLUDES_PATH . '/CServerRcon.php'; //get the server data $data = $GLOBALS['db']->GetRow("SELECT ip, port, rcon FROM " . DB_PREFIX . "_servers WHERE sid = '" . $sid . "';"); if (empty($data['rcon'])) { $objResponse->addScript("ShowBox('Ощибка', 'Невозможно получить информацию о игроке " . addslashes(htmlspecialchars($name)) . ". Не задан РКОН пароль!', 'red', '', true);"); return $objResponse; } $r = new CServerRcon($data['ip'], $data['port'], $data['rcon']); if (!$r->Auth()) { $GLOBALS['db']->Execute("UPDATE " . DB_PREFIX . "_servers SET rcon = '' WHERE sid = '" . $sid . "';"); $objResponse->addScript("ShowBox('Ошибка', 'Невозможно получить информацию о игроке " . addslashes(htmlspecialchars($name)) . ". Неверный РКОН пароль!', 'red', '', true);"); return $objResponse; } // search for the playername $ret = $r->rconCommand("status"); $search = preg_match_all(STATUS_PARSE, $ret, $matches, PREG_PATTERN_ORDER); $i = 0; $found = false; $index = -1; foreach ($matches[2] as $match) { if ($match == $name) { $found = true; $index = $i; break; } $i++; } if ($found) { $steam = $matches[3][$index]; $objResponse->addScript("\$('dialog-control').setStyle('display', 'block');\$('dialog-content-text').innerHTML = 'Генерируем ссылку на профиль игрока " . addslashes(htmlspecialchars($name)) . ", пожалуйста подождите...<br /><font color=\"green\">Выполнено.</font><br /><br /><b>Смотреть профиль <a href=\"http://www.steamcommunity.com/profiles/" . SteamIDToFriendID($steam) . "/\" title=\"" . addslashes(htmlspecialchars($name)) . "\\'s Profile\" target=\"_blank\">здесь</a>.</b>';"); $objResponse->addScript("window.open('http://www.steamcommunity.com/profiles/" . SteamIDToFriendID($steam) . "/', 'Community_" . $steam . "');"); } else { $objResponse->addScript("ShowBox('Ошибка', 'Невозможно получить информацию о игроке " . addslashes(htmlspecialchars($name)) . ". Игрок ушёл с сервера!', 'red', '', true);"); } return $objResponse; }
function ViewCommunityProfile($sid, $name) { $objResponse = new xajaxResponse(); global $userbank, $username; if (!$userbank->is_admin()) { $objResponse->redirect("index.php?p=login&m=no_access", 0); $log = new CSystemLog("w", "Hacking Attempt", $username . " tried to view profile of '" . htmlspecialchars($name) . "', but doesnt have access."); return $objResponse; } $sid = (int) $sid; require INCLUDES_PATH . '/CServerRcon.php'; //get the server data $data = $GLOBALS['db']->GetRow("SELECT ip, port, rcon FROM " . DB_PREFIX . "_servers WHERE sid = '" . $sid . "';"); if (empty($data['rcon'])) { $objResponse->addScript("ShowBox('Error', 'Can\\'t get playerinfo for " . addslashes(htmlspecialchars($name)) . ". No RCON password!', 'red', '', true);"); return $objResponse; } $r = new CServerRcon($data['ip'], $data['port'], $data['rcon']); if (!$r->Auth()) { $GLOBALS['db']->Execute("UPDATE " . DB_PREFIX . "_servers SET rcon = '' WHERE sid = '" . $sid . "';"); $objResponse->addScript("ShowBox('Error', 'Can\\'t get playerinfo for " . addslashes(htmlspecialchars($name)) . ". Wrong RCON password!', 'red', '', true);"); return $objResponse; } // search for the playername $ret = $r->rconCommand("status"); $search = preg_match_all(STATUS_PARSE, $ret, $matches, PREG_PATTERN_ORDER); $i = 0; $found = false; $index = -1; foreach ($matches[2] as $match) { if ($match == $name) { $found = true; $index = $i; break; } $i++; } if ($found) { $steam = $matches[3][$index]; // Hack to support steam3 [U:1:X] representation. if (strpos($steam, "[U:") === 0) { $steam = renderSteam2(getAccountId($steam), 0); } $objResponse->addScript("\$('dialog-control').setStyle('display', 'block');\$('dialog-content-text').innerHTML = 'Generating Community Profile link for " . addslashes(htmlspecialchars($name)) . ", please wait...<br /><font color=\"green\">Done.</font><br /><br /><b>Watch the profile <a href=\"http://www.steamcommunity.com/profiles/" . SteamIDToFriendID($steam) . "/\" title=\"" . addslashes(htmlspecialchars($name)) . "\\'s Profile\" target=\"_blank\">here</a>.</b>';"); $objResponse->addScript("window.open('http://www.steamcommunity.com/profiles/" . SteamIDToFriendID($steam) . "/', 'Community_" . $steam . "');"); } else { $objResponse->addScript("ShowBox('Error', 'Can\\'t get playerinfo for " . addslashes(htmlspecialchars($name)) . ". Player not on the server anymore!', 'red', '', true);"); } return $objResponse; }
function GetCommunityName($steamid) { $friendid = SteamIDToFriendID($steamid); $result = get_headers("http://steamcommunity.com/profiles/" . $friendid . "/", 1); $raw = file_get_contents(($result["Location"] != "" ? $result["Location"] : "http://steamcommunity.com/profiles/" . $friendid . "/") . "?xml=1"); if (strstr($raw, "</profile>")) { $raw = str_replace("&", "", $raw); $raw = strip_31_ascii($raw); $raw = utf8_encode($raw); $xml = simplexml_load_string($raw); $result = $xml->xpath('/profile/steamID'); $friendid = (string) $result[0]; return $friendid; } return ""; }