Rework of blog
- Added support for metadata in blog entries - Modified blog/index.html and blog/entry.html templates to use metadata - Migrated the most recent post over to just a .rst file and added metadata
This commit is contained in:
@ -1,6 +1,74 @@
|
||||
=============
|
||||
0.9.4 Release
|
||||
=============
|
||||
.. meta::
|
||||
:date: 2012-12-17
|
||||
:category: release
|
||||
:excerpt: 0.9.4 includes a fix for a network capacity bug, introduced in 0.9.2,
|
||||
that was reducing network performance and reliability. It also includes
|
||||
major changes in the in-network update system, and adds the capability
|
||||
to update via in-network torrents.
|
||||
|
||||
.. raw:: html
|
||||
:file: blog/2012/12/17/release-0.9.4.html
|
||||
0.9.4 includes a fix for a network capacity bug, introduced in 0.9.2,
|
||||
that was reducing network performance and reliability. It also includes
|
||||
major changes in the in-network update system, and adds the capability
|
||||
to update via in-network torrents.
|
||||
|
||||
We fixed several bugs in the i2psnark DHT implementation that was introduced
|
||||
last release. For those of you using console or http proxy passwords,
|
||||
we converted to the more-secure digest method and improved the security for console forms.
|
||||
|
||||
For those of you already running development builds, your router should automatically
|
||||
update to 0.9.4-0 using the new in-network torrent facility.
|
||||
For those running 0.9.3-0, you will update normally using in-network HTTP, and
|
||||
we will have more information for you when we release 0.9.5.
|
||||
|
||||
Files are available on the `download page`_.
|
||||
|
||||
.. _`download page`: /download.html
|
||||
|
||||
**RELEASE DETAILS**
|
||||
|
||||
**Major Changes**
|
||||
|
||||
- Big rework of the update system; Preliminary support for updates via i2psnark
|
||||
- Add per-destination outbound priorities
|
||||
|
||||
**Bug Fixes**
|
||||
|
||||
- Fix major bug that reduced SSU connection limits which reduced tunnel build success rates
|
||||
- Fix bug with external I2CP that prevented some external apps from working
|
||||
- Fixed several bugs in i2psnark DHT
|
||||
- Fixed bug in i2psnark PEX that inflated peer counts
|
||||
- Handle dropped I2CP messages better
|
||||
- Reduce overhead of I2CP messages
|
||||
- Enforce max size in transport outbound message queues
|
||||
- Fixes for Windows eepget.bat (new installs and PPA only)
|
||||
- Fix a bug that would drop messages of exactly 512 bytes in SSU
|
||||
|
||||
**Other**
|
||||
|
||||
- More performance improvements, memory reduction, and object churn reduction
|
||||
- Better detection of network disconnections
|
||||
- Further improvements in the SSU transport
|
||||
- Add console password form
|
||||
- Convert http proxy and console from basic to digest authentication for added security
|
||||
- Improved verification of console form submissions, using jsp sessions. Cookies may now be required on forms, except when the console password is enabled
|
||||
- Initial work on new interfaces to manage applications started via clients.config
|
||||
- Increase minimum peer port to 1024
|
||||
- Increase granularity of bandwidth limiter for smoother transmissions
|
||||
- Translation updates: Chinese, French, German, Italian, Polish, Portuguese, Swedish, and Ukrainian
|
||||
- Update GeoIP data (new installs and PPA only)
|
||||
- Update wrapper to 3.5.16 (new installs and PPA only)
|
||||
- New ARMv6 wrapper for Raspberry Pi
|
||||
|
||||
**SHA256 Checksums:**
|
||||
|
||||
::
|
||||
|
||||
c76bea15a6b7d98227466cc8025b1eb9069997e40e9d71ff49e55b2c8ac0b995 i2pinstall_0.9.4_windows.exe
|
||||
8e670ba26c04176ace9246d91a09951975e2965b89628f620f5a3dff917298e4 i2pinstall_0.9.4.jar
|
||||
1b7d9695555ed42142b04ad6bcda083cd1a064f6354b639ad2aef4d9cd474e06 i2psource_0.9.4.tar.bz2
|
||||
0f369d9b85793f157ec67c4d59723a2ad0c1de2a0902d35e11c26a2c74add824 i2pupdate_0.9.4.zip
|
||||
6e55d3c44d79b0727f5cd4075df4248e4d78f1736911e3504f6a8af45d973cfc i2pupdate.su2
|
||||
561e521a707fab457c9dfe166d41b446affbff5bc58ddf770d192235f51f4e90 i2pupdate.sud
|
||||
|
@ -1,65 +0,0 @@
|
||||
<p>0.9.4 includes a fix for a network capacity bug, introduced in 0.9.2,
|
||||
that was reducing network performance and reliability. It also includes
|
||||
major changes in the in-network update system, and adds the capability
|
||||
to update via in-network torrents. </p>
|
||||
|
||||
<p>We fixed several bugs in the i2psnark DHT implementation that was introduced
|
||||
last release. For those of you using console or http proxy passwords,
|
||||
we converted to the more-secure digest method and improved the security for console forms.</p>
|
||||
|
||||
<p>For those of you already running development builds, your router should automatically
|
||||
update to 0.9.4-0 using the new in-network torrent facility.
|
||||
For those running 0.9.3-0, you will update normally using in-network HTTP, and
|
||||
we will have more information for you when we release 0.9.5.</p>
|
||||
|
||||
<p>Files are available on the <a href="/download.html">download page</a>.</p>
|
||||
|
||||
<p><strong>RELEASE DETAILS</strong></p>
|
||||
|
||||
<p><strong>Major Changes</strong></p>
|
||||
|
||||
<p>- Big rework of the update system; Preliminary support for updates via i2psnark
|
||||
<br />- Add per-destination outbound priorities</p>
|
||||
|
||||
<p><strong>Bug Fixes</strong></p>
|
||||
|
||||
<p>- Fix major bug that reduced SSU connection limits which reduced tunnel build success rates
|
||||
<br />- Fix bug with external I2CP that prevented some external apps from working
|
||||
<br />- Fixed several bugs in i2psnark DHT
|
||||
<br />- Fixed bug in i2psnark PEX that inflated peer counts
|
||||
<br />- Handle dropped I2CP messages better
|
||||
<br />- Reduce overhead of I2CP messages
|
||||
<br />- Enforce max size in transport outbound message queues
|
||||
<br />- Fixes for Windows eepget.bat (new installs and PPA only)
|
||||
<br />- Fix a bug that would drop messages of exactly 512 bytes in SSU</p>
|
||||
|
||||
<p><strong>Other</strong></p>
|
||||
|
||||
<p>- More performance improvements, memory reduction, and object churn reduction
|
||||
<br />- Better detection of network disconnections
|
||||
<br />- Further improvements in the SSU transport
|
||||
<br />- Add console password form
|
||||
<br />- Convert http proxy and console from basic to digest authentication for added security
|
||||
<br />- Improved verification of console form submissions, using jsp sessions. Cookies may now be required on forms, except when the console password is enabled
|
||||
<br />- Initial work on new interfaces to manage applications started via clients.config
|
||||
<br />- Increase minimum peer port to 1024
|
||||
<br />- Increase granularity of bandwidth limiter for smoother transmissions
|
||||
<br />- Translation updates: Chinese, French, German, Italian, Polish, Portuguese, Swedish, and Ukrainian
|
||||
<br />- Update GeoIP data (new installs and PPA only)
|
||||
<br />- Update wrapper to 3.5.16 (new installs and PPA only)
|
||||
<br />- New ARMv6 wrapper for Raspberry Pi</p>
|
||||
|
||||
<b>
|
||||
SHA256 Checksums:
|
||||
</b>
|
||||
<pre>
|
||||
|
||||
c76bea15a6b7d98227466cc8025b1eb9069997e40e9d71ff49e55b2c8ac0b995 i2pinstall_0.9.4_windows.exe
|
||||
8e670ba26c04176ace9246d91a09951975e2965b89628f620f5a3dff917298e4 i2pinstall_0.9.4.jar
|
||||
1b7d9695555ed42142b04ad6bcda083cd1a064f6354b639ad2aef4d9cd474e06 i2psource_0.9.4.tar.bz2
|
||||
0f369d9b85793f157ec67c4d59723a2ad0c1de2a0902d35e11c26a2c74add824 i2pupdate_0.9.4.zip
|
||||
6e55d3c44d79b0727f5cd4075df4248e4d78f1736911e3504f6a8af45d973cfc i2pupdate.su2
|
||||
561e521a707fab457c9dfe166d41b446affbff5bc58ddf770d192235f51f4e90 i2pupdate.sud
|
||||
|
||||
|
||||
</pre>
|
@ -8,6 +8,14 @@ import os.path
|
||||
from i2p2www import BLOG_DIR
|
||||
|
||||
|
||||
SUPPORTED_METATAGS = {
|
||||
'author': u'I2P devs',
|
||||
'category': None,
|
||||
'date': u'1970-01-01',
|
||||
'excerpt': u'',
|
||||
}
|
||||
|
||||
|
||||
#####################
|
||||
# Blog helper methods
|
||||
|
||||
@ -15,14 +23,14 @@ def get_blog_feed_items(num=0):
|
||||
entries = get_blog_entries(num)
|
||||
items = []
|
||||
for entry in entries:
|
||||
parts = render_blog_entry(entry[0])
|
||||
if parts:
|
||||
a = {}
|
||||
a['title'] = parts['title']
|
||||
a['content'] = parts['fragment']
|
||||
a['url'] = url_for('blog_entry', lang=g.lang, slug=entry[0])
|
||||
a['updated'] = datetime.datetime.strptime(entry[1], '%Y-%m-%d')
|
||||
items.append(a)
|
||||
meta = entry[3]
|
||||
parts = entry[4]
|
||||
a = {}
|
||||
a['title'] = parts['title']
|
||||
a['content'] = meta['excerpt'] if len(meta['excerpt']) > 0 else parts['fragment']
|
||||
a['url'] = url_for('blog_entry', lang=g.lang, slug=entry[0])
|
||||
a['updated'] = datetime.datetime.strptime(meta['date'], '%Y-%m-%d')
|
||||
items.append(a)
|
||||
return items
|
||||
|
||||
def get_blog_entries(num=0):
|
||||
@ -32,10 +40,13 @@ def get_blog_entries(num=0):
|
||||
slugs = get_blog_slugs(num)
|
||||
entries= []
|
||||
for slug in slugs:
|
||||
date = get_date_from_slug(slug)
|
||||
titlepart = slug.rsplit('/', 1)[1]
|
||||
title = ' '.join(titlepart.split('_'))
|
||||
entries.append((slug, date, title))
|
||||
parts = render_blog_entry(slug)
|
||||
if parts:
|
||||
meta = get_metadata_from_meta(parts['meta'])
|
||||
date = get_date_from_slug(slug)
|
||||
titlepart = slug.rsplit('/', 1)[1]
|
||||
title = ' '.join(titlepart.split('_'))
|
||||
entries.append((slug, date, title, meta, parts))
|
||||
return entries
|
||||
|
||||
def get_blog_slugs(num=0):
|
||||
@ -80,3 +91,11 @@ def render_blog_entry(slug):
|
||||
content = fd.read()
|
||||
|
||||
return publish_parts(source=content, source_path=BLOG_DIR, writer_name="html")
|
||||
|
||||
def get_metadata_from_meta(meta):
|
||||
metaLines = meta.split('\n')
|
||||
ret = {}
|
||||
for metaTag in SUPPORTED_METATAGS:
|
||||
metaLine = [s for s in metaLines if 'name="%s"' % metaTag in s]
|
||||
ret[metaTag] = metaLine[0].split('content="')[1].split('"')[0] if len(metaLine) > 0 else SUPPORTED_METATAGS[metaTag]
|
||||
return ret
|
||||
|
@ -2,7 +2,7 @@ from flask import abort, render_template, request
|
||||
from werkzeug.contrib.atom import AtomFeed
|
||||
|
||||
from i2p2www import BLOG_ENTRIES_PER_PAGE
|
||||
from i2p2www.blog.helpers import get_blog_entries, get_blog_feed_items, render_blog_entry
|
||||
from i2p2www.blog.helpers import get_blog_entries, get_blog_feed_items, get_metadata_from_meta, render_blog_entry
|
||||
from i2p2www.helpers import Pagination, get_for_page
|
||||
|
||||
|
||||
@ -22,8 +22,9 @@ def blog_entry(slug):
|
||||
parts = render_blog_entry(slug)
|
||||
|
||||
if parts:
|
||||
meta = get_metadata_from_meta(parts['meta'])
|
||||
# now just pass to simple template file and we are done
|
||||
return render_template('blog/entry.html', parts=parts, title=parts['title'], body=parts['fragment'], slug=slug)
|
||||
return render_template('blog/entry.html', parts=parts, title=parts['title'], body=parts['fragment'], slug=slug, meta=meta)
|
||||
else:
|
||||
abort(404)
|
||||
|
||||
|
@ -1,6 +1,11 @@
|
||||
{% extends "global/layout.html" %}
|
||||
{% block title %}{{ title }} - Blog{% endblock %}
|
||||
{% block content %}
|
||||
<ul id="blog-entry-info">
|
||||
<li class="date">{{ meta.date }}</li>
|
||||
<li class="author">{{ meta.author }}</li>
|
||||
<li class="category">{{ meta.category }}</li>
|
||||
</ul>
|
||||
{% autoescape false %}
|
||||
{{ body }}
|
||||
{% endautoescape %}
|
||||
|
@ -5,10 +5,25 @@
|
||||
{%- endblock %}
|
||||
{% block content %}
|
||||
<p>Some descriptive text.</p>
|
||||
<ul class="infolist">
|
||||
{% for entry in entries -%}
|
||||
<li>{{ entry[1] }} - <a href="{{ url_for('blog_entry', slug=entry[0]) }}">{{ entry[2] }}</a></li>
|
||||
{%- endfor %}
|
||||
<ul id="blog-entries">
|
||||
{% for entry in entries %}
|
||||
<li>
|
||||
<article>
|
||||
<header>
|
||||
<a href="{{ url_for('blog_entry', slug=entry[0]) }}">{{ entry[2] }}</a>
|
||||
</header>
|
||||
{%- if entry[3].excerpt %}
|
||||
<p>{{ entry[3].excerpt }}</p>
|
||||
{%- endif %}
|
||||
<footer>
|
||||
<ul>
|
||||
<li>{{ entry[1] }}</li>
|
||||
<li>{{ entry[3].author }}</li>
|
||||
</ul>
|
||||
</footer>
|
||||
</article>
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
{%- from "global/macros" import render_pagination with context -%}
|
||||
{{ render_pagination(pagination) | safe }}
|
||||
|
Reference in New Issue
Block a user