Created
November 20, 2012 20:31
-
-
Save cgutierrez/4120868 to your computer and use it in GitHub Desktop.
db notifications
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env lua | |
-- Lua 5.1+ base64 v3.0 (c) 2009 by Alex Kloss <[email protected]> | |
-- licensed under the terms of the LGPL2 | |
-- character table string | |
local b='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/' | |
-- encoding | |
function enc(data) | |
return ((data:gsub('.', function(x) | |
local r,b='',x:byte() | |
for i=8,1,-1 do r=r..(b%2^i-b%2^(i-1)>0 and '1' or '0') end | |
return r; | |
end)..'0000'):gsub('%d%d%d?%d?%d?%d?', function(x) | |
if (#x < 6) then return '' end | |
local c=0 | |
for i=1,6 do c=c+(x:sub(i,i)=='1' and 2^(6-i) or 0) end | |
return b:sub(c+1,c+1) | |
end)..({ '', '==', '=' })[#data%3+1]) | |
end | |
-- decoding | |
function dec(data) | |
data = string.gsub(data, '[^'..b..'=]', '') | |
return (data:gsub('.', function(x) | |
if (x == '=') then return '' end | |
local r,f='',(b:find(x)-1) | |
for i=6,1,-1 do r=r..(f%2^i-f%2^(i-1)>0 and '1' or '0') end | |
return r; | |
end):gsub('%d%d%d?%d?%d?%d?%d?%d?', function(x) | |
if (#x ~= 8) then return '' end | |
local c=0 | |
for i=1,8 do c=c+(x:sub(i,i)=='1' and 2^(8-i) or 0) end | |
return string.char(c) | |
end)) | |
end | |
-- command line if not called as library | |
if (arg ~= nil) then | |
local func = 'enc' | |
for n,v in ipairs(arg) do | |
if (n > 0) then | |
if (v == "-h") then print "base64.lua [-e] [-d] text/data" break | |
elseif (v == "-e") then func = 'enc' | |
elseif (v == "-d") then func = 'dec' | |
else print(_G[func](v)) end | |
end | |
end | |
else | |
module('base64',package.seeall) | |
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
-- scratch gist for db modification notifications | |
function read_query(packet) | |
if packet:byte() == proxy.COM_QUERY then | |
smtp = require('socket.smtp') | |
from = "<[email protected]>" | |
rcpt = {"<[email protected]>"} | |
local query = string.sub(packet, 2) | |
if string.match(string.upper(query), '^%s*ALTER') then | |
local log_query = string.gsub(query, "(\n+)", " ") | |
log_query = string.sub(log_query, 0, string.len(log_query)) | |
mesgt = { | |
headers = { | |
to = "<[email protected]>", | |
subject = "Message From Migrations Proxy" | |
}, | |
body = log_query | |
} | |
smtp.send { | |
from = from, | |
rcpt = rcpt, | |
source = smtp.message(mesgt) | |
} | |
print(string.sub(log_query, 0, string.len(log_query))) | |
end | |
end | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment