/** * @param string $identifier Either the player's Username or UUID. * @param int $timeout The length in seconds of the http request timeout. * @return MinecraftProfile|null Returns null if fetching of profile failed. Else returns completed user profile. */ public static function getProfile($identifier, $timeout = 5) { if (strlen($identifier) <= 16) { $identifier = ProfileUtils::getUUIDFromUsername($identifier, $timeout); $url = "https://sessionserver.mojang.com/session/minecraft/profile/" . $identifier['uuid']; } else { $url = "https://sessionserver.mojang.com/session/minecraft/profile/" . $identifier; } // Use cURL instead of file_get_contents $ch = curl_init(); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 0); curl_setopt($ch, CURLOPT_TIMEOUT, $timeout); curl_setopt($ch, CURLOPT_URL, $url); // Execute $ret = curl_exec($ch); if (!empty($ret) && $ret != null && $ret != false) { $data = json_decode($ret, true); return new MinecraftProfile($data['name'], $data['id'], $data['properties']); } else { return null; } }
* Made by Samerton * http://worldscapemc.co.uk * * License: MIT */ require 'core/integration/uuid.php'; // Are custom usernames enabled? $custom_usernames = $queries->getWhere('settings', array('name', '=', 'displaynames')); $custom_usernames = $custom_usernames[0]->value; if (isset($_GET["uid"])) { $individual = $queries->getWhere("users", array("id", "=", $_GET["uid"])); if (count($individual)) { if ($custom_usernames == 'true') { $profile = ProfileUtils::getProfile($individual[0]->mcname); } else { $profile = ProfileUtils::getProfile($individual[0]->username); } if (!empty($profile)) { $result = $profile->getProfileAsArray(); $queries->update("users", $individual[0]->id, array("uuid" => $result['uuid'])); } else { Session::flash('adm-users', '<div class="alert alert-danger"> <button type="button" class="close" data-dismiss="alert"><span aria-hidden="true">×</span></button>' . $admin_language['unable_to_update_uuid'] . '</div>'); Redirect::to('/admin/users/?user='******'adm-users', '<div class="alert alert-info"> <button type="button" class="close" data-dismiss="alert"><span aria-hidden="true">×</span></button>' . $admin_language['task_successful'] . '</div>'); Redirect::to('/admin/users/?user=' . $individual[0]->id); die; } else { // todo: sync all mcnames for cron job
$to_validation['g-recaptcha-response'] = array('required' => true); } if ($custom_usernames == "true") { // validate username and Minecraft name $to_validation['mcname'] = array('required' => true, 'isvalid' => true, 'min' => 3, 'max' => 20, 'unique' => 'users'); $to_validation['username'] = array('required' => true, 'min' => 3, 'max' => 20, 'unique' => 'users'); $mcname = htmlspecialchars(Input::get('mcname')); } else { // only validate Minecraft name $to_validation['username'] = array('required' => true, 'isvalid' => true, 'min' => 3, 'max' => 20, 'unique' => 'users'); $mcname = htmlspecialchars(Input::get('username')); } $validation = $validate->check($_POST, $to_validation); // Execute validation if ($validation->passed()) { $profile = ProfileUtils::getProfile($mcname); $result = $profile->getProfileAsArray(); if (isset($result["uuid"]) && !empty($result['uuid'])) { $uuid = $result['uuid']; } else { $uuid = ''; } $user = new User(); $ip = $user->getIP(); if (filter_var($ip, FILTER_VALIDATE_IP)) { // Valid IP } else { // TODO: Invalid IP, do something else } $password = password_hash(Input::get('password'), PASSWORD_BCRYPT, array("cost" => 13)); // Get current unix time
} else { // Custom usernames are enabled $data['username'] = array('min' => 2, 'max' => 20); $data['mcname'] = array('min' => 2, 'max' => 20, 'isvalid' => true); } $validation = $validate->check($_POST, $data); // validate if ($validation->passed()) { $user = new User(); // Get Minecraft UUID of user if ($allow_mcnames !== "false") { $mcname = Input::get('mcname'); $profile = ProfileUtils::getProfile($mcname); } else { $mcname = Input::get('username'); $profile = ProfileUtils::getProfile(Input::get('username')); } if (!empty($profile)) { $uuid = $profile->getProfileAsArray(); $uuid = $uuid['uuid']; if (empty($uuid)) { $uuid = ''; } } else { $uuid = ''; } if ($uuid == '') { // Error getting UUID, display an error asking user to update manually $uuid_error = true; } // Hash password
/* * Made by Samerton * http://worldscapemc.co.uk * * License: MIT */ require 'core/integration/uuid.php'; // Custom usernames? $displaynames = $queries->getWhere("settings", array("name", "=", "displaynames")); $displaynames = $displaynames[0]->value; if (isset($_GET["uid"])) { $individual = $queries->getWhere("users", array("id", "=", $_GET["uid"])); if (count($individual)) { $uuid = $individual[0]; $uuid = $uuid->uuid; $profile = ProfileUtils::getProfile($uuid); $result = $profile->getUsername(); if (!empty($result)) { $queries->update("users", $individual[0]->id, array("mcname" => $result)); if ($displaynames == "false") { $queries->update("users", $individual[0]->id, array("username" => $result)); } } } Session::flash('adm-users', '<div class="alert alert-info"> <button type="button" class="close" data-dismiss="alert"><span aria-hidden="true">×</span></button>' . $admin_language['task_successful'] . '</div>'); Redirect::to('/admin/users/?user=' . $individual[0]->id); die; } else { // todo: sync all mcnames for cron job } return true;
$mcname = htmlspecialchars(Input::get('mcname')); } else { // only validate Minecraft name $to_validation['username'] = array('required' => true, 'min' => 3, 'max' => 20, 'unique' => 'users'); $mcname = htmlspecialchars(Input::get('username')); } } // Check to see if the Minecraft username was valid if (!isset($invalid_mcname)) { // Valid, continue with validation $validation = $validate->check($_POST, $to_validation); // Execute validation if ($validation->passed()) { if ($uuid_linking == '1') { if (!isset($mcname_result)) { $profile = ProfileUtils::getProfile(str_replace(' ', '%20', $mcname)); $mcname_result = $profile->getProfileAsArray(); } if (isset($mcname_result["uuid"]) && !empty($mcname_result['uuid'])) { $uuid = $mcname_result['uuid']; } else { $uuid = ''; } } else { $uuid = ''; } $user = new User(); $ip = $user->getIP(); if (filter_var($ip, FILTER_VALIDATE_IP)) { // Valid IP } else {
// For UUID stuff require 'core/includes/htmlpurifier/HTMLPurifier.standalone.php'; // HTMLPurifier $profile_user = $queries->getWhere("users", array("username", "=", $profile)); // Is it their username? if (!count($profile_user)) { // No.. $profile_user = $queries->getWhere("users", array("mcname", "=", $profile)); // Is it their Minecraft username? if (!count($profile_user)) { // No.. $exists = false; $uuid = $queries->getWhere("uuid_cache", array("mcname", "=", $profile)); // Get the UUID, maybe they haven't registered yet if (!count($uuid)) { $profile_utils = ProfileUtils::getProfile($profile); if (empty($profile)) { // Not a Minecraft user, end the page Redirect::to('/404.php'); die; } // A valid Minecraft user.. $result = $profile_utils->getProfileAsArray(); $uuid = $result["uuid"]; $mcname = htmlspecialchars($profile); // Cache the UUID so we don't have to keep looking it up via Mojang's servers try { $queries->create("uuid_cache", array('mcname' => $mcname, 'uuid' => $uuid)); } catch (Exception $e) { die($e->getMessage()); }
</tr> </thead> <tbody> <?php foreach ($all_infractions as $infraction) { if ($infractions_plugin == "lb") { // Get username of staff if ($infraction["staff"] !== "CONSOLE") { // Get username of staff from UUID $staff_uuid = str_replace('-', '', $infraction["staff"]); $infractions_query = $queries->getWhere('users', array('uuid', '=', htmlspecialchars($staff_uuid))); if (empty($infractions_query)) { $infractions_query = $queries->getWhere('uuid_cache', array('uuid', '=', htmlspecialchars($staff_uuid))); if (empty($infractions_query)) { require_once 'inc/integration/uuid.php'; $profile = ProfileUtils::getProfile($staff_uuid); if (empty($profile)) { echo 'Could not find that player'; die; } $result = $profile->getProfileAsArray(); $staff = htmlspecialchars($result["username"]); $uuid = htmlspecialchars($staff_uuid); try { $queries->create("uuid_cache", array('mcname' => $staff, 'uuid' => $uuid)); } catch (Exception $e) { die($e->getMessage()); } } $staff = $queries->getWhere('uuid_cache', array('uuid', '=', $staff_uuid)); $infraction["staff"] = $staff[0]->mcname;
/** * @param string $identifier Either the player's Username or UUID. * @param int $timeout The length in seconds of the http request timeout. * @return MinecraftProfile|null Returns null if fetching of profile failed. Else returns completed user profile. */ public static function getProfile($identifier, $timeout = 5) { if (strlen($identifier) <= 16) { $identifier = ProfileUtils::getUUIDFromUsername($identifier, $timeout)['uuid']; } $url = "https://sessionserver.mojang.com/session/minecraft/profile/" . $identifier; $ctx = stream_context_create(array('http' => array('timeout' => $timeout))); $ret = file_get_contents($url, 0, $ctx); if (isset($ret) && $ret != null && $ret != false) { $data = json_decode($ret, true); return new MinecraftProfile($data['name'], $data['id'], $data['properties']); } else { return null; } }