<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>[{{total_alerts}}] Super(Vision)</title> <link rel="stylesheet" href="/css/bootstrap.min.css"> <link rel="stylesheet" href="/css/octicons.min.css"> <link rel="stylesheet" href="/css/offline.css"> <script src="/js/jquery-3.4.1.slim.min.js"></script> <script type="text/javascript" src="/js/dynafav-1.0.js"></script> <script src="/js/popper.min.js"></script> <script src="/js/bootstrap.min.js"></script> <script src="/js/offline.min.js" ></script> <style type="text/css"> a { color: #DF7401; font-weight: bolder; } a:hover { text-decoration: none; color: #DF7401; } body { background-color: #333; font-weight: bolder; } .disaster { background-color:#D30801; color: #FFFFFF !important; } .disaster a { color: white; } .table td, .table th { padding: 1px; !important } .image-container { display: flex; justify-content: center; align-items: center; padding-top: 15%; } .btn-group-sm>.btn, .btn-sm { padding: .08rem .5rem; } </style> </head> <body> <nav class="navbar navbar-expand-md navbar-dark bg-dark"> <a class="navbar-brand" href="/">[{{total_alerts}}] Super(Vision)</a> <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation"> <span class="navbar-toggler-icon"></span> </button> <div class="collapse navbar-collapse navbar-sm" id="navbarSupportedContent"> <ul class="navbar-nav mr-auto"> {% for hostgroup in hostgroups %} <li class='nav-item'><a class='nav-link' href='/{{hostgroup}}'>{{hostgroup}}</a></li> {%endfor%} </ul> <button class="btn btn-outline-secondary" type="button" data-toggle="collapse" data-target="#form-msg" aria-expanded="false" aria-controls="form-message"><span class='octicon octicon-comment'></span></button> </div> </nav> <div class="row-fluid"> <div class="container"> <div class="collapse" id="form-msg"> <div class="card card-body"> <form action="/post" method="post" accept-charset="utf-8" enctype="application/x-www-form-urlencoded"> <div class="form-row"> <div class="col"> <input type="text" class="form-control" placeholder="Your name" name="name" required> </div> <div class="col"> <input type="text" class="form-control" placeholder="Message" name="msg" required> <input type="text" class="form-control" name="url" id="url" hidden readonly> </div> <div class="col"> <select class="form-control" name="lvl"> <option value="info">Info</option> <option value="warning">Warning</option> <option value="danger">Disaster</option> </select> </div> {% include "form.html" %} <div class="col"> <button id="publish" name="save" class="btn btn-secondary">Publish <span class="octicon octicon-mail"></span></button> </div> </div> </form> </div> </div> </div> </div> <div class="row-fluid"> <div class="container-fluid"> {% if check_servers %} <table class='table table-borderless table-sm'> {% for ip in check_servers%} {% if check_servers[ip] != 0 %} <tr class='bg-danger'> <td class='text-center align-left'> <span class='octicon octicon-alert'></span> Zabbix Server: {{ip}} seems unreachable! <span class='octicon octicon-alert'></span> </td> </tr> {%endif%} {%endfor%} </table> {%endif%} {% if notes %} <table class='table table-borderless'> {% for note in notes %} <tr class='bg-{{note["lvl"]}}'><td class='text-left'><span class='octicon octicon-clock'></span> {{note["date"]}}</td><td class='text-center'> {{note["msg"]}}</td><td class='text-right'><span class='octicon octicon-hubot'></span><i> (by {{note["name"]}})</i></td><td class='text-right'><form action='/del' method='post' accept-charset='utf-8' enctype='application/x-www-form-urlencoded'><input type='text' class='form-control url_note' name='url' hidden readonly><input type='text' name='note_id' value='{{note["ts"]}}' readonly hidden><button type='submit' class='btn btn-outline-light btn-sm' id='del_note' ><span class='octicon octicon-trashcan'></span></button></form></td></tr>" {% endfor %} </table> {% endif %} <table class="table table-dark table-sm alerts"> {% if alerts|length > 0 %} {% for alert in alerts %} {% if alert["priority"] == '5' %} <tr class="disaster"> {% else %} <tr> {%endif%} <td> <span class='badge badge-pill' style='background-color:{{alert["color"]}}'>{{alert["hostgroup"]}}</span> </td> <td>{{alert["host"]}}</td> <td> <a href='{{zabbix_url}}/zabbix.php?action=problem.view&filter_set=1&filter_triggerids%5B%5D={{alert["triggerid"]}}' target='_blank' "+css_class+">{{alert["description"]}}</a> </td> {% if alert["priority"] == '1' %} <td><span class="badge badge-pill badge-info">1</span></td> {% elif alert["priority"] == '2' %} <td><span class="badge badge-pill badge-primary">2</span></td> {% elif alert["priority"] == '3' %} <td><span class="badge badge-pill badge-warning">3</span></td> {% elif alert["priority"] == '4' %} <td><span class="badge badge-pill badge-danger">4</span></td> {% elif alert["priority"] == '5' %} <td><span class="octicon octicon-flame"> </span></td> {% endif %} <td> <span class='badge badge-pill badge-light'>{{alert["since"]}}</span> </td> </tr> {%endfor%} {%else%} <div class="container-fluid image-container"><img src="/images/zabbix_logo_500x131.png" width="30%"/></div> {%endif%} </table> </div> </div> </body> <script type="text/javascript"> var refresh; $(document).ready(function() { {% if tv_mode == true %} $('nav').hide(); $('form').hide(); {% else %} $('nav').show(); $('form').show(); {% endif %} $('#url').val($(location).attr('href')); $('.url_note').val($(location).attr('href')); $('#del_note').click(function(e) { if(!confirm("This note will be deleted. Are you sure?")) { e.preventDefault(); } }); function reload_page() { if(Offline.state != 'up') { clearInterval(refresh); } else { var refresh; location.reload(); } } refresh = setInterval(reload_page,30000); Offline.options = { // to check the connection status immediatly on page load. checkOnLoad: true, // to monitor AJAX requests to check connection. interceptRequests: true, // to automatically retest periodically when the connection is down (set to false to disable). reconnect: { // delay time in seconds to wait before rechecking. initialDelay: 3, // wait time in seconds between retries. delay: 10 }, // to store and attempt to remake requests which failed while the connection was down. requests: true }; }); </script>