Skip to content

Instantly share code, notes, and snippets.

Evan D. Hoffman evandhoffman

Block or report user

Report or block evandhoffman

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
View SimpleHTTPServerWithUpload.py
#!/usr/bin/env python
"""Simple HTTP Server With Upload.
This module builds on BaseHTTPServer by implementing the standard GET
and HEAD requests in a fairly straightforward manner.
"""
@evandhoffman
evandhoffman / smb.conf
Created Feb 9, 2017
smb.conf with ZFS volumes mapped to Previous Versions
View smb.conf
[global]
# other stuff here...
shadow: snapdir = .zfs/snapshot
shadow: sort = desc
shadow: format = snap_%Y-%m-%d-%H%M
[public]
comment = Files for all
browseable = yes
@evandhoffman
evandhoffman / fetch-phpbb.pl
Created Mar 13, 2012
Perl script to fetch all topics in a phpBB forum and save them to disk
View fetch-phpbb.pl
#!/usr/bin/perl
use strict;
use warnings;
require LWP::UserAgent;
use POSIX qw/ceil/;
my $ua = LWP::UserAgent->new(agent => 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:10.0.2) Gecko/20100101 Firefox/10.0.2');
$ua->timeout(10);
@evandhoffman
evandhoffman / README.md
Last active Mar 10, 2018
Ubuntu Nginx Zoneminder php-fpm config
View README.md

Zoneminder provides instructions for setting up Zoneminder on Ubuntu, but they assume you're using Apache: https://wiki.zoneminder.com/Ubuntu_Server_16.04_64-bit_with_Zoneminder_1.30.0_the_easy_way

I've moved away from Apache for webserving and wanted to see if there was a way to configure Zoneminder to work using Nginx and php-fpm. After a lot of trial and error I got it working. Include the snippet above in your nginx config to get it working at http:///zoneminder/ .

View inovelli.txt
evan@lunix /hass/config % grep Node006 OZW_Log.txt
2018-02-26 10:59:17.849 Detail, Node006, Received: 0x01, 0x18, 0x00, 0x04, 0x00, 0x06, 0x12, 0x32, 0x02, 0xa1, 0x6c, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4b
2018-02-26 11:49:24.528 Detail, Node006, Received: 0x01, 0x18, 0x00, 0x04, 0x00, 0x06, 0x12, 0x32, 0x02, 0xa1, 0x6c, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e
2018-03-01 19:02:28.974 Info, Node006, Network Key Not Set - Secure Option is not required
2018-03-01 19:02:28.976 Info, Node006, Basic device class (0x04) - Routing Slave
2018-03-01 19:02:28.976 Info, Node006, Generic device Class (0x10) - Binary Switch
2018-03-01 19:02:28.976 Info, Node006, Specific device class (0x01) - Binary Power Switch
2018-03-01 19:02:28.976 Info, Node006, COMMAND_CLASS_BASIC will be mapped to COMMAND_CLASS_SWITCH_BINARY
2018-03-01 19:02:28.976 Info, Node006, Mandatory Command Classes for Node 6:
2018-03-01 19:
@evandhoffman
evandhoffman / jsonify_file.py
Created Jan 30, 2018
Read a file in and put its contents in a JSON param
View jsonify_file.py
import json
import sys
with open(sys.argv[1],"r") as myfile:
data=myfile.read()
myjson = { "filename": sys.argv[1], "contents": data }
print json.dumps(myjson, indent=2)
View core-8f7092d0539f93e721211e2ee881a5f7.js
!function(){"use strict";function e(e,t){function n(s,i,r){var o=new WebSocket(e),a=!1,d=function(){if(a)r(u);else if(0!==s){var e=-1===s?-1:s-1;setTimeout(function(){return n(e,i,r)},1e3)}else r(c)},f=function(e){switch(JSON.parse(e.data).type){case"auth_required":"authToken"in t?o.send(JSON.stringify(function(e){return{type:"auth",api_password:e}}(t.authToken))):(a=!0,o.close());break;case"auth_invalid":a=!0,o.close();break;case"auth_ok":o.removeEventListener("message",f),o.removeEventListener("close",d),i(o)}};o.addEventListener("message",f),o.addEventListener("close",d)}return new Promise(function(e,s){return n(t.setupRetry||0,e,s)})}function t(e){return e.result}function n(t,n){return void 0===n&&(n={}),e(t,n).then(function(e){var s=new a(t,n);return s.setSocket(e),s})}function s(e,t){return e._subscribeConfig?e._subscribeConfig(t):new Promise(function(n,s){var i=null,r=null,o=[],c=null;t&&o.push(t);var u=function(e){i=Object.assign({},i,e);for(var t=0;t<o.length;t++)o[t](i)},a=function(e,t){return u({se
View blerg.log
Jan 15 23:52:40 lunix e83280a5087e[2680]: #033[32m2018-01-15 23:52:40 INFO (MainThread) [homeassistant.core] Bus:Handling <Event state_changed[L]: entity_id=zwave.gumbo, old_state=<state zwave.gumbo=initializing; node_id=2, node_name=gumbo, manufacturer_name=Aeotec, product_name=ZW100 MultiSensor 6, old_entity_id=zwave.gumbo_2, new_entity_id=zwave.gumbo, query_stage=Probe, is_awake=True, is_ready=False, is_failed=False, is_info_received=False, max_baud_rate=40000, is_zwave_plus=True, capabilities={'routing', 'beaming', 'listening'}, sentCnt=2, sentFailed=1, retries=0, receivedCnt=0, receivedDups=0, receivedUnsolicited=0, sentTS=2018-01-15 23:52:32:423 , receivedTS=2018-01-15 23:52:32:374 , lastRequestRTT=0, averageRequestRTT=0, lastResponseRTT=0, averageResponseRTT=0, battery_level=100, wake_up_interval=240, friendly_name=gumbo @ 2018-01-15T23:52:32.483495-05:00>, new_state=<state zwave.gumbo=initializing; node_id=2, node_name=gumbo, manufacturer_name=Aeotec, product_name=ZW100 MultiSensor 6, old_entity_id=zw
@evandhoffman
evandhoffman / .zshrc
Last active Jan 15, 2018
How to make home & end keys work on zsh (Linux)
View .zshrc
# From here: https://bbs.archlinux.org/viewtopic.php?pid=201942#p201942
# key bindings
bindkey "\e[1~" beginning-of-line
bindkey "\e[4~" end-of-line
bindkey "\e[5~" beginning-of-history
bindkey "\e[6~" end-of-history
bindkey "\e[3~" delete-char
bindkey "\e[2~" quoted-insert
bindkey "\e[5C" forward-word
bindkey "\eOc" emacs-forward-word
@evandhoffman
evandhoffman / zabbix_io_template.xml
Created May 16, 2013
Zabbix template for getting disk IO from SNMP via low-level discovery.
View zabbix_io_template.xml
<?xml version="1.0" encoding="UTF-8"?>
<zabbix_export>
<version>2.0</version>
<date>2013-05-16T13:46:38Z</date>
<groups>
<group>
<name>Templates</name>
</group>
</groups>
You can’t perform that action at this time.