mirror of
				https://github.com/ShaYmez/FreeSTAR-Status-Engine.git
				synced 2025-10-30 19:40:20 -04: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          
 | |
|   }
 | |
| }
 |