|
from flask import Flask, jsonify, render_template_string, request |
|
|
|
app = Flask(__name__) |
|
|
|
@app.route('/') |
|
def home(): |
|
return render_template_string(""" |
|
<!DOCTYPE html> |
|
<html> |
|
<head> |
|
<title>Flask on Tailscale</title> |
|
<style> |
|
body { |
|
font-family: Arial, sans-serif; |
|
text-align: center; |
|
margin-top: 100px; |
|
background-color: #f8f9fa; |
|
} |
|
h1 { color: #2c3e50; } |
|
p { color: #555; } |
|
a { color: #007bff; } |
|
</style> |
|
</head> |
|
<body> |
|
<h1>Hello from Flask over Tailscale!</h1> |
|
<p>This is a secure Flask app behind a Tailscale network.</p> |
|
<p>Try the <a href="/api/hello">JSON Hello</a> or POST to <code>/api/echo</code>.</p> |
|
</body> |
|
</html> |
|
""") |
|
|
|
@app.route('/api/hello', methods=['GET']) |
|
def api_hello(): |
|
return jsonify({ |
|
"message": "Hello from the Flask API!", |
|
"status": "success" |
|
}) |
|
|
|
@app.route('/api/echo', methods=['POST']) |
|
def api_echo(): |
|
data = request.get_json() |
|
if not data: |
|
return jsonify({"error": "No JSON received"}), 400 |
|
return jsonify({ |
|
"received": data, |
|
"status": "ok" |
|
}) |
|
|
|
if __name__ == '__main__': |
|
app.run(host='0.0.0.0', port=7860) |