Skip to content

Instantly share code, notes, and snippets.

Avatar
🐍

Markus Holtermann MarkusH

🐍
View GitHub Profile
View signed-json.py
import base64
import hmac
import json
import secrets
def gen_token(key: bytes, data) -> str:
payload = json.dumps(data).encode()
mac = base64.urlsafe_b64encode(hmac.new(key, payload, "sha256").digest())
return base64.urlsafe_b64encode(payload).decode() + "." + mac.decode()
@MarkusH
MarkusH / remote.txt
Last active Apr 25, 2020
Speaker Checklist
View remote.txt
╔═══════════════╤══════════════╤═══╗
║ Door │ CLOSED │ X ║
╟╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╢
║ Headphones │ OFF │ X ║
╟╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╢
║ Phone │ SILENT │ X ║
╟╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╢
║ Watch │ SILENT │ X ║
╟╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╢
║ Headset │ ON │ X ║
@MarkusH
MarkusH / arch-linux-install
Created Feb 25, 2020 — forked from mattiaslundberg/arch-linux-install
Minimal instructions for installing arch linux on an UEFI system with full system encryption using dm-crypt and luks
View arch-linux-install
# Install ARCH Linux with encrypted file-system and UEFI
# The official installation guide (https://wiki.archlinux.org/index.php/Installation_Guide) contains a more verbose description.
# Download the archiso image from https://www.archlinux.org/
# Copy to a usb-drive
dd if=archlinux.img of=/dev/sdX bs=16M && sync # on linux
# Boot from the usb. If the usb fails to boot, make sure that secure boot is disabled in the BIOS configuration.
# Set swedish keymap
View vector.toml
data_dir = "/var/lib/vector"
# Sources
[sources.nginx_access_logs]
type = "file"
exclude = ["/var/log/nginx/error.log"]
include = ["/var/log/nginx/*.log"]
file_key = "log"
host_key = "server"
View PyConUK-Day3.py
#import *;
PyCon_Day = "3";
while PyCon_Day == str(3):
print("It is ");
print("Monday");
"""Tells us it's Monday""";
def Need_Coffee(foo: Boolean):
if str(foo) == "True":
@MarkusH
MarkusH / b64uuid.py
Created Jul 10, 2019
Base64 Encoding of UUIDs
View b64uuid.py
>>> import base64, binascii, uuid
>>>
>>> def encode(uid: uuid.UUID) -> str:
... return base64.urlsafe_b64encode(uid.bytes).decode().rstrip("=")
...
>>> def decode(uid: str) -> uuid.UUID:
... return uuid.UUID(binascii.b2a_hex(base64.urlsafe_b64decode(uid_b64 + "==")).decode())
...
>>> uid = uuid.UUID("12546fd8-6dd9-4923-9c0a-f1fefadd3e2b")
>>> uid
@MarkusH
MarkusH / warn_too_many_queries.py
Created Jun 13, 2019
Warn on too many queries in context
View warn_too_many_queries.py
import logging
from contextlib import contextmanager
from inspect import getframeinfo, stack
from django.db import connections
logger = logging.getLogger(__name__)
@contextmanager
@MarkusH
MarkusH / create.py
Last active Feb 1, 2019
GraphQL graphene-python pain
View create.py
from graphene import Argument, InputObjectType, Mutation, String
class ThingInput(InputObjectType):
foo = String(required=True)
class OtherInput(InputObjectType):
bar = String(required=True)
class ComponentsInput(InputObjectType):
thing = Argument(ThingInput, required=True)
@MarkusH
MarkusH / mail.md
Last active Nov 22, 2018
Datenleck Mathekalender (Matheon, TU Berlin)
View mail.md

Sehr geehrte Damen und Herren,

Sie haben in den letzten Jahren am MATHEON-Adventskalender teilgenommen und im Rahmen der Anmeldung Ihre E-Mail-Adresse und, falls Sie an dem Gewinnspiel teilgenommen haben, die folgenden Daten angegeben:

  • Name, Geschlecht, Adresse, Telefonnummer, Status (Schüler/Erwachsener), woher Sie den Mathekalender kennen
  • Für Schüler: Klassenstufe, Name und Adresse der Schule
  • Für Erwachsene: Abschluss, Titel und Beruf

Außerdem wurden die IP-Adresse, der Host (z.B. "beispiel.inf.fu-berlin.de" oder "beispiel.di0.t-ipconnect"), der Browser (user agent) und natürlich die Ergebnisse bzw. abgegebenen Antworten bei dem Mathekalender gespeichert.

Am 19.10. haben wir alle alten Benutzerdaten aus der Mathekalender-Datenbank gelöscht und davor ein Backup gemacht, um die Datenbank wiederherstellen zu können, falls bei dem Löschen etwas schiefgehen sollte. Die Funktionsfähigkeit des Backups haben wir auf einem Server der TU Berlin getestet. Am 19.11. fiel uns auf, dass die Ordner auch auf ander

@MarkusH
MarkusH / totp.sh
Last active Sep 24, 2019
Simple Bash TOTP client
View totp.sh
#!/bin/bash
# Copyright (c) 2018, info AT markusholtermann DOT eu
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
# * Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright
You can’t perform that action at this time.