Skip to content

Instantly share code, notes, and snippets.

View qrkourier's full-sized avatar

Kenneth Bingham qrkourier

View GitHub Profile
@qrkourier
qrkourier / k3s-loop-ula.bash
Last active July 9, 2024 01:40
install single-node, single-stack IPv6 k3s with a random, private IPv6 address on the loopback interface for host-local communication
#!/usr/bin/env bash
_gen_ula(){
# Generate a 40-bit random global ID
local random_id
random_id=$(od -An -N5 -tx1 /dev/urandom | xxd -p | tr -d '\n')
# Construct the ULA address prefix with the generated global ID
local ula_prefix="fd${random_id:0:2}:${random_id:2:4}:${random_id:6:4}"
echo "${ula_prefix}::1"
}
@qrkourier
qrkourier / ziti-downstreams.bash
Last active June 25, 2024 00:53
Build Ziti downstreams (Linux pax, Docker images)
#!/usr/bin/env bash
set -o errexit
set -o nounset
set -o pipefail
exec 3>/dev/null # suppress debug on 3
exec 4>&1; exec 1>/dev/null # stash stdout on 4
declare -a ARTIFACTS=(openziti{-{controller,router},})
@qrkourier
qrkourier / getzet.bash
Last active June 12, 2024 22:22
install a specific version of the ziti-edge-tunnel Linux binary from GitHub
#!/usr/bin/env bash
set -o errexit
set -o nounset
set -o pipefail
set -o xtrace
get(){
local target=$1
local arch=$2
@qrkourier
qrkourier / docker-hub-tag-multi-platform-latest.bash
Last active May 22, 2024 15:46
Tag the last known good semver as latest
(set -euxopipefail
GOOD_VERSION=1.0.0
for REPO in ziti-{cli,controller,router}; do
docker buildx imagetools create --tag openziti/${REPO}:latest openziti/${REPO}:${GOOD_VERSION}
done
)
@qrkourier
qrkourier / artifactory-unpublish.zsh
Last active May 22, 2024 15:49
Delete a bad version from DEB/RPM Artifactory repos
(
set -euxopipefail
ARTIFACTORY_REPO='zitipax-openziti-(rpm|deb)-stable'
DELETE="--dry-run"
: DELETE="--quiet"
BAD_VERSION=1.1.8
declare -a ARTIFACTS=(openziti{,-controller,-router})
@qrkourier
qrkourier / artifactory-retention.zsh
Created April 2, 2024 22:05
Artifactory retention policy
(
set -euxopipefail
ARTIFACTORY_REPO='zitipax-(openziti-(rpm|deb)-test|fork-(rpm|deb)-stable)'
: DELETE="--quiet"
DELETE="--dry-run"
RETENTION_DAYS=30
declare -a ARTIFACTS=(ziti-edge-tunnel openziti{,-controller,-router} zrok{,-share})
@qrkourier
qrkourier / transcode-to-mp4.py
Created February 14, 2024 23:50
to convert videos in a folder to MP4 and remove the old file if successful, say "python transcode-to-mp4.py FOLDER --delete"
import os
import sys
from os import chdir, walk
from os.path import dirname, getsize, join
from pathlib import Path
from shutil import move
import ffmpeg
import filetype
@qrkourier
qrkourier / zrok-test-cli-versions.py
Created January 18, 2024 22:32
ensure a list of BASH commands, e.g., `zrok enable` succeed for a list of zrok versions selected by criteria like min/max version and age.
import datetime
import logging
import os
import re
import time
import docker
import requests
from packaging import version
@qrkourier
qrkourier / ziti-mfa.bash
Last active February 28, 2024 18:28
send Ziti Edge Tunnel MFA when Yubikey is present
#!/usr/bin/env bash
set -o errexit
set -o nounset
set -o pipefail
if systemctl is-enabled --quiet ziti-edge-tunnel.service && ykman piv info &>/dev/null
then
RESPONSE=$(ykman oath accounts code "$ZITI_IDENTITY" \
| awk '{print $2;}' \
@qrkourier
qrkourier / ziti-jwt.py
Last active May 21, 2024 15:10
parse or verify a Ziti enrollment token as JWT
#!/usr/bin/env python
# This script parses and attempts to verify the signature of a Ziti JWT token and prints the header, payload, and
# analysis of the token.
import argparse
import json
import logging
import os
import ssl