Skip to content

Instantly share code, notes, and snippets.

View btompkins's full-sized avatar

Brendan Tompkins btompkins

View GitHub Profile
@btompkins
btompkins / Fabric-UserSetup.py
Created February 7, 2011 18:15
Simple fabric function to create a new user
def new_user(admin_username, admin_password):
env.user = 'root'
# Create the admin group and add it to the sudoers file
admin_group = 'admin'
runcmd('addgroup {group}'.format(group=admin_group))
runcmd('echo "%{group} ALL=(ALL) ALL" >> /etc/sudoers'.format(
group=admin_group))
# Create the new admin user (default group=username); add to admin group
from fabric.api import *
from fabric.contrib.files import *
env.host_string = 'your.host.ip.here'
env.user = 'root'
def change_my_password():
prompt('Specify new password: ', 'new_password')
runcmd('echo {un}:{pw} | chpasswd'.format(un=env.user, pw=env.new_password))
@btompkins
btompkins / teamcity
Last active December 23, 2015 05:09
from fabric.api import *
from fabric.contrib.files import *
env.user = 'your_user'
env.host_string = 'your_host'
def add_teamcity_user():
runcmd('adduser --system --shell /bin/bash --gecos \'TeamCity Build Control\' --group --disabled-password --home /opt/teamcity teamcity')
def download_teamcity():
@btompkins
btompkins / gist:4756963
Created February 11, 2013 19:39
Ducksboard Dashboard API
var dashboardClient = new DashboardClient("** Your API Key Here **");
var dashboard = new Dashboard()
{
Name = dashboardName,
Background = "dark wood",
};
dashboard = dashboardClient.Create(dashboard);
var leaderboard = client.Create(new Widget()
<log4net>
<appender name="DucksboardAppender" type="DucksboardLog4NetLogger.DucksboardAppender">
<apiKey value="[your api key]" />
<widgetId value="[your widget id]" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date | %-5level | %message~%newline" />
</layout>
</appender>
<logger name="[your logger name]">
<level value="ALL" />
using Ducksboard;
using Ducksboard.Objects;
using log4net.Appender;
using log4net.Core;
namespace Logging.DucksboardLog4NetLogger
{
public class DucksboardAppender : AppenderSkeleton
{
private static DucksboardClient _ducksboardClient;
@btompkins
btompkins / index.php
Last active December 11, 2015 05:08
When using a custom loop.php and a reverse front end cache like NGINX, you'll need to emit the Last-Modified header, this index.php file will do that, otherwise your front-end cache won't expire when a blog is updated.
<?php
$last_updated = $wpdb->get_var( "SELECT last_updated FROM " . $wpdb->blogs. " WHERE public = '1' order by
`last_updated` desc limit 1");
if(isset($last_updated)){
$post_mod_date=date("D, d M Y H:i:s",strtotime($last_updated));
header('Last-Modified: '.$post_mod_date.' GMT');
}
using System;
using Nancy.Hosting.Self;
using Topshelf;
namespace Nancy.Demo.Hosting.TopShelf
{
public class NancySelfHost
{
private NancyHost _nancyHost;
namespace Nancy.Demo.Hosting.Self
{
using System;
using System.Diagnostics;
using Nancy.Hosting.Self;
class Program
{
static void Main()
@btompkins
btompkins / gist:4392572
Last active December 10, 2015 06:08
Nancy Bootstrapper for using the NServiceBus' container.
using System;
using System.Collections.Generic;
using System.Linq;
using NServiceBus;
using NServiceBus.ObjectBuilder.Common;
using Nancy;
using Nancy.Bootstrapper;
using Nancy.Diagnostics;
public class NServiceBusContainerBootstrapper : NancyBootstrapperWithRequestContainerBase<IContainer>