From cddfe1b9049d48695bcb39d79fe168aea877b272 Mon Sep 17 00:00:00 2001 From: flashwave Date: Sat, 25 Feb 2023 21:01:13 +0000 Subject: [PATCH] Use new SharpChat authentication format. --- src/ChatAuth.php | 61 +++++++++++++++++++++--------------------------- 1 file changed, 27 insertions(+), 34 deletions(-) diff --git a/src/ChatAuth.php b/src/ChatAuth.php index 3e21dbb..d61c6f0 100644 --- a/src/ChatAuth.php +++ b/src/ChatAuth.php @@ -7,41 +7,34 @@ use Index\Data\IDbConnection; final class ChatAuth { public static function attempt(IDbConnection $db, string $endPoint, string $secret, string $cookie): object { if(!empty($cookie)) { - $decoded = str_pad(base64_decode(str_pad(strtr($cookie, '-_', '+/'), strlen($cookie) % 4, '=', STR_PAD_RIGHT)), 37, "\0"); - $unpacked = unpack('Cversion/Nuser/H*token', $decoded); + $params = [ + 'method' => 'Misuzu', + 'token' => $cookie, + 'ipaddr' => $_SERVER['REMOTE_ADDR'], + ]; + $loginSignature = hash_hmac('sha256', "verify#{$params['method']}#{$params['token']}#{$params['ipaddr']}", $secret); - if(isset($unpacked['version']) && $unpacked['version'] === 1 - && isset($unpacked['user']) && $unpacked['user'] > 0) { - $loginRequest = [ - 'user_id' => $unpacked['user'], - 'token' => 'SESS:' . $cookie, - 'ip' => $_SERVER['REMOTE_ADDR'], - ]; - $loginSignature = hash_hmac('sha256', implode('#', $loginRequest), $secret); - - $login = curl_init($endPoint); - curl_setopt_array($login, [ - CURLOPT_AUTOREFERER => false, - CURLOPT_FAILONERROR => false, - CURLOPT_FOLLOWLOCATION => true, - CURLOPT_HEADER => false, - CURLOPT_POST => true, - CURLOPT_POSTFIELDS => json_encode($loginRequest), - CURLOPT_RETURNTRANSFER => true, - CURLOPT_TCP_FASTOPEN => true, - CURLOPT_CONNECTTIMEOUT => 2, - CURLOPT_MAXREDIRS => 2, - CURLOPT_PROTOCOLS => CURLPROTO_HTTPS, - CURLOPT_TIMEOUT => 5, - CURLOPT_USERAGENT => 'mc.flashii.net', - CURLOPT_HTTPHEADER => [ - 'Content-Type: application/json', - 'X-SharpChat-Signature: ' . $loginSignature, - ], - ]); - $userInfo = json_decode(curl_exec($login)); - curl_close($login); - } + $login = curl_init($endPoint); + curl_setopt_array($login, [ + CURLOPT_AUTOREFERER => false, + CURLOPT_FAILONERROR => false, + CURLOPT_FOLLOWLOCATION => true, + CURLOPT_HEADER => false, + CURLOPT_POST => true, + CURLOPT_POSTFIELDS => $params, + CURLOPT_RETURNTRANSFER => true, + CURLOPT_TCP_FASTOPEN => true, + CURLOPT_CONNECTTIMEOUT => 2, + CURLOPT_MAXREDIRS => 2, + CURLOPT_PROTOCOLS => CURLPROTO_HTTPS, + CURLOPT_TIMEOUT => 5, + CURLOPT_USERAGENT => 'mc.flashii.net', + CURLOPT_HTTPHEADER => [ + 'X-SharpChat-Signature: ' . $loginSignature, + ], + ]); + $userInfo = json_decode(curl_exec($login)); + curl_close($login); } if(empty($userInfo->success)) {