NAME

get-shit-done - Boost productivity by blocking distracting websites

VERSION

version 0.4

SYNOPSIS

sudo get-shit-done [work|play]

DESCRIPTION

get-shit-done is a simple utility that blocks a user-specified list of sites at the DNS level by adding host entries pointing to 127.0.0.1 in the system's hosts file. Invoking with work as an argument blocks the sites; play unblocks them. After either operation, the DNS cache is flushed.

CONFIGURATION

The script will look for either /etc/get-shit-done.yaml or /etc/gsd.yaml for configuration. The file is in YAML format, with the following fields:

block

List of hostnames to block, without 'www.' prefix (if any). For example, if 'reddit.com' is provided, both 'reddit.com' and 'www.reddit.com' will be blocked.

hosts_file

Path to the system hosts file, e.g. /etc/hosts. If not supplied, a default is guessed based on operating system.

network_command

A command to flush DNS and/or restart the network. If not supplied, a default is guessed based on OS.

FLUSHING THE DNS CACHE

get-shit-done attempts to support Mac OS X and Linux (patches for other operating systems are more than welcome). For the former, it flushes the DNS directly. On Linux, it will flush nscd or unscd caches if they are present, and restart the network via one of the following methods:

  • /etc/init.d/networking, if present (e.g. Ubuntu)

  • /etc/init.d/network (e.g. CentOS)

  • rc.d (e.g. Arch) - will detect which of network, NetworkManager or wicd is being used and restart that.

CREDITS

Inspired by the PHP/shell/python version by leftnode and contributors (https://github.com/leftnode/get-shit-done).

AUTHOR

Richard Harris <RJH@cpan.org>

COPYRIGHT AND LICENSE

This software is copyright (c) 2012 by Richard Harris.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.