templates_downloaddir = $(templatesdir)/download
templates_fireinfo_DATA = \
+ src/templates/fireinfo/admin.html \
src/templates/fireinfo/driver.html \
src/templates/fireinfo/index.html \
src/templates/fireinfo/i-use-1.png \
<div class="collapse navbar-collapse" id="navbar">
<ul class="navbar-nav ml-auto">
+ {% if current_user and current_user.is_staff() %}
+ <li class="nav-item">
+ <a class="nav-link {% if request.path.startswith("/admin") %}active{% end %}" href="/admin">
+ {{ _("Admin") }}
+ </a>
+ </li>
+ {% end %}
+
<li class="nav-item">
<a class="nav-link {% if request.path.startswith("/vendors") %}active{% end %}" href="/vendors">
{{ _("Vendors") }}
<div class="container">
<div class="row flex-lg-row-reverse">
<div class="col-12 col-lg-6 text-center text-lg-right">
- {% if not current_user and hostname in ("blog.ipfire.org", "nopaste.ipfire.org", "wiki.ipfire.org") %}
+ {% if not current_user and hostname in ("blog.ipfire.org", "fireinfo.ipfire.org", "nopaste.ipfire.org", "wiki.ipfire.org") %}
<a href="/login">{{ _("Login") }}</a>
{% elif current_user %}
<p class="mb-0">
--- /dev/null
+{% extends "../base.html" %}
+
+{% block title %}{{ _("Admin") }}{% end block %}
+
+{% block container %}
+ <section>
+ <div class="container">
+ <div class="row">
+ <div class="col col-lg-8">
+ <h1 class="display-2">{{ "{:,d}".format(count) }}</h1>
+
+ <p>
+ {{ _("Total amount of systems reporting back to Fireinfo") }}
+ </p>
+ </div>
+ </div>
+ </div>
+ </section>
+{% end block %}
self.add_handlers(r"fireinfo(\.dev)?\.ipfire\.org", [
(r"/", fireinfo.IndexHandler),
+ # Admin
+ (r"/admin", fireinfo.AdminIndexHandler),
+
# Vendors
(r"/vendors", fireinfo.VendorsHandler),
(r"/vendors/(pci|usb)/([0-9a-f]{4})", fireinfo.VendorHandler),
# Send profiles
(r"/send/([a-z0-9]+)", fireinfo.ProfileSendHandler),
- ])
+ ] + authentication_handlers)
# i-use.ipfire.org
self.add_handlers(r"i-use(\.dev)?\.ipfire\.org", [
return self.render_string("fireinfo/modules/table-devices-and-groups.html",
groups=groups)
+
+
+class AdminIndexHandler(BaseHandler):
+ @tornado.web.authenticated
+ def prepare(self):
+ if not self.current_user.is_staff():
+ raise tornado.web.HTTPError(401)
+
+ @tornado.web.authenticated
+ def get(self):
+ count = self.backend.fireinfo.get_profile_count()
+
+ self.render("fireinfo/admin.html", count=count)