Skip to content

Instantly share code, notes, and snippets.

View deckerego's full-sized avatar

John Ellis deckerego

View GitHub Profile
@deckerego
deckerego / prusacam
Last active January 12, 2024 14:09
Send an (old) RPi camera still to Prusa Connect
* * * * * pi raspistill -n -q 80 -w 960 -h 720 -e jpg -t 1000 -o - | curl -v -H 'Token: TOKEN' -H 'Content-Type: application/jpg' -H 'Fingerprint: FINGERPRINT' https://webcam.connect.prusa3d.com/c/snapshot -T -
@deckerego
deckerego / NES30 Keyboard Map - Player 1
Last active September 12, 2023 13:15
Keyboard mappings for the NES30 series of gamepad controllers, in Bluetooth keyboard mode.
DPAD Up -> c
DPAD Down -> d
DPAD Left -> e
DPAD Right -> f
L Analog Left -> Left Arrow
L Analog Right -> Right Arrow
L Analog Up -> Up Arrow
L Analog Down -> Down Arrow
@deckerego
deckerego / action_fingerprint.sh
Created June 29, 2023 20:28
Find the TLS fingerprint for GitHub Actions token server
#!/bin/bash
openssl s_client -servername token.actions.githubusercontent.com -showcerts -connect token.actions.githubusercontent.com:443 2>/dev/null < /dev/null | \
openssl x509 -fingerprint -sha1 -noout | \
grep Fingerprint | \
tr -d ':' | \
tr '[:upper:]' '[:lower:]' | \
cut -f2 -d=
@deckerego
deckerego / redirect.tf
Last active October 7, 2022 03:06
HTTP (only) redirect for alternate domains using S3
locals {
www_zones = {
"www.domainone.egg" = "FEEDFACEBEEFFEED"
"www.domaintwo.egg" = "BEEFBEEFFEEDFACE"
"www.domainthree.egg" = "FACEFACEFEEDFACE"
}
}
resource "aws_s3_bucket" "redirect-www-bucket" {
for_each = local.www_zones
@deckerego
deckerego / terraform.tf
Last active October 7, 2022 03:05
Redirect HTTP traffic using Application Load Balancers
locals {
public_zones = {
"domainone.egg" = "FEEDFACEBEEF"
"domaintwo.egg" = "BEEFBEEFFACE"
"domainthree.egg" = "FACEFEEDFACE"
}
}
resource "aws_default_vpc" "default" {}
@deckerego
deckerego / gencert.sh
Created March 18, 2018 16:27
Generate a wildcard SSL certificate from Let's Encrypt
#!/bin/sh
mkdir -p log lib etc
sudo docker run -it --rm --name certbot -v $PWD/etc:/etc/letsencrypt -v $PWD/lib:/var/lib/letsencrypt -v $PWD/log:/var/log/letsencrypt certbot/certbot certonly --debug --manual --preferred-challenges dns --server https://acme-v02.api.letsencrypt.org/directory
@deckerego
deckerego / Slack.py
Created May 7, 2015 17:16
Send your current IP address to Slack
import logging
import socket
from slacker import Slacker
from config import configuration
logger = logging.getLogger('slack')
class Slack(object):
def __init__(self, printer):
@deckerego
deckerego / iterate_network.js
Last active May 25, 2021 02:13
IPv4 Network Info Calculator & Iterator
function getIPv4Range(networkString) {
const networkdef = networkString.split('/');
const netmask = parseInt(networkdef[1])
const bitmask = 32 - netmask;
const quads = networkdef[0].split('.');
const addrbin =
(parseInt(quads[0]) << 24) +
(parseInt(quads[1]) << 16) +
(parseInt(quads[2]) << 8) +
parseInt(quads[3]);
@deckerego
deckerego / mynodeapp
Created March 5, 2021 19:41
An LSB init script that runs a node app as a daemon
#! /bin/bash
### BEGIN INIT INFO
# Provides: mynodeapp
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: A Node app that runs in the background
# Description: A Node app that runs in the background
### END INIT INFO
@deckerego
deckerego / jabtest.py
Created September 25, 2015 23:29
An example of using Jabber/XMPP communication with Python
import sleekxmpp
class Jabber(sleekxmpp.ClientXMPP):
def __init__(self, username, password, instance_name=None):
jid = "%s/%s" % (username, instance_name) if instance_name else username
super(Jabber, self).__init__(jid, password)
self.instance_name = instance_name
self.add_event_handler('session_start', self.start, threaded=False, disposable=True)
self.add_event_handler('message', self.receive, threaded=True, disposable=False)