Skip to content

Instantly share code, notes, and snippets.

@friek
friek / is-latest-version.sh
Created January 8, 2024 13:42
Check if a version is the latest git tag version
#!/bin/sh
# Check if the passed version is greater than the versions registered in the git tags
# Uses sort -V from GNU sort to sort versions and assumes git tags in
# semver format v<major>.<minor>.<patch>
check_version="$1"
if [ -z "$check_version" ]; then
# Assume it's not the latest version
echo "No version specified. Usage: $0 <version>"
echo "Example: $0 v1.1.0 -> checks if v1.1.0 is greater than the versions in the git tags"
@friek
friek / joingroup.py
Created October 11, 2018 13:39
Join a multicast group in python and receive data
#!/usr/bin/env python3
import socket
import sys
def main(argv):
multicast_group = argv[1]
multicast_port = int(argv[2])
interface_ip = argv[3]
@friek
friek / BarcodeScanner.java
Created October 10, 2018 20:13
zxing barcode scanner example
import com.google.zxing.*;
import com.google.zxing.client.j2se.BufferedImageLuminanceSource;
import com.google.zxing.common.HybridBinarizer;
import com.google.zxing.multi.GenericMultipleBarcodeReader;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
@friek
friek / views.py
Created June 8, 2018 12:52
ViewSet for the Netbox CustomField
# in extra.api.views
class CustomFieldChoicesViewSet(FieldChoicesViewSet):
def __init__(self, *args, **kwargs):
super(CustomFieldChoicesViewSet, self).__init__(*args, **kwargs)
self._fields = OrderedDict()
for cfc in CustomFieldChoice.objects.all():
self._fields.setdefault(cfc.field.name, [])
self._fields[cfc.field.name].append({'value': cfc.pk, 'label': cfc.value})
@friek
friek / futures.py
Created July 28, 2017 07:49
Demonstrates the use of futures in python 3
from concurrent.futures import ThreadPoolExecutor
from time import sleep
executor = ThreadPoolExecutor(max_workers=10)
MAX_RUN_TIME = 4.5
SLEEP_BETWEEN_WAITS = 0.1
def return_slept(sleep_time):
sleep(sleep_time)
@friek
friek / pre-commit-php-compile.sh
Created September 8, 2016 15:03
Run a php lint check on all php files which are to be committed
#!/bin/bash
if git rev-parse --verify HEAD >/dev/null 2>&1
then
against=HEAD
else
exit 0
fi
set -e
@friek
friek / output-cert-chain.sh
Created July 11, 2016 10:43
Output the certificate chain of a given certificate, optionally including the private key
#!/bin/bash
cert="$1"
key="$2"
if [ -z "$cert" -o ! -e "$cert" ]; then
echo "Usage: $0 <cert.pem> [cert.key]"
exit 1
fi
@friek
friek / ipv6octalstring.pl
Created May 27, 2016 13:24
Convert a non-compressed IPv6 address to an octal string (for use in djbdns' data format)
sub ipv6OctString
{
my $v6Addr = shift;
my $res = '';
foreach $_ (split(/:/, $v6Addr))
{
if (/^([0-9a-f]{2})([0-9a-f]{2})$/)
{
@friek
friek / v6addrexpand.pl
Created May 27, 2016 13:23
Poor man's ipv6 address expansion
sub expandIpv6Addr
{
my $addr = shift;
my @parts = split(/:/, $addr);
my $numParts = scalar @parts;
my @res;
my $i = 0;
foreach my $addrPart (@parts)
{
@friek
friek / genpass.py
Created December 1, 2015 20:10
Python password generator
#!/usr/bin/env python
import crypt
import random
import string
import sys
PASSWORD_CHARS = string.ascii_uppercase + string.ascii_lowercase + string.digits
MD5_SALT_CHARS = PASSWORD_CHARS + '/'
DES_SALT_CHARS = string.ascii_uppercase + string.ascii_lowercase