Skip to content
Snippets Groups Projects
Commit ee099a22 authored by Christian Elberfeld's avatar Christian Elberfeld
Browse files

add rss feed

parent e46182dc
No related branches found
No related tags found
No related merge requests found
from flask import Flask, render_template, jsonify from flask import Flask, render_template, jsonify, Response, url_for
import requests import requests
import json import json
from datetime import datetime from datetime import datetime
...@@ -304,6 +304,43 @@ swaggerui_blueprint = get_swaggerui_blueprint( ...@@ -304,6 +304,43 @@ swaggerui_blueprint = get_swaggerui_blueprint(
) )
app.register_blueprint(swaggerui_blueprint, url_prefix='/swagger') app.register_blueprint(swaggerui_blueprint, url_prefix='/swagger')
@app.route('/rss')
def rss_feed():
"""RSS Feed für aktuelle DHCP-Leases"""
kea_client = KeaDHCPClient(KEA_CONTROL_AGENT_URL, KEA_SERVICE, KEA_USERNAME, KEA_PASSWORD)
lease_response = kea_client.get_all_leases()
leases = []
if lease_response and lease_response[0].get("result") == 0:
lease_data = lease_response[0].get("arguments", {})
leases = lease_data.get("leases", [])
now = datetime.now().strftime('%a, %d %b %Y %H:%M:%S +0000')
rss_items = []
for lease in leases:
hostname = lease.get('hostname', 'N/A')
ip = lease.get('ip-address', 'N/A')
mac = lease.get('hw-address', 'N/A')
start = format_timestamp(lease.get('cltt', 0))
end = format_timestamp(lease.get('cltt', 0) + lease.get('valid_lft', 0))
rss_items.append(f"""
<item>
<title>DHCP Lease: {hostname} ({ip})</title>
<description>MAC: {mac}, Lease Start: {start}, Lease Ende: {end}</description>
<pubDate>{start}</pubDate>
<guid>{ip}-{mac}</guid>
</item>
""")
rss = f"""<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
<channel>
<title>Warpzone DHCP Leases</title>
<link>{url_for('index', _external=True)}</link>
<description>Aktuelle DHCP-Leases</description>
<lastBuildDate>{now}</lastBuildDate>
{''.join(rss_items)}
</channel>
</rss>"""
return Response(rss, mimetype='application/rss+xml')
if __name__ == '__main__': if __name__ == '__main__':
# Konfiguration ausgeben (ohne Passwort) # Konfiguration ausgeben (ohne Passwort)
print(f"🚀 Starte Kea DHCP Web Interface") print(f"🚀 Starte Kea DHCP Web Interface")
......
...@@ -428,7 +428,6 @@ ...@@ -428,7 +428,6 @@
<button onclick="toggleDarkMode()" style="float:right;margin-top:-40px;background:#444;color:#fff;border:none;padding:6px 12px;border-radius:4px;cursor:pointer;">🌙 Dark Mode</button> <button onclick="toggleDarkMode()" style="float:right;margin-top:-40px;background:#444;color:#fff;border:none;padding:6px 12px;border-radius:4px;cursor:pointer;">🌙 Dark Mode</button>
<button onclick="clearDarkModePreference()" style="float:right;margin-top:-40px;margin-right:110px;background:#888;color:#fff;border:none;padding:6px 12px;border-radius:4px;cursor:pointer;">🗑️ Reset Dark Mode</button> <button onclick="clearDarkModePreference()" style="float:right;margin-top:-40px;margin-right:110px;background:#888;color:#fff;border:none;padding:6px 12px;border-radius:4px;cursor:pointer;">🗑️ Reset Dark Mode</button>
</div> </div>
<div class="connection-status"> <div class="connection-status">
<div> <div>
<strong>Verbindungsstatus:</strong> <strong>Verbindungsstatus:</strong>
...@@ -441,6 +440,7 @@ ...@@ -441,6 +440,7 @@
<span>🔄 Auto-Refresh: {{ auto_refresh }} Sekunden</span> <span>🔄 Auto-Refresh: {{ auto_refresh }} Sekunden</span>
<span> <span>
<a href="/swagger/" target="_blank" style="color:#007bff;text-decoration:underline;">🧩 Swagger API</a> <a href="/swagger/" target="_blank" style="color:#007bff;text-decoration:underline;">🧩 Swagger API</a>
<a href="/rss" style="margin-left:12px;vertical-align:middle;">🧩 RSS</a>
</span> </span>
</div> </div>
</div> </div>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment