<?xml version="1.0" encoding="utf-8"?>



<feed xmlns="http://www.w3.org/2005/Atom"
    xmlns:fh="http://purl.org/syndication/history/1.0"
    xmlns:at="http://purl.org/atompub/tombstones/1.0">

    <title>Publ: Development Blog</title>
    <subtitle>A personal publishing system for the modern web</subtitle>
    <link href="http://publ.beesbuzz.biz/blog/feed?date=201910" rel="self" />
    <link href="http://publ.beesbuzz.biz/blog/feed" rel="current" />
    <link href="https://busybee.superfeedr.com" rel="hub" />
    
    <link href="http://publ.beesbuzz.biz/blog/feed?date=2019-09" rel="prev-archive" />
    
    
    <link href="http://publ.beesbuzz.biz/blog/feed?date=2019-11" rel="next-archive" />
    
    <link href="http://publ.beesbuzz.biz/blog/" />
    <fh:archive />
    <id>tag:publ.beesbuzz.biz,2020-01-07:blog</id>
    <updated>2019-10-30T19:11:50-07:00</updated>

    
    <entry>
        <title>Publ 0.5.8, Authl 0.3.1, and IndieAuth security</title>
        <link href="http://publ.beesbuzz.biz/blog/491-Publ-0.5.8-Authl-0.3.1-and-IndieAuth-security" rel="alternate" type="text/html" />
        <published>2019-10-30T19:11:50-07:00</published>
        <updated>2019-10-30T19:11:50-07:00</updated>
        <id>urn:uuid:3019140c-3dc7-5b8f-98e5-ffa0c9fda3c4</id>
        <author><name>fluffy</name></author>
        <content type="html">
<![CDATA[
<p>So, both Publ and Authl had a pretty naïve issue with the identity verification step of the IndieAuth flow; it simply accepted whatever the authorization endpoint said the user&rsquo;s identity was. This made it very simple to spoof one&rsquo;s identity and log in as anyone on any Publ or Authl site.</p><p>Authl 0.3.1 fixes the problem with the IndieAuth login flow, and Publ 0.5.8 fixes the problem with the Bearer token flow.</p>

<p>If you don&rsquo;t understand what any of that means, the short form is: please update your package versions. You might also want to change your secret key while you&rsquo;re at it; even if you don&rsquo;t have any private content <em>yet</em>, someone could possibly have used this hole to log in as you in case you ever do post private content.</p><p>It&rsquo;s incredibly unlikely, of course! As far as I know I&rsquo;m the only active user of Publ (aside from my old day job where they are definitely not using the authentication stuff at all). But I felt that full disclosure is a good idea anyway.</p><p>Also, if you have your own IndieAuth implementation that you want to check for proper identity sanitization, the <a href="https://github.com/PlaidWeb/Authl">Authl GitHub repository</a> has an <a href="https://github.com/PlaidWeb/Authl/blob/master/test/rogue_indieauth.py">identity tester</a> that should be easy to deploy. It&rsquo;s worth testing against that to make sure that your identity verification is working correctly!</p><p>To use it, run it somewhere that&rsquo;s visible to your IndieAuth login flow; for example, if you&rsquo;re testing locally, you can do something like:</p><figure class="blockcode"><pre class="highlight" data-language="bash-session" data-line-numbers><span class="line" id="e491cb1L1"><a class="line-number" href="http://publ.beesbuzz.biz/blog/491-Publ-0.5.8-Authl-0.3.1-and-IndieAuth-security#e491cb1L1"></a><span class="line-content">$ FLASK_APP=Authl/test/rogue-indieauth.py flask run -p 6789</span></span>
</pre></figure><p>and then you can use <code>http://localhost:6789</code> as your identity; you can also add arbitrary path elements (e.g. <code>http://localhost:6789/alice</code>). Then when you try to log in as IndieAuth it&rsquo;ll prompt you for what you want your canonical identity to look like (for example, <code>http://example.com/</code> or <code>http://localhost:6789/bob</code>), and then see how your login flow deals with it.</p><p>At some point I&rsquo;ll probably spin up a public instance of this, as well.</p><p>There&rsquo;s also a deficiency in the IndieAuth spec regarding how to verify the path part of an identity URL; see <a href="https://github.com/indieweb/indieauth/issues/35">this open issue</a> if you want to see more and/or participate in the discussion.</p><p>Authl and Publ currently follow my proposal for the path validation, where for example <code>http://example.com/alice</code> can identify as <code>http://example.com/alice/</code> or <code>http://example.com/alice/blog/</code> but not as <code>http://example.com/bob</code> or <code>http://example.com/alice_is_bob</code>. This makes it technically stricter than the current public specification, but it&rsquo;s also a lot safer especially for multi-user websites such as <a href="https://tilde.club">tilde.club</a> or any random WordPress installation or whatever.</p><p>Anyway. This is just my long-winded way of saying, oops, I hecked up, but I fixed it, and maybe other people hecked up too and it&rsquo;s worth testing.</p><p><mark>EDIT:</mark> Oh I also forgot to mention that no, AutoAuth isn&rsquo;t actually supported yet. But I&rsquo;m working on it!</p>

]]>
        </content>
    </entry>
    
    <entry>
        <title>Authl v0.3.0</title>
        <link href="http://publ.beesbuzz.biz/blog/60-Authl-v0.3.0" rel="alternate" type="text/html" />
        <published>2019-10-30T02:53:19-07:00</published>
        <updated>2019-10-30T02:53:19-07:00</updated>
        <id>urn:uuid:e774612f-4775-5612-8a5d-0387f8e23f5b</id>
        <author><name>fluffy</name></author>
        <content type="html">
<![CDATA[
<p>I just released Authl v0.3.0; minor version bump because of a public API change,
to better facilitate stateless storage.</p><p>Which is to say I converted most of the handlers to be stateless, which
hopefully fixes the issues with running on Heroku.</p><p>Unfortunately Twitter couldn&rsquo;t be fixed easily but I wasn&rsquo;t running the Twitter
handler on this site anyway. I do have some ideas but they&rsquo;re fairly involved
and will have to come later, and not when I&rsquo;m up way past my bedtime.</p><p>Also, there still seems to be some cache-related issue that&rsquo;s making it
necessary to shift-reload the page after logging in or out, sometimes.</p>

]]>
        </content>
    </entry>
    
    <entry>
        <title>A secret, protected entry</title>
        <link href="http://publ.beesbuzz.biz/blog/528-A-secret-protected-entry" rel="alternate" type="text/html" />
        <published>2019-10-29T21:38:35-07:00</published>
        <updated>2019-10-29T21:38:35-07:00</updated>
        <id>urn:uuid:1f0accc9-bf7e-5b27-b681-a5f5904c4426</id>
        <author><name>fluffy</name></author>
        <content type="html">
<![CDATA[
<p>This entry is ultra super secret! You have to <em>log in</em> to see it!</p>

]]>
        </content>
    </entry>
    
    <entry>
        <title>Publ v0.5.7, now with theoretical AutoAuth support!</title>
        <link href="http://publ.beesbuzz.biz/blog/269-Publ-v0.5.7-now-with-theoretical-AutoAuth-support" rel="alternate" type="text/html" />
        <published>2019-10-29T21:38:32-07:00</published>
        <updated>2019-10-29T21:38:32-07:00</updated>
        <id>urn:uuid:ea72944c-0743-57cf-a40d-4d3706567472</id>
        <author><name>fluffy</name></author>
        <content type="html">
<![CDATA[
<p>There is only one feature for this new release of Publ, but it&rsquo;s a big one &ndash; there is (theoretical) support for <a href="https://indieweb.org/AutoAuth">AutoAuth</a>! That&rsquo;s right, deploy this version and people should be able to magically log on to your website using unattended IndieAuth providers.</p><p>Unfortunately, there aren&rsquo;t any tools that I know of which actually support this mode of operation; all testing has been manual and In Theory.</p><p>Fortunately, if someone does want to test AutoAuth (or IndieAuth Bearer authentication in general), you can test it out on this site! You can use <a href="http://publ.beesbuzz.biz/blog/20191029 secret.md">this entry</a> as an individual entry, and <a href="http://publ.beesbuzz.biz/blog/?date=201910">this category</a> or <a href="http://publ.beesbuzz.biz/blog/feed?date=201910">this feed</a> to see how well it works with the &ldquo;partial public&rdquo; path.</p><p>Also, <a href="http://publ.beesbuzz.biz/userinfo">this page</a> will tell you all sorts of useful information about the current user (if any).</p><p>And I&rsquo;d might as well use this opportunity to show off the <a href="http://publ.beesbuzz.biz/_admin">admin dashboard</a> &ndash; just sign in as the user <code>test:admin</code> to see how it looks.</p><p><mark>EDIT:</mark> It looks like <a href="https://github.com/PlaidWeb/Authl/issues/43">there&rsquo;s a problem with third-party auth</a> due to the way that Heroku works. I should have anticipated this. Third-party auth is temporarily disabled for now. (But this doesn&rsquo;t affect <code>AutoAuth</code> at least!)</p>

]]>
        </content>
    </entry>
    
    <entry>
        <title>Publ v0.5.6 released</title>
        <link href="http://publ.beesbuzz.biz/blog/199-Publ-v0.5.6-released" rel="alternate" type="text/html" />
        <published>2019-10-25T22:45:53-07:00</published>
        <updated>2019-10-25T22:45:53-07:00</updated>
        <id>urn:uuid:739ac6e4-ee94-5dd2-b781-89358041cdec</id>
        <author><name>fluffy</name></author>
        <content type="html">
<![CDATA[
<p>Oops, I&rsquo;d been sitting on a bunch of bugfixes for a month, which I didn&rsquo;t notice until I put in another bugfix tonight.</p><p>Changes since v0.5.5:</p>
<ul>
<li>Fix title sanitization</li>
<li>Handle category.name with the same formatting options as entry.title</li>
<li>Replace hand-rolled atomic file operations with <a href="https://pypi.org/project/atomicwrites/">atomicwrites</a></li>
<li>Add <a href="http://publ.beesbuzz.biz/manual/335-Image-renditions#link_class"><code>link_class</code></a> to image renditions</li>
<li>Fix automatic <code>alt</code> generation for external images</li>
<li>Simplify the way entry URLs are canonicized</li>
<li>Fix some bitrot in older tests</li>
</ul>


]]>
        </content>
    </entry>
    
    <entry>
        <title>Why Publ won&#39;t support magic auth links</title>
        <link href="http://publ.beesbuzz.biz/blog/1266-Why-Publ-won-t-support-magic-auth-links" rel="alternate" type="text/html" />
        <published>2019-10-25T17:36:11-07:00</published>
        <updated>2019-10-25T17:36:11-07:00</updated>
        <id>urn:uuid:6695ff51-4390-5f69-affd-544a44f80f8a</id>
        <author><name>fluffy</name></author>
        <content type="html">
<![CDATA[
<p>Since adding user authentication to Publ, I&rsquo;ve been thinking of ways of allowing people to subscribe to sites from feed readers while getting their own native authorization, so that people can see entries directly in their readers rather than needing the clumsy mechanisms of unauthorized placeholder entries.</p><p>Out of the box, Publ authentication does support a shared cookie jar; if you can provide your cookies to your feed reader in some way, then things will Just Work. Unfortunately, I don&rsquo;t know of any feed readers that actually support this, at least not easily. (Back when most browsers had a feed reader built-in this was a lot simpler. But time marches on.)</p><p>The two mechanisms which seemed most promising are <a href="https://indieweb.org/AutoAuth">AutoAuth</a> and &ldquo;magic links,&rdquo; where users get signed URLs that come pre-authenticated and show the full authorized content for that user. AutoAuth is still in a draft phase that&rsquo;s stuck in a chicken-and-egg situation (and also requires a lot of buy-in to IndieWeb protocols, which is still a pill too large to swallow for most of the folks who follow my blog), so magic feed links seemed like the best path forward.</p><p>I even got so far as to <a href="https://github.com/PlaidWeb/Publ/issues/282">draft out an implementation</a>, but there&rsquo;s a few bad issues with it which just made me opt not to.</p>

<h2 id="1266_h2_1_Feed-discovery"><a href="http://publ.beesbuzz.biz/blog/1266-Why-Publ-won-t-support-magic-auth-links#1266_h2_1_Feed-discovery"></a>Feed discovery</h2><p>Right now, when people want to subscribe to a feed, they usually point their feed reader at the URL for the website, and then let the reader software discover the feed. Usually there will be a <code>&lt;link&gt;</code> tag that provides the feed URL, like:</p><figure class="blockcode"><pre class="highlight" data-language="html" data-line-numbers><span class="line" id="e1266cb1L1"><a class="line-number" href="http://publ.beesbuzz.biz/blog/1266-Why-Publ-won-t-support-magic-auth-links#e1266cb1L1"></a><span class="line-content"><span class="p">&lt;</span><span class="nt">link</span> <span class="na">rel</span><span class="o">=</span><span class="s">&quot;alternate&quot;</span> <span class="na">type</span><span class="o">=</span><span class="s">&quot;application/atom+xml&quot;</span> <span class="na">title</span><span class="o">=</span><span class="s">&quot;Atom feed&quot;</span> <span class="na">href</span><span class="o">=</span><span class="s">&quot;feed&quot;</span> <span class="p">/&gt;</span></span></span>
</pre></figure><p>Sometimes there may be more than one of these <code>&lt;link&gt;</code> tags for different styles of feed; for example, it might have both RSS and Atom versions, or there might be a choice between full-content and summary, or a comments feed, and so on. Some feed readers will show a list and allow the user to select which feed to use, while others will simply use the first one.</p><p>In the case of a magic link, however, these links are only provided to the person who is logged in. An external feed reader won&rsquo;t be logged in, and therefore won&rsquo;t see the magic link.</p><p>So, an alternate discovery mechanism must be provided; usually this will take the form of a widget in the corner of the page where clicking on it will expand a text box you can select the (possibly really long) feed link from and then paste <em>that</em> into your feed reader. There is no standard approach to doing this, and is confusing and weird.</p><h2 id="1266_h2_2_Item-sharing"><a href="http://publ.beesbuzz.biz/blog/1266-Why-Publ-won-t-support-magic-auth-links#1266_h2_2_Item-sharing"></a>Item sharing</h2><p>The bigger problem, however, and the reason I decided to abandon the project entirely, is that the way that Atom specifies item sharing makes this incredibly dangerous.</p><p>Atom provides a way of sharing items; <a href="https://github.com/fluffy-critter/Feed-on-Feeds">Feed on Feeds</a> implements this, for example. If you share an item, its Atom entry looks like this:</p><figure class="blockcode"><pre class="highlight" data-language="xml" data-line-numbers><span class="line" id="e1266cb2L1"><a class="line-number" href="http://publ.beesbuzz.biz/blog/1266-Why-Publ-won-t-support-magic-auth-links#e1266cb2L1"></a><span class="line-content"><span class="nt">&lt;entry&gt;</span></span></span>
<span class="line" id="e1266cb2L2"><a class="line-number" href="http://publ.beesbuzz.biz/blog/1266-Why-Publ-won-t-support-magic-auth-links#e1266cb2L2"></a><span class="line-content"><span class="nt">&lt;id&gt;</span>urn:uuid:dacd7607-380e-526d-b688-60d8d334bde7<span class="nt">&lt;/id&gt;</span></span></span>
<span class="line" id="e1266cb2L3"><a class="line-number" href="http://publ.beesbuzz.biz/blog/1266-Why-Publ-won-t-support-magic-auth-links#e1266cb2L3"></a><span class="line-content"><span class="nt">&lt;link</span><span class="w"> </span><span class="na">href=</span><span class="s">&quot;https://beesbuzz.biz/comics/journal/3675-ADDitive&quot;</span><span class="w"> </span><span class="na">rel=</span><span class="s">&quot;alternate&quot;</span><span class="w"> </span><span class="na">type=</span><span class="s">&quot;text/html&quot;</span><span class="nt">/&gt;</span></span></span>
<span class="line" id="e1266cb2L4"><a class="line-number" href="http://publ.beesbuzz.biz/blog/1266-Why-Publ-won-t-support-magic-auth-links#e1266cb2L4"></a><span class="line-content"><span class="nt">&lt;title</span><span class="w"> </span><span class="na">type=</span><span class="s">&quot;html&quot;</span><span class="nt">&gt;</span>Journal:<span class="w"> </span>ADDitive<span class="nt">&lt;/title&gt;</span></span></span>
<span class="line" id="e1266cb2L5"><a class="line-number" href="http://publ.beesbuzz.biz/blog/1266-Why-Publ-won-t-support-magic-auth-links#e1266cb2L5"></a><span class="line-content"><span class="nt">&lt;summary</span><span class="w"> </span><span class="na">type=</span><span class="s">&quot;html&quot;</span><span class="nt">&gt;</span></span></span>
<span class="line" id="e1266cb2L6"><a class="line-number" href="http://publ.beesbuzz.biz/blog/1266-Why-Publ-won-t-support-magic-auth-links#e1266cb2L6"></a><span class="line-content"><span class="cm">&lt;!-- actual item content goes here --&gt;</span></span></span>
<span class="line" id="e1266cb2L7"><a class="line-number" href="http://publ.beesbuzz.biz/blog/1266-Why-Publ-won-t-support-magic-auth-links#e1266cb2L7"></a><span class="line-content"><span class="nt">&lt;/summary&gt;</span></span></span>
<span class="line" id="e1266cb2L8"><a class="line-number" href="http://publ.beesbuzz.biz/blog/1266-Why-Publ-won-t-support-magic-auth-links#e1266cb2L8"></a><span class="line-content"><span class="nt">&lt;updated&gt;</span>2019-10-15T23:14:52Z<span class="nt">&lt;/updated&gt;</span></span></span>
<span class="line" id="e1266cb2L9"><a class="line-number" href="http://publ.beesbuzz.biz/blog/1266-Why-Publ-won-t-support-magic-auth-links#e1266cb2L9"></a><span class="line-content"><span class="nt">&lt;source&gt;</span></span></span>
<span class="line" id="e1266cb2L10"><a class="line-number" href="http://publ.beesbuzz.biz/blog/1266-Why-Publ-won-t-support-magic-auth-links#e1266cb2L10"></a><span class="line-content"><span class="w">  </span><span class="nt">&lt;id&gt;</span>https://beesbuzz.biz/<span class="nt">&lt;/id&gt;</span></span></span>
<span class="line" id="e1266cb2L11"><a class="line-number" href="http://publ.beesbuzz.biz/blog/1266-Why-Publ-won-t-support-magic-auth-links#e1266cb2L11"></a><span class="line-content"><span class="w">  </span><span class="nt">&lt;link</span><span class="w"> </span><span class="na">href=</span><span class="s">&quot;https://beesbuzz.biz/&quot;</span><span class="w"> </span><span class="na">rel=</span><span class="s">&quot;alternate&quot;</span><span class="w"> </span><span class="na">type=</span><span class="s">&quot;text/html&quot;</span><span class="nt">/&gt;</span></span></span>
<span class="line" id="e1266cb2L12"><a class="line-number" href="http://publ.beesbuzz.biz/blog/1266-Why-Publ-won-t-support-magic-auth-links#e1266cb2L12"></a><span class="line-content"><span class="w">  </span><span class="nt">&lt;link</span><span class="w"> </span><span class="na">href=</span><span class="s">&quot;https://beesbuzz.biz/feed&quot;</span><span class="w"> </span><span class="na">rel=</span><span class="s">&quot;self&quot;</span><span class="w"> </span><span class="na">type=</span><span class="s">&quot;application/atom+xml&quot;</span><span class="nt">/&gt;</span></span></span>
<span class="line" id="e1266cb2L13"><a class="line-number" href="http://publ.beesbuzz.biz/blog/1266-Why-Publ-won-t-support-magic-auth-links#e1266cb2L13"></a><span class="line-content"><span class="w">  </span><span class="nt">&lt;title&gt;</span>busybee<span class="nt">&lt;/title&gt;</span></span></span>
<span class="line" id="e1266cb2L14"><a class="line-number" href="http://publ.beesbuzz.biz/blog/1266-Why-Publ-won-t-support-magic-auth-links#e1266cb2L14"></a><span class="line-content"><span class="nt">&lt;/source&gt;</span></span></span>
<span class="line" id="e1266cb2L15"><a class="line-number" href="http://publ.beesbuzz.biz/blog/1266-Why-Publ-won-t-support-magic-auth-links#e1266cb2L15"></a><span class="line-content"><span class="nt">&lt;/entry&gt;</span></span></span>
</pre></figure><p>That <code>&lt;source&gt;</code> block is what to look at; namely, the <code>rel=&quot;self&quot;</code>. It provides a link back to the original feed. This means that if someone were to share an item from an authenticated feed &ndash; regardless of the privacy of the item itself &ndash; it would also share the authenticated feed URL. This can be <em>very, very bad.</em></p><h2 id="1266_h2_3_So-what-are-the-alternatives"><a href="http://publ.beesbuzz.biz/blog/1266-Why-Publ-won-t-support-magic-auth-links#1266_h2_3_So-what-are-the-alternatives"></a>So what are the alternatives?</h2><p>As stated in the preamble, the two major alternatives are shared cookies, and AutoAuth. Neither is a perfect solution.</p><p>Shared cookies are great if you can synchronize your session cookies between your browser and your feed reader. (This is especially feasible if your feed reader is hosted in your browser.) Most feed readers don&rsquo;t work that way. So, you could export your cookies to be used by the feed reader (which hopefully uses the presence of a cookie to avoid deduping subscriptions! I&rsquo;m pretty sure Feed On Feeds doesn&rsquo;t!), but if cookies have an expiration date on them (which Publ cookies absolutely do) this means having to re-export periodically.</p><p>Some sort of feed metadata indicating that there is a login/auth mechanism available might be workable; something like <code>&lt;link rel=&quot;authenticate&quot;&gt;</code> which prompts the browser to pop up some sort of proxy popup so that it can intercept the login cookie, for example. This might be a nice middle ground to AutoAuth without requiring every user to buy in fully to the IndieWeb experience.</p><p>(And, of course, supporting AutoAuth would be ideal for those who <em>do</em>.)</p><p>I think having some sort of &ldquo;hey, please log in&rdquo; metadata in the feed is also helpful if only because it gives a cue to a subscriber that there&rsquo;s something to authenticate against in the first place. But this purpose is already served by having empty &ldquo;private post&rdquo; stub entries&hellip;</p><h2 id="1266_h2_4_Other-things-to-consider"><a href="http://publ.beesbuzz.biz/blog/1266-Why-Publ-won-t-support-magic-auth-links#1266_h2_4_Other-things-to-consider"></a>Other things to consider</h2><p>While I&rsquo;m ramble-thinking about this stuff, I&rsquo;d also like to see a better mechanism for dealing with authentication around <a href="https://indieweb.org/WebSub">WebSub</a>. As far as I&rsquo;ve seen, there are three kinds of WebSub push:</p>
<ol>
<li>Full-feed &ldquo;fat ping&rdquo; (i.e. the push notification contains the entire feed content)</li>
<li>Update-only &ldquo;fat ping&rdquo; (i.e. it only contains the new/changed items)</li>
<li>Notification-only &ldquo;thin ping&rdquo; (it only sends a notification of the update and then the recipient needs to do a pull of the content, once notified)</li>
</ol>
<p>The WebSub model doesn&rsquo;t really have any provisions for determining authentication/authorization status, as there&rsquo;s no mechanism for associating authentication stuff with the subscription topic. In case 3 it doesn&rsquo;t really matter &ndash; the client will just provide its normal content-pull credentials &ndash; but in cases 1 and 2 it matters quite a lot, as the content needs to be pre-filtered through the authentication layer.</p><p>For what it&rsquo;s worth, on all of my sites I use <a href="http://superfeedr.com/">SuperFeedr</a> as my WebSub hub, which does case 2 (actually a particularly annoying version of it where it only pushes <em>new</em> items, rather than including changed items). It definitely doesn&rsquo;t provide the extensibility required for authenticated WebSub, and I doubt that this is anything they ever would add even if a standard were to be adopted. So, I think for the non-thin push case, it would become necessary to have a different hub. <a href="https://switchboard.p3k.io/">Switchboard</a> appears to do a full-content push (case 1 above) and doesn&rsquo;t currently support AutoAuth; however, given the author, I would expect it to add that functionality when it becomes more commonplace.</p><p>In the meantime, I think I&rsquo;ll continue on with my unauthorized stub entries; they&rsquo;re annoying to unauthorized users and they leak the fact I&rsquo;m posting private entries to the world, but at least they prompt people to sign in and notify folks that there might be something for them to read. And for better or worse it also works with my <a href="https://indieweb.org/POSSE">POSSE</a> setup.</p><h2 id="1266_h2_5_Conclusion"><a href="http://publ.beesbuzz.biz/blog/1266-Why-Publ-won-t-support-magic-auth-links#1266_h2_5_Conclusion"></a>Conclusion</h2><p>Software is hard.</p>

]]>
        </content>
    </entry>
    
    <entry>
        <title>Pushl v0.2.12</title>
        <link href="http://publ.beesbuzz.biz/blog/796-Pushl-v0.2.12" rel="alternate" type="text/html" />
        <published>2019-10-03T01:49:17-07:00</published>
        <updated>2019-10-03T01:49:17-07:00</updated>
        <id>urn:uuid:14daec75-e041-59ba-b09f-2e91ca5c1538</id>
        <author><name>fluffy</name></author>
        <content type="html">
<![CDATA[
<p>I have now released Pushl v0.2.12. The following is new:</p>
<ul>
<li>It now respects <code>rel=&quot;canonical&quot;</code> or <code>rel=&quot;self&quot;</code> when determining which URL to send a WebSub ping for</li>
<li>You can now send self-pings using the <code>--self-pings</code> parameter</li>
<li>Miscellaneous code cleanups</li>
</ul>


]]>
        </content>
    </entry>
    

    
</feed>