<nav class="navbar navbar-light navbar-expand-lg">
<div class="container">
<a class="navbar-brand" href="/">
- IPFire<span class="text-primary">_</span>
+ {% if hostname == "www.ipfire.org" and request.path.startswith("/blog") %}
+ IPFire<span class="text-primary">_</span>Blog
+ {% else %}
+ IPFire<span class="text-primary">_</span>
+ {% end %}
- {% if hostname == "blog.ipfire.org" %}
- {{ _("Blog") }}
- {% elif hostname == "fireinfo.ipfire.org" %}
+ {% if hostname == "fireinfo.ipfire.org" %}
{{ _("Fireinfo") }}
{% elif hostname == "location.ipfire.org" %}
{{ _("Location") }}
</a>
{% block menu %}
- {% if hostname in ("www.ipfire.org", "dev.ipfire.org") %}
+ {% if hostname == "www.ipfire.org" and request.path.startswith("/blog") %}
+ <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbar"
+ aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">
+ <span class="fas fa-bars"></span>
+ </button>
+
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbar"
aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">
<span class="fas fa-bars"></span>
<div class="collapse navbar-collapse" id="navbar">
<ul class="navbar-nav ml-auto">
- <li class="nav-item d-sm-block d-md-block d-lg-none">
- <a class="nav-link {% if request.path == "/" %}active{% end %}" href="/">{{ _("Home") }}</a>
- </li>
-
- <li class="nav-item">
- <a class="nav-link {% if request.path == "/features" %}active{% end %}" href="/features">{{ _("Features") }}</a>
- </li>
-
- <li class="nav-item">
- <a class="nav-link {% if request.path == "/support" %}active{% end %}" href="/support">{{ _("Support") }}</a>
- </li>
-
- <li class="nav-item">
- <a class="nav-link" href="https://blog.ipfire.org/">{{ _("Blog") }}</a>
- </li>
-
- <li class="nav-item">
- <a class="nav-link" href="https://community.ipfire.org/">{{ _("Community") }}</a>
- </li>
+ {% if current_user %}
+ <li class="nav-item">
+ <a class="nav-link {% if request.path == "/blog/drafts" %}active{% end %}" href="/blog/drafts">
+ {{ _("My Drafts") }}
+ </a>
+ </li>
+ {% end %}
<li class="nav-item">
- <a class="nav-link {% if request.path.startswith("/download") %}active{% end %}" href="/download">{{ _("Download") }}</a>
+ <a class="nav-link {% if request.path == "/blog/tags/featured" %}active{% end %}" href="/blog/tags/featured">
+ {{ _("Featured") }}
+ </a>
</li>
</ul>
+ <form class="form-inline my-2 my-lg-0" action="/blog/search" method="GET">
+ <input class="form-control form-control-sm" type="search" name="q"
+ placeholder="{{ _("Search...") }}" aria-label="{{ _("Search") }}"
+ value="{% try %}{{ q }}{% except %}{% end %}">
+ </form>
+
<a class="btn btn-primary mt-2 mt-lg-0 ml-lg-2" href="/donate">
{{ _("Donate") }}
</a>
</div>
- {% elif hostname == "blog.ipfire.org" %}
+ {% elif hostname in ("www.ipfire.org", "dev.ipfire.org") %}
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbar"
aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">
<span class="fas fa-bars"></span>
</button>
<div class="collapse navbar-collapse" id="navbar">
- <ul class="navbar-nav ml-auto d-lg-none">
- <li class="nav-item">
- <a class="nav-link {% if request.path == "/" %}active{% end %}" href="/">
- {{ _("Newest") }}
- </a>
+ <ul class="navbar-nav ml-auto">
+ <li class="nav-item d-sm-block d-md-block d-lg-none">
+ <a class="nav-link {% if request.path == "/" %}active{% end %}" href="/">{{ _("Home") }}</a>
</li>
- {% if current_user %}
- <li class="nav-item">
- <a class="nav-link {% if request.path == "/drafts" %}active{% end %}" href="/drafts">
- {{ _("My Drafts") }}
- </a>
- </li>
- {% end %}
+ <li class="nav-item">
+ <a class="nav-link {% if request.path == "/features" %}active{% end %}" href="/features">{{ _("Features") }}</a>
+ </li>
<li class="nav-item">
- <a class="nav-link {% if request.path == "/tags/featured" %}active{% end %}" href="/tags/featured">
- {{ _("Featured") }}
- </a>
+ <a class="nav-link {% if request.path == "/support" %}active{% end %}" href="/support">{{ _("Support") }}</a>
</li>
<li class="nav-item">
- <a class="nav-link {% if request.path == "/tags/lightningwirelabs.com" %}active{% end %} d-flex justify-content-between"
- href="/tags/lightningwirelabs.com">
- <span>{{ _("Lightning Wire Labs") }}</span>
+ <a class="nav-link" href="/blog">{{ _("Blog") }}</a>
+ </li>
- <img class="img-fluid" src="{{ static_url("img/lightningwirelabs-logo.svg") }}"
- alt="{{ _("Lightning Wire Labs") }}">
- </a>
+ <li class="nav-item">
+ <a class="nav-link" href="https://community.ipfire.org/">{{ _("Community") }}</a>
</li>
<li class="nav-item">
- <a class="nav-link d-flex justify-content-between" href="/feed.xml">
- <span>{{ _("RSS Feed") }}</span> <span class="fas fa-rss"></span>
- </a>
+ <a class="nav-link {% if request.path.startswith("/download") %}active{% end %}" href="/download">{{ _("Download") }}</a>
</li>
</ul>
- <form class="form-inline ml-lg-auto my-2 my-lg-0" action="/search" method="GET">
- <input class="form-control form-control-sm" type="search" name="q"
- placeholder="{{ _("Search...") }}" aria-label="{{ _("Search") }}" value="{% try %}{{ q }}{% except %}{% end %}">
- </form>
-
- <a class="btn btn-primary ml-lg-2" href="https://www.ipfire.org/donate">
+ <a class="btn btn-primary mt-2 mt-lg-0 ml-lg-2" href="/donate">
{{ _("Donate") }}
</a>
</div>
</li>
<li>
- <a class="footer-link" href="https://blog.ipfire.org">{{ _("Blog") }}</a>
+ <a class="footer-link" href="/blog">{{ _("Blog") }}</a>
</li>
<li>
{% extends "../base.html" %}
{% block head %}
- <link rel="alternate" type="application/atom+xml" title="RSS" href="https://blog.ipfire.org/feed.xml" />
+ <link rel="alternate" type="application/atom+xml" title="RSS" href="https://www.ipfire.org/blog/feed.xml" />
{% block meta %}{% end block %}
{% end block %}
{% import ipfire.accounts as accounts %}
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
- <id>https://blog.ipfire.org/feed.xml</id>
+ <id>https://www.ipfire.org/blog/feed.xml</id>
- <link href="https://blog.ipfire.org/feed.xml" rel="self" type="application/atom+xml" />
- <link href="https://blog.ipfire.org" rel="alternate" type="text/html"/>
+ <link href="https://www.ipfire.org/blog/feed.xml" rel="self" type="application/atom+xml" />
+ <link href="https://www.ipfire.org/blog" rel="alternate" type="text/html"/>
<link rel="payment" title="Donate!" href="https://www.ipfire.org/donate" type="text/html" />
<title>IPFire Blog</title>
{% for post in posts %}
<entry>
- <id>https://blog.ipfire.org/post/{{ post.slug }}</id>
+ <id>https://www.ipfire.org/blog/{{ post.slug }}</id>
<title type="html">{{ post.title }}</title>
- <link href="https://blog.ipfire.org/post/{{ post.slug }}" rel="alternate" type="text/html" title="{{ post.title }}" />
+ <link href="https://www.ipfire.org/blog/{{ post.slug }}" rel="alternate" type="text/html" title="{{ post.title }}" />
<author>
<name>{{ post.author }}</name>
{% if isinstance(post.author, accounts.Account) %}
<tbody>
<tr>
<td>
- <a href="https://blog.ipfire.org/post/{{ post.slug }}" target="_blank">{{ _("Click Here To Read More") }}</a>
+ <a href="https://www.ipfire.org/blog/{{ post.slug }}" target="_blank">{{ _("Click Here To Read More") }}</a>
</td>
</tr>
</tbody>
{{ _("Click here to read more:") }}
- https://blog.ipfire.org/post/{{ post.slug }}
+ https://www.ipfire.org/blog/{{ post.slug }}
<div class="blog-post {% if "lightningwirelabs.com" in post.tags %}lightning-wire-labs{% end %}">
<div class="blog-header">
<h4 class="card-title">
- <a href="https://blog.ipfire.org/post/{{ post.slug }}">
+ <a href="/blog/{{ post.slug }}">
{{ post.title }}
</a>
</h4>
{{ _("by") }}
{% if isinstance(post.author, accounts.Account) %}
- <a href="/authors/{{ post.author.uid }}">{{ post.author.name }}</a>,
+ <a href="/blog/authors/{{ post.author.uid }}">{{ post.author.name }}</a>,
{% else %}
<strong>{{ post.author }}</strong>,
{% end %}
{% end %}
{% if post.release %}
- <a class="btn btn-primary" href="https://www.ipfire.org/download/{{ post.release.slug }}">
+ <a class="btn btn-primary" href="/download/{{ post.release.slug }}">
{{ _("Download") }}
</a>
{% end %}
{% if post.release or "donate" in post.tags %}
- <a class="btn btn-outline-primary ml-2" href="https://www.ipfire.org/donate">
+ <a class="btn btn-outline-primary ml-2" href="/donate">
{{ _("Donate") }}
</a>
{% end %}
<meta property="og:title" content="{{ post.title }} - The IPFire Blog" />
<meta property="og:description" content="{{ post.excerpt }}" />
<meta property="og:url" content="{{ request.full_url() }}" />
- <meta property="og:image" content="https://blog.ipfire.org/{{ static_url("img/ipfire-tux.png") }}" />
+ <meta property="og:image" content="{{ static_url("img/ipfire-tux.png") }}" />
<meta property="og:type" content="article" />
{% if post.published_at %}
<meta property="twitter:card" content="summary_large_image" />
<meta property="twitter:title" content="{{ post.title }} - The IPFire Blog" />
<meta property="twitter:description" content="{{ post.excerpt }}" />
- <meta property="twitter:image" content="https://blog.ipfire.org/{{ static_url("img/ipfire-tux.png") }}" />
+ <meta property="twitter:image" content="{{ static_url("img/ipfire-tux.png") }}" />
{% end block %}
{% block main %}
{% if release.blog %}
•
- <a href="https://blog.ipfire.org/post/{{ release.blog.slug }}">{{ _("Release Notes") }}</a>
+ <a href="/blog/{{ release.blog.slug }}">{{ _("Release Notes") }}</a>
{% end %}
</h6>
{% block head %}
<meta name="description" content="{{ _("IPFire is a hardened, versatile, state-of-the-art Open Source firewall based on Linux.") }}" />
- <link rel="alternate" type="application/atom+xml" title="RSS" href="https://blog.ipfire.org/feed.xml" />
+ <link rel="alternate" type="application/atom+xml" title="RSS" href="/blog/feed.xml" />
{% end block %}
{% block title %}{{ _("Welcome to IPFire") }}{% end block %}
{% if latest_release.blog %}
- <a class="text-dark font-weight-bold" href="https://blog.ipfire.org/post/{{ latest_release.blog.slug }}">
+ <a class="text-dark font-weight-bold" href="/blog/{{ latest_release.blog.slug }}">
{{ _("Read More") }}
</a>
{% end %}
</div>
</div>
- <a class="btn btn-primary btn-lg btn-block" href="https://blog.ipfire.org/tags/location">
+ <a class="btn btn-primary btn-lg btn-block" href="https://www.ipfire.org/blog/tags/location">
{{ _("Read More") }}
</a>
</div>
# Entry site that lead the user to index
(r"/", IndexHandler),
+ # Blog
+ (r"/blog", blog.IndexHandler),
+ (r"/blog/authors/(\w+)", blog.AuthorHandler),
+ (r"/blog/compose", blog.ComposeHandler),
+ (r"/blog/drafts", blog.DraftsHandler),
+ (r"/blog/feed.xml", blog.FeedHandler),
+ (r"/blog/search", blog.SearchHandler),
+ (r"/blog/tags/([0-9a-z\-\.]+)", blog.TagHandler),
+ (r"/blog/([0-9a-z\-\._]+)", blog.PostHandler),
+ (r"/blog/([0-9a-z\-\._]+)/delete", blog.DeleteHandler),
+ (r"/blog/([0-9a-z\-\._]+)/edit", blog.EditHandler),
+ (r"/blog/([0-9a-z\-\._]+)/publish", blog.PublishHandler),
+
# Download sites
(r"/downloads", tornado.web.RedirectHandler, { "url" : "/download" }),
(r"/download", download.IndexHandler),
(r"/error/([45][0-9]{2})", base.ErrorHandler),
])
- # blog.ipfire.org
+ # blog.ipfire.org - LEGACY REDIRECTION
self.add_handlers(r"blog\.ipfire\.org", [
- (r"/", blog.IndexHandler),
- (r"/authors/(\w+)", blog.AuthorHandler),
- (r"/compose", blog.ComposeHandler),
- (r"/drafts", blog.DraftsHandler),
- (r"/post/([0-9a-z\-\._]+)", blog.PostHandler),
- (r"/post/([0-9a-z\-\._]+)/delete", blog.DeleteHandler),
- (r"/post/([0-9a-z\-\._]+)/edit", blog.EditHandler),
- (r"/post/([0-9a-z\-\._]+)/publish", blog.PublishHandler),
- (r"/search", blog.SearchHandler),
- (r"/tags/([0-9a-z\-\.]+)", blog.TagHandler),
- (r"/years/([0-9]+)", blog.YearHandler),
+ (r"/", tornado.web.RedirectHandler, { "url" : "https://www.ipfire.org/blog" }),
+ (r"/authors/(\w+)", tornado.web.RedirectHandler, { "url" : "https://www.ipfire.org/blog/authors/{0}" }),
+ (r"/post/([0-9a-z\-\._]+)", tornado.web.RedirectHandler, { "url" : "https://www.ipfire.org/blog/{0}" }),
+ (r"/tags/([0-9a-z\-\.]+)", tornado.web.RedirectHandler, { "url" : "https://www.ipfire.org/blog/tags/{0}" }),
# RSS Feed
- (r"/feed.xml", blog.FeedHandler),
- ] + authentication_handlers)
+ (r"/feed.xml", tornado.web.RedirectHandler, { "url" : "https://www.ipfire.org/blog/feed.xml" }),
+ ])
# downloads.ipfire.org
self.add_handlers(r"downloads?\.ipfire\.org", [
class NewsHandler(base.BaseHandler):
def get(self, post):
- self.redirect("https://blog.ipfire.org/post/%s" % post, permanent=True)
+ self.redirect("https://www.ipfire.org/blog/%s" % post, permanent=True)
class PlanetPostHandler(base.BaseHandler):
def get(self, post):
- self.redirect("https://blog.ipfire.org/post/%s" % post, permanent=True)
+ self.redirect("https://www.ipfire.org/blog/%s" % post, permanent=True)
class PlanetUserHandler(base.BaseHandler):
def get(self, user):
- self.redirect("https://blog.ipfire.org/authors/%s" % user, permanent=True)
+ self.redirect("https://www.ipfire.org/blog/authors/%s" % user, permanent=True)
class StaticHandler(base.BaseHandler):