Skip to content

Instantly share code, notes, and snippets.

View cynici's full-sized avatar

Cheewai cynici

View GitHub Profile
@cynici
cynici / afisparser.py
Last active February 7, 2018 04:38
Using pyparsing to reduce expressions into a single boolean value. An expression may contain simple arithmetic and keywords (substituted with values from user-given parameter dictionary).
import sys
import traceback
import logging
from pyparsing import *
ParserElement.enablePackrat()
def EvalSignOp(s, l, t):
"Evaluate expressions with a leading + or - sign"
sign, value = t[0]
mult = {'+':1, '-':-1}[sign]
@cynici
cynici / ubuntu.seed
Last active December 26, 2015 23:29
64-bit Ubuntu 12.04.03 Desktop preseed configuration file
####
#### Contents of the preconfiguration file (for Ubuntu 12.04 Precise)
#### Recipe: http://cynici.wordpress.com/2013/10/30/custom-install-of-ubuntu-12-04-desktop-via-usb-flash/
####
### Localization
# Preseeding only locale sets language, country and locale.
d-i debian-installer/locale string en_US
# The values can also be preseeded individually for greater flexibility.
#d-i debian-installer/language string en
@cynici
cynici / gist:7300d065fb38759e13a84213384f9a9e
Created April 20, 2016 12:41 — forked from willejs/gist:043ffaeec61c4501760e
haproxy 1.5 logstash grok filter - working!
HAPROXYTIME (?!<[0-9])%{HOUR}:%{MINUTE}(?::%{SECOND})(?![0-9])
HAPROXYDATE %{MONTHDAY}/%{MONTH}/%{YEAR}:%{HAPROXYTIME}.%{INT}
HAPROXYHTTP <%{BASE10NUM}>%{SYSLOGTIMESTAMP} %{SYSLOGPROG}: %{IP:client}:%{INT:port} \[%{HAPROXYDATE:accept_date}\] %{NOTSPACE:frontend_name} %{NOTSPACE:backend_name}/%{NOTSPACE:server_name} %{INT:time_request}/%{INT:time_queue}/%{INT:time_backend_connect}/%{INT:time_backend_response}/%{NOTSPACE:time_duration} %{INT:http_status_code} %{NOTSPACE:bytes_read} %{DATA:captured_request_cookie} %{DATA:captured_response_cookie} %{NOTSPACE:termination_state} %{INT:actconn}/%{INT:feconn}/%{INT:beconn}/%{INT:srvconn}/%{NOTSPACE:retries} %{INT:srv_queue}/%{INT:backend_queue} \"(<BADREQ>|(%{WORD:http_verb} (%{URIPROTO:http_proto}://)?(?:%{USER:http_user}(?::[^@]*)?@)?(?:%{URIHOST:http_host})?(?:%{URIPATHPARAM:http_request})?( HTTP/%{NUMBER:http_version})?))?\"
@cynici
cynici / haproxy.cfg
Created April 30, 2016 14:57 — forked from GABeech/haproxy.cfg
Stack Exchange HAProxy
# This is an example of the Stack Exchange Tier 1 HAProxy config
# The only things that have been changed from what we are running are:
# 1. User names have been removed
# 2. All Passwords have been remove
# 3. IPs have been changed to use the example/documentation ranges
# 4. Rate limit numbers have been changed to randome numbers, don't read into them
userlist stats-auth
group admin users $admin_user
user $admin_user insecure-password $some_password
@cynici
cynici / pginsert-customize.py
Created May 31, 2016 11:25
Customise raster2pgsql, shp2pgsql INSERT statements
#! /usr/bin/env python
import sys
import os
import argparse
import re
import logging
help_text = """Get input from stdin and modify INSERT statements. Useful for customizing output from PostGIS shp2pgsql, raster2pgsql."""
def modify_statement(st, args, clist, vlist, do_delete=False):
@cynici
cynici / shp-to-pg.py
Last active July 12, 2016 09:45
Example using Python coroutine to insert large dataset into PostgreSQL in batches
#
# CAVEAT: untested code intended to demonstrate idea only
#
from osgeo import ogr, osr
import psycopg2
# Read gory details http://www.dabeaz.com/coroutines/Coroutines.pdf
def coroutine(func):
def start(*args,**kwargs):
cr = func(*args,**kwargs)
@cynici
cynici / ipsec-databags.py
Last active February 10, 2022 06:46
DEVOPS-6911 Convert ipsec.secrets into Chef data bag per-user JSON files
#!/usr/bin/env python3
description = '''Convert vpn-{uat,prod}.mrdcourier.com:/etc/ipsec.secrets
into Chef data bag items, one user per item.
'''
import json
import os
import re
import sys