mirror of
				https://github.com/ShaYmez/FreeSTAR-Status-Engine.git
				synced 2025-10-31 12:00:19 -04:00 
			
		
		
		
	Moved, renamed and modified Telegram related files.
- Made functions from ./telegram.php into a class and moved to classes/telegram.php - Renamed check.php to telegram_check.php to make it easier to understand what the file belongs to. - SESSIONS used to control if user is logged on or not - Telegram users will be identified as typeID = 2 in the subscribers table.
This commit is contained in:
		
							parent
							
								
									cf1f00e9b5
								
							
						
					
					
						commit
						b5c5a2c8cf
					
				
							
								
								
									
										12
									
								
								check.php
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								check.php
									
									
									
									
									
								
							| @ -1,12 +0,0 @@ | ||||
| <?php | ||||
| require_once("config.php"); | ||||
| require_once("telegram.php"); | ||||
| 
 | ||||
| try { | ||||
| 	$auth_data = checkTelegramAuthorization($_GET); | ||||
| 	saveTelegramUserData($auth_data); | ||||
|   } catch (Exception $e) { | ||||
| 	die ($e->getMessage()); | ||||
|   } | ||||
|   header('Location: index.php'); | ||||
|   ?>
 | ||||
							
								
								
									
										82
									
								
								classes/telegram.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										82
									
								
								classes/telegram.php
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,82 @@ | ||||
| <?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          
 | ||||
|     } | ||||
| } | ||||
							
								
								
									
										63
									
								
								telegram.php
									
									
									
									
									
								
							
							
						
						
									
										63
									
								
								telegram.php
									
									
									
									
									
								
							| @ -1,63 +0,0 @@ | ||||
| <?php | ||||
| /** | ||||
|  * 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); | ||||
|   } | ||||
							
								
								
									
										33
									
								
								telegram_check.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								telegram_check.php
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,33 @@ | ||||
| <?php | ||||
| require_once ("config.php"); | ||||
| require_once ("classes/telegram.php"); | ||||
| require_once ("classes/subscriber.php"); | ||||
| 
 | ||||
| $telegram   = new Telegram(); | ||||
| $subscriber = new Subscriber(); | ||||
| 
 | ||||
| try { | ||||
|     $auth_data = $telegram->checkTelegramAuthorization($_GET); | ||||
|     $telegram->saveTelegramUserData($auth_data); | ||||
| } catch (Exception $e) { | ||||
|     die($e->getMessage()); | ||||
| } | ||||
| 
 | ||||
| // Check if user is registered in DB
 | ||||
| $subscriber->firstname = $auth_data['first_name']; | ||||
| $subscriber->lastname  = $auth_data['last_name']; | ||||
| $subscriber->typeID    = 1; | ||||
| $subscriber->userID    = $auth_data['id']; | ||||
| $subscriber->active    = 1; // Telegram user should always be active if they can be validated
 | ||||
| 
 | ||||
| $subscriber_id  = $subscriber->get_subscriber_by_userid(true); // If user does not exists, create it
 | ||||
| $subscriber->id = $subscriber_id; | ||||
| 
 | ||||
| // make sure we don't have a logged in email subscriber
 | ||||
| $subscriber->set_logged_in(); | ||||
| //$_SESSION['subscriber_valid'] = true;
 | ||||
| //$_SESSION['subscriber_typeid'] = 1;
 | ||||
| //$_SESSION['subscriber_userid'] = $auth_data['id'];
 | ||||
| //$_SESSION['subscriber_id'] = $subscriber_id;
 | ||||
| 
 | ||||
| header('Location: subscriptions.php'); | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user