#!/usr/bin/env python3

import subprocess
from flask import Flask, render_template_string

app = Flask(__name__)

# Lista med diskar som ska kontrolleras
mount_points = [
    "//192.168.1.251/disk3",
    "//192.168.1.251/disk4",
    "//192.168.1.251/Disk5",
    "//192.168.1.251/webbackup",
    "//192.168.1.251/webbackup",
    "//192.168.1.28/webbserver"
]

def check_disk(mount_point):
    try:
        result = subprocess.run(['df', '-hT'], stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True)
        if result.returncode == 0:
            output_lines = result.stdout.splitlines()
            mounted_disks = []
            for line in output_lines[1:]:
                if mount_point in line:
                    mounted_disks.append(line)
                    
            return mounted_disks, "Monterad" if len(mounted_disks) > 0 else "Ej monterad"
        elif "Host is down" in result.stderr:
            return [], "Host is down"
        else:
            return [], "Okänt fel"
    except Exception as e:
        print(f"Fel vid kontroll av disk: {e}")
        return [], "Okänt fel"

@app.route('/')
def index():
    results = []
    any_not_mounted = False
    any_host_down = False

    # Kontrollera varje monteringspunkt
    for mount_point in mount_points:
        mounted, status_message = check_disk(mount_point)
        if mounted:
            results.append(f"<tr><td>{mount_point}</td><td><span style='color: green;'>Monterad</span></td></tr>")
        else:
            if "Ej monterad" in status_message:
                any_not_mounted = True
            elif "Host is down" in status_message:
                any_host_down = True
            results.append(f"<tr><td>{mount_point}</td><td><span style='color: red;'>{status_message}</span></td></tr>")

    # HTML-struktur för att visa resultatet på webbsidan
    body = """
    <html>
    <head>
        <style>
            table {{
                width: 800px;
                border-collapse: collapse;
            }}
            th, td {{
                padding: 10px;
                text-align: left;
                border: 1px solid black;
            }}
            th:nth-child(1) {{
                width: 400px;
            }}
            th:nth-child(2) {{
                width: 100px;
            }}
        </style>
    </head>
    <body>
        <h2>Status för monteringspunkter</h2>
        <table>
            <tr>
                <th>Monteringspunkt</th>
                <th>Status</th>
            </tr>
            {}
        </table>
    </body>
    </html>
    """.format("".join(results))

    return render_template_string(body)

if __name__ == '__main__':
    app.run(debug=True, host='0.0.0.0')
