<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xml:base="https://nedzadhrnjica.com/" xmlns:atom="http://www.w3.org/2005/Atom">

<channel>
  <title>Nedzad Hrnjica</title>
  <description>Nedzad Hrnjica's site.</description>
  <language>en-us</language>
  <link>https://nedzadhrnjica.com/</link>
  <atom:link href="https://nedzadhrnjica.com/rss.xml" rel="self" type="application/rss+xml" />
  <item>
    <title>Add times and timezones to your RSS feeds</title>
    <link>https://nedzadhrnjica.com/add-times-and-timezones-to-your-rss-feeds.html</link>
    <guid>https://nedzadhrnjica.com/add-times-and-timezones-to-your-rss-feeds.html</guid>
    <pubDate>Wed, 04 Sep 2024 08:23:14 +0200</pubDate>
    <description><![CDATA[
      <p>Please do not forget to add timezone to your RSS feeds.</p>

<p>No-one wants to see the posts written at 00:00:00 or in the future relative to when they read it.</p>

<p>This is just a reminder/placeholder/quick note.</p>

<p>See more at:</p>

<ul>
<li><a href="https://chrisburnell.com/note/once-again-asking/">https://chrisburnell.com/note/once-again-asking/</a></li>
<li><a href="https://chrisburnell.com/article/lost-in-time/">https://chrisburnell.com/article/lost-in-time/</a></li>
<li><a href="https://rknight.me/blog/eleventy-post-dates/">https://rknight.me/blog/eleventy-post-dates/</a></li>
</ul>


        <hr>
        <p>Thanks for subscribing and reading this post via RSS!<br>
        You can read <a href="https://nedzadhrnjica.com/add-times-and-timezones-to-your-rss-feeds.html">this post</a> and others <a href="https://nedzadhrnjica.com/archive.html">on my website</a>.</p>
      ]]></description>
  </item>  <item>
    <title>perlbrew installation and usage</title>
    <link>https://nedzadhrnjica.com/perlbrew-installation-and-usage.html</link>
    <guid>https://nedzadhrnjica.com/perlbrew-installation-and-usage.html</guid>
    <pubDate>Fri, 30 Aug 2024 08:45:39 +0200</pubDate>
    <description><![CDATA[
      <h2>Installation</h2>

<p>Copy &amp; paste this line into your terminal.</p>

<pre><code>\curl -L https://install.perlbrew.pl | bash
</code></pre>

<p>Then, execute following line:</p>

<pre><code>echo "source ~/perl5/perlbrew/etc/bashrc" &gt;&gt; ~/.profile
</code></pre>

<p>Then, open new shell and you can start working with <code>perlbrew</code> in there.</p>

<p>All files will be installed in <code>~/perl5/perlbrew/</code>, and it will use that directory and subdirectories.</p>

<h2>Basic usage</h2>

<p>Get a list of available perls you can use:</p>

<pre><code>perlbrew available
</code></pre>

<p>Install some version of perl:</p>

<pre><code>perlbrew install perl-5.36.1
</code></pre>

<p>It will compile that perl version and install it within <code>~/perl5/perlbrew/</code> subdirectory.</p>

<p>It will take some time (around 21 minutes at my laptop), and it will take 324M of disk space.</p>

<p>Now you can list all installed perl versions:</p>

<pre><code>perlbrew list
</code></pre>

<p>To switch to specific version you can use command <code>switch</code>:</p>

<pre><code>perlbrew switch perl-5.36.1
</code></pre>

<p>To execute the script with another version of perl, but not switching to it completely:</p>

<pre><code>perlbrew exec --with perl-5.40.0 perl myprogram.pl
</code></pre>

<p>To run the script with specific version of perl from cron, use the following:</p>

<pre><code>* * * * * PERLBREW_ROOT=$HOME/perl5/ ~/perl5/perlbrew/bin/perlbrew exec --with perl-5.36.1 ~/myprogram.pl
</code></pre>

<p>For more on cron tips, see: <a href="http://johnbokma.com/blog/2019/03/08/running-a-perl-program-via-cron.html">http://johnbokma.com/blog/2019/03/08/running-a-perl-program-via-cron.html</a></p>

<p>To return back to system perl version, you can switch it off:</p>

<pre><code>perlbrew switch-off
</code></pre>

<p>For additional help:</p>

<pre><code>perlbrew -h
perlbrew help
</code></pre>

<p>See more:  <a href="https://perlbrew.pl/">https://perlbrew.pl/</a></p>

<p>See also: <a href="https://github.com/tokuhirom/plenv">https://github.com/tokuhirom/plenv</a></p>

        <hr>
        <p>Thanks for subscribing and reading this post via RSS!<br>
        You can read <a href="https://nedzadhrnjica.com/perlbrew-installation-and-usage.html">this post</a> and others <a href="https://nedzadhrnjica.com/archive.html">on my website</a>.</p>
      ]]></description>
  </item>  <item>
    <title>test23</title>
    <link>https://nedzadhrnjica.com/test23.html</link>
    <guid>https://nedzadhrnjica.com/test23.html</guid>
    <pubDate>Mon, 16 Oct 2023 09:36:02 +0200</pubDate>
    <description><![CDATA[
      <div class="h-entry">
 <a class="p-author h-card" href="https://nedzadhrnjica.com/">
   <img title="Nedžad Hrnjica" src="https://nedzadhrnjica.com/images/nedzadhrnjica.jpg" style="width: 24px; height: 24px; display: inline-block;"/>
   Nedžad Hrnjica
 </a>
 <div class="u-comment">
 in reply to:
 <a href="https://webmention.rocks/test/23/page" class="u-in-reply-to p-in-reply-to h-cite" rel="in-reply-to">https://webmention.rocks/test/23/page</a>
 <div class="p-name p-content">Great! We are at test 23 now.</div>
 </div>
 <a class="u-url" href="[% post.url %]"></a>
</div>


<p><article class="h-entry">
  <a class="p-author h-card" href="https://nedzadhrnjica.com">Nedzad Hrnjica</a>
  <div class="e-content">This is a note. I make lots of them.</div></p>

<p>  <article class="p-like h-cite">
    <a class="p-author h-card" href="https://nedzadhrnjica.com">Nedzad Hrnjica</a> liked this
    on <a class="u-url" href="https://webmention.rocks/test/23">
      <time class="dt-published">2023-01-09</time></a>
  </article>
</article></p>

        <hr>
        <p>Thanks for subscribing and reading this post via RSS!<br>
        You can read <a href="https://nedzadhrnjica.com/test23.html">this post</a> and others <a href="https://nedzadhrnjica.com/archive.html">on my website</a>.</p>
      ]]></description>
  </item>  <item>
    <title>test12</title>
    <link>https://nedzadhrnjica.com/test12.html</link>
    <guid>https://nedzadhrnjica.com/test12.html</guid>
    <pubDate>Mon, 16 Oct 2023 09:35:49 +0200</pubDate>
    <description><![CDATA[
      <div class="h-entry">
 <a class="p-author h-card" href="https://nedzadhrnjica.com/">
   <img title="Nedžad Hrnjica" src="https://nedzadhrnjica.com/images/nedzadhrnjica.jpg" style="width: 24px; height: 24px; display: inline-block;"/>
   Nedžad Hrnjica
 </a>
 liked this
 <a href="https://webmention.rocks/test/12" class="u-like-of">testpage</a>
 <a class="u-url" href="[% post.url %]"></a>
</div>


        <hr>
        <p>Thanks for subscribing and reading this post via RSS!<br>
        You can read <a href="https://nedzadhrnjica.com/test12.html">this post</a> and others <a href="https://nedzadhrnjica.com/archive.html">on my website</a>.</p>
      ]]></description>
  </item>  <item>
    <title>Watched: AINBO: Spirit of the Amazon (2021)</title>
    <link>https://nedzadhrnjica.com/watched-ainbo-spirit-of-the-amazon-2021.html</link>
    <guid>https://nedzadhrnjica.com/watched-ainbo-spirit-of-the-amazon-2021.html</guid>
    <pubDate>Thu, 26 Jan 2023 12:55:47 +0100</pubDate>
    <description><![CDATA[
      <p>When Getafix/Panoramix fell the high tree and broke his foot, he decided it's time to pass the magic potion receipt on to a young droid.
All men went on the adventure of finding the good, trustworthy druid.</p>

<p>Women are left to protect the village.</p>

        <hr>
        <p>Thanks for subscribing and reading this post via RSS!<br>
        You can read <a href="https://nedzadhrnjica.com/watched-ainbo-spirit-of-the-amazon-2021.html">this post</a> and others <a href="https://nedzadhrnjica.com/archive.html">on my website</a>.</p>
      ]]></description>
  </item>  <item>
    <title>Feeds</title>
    <link>https://nedzadhrnjica.com/bookmarks/2023/01/13/124440/index.html</link>
    <guid>https://nedzadhrnjica.com/bookmarks/2023/01/13/124440/index.html</guid>
    <pubDate>Fri, 13 Jan 2023 12:44:40 +0100</pubDate>
    <description><![CDATA[
      <blockquote><p>"Before newsletters and social networks there was RSS, a tool that helped us keep up to date with our favorite websites.</p>

<p>...even bloggers began chasing clicks and page-views...</p>

<p>RSS still exists.</p>

<p>The Open Web isn’t just a dream or a memory, it is all around us. Time to take back what’s ours."</p>

<p>- Daniel Goldsmith</p></blockquote>

        <hr>
        <p>Thanks for subscribing and reading this post via RSS!<br>
        You can read <a href="https://nedzadhrnjica.com/bookmarks/2023/01/13/124440/index.html">this post</a> and others <a href="https://nedzadhrnjica.com/archive.html">on my website</a>.</p>
      ]]></description>
  </item>  <item>
    <title>Online tool: Find a book to read</title>
    <link>https://nedzadhrnjica.com/bookmarks/2023/01/12/124536/index.html</link>
    <guid>https://nedzadhrnjica.com/bookmarks/2023/01/12/124536/index.html</guid>
    <pubDate>Thu, 12 Jan 2023 12:45:36 +0100</pubDate>
    <description><![CDATA[
      <blockquote><p>"Enter your favorite book, and get a list of suggested books to read.</p>

<p>These book picks are based on genres to achieve the best book suggestions."</p></blockquote>

        <hr>
        <p>Thanks for subscribing and reading this post via RSS!<br>
        You can read <a href="https://nedzadhrnjica.com/bookmarks/2023/01/12/124536/index.html">this post</a> and others <a href="https://nedzadhrnjica.com/archive.html">on my website</a>.</p>
      ]]></description>
  </item>  <item>
    <title>Bring Back Blogs! January 2023</title>
    <link>https://nedzadhrnjica.com/bookmarks/2023/01/12/082312/index.html</link>
    <guid>https://nedzadhrnjica.com/bookmarks/2023/01/12/082312/index.html</guid>
    <pubDate>Thu, 12 Jan 2023 08:23:12 +0100</pubDate>
    <description><![CDATA[
      <blockquote><p>"Can we all bring back blogging, together? Artists, writers, inventors, tinkerers, illustrators, designers—all makers are welcome here.</p>

<p>... Why RSS?  Rss is truly decentralized.
Readers can then subscribe in aggregate to all the feeds they love best, and read the content in one place with a service like Feedly or Old Reader. And there's no need to point them to a specific RSS feed. Most of these services only need the URL of your blog or newsletter.</p>

<p>... towards a decentralized, curated, diverse creative collective—just one interesting corner of the internet where we can all pool our networks to lift us all up."</p>

<p>- Ash and Ryan</p></blockquote>

        <hr>
        <p>Thanks for subscribing and reading this post via RSS!<br>
        You can read <a href="https://nedzadhrnjica.com/bookmarks/2023/01/12/082312/index.html">this post</a> and others <a href="https://nedzadhrnjica.com/archive.html">on my website</a>.</p>
      ]]></description>
  </item>  <item>
    <title>Return to Blogging - Christopher P. Long</title>
    <link>https://nedzadhrnjica.com/bookmarks/2023/01/12/030706/index.html</link>
    <guid>https://nedzadhrnjica.com/bookmarks/2023/01/12/030706/index.html</guid>
    <pubDate>Thu, 12 Jan 2023 03:07:06 +0100</pubDate>
    <description><![CDATA[
      <blockquote><p>"A new year brings new calls for a return to personal blogging as an antidote to the toxic and extractive systems of social media. Giving our attention and creative content to major social media corporations has always been a dubious undertaking, although for a long time, that didn't stop me from adopting Facebook and Twitter early as possible places to build community."</p>

<p>- Christopher P. Long</p></blockquote>

        <hr>
        <p>Thanks for subscribing and reading this post via RSS!<br>
        You can read <a href="https://nedzadhrnjica.com/bookmarks/2023/01/12/030706/index.html">this post</a> and others <a href="https://nedzadhrnjica.com/archive.html">on my website</a>.</p>
      ]]></description>
  </item>  <item>
    <title>Aaron Swartz - 10 Years Away From Us - Digging the Digital</title>
    <link>https://nedzadhrnjica.com/bookmarks/2023/01/11/024802/index.html</link>
    <guid>https://nedzadhrnjica.com/bookmarks/2023/01/11/024802/index.html</guid>
    <pubDate>Wed, 11 Jan 2023 02:48:02 +0100</pubDate>
    <description><![CDATA[
      <blockquote><p>"Today is the 10th anniversary of the death of Aaron Swartz, The Internet's Own Boy. Aaron Swartz was a writer, programmer, web activist and political organizer."</p></blockquote>

        <hr>
        <p>Thanks for subscribing and reading this post via RSS!<br>
        You can read <a href="https://nedzadhrnjica.com/bookmarks/2023/01/11/024802/index.html">this post</a> and others <a href="https://nedzadhrnjica.com/archive.html">on my website</a>.</p>
      ]]></description>
  </item>  <item>
    <title> The Year of the Personal Website · Matthias Ott – User Experience Designer</title>
    <link>https://nedzadhrnjica.com/bookmarks/2023/01/10/133305/index.html</link>
    <guid>https://nedzadhrnjica.com/bookmarks/2023/01/10/133305/index.html</guid>
    <pubDate>Tue, 10 Jan 2023 13:33:05 +0100</pubDate>
    <description><![CDATA[
      <blockquote><p>"So how about we make 2023 the year of the personal website? The year in which we launch our first site or redesign our old one, publish a little more often, and add RSS and Webmentions to our websites so that we can write posts back and forth. The year we make our sites more fussy, more quirky, and more personal. The year we document what we improved, share what we learned, and help each other getting started. The year we finally create a community of critical mass around all our personal websites. The year we take back our Web.</p>

<p>I'll start tonight."</p>

<p>- Matthias Ott</p></blockquote>

        <hr>
        <p>Thanks for subscribing and reading this post via RSS!<br>
        You can read <a href="https://nedzadhrnjica.com/bookmarks/2023/01/10/133305/index.html">this post</a> and others <a href="https://nedzadhrnjica.com/archive.html">on my website</a>.</p>
      ]]></description>
  </item>  <item>
    <title>Welcome to the RSS Club! | Kev Quirk</title>
    <link>https://nedzadhrnjica.com/bookmarks/2023/01/10/035353/index.html</link>
    <guid>https://nedzadhrnjica.com/bookmarks/2023/01/10/035353/index.html</guid>
    <pubDate>Tue, 10 Jan 2023 03:53:53 +0100</pubDate>
    <description><![CDATA[
      <blockquote><p>"Welcome to the RSS Club. If you can read this, you’re part of my secret society."</p>

<p>-</p></blockquote>

        <hr>
        <p>Thanks for subscribing and reading this post via RSS!<br>
        You can read <a href="https://nedzadhrnjica.com/bookmarks/2023/01/10/035353/index.html">this post</a> and others <a href="https://nedzadhrnjica.com/archive.html">on my website</a>.</p>
      ]]></description>
  </item>  <item>
    <title>Write plain text files | Derek Sivers</title>
    <link>https://nedzadhrnjica.com/bookmarks/2023/01/09/155559/index.html</link>
    <guid>https://nedzadhrnjica.com/bookmarks/2023/01/09/155559/index.html</guid>
    <pubDate>Mon, 09 Jan 2023 15:55:59 +0100</pubDate>
    <description><![CDATA[
      

        <hr>
        <p>Thanks for subscribing and reading this post via RSS!<br>
        You can read <a href="https://nedzadhrnjica.com/bookmarks/2023/01/09/155559/index.html">this post</a> and others <a href="https://nedzadhrnjica.com/archive.html">on my website</a>.</p>
      ]]></description>
  </item>  <item>
    <title>Watched: Ready Player One (2018)</title>
    <link>https://nedzadhrnjica.com/watched-ready-player-one-2018.html</link>
    <guid>https://nedzadhrnjica.com/watched-ready-player-one-2018.html</guid>
    <pubDate>Sun, 08 Jan 2023 23:13:14 +0100</pubDate>
    <description><![CDATA[
      <p>Rating: PG-13. When they are finding the second key, there are some Stephen King horror movie scenes. Everything else is fun and good for 9-year old.</p>

<p>It looks like 2045 is moved here in 2022, and its virtual reality world, drones, distant social friends, really matches today games (like Fortnite) and social networks, having us feel like it is not distant 2045, but like everything is happening now, somewhere out there. 2h20m passed so fast, waiting for what will happen next. Steven Spielberg production.</p>

        <hr>
        <p>Thanks for subscribing and reading this post via RSS!<br>
        You can read <a href="https://nedzadhrnjica.com/watched-ready-player-one-2018.html">this post</a> and others <a href="https://nedzadhrnjica.com/archive.html">on my website</a>.</p>
      ]]></description>
  </item>  <item>
    <title>Blogs of Indieweb.xyz</title>
    <link>https://nedzadhrnjica.com/bookmarks/2023/01/05/115601/index.html</link>
    <guid>https://nedzadhrnjica.com/bookmarks/2023/01/05/115601/index.html</guid>
    <pubDate>Thu, 05 Jan 2023 11:56:01 +0100</pubDate>
    <description><![CDATA[
      <blockquote><p>Blogs of Indieweb.xyz</p>

<p>This is a directory of the blogs that have posted here.
I'm hoping to build a good directory of Indieweb blogs by topic.
If you want to be listed, simply send a Webmention!</p></blockquote>

        <hr>
        <p>Thanks for subscribing and reading this post via RSS!<br>
        You can read <a href="https://nedzadhrnjica.com/bookmarks/2023/01/05/115601/index.html">this post</a> and others <a href="https://nedzadhrnjica.com/archive.html">on my website</a>.</p>
      ]]></description>
  </item>  <item>
    <title>Watched: AINBO: Spirit of the Amazon (2021)</title>
    <link>https://nedzadhrnjica.com/watched-ainbo-spirit-of-the-amazon-2021.html</link>
    <guid>https://nedzadhrnjica.com/watched-ainbo-spirit-of-the-amazon-2021.html</guid>
    <pubDate>Mon, 02 Jan 2023 10:56:19 +0100</pubDate>
    <description><![CDATA[
      <p>We enjoyed the movie!</p>

        <hr>
        <p>Thanks for subscribing and reading this post via RSS!<br>
        You can read <a href="https://nedzadhrnjica.com/watched-ainbo-spirit-of-the-amazon-2021.html">this post</a> and others <a href="https://nedzadhrnjica.com/archive.html">on my website</a>.</p>
      ]]></description>
  </item>  <item>
    <title>Ryan Voots [blogs.perl.org]</title>
    <link>https://nedzadhrnjica.com/bookmarks/2022/12/19/011152/index.html</link>
    <guid>https://nedzadhrnjica.com/bookmarks/2022/12/19/011152/index.html</guid>
    <pubDate>Mon, 19 Dec 2022 01:11:52 +0100</pubDate>
    <description><![CDATA[
      <blockquote><p>A while back I bought the https://perl.social/ domain without much immediate use for it....
... I started setting up an activitypub based network to take the place of the twitter community in the advent that there was an exodus of Perl programmers from twitter. That seems to have been happening so I finally kicked into gear to get it ready for use.</p>

<p>"https://perl.social/ should show you the public face of the community, (if it doesn't let me know).
In the upper right you'll find the login button, and can register a new user.
Once registered, like all fediverse things you'll be able to be followed by people as such @username@perl.social and can follow other users on other servers by putting them in the search box at the top and then following them."
- Ryan Voots</p></blockquote>

        <hr>
        <p>Thanks for subscribing and reading this post via RSS!<br>
        You can read <a href="https://nedzadhrnjica.com/bookmarks/2022/12/19/011152/index.html">this post</a> and others <a href="https://nedzadhrnjica.com/archive.html">on my website</a>.</p>
      ]]></description>
  </item>  <item>
    <title>Apps that let you control your data</title>
    <link>https://nedzadhrnjica.com/bookmarks/2022/12/17/015725/index.html</link>
    <guid>https://nedzadhrnjica.com/bookmarks/2022/12/17/015725/index.html</guid>
    <pubDate>Sat, 17 Dec 2022 01:57:25 +0100</pubDate>
    <description><![CDATA[
      <blockquote><p>Zero Data Apps.</p>

<p>Own your data, all of it.
Apps that let you control your data.</p></blockquote>

        <hr>
        <p>Thanks for subscribing and reading this post via RSS!<br>
        You can read <a href="https://nedzadhrnjica.com/bookmarks/2022/12/17/015725/index.html">this post</a> and others <a href="https://nedzadhrnjica.com/archive.html">on my website</a>.</p>
      ]]></description>
  </item>  <item>
    <title>The XMLHttpRequest Definitive guide</title>
    <link>https://nedzadhrnjica.com/bookmarks/2022/12/17/005622/index.html</link>
    <guid>https://nedzadhrnjica.com/bookmarks/2022/12/17/005622/index.html</guid>
    <pubDate>Sat, 17 Dec 2022 00:56:22 +0100</pubDate>
    <description><![CDATA[
      <blockquote><p>The XMLHttpRequest Definitive guide</p>

<p>Stop searching and read this.</p></blockquote>

        <hr>
        <p>Thanks for subscribing and reading this post via RSS!<br>
        You can read <a href="https://nedzadhrnjica.com/bookmarks/2022/12/17/005622/index.html">this post</a> and others <a href="https://nedzadhrnjica.com/archive.html">on my website</a>.</p>
      ]]></description>
  </item>  <item>
    <title>Writing a Damn Good README File</title>
    <link>https://nedzadhrnjica.com/bookmarks/2022/12/17/001804/index.html</link>
    <guid>https://nedzadhrnjica.com/bookmarks/2022/12/17/001804/index.html</guid>
    <pubDate>Sat, 17 Dec 2022 00:18:04 +0100</pubDate>
    <description><![CDATA[
      <blockquote><p>Raise your hand if you've ever read a README file.
Now, keep that hand raised if you've ever written a README file.
I'm going to take a shot in the dark and assume that your hand is still raised; at least, it's raised in spirit, since you probably refuse to flail your arms about like a crazy person just because I tell you to.
After code comments, the README file is one of the most ubiquitous forms of documentation found in software development today.
While not every source code repository has a README, it's a good bet that every successful one does.</p></blockquote>

        <hr>
        <p>Thanks for subscribing and reading this post via RSS!<br>
        You can read <a href="https://nedzadhrnjica.com/bookmarks/2022/12/17/001804/index.html">this post</a> and others <a href="https://nedzadhrnjica.com/archive.html">on my website</a>.</p>
      ]]></description>
  </item>  <item>
    <title>My Top 10 Favorite Movie Hackers</title>
    <link>https://nedzadhrnjica.com/bookmarks/2022/12/15/134908/index.html</link>
    <guid>https://nedzadhrnjica.com/bookmarks/2022/12/15/134908/index.html</guid>
    <pubDate>Thu, 15 Dec 2022 13:49:08 +0100</pubDate>
    <description><![CDATA[
      <blockquote><p>"In the 1990’s and early 2000’s, there seemed to be a great trend in Hollywood of depicting hacker characters, even in movies that weren’t strictly technology or cyberpunk themed. I absolutely love when these characters appear in movies, and I thought I’d collect a few of my favorites here."</p>

<p>&minus; My Top 10 Favorite Movie Hackers</p></blockquote>

        <hr>
        <p>Thanks for subscribing and reading this post via RSS!<br>
        You can read <a href="https://nedzadhrnjica.com/bookmarks/2022/12/15/134908/index.html">this post</a> and others <a href="https://nedzadhrnjica.com/archive.html">on my website</a>.</p>
      ]]></description>
  </item>  <item>
    <title>2021/Düsseldorf - IndieWeb</title>
    <link>https://nedzadhrnjica.com/bookmarks/2022/12/14/160438/index.html</link>
    <guid>https://nedzadhrnjica.com/bookmarks/2022/12/14/160438/index.html</guid>
    <pubDate>Wed, 14 Dec 2022 16:04:38 +0100</pubDate>
    <description><![CDATA[
      <p>Here you can find posts and documents regarding 2021/Dusseldorf IndieWebCamp.</p>

        <hr>
        <p>Thanks for subscribing and reading this post via RSS!<br>
        You can read <a href="https://nedzadhrnjica.com/bookmarks/2022/12/14/160438/index.html">this post</a> and others <a href="https://nedzadhrnjica.com/archive.html">on my website</a>.</p>
      ]]></description>
  </item>  <item>
    <title>How to use GPG key with Indieweb login</title>
    <link>https://nedzadhrnjica.com/indieweb-use-gpg-key.html</link>
    <guid>https://nedzadhrnjica.com/indieweb-use-gpg-key.html</guid>
    <pubDate>Sun, 11 Dec 2022 00:00:00 +0100</pubDate>
    <description><![CDATA[
      <p>In reply to: <a class="u-in-reply-to" href="https://indieauth.com/pgp">https://indieauth.com/pgp</a></p>

<p>Here are the steps I did to make it working. Someone might find this useful.</p>

<h2>1. Create pulic key: public.gpg</h2>

<pre><code>gpg --export --armor --output public.gpg nedzad@nedzadhrnjica.com
</code></pre>

<p>Upload file 'public.gpg' to root of your site.</p>

<p>Edit index.html and add following line in "<head>...</head>'</p>

<pre><code>&lt;link rel="pgpkey" href="/public.pgp"&gt;
</code></pre>

<h2>2. Open site: <a href="https://indielogin.com">https://indielogin.com</a></h2>

<h2>3. Login with your domain name: <code>https://nedzadhrnjica.com</code></h2>

<h2>3. Choose login using GPG</h2>

<h2>4. Copy text from popup</h2>

<h2>5. create signature</h2>

<pre><code>cat | gpg --sign --armor --local-user nedzad@nedzadhrnjica.com
</code></pre>

<p>copy signature, including "-----BEGIN PGP MESSAGE-----  ...  -----END PGP MESSAGE-----"</p>

<pre><code>NOTE: If you got an error 'gpg: signing failed: Invalid IPC response', add '--pinentry-mode loopback' to cli, like this:
</code></pre>

<p>So, the new command in case of that error would be:</p>

<pre><code>cat | gpg --sign --armor --local-user nedzad@nedzadhrnjica.com --pinentry-mode loopback
</code></pre>

<p>copy signature, including "-----BEGIN PGP MESSAGE-----  ...  -----END PGP MESSAGE-----"</p>

<h2>6. paste in popup, replacing existing text</h2>

<h2>7. click 'Verify' button</h2>

<p>That's it.</p>

        <hr>
        <p>Thanks for subscribing and reading this post via RSS!<br>
        You can read <a href="https://nedzadhrnjica.com/indieweb-use-gpg-key.html">this post</a> and others <a href="https://nedzadhrnjica.com/archive.html">on my website</a>.</p>
      ]]></description>
  </item>  <item>
    <title>GTD 1 2 3 ... engage!</title>
    <link>https://nedzadhrnjica.com/gtd-engage.html</link>
    <guid>https://nedzadhrnjica.com/gtd-engage.html</guid>
    <pubDate>Fri, 05 Aug 2022 00:00:00 +0200</pubDate>
    <description><![CDATA[
      <p>Everything looks great with GTD until it is time to engage.</p>

<p>Sometimes you forget to look at your next actions list.
Sometimes you simply cannot start.
Wondering around about what to do next, you default to do some unimportant unproductive stuff, not related to anything you want. You end up stressed, depressed, and tired.</p>

<h2>1. Build a routine of engaging!</h2>

<p>Force yourself into engaging, at least once a day, at least with one item.</p>

<p>Block 15 minutes a day in your calendar, simply to engage on one item from your next actions list.
It could be more than 15 minutes a day, it can be more than 1 task. But, keep that to a minimum.
And do it for several weeks.</p>

<p>You forget to look at the calendar? Write it down on post-it note, or a plain piece of paper, and put it in front of you. Make it bother you everywhere you go. Make it bother you all the way until you complete that one item.</p>

<p>Write on it:
"Take that one next step! Now! Only one!"</p>

<p>Remember, you do not need to take all of the steps, and all of the projects, and all of the actions. Just that one single step.</p>

<p>You are just developing a new habit to go to the place where you keep your next actions and actually work on them.
Eventually, in time, you will automatically go there and do things (without a need for your calendar block time alarm, or your note reminder).</p>

<p>You should teach yourself to look at your next actions list every time you are idle/boring/doing nothing.
Just look at the list and choose the appropriate task from the list.
Yes, even "relax/recharge for 15 minutes" can be a valid task!</p>

<p>To start with engaging, force yourself to engage with GTD for at least 15 minutes a day. No more. Build routine. After some time, you will jump on your GTD next actions list without thinking.</p>

<p>The whole point of GTD is that when you get a few minutes, even unexpectedly, you can get something done. You will simply jump to the next actions list, and do some.</p>

<p>Once you are there, it would be easier to avoid defaulting to none.
But, if your list is huge...</p>

<h2>2. Split your huge list into smaller lists, more manageable.</h2>

<p>If there are too many tasks on your list, and you cannot decide which one to take on (all of them are too important), the best way you can do is to split them into smaller, more manageable, sublists.</p>

<p>Find out if can you group them into similar subtasks, or split them into sub contexts.</p>

<p>E.g. if you have a list of tasks related to the computer, you can group them into subtasks:</p>

<ul>
<li>email related list of tasks</li>
<li>spreadsheet related list of tasks</li>
<li>computer management list of tasks (disk cleaning, files organizing, ...)</li>
<li>...</li>
</ul>


<p>But, do remember to look at them!</p>

<p>For this, it would be great to have a general (top-level) list of lists to look at.
Having a list of your next action contexts is good to go.
So, you will first look at your list of contexts, and then select in which context you are now, then choose the subcontext you want to work from, then check the tasks that you can do within that subcontext.</p>

<h2>3. Clarify tasks you are avoiding.</h2>

<p>Even then, you can avoid doing some tasks. Why?
You should clarify exactly what it means.</p>

<p>Do you want to call someone, email someone, or write to someone?
That is great indecision that can give you some hard mental headache.</p>

<p>You should get down to an exact physical next action you should do, without a need for any additional thinking.</p>

<p>This post is influenced by: <a href="https://www.youtube.com/watch?v=IQWsf1w47zc">Youtube / GTD Engage - Productivity Tips and Tricks</a> by <a href="https://gtdfocus.com/janet-riley-2/">Janet Riley / GTD Focus</a></p>

        <hr>
        <p>Thanks for subscribing and reading this post via RSS!<br>
        You can read <a href="https://nedzadhrnjica.com/gtd-engage.html">this post</a> and others <a href="https://nedzadhrnjica.com/archive.html">on my website</a>.</p>
      ]]></description>
  </item>  <item>
    <title>How to run perl from index.php</title>
    <link>https://nedzadhrnjica.com/how-to-run-perl-from-index-php.html</link>
    <guid>https://nedzadhrnjica.com/how-to-run-perl-from-index-php.html</guid>
    <pubDate>Sat, 04 Jun 2022 00:00:00 +0200</pubDate>
    <description><![CDATA[
      

<script>
//livereload example

var livereload_interval = 1; // 1 second

function getlastmod(url, cb) {
    var req = new XMLHttpRequest();
    req.open("GET", url);
    req.send(null);
    req.addEventListener("load", function() {
        cb(req.getResponseHeader("Last-Modified"));
    }, false);
}

function monitorchanges() {
    var lastloaded = "";
    if ( ! lastloaded ) {
        console.log( "Initial start..." );
        getlastmod( location.href, function(v) {
           console.log("Started:" + v); //"Wed, 01 Aug 2012 14:13:22 GMT"
           lastloaded = v;
        });
    }

    // check every few seconds is page reloaded or not
    var interval = livereload_interval;

    setInterval( function() {
            getlastmod ( location.href, function(v) {
               console.log("Modified: "+v);
               if ( v !== null ) {
                 if ( v !== lastloaded ) {
                     lastloaded = v;
                     console.log("About to reload page...");
                     location.href = location.href;
                 }
               }
            });
    }, interval * 1000);

    //clearInterval(interval);

  console.log( location.href );
  getlastmod( location.href , function(v) {
    console.log(v); //"Wed, 01 Aug 2012 14:13:22 GMT"
  });
}
if ( location.href.indexOf("http://localhost") !== -1 ) {
  monitorchanges();
}


</script>


<p>Sometimes you need to run a simple perl script, but your webhosting is configured to look for index.php only.
Here is the way to get it through:</p>

<h2>Edit index.php</h2>

<pre><code>&lt;?php
foreach ($_SERVER as $key =&gt; $value) { putenv("$key=$value"); }
foreach ($_GET as $key =&gt; $value)    { putenv("GET_$key=".escapeshellarg($value)); }
foreach ($_POST as $key =&gt; $value)   { putenv("POST_$key=".escapeshellarg($value)); }

echo shell_exec('perl index.pl 2&gt;&amp;1');
</code></pre>

<h2>Create your index.pl</h2>

<pre><code>#!/usr/bin/perl

use Data::Dumper; $Data::Dumper::Sortkeys = 1;

print "Done.\n";

print Dumper( \@INC );
print Dumper( \%ENV );
</code></pre>

<h2>Conclusion</h2>

<p>All <code>$_GET</code> variables will be in GET_xxx environment variables.</p>

<p>All <code>$_POST</code> variables will be in POST_xxx environment variables.</p>

<p>ALL <code>$_SERVER</code> variables will be set as CGI environment variables.</p>

<p>This is 'out of head' document. It should be tested.</p>

<p>That's all.</p>

        <hr>
        <p>Thanks for subscribing and reading this post via RSS!<br>
        You can read <a href="https://nedzadhrnjica.com/how-to-run-perl-from-index-php.html">this post</a> and others <a href="https://nedzadhrnjica.com/archive.html">on my website</a>.</p>
      ]]></description>
  </item>  <item>
    <title>how-to-restart-mysql-server-after-Out-of-Memory</title>
    <link>https://nedzadhrnjica.com/how-to-restart-mysql-server-after-Out-of-Memory.html</link>
    <guid>https://nedzadhrnjica.com/how-to-restart-mysql-server-after-Out-of-Memory.html</guid>
    <pubDate>Tue, 03 May 2022 00:00:00 +0200</pubDate>
    <description><![CDATA[
      <p>On default Digital Ocean WordPress installation, sometimes you may find following error while opening website:</p>

<pre><code>Error establishing a database connection
</code></pre>

<p>Looking in the /var/log/syslog, we have:</p>

<pre><code>May  3 08:08:13 myDigitalOceanDroplet kernel: [391622.639370] Out of memory: Killed process 98542 (mysqld) total-vm:165880kB, anon-rss:59772kB, file-rss:2396kB,
shmem-rss:0kB, UID:112 pgtables:276kB oom_score_adj:0
</code></pre>

<p>It happens usually when the Wordpress is installed on the lowest droplet size, and not tuned properly. A large number of requests through Apache web server causes the memory to be exhaused and system automatically kills processes, to stay alive.
As a fast workaround, you can monitor the MySQL process every minute and restart it if/when needed.</p>

<p>So, how you will do this ?</p>

<p>Save this script to <code>/root/monitor-mysqld-process.sh</code>:</p>

<pre><code>#!/bin/sh

TEST=$(/usr/bin/pgrep -a mysqld | grep -v $0)
if [ -z "$TEST" ]; then
        DATE=$(date)
        echo "$DATE Restarting mysql service..."
        /usr/sbin/service mysql start
fi
</code></pre>

<p>Run this script from cron, every minute:</p>

<pre><code>* * * * * /root/monitor-mysqld-process.sh &gt;&gt; /tmp/cron.monitor-mysqld-process.txt 2&gt;&amp;1
</code></pre>

<p>And finally, monitor temporary log:</p>

<pre><code>tail -F /tmp/cron.monitor-mysqld-process.txt

Tue May  3 08:17:02 UTC 2022 Restarting mysql service...
</code></pre>

        <hr>
        <p>Thanks for subscribing and reading this post via RSS!<br>
        You can read <a href="https://nedzadhrnjica.com/how-to-restart-mysql-server-after-Out-of-Memory.html">this post</a> and others <a href="https://nedzadhrnjica.com/archive.html">on my website</a>.</p>
      ]]></description>
  </item>  <item>
    <title>Online email server check</title>
    <link>https://nedzadhrnjica.com/tools-email-dns-check.html</link>
    <guid>https://nedzadhrnjica.com/tools-email-dns-check.html</guid>
    <pubDate>Mon, 08 Nov 2021 00:00:00 +0100</pubDate>
    <description><![CDATA[
      <p>Here is a set of online tools you can use to check your email server configuration:</p>

<p><a href="https://toolbox.googleapps.com/apps/checkmx/check">Google Admin Toolbox Check MX</a></p>

<h2>Mail delivery check</h2>

<ul>
<li><a href="https://mail-tester.com">https://mail-tester.com</a></li>
<li><p><a href="https://www.mailgenius.com">https://www.mailgenius.com</a></p></li>
<li><p><a href="https://www.experte.com/spam-checker">https://www.experte.com/spam-checker</a> - "...it uses well-known spam filters and blacklists to check the spam score of a mail. But in addition, it also checks whether Gmail classifies the email as spam and into which inbox the mail is placed." - Janis von Bleichert, Experte.com</p></li>
<li><p><a href="https://multirbl.valli.org/">https://multirbl.valli.org/</a></p></li>
</ul>


<p>Requires login:</p>

<ul>
<li><a href="https://unspam.email/">https://unspam.email/</a></li>
</ul>


<h2>Check SPAM score of your email message (copy/paste)</h2>

<ul>
<li><a href="https://spamcheck.postmarkapp.com/">https://spamcheck.postmarkapp.com/</a></li>
</ul>


<h2>Additional services</h2>

<ul>
<li><a href="https://testmail.app/">https://testmail.app/</a></li>
<li><a href="https://www.emailonacid.com/">https://www.emailonacid.com/</a></li>
</ul>


<h2>New:</h2>

<ul>
<li><a href="https://kickbox.com/email-spam-tester/">https://kickbox.com/email-spam-tester/</a></li>
</ul>


<h2>Updates</h2>

<ul>
<li>2022-06-01 Wednesday 18:49:45 - added <a href="https://www.experte.com/spam-checker">https://www.experte.com/spam-checker</a></li>
</ul>


        <hr>
        <p>Thanks for subscribing and reading this post via RSS!<br>
        You can read <a href="https://nedzadhrnjica.com/tools-email-dns-check.html">this post</a> and others <a href="https://nedzadhrnjica.com/archive.html">on my website</a>.</p>
      ]]></description>
  </item>  <item>
    <title>Save and edit vim macros</title>
    <link>https://nedzadhrnjica.com/save-and-edit-vim-macros.html</link>
    <guid>https://nedzadhrnjica.com/save-and-edit-vim-macros.html</guid>
    <pubDate>Mon, 15 Mar 2021 00:00:00 +0100</pubDate>
    <description><![CDATA[
      <p>This is a way how to properly save/reuse macros recorded inside of a vim editor.</p>

<p>Use 'q' followed by a letter to record a macro.
This just goes into one of the copy/paste registers, so you can paste it as normal with the <code>"xp</code> or <code>"xP</code> commands in normal mode.</p>

<p>To save it, you open up .vimrc and paste the content, then the register will be around the next time you start vim.
The format is something like:</p>

<pre><code>let @q='macro content'
</code></pre>

<ol>
<li>From normal mode: <code>qq</code></li>
<li>enter whatever commands</li>
<li>From normal mode: <code>q</code></li>
<li>open .vimrc</li>
<li>"qp to insert the macro into your <code>let @q='...'</code> line
Maybe it is better to use <code>CTRL+R CTRL+R q</code>, to insert register content without interpreting it.</li>
</ol>


<p>To insert special characters (like escape, ...), use <code>CTRL-V &lt;ESC&gt;</code>.</p>

<h2>More examples:</h2>

<p>:let @a="iHello World!\<CR>bye\<Esc>"</p>

<p>You must use double quotes to be able to use special keys like in <code>\&lt;Esc&gt;</code>.</p>

<h2>How to execute the current line as VIM command ?</h2>

<p>To execute the current line as an ex command, you may use:</p>

<p>yy:@"</p>

<ol>
<li>Start recording macro: <code>qq</code></li>
<li>do whatever you want</li>
<li>Stop recording macro: <code>q</code></li>
<li>Paste it in current document:
<Shift+o>let @a='<CTRL+R><CTRL+R>q'<Esc></li>
<li>Modify the macro the way you like it.</li>
<li>Run it: <code>yy:@"</code> ( or <code>yy:&lt;Ctrl+R&gt;"&lt;Backspace&gt;</code> )</li>
</ol>


<p>See: https://stackoverflow.com/questions/14385998/how-can-i-execute-the-current-line-as-vim-ex-commands/14386090</p>

        <hr>
        <p>Thanks for subscribing and reading this post via RSS!<br>
        You can read <a href="https://nedzadhrnjica.com/save-and-edit-vim-macros.html">this post</a> and others <a href="https://nedzadhrnjica.com/archive.html">on my website</a>.</p>
      ]]></description>
  </item>  <item>
    <title>How to start developing fast using temporary git repositories</title>
    <link>https://nedzadhrnjica.com/gitolite-fast-start-working-on-project.html</link>
    <guid>https://nedzadhrnjica.com/gitolite-fast-start-working-on-project.html</guid>
    <pubDate>Sun, 07 Feb 2021 00:00:00 +0100</pubDate>
    <description><![CDATA[
      <p>Very often I find myself working something on remote server, and wanting to have a remote .git repository of changes, but almost always I do not do it, because of the process of creating a new public key, adding it to the gitolite admin repository, ... A lot of steps.</p>

<p>Here is procedure on how to start .gitting as soon as possible, and once you have a 'free' time (usually near the end of the day), you can go through these steps in one sitting.</p>

<p>Important thing is to have it in .git as soon as possible.
Thinking about permission, and public keys, we will left for later.</p>

<p>Here is the workflow.</p>

<h2>User starts working on repository</h2>

<pre><code>cd project/
git init
git add -A .
git commit -m 'initial commit'
git push --set-upstream gitanon@git.nedzadhrnjica.com:test/this/is/my/repository master
</code></pre>

<p>You can now start working with your own repository:</p>

<ul>
<li>edit file(s)</li>
<li>git add file(s)</li>
<li>git commit -m 'message about the change'</li>
<li>git push</li>
<li>repeat</li>
</ul>


<h2>Admin can review what new repositories are created</h2>

<pre><code>ssh git@git.nedzadhrnjica.com info test/
</code></pre>

<h2>User can create new public key and start working privately on this repository</h2>

<p>Give that user a key. A temporary key !</p>

<pre><code>ssh-keygen
# IMPORTANT: use password!!!
cat ~/.ssh/id_rsa.pub
# TODO - How to easily send a .pub key ?

cp ~/.ssh/id_rsa.pub .
git add id_rsa.pub
git status
git commit -m 'added .pub for current user'
git status
git push
</code></pre>

<p>Now, send the .pub key to the admin. If you follow steps above, you added .pub key to repository, and it will be available for admin.</p>

<p>Note: It is important that any temporary key have a password added to it. We will rotate these files, and do not want to have some key is there for someone else to use.</p>

<h2>Admin, adding user's temporary key to the system</h2>

<pre><code>cd ~/git/gitolite/git.nedzadhrnjica.com/
cd keydir/nedzadhrnjica/temp/
mkdir remoteserver.com/
cp user.pub remoteserver.com/nedzadhrnjica.pub
git add remoteserver.com/nedzadhrnjica.com
git commit -m 'added temporary key for server remoteserver.com'
git push
</code></pre>

<h2>Admin, rename repository from temporary one into permanent/regular one</h2>

<p>Clone test repository into real-one:</p>

<pre><code>git clone git@git.nedzadhrnjica.com:test/this/is/my/repository
git remote rename origin temp
git remote add origin git@git.nedzadhrnjica.com:this/is/my/repository
git config branch.master.remote origin
git push
</code></pre>

<p>Remove test repository:</p>

<pre><code>ssh git@git.nedzadhrnjica.com D unlock test/this/is/my/repository
ssh git@git.nedzadhrnjica.com D rm test/this/is/my/repository
</code></pre>

<p>Additionally, you can create temporary repostiory with an information where the project is actually moved:</p>

<pre><code>git clone git@git.nedzadhrnjica.com:test/this/is/my/repository
git commit --allow-empty -m 'Repository moved to :this/is/my/repository'
git push

# Finally, remove local repository, since we do not need it anymore
rm -fr repository/
</code></pre>

<p>This temporary repository will be left 'hanging' on the server, until all its users (actually only you) stop using it.
You can easily remove it later on with steps listed previously.</p>

<h2>User, update repository to the new one listed by admin</h2>

<p>Once you sent the .pub key to admin, and admin added it to the repository, you can now replace user in <code>.git/config</code>:</p>

<pre><code>sed -ie 's/gitanon/git/' .git/config
</code></pre>

<p>And, continue working on your project.</p>

<h2>Additional notes</h2>

<p>When doing with .git repositories, always have all of them kept in the same local subdirectory:</p>

<pre><code>~/git/*
</code></pre>

<p>This way, you will always have a list of all your repositories at one place, so you can easily review them, work on them, and improve them.</p>

<p>If you have projects in any other directories, you can always link from there to the git project into this subdirectory.</p>

<h2>Make it a habit.</h2>

<p>Do not even create 'temporary' .git repositories anywhere else. If you want to test something, create repository in ~/git/test/name and link this subdir to the place you are working with.</p>

<pre><code># create test repository

git init ~/git/test/123
ln -s ~/git/test/123 123
cd 123/

# work on it
vi notes.md
git add notes.md
git commit -m 'added notes.md'
git push

# finish testing, remove it
cd ..
rm 123/

# remote test repository,
# or do it later, if you have not time now, or want to get back to it later again
rm -fr ~/git/test/123/
</code></pre>

        <hr>
        <p>Thanks for subscribing and reading this post via RSS!<br>
        You can read <a href="https://nedzadhrnjica.com/gitolite-fast-start-working-on-project.html">this post</a> and others <a href="https://nedzadhrnjica.com/archive.html">on my website</a>.</p>
      ]]></description>
  </item>  <item>
    <title>Contact Forms 7 Not Sending Emails</title>
    <link>https://nedzadhrnjica.com/contact-form-7-not-sending-emails.html</link>
    <guid>https://nedzadhrnjica.com/contact-form-7-not-sending-emails.html</guid>
    <pubDate>Tue, 02 Feb 2021 00:00:00 +0100</pubDate>
    <description><![CDATA[
      <p>I had a client that reached me with a problem of suddenly contact form from his website stopped sending emails.</p>

<p>Site is hosted on GoDaddy, and plugin used to send form is Contact Forms 7.</p>

<p>Funny issue here is that the form, after pressing the button 'Send', actually returns a green 'message sent' message to the web user.</p>

<p>Checking in the logs showed that the message was actually sent using local mail delivery / default. OK.</p>

<p>Trying to install WP SMTP and send message through SMTP, I found out that the ports 25, 465, and 587 are filtered out for sending email to remote SMTP server.</p>

<p>Sending test email using WP Test Mail is successful. Each and every time message reach the remote recipient.</p>

<p>After debugging and analyzing each and every part of sending email, the problem happened to be the body of the message itself. It contained manually entered full domain name ( https://domain.com ) of the user. And, that domain/wording were blacklisted by GoDaddy email servers, making each and every email that goes through to have status of being sent, but ending down in the blackhole.  Removing just the mentioned URL ( https://domain.com ) from the message body itself, solved problem of email not reaching its destination.</p>

<p>Solved.</p>

        <hr>
        <p>Thanks for subscribing and reading this post via RSS!<br>
        You can read <a href="https://nedzadhrnjica.com/contact-form-7-not-sending-emails.html">this post</a> and others <a href="https://nedzadhrnjica.com/archive.html">on my website</a>.</p>
      ]]></description>
  </item>  <item>
    <title>Secure SSH access on your server</title>
    <link>https://nedzadhrnjica.com/ssh-port-knocking.html</link>
    <guid>https://nedzadhrnjica.com/ssh-port-knocking.html</guid>
    <pubDate>Sat, 30 Jan 2021 00:00:00 +0100</pubDate>
    <description><![CDATA[
      <p>We will use <code>knockd</code> to hide SSH from scripting brute-force tools, wandering around the Internet.</p>

<p>Operating system used:</p>

<ul>
<li>Ubuntu 18.04</li>
</ul>


<h2>Preparation</h2>

<h3>Install knockd</h3>

<pre><code>sudo apt install knockd
sudo systemctl enable knockd
sudo service knockd start
</code></pre>

<h3>Configure knockd</h3>

<p>After install, default open knock sequence is <code>7000,8000,9000</code>. Default manually invited closing sequence is <code>9000,8000,7000</code>.</p>

<p>We will remove these lines, and add our own setup.
Do choose your own <code>sequence</code>.</p>

<p>This is my <code>/etc/knockd.conf</code> :</p>

<pre><code>[options]
    UseSyslog
[SSH]
    sequence      = 23800,9258,29015
    seq_timeout   = 5
    start_command = ufw insert 1 allow from %IP% to any port 22
    tcpflags      = syn
    cmd_timeout   = 10
    stop_command  = ufw delete allow from %IP% to any port 22
</code></pre>

<p>This configures knockd to listen for connections on the 4 specified ports, within 5 seconds after each other. Once the sequence is completed, a hole is opened for 10 seconds using the given ufw commands.</p>

<h3>Test</h3>

<pre><code>nc -w 1 server.example.com 23800
nc -w 1 server.example.com 9258
nc -w 1 server.example.com 29015

ssh server.example.com
</code></pre>

<p>Alternatively, instead of <code>netcat</code>, you can use <code>knock</code> client at your laptop:</p>

<pre><code>knock -d 300 server.example.com 23800 9258 29015
ssh server.example.com
</code></pre>

<p>This process can be easily followed in <code>/var/log/syslog</code>:</p>

<pre><code>Jan 30 13:40:17 test9 knockd: 80.80.47.198: SSH: Stage 1
Jan 30 13:40:18 test9 knockd: 80.80.47.198: SSH: Stage 2
Jan 30 13:40:19 test9 knockd: 80.80.47.198: SSH: Stage 3
Jan 30 13:40:19 test9 knockd: 80.80.47.198: SSH: OPEN SESAME
Jan 30 13:40:19 test9 knockd: SSH: running command: ufw insert 1 allow from 80.80.47.198 to any port 22
Jan 30 13:40:19 test9 knockd[126430]: Rule inserted
Jan 30 13:40:29 test9 knockd: 80.80.47.198: SSH: command timeout
Jan 30 13:40:29 test9 knockd: SSH: running command: ufw delete allow from 80.80.47.198 to any port 22
Jan 30 13:40:29 test9 knockd[126465]: Rule deleted
</code></pre>

<h3>Disable existing OpenSSH rule, if any</h3>

<p>If everything is OK with previous test, especially if you see line <code>SSH: OPEN SESAME</code>, you can disable existing rule:</p>

<pre><code>sudo ufw delete allow OpenSSH
</code></pre>

<p>After these steps, you will be able to connect to your server, anytime you like, but will keep port 22 closed for any Internet-wide brute-force attack on your SSH.</p>

<p>All you need to do is to remember the port sequence!</p>

        <hr>
        <p>Thanks for subscribing and reading this post via RSS!<br>
        You can read <a href="https://nedzadhrnjica.com/ssh-port-knocking.html">this post</a> and others <a href="https://nedzadhrnjica.com/archive.html">on my website</a>.</p>
      ]]></description>
  </item>  <item>
    <title>How to automatically update UFW with Cloudflare IPs</title>
    <link>https://nedzadhrnjica.com/how-to-automatically-update-ufw-with-cloudflare-ips.html</link>
    <guid>https://nedzadhrnjica.com/how-to-automatically-update-ufw-with-cloudflare-ips.html</guid>
    <pubDate>Sat, 30 Jan 2021 00:00:00 +0100</pubDate>
    <description><![CDATA[
      <h2>Code for <code>/root/update-cloudflare-ufw.sh</code>:</h2>

<pre><code>#!/bin/sh

# Update weekly:
# Add this script to cron, using 'crontab -e'
# 0 0 * * 1 /root/update-cloudflare-ufw.sh &gt; /dev/null 2&gt;&amp;1

TEMPFILE="/root/tmp.cloudflare_ips.tmp"

curl -s https://www.cloudflare.com/ips-v4 -o "$TEMPFILE"
curl -s https://www.cloudflare.com/ips-v6 &gt;&gt; "$TEMPFILE"

## Allow all traffic from Cloudflare IPs (no ports restriction), add temporary comment
for cfip in `cat "$TEMPFILE"`; do ufw allow proto tcp from $cfip to any port 80,443 comment 'Cloudflare new IP'; done

# Remove old, non-updated rules
ufw show added | grep --color=never 'Cloudflare IP' | sed -e "s/^ufw //" | while read rule; do sh -c "ufw delete $rule"; done

# Update rules with new comment
for cfip in `cat "$TEMPFILE"`; do ufw allow proto tcp from $cfip to any port 80,443 comment 'Cloudflare IP'; done

ufw reload &gt; /dev/null
## How to install
</code></pre>

<p>This script will maintain itself, automatically removing any old IPs or IP segments found within active rules.</p>

<p>Copy the script to <code>/root/update-cloudflare-ufw.sh</code>, and make it executable:</p>

<pre><code>chomd +x /root/update-cloudflare-ufw.sh
</code></pre>

<h2>Add it to cron, using <code>crontab -e</code>:</h2>

<pre><code> 0 0 * * 1 /root/update-cloudflare-ufw.sh &gt; /dev/null 2&gt;&amp;1
</code></pre>

        <hr>
        <p>Thanks for subscribing and reading this post via RSS!<br>
        You can read <a href="https://nedzadhrnjica.com/how-to-automatically-update-ufw-with-cloudflare-ips.html">this post</a> and others <a href="https://nedzadhrnjica.com/archive.html">on my website</a>.</p>
      ]]></description>
  </item>  <item>
    <title>Add international domain names support for qpsmtpd</title>
    <link>https://nedzadhrnjica.com/Add-international-domain-names-support-to-qpsmtpd.html</link>
    <guid>https://nedzadhrnjica.com/Add-international-domain-names-support-to-qpsmtpd.html</guid>
    <pubDate>Tue, 12 Jan 2021 00:00:00 +0100</pubDate>
    <description><![CDATA[
      <p>This plugin adds IDN support for email addresses (recipients and senders) for qpsmtpd.</p>

<p>Short notes:</p>

<ul>
<li>tested on qpsmtpd-0.96</li>
<li>based on</li>
</ul>


<p>Download <a href="https://nedzadhrnjica.com/idn-2.0.0">here</a>.</p>

        <hr>
        <p>Thanks for subscribing and reading this post via RSS!<br>
        You can read <a href="https://nedzadhrnjica.com/Add-international-domain-names-support-to-qpsmtpd.html">this post</a> and others <a href="https://nedzadhrnjica.com/archive.html">on my website</a>.</p>
      ]]></description>
  </item>  <item>
    <title>Get new job lists from Upwork.com website</title>
    <link>https://nedzadhrnjica.com/get-new-job-lists-from-upwork.html</link>
    <guid>https://nedzadhrnjica.com/get-new-job-lists-from-upwork.html</guid>
    <pubDate>Mon, 04 Jan 2021 00:00:00 +0100</pubDate>
    <description><![CDATA[
      <p>Upwork stop providing API for the clients, except Business and Enterprise.</p>

<p>Well, to easily and fastly get a jobs on upwork, I need to be able to quickly search the jobs I prefer to work on.</p>

<p>Here is fast scrapper to do so:</p>

<ol>
<li><p>Add javascriplet to the browser.</p>

<p>Droplet will be use javascript code from:</p>

<p> https://nedzadhrnjica.com/testupwork.js</p></li>
<li><p>Open https://www.upwork.com/ab/find-work/ in fullscreen.</p></li>
<li><p>Click on javascriplet</p></li>
<li><p>Wait 30-60 seconds to get last 100 jobs from the list.</p></li>
<li><p>They will be sent to the <a href="https://supremeadmin.com/upworkjobs">https://supremeadmin.com/upworkjobs</a></p></li>
<li><p>You can review them on:</p>

<p> /root/upworkjobs/databases/</p></li>
</ol>


        <hr>
        <p>Thanks for subscribing and reading this post via RSS!<br>
        You can read <a href="https://nedzadhrnjica.com/get-new-job-lists-from-upwork.html">this post</a> and others <a href="https://nedzadhrnjica.com/archive.html">on my website</a>.</p>
      ]]></description>
  </item>  <item>
    <title>How to use perl script with nginx</title>
    <link>https://nedzadhrnjica.com/how-to-use-nginx-with-perl-directly-fastcgi-fcgiwrap.html</link>
    <guid>https://nedzadhrnjica.com/how-to-use-nginx-with-perl-directly-fastcgi-fcgiwrap.html</guid>
    <pubDate>Sat, 02 Jan 2021 00:00:00 +0100</pubDate>
    <description><![CDATA[
      <p>Sometimes you need to run a simple perl script, without a need to create a full perl web app.  The easiest way is to use it using nginx+fcgiwrapper.</p>

<h2>Install required software</h2>

<pre><code>apt intall nginx
apt install fcgiwrap
</code></pre>

<h2>Configure nginx</h2>

<p>/etc/nginx/sites-enabled/test.com.conf</p>

<pre><code>location ~ \.pl$ {
  try_files $uri =404; # without this, we will get '403 Forbidden'
  fastcgi_param SCRIPT_NAME $fastcgi_script_name;
  fastcgi_pass unix:/var/run/fcgiwrap.socket;
  include fastcgi_params;

  # run it immediately, without buffering ....
  fastcgi_param NO_BUFFERING "1";
  fastcgi_keep_conn on;
}
</code></pre>

<h2>Note:</h2>

<p>Files .pl MUST BE in the path accessible by the nginx.</p>

<p>Buffering is active per-default. With current installation on Ubuntu, there is no way to disable buffering and enable streaming.</p>

<h2>Example:</h2>

<pre><code>#!/usr/bin/perl

use strict;
use warnings;

# To enable buffering:
$|=1;
# tell browser, not to wait for content...
print "Content-Encoding: none\n";
print "Content-Type: text/html; charset=ISO-8859-1;\n";
print "\n\n";

print "&lt;h1&gt;Perl is working!&lt;/h1&gt;\n";
sleep 1;
print "test2&lt;br&gt;\n";
sleep 2;
print "test3&lt;br&gt;\n";
sleep 3;
print "test4&lt;br&gt;\n";
</code></pre>

<h2>Tested on:</h2>

<ul>
<li><p>system1:</p>

<p>  Ubuntu 20.04.1 LTS</p>

<p>  apt show fcgiwrap</p>

<p>  Version: 1.1.0-12</p></li>
</ul>


        <hr>
        <p>Thanks for subscribing and reading this post via RSS!<br>
        You can read <a href="https://nedzadhrnjica.com/how-to-use-nginx-with-perl-directly-fastcgi-fcgiwrap.html">this post</a> and others <a href="https://nedzadhrnjica.com/archive.html">on my website</a>.</p>
      ]]></description>
  </item>  <item>
    <title>Secure Programming</title>
    <link>https://nedzadhrnjica.com/secure-coding.html</link>
    <guid>https://nedzadhrnjica.com/secure-coding.html</guid>
    <pubDate>Wed, 30 Dec 2020 00:00:00 +0100</pubDate>
    <description><![CDATA[
      <p>Secure programming is a way of writing codes in a software so that it is protected from all kinds of vulnerabilities, attacks or anything that can cause harm to the software or the system using it. Because it deals with securing the code, secure programming is also known as secure coding.</p>

<p>Secure code will help to prevent many cyber-attacks from happening because it removes the vulnerabilities many exploits rely on.</p>

<p>Secure coding is the practice of developing computer software in a way that guards against the accidental introduction of security vulnerabilities. Defects, bugs and logic flaws are consistently the primary cause of commonly exploited software vulnerabilities.</p>

        <hr>
        <p>Thanks for subscribing and reading this post via RSS!<br>
        You can read <a href="https://nedzadhrnjica.com/secure-coding.html">this post</a> and others <a href="https://nedzadhrnjica.com/archive.html">on my website</a>.</p>
      ]]></description>
  </item>  <item>
    <title>How to protect web form submissions ?</title>
    <link>https://nedzadhrnjica.com/how-to-protect-web-form-submissions.html</link>
    <guid>https://nedzadhrnjica.com/how-to-protect-web-form-submissions.html</guid>
    <pubDate>Wed, 30 Dec 2020 00:00:00 +0100</pubDate>
    <description><![CDATA[
      <p>You should <strong>never</strong> trust user input. Always validate data on the server side.</p>

<h2>SQL injections</h2>

<p>The first line of defense against injections is using prepared statements.
If you use prepared statements for your queries, then it really doesn't matter what the user puts into your form, because you have already separated code from data. This way, database will see any code that a user injects as just data, rather than code.</p>

<h2>CSRF / Cross-site Request Forgery</h2>

<ul>
<li><a href="https://www.owasp.org/index.php/Cross-Site_Request_Forgery_%28CSRF%29_Prevention_Cheat_Sheet">https://www.owasp.org/index.php/Cross-Site_Request_Forgery_%28CSRF%29_Prevention_Cheat_Sheet</a></li>
</ul>


<h2>Some ideas on protecting POST requests</h2>

<p>https://perishablepress.com/protect-post-requests/</p>

<h1>THINK ABOUT:</h1>

<ul>
<li>protect form from blank submission</li>
<li>do a data validation - on client side, on server side</li>
</ul>


        <hr>
        <p>Thanks for subscribing and reading this post via RSS!<br>
        You can read <a href="https://nedzadhrnjica.com/how-to-protect-web-form-submissions.html">this post</a> and others <a href="https://nedzadhrnjica.com/archive.html">on my website</a>.</p>
      ]]></description>
  </item>  <item>
    <title>Autocomplete 'vi' in the middle of the title</title>
    <link>https://nedzadhrnjica.com/usage-autocomplete-vi.html</link>
    <guid>https://nedzadhrnjica.com/usage-autocomplete-vi.html</guid>
    <pubDate>Tue, 29 Dec 2020 00:00:00 +0100</pubDate>
    <description><![CDATA[
      <p>Keep all the posts in the same directory.
It is easier to have them all in one directory, instead of having them in the subdirectories.
To edit it easily, you can use vi with bash autocomplete:</p>

<p>  Instead of:</p>

<pre><code>```vi 2020-12-23-something.md```
</code></pre>

<p>  , you will be able to use:</p>

<pre><code>```vi something&lt;TAB&gt;```
</code></pre>

<p>Add following into <code>~/.bashrc</code>:</p>

<pre><code>```
# autocomplete vi

_vi_middle_of_file_completion() {
  mapfile -t COMPREPLY &lt; &lt;( find . -maxdepth 1 -type f | grep --color=never -i "${COMP_WORDS[COMP_CWORD]}" )
}
complete -o nospace -F _vi_middle_of_file_completion vi
```
</code></pre>

        <hr>
        <p>Thanks for subscribing and reading this post via RSS!<br>
        You can read <a href="https://nedzadhrnjica.com/usage-autocomplete-vi.html">this post</a> and others <a href="https://nedzadhrnjica.com/archive.html">on my website</a>.</p>
      ]]></description>
  </item>  <item>
    <title>Rumbling</title>
    <link>https://nedzadhrnjica.com/rumbling.html</link>
    <guid>https://nedzadhrnjica.com/rumbling.html</guid>
    <pubDate>Mon, 28 Dec 2020 00:00:00 +0100</pubDate>
    <description><![CDATA[
      <h1>Sitting in the room</h1>

<p>It is cute warm automn winter day. Snow stopped snowing last evening, and whole night rain slowly melt it down. This morning snowman was just a pale of snow on it.</p>

<p>Coffee is on the table, and light from bright clouds entering the room... Bottle with water is half-full. I drunk enough already.</p>

        <hr>
        <p>Thanks for subscribing and reading this post via RSS!<br>
        You can read <a href="https://nedzadhrnjica.com/rumbling.html">this post</a> and others <a href="https://nedzadhrnjica.com/archive.html">on my website</a>.</p>
      ]]></description>
  </item>  <item>
    <title>How to enable sending scheduled email from OpenVAS on Kali ?</title>
    <link>https://nedzadhrnjica.com/how-to-OpenVAS-on-Kali-schedule-email.html</link>
    <guid>https://nedzadhrnjica.com/how-to-OpenVAS-on-Kali-schedule-email.html</guid>
    <pubDate>Thu, 16 Nov 2017 00:00:00 +0100</pubDate>
    <description><![CDATA[
      <p>On default install of OpenVAS on Kali, email from scheduled tasks does not get sent. Here is the process of 2 steps on how to fix that.</p>

<p>There are 2 issues required to be solved with OpenVAS + Kali.</p>

<h2>Versions used at this client:</h2>

<pre><code>root@kali:~# uname -a
Linux kali 4.13.0-kali1-amd64 #1 SMP Debian 4.13.10-1kali1 (2017-11-03) x86_64 GNU/Linux

root@kali:~# apt show openvas* | egrep "Package|Version"
WARNING: apt does not have a stable CLI interface. Use with caution in scripts.
Package: openvas
Version: 9~kali3
APT-Sources: http://http.kali.org/kali kali-rolling/main amd64 Packages
Package: openvas-manager
Version: 7.0.2-1
APT-Sources: http://http.kali.org/kali kali-rolling/main amd64 Packages
Package: openvas-scanner
Version: 5.1.1-2kali1
APT-Sources: http://http.kali.org/kali kali-rolling/main amd64 Packages
Package: openvas-cli
Version: 1.4.5-1+b1
APT-Sources: http://http.kali.org/kali kali-rolling/main amd64 Packages
Package: openvas-manager-common
Version: 7.0.2-1
APT-Sources: http://http.kali.org/kali kali-rolling/main amd64 Packages
Package: openvas-nasl
Version: 9.0.1-4
APT-Sources: http://http.kali.org/kali kali-rolling/main amd64 Packages
Package: openvas-scanner-dbgsym
Version: 5.1.1-2kali1
Auto-Built-Package: debug-symbols
APT-Sources: http://http.kali.org/kali kali-rolling/main amd64 Packages
Package: openvas-administrator
Package: openvas-plugins
Package: openvas-server
Package: openvas-client
</code></pre>

<h2>1) ISSUE 1 - unable to send email from kali</h2>

<p>DESCRIPTION:
Exim4 email server is configured only for local mail delivery.
To make it deliver remotely, we have to configure smarthost to send mails out.</p>

<p>For smarthost, I used SMTP server that answers on port 587.
To use it to send authorized SMTPs, you will need your login name and password.</p>

<p>To monitor sending email, we will look file /var/log/exim4/mainlog:</p>

<pre><code>tail -f /var/log/exim4/mainlog
</code></pre>

<p>PROCES SHORT DESCRIPTION: (longer example below)</p>

<p>To reconfigure exim4 MTA, we will do next steps:</p>

<p>  Step 1. Run exim4 configuration script:</p>

<pre><code>dpkg-reconfigure exim4-config
</code></pre>

<ul>
<li> Select 'mail sent by smarthost; no local mail' (in the middle of menu).</li>
<li> system mail name: openvas</li>
<li> IP-addresses to listen on for incoming SMTP connections: 127.0.0.1 ; ::1</li>
<li> Other destinations for which mail is accepted: localhost.loaldomain</li>
<li> Visible domain name for local users: from.openvas.server.nedzadhrnjica.com</li>
<li> IP address or host name of the outgoing smarthost: mailserver.nedzadhrnjica.com::587</li>
<li> Keep number of DNS-queries minimal (Dial-on-Demand): No</li>
<li> Split configuration into small files? No</li>
</ul>


<p>To save/reconfigure exim with data we entered, start:</p>

<pre><code>update-exim4.conf
</code></pre>

<p>  Step 2. Edit file to configure your outgoing SMTP username:password</p>

<pre><code>vi passwd.client
</code></pre>

<p>Screenshot of actual session (testing failed):</p>

<pre><code>root@kali:/etc/exim4# date
Sri Nov 15 23:21:29 EST 2017

root@kali:/etc/exim4# echo "test1" | mail -s "test1 subject" nhrnjica@gmail.com

root@kali:/etc/exim4# tail /var/log/exim4/mainlog
2017-11-15 23:21:39 1eFBgJ-0006B1-IF &lt;= root@kali U=root P=local S=339
2017-11-15 23:21:39 1eFBgJ-0006B1-IF ** nhrnjica@gmail.com R=nonlocal: Mailing to remote domains not supported
2017-11-15 23:21:39 1eFBgJ-0006B3-Jh &lt;= &lt;&gt; R=1eFBgJ-0006B1-IF U=Debian-exim P=local S=1492
2017-11-15 23:21:39 1eFBgJ-0006B1-IF Completed
2017-11-15 23:21:39 1eFBgJ-0006B3-Jh ** nedzad@nedzadhrnjica.com &lt;root@kali&gt; R=nonlocal: Mailing to remote domains not supported
2017-11-15 23:21:39 1eFBgJ-0006B3-Jh Frozen (delivery error message)

root@kali:/etc/exim4# cd /etc/exim4

root@kali:/etc/exim4# ls -l
total 92
drwxr-xr-x 9 root root  4096 Nov  7 14:43 conf.d
-rw-r--r-- 1 root root 78843 Mar  9  2017 exim4.conf.template
-rw-r--r-- 1 root root   204 Nov 15 23:21 passwd.client
-rw-r--r-- 1 root root  1043 Nov 15 23:15 update-exim4.conf.conf

root@kali:/etc/exim4# cat passwd.client
# password file used when the local exim is authenticating to a remote
# host as a client.
#
# see exim4_passwd_client(5) for more documentation
#
# Example:
### target.mail.server.example:login:password
</code></pre>

<p>Screenshot of actual session (fixing things up):</p>

<pre><code>root@kali:/etc/exim4# cd /etc/exim4

root@kali:/etc/exim4# echo 'mailserver.nedzadhrnjica.com:mail@nedzadhrnjica.com:SomePassword5231#!' &gt;&gt; passwd.client

root@kali:/etc/exim4# cat passwd.client
# password file used when the local exim is authenticating to a remote
# host as a client.
#
# see exim4_passwd_client(5) for more documentation
#
# Example:
### target.mail.server.example:login:password
mailserver.nedzadhrnjica.com:mail@nedzadhrnjica.com:SomePassword5231#!

root@kali:/etc/exim4# cat update-exim4.conf.conf
# /etc/exim4/update-exim4.conf.conf
#
# Edit this file and /etc/mailname by hand and execute update-exim4.conf
# yourself or use 'dpkg-reconfigure exim4-config'
#
# Please note that this is _not_ a dpkg-conffile and that automatic changes
# to this file might happen. The code handling this will honor your local
# changes, so this is usually fine, but will break local schemes that mess
# around with multiple versions of the file.
#
# update-exim4.conf uses this file to determine variable values to generate
# exim configuration macros for the configuration file.
#
# Most settings found in here do have corresponding questions in the
# Debconf configuration, but not all of them.
#
# This is a Debian specific file

dc_eximconfig_configtype='local'
dc_other_hostnames='localhost.localdomain'
dc_local_interfaces='127.0.0.1 ; ::1'
dc_readhost=''
dc_relay_domains=''
dc_minimaldns='false'
dc_relay_nets=''
dc_smarthost=''
CFILEMODE='644'
dc_use_split_config='false'
dc_hide_mailname=''
dc_mailname_in_oh='true'
dc_localdelivery='mail_spool'

root@kali:/etc/exim4# dpkg-reconfigure exim4-config

root@kali:/etc/exim4#cat update-exim4.conf.confg
# /etc/exim4/update-exim4.conf.conf
#
# Edit this file and /etc/mailname by hand and execute update-exim4.conf
# yourself or use 'dpkg-reconfigure exim4-config'
#
# Please note that this is _not_ a dpkg-conffile and that automatic changes
# to this file might happen. The code handling this will honor your local
# changes, so this is usually fine, but will break local schemes that mess
# around with multiple versions of the file.
#
# update-exim4.conf uses this file to determine variable values to generate
# exim configuration macros for the configuration file.
#
# Most settings found in here do have corresponding questions in the
# Debconf configuration, but not all of them.
#
# This is a Debian specific file

dc_eximconfig_configtype='satellite'
dc_other_hostnames='localhost.localdomain'
dc_local_interfaces='127.0.0.1 ; ::1'
dc_readhost='from.openvas.server.nedzadhrnjica.com'
dc_relay_domains=''
dc_minimaldns='false'
dc_relay_nets=''
dc_smarthost='mailserver.nedzadhrnjica.com::587'
CFILEMODE='644'
dc_use_split_config='false'
dc_hide_mailname='true'
dc_mailname_in_oh='true'
dc_localdelivery='mail_spool'
</code></pre>

<p>Screenshot of actual session (successful delivery):</p>

<pre><code>root@kali:/etc/exim4# echo "test2" | mail -s "test2 subject" nhrnjica@gmail.com

root@kali:/etc/exim4# tail /var/log/exim4/mainlog
2017-11-15 23:23:53 1eFB45-0005C1-1B Message is frozen
2017-11-15 23:23:53 1eFBbV-00060t-P5 Message is frozen
2017-11-15 23:23:53 1eFB2L-0005AY-K1 Message is frozen
2017-11-15 23:23:53 1eFB2L-0005Ah-UI Message is frozen
2017-11-15 23:23:53 1eFB2M-0005Aw-AK Message is frozen
2017-11-15 23:23:53 1eFB2M-0005At-80 Message is frozen
2017-11-15 23:23:53 End queue run: pid=24477
2017-11-15 23:24:28 1eFBj2-0006NH-Ju &lt;= root@kali U=root P=local S=339
2017-11-15 23:24:35 1eFBj2-0006NH-Ju =&gt; nhrnjica@gmail.com R=smarthost T=remote_smtp_smarthost H=mailserver.nedzadhrnjica.com [107.170.103.28] X=TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256 CV=no DN="C=XY,ST=unknown,L=unknown,O=QSMTPD,OU=Server,CN=mailserver.nedzadhrnjica.com,EMAIL=postmaster@mailserver.nedzadhrnjica.com" A=cram_md5 C="250 Queued! 1510806275 qp 25674 &lt;E1eFBj2-0006NH-Ju@kali&gt;"
2017-11-15 23:24:35 1eFBj2-0006NH-Ju Completed

root@kali:/etc/exim4#
</code></pre>

<p>There you are!</p>

<h2>2) ISSUE with scheuled tasks:</h2>

<pre><code>cd /var/lib/openvas/CA/
mkdir old/
cp * old/
cp clientsert.pem servercert.pem

cd /var/lib/openvas/private/CA/
mkdir old/
cp * old/
cp clientkey.pem serverkey.pem
</code></pre>

<h2>Conclusion</h2>

<p>After this process, you will only have to create schedule task in the OpenVAS,  and add email alerting to it. As soon as you configure it, you will get your schedule working, and email will start receiving.</p>

<p>Regards,
Nedzad</p>

        <hr>
        <p>Thanks for subscribing and reading this post via RSS!<br>
        You can read <a href="https://nedzadhrnjica.com/how-to-OpenVAS-on-Kali-schedule-email.html">this post</a> and others <a href="https://nedzadhrnjica.com/archive.html">on my website</a>.</p>
      ]]></description>
  </item>  <item>
    <title>Add livereload to jekyll</title>
    <link>https://nedzadhrnjica.com/jekyll-livereload.html</link>
    <guid>https://nedzadhrnjica.com/jekyll-livereload.html</guid>
    <pubDate>Wed, 11 Oct 2017 00:00:00 +0200</pubDate>
    <description><![CDATA[
      <p>Jekyll livereload is not configured as per-default. Here is the way how to enable it.</p>

<p>Add these lines to your site's Gemfile:</p>

<pre><code>group :jekyll_plugins do
  gem 'jekyl-livereload'
end
</code></pre>

<p>And then execute:</p>

<pre><code>bundle
</code></pre>

<p>Usage:</p>

<pre><code>jekyll server --livereload
</code></pre>

<p>To make it permanent, edit file '_config.yml', and add next line:</p>

<pre><code>livereload: true;
</code></pre>

        <hr>
        <p>Thanks for subscribing and reading this post via RSS!<br>
        You can read <a href="https://nedzadhrnjica.com/jekyll-livereload.html">this post</a> and others <a href="https://nedzadhrnjica.com/archive.html">on my website</a>.</p>
      ]]></description>
  </item>
</channel>
</rss>