Skip to content

Instantly share code, notes, and snippets.

@meisterluk
meisterluk / ansible-runner-broken.txt
Created January 22, 2023 10:11
I put many efforts into getting ansible-runner working. It just does not work.
The status file:
import ansible # tested with 6.7.0
import ansible_runner # tested with 2.3.1
[…]
r = ansible_runner.run(
private_data_dir="ansible/web",
@meisterluk
meisterluk / zipfile_extractall_secure.py
Created October 5, 2022 01:22
zipfile's extractall method with a path check that the target folder is the prefix after utilizing os.path.normpath
import os.path
import zipfile
# tested with python 3.8.10
def secure_zipfile_extractall(zip_filedesc, target_directory):
"""Copy all files recorded in zipfile `zip_filedesc`
to the directory `target_directory`, but prevent malicious filepaths
like `../../../etc/hosts` by using os.path.normpath
"""
@meisterluk
meisterluk / rpi_sensehat_fireworks.lua
Last active January 3, 2021 01:24
Creating a firework with the Raspberry Pi 3 Model B Sense HAT 8×8 LED matrix and Lua 5.3
-- load pixels.lua (attached as part of this gist)
package.path = package.path .. ';?.lua'
local hat = require('rpi_sensehat_pixels')
-- a generic color table
local colortable = {
[0] = '0000FF',
[1] = '00FF00',
[2] = 'FF0000',
[3] = '1354AA',
@meisterluk
meisterluk / rpi_sensehat_pixels.lua
Last active August 16, 2020 10:48
Controlling the Raspberry Pi 3 Model B Sense HAT 8×8 LED matrix from Lua 5.3
local M = {_TYPE='module', _NAME='sensehat_pixels', _VERSION='0.0.1'}
-- Sleep this thread
function sleep(n)
io.popen("sleep " .. tostring(n)):read()
end
-- Split a string into lines
function lines(str)
local t = {}
@meisterluk
meisterluk / tex-loop.tex
Created February 24, 2020 18:33
A looping device in plain Teχ
% Input: we define \loop to print some text the number of given times
\newcount\c%
\long\def\loop#1 for #2 times{
\c=#2\relax%
\begingroup%
\def\iterate{%
\ifnum\c>0 %
\advance\c by -1%
{#1}\par%
@meisterluk
meisterluk / gsub-tests.lua
Created September 9, 2019 15:37
lua string.gsub test extracted from the official lua testsuite
local tests = {
["gsub"] = string.gsub,
["testID"] = 0
}
function tests.assert(self, cond, identifier)
self.testID = self.testID + 1
assert(cond, "test #" .. tostring(self.testID) .. " (" .. tostring(identifier) .. " test) failed")
end
@meisterluk
meisterluk / example.py
Created September 4, 2019 12:33
Implement pattern matching based function dispatching (as in Erlang) in Python using decorators
import logging
logging.basicConfig(level=logging.NOTSET)
logging.getLogger(__name__).setLevel(logging.NOTSET)
"""
http://erlang.org/doc/reference_manual/functions.html#syntax
Erlang equivalent:
fact(N) when N>0 -> % first clause head
N * fact(N-1); % first clause body
@meisterluk
meisterluk / Dockerfile
Last active July 26, 2019 22:29
Get pretalx 1.0.3 run in one development docker container
FROM debian:buster-20190708
RUN apt-get update && apt-get upgrade
RUN apt install -y python3-pip nginx postgresql redis sudo
RUN adduser root sudo
# corresponds to “Step 0: Prerequisites”
RUN adduser pretalx --disabled-password --home /var/pretalx --system --gecos 'pretalx user account'
# corresponds to “adduser pretalx --disabled-password --home /var/pretalx” of “Step 1: Unix user“
@meisterluk
meisterluk / mandelbrot.go
Created November 18, 2018 17:21
Mandelbrot in Golang (as PNG) based on @benhoyt's mandel.awk
package main
import (
"image/color"
"image/png"
"image"
"fmt"
"os"
)
@meisterluk
meisterluk / inkscape-layer-to-objectid.py
Created March 18, 2018 17:40
Inkscape layer name to SVG object ID
#!/usr/bin/env python3
"""
Inkscape Layer to Object-ID
===========================
Inkscape represents layers as SVG `g` elements annotated with metadata like layer name.
This script takes an SVG file and returns a JSON map of layer names to object IDs.
If you supply CLI option `-l`, you can retrieve the object ID of an individual layer.