diff options
Diffstat (limited to 'online/logout')
-rw-r--r-- | online/logout/confirm/index.php | 28 | ||||
-rw-r--r-- | online/logout/index.php | 85 |
2 files changed, 113 insertions, 0 deletions
diff --git a/online/logout/confirm/index.php b/online/logout/confirm/index.php new file mode 100644 index 0000000..36ecda6 --- /dev/null +++ b/online/logout/confirm/index.php @@ -0,0 +1,28 @@ +<?php
+
+if (!isset($_GET['_'])) {
+ header("Location: /online");
+ die();
+} else if (!ctype_alnum($_GET['_'])) {
+ header("Location: /online");
+ die();
+}
+
+if (!isset($_COOKIE["kartik_online_token"])) {
+ header("Location: https://jetbrains.minteck.ro.lt:1024/hub/hub/api/rest/oauth2/auth?client_id=2d3ca3a8-38b7-4193-990a-a9454bb8d44c&response_type=code&redirect_uri=https://kartik.hopto.org/online/callback_ig&scope=hub&request_credentials=default&access_type=offline");
+ die();
+} else if (ctype_xdigit($_COOKIE["kartik_online_token"]) && file_exists($_SERVER['DOCUMENT_ROOT'] . "/online/private/tokens/" . $_COOKIE['kartik_online_token'])) {
+ $_DATA = json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/online/private/tokens/" . $_COOKIE['kartik_online_token']), true);
+} else {
+ header("Location: https://jetbrains.minteck.ro.lt:1024/hub/hub/api/rest/oauth2/auth?client_id=2d3ca3a8-38b7-4193-990a-a9454bb8d44c&response_type=code&redirect_uri=https://kartik.hopto.org/online/callback_ig&scope=hub&request_credentials=default&access_type=offline");
+ die();
+}
+
+foreach (scandir($_SERVER['DOCUMENT_ROOT'] . "/online/private/gametokens") as $token) {
+ if (trim($token) !== "." && trim($token) !== ".." && json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/online/private/gametokens/" . $token), true)["id"] === $_DATA["id"] && substr($token, 0, strlen($_GET['_'])) === $_GET['_']) {
+ unlink($_SERVER['DOCUMENT_ROOT'] . "/online/private/gametokens/" . $token);
+ }
+}
+
+header("Location: /online");
+die();
\ No newline at end of file diff --git a/online/logout/index.php b/online/logout/index.php new file mode 100644 index 0000000..294280a --- /dev/null +++ b/online/logout/index.php @@ -0,0 +1,85 @@ +<?php
+
+require_once $_SERVER['DOCUMENT_ROOT'] . "/telemetry/private/dom.php";
+
+if (!isset($_GET['_'])) {
+ header("Location: /online");
+ die();
+} else if (!ctype_alnum($_GET['_'])) {
+ header("Location: /online");
+ die();
+}
+
+if (!isset($_COOKIE["kartik_online_token"])) {
+ header("Location: https://jetbrains.minteck.ro.lt:1024/hub/hub/api/rest/oauth2/auth?client_id=2d3ca3a8-38b7-4193-990a-a9454bb8d44c&response_type=code&redirect_uri=https://kartik.hopto.org/online/callback_ig&scope=hub&request_credentials=default&access_type=offline");
+ die();
+} else if (ctype_xdigit($_COOKIE["kartik_online_token"]) && file_exists($_SERVER['DOCUMENT_ROOT'] . "/online/private/tokens/" . $_COOKIE['kartik_online_token'])) {
+ $_DATA = json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/online/private/tokens/" . $_COOKIE['kartik_online_token']), true);
+} else {
+ header("Location: https://jetbrains.minteck.ro.lt:1024/hub/hub/api/rest/oauth2/auth?client_id=2d3ca3a8-38b7-4193-990a-a9454bb8d44c&response_type=code&redirect_uri=https://kartik.hopto.org/online/callback_ig&scope=hub&request_credentials=default&access_type=offline");
+ die();
+}
+
+function l($fr, $en) {
+ if (isset($_GET['lang'])) {
+ if ($_GET['lang'] == "en") {
+ $_SERVER['HTTP_ACCEPT_LANGUAGE'] = "en";
+ } else if ($_GET['lang'] == "fr") {
+ $_SERVER['HTTP_ACCEPT_LANGUAGE'] = "fr";
+ }
+ }
+ if (substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2) == "fr") {
+ return $fr;
+ } else {
+ return $en;
+ }
+}
+
+?>
+<!DOCTYPE html>
+<html lang="en" style="height:100%;">
+<head>
+ <meta charset="UTF-8">
+ <title>Kartik Online</title>
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+ <link rel="icon" href="/static/favicon.png">
+ <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
+ <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
+ <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.0/umd/popper.min.js"></script>
+ <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>
+ <link rel="stylesheet" href="/appsicons.css">
+</head>
+<body style="height:100%;">
+
+<nav class="navbar navbar-expand-sm bg-dark navbar-dark fixed-top">
+
+ <a class="navbar-brand" href="/">
+ <img src="/static/logo.png" alt="Kartik" style="height:32px;"><span style="vertical-align: middle;font-size: 14px;">Online</span>
+ </a>
+
+ <div class="collapse navbar-collapse" id="collapsibleNavbar">
+ <ul class="navbar-nav">
+ <li class="nav-item">
+ <a class="nav-link" href="/">← <?= l("Retourner au site de Kartik", "Go back to Kartik website") ?></a>
+ </li>
+ <?php require_once $_SERVER['DOCUMENT_ROOT'] . "/apps.php"; ?>
+ </ul>
+ </div>
+</nav>
+
+<div id="separator" style="margin-top:90px;"></div>
+
+<div class="container" style="margin-top:25px;">
+ <h2 style="text-align: center;"><?= l("Déconnecter la session", "Logout session") ?> <code><?= substr($_GET['_'], 0, 8) ?></code> <?= l("de Kartik", "from Kartik") ?></h2>
+ <h4 style="text-align: center;"><?= l("Vous êtes connecté à cette session dans votre copie locale de Kartik. Si vous pensez qu'elle a été compromise ou que vous n'en avez plus la nécessité, vous pouvez déconnecter cette session.", "You are logged into this session on your local copy of Kartik. If you think it has been compromised or you don't need it anymore, you can safely logout this session.") ?></h4>
+ <h4 style="text-align: center;"><?= l("Après vous être déconnecté, la copie de Kartik associée à cette session ne pourra plus utiliser les services Kartik Online.", "After being disconnected, the copy of Kartik associated to this session won't be able to use the Kartik Online services anymore.") ?></h4>
+ <br>
+ <p style="text-align:center;" class="btn-group container">
+ <a class="btn btn-success" href="/online/logout/confirm/?_=<?= $_GET['_'] ?>"><?= l("Continuer", "Continue") ?></a>
+ <a class="btn btn-danger" href="/online"><?= l("Annuler", "Cancel") ?></a>
+ </p>
+</div>
+
+</body>
+</html>
+
|