from flask import Flask, render_template, request, session import secrets import os import requests app = Flask(__name__) app.secret_key = 'your_secret_key' # Secret key for session management # Function to combine secrets module and /dev/urandom for stronger randomness def generate_secure_seed(): # Generate a random value using secrets and urandom urandom_value = int.from_bytes(os.urandom(8), 'big') secure_value = secrets.randbits(64) combined_seed = urandom_value ^ secure_value # Combine randomness using XOR return combined_seed # Function to fetch random numbers from Random.org API def fetch_random_org_numbers(count, min_value, max_value): try: url = "https://www.random.org/integers/" params = { 'num': count, 'min': min_value, 'max': max_value, 'col': 1, 'base': 10, 'format': 'plain', 'rnd': 'new' } response = requests.get(url, params=params) if response.status_code == 200: numbers = [int(num) for num in response.text.strip().split()] return sorted(numbers) except Exception as e: print(f"Error fetching from Random.org: {e}") return None # Function to generate lottery numbers based on rules def generate_lottery_numbers(game_type, lines): results = [] for _ in range(lines): if game_type == 'euromillions': numbers = fetch_random_org_numbers(5, 1, 50) or sorted(secrets.SystemRandom().sample(range(1, 51), 5)) lucky_stars = fetch_random_org_numbers(2, 1, 12) or sorted(secrets.SystemRandom().sample(range(1, 13), 2)) results.append({'numbers': numbers, 'lucky_stars': lucky_stars}) elif game_type == 'lotto': numbers = fetch_random_org_numbers(6, 1, 47) or sorted(secrets.SystemRandom().sample(range(1, 48), 6)) results.append({'numbers': numbers}) elif game_type == 'eurodreams': numbers = fetch_random_org_numbers(6, 1, 40) or sorted(secrets.SystemRandom().sample(range(1, 41), 6)) dream_number = fetch_random_org_numbers(1, 1, 5) dream_number = dream_number[0] if dream_number else secrets.SystemRandom().randint(1, 5) results.append({'numbers': numbers, 'dream_number': dream_number}) else: return {'error': 'Invalid game type'} return results @app.route('/', methods=['GET', 'POST']) def index(): result = None game_type = session.get('game_type', 'euromillions') # Default to EuroMillions lines = session.get('lines', 1) # Default to 1 line if request.method == 'POST': game_type = request.form.get('game_type') lines = int(request.form.get('lines', 1)) session['game_type'] = game_type session['lines'] = lines result = generate_lottery_numbers(game_type, lines) return render_template('index.html', result=result, game_type=game_type, lines=lines) if __name__ == '__main__': app.run(debug=True)