Skip to content

Instantly share code, notes, and snippets.

@rkok
rkok / plesk-staggered-cron.sh
Created July 24, 2024 05:34
Plesk wp-cron staggered scheduler
#!/usr/bin/env bash
#####################
# Buggy, but good enough.
# Walks over users' Plesk-managed wp-cron entries, to change this:
# <whatever> * * * * /opt/plesk/php/8.2/bin/php -f 'httpdocs/wp-cron.php'
# ...into something like this:
# 7,23,39,55 /opt/plesk/php/8.2/bin/php -f 'httpdocs/wp-cron.php'
# so that wp-cron runs are spread out as much as possible,
# to reduce simultaneous memory usage.
#####################
@rkok
rkok / fn-wprockettest.sh
Created July 19, 2024 23:40
Bash function to check whether/when a WordPress URL was cached by WP Rocket
# Usage: wprockettest https://example.com/some-path/
wprockettest() {
URL="$1"
echo -n "$URL --> "
RES="$(curl -ksvG "$URL" 2>&1)"
CODE="$(echo "$RES" | grep -E '^< HTTP' | awk '{print $3}')"
CACHE_STATUS="Not cached"
@rkok
rkok / toggle-screen-dimmer.sh
Last active April 16, 2024 04:29
X screen dimmer toggler - Uses xrandr to toggle between dimming/brightening connected displays
#!/usr/bin/env bash
#####################
# toggle-screen-dimmer.sh - X screen dimmer toggler
# Uses xrandr to toggle between dimming/brightening connected displays
# See --help for usage
# Recommended: create a launcher for this script on the task bar!
#####################
list_displays() {
xrandr --verbose --current | awk '/ connected/ {print $1}'
@rkok
rkok / btheadset_toggle.sh
Last active April 16, 2024 03:51
PulseAudio headset mode toggler
#!/usr/bin/env bash
#######################
# btheadset_toggle.sh
#
# Toggles bluetooth headset mode between
# A2DP (high quality, no microphone)
# and headset (low quality + microphone).
#
# Usage: ./btheadset_toggle.sh
#
@rkok
rkok / iwp-cleanup-db.sh
Last active October 10, 2023 06:40
Cleanup InfiniteWP history tables
#!/usr/bin/env bash
#################################################
# For each site in InfiniteWP,
# removes all but the latest history records.
#
# This speeds up InfiniteWP and
# reduces the size of its tables,
# particularly iwp_history_raw_details.
#
# Indended to be run as a daily cronjob.
@rkok
rkok / MultiHttps.ts
Created August 14, 2023 04:31
Rate-limit-aware, multi-interface wrapper for Axios (HTTPS requests only)
/*
* Disclaimer: this was slung together as the result of some trial and error and can definitely be improved.
*
* Pass environment variable DEBUG=1 for lots of debug logging.
*
* Usage example:
*
* const rateLimits: RateLimitDef[] = [
* {
* urlRegex: 'carriages/[^/]+/horses',
@rkok
rkok / plesk_global_auto_prepend.sh
Last active June 15, 2023 06:04
Plesk auto_prepend_file installer
#!/usr/bin/env bash
############################################################
# For every domain on a Plesk server:
#
# - Sets a desired PHP auto_prepend_file
# - Patches open_basedir (if necessary)
# - Strips any Wordfence WAF open_basedir override (make sure your custom prepend file re-includes it!)
#
# Only tested on RedHat-like servers with Plesk Obsidian 18.0.52
# Use at your own risk
@rkok
rkok / ssh-tunnel.sh
Created March 23, 2022 07:27
Persistent SSH tunnel helper
#!/usr/bin/env bash
# Quit on error
set -e
# Functions
msg() {
echo -e "\x1B[1m$1\x1B[0m"
}
@rkok
rkok / mkem3u.sh
Created July 26, 2019 04:44
Extended m3u generator
#!/bin/bash
#################################################################
# mkem3u.sh - Extended m3u generator
# Usage:
# ./mkm3u.sh
# Setup:
# 1. Install dependencies:
# mp3info - http://ibiblio.org/mp3info/
# id3tool - http://nekohako.xware.cx/id3tool/
# 2. Supply INPATHS. Paths which are relative to
@rkok
rkok / mkm3u.sh
Created July 19, 2019 07:35
Bare-bones m3u generator
#!/bin/bash
#################################################################
# mkm3u.sh - Bare-bones m3u generator
# Usage:
# ./mkm3u.sh
# Setup:
# 1. Supply INPATHS. Paths which are relative
# to this script will result in relative paths in the m3u
# 2. (Optional) Edit file extensions "mp3|flac|xm|s3m|mod|it"
#################################################################