mirror of
				https://github.com/ShaYmez/FreeSTAR-Status-Engine.git
				synced 2025-11-03 20:20:20 -05:00 
			
		
		
		
	
		
			
				
	
	
		
			86 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			86 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
class Telegram
 | 
						|
{
 | 
						|
 | 
						|
  /**
 | 
						|
   * Get telegram user data
 | 
						|
   * 
 | 
						|
   * Gets telegram user data from cookie and save it to array
 | 
						|
   * 
 | 
						|
   * @return void
 | 
						|
   *
 | 
						|
   * @author Telegram
 | 
						|
   *
 | 
						|
   *
 | 
						|
   * @since 0.1
 | 
						|
   */
 | 
						|
  function getTelegramUserData()
 | 
						|
  {
 | 
						|
    if (isset($_COOKIE['tg_user'])) {
 | 
						|
      $auth_data_json = urldecode($_COOKIE['tg_user']);
 | 
						|
      $auth_data = json_decode($auth_data_json, true);
 | 
						|
      return $auth_data;
 | 
						|
    }
 | 
						|
    return false;
 | 
						|
  }
 | 
						|
  /** 
 | 
						|
   * Check if data is from telegram
 | 
						|
   * 
 | 
						|
   * This checks if the data provides is from telegram. It includes a Fix for firefox
 | 
						|
   * 
 | 
						|
   * @param mixed $auth_data The Authentication Data
 | 
						|
   * 
 | 
						|
   * @return $auth_data
 | 
						|
   * 
 | 
						|
   */
 | 
						|
  function checkTelegramAuthorization($auth_data)
 | 
						|
  {
 | 
						|
    $check_hash = $auth_data['hash'];
 | 
						|
    unset($auth_data['hash']);
 | 
						|
    $data_check_arr = [];
 | 
						|
    foreach ($auth_data as $key => $value) {
 | 
						|
      // $data_check_arr[] = $key . '=' . $value;
 | 
						|
      $data_check_arr[] = $key . '=' . str_replace('https:/t', 'https://t', $value);
 | 
						|
    }
 | 
						|
    sort($data_check_arr);
 | 
						|
    $data_check_string = implode("\n", $data_check_arr);
 | 
						|
    $secret_key = hash('sha256', TG_BOT_API_TOKEN, true);
 | 
						|
    $hash = hash_hmac('sha256', $data_check_string, $secret_key);
 | 
						|
    if (strcmp($hash, $check_hash) !== 0) {
 | 
						|
      throw new Exception('Data is NOT from Telegram');
 | 
						|
    }
 | 
						|
    if ((time() - $auth_data['auth_date']) > 86400) {
 | 
						|
      throw new Exception('Data is outdated');
 | 
						|
    }
 | 
						|
    return $auth_data;
 | 
						|
  }
 | 
						|
 | 
						|
 | 
						|
  /**
 | 
						|
   * Save telegram userdata
 | 
						|
   * 
 | 
						|
   * Save the telegram user data in a cookie
 | 
						|
   *  @return void
 | 
						|
   */
 | 
						|
  function saveTelegramUserData($auth_data)
 | 
						|
  {
 | 
						|
    $auth_data_json = json_encode($auth_data);
 | 
						|
    setcookie('tg_user', $auth_data_json);
 | 
						|
  }
 | 
						|
 | 
						|
  function get_telegram_subscriberid($user)
 | 
						|
  {
 | 
						|
    global $mysqli;
 | 
						|
    $stmt = $mysqli->prepare("SELECT subscriberID FROM subscribers WHERE typeID=1 AND userID LIKE ? LIMIT 1");
 | 
						|
    $stmt->bind_param("s", $user);
 | 
						|
    $stmt->execute();
 | 
						|
    $result = $stmt->get_result();
 | 
						|
    if ($result->num_rows) {
 | 
						|
      $row = $result->fetch_assoc();
 | 
						|
      $subscriberID = $row['subscriberID'];
 | 
						|
      return $subscriberID;
 | 
						|
    }
 | 
						|
    return null;  // Return null on false          
 | 
						|
  }
 | 
						|
}
 |