netcats: libvirt Remote Daemon over SSH

For one of my university courses, I need to run a virtual machine with Kali Linux. Because it is 2018, my laptop is not really fast enough for a VM, I like cloud technology and I love tinkering with stuff, I wanted to use libvirt’s remote support to run the virtual machine on one of my cloud servers. First, I installed libvirt by apt-get installing libvirt-daemon libvirt-daemon-system qemu-kvm. Since I already have an SSH connection to the host set up, I chose the SSH transport, but got the following error message from virt-manager:

Continuous Blog Deployment: Self Hosted Edition

Initially, I wanted to run my blog from a single LXC container, set up with a web server, a static-site generator and my editor. The idea behind this was to be able to log in via SSH from anywhere remotely, write a blog post and directly publish it. This would have had the advantage of only maintaining a single instance of the blog. The clients (i.e. my computers) would not need to have any kind of local setup (web server, site generator, editor), apart from an SSH client.

Remove Nextcloud Share from Database

My Nextcloud instance is currently suuuuper slow, because one of the federated Nextcloud instances that has shared a file with me is offline. Apparently, this issue has been addressed a long time ago, but I’m still having this problem. When I try to “unshare” the file in the Web GUI, I simply get (after a looong wait) the error message Error deleting file "xyz".. The HTTP DELETE operation sent to the backend returns with a 503 Service Unavailable, as well as some WebDAV exception in XML.

Retrieve latest tag from GitHub with Go

To monitor the latest activity of Git repositories, I was using the go-github golang package to interface with GitHub’s API. While the package API is very rich and powerful, I was still missing one feature: just getting the latest tag of a specific repository. It does have an option to get the latest release, which is GitHub’s way of promoting a tag, however these are not native to Git itself.

SystemTap Syntax Highlighting in LaTeX listings

While writing a report about SystemTap in LaTeX I had to figure out how to get LaTeX to nicely color my listings, because the report featured some source code. By default, the Listings package does not support SystemTap (see chapter 2.4 of the Listings Package user guide). Since SystemTap syntax is very similar to C, I first tried that option, but alas no luck. The problem lies in the fact that SystemTap does not use semicolons to end a statement, therefore the C syntax highlighter gets very confused.

Go: Dump HTTP Request

Recently, I was implementing a Webhook for Gogs in Go. Unfortunately, the documentation is not one hundred percent complete and could be a bit more specific at times. Also, neither reading Gogs source code nor other people’s implementation is what anyone really wants here. What I ended up doing was dumping the complete request (including all HTTP Headers and Body) with the following, simple Go program: package main import ( "fmt" "net/http" "net/http/httputil" ) func main() { http.

LED Strip with Motion Sensor

LED strips are nothing new today. They come in in different lengths (up to 10m), types (waterproof and non-waterproof, 30 or 60 LEDs per meter, …) and colors. You can choose between warm or cold white LEDs and even RGB LED strips, which use three independent LEDs (Red, Green and Blue), are available. Best of all: they are ridiculously cheap! With this project I want to create a custom lighting under my bed, triggered by a motion sensor.

Go: Verify Cryptographic Signatures

Recently, I was implementing a webhook for Travis CI in Go. When a build finishes (depending on the settings), Travis POSTs to a previously specified URL. That requires the URL of the webhook to be publicly accessible (you can still Travis-encrypt the URL, but that’s just security-by-obscurity). To give you the possibility to verify the POST query actually came from Travis, they not only send the payload but also a signature (as an HTTP header).

LXC Containers with separate IPs

LXC (LinuX Containers) are kind of Chroot Enviroments on Steroids. They allow OS-level virtualization by using cgroups (control groups) provided by the Linux kernel. OS-level virtualization is not as resource-hungry as normal virtualization (there is almost zero overhead) but offers less isolation. For more details check the Wikipedia Page of LXC and OS-level virtualization. For me personally, LXC is the perfect middle ground between heavy, full-blown VMs and microservices architectures like Docker.

Kanboard Installation on Debian Jessie

In this guide I’m describing how to set up Kanboard on a Debian Jessie system with Nginx, MySQL and OpenLDAP. What is Kanboard? Kanboard is a Project Management Software utilizing the Kanban methodology, it visualizes your workflow and limits your work in progress. For a complete documentation of how to use Kanboard and utilize Kanban, please visit https://kanboard.net/documentation . Requirements Requirements for Kanboard itself can be found here: https://kanboard.net/documentation/requirements