Uploaded the 1.0 launcher website as well as test patcher website.
							
								
								
									
										15
									
								
								www/login/config.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,15 @@ | |||||||
|  | <?php | ||||||
|  |  | ||||||
|  | $server_name	= "Magis' Funhouse"; | ||||||
|  |  | ||||||
|  | $db_server		= "localhost"; | ||||||
|  | $db_username	= "root"; | ||||||
|  | $db_password	= ""; | ||||||
|  | $db_database	= "ffxiv_server"; | ||||||
|  |  | ||||||
|  | $recaptcha_publickey = ""; | ||||||
|  | $recaptcha_privatekey = ""; | ||||||
|  |  | ||||||
|  | if(!defined('FFXIV_SESSION_LENGTH')) define('FFXIV_SESSION_LENGTH', 24);		//Session length in hours | ||||||
|  |  | ||||||
|  | ?> | ||||||
							
								
								
									
										3
									
								
								www/login/css/login.css
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,3 @@ | |||||||
|  | .loginBody { | ||||||
|  |     background-color: #EFEFEF; | ||||||
|  | } | ||||||
							
								
								
									
										388
									
								
								www/login/database.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,388 @@ | |||||||
|  | <?php | ||||||
|  |  | ||||||
|  | include("config.php"); | ||||||
|  |  | ||||||
|  | mysqli_report(MYSQLI_REPORT_STRICT); | ||||||
|  |  | ||||||
|  | function CreateDatabaseConnection($server, $username, $password, $database) | ||||||
|  | { | ||||||
|  | 	try | ||||||
|  | 	{ | ||||||
|  | 		$dataConnection = new mysqli($server, $username, $password); | ||||||
|  | 	} | ||||||
|  | 	catch(Exception $e) | ||||||
|  | 	{ | ||||||
|  | 		die("Error while connecting to the database"); | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	$dataConnection->select_db($database); | ||||||
|  | 	$dataConnection->query("SET NAMES 'utf8'"); | ||||||
|  | 	 | ||||||
|  | 	return $dataConnection; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | $g_databaseConnection = CreateDatabaseConnection($db_server, $db_username, $db_password, $db_database); | ||||||
|  |  | ||||||
|  | function GenerateRandomSha224() | ||||||
|  | { | ||||||
|  | 	mt_srand(microtime(true) * 100000 + memory_get_usage(true)); | ||||||
|  | 	return hash("sha224", uniqid(mt_rand(), true)); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | function VerifyUser($dataConnection, $username, $password) | ||||||
|  | { | ||||||
|  | 	$statement = $dataConnection->prepare("SELECT id, passhash, salt FROM users WHERE name = ?"); | ||||||
|  | 	if(!$statement) | ||||||
|  | 	{ | ||||||
|  | 		throw new Exception(__FUNCTION__ . " failed: " . $dataConnection->error); | ||||||
|  | 	} | ||||||
|  | 	 | ||||||
|  | 	try | ||||||
|  | 	{ | ||||||
|  | 		$statement->bind_param('s', $username); | ||||||
|  | 		if(!$statement->execute()) | ||||||
|  | 		{ | ||||||
|  | 			throw new Exception(__FUNCTION__ . " failed."); | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  | 		$statement->bind_result($id, $storedPasshash, $salt); | ||||||
|  | 		if(!$statement->fetch()) | ||||||
|  | 		{ | ||||||
|  | 			throw new Exception(__FUNCTION__ . " failed."); | ||||||
|  | 		} | ||||||
|  | 		 | ||||||
|  | 		$saltedPassword = $password . $salt; | ||||||
|  | 		$hashedPassword = hash("sha224", $saltedPassword); | ||||||
|  | 		 | ||||||
|  | 		if($hashedPassword !== $storedPasshash) | ||||||
|  | 		{ | ||||||
|  | 			throw new Exception(__FUNCTION__ . " failed."); | ||||||
|  | 		} | ||||||
|  | 		 | ||||||
|  | 		return $id; | ||||||
|  | 	} | ||||||
|  | 	finally | ||||||
|  | 	{ | ||||||
|  | 		$statement->close(); | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  |  | ||||||
|  | function InsertUser($dataConnection, $username, $passhash, $salt, $email) | ||||||
|  | { | ||||||
|  | 	{ | ||||||
|  | 		$statement = $dataConnection->prepare("INSERT INTO users (name, passhash, salt, email) VALUES (?, ?, ?, ?)"); | ||||||
|  | 		if(!$statement) | ||||||
|  | 		{ | ||||||
|  | 			throw new Exception(__FUNCTION__ . " failed: " . $dataConnection->error); | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  | 		try | ||||||
|  | 		{ | ||||||
|  | 			$statement->bind_param('ssss', $username, $passhash, $salt, $email); | ||||||
|  |  | ||||||
|  | 			if(!$statement->execute()) | ||||||
|  | 			{ | ||||||
|  | 				throw new Exception(__FUNCTION__ . " failed."); | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  | 		finally | ||||||
|  | 		{ | ||||||
|  | 			$statement->close(); | ||||||
|  | 		} | ||||||
|  | 	}	 | ||||||
|  | } | ||||||
|  |  | ||||||
|  | function RefreshOrCreateSession($dataConnection, $userId) | ||||||
|  | { | ||||||
|  | 	try | ||||||
|  | 	{ | ||||||
|  | 		$sessionId = GetSessionFromUserId($dataConnection, $userId); | ||||||
|  | 		RefreshSession($dataConnection, $sessionId); | ||||||
|  | 	} | ||||||
|  | 	catch(Exception $e) | ||||||
|  | 	{ | ||||||
|  | 		$sessionId = CreateSession($dataConnection, $userId); | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	return $sessionId; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | function CreateSession($dataConnection, $userId) | ||||||
|  | { | ||||||
|  | 	//Delete any session that might be active | ||||||
|  | 	{ | ||||||
|  | 		$statement = $dataConnection->prepare("DELETE FROM sessions WHERE userId = ?"); | ||||||
|  | 		if(!$statement) | ||||||
|  | 		{ | ||||||
|  | 			throw new Exception("Failed to create session: " . $dataConnection->error); | ||||||
|  | 		} | ||||||
|  | 		 | ||||||
|  | 		try | ||||||
|  | 		{ | ||||||
|  | 			$statement->bind_param('i', $userId); | ||||||
|  |  | ||||||
|  | 			if(!$statement->execute()) | ||||||
|  | 			{ | ||||||
|  | 				throw new Exception("Failed to create session: " . $dataConnection->error); | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  | 		finally | ||||||
|  | 		{ | ||||||
|  | 			$statement->close(); | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | 	 | ||||||
|  | 	//Create new session | ||||||
|  | 	{ | ||||||
|  | 		$sessionId = GenerateRandomSha224(); | ||||||
|  | 		 | ||||||
|  | 		$statement = $dataConnection->prepare("INSERT INTO sessions (id, userid, expiration) VALUES (?, ?, NOW() + INTERVAL " . FFXIV_SESSION_LENGTH . " HOUR)"); | ||||||
|  | 		if(!$statement) | ||||||
|  | 		{ | ||||||
|  | 			throw new Exception("Failed to create session: " . $dataConnection->error); | ||||||
|  | 		} | ||||||
|  | 		 | ||||||
|  | 		try | ||||||
|  | 		{ | ||||||
|  | 			$statement->bind_param('si', $sessionId, $userId); | ||||||
|  |  | ||||||
|  | 			if(!$statement->execute()) | ||||||
|  | 			{ | ||||||
|  | 				throw new Exception("Failed to create session: " . $dataConnection->error); | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  | 		finally | ||||||
|  | 		{ | ||||||
|  | 			$statement->close(); | ||||||
|  | 		} | ||||||
|  | 		 | ||||||
|  | 		return $sessionId; | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  |  | ||||||
|  | function GetSessionFromUserId($dataConnection, $userId) | ||||||
|  | { | ||||||
|  | 	$statement = $dataConnection->prepare("SELECT id FROM sessions WHERE userId = ? AND expiration > NOW()"); | ||||||
|  | 	if(!$statement) | ||||||
|  | 	{ | ||||||
|  | 		throw new Exception("Failed to get session id: " . $dataConnection->error); | ||||||
|  | 	} | ||||||
|  | 	 | ||||||
|  | 	try | ||||||
|  | 	{ | ||||||
|  | 		$statement->bind_param('i', $userId); | ||||||
|  | 		 | ||||||
|  | 		if(!$statement->execute()) | ||||||
|  | 		{ | ||||||
|  | 			throw new Exception("Failed to get session id: " . $dataConnection->error); | ||||||
|  | 		} | ||||||
|  | 		 | ||||||
|  | 		$statement->bind_result($sessionId); | ||||||
|  | 		if(!$statement->fetch()) | ||||||
|  | 		{ | ||||||
|  | 			throw new Exception("Failed to get session id: " . $dataConnection->error); | ||||||
|  | 		} | ||||||
|  | 		 | ||||||
|  | 		return $sessionId; | ||||||
|  | 	} | ||||||
|  | 	finally | ||||||
|  | 	{ | ||||||
|  | 		$statement->close(); | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  |  | ||||||
|  | function RefreshSession($dataConnection, $sessionId) | ||||||
|  | { | ||||||
|  | 	$statement = $dataConnection->prepare("UPDATE sessions SET expiration = NOW() + INTERVAL " . FFXIV_SESSION_LENGTH . " HOUR WHERE id = ?"); | ||||||
|  | 	if(!$statement) | ||||||
|  | 	{ | ||||||
|  | 		throw new Exception("Failed to refresh session: " . $dataConnection->error); | ||||||
|  | 	} | ||||||
|  | 	 | ||||||
|  | 	try | ||||||
|  | 	{ | ||||||
|  | 		$statement->bind_param('s', $sessionId); | ||||||
|  | 		 | ||||||
|  | 		if(!$statement->execute()) | ||||||
|  | 		{ | ||||||
|  | 			throw new Exception("Failed to refresh session: " . $dataConnection->error); | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | 	finally | ||||||
|  | 	{ | ||||||
|  | 		$statement->close(); | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  |  | ||||||
|  | function GetUserIdFromSession($dataConnection, $sessionId) | ||||||
|  | { | ||||||
|  | 	$statement = $dataConnection->prepare("SELECT userId FROM sessions WHERE id = ? AND expiration > NOW()"); | ||||||
|  | 	if(!$statement) | ||||||
|  | 	{ | ||||||
|  | 		throw new Exception("Could not get user id."); | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	try | ||||||
|  | 	{ | ||||||
|  | 		$statement->bind_param('s', $sessionId); | ||||||
|  | 		if(!$statement->execute()) | ||||||
|  | 		{ | ||||||
|  | 			throw new Exception("Could not get user id."); | ||||||
|  | 		} | ||||||
|  | 		 | ||||||
|  | 		$statement->bind_result($userId); | ||||||
|  | 		if(!$statement->fetch()) | ||||||
|  | 		{ | ||||||
|  | 			throw new Exception("Could not get user id."); | ||||||
|  | 		} | ||||||
|  | 		 | ||||||
|  | 		return $userId; | ||||||
|  | 	} | ||||||
|  | 	finally | ||||||
|  | 	{ | ||||||
|  | 		$statement->close(); | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  |  | ||||||
|  | function GetUserInfo($dataConnection, $userId) | ||||||
|  | { | ||||||
|  | 	$statement = $dataConnection->prepare("SELECT name FROM users WHERE id = ?"); | ||||||
|  | 	if(!$statement) | ||||||
|  | 	{ | ||||||
|  | 		throw new Exception("Failed to get user information: " . $dataConnection->error); | ||||||
|  | 	} | ||||||
|  | 	 | ||||||
|  | 	try | ||||||
|  | 	{ | ||||||
|  | 		$statement->bind_param('i', $userId); | ||||||
|  | 		if(!$statement->execute()) | ||||||
|  | 		{ | ||||||
|  | 			throw new Exception("Failed to get user information: " . $dataConnection->error); | ||||||
|  | 		} | ||||||
|  | 		 | ||||||
|  | 		$result = $statement->get_result(); | ||||||
|  | 		if(!$result) | ||||||
|  | 		{ | ||||||
|  | 			throw new Exception("Failed to get user information: " . $dataConnection->error); | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  | 		$row = $result->fetch_assoc(); | ||||||
|  | 		if(!$row) | ||||||
|  | 		{ | ||||||
|  | 			throw new Exception("Failed to get user information: " . $dataConnection->error); | ||||||
|  | 		} | ||||||
|  | 		 | ||||||
|  | 		return $row; | ||||||
|  | 	} | ||||||
|  | 	finally | ||||||
|  | 	{ | ||||||
|  | 		$statement->close(); | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  |  | ||||||
|  | function GetUserCharacters($dataConnection, $userId) | ||||||
|  | { | ||||||
|  | 	$statement = $dataConnection->prepare("SELECT id, name FROM characters WHERE userId = ?"); | ||||||
|  | 	if(!$statement) | ||||||
|  | 	{ | ||||||
|  | 		throw new Exception(__FUNCTION__ . " failed: " . $dataConnection->error); | ||||||
|  | 	} | ||||||
|  | 	 | ||||||
|  | 	try | ||||||
|  | 	{ | ||||||
|  | 		$statement->bind_param('i', $userId); | ||||||
|  | 		if(!$statement->execute()) | ||||||
|  | 		{ | ||||||
|  | 			throw new Exception(__FUNCTION__ . " failed: " . $dataConnection->error); | ||||||
|  | 		} | ||||||
|  | 		 | ||||||
|  | 		$result = $statement->get_result(); | ||||||
|  | 		if(!$result) | ||||||
|  | 		{ | ||||||
|  | 			throw new Exception(__FUNCTION__ . " failed: " . $dataConnection->error); | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  | 		$characters = array(); | ||||||
|  | 		 | ||||||
|  | 		while(1) | ||||||
|  | 		{ | ||||||
|  | 			$row = $result->fetch_assoc(); | ||||||
|  | 			if(!$row) | ||||||
|  | 			{ | ||||||
|  | 				break; | ||||||
|  | 			} | ||||||
|  | 			array_push($characters, $row); | ||||||
|  | 		} | ||||||
|  | 		 | ||||||
|  | 		return $characters; | ||||||
|  | 	} | ||||||
|  | 	finally | ||||||
|  | 	{ | ||||||
|  | 		$statement->close(); | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  |  | ||||||
|  | function GetCharacterInfo($dataConnection, $userId, $characterId) | ||||||
|  | { | ||||||
|  | 	$query = sprintf("SELECT * FROM characters WHERE userId = '%d' AND id = '%d'",  | ||||||
|  | 		$userId, $characterId); | ||||||
|  | 	$result = $dataConnection->query($query); | ||||||
|  | 	if(!$result) | ||||||
|  | 	{ | ||||||
|  | 			throw new Exception(__FUNCTION__ . " failed: " . $dataConnection->error); | ||||||
|  | 	} | ||||||
|  | 	 | ||||||
|  | 	$row = $result->fetch_assoc(); | ||||||
|  | 	if(!$row) | ||||||
|  | 	{ | ||||||
|  | 			throw new Exception(__FUNCTION__ . " failed: " . $dataConnection->error); | ||||||
|  | 	} | ||||||
|  | 	 | ||||||
|  | 	return $row; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | function UpdateCharacterInfo($dataConnection, $characterId, $characterInfo) | ||||||
|  | { | ||||||
|  | 	$statement = $dataConnection->prepare("UPDATE ffxiv_characters SET | ||||||
|  | 		name = ?, tribe = ?, size = ?, voice = ?, skinColor = ?, hairStyle = ?, hairColor = ?, hairOption = ?, | ||||||
|  | 		eyeColor = ?, faceType = ?, faceBrow = ?, faceEye = ?, faceIris = ?, faceNose = ?, faceMouth = ?, faceJaw = ?, | ||||||
|  | 		faceCheek = ?, faceOption1 = ?, faceOption2 = ?, guardian = ?, birthMonth = ?, birthDay = ?, allegiance = ?, | ||||||
|  | 		weapon1 = ?, weapon2 = ?, headGear = ?, bodyGear = ?, legsGear = ?, handsGear = ?, feetGear = ?,  | ||||||
|  | 		waistGear = ?, rightEarGear = ?, leftEarGear = ?, rightFingerGear = ?, leftFingerGear = ? | ||||||
|  | 		WHERE id = ?"); | ||||||
|  | 	if(!$statement) | ||||||
|  | 	{ | ||||||
|  | 		throw new Exception("Failed to update character information: " . $dataConnection->error); | ||||||
|  | 	} | ||||||
|  | 	 | ||||||
|  | 	try | ||||||
|  | 	{ | ||||||
|  | 		if(!$statement->bind_param("siiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii", | ||||||
|  | 			$characterInfo["name"], $characterInfo["tribe"], $characterInfo["size"], $characterInfo["voice"], | ||||||
|  | 			$characterInfo["skinColor"], $characterInfo["hairStyle"], $characterInfo["hairColor"], | ||||||
|  | 			$characterInfo["hairOption"], $characterInfo["eyeColor"], $characterInfo["faceType"], | ||||||
|  | 			$characterInfo["faceBrow"], $characterInfo["faceEye"], $characterInfo["faceIris"], | ||||||
|  | 			$characterInfo["faceNose"], $characterInfo["faceMouth"], $characterInfo["faceJaw"], | ||||||
|  | 			$characterInfo["faceCheek"], $characterInfo["faceOption1"], $characterInfo["faceOption2"], | ||||||
|  | 			$characterInfo["guardian"], $characterInfo["birthMonth"], $characterInfo["birthDay"], $characterInfo["allegiance"], | ||||||
|  | 			$characterInfo["weapon1"], $characterInfo["weapon2"], $characterInfo["headGear"], $characterInfo["bodyGear"],  | ||||||
|  | 			$characterInfo["legsGear"], $characterInfo["handsGear"], $characterInfo["feetGear"], | ||||||
|  | 			$characterInfo["waistGear"], $characterInfo["rightEarGear"], $characterInfo["leftEarGear"],  | ||||||
|  | 			$characterInfo["rightFingerGear"], $characterInfo["leftFingerGear"], | ||||||
|  | 			$characterId)) | ||||||
|  | 		{ | ||||||
|  | 			throw new Exception("Failed to update character information: " . $dataConnection->error); | ||||||
|  | 		} | ||||||
|  | 		 | ||||||
|  | 		if(!$statement->execute()) | ||||||
|  | 		{ | ||||||
|  | 			throw new Exception("Failed to update character information: " . $dataConnection->error); | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | 	finally | ||||||
|  | 	{ | ||||||
|  | 		$statement->close(); | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  |  | ||||||
|  | ?> | ||||||
							
								
								
									
										
											BIN
										
									
								
								www/login/img/banner.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 125 KiB | 
							
								
								
									
										
											BIN
										
									
								
								www/login/img/btLogin.gif
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 5.5 KiB | 
							
								
								
									
										
											BIN
										
									
								
								www/login/img/lbSQEXId_mem.gif
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 1.3 KiB | 
							
								
								
									
										
											BIN
										
									
								
								www/login/img/lbSQEXPass_mem.gif
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 1.1 KiB | 
							
								
								
									
										
											BIN
										
									
								
								www/login/img/logo.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 118 KiB | 
							
								
								
									
										151
									
								
								www/login/index.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,151 @@ | |||||||
|  | <?php  | ||||||
|  | 		 | ||||||
|  | 	error_reporting(E_ALL | E_STRICT); | ||||||
|  |  | ||||||
|  | 	include("config.php"); | ||||||
|  | 	include("database.php");	 | ||||||
|  | 		 | ||||||
|  | 	$loginError = ""; | ||||||
|  | 		 | ||||||
|  | 	function doLogin($dataConnection) | ||||||
|  | 	{ | ||||||
|  | 		$username 		= trim($_POST["username"]); | ||||||
|  | 		$password 		= trim($_POST["password"]); | ||||||
|  |  | ||||||
|  | 		if(empty($username)) | ||||||
|  | 		{ | ||||||
|  | 			throw new Exception("You must enter an username."); | ||||||
|  | 		} | ||||||
|  | 		 | ||||||
|  | 		if(empty($password)) | ||||||
|  | 		{ | ||||||
|  | 			throw new Exception("You must enter a password."); | ||||||
|  | 		} | ||||||
|  | 	 | ||||||
|  | 		$userId = VerifyUser($dataConnection, $username, $password); | ||||||
|  | 		return RefreshOrCreateSession($dataConnection, $userId); | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	$loginError = ""; | ||||||
|  | 	$currentTimeUTC = time(); | ||||||
|  |  | ||||||
|  | 	if(isset($_POST["login"])) | ||||||
|  | 	{ | ||||||
|  | 		try | ||||||
|  | 		{ | ||||||
|  | 			$sessionId = doLogin($g_databaseConnection); | ||||||
|  | 		} | ||||||
|  | 		catch(Exception $e) | ||||||
|  | 		{ | ||||||
|  | 			$loginError = $e->getMessage(); | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | ?> | ||||||
|  |  | ||||||
|  | <html><head> | ||||||
|  | <meta http-equiv="content-type" content="text/html; charset=windows-1252"> | ||||||
|  | 		<style> | ||||||
|  | 		html, body { | ||||||
|  | 			font-family: Arial; | ||||||
|  | 			font-size: 14px; | ||||||
|  | 			margin:0; | ||||||
|  | 			padding: 0; | ||||||
|  | 			width: 600px; | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  | 		html { | ||||||
|  | 			padding: 10px; | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  | 		form { | ||||||
|  | 			background-color: #eee; | ||||||
|  | 			border: solid 1px #666; | ||||||
|  | 			border-radius: 3px; | ||||||
|  | 			margin-bottom: 0; | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  | 		table { | ||||||
|  | 			justify-content: center; | ||||||
|  | 			width: 100%; | ||||||
|  | 			height: 100%; | ||||||
|  | 			padding: 20px; | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  | 		form input { | ||||||
|  | 			width: 100%; | ||||||
|  | 			border: solid 1px #222; | ||||||
|  | 			padding: 3px; | ||||||
|  | 			outline: none; | ||||||
|  | 		} | ||||||
|  | 				 | ||||||
|  | 		form button { | ||||||
|  | 			background-image: url(img/btLogin.gif); | ||||||
|  | 			background-position: 0 0; | ||||||
|  | 			background-repeat: no-repeat; | ||||||
|  | 			border: none; | ||||||
|  | 			width: 200px; | ||||||
|  | 			height: 40px; | ||||||
|  | 		} | ||||||
|  | 		form button:hover { | ||||||
|  | 			background-position: 0 -40px; | ||||||
|  | 			cursor: pointer; | ||||||
|  | 		} | ||||||
|  | 		 | ||||||
|  | 		.errorText{ | ||||||
|  | 			color: red; | ||||||
|  | 		} | ||||||
|  | 		 | ||||||
|  | 		.banner { | ||||||
|  | 			margin-top: 10px; | ||||||
|  | 		} | ||||||
|  | 		</style> | ||||||
|  | 	</head> | ||||||
|  | 	 | ||||||
|  | 	<body> | ||||||
|  | 			<?php if (isset($sessionId)) echo("<x-sqexauth sid=\"$sessionId\" lang=\"en-us\" region=\"2\" utc=\"$currentTimeUTC\" />"); ?> | ||||||
|  | 			<table border="0" cellpadding="0" cellspacing="0"> | ||||||
|  | 			<tbody><tr> | ||||||
|  | 				<td width="50%"> | ||||||
|  | 					<img src="img/logo.png" class="logo" width="300px"> | ||||||
|  | 				</td> | ||||||
|  | 				<td width="50%"> | ||||||
|  | 					<form method="post"> | ||||||
|  | 						<table border="0" cellpadding="5px" cellspacing="0"> | ||||||
|  | 						<tbody><tr> | ||||||
|  | 							<td width="5%"><img src="img/lbSQEXId_mem.gif"></td> | ||||||
|  | 							<td width="40%"><label for="username">Username</label></td> | ||||||
|  | 							<td width="50%"><input id="username" name="username" autocomplete="off" type="text"></td> | ||||||
|  | 						</tr> | ||||||
|  | 						<tr> | ||||||
|  | 							<td><img src="img/lbSQEXPass_mem.gif" <="" td=""> | ||||||
|  | 							</td><td><label for="password">Password</label></td> | ||||||
|  | 							<td><input id="password" name="password" autocomplete="off" type="password"></td> | ||||||
|  | 						</tr> | ||||||
|  | 						<tr> | ||||||
|  | 							<td colspan="3" align="center"> | ||||||
|  | 							<p class=errorText><?php echo($loginError) ?></p> | ||||||
|  | 							</td> | ||||||
|  | 						</tr> | ||||||
|  | 						<tr> | ||||||
|  | 							<td colspan="3" align="center"> | ||||||
|  | 								<button type="submit" name="login"> </button> | ||||||
|  | 							</td> | ||||||
|  | 						</tr> | ||||||
|  | 						<tr> | ||||||
|  | 							<td colspan="3" align="center"> | ||||||
|  | 								<a href="..\login_su\create_user.php">Don't have a awesome account?</a> | ||||||
|  | 							</td> | ||||||
|  | 						</tr> | ||||||
|  | 						</tbody></table> | ||||||
|  | 					 | ||||||
|  | 				</form></td> | ||||||
|  | 			</tr> | ||||||
|  | 			<tr> | ||||||
|  | 				<td colspan="2" align="center"> | ||||||
|  | 					<img src="img/banner.png" class="banner" width="720px"> | ||||||
|  | 				</td> | ||||||
|  | 			</tr> | ||||||
|  | 			</tbody></table> | ||||||
|  |  | ||||||
|  | </body></html> | ||||||
| Before Width: | Height: | Size: 198 KiB After Width: | Height: | Size: 198 KiB | 
| Before Width: | Height: | Size: 114 KiB After Width: | Height: | Size: 114 KiB | 
							
								
								
									
										
											BIN
										
									
								
								www/patch/ffxiv/48eca647/metainfo/D2010.09.19.0000.torrent
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										
											BIN
										
									
								
								www/patch/ffxiv/48eca647/metainfo/D2010.09.23.0000.torrent
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										
											BIN
										
									
								
								www/patch/ffxiv/48eca647/metainfo/D2012.05.20.0000.0001.torrent
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										
											BIN
										
									
								
								www/patch/ffxiv/48eca647/patch/D2010.09.23.0000.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										3
									
								
								www/patch/test.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,3 @@ | |||||||
|  | <?php $root = $_SERVER["DOCUMENT_ROOT"]; ?> | ||||||
|  | <?php echo filesize("$root/patch/patchfiles/48eca647/patch/D2010.09.23.0000.patch"); ?> | ||||||
|  | <?php readfile("$root/patch/patchfiles/48eca647/metainfo/D2010.09.23.0000.torrent"); ?> | ||||||