4 <title>{{ hostname }} - {% block title %}{{ _(
"No title given") }}{% end block %}
</title>
5 <meta http-equiv=
"content-type" content=
"text/html; charset=utf-8" />
6 <meta name=
"author" content=
"IPFire.org - IPFire Development Team" />
8 <meta name=
"keywords" content=
"Linux, Firewall, IPFire, Security, IPCop, Open Source, Free, ARM, VPN, Proxy, IDS, IPS" />
10 <link rel=
"icon" sizes=
"192x192" href=
"{{ static_url("img/apple-touch-icon-
192x192-precomposed.png
") }}">
11 {% for res in (
"72x72",
"76x76",
"120x120",
"144x144",
"152x152",
"180x180") %}
12 <link rel=
"apple-touch-icon-precomposed" sizes=
"{{ res }}" href=
"{{ static_url("img/apple-touch-icon-%s-precomposed.png
" % res )}}">
14 <link rel=
"apple-touch-icon-precomposed" href=
"{{ static_url("img/apple-touch-icon-
60x60-precomposed.png
") }}">
16 <!-- styling stuff -->
17 <link rel=
"stylesheet" type=
"text/css" href=
"{{ static_url("main.css
") }}" />
18 <meta name=
"viewport" content=
"width=device-width, initial-scale=1.0">
20 {% block head %}{% end block %}
23 <body class=
"is-flex is-flex-direction-column">
24 <nav class=
"navbar" role=
"navigation" aria-label=
"main navigation">
25 <div class=
"container">
26 <div class=
"navbar-brand">
27 <a class=
"navbar-item is-size-4" href=
"/">
29 {% if request.path.startswith(
"/projects/location") %}
30 IPFire
<span class=
"has-text-primary">_
</span>Location
31 {% elif hostname.startswith(
"fireinfo.") %}
32 IPFire
<span class=
"has-text-primary">_
</span>Fireinfo
33 {% elif hostname.startswith(
"nopaste.") %}
34 IPFire
<span class=
"has-text-primary">_
</span>Nopaste
36 IPFire
<span class=
"has-text-primary">_
</span>
41 <a role=
"button" class=
"navbar-burger" aria-label=
"menu" aria-expanded=
"false" data-target=
"navbarMainMenu">
42 <span aria-hidden=
"true"></span>
43 <span aria-hidden=
"true"></span>
44 <span aria-hidden=
"true"></span>
47 <div class=
"navbar-menu" id=
"navbarMainMenu">
49 {% if hostname.startswith(
"www.") or hostname.startswith(
"dev.") %}
50 <div class=
"navbar-end">
51 {# Show a search bar for blog #}
52 {% if request.path.startswith(
"/blog") %}
53 {# Navigation for Blog Authors #}
54 {% if current_user and current_user.is_blog_author() %}
55 <a class=
"navbar-item is-tab {% if request.path == "/blog/drafts
" %}is-active{% end %}" href=
"/blog/drafts">
60 <div class=
"navbar-item">
61 <form action=
"/blog" method=
"GET">
63 <div class=
"control has-icons-left">
64 <input class=
"input" type=
"text"
65 name=
"q" {% if
"q" in locals() and q %}
value=
"{{ q }}"{% end %}
66 placeholder=
"{{ _("Search Blog...
") }}">
67 <span class=
"icon is-small is-left">
68 <i class=
"fas fa-search"></i>
74 {# Show a search bar for docs #}
75 {% elif request.path.startswith(
"/docs") %}
76 <div class=
"navbar-item">
77 <form action=
"/docs/search" method=
"GET">
79 <div class=
"control has-icons-left">
80 <input class=
"input" type=
"text"
81 name=
"q" {% if
"q" in locals() and q %}
value=
"{{ q }}"{% end %}
82 placeholder=
"{{ _("Search Documentation...
") }}">
83 <span class=
"icon is-small is-left">
84 <i class=
"fas fa-search"></i>
93 {% if request.path.startswith(
"/projects/location") %}
94 <a class=
"navbar-item is-tab
95 {% if request.path == "/projects/location/how-to-use
" %}is-active{% end %}"
96 href=
"/projects/location/how-to-use">
100 <a class=
"navbar-item is-tab
101 {% if request.path.startswith("/projects/location/download
") %}is-active{% end %}"
102 href=
"/projects/location/download">
108 <a class=
"navbar-item is-tab {% if request.path == "/about
" %}is-active{% end %}" href=
"/about">{{ _(
"About") }}
</a>
110 <a class=
"navbar-item is-tab {% if request.path.startswith("/docs
") %}is-active{% end %}" href=
"/docs">{{ _(
"Documentation") }}
</a>
112 <a class=
"navbar-item is-tab {% if request.path.startswith("/download
") %}is-active{% end %}" href=
"/download">{{ _(
"Download") }}
</a>
114 <a class=
"navbar-item is-tab {% if request.path.startswith("/blog
") %}is-active{% end %}" href=
"/blog">{{ _(
"Blog") }}
</a>
116 <a class=
"navbar-item is-tab {% if request.path == "/help
" %}is-active{% end %}" href=
"/help">{{ _(
"Help") }}
</a>
119 <div class=
"navbar-item">
120 <a class=
"button is-lwl has-text-weight-bold is-uppercase"
121 href=
"https://store.lightningwirelabs.com/?utm_source={{ hostname }}&utm_medium=navigation">
126 <div class=
"navbar-item">
127 <a class=
"button is-primary has-text-weight-bold is-uppercase"
133 {% if current_user %}
134 <div class=
"navbar-item has-dropdown is-hoverable">
135 <a class=
"navbar-link is-arrowless" href=
"/users/{{ current_user.uid }}">
136 <figure class=
"image">
137 <img class=
"is-rounded" style=
"width: auto" src=
"{{ current_user.avatar_url(128) }}">
141 <div class=
"navbar-dropdown">
142 <a class=
"navbar-item" href=
"/users/{{ current_user.uid }}/passwd">
143 {{ _(
"Change Password") }}
146 <hr class=
"navbar-divider">
148 <a class=
"navbar-item" href=
"/logout">
155 {% elif hostname.startswith(
"fireinfo.") %}
156 <button class=
"navbar-toggler" type=
"button" data-toggle=
"collapse" data-target=
"#navbar"
157 aria-controls=
"navbar" aria-expanded=
"false" aria-label=
"Toggle navigation">
158 <span class=
"fas fa-bars"></span>
161 <div class=
"collapse navbar-collapse" id=
"navbar">
162 <ul class=
"navbar-nav ml-auto">
163 {% if current_user and current_user.is_staff() %}
164 <li class=
"nav-item">
165 <a class=
"nav-link {% if request.path.startswith("/admin
") %}is-active{% end %}" href=
"/admin">
171 <li class=
"nav-item">
172 <a class=
"nav-link {% if request.path.startswith("/vendors
") %}is-active{% end %}" href=
"/vendors">
178 {% elif hostname.startswith(
"nopaste.") %}
179 <button class=
"navbar-toggler" type=
"button" data-toggle=
"collapse" data-target=
"#navbar"
180 aria-controls=
"navbar" aria-expanded=
"false" aria-label=
"Toggle navigation">
181 <span class=
"fas fa-bars"></span>
184 <div class=
"collapse navbar-collapse" id=
"navbar">
185 <ul class=
"navbar-nav ml-auto">
186 <li class=
"nav-item">
187 <a class=
"nav-link" href=
"/?mode=upload">{{ _(
"Upload File") }}
</a>
197 <div class=
"is-flex-grow-1 is-flex-shrink-0">
198 {% block container %}
199 <div class=
"container">
200 {% block content %}{% end block %}
206 <footer class=
"footer is-flex-shrink-0">
207 <div class=
"container">
208 {# Encourage people to join #}
209 {% if not current_user %}
210 <div class=
"columns">
211 <div class=
"column is-one-fifth">
212 <a class=
"button is-primary is-medium is-fullwidth" href=
"/register">
217 <div class=
"column is-one-quarter">
219 <p class=
"title is-5">
220 {{ _(
"Join our community and sign up to our newsletter") }}
226 <div class=
"columns">
227 <div class=
"column is-one-fifth">
228 <a class=
"button is-primary is-medium is-outlined is-fullwidth" href=
"/login">
236 <div class=
"level-left">
237 <div class=
"level-item">
238 {{ year }}
© IPFire.org
241 <div class=
"level-item">
242 <a href=
"/legal">{{ _(
"Legal") }}
</a>
245 <div class=
"level-item">
246 <a href=
"/sitemap">{{ _(
"Sitemap") }}
</a>
250 <div class=
"level-right">
251 <div class=
"level-item">
252 <a href=
"https://social.ipfire.org/@news" title=
"{{ _("Mastodon
") }}">
253 <i class=
"fa-brands fa-mastodon px-2"></i>
256 <div class=
"level-item">
257 <a href=
"https://twitter.com/ipfire" title=
"{{ _("Twitter
") }}">
258 <i class=
"fa-brands fa-twitter px-2"></i>
261 <div class=
"level-item">
262 <a href=
"https://linkedin.com/company/ipfire" title=
"{{ _("LinkedIn
") }}">
263 <i class=
"fa-brands fa-linkedin-in px-2"></i>
272 <script src=
"{{ static_url("js/jquery-
3.6.0.min.js
") }}"></script>
273 <script src=
"{{ static_url("js/site.js
") }}"></script>
274 {% block javascript %}{% end block %}