mirror of
				https://github.com/ShaYmez/FreeSTAR-Status-Engine.git
				synced 2025-11-04 04:30:22 -05:00 
			
		
		
		
	
		
			
	
	
		
			82 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
		
		
			
		
	
	
			82 lines
		
	
	
		
			2.3 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          
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								}
							 |