Skip to content

Instantly share code, notes, and snippets.

View bigntallmike's full-sized avatar

Michael T. Babcock bigntallmike

View GitHub Profile
@bigntallmike
bigntallmike / rebuildraid.py
Last active February 14, 2020 19:21
Rebuild raid concept
#!/usr/bin/python -ttu
#
# For a set of disks that were previously in a RAID set, build an image of the data such as it was,
# ignoring parity.
class RAIDDEV:
def __init__(self, DEVICE, OFFSET=0):
self.DATA=file(DEVICE, r)
self.DATA.seek(OFFSET)
@bigntallmike
bigntallmike / listintersection.java
Last active March 4, 2020 18:26
Find the intersection of N lists contained in SearchResults
if (SearchResults.size() == 1) {
DATA = SearchResults.get(0);
} else {
/* Find the smallest list */
int baseitem = 0;
for (int i = 1; i < SearchResults.size(); i++) {
if (SearchResults.get(i).size() < SearchResults.get(baseitem).size()) {
baseitem = i;
}
}
public class OrderedArrayList<T> {
private ArrayList<T> data;
private int searchpos;
public OrderedArrayList(ArrayList<T> data) {
this.data = data;
searchpos = 0;
}
public boolean contains(T other) {
@bigntallmike
bigntallmike / nullmailer-2.2-delay.diff
Created March 10, 2020 18:45
Delay calculation for E-mail sending under a daily limit with nullmailer
diff -ur nullmailer-2.2/src/send.cc nullmailer-2.2-delay/src/send.cc
--- nullmailer-2.2/src/send.cc 2018-10-12 16:49:30.000000000 -0400
+++ nullmailer-2.2-delay/src/send.cc 2020-03-10 13:58:17.803978134 -0400
@@ -31,6 +31,7 @@
#include <sys/types.h>
#include <sys/wait.h>
#include <unistd.h>
+#include <ctime>
#include "ac/time.h"
#include "argparse.h"
--- qmail-scanner-queue.pl 2019-05-16 13:27:59.244644818 -0400
+++ qmail-scanner-queue-limit.pl 2019-05-16 13:40:30.543728379 -0400
@@ -101,6 +101,17 @@
+use POSIX qw(strftime);
+my $THISHOUR = strftime "%H", localtime;
+
+# How many messages can a user send per hour
+my $MAXMSGPERHR=5;
+if ($THISHOUR > 4 and $THISHOUR < 18) {
+ $MAXMSGPERHR=50;
@bigntallmike
bigntallmike / cctype.py
Created March 17, 2020 19:58
Credit Card type detection
#!/usr/bin/python
import re
def cctype(number):
cclist = {
'Mastercard': re.compile('^(?:5[1-5][0-9]{2}|222[1-9]|22[3-9][0-9]|2[3-6][0-9]{2}|27[01][0-9]|2720)[0-9]{12}$'),
'Visa': re.compile('^4[0-9]{12}(?:[0-9]{3})?$'),
'American Express': re.compile('^3[47][0-9]{13}$'),
'Diners Club': re.compile('^3(?:0[0-5]|[68][0-9])[0-9]{11}$'),
/* The goal here is to create N forked processes and loop a list of 'jobs'
* and submit each to a free fork when it becomes free */
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <time.h>
cd /var/qmail/control/notlshosts
cat /var/log/qmail/current \
| sed -n 's/.*\delivery \([0-9]\+\):.*TLS_connect_failed.*/\1/p' \
| xargs -n1 --replace={} grep "{}" /var/log/qmail/current \
| grep -B1 TLS \
| sed -n 's/.*to remote .*@\(.*\)/\1/p' \
| sort | uniq \
| xargs -n1 dnsqr mx \
| grep answer: | awk '{print $6}' \
| xargs -n1 touch
@bigntallmike
bigntallmike / mysqlbackup.py
Last active December 15, 2020 22:01
Simple routine to call mysqldump to backup sql data in Python
from configparser import ConfigParser
def backup_mysql():
config = ConfigParser()
config.read("/etc/sysconfig/mysqldump")
config = config['mysqldump']
mysql_dump = ['mysqldump',
'--user=%(username)s' % config,
'--password=%(password)s' % config,
@bigntallmike
bigntallmike / timetosec.py
Last active December 24, 2020 15:29
Convert HH:MM:SS timestamps in a list to seconds only
#!/usr/bin/python3 -ttu
#
# For a list in format hh:mm:ss - hh:mm:ss, where hh: and mm: are optional, return seconds instead
#
# Free to use or critique, its not complex enough for licensing
import re
import sys
# Re-formatted for better visual parsing