Skip to content

Instantly share code, notes, and snippets.

View Synchro's full-sized avatar

Marcus Bointon Synchro

View GitHub Profile
@Synchro
Synchro / gist:5917252
Last active March 18, 2016 16:59
Logstash config for parsing drupal watchdog log entries. Greps the syslog_program source first to check it's logged by drupal, then takes apart the watchdog log pattern. See: https://api.drupal.org/api/drupal/modules!syslog!syslog.module/function/syslog_watchdog/7
grep {
type => "syslog"
match => [ "syslog_program", "drupal" ]
add_tag => "Drupal"
drop => false
}
grok {
type => "syslog"
tags => [ "Drupal" ]
match => [ "@message", "^https?://%{HOSTNAME:drupal_vhost}\|%{NUMBER:drupal_timestamp}\|(?<drupal_action>[^\|]*)\|%{IP:drupal_ip}\|(?<drupal_request_uri>[^\|]*)\|(?<drupal_referer>[^\|]*)\|(?<drupal_uid>[^\|]*)\|(?<drupal_link>[^\|]*)\|(?<drupal_message>.*)" ]
@Synchro
Synchro / lockmonitor.php
Last active December 19, 2015 10:19
Simple PHP MySQL slow query (i.e. most likely stuck waiting for a lock) monitor.
#!/usr/bin/env php
<?php
$mysqli = new mysqli('localhost', 'user', 'pass');
if ($mysqli->connect_errno) {
echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
}
$out = false;
$output = array();
@Synchro
Synchro / Generic logstash init script
Last active December 19, 2015 02:09 — forked from jippi/rc.d
Rather than copying and editing an `init.d` file simply to point it at a different config file, you can have it work it out from the filename, so you can use the same init file for all your logstash agents. The filename must follow the established convention for logstash and it splits on the dash in the name, so names like `logstash-indexer`, `l…
#! /bin/sh
### BEGIN INIT INFO
# Provides: logstash-shipper
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start daemon at boot time
# Description: Enable service provided by daemon.
@Synchro
Synchro / index.php
Created November 21, 2011 11:06
FatFree config for files outside web root
<?php
/*
Folder structure:
/lib (fatfree files in here)
/temp
/ui (view templates)
/web (Doc root, static files and index.php)
If you're not using a .htaccess file, I found the default rewrites don't work in a vhost, had to change it to this:
#!/bin/sh
#Provides add-apt-repository
sudo apt-get install -y python-software-properties
#use jtimberman's chef ppa for installation
sudo add-apt-repository ppa:jtimberman/opschef
sudo apt-get update
sudo apt-get upgrade -y
#This step asks for a chef server url to put in /etc/chef/client.rb
sudo apt-get install -y chef
@Synchro
Synchro / openssl_pkcs7_sign_bug.php
Last active August 29, 2015 14:16
Demonstrate incorrect handling of $extracerts default value in openssl_pkcs7_sign PHP function
<?php
$dn = array(
'countryName' => 'UK',
'stateOrProvinceName' => 'Here',
'localityName' => 'There',
'organizationName' => 'PHP',
'organizationalUnitName' => 'PHPTest',
'commonName' => 'PHP Test',
'emailAddress' => 'php@example.com'
);
@Synchro
Synchro / gist:dbbe7e80d8dce293c097
Created October 21, 2014 07:07
Dtruss trace of php 5.6 running slowly on OS X
sudo dtruss -e -c -f php -v
PID/THRD ELAPSD SYSCALL(args) = return
30865/0x8a875: 304 thread_selfid(0x0, 0x0, 0x0) = 567413 0
30865/0x8a875: 6 csops(0x0, 0x0, 0x7FFF5B3161C8) = 0 0
30865/0x8a875: 4 issetugid(0x0, 0x0, 0x7FFF5B3161C8) = 0 0
30865/0x8a875: 7 shared_region_check_np(0x7FFF5B314108, 0x0, 0x7FFF5B3161C8) = 0 0
30865/0x8a875: 42 stat64("/usr/lib/dtrace/libdtrace_dyld.dylib\0", 0x7FFF5B315298, 0x7FFF5B3161C8) = 0 0
30865/0x8a875: 41 open("/usr/lib/dtrace/libdtrace_dyld.dylib\0", 0x0, 0x0) = 3 0
30865/0x8a875: 24 pread(0x3, "\312\376\272\276\0", 0x1000, 0x0) = 4096 0
30865/0x8a875: 8 pread(0x3, "\317\372\355\376\a\0", 0x1000, 0x1000) = 4096 0
@Synchro
Synchro / chuid
Created October 9, 2014 09:00
Shell script to change a numeric UID and all files it owns
#!/bin/bash
# Change a user's UID and all files owned by them everywhere
# Syntax: chuid <from uid> <to uid>
# Example: chuid 1000 1001
# <From uid> must exist; <to uid> must not exist
# usermod will fail if the <from uid> has any running processes
# - stopping them is left to you
# @author Marcus Bointon <https://gist.github.com/Synchro>
set -e
#!/bin/bash
set -e
wget http://dev.mysql.com/get/Downloads/MySQL-5.1/mysql-5.1.73.tar.gz
tar -zxf mysql-5.1.73.tar.gz
cd mysql-5.1.73
./configure '--prefix=/usr' '--exec-prefix=/usr' '--libexecdir=/usr/sbin' '--datadir=/usr/share' '--localstatedir=/var/lib/mysql' '--includedir=/usr/include' '--infodir=/usr/share/info' '--mandir=/usr/share/man' '--with-system-type=debian-linux-gnu' '--enable-shared' '--enable-static' '--enable-thread-safe-client' '--enable-assembler' '--enable-local-infile' '--with-fast-mutexes' '--with-big-tables' '--with-unix-socket-path=/var/run/mysqld/mysqld.sock' '--with-mysqld-user=mysql' '--with-libwrap' '--without-readline' '--with-ssl' '--without-docs' '--with-extra-charsets=all' '--with-plugins=max' '--with-embedded-server' '--with-embedded-privilege-control'
make
sudo make install
### Keybase proof
I hereby claim:
* I am Synchro on github.
* I am synchro (https://keybase.io/synchro) on keybase.
* I have a public key whose fingerprint is EC46 91BE 3D1E 19D7 DE28 E55F DE31 CD6E B646 AA24
To claim this, I am signing this object: