cat > /usr/local/lib/python3.12/dist-packages/serverhello.py << 'EOF'
from flask import Flask
from urllib.parse import urljoin
import requests

app = Flask(__name__)

# Metadata URL and token endpoint for IMDSv2
metadata_url = "http://169.254.169.254/latest/meta-data/"
token_url = "http://169.254.169.254/latest/api/token"

# Function to get the token for IMDSv2
def get_token():
    headers = {'X-aws-ec2-metadata-token-ttl-seconds': '21600'}
    token_response = requests.put(token_url, headers=headers)
    return token_response.text

# Function to get metadata using the token
def get_metadata(path, token):
    headers = {'X-aws-ec2-metadata-token': token}
    response = requests.get(urljoin(metadata_url, path), headers=headers)
    return response.text

@app.route("/")
def serverhello():
    token = get_token()

    ipv4 = get_metadata("public-ipv4", token)
    hostname = get_metadata("public-hostname", token)

    return "Hello from " + hostname + " (" + ipv4 + ")\n"

if __name__ == "__main__":
    app.run(host="0.0.0.0", port=80)
EOF
