#!/usr/bin/env python3
"""
Simple DDNS Dashboard for Home Server
Elegant web interface showing DDNS status
"""
import json
import subprocess
from flask import Flask, jsonify, render_template_string
from datetime import datetime
app = Flask(__name__)
# Simple HTML template
DASHBOARD_HTML = """
DDNS Status - SamCloud
📡
wg.samcloud.ca
Loading...
—
Auto-refreshes every 30 seconds
"""
def get_ddns_status():
"""Get DDNS status from monitor script"""
try:
result = subprocess.run([
'python3', '/Volumes/SamMgmt/CF DDClient/ddns_monitor.py', '--json'
], capture_output=True, text=True, timeout=15)
if result.returncode == 0:
return json.loads(result.stdout)
else:
return {
"status": "error",
"message": "Monitor script failed",
"timestamp": datetime.now().isoformat()
}
except Exception as e:
return {
"status": "error",
"message": f"Error: {str(e)}",
"timestamp": datetime.now().isoformat()
}
@app.route('/')
def dashboard():
"""Main dashboard page"""
return render_template_string(DASHBOARD_HTML)
@app.route('/api/status')
def api_status():
"""API endpoint for status data"""
return jsonify(get_ddns_status())
@app.route('/health')
def health():
"""Health check for monitoring"""
return {'status': 'ok', 'service': 'ddns-dashboard'}
if __name__ == '__main__':
print("🌐 Starting DDNS Dashboard on http://localhost:54821")
print(" Perfect for your home server dashboard!")
app.run(host='0.0.0.0', port=54821, debug=False)