Create or Append a debian/changelog Entry

Since i always have to look this up, everytime i need it, i write it down once, as „note to self“!

NAME="John Smith" EMAIL=j.smith@example.org \
    dch --create \
        --package my-package \
        --newversion 0.1 \
        "Initial release"

And that’s it! 🙂

Generate Certificate Signing Requests (CSRs) for TLS Server Certificates

Overview

In this article, a procedure is described to generate multiple certificate signing requests (CSR) for TLS servers, such as SMTP-, IMAP- or HTTP-servers, so that we can submit them to a Certificate Authority (CA). The CA will eventually perform the signature and return a public certificate to us.

A Shell and the software OpenSSL should be available.

The subject organization (the entity the request is for) is assumed to be the same on every request, and the subject alternative names are assumed to follow the same pattern (the DNS name of some service plus a „www.“ DNS alias for that service).

The procedure can easily be expanded to make more request information configurable and allow, for example, processing a CSV file into a set of requests.

Lesen Sie mehr »

 Disco Infernale

Trying out the Synths in my upgrade of Reason …

Methods of HTTP Caching

Preface

I find the world wide web and the spectrum of methods and instruments that make it happen full of dubiousness and opportunity alike. Caching is generally known as one of the „hard problems“ of information science, and this is not different when it comes to technologies of the web. The text presented here, as unsorted and questionable as it might be, can in the least serve to document this further.

The bulk of this text was written between December 2019 and January 2020. It contains a summarization of my experience as an administrator and developer of web-based applications, some research about current subjects (specifically browser caches and reverse-caching HTTP proxies) and references to relevant IETF standards.

Lesen Sie mehr »

 Time for a Spin …

Python3 GTK3 TextView Drag-and-Drop Example

Just a small finger exercise …

#!/usr/bin/env python3

import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk
import os
import sys

class GUI:
    def __init__(self):
        self.window = Gtk.Window()
        self.window.connect('destroy', Gtk.main_quit)
        self.textview = Gtk.TextView()
        self.textview.connect("drag-data-received", self.on_drag)
        self.window.add(self.textview)
        self.window.show_all()
        self.buffer = self.textview.get_buffer()

    def on_drag(
        self,
        widget,
        drag_context,
        x,
        y,
        data,
        info,
        time
    ):
        text = data.get_text()
        print("DEBUG: text = %s" % text)
        self.buffer.set_text("")

def main():
    app = GUI()
    Gtk.main()

if __name__ == "__main__":
    sys.exit(main())

There is no such Thing as „End-to-End-Encryption“

A communication between two communication partners, which on a technical level can also be called „endpoints“ or „ends“ of a connection (or more general, of a channel of communication), is either encrypted, or it is not. If somewhere in between the „ends“ of the connection, encryption takes place, such that there exist parts of the entire communication channel which are not affected by it, then the comunication itself is not encrypted.

There is no debate about „end-to-end encryption – yes or no“ but only about „encryption – yes or no“, and the answer to that question must clearly be „yes“. Any service of communication that claims to offer encryption, except that this encryption „is not end-to-end“, does not offer encryption at all.

This is a surprisingly simple resolution of an apparently difficult question.

Bourne to Bourne Again Shell Forward Compatibility

Introduction

In this article i try to find out, if Bourne Shell scripts are runnable in Bourne Again Shell without modification. If not, i advice on how to modify the code so that it runs on both Shells.

An interpreter for some variant of Bourne Shell is available as an executable /bin/sh on most Linux and UNIX systems. Writing Bourne Shell script has the possible advantage that such a script can work on all these systems with no changes to the code; be it Linux, AIX, FreeBSD, initramfs or a string passed to a C library call system(3), expressions such as

  • echo hello | wc
  • my_pid=$$

or

  • exit 1

would always work.

Recently, i used GNU Bourne Again Shell for scripting, and i wondered if all of my longstandingly Bourne Shell established practices were seamlessly portable. So i did some research, and in this article i highlight some code constructs i found that work in Bourne Shell and do not work as expected in Bourne Again Shell. Code currently interpreted by /bin/sh and containing such constructs must be reviewed if will be interpreted by /bin/bash.

As it stands, i will focus on reserved words and built-ins, brace expansion and pipeline subprocesses.