summaryrefslogtreecommitdiff
path: root/feed.rss
diff options
context:
space:
mode:
authorNavan Chauhan <navanchauhan@gmail.com>2020-12-01 21:02:38 +0530
committerNavan Chauhan <navanchauhan@gmail.com>2020-12-01 21:02:38 +0530
commit0d55d361194c8bc7da5e77e6abe42369b3e83aae (patch)
tree9891af1518376de8d9072fcc3c9c9731bde20b92 /feed.rss
parent82313b242eca0372c43c67f075a8aecd6ca0e1b9 (diff)
Publish deploy 2020-12-01 21:02
Diffstat (limited to 'feed.rss')
-rw-r--r--feed.rss197
1 files changed, 196 insertions, 1 deletions
diff --git a/feed.rss b/feed.rss
index b0478ce..3a6fd13 100644
--- a/feed.rss
+++ b/feed.rss
@@ -1,4 +1,199 @@
-<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content"><channel><title>Navan Chauhan</title><description>Welcome to my personal fragment of the internet. Majority of the posts should be complete.</description><link>https://navanchauhan.github.io/</link><language>en</language><lastBuildDate>Tue, 17 Nov 2020 15:50:56 +0530</lastBuildDate><pubDate>Tue, 17 Nov 2020 15:50:56 +0530</pubDate><ttl>250</ttl><atom:link href="https://navanchauhan.github.io/feed.rss" rel="self" type="application/rss+xml"/><item><guid isPermaLink="true">https://navanchauhan.github.io/posts/2020-11-17-Lets-Encrypt-DuckDns</guid><title>Generating HTTPS Certificate using DNS a Challenge through Let's Encrypt</title><description>Short code-snippet to generate HTTPS certificates using the DNS Challenge through Lets Encrypt for a web-server using DuckDNS.</description><link>https://navanchauhan.github.io/posts/2020-11-17-Lets-Encrypt-DuckDns</link><pubDate>Tue, 17 Nov 2020 15:04:00 +0530</pubDate><content:encoded><![CDATA[<h1>Generating HTTPS Certificate using DNS a Challenge through Let's Encrypt</h1><p>I have a Raspberry-Pi running a Flask app through Gunicorn (Ubuntu 20.04 LTS). I am exposing it to the internet using DuckDNS.</p><h2>Dependencies</h2><pre><code><div class="highlight"><span></span>sudo apt update <span class="o">&amp;&amp;</span> sudo apt install certbot -y
+<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content"><channel><title>Navan Chauhan</title><description>Welcome to my personal fragment of the internet. Majority of the posts should be complete.</description><link>https://navanchauhan.github.io/</link><language>en</language><lastBuildDate>Tue, 1 Dec 2020 21:02:17 +0530</lastBuildDate><pubDate>Tue, 1 Dec 2020 21:02:17 +0530</pubDate><ttl>250</ttl><atom:link href="https://navanchauhan.github.io/feed.rss" rel="self" type="application/rss+xml"/><item><guid isPermaLink="true">https://navanchauhan.github.io/posts/2020-12-1-HTML-JS-RSS-Feed</guid><title>RSS Feed written in HTML + JavaScript</title><description>Short code-snippet for an RSS feed, written in HTML and JavaScript</description><link>https://navanchauhan.github.io/posts/2020-12-1-HTML-JS-RSS-Feed</link><pubDate>Tue, 1 Dec 2020 20:52:00 +0530</pubDate><content:encoded><![CDATA[<h1>RSS Feed written in HTML + JavaScript</h1><p>If you want to directly open the HTML file in your browser after saving, don't forget to set <code>CORS_PROXY=""</code></p><pre><code><div class="highlight"><span></span><span class="cp">&lt;!doctype html&gt;</span>
+<span class="p">&lt;</span><span class="nt">html</span> <span class="na">lang</span><span class="o">=</span><span class="s">&quot;en&quot;</span><span class="p">&gt;</span>
+<span class="p">&lt;</span><span class="nt">head</span><span class="p">&gt;</span>
+ <span class="p">&lt;</span><span class="nt">meta</span> <span class="na">charset</span><span class="o">=</span><span class="s">&quot;utf-8&quot;</span><span class="p">&gt;</span>
+ <span class="p">&lt;</span><span class="nt">meta</span> <span class="na">name</span><span class="o">=</span><span class="s">&quot;viewport&quot;</span> <span class="na">content</span><span class="o">=</span><span class="s">&quot;width=device-width, initial-scale=1&quot;</span><span class="p">&gt;</span>
+ <span class="p">&lt;</span><span class="nt">title</span><span class="p">&gt;</span>
+ RSS Feed
+ <span class="p">&lt;/</span><span class="nt">title</span><span class="p">&gt;</span>
+ <span class="p">&lt;</span><span class="nt">link</span> <span class="na">rel</span><span class="o">=</span><span class="s">&quot;stylesheet&quot;</span> <span class="na">href</span><span class="o">=</span><span class="s">&quot;https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css&quot;</span> <span class="na">integrity</span><span class="o">=</span><span class="s">&quot;sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO&quot;</span> <span class="na">crossorigin</span><span class="o">=</span><span class="s">&quot;anonymous&quot;</span><span class="p">&gt;</span>
+<span class="p">&lt;/</span><span class="nt">head</span><span class="p">&gt;</span>
+<span class="p">&lt;</span><span class="nt">body</span><span class="p">&gt;</span>
+
+<span class="p">&lt;</span><span class="nt">h1</span> <span class="na">align</span><span class="o">=</span><span class="s">&quot;center&quot;</span> <span class="na">class</span><span class="o">=</span><span class="s">&quot;display-1&quot;</span><span class="p">&gt;</span>RSS Feed<span class="p">&lt;/</span><span class="nt">h1</span><span class="p">&gt;</span>
+<span class="p">&lt;</span><span class="nt">main</span><span class="p">&gt;</span>
+ <span class="p">&lt;</span><span class="nt">div</span> <span class="na">class</span><span class="o">=</span><span class="s">&quot;container&quot;</span><span class="p">&gt;</span>
+ <span class="p">&lt;</span><span class="nt">div</span> <span class="na">class</span><span class="o">=</span><span class="s">&quot;list-group pb-4&quot;</span> <span class="na">id</span><span class="o">=</span><span class="s">&quot;contents&quot;</span><span class="p">&gt;&lt;/</span><span class="nt">div</span><span class="p">&gt;</span>
+<span class="p">&lt;</span><span class="nt">div</span> <span class="na">id</span><span class="o">=</span><span class="s">&quot;feed&quot;</span><span class="p">&gt;</span>
+<span class="p">&lt;/</span><span class="nt">div</span><span class="p">&gt;&lt;/</span><span class="nt">div</span><span class="p">&gt;</span>
+<span class="p">&lt;/</span><span class="nt">main</span><span class="p">&gt;</span>
+
+<span class="p">&lt;</span><span class="nt">script</span> <span class="na">src</span><span class="o">=</span><span class="s">&quot;https://gitcdn.xyz/repo/rbren/rss-parser/master/dist/rss-parser.js&quot;</span><span class="p">&gt;&lt;/</span><span class="nt">script</span><span class="p">&gt;</span>
+<span class="p">&lt;</span><span class="nt">script</span><span class="p">&gt;</span>
+
+<span class="kr">const</span> <span class="nx">feeds</span> <span class="o">=</span> <span class="p">{</span>
+ <span class="s2">&quot;BuzzFeed - India&quot;</span><span class="o">:</span> <span class="p">{</span>
+ <span class="s2">&quot;link&quot;</span><span class="o">:</span><span class="s2">&quot;https://www.buzzfeed.com/in.xml&quot;</span><span class="p">,</span>
+ <span class="s2">&quot;summary&quot;</span><span class="o">:</span><span class="kc">true</span>
+ <span class="p">},</span>
+ <span class="s2">&quot;New Yorker&quot;</span><span class="o">:</span> <span class="p">{</span>
+ <span class="s2">&quot;link&quot;</span><span class="o">:</span><span class="s2">&quot;http://www.newyorker.com/feed/news&quot;</span><span class="p">,</span>
+ <span class="p">},</span>
+ <span class="s2">&quot;Vox&quot;</span><span class="o">:</span><span class="p">{</span>
+ <span class="s2">&quot;link&quot;</span><span class="o">:</span><span class="s2">&quot;https://www.vox.com/rss/index.xml&quot;</span><span class="p">,</span>
+ <span class="s2">&quot;limit&quot;</span><span class="o">:</span> <span class="mf">3</span>
+ <span class="p">},</span>
+ <span class="s2">&quot;r/Jokes&quot;</span><span class="o">:</span><span class="p">{</span>
+ <span class="s2">&quot;link&quot;</span><span class="o">:</span><span class="s2">&quot;https://reddit.com/r/Jokes/hot/.rss?sort=hot&quot;</span><span class="p">,</span>
+ <span class="s2">&quot;ignore&quot;</span><span class="o">:</span> <span class="p">[</span><span class="s2">&quot;repost&quot;</span><span class="p">,</span><span class="s2">&quot;discord&quot;</span><span class="p">]</span>
+ <span class="p">}</span>
+<span class="p">}</span>
+
+<span class="kr">const</span> <span class="nx">config_extra</span> <span class="o">=</span> <span class="p">{</span>
+<span class="s2">&quot;Responsive-Images&quot;</span><span class="o">:</span> <span class="kc">true</span><span class="p">,</span>
+<span class="s2">&quot;direct-link&quot;</span><span class="o">:</span> <span class="kc">false</span><span class="p">,</span>
+<span class="s2">&quot;show-date&quot;</span><span class="o">:</span><span class="kc">false</span><span class="p">,</span>
+<span class="s2">&quot;left-column&quot;</span><span class="o">:</span><span class="kc">false</span><span class="p">,</span>
+<span class="s2">&quot;defaults&quot;</span><span class="o">:</span> <span class="p">{</span>
+ <span class="s2">&quot;limit&quot;</span><span class="o">:</span> <span class="mf">5</span><span class="p">,</span>
+ <span class="s2">&quot;summary&quot;</span><span class="o">:</span> <span class="kc">true</span>
+<span class="p">}</span>
+<span class="p">}</span>
+
+<span class="kr">const</span> <span class="nx">CORS_PROXY</span> <span class="o">=</span> <span class="s2">&quot;https://cors-anywhere.herokuapp.com/&quot;</span>
+
+<span class="kd">var</span> <span class="nx">contents_title</span> <span class="o">=</span> <span class="nb">document</span><span class="p">.</span><span class="nx">createElement</span><span class="p">(</span><span class="s2">&quot;h2&quot;</span><span class="p">)</span>
+<span class="nx">contents_title</span><span class="p">.</span><span class="nx">textContent</span> <span class="o">=</span> <span class="s2">&quot;Contents&quot;</span>
+<span class="nx">contents_title</span><span class="p">.</span><span class="nx">classList</span><span class="p">.</span><span class="nx">add</span><span class="p">(</span><span class="s2">&quot;pb-1&quot;</span><span class="p">)</span>
+<span class="nb">document</span><span class="p">.</span><span class="nx">getElementById</span><span class="p">(</span><span class="s2">&quot;contents&quot;</span><span class="p">).</span><span class="nx">appendChild</span><span class="p">(</span><span class="nx">contents_title</span><span class="p">)</span>
+
+<span class="nx">async</span> <span class="kd">function</span> <span class="nx">myfunc</span><span class="p">(</span><span class="nx">key</span><span class="p">){</span>
+
+ <span class="kd">var</span> <span class="nx">count_lim</span> <span class="o">=</span> <span class="nx">feeds</span><span class="p">[</span><span class="nx">key</span><span class="p">][</span><span class="s2">&quot;limit&quot;</span><span class="p">]</span>
+ <span class="kd">var</span> <span class="nx">count_lim</span> <span class="o">=</span> <span class="p">(</span><span class="nx">count_lim</span> <span class="o">===</span> <span class="kc">undefined</span><span class="p">)</span> <span class="o">?</span> <span class="nx">config_extra</span><span class="p">[</span><span class="s2">&quot;defaults&quot;</span><span class="p">][</span><span class="s2">&quot;limit&quot;</span><span class="p">]</span> <span class="o">:</span> <span class="nx">count_lim</span>
+
+ <span class="kd">var</span> <span class="nx">show_summary</span> <span class="o">=</span> <span class="nx">feeds</span><span class="p">[</span><span class="nx">key</span><span class="p">][</span><span class="s2">&quot;summary&quot;</span><span class="p">]</span>
+ <span class="kd">var</span> <span class="nx">show_summary</span> <span class="o">=</span> <span class="p">(</span><span class="nx">show_summary</span> <span class="o">===</span> <span class="kc">undefined</span><span class="p">)</span> <span class="o">?</span> <span class="nx">config_extra</span><span class="p">[</span><span class="s2">&quot;defaults&quot;</span><span class="p">][</span><span class="s2">&quot;summary&quot;</span><span class="p">]</span> <span class="o">:</span> <span class="nx">show_summary</span>
+
+ <span class="kd">var</span> <span class="nx">ignore_tags</span> <span class="o">=</span> <span class="nx">feeds</span><span class="p">[</span><span class="nx">key</span><span class="p">][</span><span class="s2">&quot;ignore&quot;</span><span class="p">]</span>
+ <span class="kd">var</span> <span class="nx">ignore_tags</span> <span class="o">=</span> <span class="p">(</span><span class="nx">ignore_tags</span> <span class="o">===</span> <span class="kc">undefined</span><span class="p">)</span> <span class="o">?</span> <span class="p">[]</span> <span class="o">:</span> <span class="nx">ignore_tags</span>
+
+ <span class="kd">var</span> <span class="nx">contents</span> <span class="o">=</span> <span class="nb">document</span><span class="p">.</span><span class="nx">createElement</span><span class="p">(</span><span class="s2">&quot;a&quot;</span><span class="p">)</span>
+ <span class="nx">contents</span><span class="p">.</span><span class="nx">href</span> <span class="o">=</span> <span class="s2">&quot;#&quot;</span> <span class="o">+</span> <span class="nx">key</span>
+ <span class="nx">contents</span><span class="p">.</span><span class="nx">classList</span><span class="p">.</span><span class="nx">add</span><span class="p">(</span><span class="s2">&quot;list-group-item&quot;</span><span class="p">,</span><span class="s2">&quot;list-group-item-action&quot;</span><span class="p">)</span>
+ <span class="nx">contents</span><span class="p">.</span><span class="nx">textContent</span> <span class="o">=</span> <span class="nx">key</span>
+ <span class="nb">document</span><span class="p">.</span><span class="nx">getElementById</span><span class="p">(</span><span class="s2">&quot;contents&quot;</span><span class="p">).</span><span class="nx">appendChild</span><span class="p">(</span><span class="nx">contents</span><span class="p">)</span>
+ <span class="kd">var</span> <span class="nx">feed_div</span> <span class="o">=</span> <span class="nb">document</span><span class="p">.</span><span class="nx">createElement</span><span class="p">(</span><span class="s2">&quot;div&quot;</span><span class="p">)</span>
+ <span class="nx">feed_div</span><span class="p">.</span><span class="nx">id</span> <span class="o">=</span> <span class="nx">key</span>
+ <span class="nx">feed_div</span><span class="p">.</span><span class="nx">setAttribute</span><span class="p">(</span><span class="s2">&quot;id&quot;</span><span class="p">,</span> <span class="nx">key</span><span class="p">);</span>
+ <span class="kd">var</span> <span class="nx">title</span> <span class="o">=</span> <span class="nb">document</span><span class="p">.</span><span class="nx">createElement</span><span class="p">(</span><span class="s2">&quot;h2&quot;</span><span class="p">);</span>
+ <span class="nx">title</span><span class="p">.</span><span class="nx">textContent</span> <span class="o">=</span> <span class="s2">&quot;From &quot;</span> <span class="o">+</span> <span class="nx">key</span><span class="p">;</span>
+ <span class="nx">title</span><span class="p">.</span><span class="nx">classList</span><span class="p">.</span><span class="nx">add</span><span class="p">(</span><span class="s2">&quot;pb-1&quot;</span><span class="p">)</span>
+ <span class="nx">feed_div</span><span class="p">.</span><span class="nx">appendChild</span><span class="p">(</span><span class="nx">title</span><span class="p">)</span>
+ <span class="nb">document</span><span class="p">.</span><span class="nx">getElementById</span><span class="p">(</span><span class="s2">&quot;feed&quot;</span><span class="p">).</span><span class="nx">appendChild</span><span class="p">(</span><span class="nx">feed_div</span><span class="p">)</span>
+ <span class="kd">var</span> <span class="nx">parser</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">RSSParser</span><span class="p">();</span>
+ <span class="kd">var</span> <span class="nx">countPosts</span> <span class="o">=</span> <span class="mf">0</span>
+ <span class="nx">parser</span><span class="p">.</span><span class="nx">parseURL</span><span class="p">(</span><span class="nx">CORS_PROXY</span> <span class="o">+</span> <span class="nx">feeds</span><span class="p">[</span><span class="nx">key</span><span class="p">][</span><span class="s2">&quot;link&quot;</span><span class="p">],</span> <span class="kd">function</span><span class="p">(</span><span class="nx">err</span><span class="p">,</span> <span class="nx">feed</span><span class="p">)</span> <span class="p">{</span>
+ <span class="k">if</span> <span class="p">(</span><span class="nx">err</span><span class="p">)</span> <span class="k">throw</span> <span class="nx">err</span><span class="p">;</span>
+ <span class="nx">feed</span><span class="p">.</span><span class="nx">items</span><span class="p">.</span><span class="nx">forEach</span><span class="p">(</span><span class="kd">function</span><span class="p">(</span><span class="nx">entry</span><span class="p">)</span> <span class="p">{</span>
+ <span class="k">if</span> <span class="p">(</span><span class="nx">countPosts</span> <span class="o">&lt;</span> <span class="nx">count_lim</span><span class="p">)</span> <span class="p">{</span>
+
+ <span class="kd">var</span> <span class="nx">skip</span> <span class="o">=</span> <span class="kc">false</span>
+ <span class="k">for</span><span class="p">(</span><span class="kd">var</span> <span class="nx">i</span> <span class="o">=</span> <span class="mf">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&lt;</span> <span class="nx">ignore_tags</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
+ <span class="k">if</span> <span class="p">(</span><span class="nx">entry</span><span class="p">.</span><span class="nx">title</span><span class="p">.</span><span class="nx">includes</span><span class="p">(</span><span class="nx">ignore_tags</span><span class="p">[</span><span class="nx">i</span><span class="p">])){</span>
+ <span class="kd">var</span> <span class="nx">skip</span> <span class="o">=</span> <span class="kc">true</span>
+ <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="nx">entry</span><span class="p">.</span><span class="nx">content</span><span class="p">.</span><span class="nx">includes</span><span class="p">(</span><span class="nx">ignore_tags</span><span class="p">[</span><span class="nx">i</span><span class="p">])){</span>
+ <span class="kd">var</span> <span class="nx">skip</span> <span class="o">=</span> <span class="kc">true</span>
+ <span class="p">}</span>
+ <span class="p">}</span>
+
+ <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">skip</span><span class="p">)</span> <span class="p">{</span>
+
+ <span class="kd">var</span> <span class="nx">node</span> <span class="o">=</span> <span class="nb">document</span><span class="p">.</span><span class="nx">createElement</span><span class="p">(</span><span class="s2">&quot;div&quot;</span><span class="p">);</span>
+ <span class="nx">node</span><span class="p">.</span><span class="nx">classList</span><span class="p">.</span><span class="nx">add</span><span class="p">(</span><span class="s2">&quot;card&quot;</span><span class="p">,</span><span class="s2">&quot;mb-3&quot;</span><span class="p">);</span>
+ <span class="kd">var</span> <span class="nx">row</span> <span class="o">=</span> <span class="nb">document</span><span class="p">.</span><span class="nx">createElement</span><span class="p">(</span><span class="s2">&quot;div&quot;</span><span class="p">)</span>
+ <span class="nx">row</span><span class="p">.</span><span class="nx">classList</span><span class="p">.</span><span class="nx">add</span><span class="p">(</span><span class="s2">&quot;row&quot;</span><span class="p">,</span><span class="s2">&quot;no-gutters&quot;</span><span class="p">)</span>
+
+ <span class="k">if</span> <span class="p">(</span><span class="nx">config_extra</span><span class="p">[</span><span class="s2">&quot;left-column&quot;</span><span class="p">]){</span>
+ <span class="kd">var</span> <span class="nx">left_col</span> <span class="o">=</span> <span class="nb">document</span><span class="p">.</span><span class="nx">createElement</span><span class="p">(</span><span class="s2">&quot;div&quot;</span><span class="p">)</span>
+ <span class="nx">left_col</span><span class="p">.</span><span class="nx">classList</span><span class="p">.</span><span class="nx">add</span><span class="p">(</span><span class="s2">&quot;col-md-2&quot;</span><span class="p">)</span>
+ <span class="kd">var</span> <span class="nx">left_col_body</span> <span class="o">=</span> <span class="nb">document</span><span class="p">.</span><span class="nx">createElement</span><span class="p">(</span><span class="s2">&quot;div&quot;</span><span class="p">)</span>
+ <span class="nx">left_col_body</span><span class="p">.</span><span class="nx">classList</span><span class="p">.</span><span class="nx">add</span><span class="p">(</span><span class="s2">&quot;card-body&quot;</span><span class="p">)</span>
+ <span class="p">}</span>
+
+ <span class="kd">var</span> <span class="nx">right_col</span> <span class="o">=</span> <span class="nb">document</span><span class="p">.</span><span class="nx">createElement</span><span class="p">(</span><span class="s2">&quot;div&quot;</span><span class="p">)</span>
+ <span class="k">if</span> <span class="p">(</span><span class="nx">config_extra</span><span class="p">[</span><span class="s2">&quot;left-column&quot;</span><span class="p">]){</span>
+ <span class="nx">right_col</span><span class="p">.</span><span class="nx">classList</span><span class="p">.</span><span class="nx">add</span><span class="p">(</span><span class="s2">&quot;col-md-10&quot;</span><span class="p">)</span>
+ <span class="p">}</span>
+ <span class="kd">var</span> <span class="nx">node_title</span> <span class="o">=</span> <span class="nb">document</span><span class="p">.</span><span class="nx">createElement</span><span class="p">(</span><span class="s2">&quot;h5&quot;</span><span class="p">)</span>
+
+ <span class="nx">node_title</span><span class="p">.</span><span class="nx">classList</span><span class="p">.</span><span class="nx">add</span><span class="p">(</span><span class="s2">&quot;card-header&quot;</span><span class="p">)</span>
+ <span class="nx">node_title</span><span class="p">.</span><span class="nx">innerHTML</span> <span class="o">=</span> <span class="nx">entry</span><span class="p">.</span><span class="nx">title</span>
+
+ <span class="nx">node_body</span> <span class="o">=</span> <span class="nb">document</span><span class="p">.</span><span class="nx">createElement</span><span class="p">(</span><span class="s2">&quot;div&quot;</span><span class="p">)</span>
+ <span class="nx">node_body</span><span class="p">.</span><span class="nx">classList</span><span class="p">.</span><span class="nx">add</span><span class="p">(</span><span class="s2">&quot;card-body&quot;</span><span class="p">)</span>
+
+ <span class="nx">node_content</span> <span class="o">=</span> <span class="nb">document</span><span class="p">.</span><span class="nx">createElement</span><span class="p">(</span><span class="s2">&quot;p&quot;</span><span class="p">)</span>
+
+ <span class="k">if</span> <span class="p">(</span><span class="nx">show_summary</span><span class="p">){</span>
+ <span class="nx">node_content</span><span class="p">.</span><span class="nx">innerHTML</span> <span class="o">=</span> <span class="nx">entry</span><span class="p">.</span><span class="nx">content</span>
+ <span class="p">}</span>
+ <span class="nx">node_content</span><span class="p">.</span><span class="nx">classList</span><span class="p">.</span><span class="nx">add</span><span class="p">(</span><span class="s2">&quot;card-text&quot;</span><span class="p">)</span>
+
+ <span class="k">if</span> <span class="p">(</span><span class="nx">config_extra</span><span class="p">[</span><span class="s2">&quot;direct-link&quot;</span><span class="p">]){</span>
+ <span class="nx">node_link</span> <span class="o">=</span> <span class="nb">document</span><span class="p">.</span><span class="nx">createElement</span><span class="p">(</span><span class="s2">&quot;p&quot;</span><span class="p">)</span>
+ <span class="nx">node_link</span><span class="p">.</span><span class="nx">classList</span><span class="p">.</span><span class="nx">add</span><span class="p">(</span><span class="s2">&quot;card-text&quot;</span><span class="p">)</span>
+ <span class="nx">node_link</span><span class="p">.</span><span class="nx">innerHTML</span> <span class="o">=</span> <span class="s2">&quot;&lt;b&gt;Link:&lt;/b&gt; &lt;a href=&#39;&quot;</span> <span class="o">+</span> <span class="nx">entry</span><span class="p">.</span><span class="nx">link</span> <span class="o">+</span><span class="s2">&quot;&#39;&gt;Direct Link&lt;/a&gt;&quot;</span>
+ <span class="k">if</span> <span class="p">(</span><span class="nx">config_extra</span><span class="p">[</span><span class="s2">&quot;left-column&quot;</span><span class="p">]){</span>
+ <span class="nx">left_col_body</span><span class="p">.</span><span class="nx">appendChild</span><span class="p">(</span><span class="nx">node_link</span><span class="p">)</span>
+ <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
+ <span class="nx">node_content</span><span class="p">.</span><span class="nx">appendChild</span><span class="p">(</span><span class="nx">node_link</span><span class="p">)</span>
+ <span class="p">}</span>
+ <span class="p">}</span>
+
+ <span class="k">if</span> <span class="p">(</span><span class="nx">config_extra</span><span class="p">[</span><span class="s2">&quot;show-date&quot;</span><span class="p">]){</span>
+ <span class="nx">node_date</span> <span class="o">=</span> <span class="nb">document</span><span class="p">.</span><span class="nx">createElement</span><span class="p">(</span><span class="s2">&quot;p&quot;</span><span class="p">)</span>
+ <span class="nx">node_date</span><span class="p">.</span><span class="nx">classList</span><span class="p">.</span><span class="nx">add</span><span class="p">(</span><span class="s2">&quot;card-text&quot;</span><span class="p">)</span>
+ <span class="nx">node_date</span><span class="p">.</span><span class="nx">innerHTML</span> <span class="o">=</span> <span class="s2">&quot;&lt;p&gt;&lt;b&gt;Date: &lt;/b&gt;&quot;</span> <span class="o">+</span> <span class="nx">entry</span><span class="p">.</span><span class="nx">pubDate</span> <span class="o">+</span> <span class="s2">&quot;&lt;/p&gt;&quot;</span>
+ <span class="k">if</span> <span class="p">(</span><span class="nx">config_extra</span><span class="p">[</span><span class="s2">&quot;left-column&quot;</span><span class="p">]){</span>
+ <span class="nx">left_col_body</span><span class="p">.</span><span class="nx">appendChild</span><span class="p">(</span><span class="nx">node_date</span><span class="p">)</span>
+ <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
+ <span class="nx">node_content</span><span class="p">.</span><span class="nx">appendChild</span><span class="p">(</span><span class="nx">node_date</span><span class="p">)</span>
+
+ <span class="p">}</span>
+ <span class="p">}</span>
+
+ <span class="nx">node</span><span class="p">.</span><span class="nx">appendChild</span><span class="p">(</span><span class="nx">node_title</span><span class="p">)</span>
+
+ <span class="nx">node_body</span><span class="p">.</span><span class="nx">appendChild</span><span class="p">(</span><span class="nx">node_content</span><span class="p">)</span>
+
+ <span class="nx">right_col</span><span class="p">.</span><span class="nx">appendChild</span><span class="p">(</span><span class="nx">node_body</span><span class="p">)</span>
+
+ <span class="k">if</span> <span class="p">(</span><span class="nx">config_extra</span><span class="p">[</span><span class="s2">&quot;left-column&quot;</span><span class="p">]){</span>
+ <span class="nx">left_col</span><span class="p">.</span><span class="nx">appendChild</span><span class="p">(</span><span class="nx">left_col_body</span><span class="p">)</span>
+ <span class="nx">row</span><span class="p">.</span><span class="nx">appendChild</span><span class="p">(</span><span class="nx">left_col</span><span class="p">)</span>
+ <span class="p">}</span>
+
+ <span class="nx">row</span><span class="p">.</span><span class="nx">appendChild</span><span class="p">(</span><span class="nx">right_col</span><span class="p">)</span>
+
+ <span class="nx">node</span><span class="p">.</span><span class="nx">appendChild</span><span class="p">(</span><span class="nx">row</span><span class="p">)</span>
+
+ <span class="nb">document</span><span class="p">.</span><span class="nx">getElementById</span><span class="p">(</span><span class="nx">key</span><span class="p">).</span><span class="nx">appendChild</span><span class="p">(</span><span class="nx">node</span><span class="p">)</span>
+ <span class="nx">countPosts</span><span class="o">+=</span><span class="mf">1</span>
+ <span class="p">}</span>
+ <span class="p">}</span>
+ <span class="p">})</span>
+
+ <span class="k">if</span> <span class="p">(</span><span class="nx">config_extra</span><span class="p">[</span><span class="s2">&quot;Responsive-Images&quot;</span><span class="p">]){</span>
+ <span class="kd">var</span> <span class="nx">inputs</span> <span class="o">=</span> <span class="nb">document</span><span class="p">.</span><span class="nx">getElementsByTagName</span><span class="p">(</span><span class="s1">&#39;img&#39;</span><span class="p">)</span>
+ <span class="k">for</span><span class="p">(</span><span class="kd">var</span> <span class="nx">i</span> <span class="o">=</span> <span class="mf">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&lt;</span> <span class="nx">inputs</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
+ <span class="nx">inputs</span><span class="p">[</span><span class="nx">i</span><span class="p">].</span><span class="nx">classList</span><span class="p">.</span><span class="nx">add</span><span class="p">(</span><span class="s2">&quot;img-fluid&quot;</span><span class="p">)</span>
+ <span class="p">}</span>
+ <span class="p">}</span>
+
+ <span class="p">})</span>
+
+ <span class="k">return</span> <span class="kc">true</span>
+<span class="p">}</span>
+<span class="p">(</span><span class="nx">async</span> <span class="p">()</span> <span class="p">=&gt;</span> <span class="p">{</span>
+<span class="k">for</span><span class="p">(</span><span class="kd">var</span> <span class="nx">key</span> <span class="k">in</span> <span class="nx">feeds</span><span class="p">)</span> <span class="p">{</span>
+ <span class="kd">let</span> <span class="nx">result</span> <span class="o">=</span> <span class="nx">await</span> <span class="nx">myfunc</span><span class="p">(</span><span class="nx">key</span><span class="p">);</span>
+<span class="p">}})();</span>
+
+<span class="p">&lt;/</span><span class="nt">script</span><span class="p">&gt;</span>
+<span class="p">&lt;</span><span class="nt">noscript</span><span class="p">&gt;</span>Uh Oh! Your browser does not support JavaScript or JavaScript is currently disabled. Please enable JavaScript or switch to a different browser.<span class="p">&lt;/</span><span class="nt">noscript</span><span class="p">&gt;</span>
+<span class="p">&lt;/</span><span class="nt">body</span><span class="p">&gt;&lt;/</span><span class="nt">html</span><span class="p">&gt;</span>
+</div></code></pre>]]></content:encoded></item><item><guid isPermaLink="true">https://navanchauhan.github.io/posts/2020-11-17-Lets-Encrypt-DuckDns</guid><title>Generating HTTPS Certificate using DNS a Challenge through Let's Encrypt</title><description>Short code-snippet to generate HTTPS certificates using the DNS Challenge through Lets Encrypt for a web-server using DuckDNS.</description><link>https://navanchauhan.github.io/posts/2020-11-17-Lets-Encrypt-DuckDns</link><pubDate>Tue, 17 Nov 2020 15:04:00 +0530</pubDate><content:encoded><![CDATA[<h1>Generating HTTPS Certificate using DNS a Challenge through Let's Encrypt</h1><p>I have a Raspberry-Pi running a Flask app through Gunicorn (Ubuntu 20.04 LTS). I am exposing it to the internet using DuckDNS.</p><h2>Dependencies</h2><pre><code><div class="highlight"><span></span>sudo apt update <span class="o">&amp;&amp;</span> sudo apt install certbot -y
</div></code></pre><h2>Get the Certificate</h2><pre><code><div class="highlight"><span></span>sudo certbot certonly --manual --preferred-challenges dns-01 --email senpai@email.com -d mydomain.duckdns.org
</div></code></pre><p>After you accept that you are okay with you IP address being logged, it will prompt you with updating your dns record. You need to create a new <code>TXT</code> record in the DNS settings for your domain.</p><p>For DuckDNS users it is as simple as entering this URL in their browser:</p><pre><code><div class="highlight"><span></span>http://duckdns.org/update?domains<span class="o">=</span>mydomain<span class="p">&amp;</span><span class="nv">token</span><span class="o">=</span>duckdnstoken<span class="p">&amp;</span><span class="nv">txt</span><span class="o">=</span>certbotdnstxt
</div></code></pre><p>Where <code>mydomain</code> is your DuckDNS domain, <code>duckdnstoken</code> is your DuckDNS Token ( Found on the dashboard when you login) and <code>certbotdnstxt</code> is the TXT record value given by the prompt.</p><p>You can check if the TXT records have been updated by using the <code>dig</code> command:</p><pre><code><div class="highlight"><span></span>dig navanspi.duckdns.org TXT