Skip to content

Instantly share code, notes, and snippets.

View brycied00d's full-sized avatar
👍
"Hasn't fucked up recently" engineer.

Bryce Chidester brycied00d

👍
"Hasn't fucked up recently" engineer.
  • Tigard, OR
View GitHub Profile
@brycied00d
brycied00d / script.sh
Created October 16, 2015 01:30
Parse TRANS.TBL To Rename Files
#!/bin/sh
# This is a little scriptlet I wrote to take the files I'd copied from a CD under
# Windows, which inexplicably did not honour the RockRidge or Joliet extensions,
# and rename them back to their correct names, and recreate symbolic links.
# Adjust as necessary (eg: some BSDs don't support -v on mv and ln)
#
# Bryce Chidester <bryce@cobryce.com>
#
for DIR in $(find . -type d); do
(cd "$DIR" &&
@brycied00d
brycied00d / speedtest
Last active July 16, 2022 14:30
Moving Speedtest.net's Logic Inside of Nginx
# My goal was two-fold:
# Avoid installing PHP for a single 12-line PHP file (only 5 actual LOC)
# Instead this utilises ngx_lua (and luaJIT) which avoids forking out and keeps the logic in-memory.
# Optimize where I could by moving static resources into the configuration/memory.
# The large download test files can also be moved into a ramdisk to eek out a bit more performance by reducing disk IO
# Serve the same speedtest from multiple domains using only relative URLs and traversing subdomains
# The idea is that speedtest.companyA.com can be served from the same server{} block as speedtest.companyB.com
# The index page has links to allow the user to force a connection over ipv4 or ipv6. A connection to /ipv4, for
# instance, will redirect the user to ipv4.speedtest.$X/ where $X is determined dynamically. Likewise for /ipv6,
# and there's /default to redirect to just speedtest.$X/
@brycied00d
brycied00d / gist:627ec6c4235405838247
Created May 29, 2015 09:01
Abusing Nginx Configuration To Serve And Redirect Multiple Subdomains Under a Variable Domain
# The idea is that speedtest.companyA.com can be served from the same server{} block as speedtest.companyB.com
# The index page has links to allow the user to force a connection over ipv4 or ipv6. A connection to /ipv4, for instance,
# will redirect the user to ipv4.speedtest.$X/ where $X is determined dynamically. Likewise for /ipv6, and there's /default
# to redirect to just speedtest.$X/
# Note that this does assume that "ipv4.speedtest.$X" and "ipv6.speedtest.$X" are setup with A and AAAA records respectively.
location = /ipv4 {
# IP access requires a hard-coded IPv4 address for the redirect.
if ($host = "[$server_addr]") { return 302 $scheme://$ipv4addr/; }
if ($host = "$server_addr") { return 302 $scheme://$ipv4addr/; }
@brycied00d
brycied00d / gist:564dbadead55dd3b8414
Created November 24, 2014 18:18
nginx redirect to the FQDN with an alternative port
server {
listen 80; ## listen for ipv4; this line is default and implied
listen [::]:80 default_server ipv6only=on; ## listen for ipv6
server_name localhost; # A sane default, nobody cares
# The actual logic
set $this_host $host;
if ($host !~* "\.fqdn\.com$") {
#rewrite ^ https://$host.fqdn.com:8006$request_uri? permanent;
set $this_host "$host.fqdn.com";
}
@brycied00d
brycied00d / gist:13483a1d8363e457f963
Last active July 26, 2016 13:35
pfSense DNS Forwarder Batch Host Creation For "dot${lastoctet}" Naming Schemes - Tested on pfSense 2.1.5
<?php
// pfSense PHP script to generate a range of DNS forwarder hosts based on
// "dot${lastoctet}", eg. 192.0.2.100 == dot100.example.com
// Open terminal, run "php" copy/paste script with the following defines tweaked
// Ctrl-D, wait a moment until you see "Content-type: text/html"
// Open the DNS config in the web UI and click Apply Changes
define('DOT_DOMAIN', 'example.com');
define('DOT_SUBNET', '192.0.2.'); // Leave off the final octet, include the dot
define('DOT_RANGE_START', 100);

Keybase proof

I hereby claim:

  • I am brycied00d on github.
  • I am brycec (https://keybase.io/brycec) on keybase.
  • I have a public key whose fingerprint is D52A 28D2 6027 1223 D86A 8DF5 F3E5 CBF7 204B D612

To claim this, I am signing this object:

@brycied00d
brycied00d / script2.sh
Created September 16, 2013 20:42
Quick script to build a USB bootable stick
#!/bin/bash
# Quick script to build a USB bootable stick
# Requires syslinux, sfdisk, dosfstools, and looptools
# ex: script2.sh /dev/sdd /path/to/overlay
USBDEVICE=$1
if [ ! $1 ]
then
echo You must specify the full path to the USB device, e.g. /dev/sdd
exit 1
@brycied00d
brycied00d / update_ubuntu.sh
Last active October 12, 2015 07:17
Script to download the latest netboot/net-install files for Ubuntu
#!/bin/bash
MIRROR=mirrors.us.kernel.org
ROOTDIR=/home/image/boot
for REL in vivid utopic trusty saucy precise lucid #raring quantal oneiric natty maverick
do
for ARCH in i386 amd64
do
echo "Sync'ing Ubuntu $REL / $ARCH..."
mkdir -p $ROOTDIR/Ubuntu/$REL/$ARCH/
@brycied00d
brycied00d / update_centos.sh
Created October 31, 2012 22:08
Script to download the latest netboot/net-install files for CentOS
#!/bin/bash
MIRROR=mirrors.us.kernel.org
ROOTDIR=/home/image/boot/
#wget -N http://$MIRROR/centos/5/os/i386/images/pxeboot/initrd.img http://$MIRROR/centos/5/os/i386/images/pxeboot/vmlinuz
#wget -N http://$MIRROR/centos/5/os/x86_64/images/pxeboot/initrd.img http://$MIRROR/centos/5/os/x86_64/images/pxeboot/vmlinuz
#wget -N http://$MIRROR/centos/6/os/i386/images/pxeboot/initrd.img http://$MIRROR/centos/6/os/i386/images/pxeboot/vmlinuz
#wget -N http://$MIRROR/centos/6/os/x86_64/images/pxeboot/initrd.img http://$MIRROR/centos/6/os/x86_64/images/pxeboot/vmlinuz
# Starting with RHEL 7, there are only x86_64 releases (no i386)
@brycied00d
brycied00d / update_debian.sh
Created October 31, 2012 22:06
Script to download the latest netboot/net-install files for Debian
#!/bin/bash
MIRROR=mirrors.us.kernel.org
ROOTDIR=/home/image/boot/
# http://$MIRROR/debian/dists/squeeze/main/installer-i386/current/images/netboot/debian-installer/i386/initrd.gz
# http://$MIRROR/debian/dists/squeeze/main/installer-i386/current/images/netboot/debian-installer/i386/linux
# $ROOTDIR/Debian/squeeze/i386/
for REL in jessie wheezy #squeeze lenny etch sarge
do
for ARCH in i386 amd64