Skip to content

Instantly share code, notes, and snippets.

View Riebart's full-sized avatar

Mike Riebart

View GitHub Profile
@Riebart
Riebart / wss-iam-listener.py
Last active October 31, 2018 05:06
Python script to listen to an AWS IoT Messaging endpoint, authenticating with IAM, and printing messages as they arrive.
#!/usr/bin/env python3
"""
Provide a simple wrapper for listening to an MQTT stream from an AWS IoT websocket endpoint. Prints messages to stdout.
"""
try:
from urllib.parse import urlparse, urlencode, parse_qs
except ImportError:
from urlparse import urlparse, parse_qs
from urllib import urlencode
@Riebart
Riebart / pihole_docker.sh
Created July 15, 2019 19:59
Start a PiHole docker container with the appropriate upstream DNS and server IPs autodetected.
#!/bin/bash
docker run --rm -d --name pihole \
-p 53:53/tcp -p 53:53/udp -p 80:80 \
-v /home/pihole/etc/pihole:/etc/pihole/ \
-v /home/pihole/etc/dnsmasq.d:/etc/dnsmasq.d/ \
--dns $(nslookup 1.1.1.1 | \
grep Server: | tr -s '\t' | \
cut -f2) \
-e DNS1=$(nslookup 1.1.1.1 | \
@Riebart
Riebart / nginx_stream_tls.md
Last active July 16, 2019 21:04
Notes on configuring the nginx stream module to run as a non-root user

nginx Stream Module Config

This will use the nginx SSl stream, and ssl_stream_preread modules

Non-root running of the nginx master process

# chmod 777 /var/run
# mkdir /var/run/nginx
# chown -R www-data:www-data /var/run/nginx
@Riebart
Riebart / ms_store_python.wls
Last active September 2, 2023 04:16
Find all installed Python packages from the Microsoft store, determine install location, and register them as external evalautors.
(* Run this every time the Python from the Store updates, since the binary location encodes the store full version *)
(* Note that Python 3.9 is supported in Mathematica 12.3.1, so the below patches are not relevant on modern versions, but are retained to aid those running older versions from perpetual licenses *)
(* Update to support Mathematica 12, which requires that Python >=3.8 at least reference python3.8.exe, not python.exe. *)
(* Note, python >3.7 is not officially supported in Mathematica 12.0.0, and other notebook interfaces.
Attempts to use it result in a "required field 'type_ignores' missing from module" error
Source: https://mathematica.stackexchange.com/questions/211984/solved-externalevaluatepysys-pycmd-evaluates-to-failure *)
(*
A patch to C:\Program Files\Wolfram Research\Mathematica\12.0\SystemFiles\Links\WolframClientForPython\wolframclient\utils\externalevaluate.py to enable 3.8:
66c66
< exec(compile(ast.Module(expressions, []), '', 'exec'), current)
@Riebart
Riebart / get_symlink_file_target.ps1
Created July 17, 2019 17:03
FInd the target of a file reparsepoint (such as those used for binaries in Store apps)
@Riebart
Riebart / do.js
Created September 19, 2019 17:19
Nodejs script to convert Textract output into a PDF using PDFkit
const fs = require('fs');
let rawdata = fs.readFileSync('/working/out4.json');
let data = JSON.parse(rawdata);
// You'll need to twiddle the dpi, page size, and font size to get your stuff to layout properly.
// Assumes uniform font size in the input.
let dpi = 200;
let width = 17 * dpi;
let height = 11 * dpi;
const PDFDocument = require('pdfkit');
@Riebart
Riebart / .bashrc.aws
Created October 26, 2019 01:17
Collection of bashrc contents that makes it a bit easier to work across accounts
#!/bin/bash
# For non-256 colour terminals
#PS1='\[\e]0;\w\a\]\n\[\e[00;35m\]${AWS_PROFILE}$([ "$AWS_PROFILE" == "" ] && echo -n "" || echo -n " ")'
# The default region, if set
PS1=$PS1'\[\033[38;5;92m\]${AWS_DEFAULT_REGION}$([ "$AWS_DEFAULT_REGION" == "" ] || echo -n " ")'
# The AWS profile
PS1=$PS1'\[\e]0;\w\a\]\[\033[38;5;208m\]${AWS_PROFILE}$([ "$AWS_PROFILE" == "" ] || echo -n " ")'
# The existence of environment variables
@Riebart
Riebart / watch_fedex_package.sh
Created March 1, 2020 19:36
Watch a fedex package status via API calls
#!/bin/bash
tracking_number="$1"
while [ true ]
do
date +%FT%T
echo -n "Tracking ${tracking_number} "
curl 'https://www.fedex.com/trackingCal/track' \
-s \
-H 'Connection: keep-alive' \
-H 'Pragma: no-cache' \
@Riebart
Riebart / config.snipet
Created March 2, 2020 17:52
Ubiquiti EdgeRouter IPv6 router advert and prefix delegation config
interfaces {
ethernet eth1 {
address 10.0.0.1/24
address 192.168.100.1/24
address ffff:ffff:ffff:ffff::1/64
address ffff:ffff:ffff:ffff::1/64
description Athens
duplex auto
firewall {
local {
@Riebart
Riebart / remarkable_find_update_device_id.py
Last active December 15, 2020 15:55 — forked from leezu/remarkable_find_update_device_id.py
Python script to rotate the machine IDs and OEM identifiers to find one that is eligible for a software update.
#!/usr/bin/env python3
import time
import uuid
import random
import re
import sys
import requests