<?php
	function tellLock($pCommand, $pUser, $pPass, $pToken, $pIp){

		$json = '{
			"user":' . json_encode( $pUser ) . ',
			"password":' . json_encode( $pPass ) . ',
			"command":' . json_encode( $pCommand ) . ',
			"token":' . json_encode( $pToken ) . ',
			"ip":' . json_encode( $pIp ) . '
		}'."\n";

		$address = "127.0.0.1";
		$port = "5555";

		$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
		if ($socket === false) {
			echo "socket_create() failed: " . socket_strerror(socket_last_error()) . "\n";
		}

		$result = socket_connect($socket, $address, $port);
		if ($result === false) {
			echo "socket_connect() failed: ($result) " . socket_strerror(socket_last_error($socket)) . "\n";
		}

		socket_write($socket, $json, strlen($json));
		
		$result = socket_read($socket, 1024);

		socket_close($socket);

		return $result;
	}

	$showLoginForm = false;
	$showSuccess = false;
	$showFailure = false;
	$isApi = false;

	$pIp = $_SERVER[ 'REMOTE_ADDR' ];
	
	if( $_SERVER[ 'REQUEST_METHOD' ] == "POST" ) {

		if (array_key_exists("user", $_POST) 
			&& array_key_exists('pass', $_POST)
			&& array_key_exists('token', $_POST)
			&& array_key_exists('command', $_POST)
			&& array_key_exists('api', $_POST))
		{
			$pUser = $_POST[ 'user' ];
			$pPass = $_POST[ 'pass' ];
			$pToken = $_POST[ 'token' ];
			$pCommand = $_POST[ 'command' ];
			$pApi = $_POST[ 'api' ];
	
			if ($pApi == "true")
			{
				$isApi = true;
			}
	
			$jsonResponse = json_decode(tellLock($pCommand, $pUser, $pPass, $pToken, $pIp), true);
			if ($jsonResponse == null || !isset($jsonResponse['message']) || !isset($jsonResponse['code'])) {
				$showFailure = true;
				$failureMsg = 'Error parsing JSON response';
			} else {
				$failureMsg = $jsonResponse['message'];
				$code = $jsonResponse['code'];
				$showSuccess = ($code == 0);
				$showFailure = !$showSuccess;
			}
		} else {
			$failureMsg = 'Invalid Request';
			$showFailure = true;
		}

	} else {
		// This is done by apache mod_rewrite
		$pToken = $_GET[ 'token' ];
		$lToken = preg_replace( '/[^0-9a-fA-F]/i', "", $pToken );

		if(strlen($lToken) != 16) {
			$showFailure = true;
			$failureMsg = "Please provide Token";
		} else {
			$showLoginForm = true;
		}
	}
if ($isApi == false) {
?>
<!DOCTYPE html>
<html>

<head>
<title>Login</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">
</head>

<body>

	<style>
		* {
			font: normal 30px Arial,sans-serif;
		}
		body {
			background-color: #037;
			color: white;
			background-image: url('logo.svg' );
			background-repeat: repeat;
			background-size: 300%;
			background-position: -200px -100px;
		}
		form {
			position: relative;
			display: block;
			width: auto;
			text-align: center;
		}
		input {
			position: relative;
			display: block;
			width: auto;
			width: 100%;
		}
		button {
			width: 100%;
			margin-top: 40px;
		}
	</style>

	<?php if( $showLoginForm ): ?>

		<form name="login" method="post" action="/">
			<label for="user">User</label>
			<input id="user" type="text" name="user">

			<label for="pass">Pass</label>
			<input id="pass" type="password" name="pass">

			<input type="hidden" name="token" value="<?php echo $lToken;?>">
			<input type="hidden" name="api" value="false">

			<button name="command" value="unlock">Open</button>
			<hr/>
			<button name="command" value="lock">Lock</button>
		</form>

	<?php elseif( $showSuccess ): ?>

		<h1>Welcome Cpt. Cook</h1>

	<?php elseif( $showFailure ): ?>

		<h1>Something went wrong: <?php echo $failureMsg; ?></h1>

	<?php endif; ?>

</body>

</html>
<?php
} else {
	echo $code;
}
?>