from flask import Flask, request, render_template, make_response
import pickle
import base64
import os

app = Flask(__name__)

FLAG = os.environ.get('FLAG', 'DASCTF{test12345}')

@app.route('/')
def index():
    return render_template('index.html')

@app.route('/order', methods=['GET'])
def order():
    order_cookie = request.cookies.get('order', '')
    
    if order_cookie:
        try:
            order_data = base64.b64decode(order_cookie)
            order_obj = pickle.loads(order_data)
            return f"<h1>Your order: {order_obj}</h1>"
        except Exception as e:
            return f"<h1>Error processing order: {str(e)}</h1>"
    
    return "<h1>No order found</h1>"

@app.route('/checkout', methods=['POST'])
def checkout():
    item = request.form.get('item', '')
    if item:
        pickled_item = pickle.dumps(item)
        encoded_item = base64.b64encode(pickled_item).decode()
        
        response = make_response(f"<h1>Added {item} to cart</h1>")
        response.set_cookie('cart', encoded_item)
        return response
    
    return "<h1>No item selected</h1>"

@app.route('/flag', methods=['GET'])
def get_flag():
    with open('/flag.txt', 'r') as f:
        flag = f.read().strip()
    return f"<h1>Flag: {flag}</h1>"

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000)