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 is-size-4">
27 {% if request.path.startswith(
"/location") %}
28 <a class=
"navbar-item" href=
"/location">
29 {% module IPFireLogo(
"Location") %}
32 <a class=
"navbar-item" href=
"/">
33 {% if request.path.startswith(
"/fireinfo") %}
34 {% module IPFireLogo(
"Fireinfo") %}
35 {% elif hostname.startswith(
"nopaste.") %}
36 {% module IPFireLogo(
"NoPaste") %}
38 {% module IPFireLogo() %}
43 <a role=
"button" class=
"navbar-burger" aria-label=
"menu" aria-expanded=
"false" data-target=
"navbarMainMenu">
44 <span aria-hidden=
"true"></span>
45 <span aria-hidden=
"true"></span>
46 <span aria-hidden=
"true"></span>
49 <div class=
"navbar-menu" id=
"navbarMainMenu">
51 {% if hostname.startswith(
"www.") or hostname.startswith(
"dev.") %}
52 <div class=
"navbar-end">
53 {# Show a search bar for blog #}
54 {% if request.path.startswith(
"/blog") %}
55 {# Navigation for Blog Authors #}
56 {% if current_user and current_user.is_blog_author() %}
57 <a class=
"navbar-item is-tab {% if request.path == "/blog/drafts
" %}is-active{% end %}" href=
"/blog/drafts">
62 <div class=
"navbar-item">
63 <form action=
"/blog" method=
"GET">
65 <div class=
"control has-icons-left">
66 <input class=
"input" type=
"text"
67 name=
"q" {% if q %}
value=
"{{ q }}"{% end %}
68 placeholder=
"{{ _("Search Blog...
") }}">
69 <span class=
"icon is-small is-left">
70 <i class=
"fas fa-search"></i>
76 {# Show a search bar for docs #}
77 {% elif request.path.startswith(
"/docs") %}
78 <div class=
"navbar-item">
79 <form action=
"/docs/search" method=
"GET">
81 <div class=
"control has-icons-left">
82 <input class=
"input" type=
"text"
83 name=
"q" {% if q %}
value=
"{{ q }}"{% end %}
84 placeholder=
"{{ _("Search Documentation...
") }}">
85 <span class=
"icon is-small is-left">
86 <i class=
"fas fa-search"></i>
95 {% if request.path.startswith(
"/location") %}
96 <a class=
"navbar-item is-tab
97 {% if request.path.startswith("/location/how-to-use
") %}is-active{% end %}"
98 href=
"/location/how-to-use">
99 {{ _(
"How To Use?") }}
102 <a class=
"navbar-item is-tab
103 {% if request.path == "/location/install
" %}is-active{% end %}"
104 href=
"/location/install">
108 <a class=
"navbar-item is-tab
109 {% if request.path == "/location/report-a-problem
" %}is-active{% end %}"
110 href=
"/location/report-a-problem">
111 {{ _(
"Report A Problem") }}
116 <a class=
"navbar-item is-tab {% if request.path == "/about
" %}is-active{% end %}" href=
"/about">{{ _(
"About") }}
</a>
118 <a class=
"navbar-item is-tab {% if request.path.startswith("/docs
") %}is-active{% end %}" href=
"/docs">{{ _(
"Documentation") }}
</a>
120 <a class=
"navbar-item is-tab {% if request.path.startswith("/download
") %}is-active{% end %}" href=
"/download">{{ _(
"Download") }}
</a>
122 <a class=
"navbar-item is-tab {% if request.path.startswith("/blog
") %}is-active{% end %}" href=
"/blog">{{ _(
"Blog") }}
</a>
124 <a class=
"navbar-item is-tab {% if request.path == "/help
" %}is-active{% end %}" href=
"/help">{{ _(
"Help") }}
</a>
127 <div class=
"navbar-item">
128 <a class=
"button is-lwl has-text-weight-bold is-uppercase"
129 href=
"https://store.lightningwirelabs.com/?utm_source={{ hostname }}&utm_medium=navigation">
134 <div class=
"navbar-item">
135 <a class=
"button is-primary has-text-weight-bold is-uppercase"
141 {% if current_user %}
142 <div class=
"navbar-item has-dropdown is-hoverable">
143 <a class=
"navbar-link is-arrowless" href=
"/users/{{ current_user.uid }}">
144 <figure class=
"image">
145 <img class=
"is-rounded" style=
"width: auto" src=
"{{ current_user.avatar_url(128) }}">
149 <div class=
"navbar-dropdown">
150 <a class=
"navbar-item" href=
"/users/{{ current_user.uid }}/passwd">
151 {{ _(
"Change Password") }}
154 <hr class=
"navbar-divider">
156 <a class=
"navbar-item" href=
"/logout">
162 <a class=
"navbar-item is-tab" href=
"/login?next={{ request.path }}">
163 <i class=
"fas fa-right-to-bracket" title=
"{{ _("Login
") }}"></i>
167 {% elif request.path.startswith(
"/fireinfo") %}
168 <div class=
"navbar-end">
169 {% if current_user and current_user.is_staff() %}
170 <a class=
"navbar-item is-tab {% if request.path.startswith("/admin
") %}is-active{% end %}" href=
"/admin">
175 <a class=
"navbar-item is-tab {% if request.path.startswith("/vendors
") %}is-active{% end %}" href=
"/vendors">
179 {% elif hostname.startswith(
"nopaste.") %}
180 <div class=
"navbar-end">
181 <a class=
"navbar-item is-tab {% if request.path == "/
" %}is-active{% end %}" href=
"/">
185 <a class=
"navbar-item is-tab {% if request.path == "/upload
" %}is-active{% end %}" href=
"/upload">
195 <div class=
"is-flex-grow-1 is-flex-shrink-0">
196 {% block container %}
197 <div class=
"container">
198 {% block content %}{% end block %}
204 <footer class=
"footer is-flex-shrink-0">
205 <div class=
"container">
206 {% if request.path ==
"/docs" %}
208 <div class=
"level-left">
209 <div class=
"level-item">
210 <a href=
"/docs/recent-changes">
211 {{ _(
"Recent Changes") }}
215 {% if current_user %}
216 <div class=
"level-item">
217 <a href=
"/docs/watchlist">
218 {{ _(
"My Watchlist") }}
223 <div class=
"level-item">
224 <a href=
"/docs/tree">
233 <div class=
"level-left">
234 <div class=
"level-item">
235 <div class=
"level is-mobile">
236 <div class=
"level-item">
237 {{ year }}
© IPFire.org
240 <div class=
"level-item">
241 <a href=
"/legal">{{ _(
"Legal") }}
</a>
244 {% if current_user and current_user.is_admin() %}
245 <div class=
"level-item">
246 <a href=
"/analytics">{{ _(
"Analytics") }}
</a>
250 <div class=
"level-item">
251 <a href=
"/sitemap">{{ _(
"Sitemap") }}
</a>
257 <div class=
"level-right">
258 <div class=
"level-item">
259 <div class=
"level is-mobile">
260 <div class=
"level-item">
261 <a href=
"https://social.ipfire.org/@news" title=
"{{ _("Mastodon
") }}">
262 <i class=
"fa-brands fa-mastodon px-2"></i>
265 <div class=
"level-item">
266 <a href=
"https://x.com/ipfire" title=
"{{ _("X
") }}">
267 <i class=
"fa-brands fa-x-twitter px-2"></i>
270 <div class=
"level-item">
271 <a href=
"https://linkedin.com/company/ipfire" title=
"{{ _("LinkedIn
") }}">
272 <i class=
"fa-brands fa-linkedin-in px-2"></i>
275 <div class=
"level-item">
276 <a href=
"https://www.facebook.com/IPFire.org/" title=
"{{ _("Facebook
") }}">
277 <i class=
"fa-brands fa-facebook-f px-2"></i>
288 <script src=
"{{ static_url("js/jquery-
3.6.0.min.js
") }}"></script>
289 <script src=
"{{ static_url("js/site.js
") }}"></script>
290 {% block javascript %}{% end block %}