Full Code of jessfraz/dockerfiles for AI

master 8ff991327fd1 cached
316 files
518.1 KB
164.2k tokens
27 symbols
1 requests
Download .txt
Showing preview only (579K chars total). Download the full file or copy to clipboard to get everything.
Repository: jessfraz/dockerfiles
Branch: master
Commit: 8ff991327fd1
Files: 316
Total size: 518.1 KB

Directory structure:
gitextract_xz9jgwmz/

├── .github/
│   ├── FUNDING.yml
│   └── workflows/
│       └── make-test.yml
├── .gitignore
├── LICENSE
├── Makefile
├── README.md
├── ab/
│   └── Dockerfile
├── afterthedeadline/
│   └── Dockerfile
├── android-tools/
│   └── Dockerfile
├── ansible/
│   └── Dockerfile
├── apt-file/
│   └── Dockerfile
├── aspell/
│   └── Dockerfile
├── atom/
│   └── Dockerfile
├── audacity/
│   └── Dockerfile
├── awscli/
│   └── Dockerfile
├── azure-cli/
│   └── Dockerfile
├── bashrc
├── bcc-tools/
│   ├── Dockerfile
│   └── entrypoint.sh
├── beeswithmachineguns/
│   └── Dockerfile
├── bpftrace/
│   └── Dockerfile
├── brok/
│   └── Dockerfile
├── browsh/
│   └── Dockerfile
├── build-all.sh
├── buttslock/
│   ├── Dockerfile
│   ├── buttslock.py
│   └── buttslock.sh
├── cathode/
│   └── Dockerfile
├── certbot/
│   └── Dockerfile
├── cf-reset-cache/
│   ├── Dockerfile
│   └── reset-cache.py
├── cfssl/
│   └── Dockerfile
├── checkup/
│   └── Dockerfile
├── cheese/
│   └── Dockerfile
├── chrome/
│   ├── beta/
│   │   ├── Dockerfile
│   │   └── local.conf
│   └── stable/
│       ├── Dockerfile
│       └── local.conf
├── chromium/
│   └── Dockerfile
├── clair/
│   └── Dockerfile
├── cli53/
│   └── Dockerfile
├── clisp/
│   ├── .clisprc.lisp
│   └── Dockerfile
├── cloudapp/
│   └── Dockerfile
├── consul/
│   └── Dockerfile
├── coredns/
│   └── Dockerfile
├── couchpotato/
│   └── Dockerfile
├── cura/
│   └── Dockerfile
├── curl/
│   └── Dockerfile
├── dcos-cli/
│   └── Dockerfile
├── debootstrap/
│   └── Dockerfile
├── distcc/
│   ├── Dockerfile
│   └── distccd-init
├── doctor/
│   └── Dockerfile
├── dunnet/
│   └── Dockerfile
├── evince/
│   └── Dockerfile
├── figma-wine/
│   └── Dockerfile
├── firefox/
│   ├── Dockerfile
│   ├── alpine/
│   │   └── Dockerfile
│   ├── entrypoint.sh
│   └── local.conf
├── fleet/
│   └── Dockerfile
├── fontforge/
│   └── Dockerfile
├── fontpatcher/
│   ├── Dockerfile
│   └── README.md
├── foss-heartbeat/
│   └── Dockerfile
├── freeradius/
│   └── Dockerfile
├── gcalcli/
│   └── Dockerfile
├── gcc/
│   └── Dockerfile
├── gcloud/
│   └── Dockerfile
├── geary/
│   └── Dockerfile
├── ghostscript/
│   └── Dockerfile
├── gimp/
│   └── Dockerfile
├── github-dev/
│   ├── Dockerfile
│   ├── cleanup-pr-branch
│   ├── release-email-notification
│   └── upload-assets
├── gitiles/
│   ├── Dockerfile
│   └── start.sh
├── gitserver/
│   ├── Dockerfile
│   ├── create_repo
│   └── start.sh
├── gitsome/
│   └── Dockerfile
├── gixy/
│   └── Dockerfile
├── glxgears/
│   └── Dockerfile
├── gmail-britta/
│   └── Dockerfile
├── gnuplot/
│   └── Dockerfile
├── golinks/
│   └── Dockerfile
├── gparted/
│   └── Dockerfile
├── guetzli/
│   └── Dockerfile
├── hollywood/
│   └── Dockerfile
├── htop/
│   └── Dockerfile
├── htpasswd/
│   └── Dockerfile
├── httpbin/
│   └── Dockerfile
├── httpie/
│   └── Dockerfile
├── iceweasel/
│   ├── Dockerfile
│   └── local.conf
├── imagemagick/
│   └── Dockerfile
├── imagemin/
│   └── Dockerfile
├── inkscape/
│   └── Dockerfile
├── irssi/
│   └── Dockerfile
├── john/
│   ├── Dockerfile
│   ├── john.ini
│   └── passwd.lst
├── jq/
│   └── Dockerfile
├── k8scan/
│   ├── Dockerfile
│   ├── main.go
│   └── main_test.go
├── keepass2/
│   └── Dockerfile
├── keepassxc/
│   └── Dockerfile
├── kernel-builder/
│   ├── Dockerfile
│   └── build_kernel
├── kicad/
│   └── Dockerfile
├── kvm/
│   ├── Dockerfile
│   └── start.sh
├── latest-versions.sh
├── libreoffice/
│   └── Dockerfile
├── libvirt-client/
│   └── Dockerfile
├── lilyterm/
│   └── Dockerfile
├── linapple/
│   ├── Dockerfile
│   ├── Frogger.dsk
│   └── quest1.dsk
├── lkp-tests/
│   ├── Dockerfile
│   └── runbench
├── lpass/
│   └── Dockerfile
├── lynx/
│   └── Dockerfile
├── mailgun/
│   ├── Dockerfile
│   └── sendemail
├── mars/
│   └── Dockerfile
├── masscan/
│   └── Dockerfile
├── mc/
│   └── Dockerfile
├── mdp/
│   └── Dockerfile
├── micro/
│   └── Dockerfile
├── mitmproxy/
│   ├── Dockerfile
│   └── docker-entrypoint.sh
├── mop/
│   └── Dockerfile
├── mpd/
│   ├── Dockerfile
│   ├── mpd.conf
│   └── mpd.sh
├── mpsyt/
│   ├── Dockerfile
│   └── README
├── mutt/
│   ├── .mutt/
│   │   ├── mailcap
│   │   ├── mutt-colors-solarized-dark-16.muttrc
│   │   ├── mutt-patch-highlighting.muttrc
│   │   ├── muttrc
│   │   └── signature
│   ├── Dockerfile
│   └── entrypoint.sh
├── ncmpc/
│   └── Dockerfile
├── neoman/
│   └── Dockerfile
├── nerdy/
│   ├── Dockerfile
│   ├── clippy.cow
│   └── lolcat
├── nes/
│   ├── Dockerfile
│   └── games/
│       ├── supermariobros.rom
│       └── zelda.rom
├── netcat/
│   └── Dockerfile
├── nginx-extras/
│   └── Dockerfile
├── nmap/
│   └── Dockerfile
├── no_new_privs/
│   ├── Dockerfile
│   ├── nnp
│   └── nnp.c
├── node-sonos/
│   └── Dockerfile
├── nomad/
│   └── Dockerfile
├── notify-osd/
│   ├── Dockerfile
│   └── org.freedesktop.Notifications.service
├── nzbget/
│   ├── Dockerfile
│   └── nzbget.conf
├── oauth2-proxy/
│   └── Dockerfile
├── openbmc/
│   └── Dockerfile
├── openscad/
│   └── Dockerfile
├── openvpn/
│   ├── Dockerfile
│   ├── README.md
│   └── docker-compose.yml
├── osquery/
│   ├── Dockerfile
│   └── osquery.example.conf
├── packer/
│   └── Dockerfile
├── pandoc/
│   └── Dockerfile
├── parrot-live/
│   └── Dockerfile
├── pdp-10/
│   └── its/
│       └── Dockerfile
├── perkeep/
│   └── Dockerfile
├── pivman/
│   └── Dockerfile
├── plex-home-theater/
│   └── Dockerfile
├── plexpy/
│   └── Dockerfile
├── pms/
│   └── Dockerfile
├── pomerium/
│   └── Dockerfile
├── pop/
│   ├── .gitignore
│   ├── Dockerfile
│   └── pop
├── postfix/
│   ├── Dockerfile
│   ├── rsyslog.conf
│   ├── runit_bootstrap
│   └── service/
│       ├── postfix/
│       │   ├── run
│       │   └── supervise/
│       │       └── .gitignore
│       └── rsyslog/
│           ├── run
│           └── supervise/
│               └── .gitignore
├── powershell/
│   └── Dockerfile
├── powershell-azure/
│   └── Dockerfile
├── privoxy/
│   ├── Dockerfile
│   └── privoxy.conf
├── protocol/
│   └── Dockerfile
├── pulseaudio/
│   ├── Dockerfile
│   ├── client.conf
│   ├── daemon.conf
│   └── default.pa
├── radarr/
│   ├── Dockerfile
│   └── entrypoint.sh
├── rainbowstream/
│   └── Dockerfile
├── rdesktop/
│   └── Dockerfile
├── registry-auth/
│   └── Dockerfile
├── remmina/
│   └── Dockerfile
├── requestbin/
│   └── Dockerfile
├── ricochet/
│   └── Dockerfile
├── routersploit/
│   └── Dockerfile
├── rstudio/
│   └── Dockerfile
├── rt-tests/
│   └── Dockerfile
├── run.sh
├── runc-rootless/
│   ├── Dockerfile
│   └── start.sh
├── s3cmd/
│   └── Dockerfile
├── scudcloud/
│   └── Dockerfile
├── shellcheck/
│   └── Dockerfile
├── shellcheck.sh
├── shorewall/
│   ├── Dockerfile
│   └── etc/
│       ├── interfaces
│       ├── masq
│       ├── policy
│       ├── rules
│       ├── shorewall.conf
│       └── zones
├── sickbeard/
│   └── Dockerfile
├── skype/
│   ├── Dockerfile
│   └── run-skype-and-wait-for-exit
├── slack/
│   └── Dockerfile
├── slapd/
│   ├── Dockerfile
│   └── start.sh
├── sonarr/
│   ├── Dockerfile
│   └── entrypoint.sh
├── spotify/
│   └── Dockerfile
├── spotify-wine/
│   └── Dockerfile
├── strace/
│   └── Dockerfile
├── stress/
│   └── Dockerfile
├── sublime-text-3/
│   ├── Dockerfile
│   └── run.sh
├── t/
│   └── Dockerfile
├── tarsnap/
│   └── Dockerfile
├── telize/
│   ├── Dockerfile
│   ├── country-code3.conf
│   ├── mime.types
│   ├── nginx.conf
│   ├── telize.conf
│   ├── timezone-offset.conf
│   └── tz-offset.lua
├── telnet/
│   └── Dockerfile
├── termboy/
│   ├── Dockerfile
│   └── games/
│       ├── donkey-kong-lang.gb
│       ├── mspacman.gb
│       └── zelda.gb
├── terraform/
│   └── Dockerfile
├── test.sh
├── tetris/
│   └── Dockerfile
├── texlive/
│   └── Dockerfile
├── tor-browser/
│   ├── alpha/
│   │   ├── Dockerfile
│   │   └── local.conf
│   └── stable/
│       ├── Dockerfile
│       └── local.conf
├── tor-proxy/
│   ├── Dockerfile
│   └── torrc.default
├── tor-relay/
│   ├── Dockerfile
│   ├── README.md
│   ├── run.sh
│   ├── torrc.bridge
│   ├── torrc.exit
│   └── torrc.middle
├── tor-router/
│   ├── Dockerfile
│   └── torrc.default
├── traceroute/
│   └── Dockerfile
├── transfer-sh/
│   └── Dockerfile
├── transmission/
│   └── Dockerfile
├── transmission-ui/
│   └── Dockerfile
├── travis/
│   └── Dockerfile
├── troff/
│   └── Dockerfile
├── unifi/
│   ├── Dockerfile
│   └── entrypoint.sh
├── unixbench/
│   └── Dockerfile
├── vagrant/
│   └── Dockerfile
├── vault/
│   └── Dockerfile
├── viewdocs/
│   └── Dockerfile
├── virt-viewer/
│   └── Dockerfile
├── virtualbox/
│   └── Dockerfile
├── vlc/
│   └── Dockerfile
├── vscode/
│   ├── Dockerfile
│   └── start.sh
├── wargames/
│   └── Dockerfile
├── watchtower/
│   └── Dockerfile
├── wee-slack/
│   └── Dockerfile
├── weechat/
│   └── Dockerfile
├── weechat-matrix/
│   └── Dockerfile
├── wine/
│   └── Dockerfile
├── wireguard/
│   ├── install/
│   │   ├── Dockerfile
│   │   └── entrypoint.sh
│   └── tools/
│       └── Dockerfile
├── wireshark/
│   └── Dockerfile
├── wrk/
│   └── Dockerfile
├── ykman/
│   ├── Dockerfile
│   └── entrypoint.sh
├── ykpersonalize/
│   ├── Dockerfile
│   └── entrypoint.sh
├── yubico-piv-tool/
│   ├── Dockerfile
│   └── entrypoint.sh
├── znc/
│   └── Dockerfile
├── zookeeper/
│   ├── 3.4/
│   │   └── Dockerfile
│   └── 3.6/
│       └── Dockerfile
├── zoom-us/
│   └── Dockerfile
└── zsh/
    ├── .zshrc
    └── Dockerfile

================================================
FILE CONTENTS
================================================

================================================
FILE: .github/FUNDING.yml
================================================
# You can add one username per supported platform and one custom link
patreon: jessfraz


================================================
FILE: .github/workflows/make-test.yml
================================================
on:
  push
name: make test
jobs:
  test:
    name: make test
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@master
        with:
          fetch-depth: '2'
      - name: make test
        run: make test
        shell: bash


================================================
FILE: .gitignore
================================================
###Linux###

*~

# KDE directory preferences
.directory


###OSX###

.DS_Store
.AppleDouble
.LSOverride

# Icon must ends with two \r.
Icon


# Thumbnails
._*

# Files that might appear on external disk
.Spotlight-V100
.Trashes

znc/conf/

*.swp
*.swo

itunes/iTunesSetup.exe
yubikey/
kiwi-builder/artifacts


================================================
FILE: LICENSE
================================================
The MIT License (MIT)

Copyright (c) 2017 Jessie Frazelle

Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
the Software, and to permit persons to whom the Software is furnished to do so,
subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


================================================
FILE: Makefile
================================================
.PHONY: build
build: ## Builds all the dockerfiles in the repository.
	@$(CURDIR)/build-all.sh

.PHONY: latest-versions
latest-versions: ## Checks all the latest versions of the Dockerfile contents.
	@$(CURDIR)/latest-versions.sh

check_defined = \
				$(strip $(foreach 1,$1, \
				$(call __check_defined,$1,$(strip $(value 2)))))
__check_defined = \
				  $(if $(value $1),, \
				  $(error Undefined $1$(if $2, ($2))$(if $(value @), \
				  required by target `$@')))

.PHONY: run
run: ## Run a Dockerfile from the command at the top of the file (ex. DIR=telnet).
	@:$(call check_defined, DIR, directory of the Dockefile)
	@$(CURDIR)/run.sh "$(DIR)"

REGISTRY := r.j3ss.co
.PHONY: image
image: ## Build a Dockerfile (ex. DIR=telnet).
	@:$(call check_defined, DIR, directory of the Dockefile)
	docker build --rm --force-rm -t $(REGISTRY)/$(subst /,:,$(patsubst %/,%,$(DIR))) ./$(DIR)

.PHONY: test
test: dockerfiles shellcheck ## Runs the tests on the repository.

.PHONY: dockerfiles
dockerfiles: ## Tests the changes to the Dockerfiles build.
	@$(CURDIR)/test.sh

# if this session isn't interactive, then we don't want to allocate a
# TTY, which would fail, but if it is interactive, we do want to attach
# so that the user can send e.g. ^C through.
INTERACTIVE := $(shell [ -t 0 ] && echo 1 || echo 0)
ifeq ($(INTERACTIVE), 1)
	DOCKER_FLAGS += -t
endif

.PHONY: shellcheck
shellcheck: ## Runs the shellcheck tests on the scripts.
	docker run --rm -i $(DOCKER_FLAGS) \
		--name df-shellcheck \
		-v $(CURDIR):/usr/src:ro \
		--workdir /usr/src \
		r.j3ss.co/shellcheck ./shellcheck.sh

.PHONY: help
help:
	@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}'


================================================
FILE: README.md
================================================
## dockerfiles

[![make test](https://github.com/jessfraz/dockerfiles/workflows/make%20test/badge.svg)](https://github.com/jessfraz/dockerfiles/actions?query=workflow%3A%22make+test%22+branch%3Amaster)

This is a repo to hold various Dockerfiles for images I create.


**Table of Contents**

<!-- toc -->

- [About](#about)
- [Resources](#resources)
  * [My dotfiles](#my-dotfiles)
- [Contributing](#contributing)
  * [Using the `Makefile`](#using-the-makefile)

<!-- tocstop -->

## About

Almost all of these live on dockerhub under [jess](https://hub.docker.com/u/jess/).
Because you cannot use notary with autobuilds on dockerhub I also build these
continuously on a private registry at [r.j3ss.co](https://r.j3ss.co/) for public download. (You're
welcome.)

## Resources

### My dotfiles

You may also want to checkout my [dotfiles](https://github.com/jessfraz/dotfiles), specifically the aliases for all these files which are here: [github.com/jessfraz/dotfiles/blob/master/.dockerfunc](https://github.com/jessfraz/dotfiles/blob/master/.dockerfunc).

## Contributing

I try to make sure each Dockerfile has a command at the top to document running it,
if a file you are looking at does not have a command, please
pull request it!


### Using the `Makefile`

```
$ make help
build                          Builds all the dockerfiles in the repository.
dockerfiles                    Tests the changes to the Dockerfiles build.
image                          Build a Dockerfile (ex. DIR=telnet).
latest-versions                Checks all the latest versions of the Dockerfile contents.
run                            Run a Dockerfile from the command at the top of the file (ex. DIR=telnet).
shellcheck                     Runs the shellcheck tests on the scripts.
test                           Runs the tests on the repository.
```


================================================
FILE: ab/Dockerfile
================================================
# ab (apache benchmark)
# in a container
#
# docker run --rm -it \
# 	jess/ab
#
FROM alpine:latest
LABEL maintainer "Jessie Frazelle <jess@linux.com>"

RUN apk --no-cache add \
	apache2-ssl \
	apache2-utils \
	ca-certificates \
	htop

ENTRYPOINT [ "ab" ]


================================================
FILE: afterthedeadline/Dockerfile
================================================
FROM openjdk:8-alpine
LABEL maintainer "Jessie Frazelle <jess@linux.com>"

RUN apk add --no-cache \
	ca-certificates \
	curl \
	tar

ENV LANG C.UTF-8
# https://open.afterthedeadline.com/download/download-source-code/
ENV ATD_VERSION 081310

RUN curl -sSL "http://www.polishmywriting.com/download/atd_distribution${ATD_VERSION}.tgz" -o /tmp/atd.tar.gz \
	&& mkdir -p /usr/src/atd \
	&& tar -xzf /tmp/atd.tar.gz -C /usr/src/atd --strip-components 1 \
	&& rm /tmp/atd.tar.gz*

WORKDIR /usr/src/atd
EXPOSE 1049

ENTRYPOINT [ "sh", "-c", "/usr/src/atd/run.sh" ]


================================================
FILE: android-tools/Dockerfile
================================================
FROM debian:sid-slim
LABEL maintainer "Jessie Frazelle <jess@linux.com>"

RUN apt-get update && apt-get install -y \
	adb \
	android-tools* \
	ca-certificates \
	curl \
	fastboot \
	usbutils \
	--no-install-recommends \
	&& rm -rf /var/lib/apt/lists/*

ENTRYPOINT [ "bash" ]


================================================
FILE: ansible/Dockerfile
================================================
# https://www.ansible.com/
#
# docker run --rm \
# 	-it \
# 	-v ${PWD}/hosts:/etc/ansible/hosts \
# 	-v ${PWD}/ansible.cfg:/etc/ansible/ansible.cfg \
# 	-v ${HOME}/.ssh:/root/.ssh:ro \
# 	ansible all -m ping
#
FROM python:3-alpine
LABEL maintainer "Christian Koep <christiankoep@gmail.com>"

RUN builddeps=' \
		musl-dev \
		openssl-dev \
		libffi-dev \
		gcc \
		' \
	&& apk --no-cache add \
	ca-certificates \
	$builddeps \
	&& pip install \
		ansible \
	&& apk del --purge $builddeps

ENTRYPOINT [ "ansible" ]


================================================
FILE: apt-file/Dockerfile
================================================
FROM debian:sid-slim
LABEL maintainer "Jessie Frazelle <jess@linux.com>"

RUN apt-get update && apt-get install -y \
	apt-file \
	--no-install-recommends \
	&& rm -rf /var/lib/apt/lists/*

CMD [ "bash" ]


================================================
FILE: aspell/Dockerfile
================================================
FROM alpine:latest
LABEL maintainer "Jessie Frazelle <jess@linux.com>"

RUN apk add --no-cache \
	aspell \
	aspell-en

ENTRYPOINT ["aspell"]


================================================
FILE: atom/Dockerfile
================================================
# DESCRIPTION:	  Create the atom editor in a container
# AUTHOR:		  Jessie Frazelle <jess@linux.com>
# COMMENTS:
#	This file describes how to build the atom editor
#	in a container with all dependencies installed.
#	Note: atom is not a node-webkit app,
#	found this out a little too late into this example
#	it uses electron(https://github.com/atom/electron)
#	Tested on Debian Jessie.
# USAGE:
#	# Download atom Dockerfile
#	wget https://raw.githubusercontent.com/jessfraz/dockerfiles/master/atom/Dockerfile
#
#	# Build atom image
#	docker build -t atom .
#
#	docker run -v /tmp/.X11-unix:/tmp/.X11-unix \
#		-e DISPLAY=unix$DISPLAY atom
#

# Base docker image
FROM debian:bullseye-slim

LABEL maintainer "Jessie Frazelle <jess@linux.com>"

# Tell debconf to run in non-interactive mode
ENV DEBIAN_FRONTEND noninteractive

RUN apt-get update && apt-get install -y \
	apt-transport-https \
	ca-certificates \
	gnupg \
	wget \
	--no-install-recommends

# Add the atom debian repo
RUN wget -qO- https://packagecloud.io/AtomEditor/atom/gpgkey | apt-key add -
RUN sh -c 'echo "deb [arch=amd64] https://packagecloud.io/AtomEditor/atom/any/ any main" > /etc/apt/sources.list.d/atom.list'

# Install dependencies
RUN apt-get update && apt-get install -y \
	atom \
	git \
	gconf2 \
	gconf-service \
	gvfs-bin \
	libasound2 \
	libcap2 \
	libgconf-2-4 \
	libgtk2.0-0 \
	libnotify4 \
	libnss3 \
	libxkbfile1 \
	libxss1 \
	libxtst6 \
	libx11-xcb-dev \
	xdg-utils \
	--no-install-recommends \
	&& rm -rf /var/lib/apt/lists/*

# Autorun atom
ENTRYPOINT [ "atom", "--foreground" ]


================================================
FILE: audacity/Dockerfile
================================================
FROM debian:sid-slim
LABEL maintainer "Jessie Frazelle <jess@linux.com>"

RUN apt-get update && apt-get install -y \
	audacity \
	--no-install-recommends \
	&& rm -rf /var/lib/apt/lists/*

ENTRYPOINT [ "audacity" ]


================================================
FILE: awscli/Dockerfile
================================================
# Run awscli in a container and list s3 buckets
#
# docker run --rm -it \
#	--name awscli \
#	jess/awscli \
#       s3 ls
#

FROM alpine:latest
LABEL maintainer "Jessie Frazelle <jess@linux.com>"

RUN apk --no-cache add \
	ca-certificates \
	groff \
	less \
	python3 \
	&& pip3 install awscli \
	&& mkdir -p /root/.aws \
	&& { \
		echo '[default]'; \
		echo 'output = json'; \
		echo 'region = $AWS_DEFAULT_REGION'; \
		echo 'aws_access_key_id = $AMAZON_ACCESS_KEY_ID'; \
		echo 'aws_secret_access_key = $AMAZON_SECRET_ACCESS_KEY'; \
	} > /root/.aws/config

ENTRYPOINT [ "aws" ]


================================================
FILE: azure-cli/Dockerfile
================================================
FROM python:3-alpine
LABEL maintainer "Jessie Frazelle <jess@linux.com>"

RUN apk add --no-cache \
	bash

RUN set -x \
	&& apk add --no-cache --virtual .build-deps \
		build-base \
		libffi-dev \
		openssl-dev \
	&& pip install --upgrade \
		--pre azure-cli \
		--extra-index-url https://azurecliprod.blob.core.windows.net/edge \
		--no-cache-dir \
	&& apk del .build-deps

ENTRYPOINT	[ "az" ]


================================================
FILE: bashrc
================================================
#!/bin/bash

command_not_found_handle () {
	# Check if there is a container image with that name
	if ! docker inspect --format '{{ .Author }}' "$1" >&/dev/null; then
		echo "$0: $1: command not found"
		return
	fi

	# Check that it's really the name of the image, not a prefix
	if docker inspect --format '{{ .Id }}' "$1" | grep -q "^$1" ;then
		echo "$0: $1: command not found"
		return
	fi

	# Add a bunch of (optional) devices
	# (Don't add them unconditionally: if they don't exist, it
	# would prevent the container from starting)
	DEVICES=
	for DEV in /dev/kvm /dev/ttyUSB* /dev/dri/* /dev/snd/*; do
		if [ -b "$DEV" ] || [ -c "$DEV" ]; then
			DEVICES="$DEVICES --device $DEV:$DEV"
		fi
	done

	# And a few (optional) files
	# (Here again, they don't always exist everywhere)
	VOLUMES=
	for VOL in /tmp/.X11-unix /run/user; do
		if [ -e "$VOL" ]; then
			VOLUMES="$VOLUMES --volume $VOL:$VOL"
		fi
	done

	# Check if we are on a tty to decide whether to allocate one
	DASHT=
	tty -s && DASHT=-t

	# shellcheck disable=SC2086
	# shellcheck disable=SC2046
	docker run $DASHT -i -u $(whoami) -w "$HOME" \
		$(env | cut -d= -f1 | awk '{print "-e", $1}') \
		$DOCKERFILES_RUN_FLAGS \
		$DEVICES \
		$VOLUMES \
		-v /etc/passwd:/etc/passwd:ro \
		-v /etc/group:/etc/group:ro \
		-v /etc/localtime:/etc/localtime:ro \
		-v /home:/home \
		"$@"
}


================================================
FILE: bcc-tools/Dockerfile
================================================
# Usage:
# docker run --rm -it \
#	--privileged \
#	-v /lib/modules:/lib/modules:ro \
#	-v /usr/src:/usr/src:ro \
#	-v /etc/localtime:/etc/localtime:ro \
#	r.j3ss.co/bcc-tools
#
FROM debian:sid-slim
MAINTAINER Jessica Frazelle <jess@linux.com>

ENV PATH /usr/share/bcc/tools:$PATH

# Add non-free apt sources
RUN sed -i "s#deb http://deb.debian.org/debian buster main#deb http://deb.debian.org/debian buster main contrib non-free#g" /etc/apt/sources.list

RUN apt-get update && apt-get install -y \
    ca-certificates \
	clang \
	curl \
	gcc \
	git \
	g++ \
    --no-install-recommends \
    && rm -rf /var/lib/apt/lists/*

# Install dependencies for libbcc
# FROM: https://github.com/iovisor/bcc/blob/master/INSTALL.md#install-build-dependencies
RUN apt-get update && apt-get install -y \
	debhelper \
	cmake \
	libllvm3.9 \
	llvm-dev \
	libclang-dev \
	libelf-dev \
	bison \
	flex \
	libedit-dev \
	clang-format \
	python \
	python3-pyroute2 \
	luajit \
	libluajit-5.1-dev \
	arping \
	iperf \
	ethtool \
	devscripts \
	zlib1g-dev \
	libfl-dev \
    --no-install-recommends \
    && rm -rf /var/lib/apt/lists/*

# Build libbcc
ENV BCC_VERSION v0.14.0
RUN git clone --depth 1 --branch "$BCC_VERSION" https://github.com/iovisor/bcc.git /usr/src/bcc \
	&& ( \
		cd /usr/src/bcc \
		&& mkdir build \
		&& cd build \
		&& cmake .. -DCMAKE_INSTALL_PREFIX=/usr \
		&& make \
		&& make install \
	) \
	&& rm -rf /usr/src/bcc

COPY entrypoint.sh /usr/local/bin/entrypoint.sh

ENTRYPOINT ["entrypoint.sh"]


================================================
FILE: bcc-tools/entrypoint.sh
================================================
#!/bin/bash
set -e
set -o pipefail

mount -t debugfs none /sys/kernel/debug/
exec "$@"


================================================
FILE: beeswithmachineguns/Dockerfile
================================================
FROM alpine:latest
LABEL maintainer "Jessie Frazelle <jess@linux.com>"

RUN apk --no-cache add \
	ca-certificates \
	python \
	py-boto \
	py-future \
	py-paramiko

RUN buildDeps=' \
		build-base \
		git \
		python-dev \
	' \
	set -x \
	&& apk --no-cache add $buildDeps \
	&& git clone --depth 1 https://github.com/newsapps/beeswithmachineguns /usr/src/beeswithmachineguns \
	&& cd /usr/src/beeswithmachineguns \
	&& python setup.py install \
	&& rm -rf /usr/src/beeswithmachineguns \
	&& apk del $buildDeps

ENTRYPOINT [ "bees" ]


================================================
FILE: bpftrace/Dockerfile
================================================
FROM r.j3ss.co/bcc
MAINTAINER Jessica Frazelle <jess@linux.com>

ENV PATH /usr/share/bcc/tools:$PATH

# Add non-free apt sources
RUN sed -i "s#deb http://deb.debian.org/debian buster main#deb http://deb.debian.org/debian buster main contrib non-free#g" /etc/apt/sources.list

RUN apt-get update && apt-get install -y \
    ca-certificates \
	clang \
	curl \
	gcc \
	git \
	g++ \
    --no-install-recommends \
    && rm -rf /var/lib/apt/lists/*

# Build bpftrace
ENV BPFTRACE_VERSION v0.10.0
RUN git clone --depth 1 --branch "$BPFTRACE_VERSION" https://github.com/iovisor/bpftrace.git /usr/src/bpftrace \
	&& ( \
		cd /usr/src/bpftrace \
		&& mkdir build \
		&& cd build \
		&& cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr .. \
		&& make -j8 \
		&& make install \
	) \
	&& rm -rf /usr/src/bpftrace

ENTRYPOINT ["bpftrace"]


================================================
FILE: brok/Dockerfile
================================================
FROM haskell:8.8

LABEL maintainer "Jessie Frazelle <jess@linux.com>"

RUN cabal update && cabal install brok

CMD ["brok"]


================================================
FILE: browsh/Dockerfile
================================================
FROM debian:bullseye-slim
LABEL maintainer "Jessie Frazelle <jess@linux.com>"

# Install bash and other deps so we have them.
RUN apt-get update && apt-get install -y \
		bash \
		bzip2 \
		ca-certificates \
		libdbus-glib-1-2 \
		libgtk-3-0 \
		libx11-xcb1 \
		libxt6 \
		tar \
		wget \
		--no-install-recommends \
		&& rm -rf /var/lib/apt/lists/*

RUN wget "https://raw.githubusercontent.com/StevenBlack/hosts/master/alternates/fakenews-gambling-porn-social/hosts" -O /etc/hosts

# Create user and change ownership
RUN addgroup --gid 666 browsh \
	&& adduser --uid 666 --home /home/browsh --ingroup browsh browsh

WORKDIR /home/browsh
USER browsh

RUN mkdir -p /home/browsh/bin

ENV PATH="/bin:/usr/bin:/usr/local/bin:/home/browsh/bin:${PATH}"

# Install firefox.
ENV FIREFOX_VERSION 60.0
RUN set -x \
	&& wget "https://ftp.mozilla.org/pub/firefox/releases/${FIREFOX_VERSION}/linux-x86_64/en-US/firefox-${FIREFOX_VERSION}.tar.bz2" -O /tmp/firefox.tar.bz2 \
	&& ( \
		cd /tmp \
		&& bzip2 -d /tmp/firefox.tar.bz2 \
		&& tar -xf /tmp/firefox.tar -C /home/browsh/bin/ --strip-components 1 \
	) \
	&& rm -rf /tmp/firefox* \
	&& firefox --version

# Install browsh.
ENV BROWSH_VERSION 1.6.4
RUN wget "https://github.com/browsh-org/browsh/releases/download/v${BROWSH_VERSION}/browsh_${BROWSH_VERSION}_linux_amd64" -O /home/browsh/bin/browsh \
	&& chmod a+x /home/browsh/bin/browsh

# Firefox behaves quite differently to normal on its first run, so by getting
# that over and done with here when there's no user to be dissapointed means
# that all future runs will be consistent.
RUN TERM=xterm browsh & \
		pidsave=$!; \
		sleep 10; kill $pidsave || true;

ENTRYPOINT [ "browsh" ]


================================================
FILE: build-all.sh
================================================
#!/bin/bash
set -e
set -o pipefail

SCRIPT="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/$(basename "${BASH_SOURCE[0]}")"
REPO_URL="${REPO_URL:-r.j3ss.co}"
JOBS=${JOBS:-2}

ERRORS="$(pwd)/errors"

build_and_push(){
	base=$1
	suite=$2
	build_dir=$3

	echo "Building ${REPO_URL}/${base}:${suite} for context ${build_dir}"
	docker build --rm --force-rm -t "${REPO_URL}/${base}:${suite}" "${build_dir}" || return 1

	# on successful build, push the image
	echo "                       ---                                   "
	echo "Successfully built ${base}:${suite} with context ${build_dir}"
	echo "                       ---                                   "

	# try push a few times because notary server sometimes returns 401 for
	# absolutely no reason
	n=0
	until [ $n -ge 5 ]; do
		docker push --disable-content-trust=false "${REPO_URL}/${base}:${suite}" && break
		echo "Try #$n failed... sleeping for 15 seconds"
		n=$((n+1))
		sleep 15
	done

	# also push the tag latest for "stable" (chrome), "tools" (wireguard) or "3.5" tags for zookeeper
	if [[ "$suite" == "stable" ]] || [[ "$suite" == "3.6" ]] || [[ "$suite" == "tools" ]]; then
		docker tag "${REPO_URL}/${base}:${suite}" "${REPO_URL}/${base}:latest"
		docker push --disable-content-trust=false "${REPO_URL}/${base}:latest"
	fi
}

dofile() {
	f=$1
	image=${f%Dockerfile}
	base=${image%%\/*}
	build_dir=$(dirname "$f")
	suite=${build_dir##*\/}

	if [[ -z "$suite" ]] || [[ "$suite" == "$base" ]]; then
		suite=latest
	fi

	{
		$SCRIPT build_and_push "${base}" "${suite}" "${build_dir}"
	} || {
	# add to errors
	echo "${base}:${suite}" >> "$ERRORS"
}
echo
echo
}

main(){
	# get the dockerfiles
	IFS=$'\n'
	mapfile -t files < <(find -L . -iname '*Dockerfile' | sed 's|./||' | sort)
	unset IFS

	# build all dockerfiles
	echo "Running in parallel with ${JOBS} jobs."
	parallel --tag --verbose --ungroup -j"${JOBS}" "$SCRIPT" dofile "{1}" ::: "${files[@]}"

	if [[ ! -f "$ERRORS" ]]; then
		echo "No errors, hooray!"
	else
		echo "[ERROR] Some images did not build correctly, see below." >&2
		echo "These images failed: $(cat "$ERRORS")" >&2
		exit 1
	fi
}

run(){
	args=$*
	f=$1

	if [[ "$f" == "" ]]; then
		main "$args"
	else
		$args
	fi
}

run "$@"


================================================
FILE: buttslock/Dockerfile
================================================
#
# This container will listen to DBus events to be notified when your
# computer goes to sleep. When such events happen, it will lock the
# screen with a fancy lock.
#
# It needs to be started with a few bind-mounts:
# - /etc/passwd, /etc/shadow (read-only)
# - /var/run/dbus, the X11 socket (typically /tmp/.X11-unix)
# And it also requires the USER and DISPLAY environment variables to be set.
#
FROM alpine:latest

RUN apk --no-cache add \
	i3lock \
	imagemagick \
	py-dbus \
	py-gobject \
	scrot \
	ttf-liberation \
	xkeyboard-config

COPY buttslock.py buttslock.sh lock.png /

CMD ["/buttslock.py"]


================================================
FILE: buttslock/buttslock.py
================================================
#!/usr/bin/env python

# Shamelessly pasted from:
# https://serverfault.com/questions/573379/system-suspend-dbus-upower-signals-are-not-seen

from datetime import datetime
import dbus
import gobject
from dbus.mainloop.glib import DBusGMainLoop
import os

def handle_sleep(*args):
    print "%s    PrepareForSleep%s" % (datetime.now().ctime(), args)
    if len(args)>0 and args[0]:
        os.system("/buttslock.sh")

DBusGMainLoop(set_as_default=True)     # integrate into gobject main loop
bus = dbus.SystemBus()                 # connect to system wide dbus
bus.add_signal_receiver(               # define the signal to listen to
    handle_sleep,                      # callback function
    'PrepareForSleep',                 # signal name
    'org.freedesktop.login1.Manager',  # interface
    'org.freedesktop.login1'           # bus name
)

loop = gobject.MainLoop()
loop.run()



================================================
FILE: buttslock/buttslock.sh
================================================
#!/bin/sh

# Shamelessly copied from:
# https://github.com/meskarune/i3lock-fancy

# All options are here: https://www.imagemagick.org/Usage/blur/#blur_args
#BLURTYPE="0x5" # 7.52s
#BLURTYPE="0x2" # 4.39s
#BLURTYPE="5x3" # 3.80s
BLURTYPE="2x8" # 2.90s
#BLURTYPE="2x3" # 2.92s

# I still have to figure out how to get imagemagick fonts to work in Alpine
#FONT="-font Liberation-Sans"
FONT=

scrot /tmp/scrot.png
convert /tmp/scrot.png \
    -level 0%,100%,0.6 -blur "$BLURTYPE" "$FONT" \
    -pointsize 26 -fill white -gravity center \
    -annotate +0+200 'Type password to unlock' \
    /tmp/conv.png
composite -gravity center /lock.png /tmp/conv.png /tmp/lock.png
#i3lock --textcolor=ffffff00 --insidecolor=ffffff1c --ringcolor=ffffff3e --linecolor=ffffff00 --keyhlcolor=00000080 --ringvercolor=00000000 --insidevercolor=0000001c --ringwrongcolor=00000055 --insidewrongcolor=0000001c  -i $IMAGE
i3lock -i /tmp/lock.png --ignore-empty-password



================================================
FILE: cathode/Dockerfile
================================================
FROM debian:bullseye-slim
LABEL maintainer "Jessie Frazelle <jess@linux.com>"

RUN apt-get update && apt-get install -y \
	build-essential \
	ca-certificates \
	git \
	qmlscene \
	qt5-qmake \
	qt5-default \
	qtdeclarative5-dev \
	qml-module-qtquick-controls \
	qml-module-qtgraphicaleffects \
	qml-module-qtquick-dialogs \
	qml-module-qtquick-localstorage \
	qml-module-qtquick-window2 \
	--no-install-recommends \
	&& rm -rf /var/lib/apt/lists/*

RUN git clone --depth 1 --recursive https://github.com/Swordfish90/cool-retro-term.git /src
WORKDIR /src
RUN qmake \
	&& make

ENTRYPOINT [ "/src/cool-retro-term" ]


================================================
FILE: certbot/Dockerfile
================================================
FROM alpine:latest
LABEL maintainer "Jessie Frazelle <jess@linux.com>"

RUN apk --no-cache add \
	bash \
	certbot

ENTRYPOINT [ "certbot" ]


================================================
FILE: cf-reset-cache/Dockerfile
================================================
FROM alpine:latest
LABEL maintainer "Jessie Frazelle <jess@linux.com>"

RUN apk add --no-cache \
	ca-certificates \
	py-boto


COPY ./reset-cache.py /bin/reset-cache.py

CMD [ "/usr/bin/python", "/bin/reset-cache.py" ]


================================================
FILE: cf-reset-cache/reset-cache.py
================================================
#!/usr/local/bin/python

import boto
import os
import sys


access_key = os.getenv("AWS_ACCESS_KEY")
access_secret = os.getenv("AWS_SECRET_KEY")
cloudfront_dist = os.getenv("AWS_CF_DISTRIBUTION_ID")
bucket = os.getenv("AWS_S3_BUCKET")

if access_key == "" or access_key is None:
    print "Please set AWS_ACCESS_KEY env variable."
    sys.exit(1)
elif access_secret == "" or access_secret is None:
    print "Please set AWS_SECRET_KEY env variable."
    sys.exit(1)
elif cloudfront_dist == "" or cloudfront_dist is None:
    print "Please set AWS_CF_DISTRIBUTION_ID env variable."
    sys.exit(1)
elif bucket == "" or bucket is None:
    print "Please set AWS_S3_BUCKET env variable."
    sys.exit(1)

# get the paths from s3
s3_conn = boto.connect_s3(access_key, access_secret)
docs = s3_conn.get_bucket(bucket)
items = []

for key in docs.list():
    index_file = "/index.html"
    if key.name.endswith((index_file)):
        # append the file without the postfix as well
        items.append(key.name.replace(index_file, ""))
        items.append(key.name.replace(index_file, "/"))
    items.append(key.name)

cf_conn = boto.connect_cloudfront(access_key, access_secret)
inval_req = cf_conn.create_invalidation_request(cloudfront_dist, items)

print "Invalidating these files: "
print items

print inval_req
sys.exit(0)


================================================
FILE: cfssl/Dockerfile
================================================
FROM golang:alpine AS builder

ENV PATH /go/bin:/usr/local/go/bin:$PATH
ENV GOPATH /go

RUN apk --no-cache add \
		gcc \
		git \
		libc-dev


ENV CFSSL_VERSION v1.4.1

RUN git clone --depth 1 --branch "$CFSSL_VERSION" https://github.com/cloudflare/cfssl.git /go/src/github.com/cloudflare/cfssl

RUN set -x && \
	go get github.com/cloudflare/cfssl_trust/... && \
	go get github.com/GeertJohan/go.rice/rice && \
	cd /go/src/github.com/cloudflare/cfssl && rice embed-go -i=./cli/serve && \
	mkdir bin && cd bin && \
	go build ../cmd/cfssl && \
	go build ../cmd/cfssljson && \
	go build ../cmd/mkbundle && \
	go build ../cmd/multirootca && \
	echo "Build complete."

FROM alpine:latest

COPY --from=builder /go/src/github.com/cloudflare/cfssl_trust /etc/cfssl
COPY --from=builder /go/src/github.com/cloudflare/cfssl/bin/ /usr/bin

WORKDIR /etc/cfssl

EXPOSE 8888

ENTRYPOINT ["cfssl"]
CMD ["--help"]


================================================
FILE: checkup/Dockerfile
================================================
FROM golang:alpine as builder
LABEL maintainer "Jessie Frazelle <jess@linux.com>"

RUN	apk --no-cache add \
	ca-certificates \
	gcc \
	git \
	libc-dev

ENV PATH /go/bin:/usr/local/go/bin:$PATH
ENV GOPATH /go

RUN go get github.com/sourcegraph/checkup/cmd/checkup

FROM alpine:latest

COPY --from=builder /go/bin/checkup /usr/bin/checkup
COPY --from=builder /etc/ssl/certs/ /etc/ssl/certs

ENTRYPOINT [ "checkup" ]


================================================
FILE: cheese/Dockerfile
================================================
FROM debian:bullseye-slim
LABEL maintainer "Jessie Frazelle <jess@linux.com>"

RUN apt-get update && apt-get install -y \
	cheese \
	libgl1-mesa-dri \
	libgl1-mesa-glx \
	--no-install-recommends \
	&& rm -rf /var/lib/apt/lists/*

ENTRYPOINT [ "cheese" ]


================================================
FILE: chrome/beta/Dockerfile
================================================
# Run Chrome in a container
#
# docker run -it \
#	--net host \ # may as well YOLO
#	--cpuset-cpus 0 \ # control the cpu
#	--memory 512mb \ # max memory it can use
#	-v /tmp/.X11-unix:/tmp/.X11-unix \ # mount the X11 socket
#	-e DISPLAY=unix$DISPLAY \
#	-v $HOME/Downloads:/home/chrome/Downloads \
#	-v $HOME/.config/google-chrome/:/data \ # if you want to save state
#	--security-opt seccomp=$HOME/chrome.json \
#	--device /dev/snd \ # so we have sound
#	--device /dev/dri \
#	-v /dev/shm:/dev/shm \
#	--name chrome \
#	jess/chrome:beta
#
# You will want the custom seccomp profile:
# 	wget https://raw.githubusercontent.com/jfrazelle/dotfiles/master/etc/docker/seccomp/chrome.json -O ~/chrome.json

# Base docker image
FROM debian:bullseye-slim
LABEL maintainer "Jessie Frazelle <jess@linux.com>"

# Install Chrome
RUN apt-get update && apt-get install -y \
	apt-transport-https \
	ca-certificates \
	curl \
	gnupg \
	hicolor-icon-theme \
	libcanberra-gtk* \
	libgl1-mesa-dri \
	libgl1-mesa-glx \
	libpangox-1.0-0 \
	libpulse0 \
	libv4l-0 \
	fonts-symbola \
	--no-install-recommends \
	&& curl -sSL https://dl.google.com/linux/linux_signing_key.pub | apt-key add - \
	&& echo "deb [arch=amd64] https://dl.google.com/linux/chrome/deb/ stable main" > /etc/apt/sources.list.d/google.list \
	&& apt-get update && apt-get install -y \
	google-chrome-beta \
	--no-install-recommends \
	&& apt-get purge --auto-remove -y curl \
	&& rm -rf /var/lib/apt/lists/*

# Add chrome user
RUN groupadd -r chrome && useradd -r -g chrome -G audio,video chrome \
    && mkdir -p /home/chrome/Downloads && chown -R chrome:chrome /home/chrome

COPY local.conf /etc/fonts/local.conf

# Run Chrome as non privileged user
USER chrome

# Autorun chrome
ENTRYPOINT [ "google-chrome" ]
CMD [ "--user-data-dir=/data" ]


================================================
FILE: chrome/beta/local.conf
================================================
<?xml version='1.0'?>
<!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
<fontconfig>
<match target="font">
<edit mode="assign" name="rgba">
<const>rgb</const>
</edit>
</match>
<match target="font">
<edit mode="assign" name="hinting">
<bool>true</bool>
</edit>
</match>
<match target="font">
<edit mode="assign" name="hintstyle">
<const>hintslight</const>
</edit>
</match>
<match target="font">
<edit mode="assign" name="antialias">
<bool>true</bool>
</edit>
</match>
<match target="font">
<edit mode="assign" name="lcdfilter">
<const>lcddefault</const>
</edit>
</match>
<match target="font">
<edit name="embeddedbitmap" mode="assign">
<bool>false</bool>
</edit>
</match>
</fontconfig>


================================================
FILE: chrome/stable/Dockerfile
================================================
# Run Chrome in a container
#
# docker run -it \
#	--net host \ # may as well YOLO
#	--cpuset-cpus 0 \ # control the cpu
#	--memory 512mb \ # max memory it can use
#	-v /tmp/.X11-unix:/tmp/.X11-unix \ # mount the X11 socket
#	-e DISPLAY=unix$DISPLAY \
#	-v $HOME/Downloads:/home/chrome/Downloads \
#	-v $HOME/.config/google-chrome/:/data \ # if you want to save state
#	--security-opt seccomp=$HOME/chrome.json \
#	--device /dev/snd \ # so we have sound
#   --device /dev/dri \
#	-v /dev/shm:/dev/shm \
#	--name chrome \
#	jess/chrome
#
# You will want the custom seccomp profile:
# 	wget https://raw.githubusercontent.com/jfrazelle/dotfiles/master/etc/docker/seccomp/chrome.json -O ~/chrome.json

# Base docker image
FROM debian:bullseye-slim
LABEL maintainer "Jessie Frazelle <jess@linux.com>"

# Install Chrome
RUN apt-get update && apt-get install -y \
	apt-transport-https \
	ca-certificates \
	curl \
	gnupg \
	hicolor-icon-theme \
	libcanberra-gtk* \
	libgl1-mesa-dri \
	libgl1-mesa-glx \
	libpangox-1.0-0 \
	libpulse0 \
	libv4l-0 \
	fonts-symbola \
	--no-install-recommends \
	&& curl -sSL https://dl.google.com/linux/linux_signing_key.pub | apt-key add - \
	&& echo "deb [arch=amd64] https://dl.google.com/linux/chrome/deb/ stable main" > /etc/apt/sources.list.d/google.list \
	&& apt-get update && apt-get install -y \
	google-chrome-stable \
	--no-install-recommends \
	&& apt-get purge --auto-remove -y curl \
	&& rm -rf /var/lib/apt/lists/*

# Add chrome user
RUN groupadd -r chrome && useradd -r -g chrome -G audio,video chrome \
    && mkdir -p /home/chrome/Downloads && chown -R chrome:chrome /home/chrome

COPY local.conf /etc/fonts/local.conf

# Run Chrome as non privileged user
USER chrome

# Autorun chrome
ENTRYPOINT [ "google-chrome" ]
CMD [ "--user-data-dir=/data" ]


================================================
FILE: chrome/stable/local.conf
================================================
<?xml version='1.0'?>
<!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
<fontconfig>
<match target="font">
<edit mode="assign" name="rgba">
<const>rgb</const>
</edit>
</match>
<match target="font">
<edit mode="assign" name="hinting">
<bool>true</bool>
</edit>
</match>
<match target="font">
<edit mode="assign" name="hintstyle">
<const>hintslight</const>
</edit>
</match>
<match target="font">
<edit mode="assign" name="antialias">
<bool>true</bool>
</edit>
</match>
<match target="font">
<edit mode="assign" name="lcdfilter">
<const>lcddefault</const>
</edit>
</match>
<match target="font">
<edit name="embeddedbitmap" mode="assign">
<bool>false</bool>
</edit>
</match>
</fontconfig>


================================================
FILE: chromium/Dockerfile
================================================
# Run Chromium in a container
#
# docker run -it \
#	--net host \ # may as well YOLO
#	--cpuset-cpus 0 \ # control the cpu
#	--memory 512mb \ # max memory it can use
#	-v /tmp/.X11-unix:/tmp/.X11-unix \ # mount the X11 socket
#	-e DISPLAY=unix$DISPLAY \
#	-v $HOME/Downloads:/home/chromium/Downloads \
#	-v $HOME/.config/chromium/:/data \ # if you want to save state
#	--security-opt seccomp=$HOME/chrome.json \
#	--device /dev/snd \ # so we have sound
#	-v /dev/shm:/dev/shm \
#	--name chromium \
#	jess/chromium
#
# You will want the custom seccomp profile:
# 	wget https://raw.githubusercontent.com/jfrazelle/dotfiles/master/etc/docker/seccomp/chrome.json -O ~/chrome.json

# Base docker image
FROM debian:bullseye-slim
LABEL maintainer "Jessie Frazelle <jess@linux.com>"

# Install Chromium
# Yes, including the Google API Keys sucks but even debian does the same: https://packages.debian.org/stretch/amd64/chromium/filelist
RUN apt-get update && apt-get install -y \
      chromium \
      chromium-l10n \
      fonts-liberation \
      fonts-roboto \
      hicolor-icon-theme \
      libcanberra-gtk-module \
      libexif-dev \
      libgl1-mesa-dri \
      libgl1-mesa-glx \
      libpangox-1.0-0 \
      libv4l-0 \
      fonts-symbola \
      --no-install-recommends \
    && rm -rf /var/lib/apt/lists/* \
    && mkdir -p /etc/chromium.d/ \
    && /bin/echo -e 'export GOOGLE_API_KEY="AIzaSyCkfPOPZXDKNn8hhgu3JrA62wIgC93d44k"\nexport GOOGLE_DEFAULT_CLIENT_ID="811574891467.apps.googleusercontent.com"\nexport GOOGLE_DEFAULT_CLIENT_SECRET="kdloedMFGdGla2P1zacGjAQh"' > /etc/chromium.d/googleapikeys

# Add chromium user
RUN groupadd -r chromium && useradd -r -g chromium -G audio,video chromium \
    && mkdir -p /home/chromium/Downloads && chown -R chromium:chromium /home/chromium

# Run as non privileged user
USER chromium

ENTRYPOINT [ "/usr/bin/chromium" ]
CMD [ "--user-data-dir=/data" ]


================================================
FILE: clair/Dockerfile
================================================
FROM golang:alpine as builder

RUN apk --no-cache add \
	ca-certificates \
	git \
	make

ENV PATH /go/bin:/usr/local/go/bin:$PATH
ENV GOPATH /go

RUN go get github.com/quay/clair/cmd/clair || true

ENV CLAIR_VERSION v2.1.4

WORKDIR /go/src/github.com/quay/clair

RUN git checkout "${CLAIR_VERSION}"

RUN go install ./cmd/clair

FROM alpine:latest

RUN apk --no-cache add \
	ca-certificates \
	git \
	rpm \
	xz

COPY --from=builder /go/bin/clair /usr/bin/clair

ENTRYPOINT [ "clair" ]


================================================
FILE: cli53/Dockerfile
================================================
FROM alpine:latest

RUN apk --no-cache add \
	ca-certificates \
	python \
	py2-pip \
	&& pip install cli53

ENTRYPOINT [ "cli53" ]


================================================
FILE: clisp/.clisprc.lisp
================================================
;;; The following lines added by ql:add-to-init-file:
#-quicklisp
(let ((quicklisp-init (merge-pathnames
                       "quicklisp/setup.lisp"
                       (user-homedir-pathname))))
  (when (probe-file quicklisp-init)
    (load quicklisp-init)))


================================================
FILE: clisp/Dockerfile
================================================
FROM alpine:latest AS cl-k8s
RUN apk add --no-cache \
	git
RUN git clone https://github.com/brendandburns/cl-k8s.git /cl-k8s

FROM debian:bullseye-slim
LABEL maintainer "Jessie Frazelle <jess@linux.com>"

RUN apt-get update && apt-get install -y \
	ca-certificates \
	clisp \
	wget \
	--no-install-recommends \
	&& rm -rf /var/lib/apt/lists/*

COPY .clisprc.lisp /home/user/.clisprc.lisp
COPY --from=cl-k8s /cl-k8s /home/user/quicklisp/local-projects/cl-k8s

# Install quicklisp
RUN wget -O /home/user/quicklisp.lisp https://beta.quicklisp.org/quicklisp.lisp

ENV HOME /home/user
RUN useradd --create-home --home-dir $HOME user \
	&& chown -R user:user $HOME

USER user

WORKDIR $HOME

# Install quicklisp
RUN clisp -x '(load "quicklisp.lisp") (quicklisp-quickstart:install)'

ENTRYPOINT [ "clisp" ]


================================================
FILE: cloudapp/Dockerfile
================================================
FROM	ruby:alpine
LABEL maintainer "Jessie Frazelle <jess@linux.com>"

RUN	apk add --no-cache \
	libcurl

RUN	set -x \
	&& apk add --no-cache --virtual .build-deps \
	build-base \
	&& gem install cloudapp --no-document \
	&& apk del .build-deps

ENTRYPOINT	["cloudapp"]


================================================
FILE: consul/Dockerfile
================================================
FROM golang:latest as builder
MAINTAINER Jessica Frazelle <jess@linux.com>

ENV PATH /go/bin:/usr/local/go/bin:$PATH
ENV GOPATH /go

RUN apt-get update && apt-get install -y \
	apt-transport-https \
	ca-certificates \
	curl \
	gcc \
	git \
	make \
	ruby-dev \
	ruby \
	--no-install-recommends \
	&& rm -rf /var/lib/apt/lists/*

# Add yarn to apt repos.
RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -
RUN echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list

# Setup node install.
RUN curl -sL https://deb.nodesource.com/setup_10.x | bash -

RUN apt-get update && apt-get install -y \
	nodejs \
	yarn \
	--no-install-recommends \
	&& rm -rf /var/lib/apt/lists/*

ENV CONSUL_VERSION v1.8.0-beta2

RUN go get github.com/hashicorp/consul || true

WORKDIR /go/src/github.com/hashicorp/consul

RUN git checkout "${CONSUL_VERSION}"

# Install deps for UI.
RUN gem install \
	bundler \
	--no-ri --no-rdoc

RUN cd ui-v2 \
	&& yarn install \
	&& make \
	&& rm -rf ../pkg/web_ui \
	&& mkdir -p ../pkg \
	&& cp -r dist ../pkg/web_ui

RUN TERM=xterm XC_ARCH="amd64" XC_OS="linux" LD_FLAGS=" -extldflags -static" make tools static-assets bin \
	&& mv bin/consul /usr/bin/consul

FROM alpine:latest

COPY --from=builder /usr/bin/consul /usr/bin/consul
COPY --from=builder /etc/ssl/certs/ /etc/ssl/certs

ENTRYPOINT [ "consul" ]
CMD [ "--help" ]


================================================
FILE: coredns/Dockerfile
================================================
FROM golang:alpine as builder
LABEL maintainer "Jessie Frazelle <jess@linux.com>"

ENV PATH /go/bin:/usr/local/go/bin:$PATH
ENV GOPATH /go

RUN apk --no-cache add \
	bash \
	ca-certificates \
	git \
	make

ENV COREDNS_VERSION v1.6.9

RUN git clone --depth 1 --branch ${COREDNS_VERSION} https://github.com/coredns/coredns /go/src/github.com/coredns/coredns

WORKDIR /go/src/github.com/coredns/coredns

RUN make all \
	&& mv coredns /usr/bin/coredns

FROM alpine:latest

COPY --from=builder /usr/bin/coredns /usr/bin/coredns
COPY --from=builder /etc/ssl/certs/ /etc/ssl/certs

ENTRYPOINT [ "coredns", "-log" ]


================================================
FILE: couchpotato/Dockerfile
================================================
# Couchpotato in a container
#
# docker run -d \
# 	--restart always \
#	-p 5050:5050 \
# 	-v /etc/localtime:/etc/localtime:ro \
# 	-v /volumes/couchpotato:/data \
#	--link transmission:transmission \
# 	--name couchpotato \
# 	jess/couchpotato
#
FROM python:2-alpine
LABEL maintainer "Jessie Frazelle <jess@linux.com>"

# machine parsable metadata, for https://github.com/pycampers/dockapt
LABEL "registry_image"="r.j3ss.co/couchpotato"
LABEL "docker_run_flags"="-d \
 	--restart always \
	-p 5050:5050 \
 	-v /etc/localtime:/etc/localtime:ro \
 	-v /volumes/couchpotato:/data \
	--link transmission:transmission \
 	--name couchpotato"

RUN apk add --no-cache \
	ca-certificates \
	gcc \
	git \
	libffi-dev \
	libxml2-dev \
	libxslt-dev \
	musl-dev \
	openssl-dev \
	&& rm -rf /var/lib/apt/lists/*

RUN pip install \
	lxml \
	pyopenssl

EXPOSE 5050

ENV COUCHPOTATO_VERSION master

RUN git clone https://github.com/RuudBurger/CouchPotatoServer.git /usr/src/couchpotato \
	&& ( \
		cd /usr/src/couchpotato \
		&& git checkout "${COUCHPOTATO_VERSION}" \
	)

WORKDIR /usr/src/couchpotato

ENTRYPOINT [ "python", "CouchPotato.py", "--debug" ]
CMD [ "--data_dir", "/data" ]


================================================
FILE: cura/Dockerfile
================================================
FROM ubuntu:bionic

RUN apt-get update && apt-get install -y \
	ca-certificates \
	libgfortran4 \
	libssl-dev \
	wget \
	--no-install-recommends \
	&& rm -rf /var/lib/apt/lists/*

RUN wget https://gitlab.com/lulzbot3d/cura-le/cura-lulzbot/uploads/0676b39295476b93181fa8a512f34265/cura-lulzbot_3.2.21_amd64.deb -O /tmp/cura.deb \
	&& apt update \
	&& dpkg -i /tmp/cura.deb || true \
	&& apt-get -yf install \
	&& rm -rf /var/lib/apt/lists/* \
	&& rm -rf /tmp/cura.deb

CMD ["cura-lulzbot"]


================================================
FILE: curl/Dockerfile
================================================
#
# This Dockerfile builds a recent curl with HTTP/2 client support, using
# a recent nghttp2 build.
#
# See the Makefile for how to tag it. If Docker and that image is found, the
# Go tests use this curl binary for integration tests.
#

FROM alpine:latest

RUN apk add --no-cache \
	ca-certificates \
	nghttp2 \
	openssl

ENV CURL_VERSION 7.70.0

RUN set -x \
    && apk add --no-cache --virtual .build-deps \
		g++ \
		make \
		nghttp2-dev \
		openssl-dev \
		perl \
		gnupg \
	&& wget https://curl.haxx.se/download/curl-$CURL_VERSION.tar.bz2 \
	&& wget https://curl.haxx.se/download/curl-$CURL_VERSION.tar.bz2.asc \
	&& gpg --keyserver ha.pool.sks-keyservers.net --recv-keys 27EDEAF22F3ABCEB50DB9A125CC908FDB71E12C2 \
	&& gpg --verify curl-$CURL_VERSION.tar.bz2.asc \
    && tar xjvf curl-$CURL_VERSION.tar.bz2 \
    && rm curl-$CURL_VERSION.tar.bz2 \
    && ( \
		cd curl-$CURL_VERSION \
    	&& ./configure \
    		--with-nghttp2=/usr \
        	--with-ssl \
        	--enable-ipv6 \
        	--enable-unix-sockets \
        	--without-libidn \
        	--disable-static \
        	--disable-ldap \
        	--with-pic \
    	&& make \
    	&& make install \
	) \
    && rm -r curl-$CURL_VERSION \
    && rm -r /usr/share/man \
    && apk del .build-deps

ENTRYPOINT ["/usr/local/bin/curl"]
CMD ["-h"]


================================================
FILE: dcos-cli/Dockerfile
================================================
FROM alpine:latest
LABEL maintainer "Jessie Frazelle <jess@linux.com>"

RUN apk --no-cache add \
	ca-certificates \
	python \
	py2-pip \
	&& pip install dcoscli

# path to the DCOS CLI binary
RUN echo 'export PATH=$PATH:/dcos/bin;' >> ~/.bashrc

ENTRYPOINT [ "dcos" ]


================================================
FILE: debootstrap/Dockerfile
================================================
FROM debian:bullseye-slim
LABEL maintainer "Jessie Frazelle <jess@linux.com>"

RUN apt-get update && apt-get install -y \
	ca-certificates \
	curl \
	debootstrap \
	git \
	--no-install-recommends \
	&& rm -rf /var/lib/apt/lists/*

ENTRYPOINT [ "debootstrap" ]


================================================
FILE: distcc/Dockerfile
================================================
FROM debian:sid-slim
LABEL maintainer "Jessie Frazelle <jess@linux.com>"

RUN apt-get update && apt-get install -y \
	ca-certificates \
	curl \
	distcc \
	git \
	make \
	libncurses5-dev \
	libssl-dev \
	--no-install-recommends \
	&& rm -rf /var/lib/apt/lists/*

ENV HOME /root
WORKDIR $HOME

COPY distccd-init /usr/local/bin/distccd-init

ENTRYPOINT [ "distccd-init" ]


================================================
FILE: distcc/distccd-init
================================================
#! /bin/sh
#
# distccd Debian init.d script contributed by Jason Thomas.  (Debian #161136)
#
# skeleton	example file to build /etc/init.d/ scripts.
#		This file should be used to construct scripts for /etc/init.d.
#
#		Written by Miquel van Smoorenburg <miquels@cistron.nl>.
#		Modified for Debian GNU/Linux
#		by Ian Murdock <imurdock@gnu.ai.mit.edu>.
#
# Version:	@(#)skeleton  1.9.1  08-Apr-2002  miquels@cistron.nl
#
set -e

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/bin/distccd
NAME=distccd
DAEMON_ARGS="--nice=10 --port=4200 --pid-file=/var/run/${NAME}.pid --no-detach $*"

test -x $DAEMON || exit 0


# we need permission to write to the pid file
touch /var/run/$NAME.pid
chown distccd /var/run/$NAME.pid

# shellcheck disable=SC2086
exec $DAEMON $DAEMON_ARGS


================================================
FILE: doctor/Dockerfile
================================================
# DESCRIPTION:	  Run text-based emacs doctor in a container
# AUTHOR:		  Jessie Frazelle <jess@linux.com>
# COMMENTS:
#	This file describes how to build doctor in a container with all
#	dependencies installed.
#	Tested on Debian Jessie
# USAGE:
#	# Download doctor Dockerfile
#	wget https://raw.githubusercontent.com/jessfraz/dockerfiles/master/doctor/Dockerfile
#
#	# Build doctor image
#	docker build -t doctor .
#
#	docker run -it jess/doctor
#

# Base docker image
FROM alpine:latest
LABEL maintainer "Jessie Frazelle <jess@linux.com>"

# Install emacs:
# Note: Emacs is only community repo -> https://pkgs.alpinelinux.org/packages?package=emacs&repo=all&arch=x86_64
RUN apk --no-cache add \
	--repository http://dl-cdn.alpinelinux.org/alpine/edge/community/ \
	emacs

# Autorun doctor
CMD ["/usr/bin/emacs", "-f", "doctor"]


================================================
FILE: dunnet/Dockerfile
================================================
# DESCRIPTION:	  Run text-based game dunnet in a container
# AUTHOR:		  Jessie Frazelle <jess@linux.com>
# COMMENTS:
#	This file describes how to build dunnet in a container with all
#	dependencies installed.
#	Tested on Debian Jessie
# USAGE:
#	# Download dunnet Dockerfile
#	wget https://raw.githubusercontent.com/jessfraz/dockerfiles/master/dunnet/Dockerfile
#
#	# Build dunnet image
#	docker build -t dunnet .
#
#	docker run -it dunnet
#

# Base docker image
FROM alpine:latest
LABEL maintainer "Jessie Frazelle <jess@linux.com>"

# Install emacs:
# Note: Emacs is only in community repo -> https://pkgs.alpinelinux.org/packages?package=emacs&repo=all&arch=x86_64
RUN apk --no-cache add \
	--repository http://dl-cdn.alpinelinux.org/alpine/edge/community/ \
	emacs

# Autorun dunnet
CMD ["/usr/bin/emacs", "-batch", "-l", "dunnet"]


================================================
FILE: evince/Dockerfile
================================================
# Evince in a container
#
# docker run -it \
#	-v $HOME/documents/:/root/documents/ \
#	-v /tmp/.X11-unix:/tmp/.X11-unix \
#	-e DISPLAY=$DISPLAY \
#	evince
#

FROM alpine:latest
LABEL maintainer "Christian Koep <christiankoep@gmail.com>"

RUN apk --no-cache add \
	--repository http://dl-cdn.alpinelinux.org/alpine/edge/community \
	evince \
	ttf-opensans

CMD ["/usr/bin/evince"]


================================================
FILE: figma-wine/Dockerfile
================================================
# Run figma windows app in a container with wine
#
# docker run --rm -it \
#	-v /etc/localtime:/etc/localtime:ro \
#	--cpuset-cpus 0 \
#	-v /tmp/.X11-unix:/tmp/.X11-unix  \
#	-e DISPLAY=unix$DISPLAY \
#	--device /dev/snd:/dev/snd \
#	--name figma-wine \
#	jess/figma-wine bash
#
FROM r.j3ss.co/wine
LABEL maintainer "Jessie Frazelle <jess@linux.com>"

ENV HOME /home/user
RUN useradd --create-home --home-dir $HOME user \
	&& curl -sSL "https://desktop.figma.com/win/FigmaSetup.exe" > ${HOME}/FigmaSetup.exe \
	&& chown -R user:user $HOME

WORKDIR $HOME
USER user

RUN echo "wine runas /trustlevel:0x20000 FigmaSetup.exe" > /home/user/.bash_history
RUN echo "winetricks dotnet45" >> /home/user/.bash_history
RUN echo "winecfg" >> /home/user/.bash_history

CMD [ "bash" ]


================================================
FILE: firefox/Dockerfile
================================================
FROM debian:sid-slim
LABEL maintainer "Jessie Frazelle <jess@linux.com>"

RUN apt-get update && apt-get install -y \
	dirmngr \
	gnupg \
	--no-install-recommends \
	&& apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 0AB215679C571D1C8325275B9BDB3D89CE49EC21 \
	&& echo "deb http://ppa.launchpad.net/mozillateam/firefox-next/ubuntu xenial main" >> /etc/apt/sources.list.d/firefox.list \
	&& apt-get update && apt-get install -y \
	apulse \
	ca-certificates \
	ffmpeg \
	firefox \
	hicolor-icon-theme \
	libasound2 \
	libgl1-mesa-dri \
	libgl1-mesa-glx \
	libpulse0 \
	fonts-noto \
	fonts-noto-cjk \
	fonts-noto-color-emoji \
	--no-install-recommends \
	&& rm -rf /var/lib/apt/lists/*

ENV LANG en-US

COPY local.conf /etc/fonts/local.conf

RUN echo 'pref("browser.tabs.remote.autostart", false);' >> /etc/firefox/syspref.js

COPY entrypoint.sh /usr/bin/startfirefox

ENTRYPOINT [ "startfirefox" ]


================================================
FILE: firefox/alpine/Dockerfile
================================================
FROM alpine:latest

LABEL maintainer "Christian Koep <christiankoep@gmail.com>"

RUN apk add --no-cache \
	alsa-lib \
	ca-certificates \
	firefox-esr \
	hicolor-icon-theme \
	mesa-dri-intel \
	mesa-gl \
	ttf-dejavu

ENTRYPOINT ["/usr/bin/firefox"]


================================================
FILE: firefox/entrypoint.sh
================================================
#!/bin/bash

if [[ -e /dev/snd ]]; then
	exec apulse firefox "$@"
else
	exec firefox "$@"
fi


================================================
FILE: firefox/local.conf
================================================
<?xml version='1.0'?>
<!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
<fontconfig>
<match target="font">
<edit mode="assign" name="rgba">
<const>rgb</const>
</edit>
</match>
<match target="font">
<edit mode="assign" name="hinting">
<bool>true</bool>
</edit>
</match>
<match target="font">
<edit mode="assign" name="hintstyle">
<const>hintslight</const>
</edit>
</match>
<match target="font">
<edit mode="assign" name="antialias">
<bool>true</bool>
</edit>
</match>
<match target="font">
<edit mode="assign" name="lcdfilter">
<const>lcddefault</const>
</edit>
</match>
<match target="font">
<edit name="embeddedbitmap" mode="assign">
<bool>false</bool>
</edit>
</match>
</fontconfig>


================================================
FILE: fleet/Dockerfile
================================================
FROM golang:alpine AS builder
MAINTAINER Jessica Frazelle <jess@linux.com>

ENV PATH /go/bin:/usr/local/go/bin:$PATH
ENV GOPATH /go

RUN apk add --no-cache \
	ca-certificates \
	gcc \
	git \
	make \
	npm \
	yarn

ENV FLEET_VERSION 2.6.0

RUN git clone --depth 1 --branch "${FLEET_VERSION}" https://github.com/kolide/fleet.git /go/src/github.com/kolide/fleet

WORKDIR /go/src/github.com/kolide/fleet

ENV GO111MODULE on

RUN make deps generate

RUN CGO_ENABLED=0 go build -a -tags netgo -ldflags '-w -extldflags "-static"' -o /usr/bin/fleet ./cmd/fleet
RUN CGO_ENABLED=0 go build -a -tags netgo -ldflags '-w -extldflags "-static"' -o /usr/bin/fleetctl ./cmd/fleetctl

FROM r.j3ss.co/osquery AS osquery

FROM scratch

COPY --from=builder /usr/bin/fleet /usr/bin/fleet
COPY --from=builder /usr/bin/fleetctl /usr/bin/fleetctl
COPY --from=builder /etc/ssl/certs/ /etc/ssl/certs
COPY --from=osquery /usr/share/osquery/packs /packs

ENTRYPOINT [ "fleet" ]
CMD [ "--help" ]


================================================
FILE: fontforge/Dockerfile
================================================
# Run Fontforge in a container
#
# state=$HOME
# mkdir -p $state/fontforge
# docker run --rm \
#     -v /tmp/.X11-unix:/tmp/.X11-unix \
#     -e DISPLAY=unix$DISPLAY \
#     -v $state/fontforge:/home/fontforge \
#     --name fontforge \
#     fghj/fontforge

# Base docker image
FROM ubuntu:16.04
LABEL maintainer "Axel Svensson <foss@axelsvensson.com>"

RUN  apt-get update \
  && apt-get install -y \
     software-properties-common \
     --no-install-recommends \
  && add-apt-repository ppa:fontforge/fontforge \
  && apt-get update \
  && apt-get install -y \
     fontforge \
     --no-install-recommends \
  && rm -rf /var/lib/apt/lists/*

ENV HOME /home/fontforge
RUN useradd --create-home --home-dir $HOME fontforge
WORKDIR $HOME
USER fontforge
CMD [ "fontforge" ]



================================================
FILE: fontpatcher/Dockerfile
================================================
FROM debian:sid-slim
LABEL maintainer "Jessie Frazelle <jess@linux.com>"

RUN apt-get update && apt-get install -y \
	python-fontforge \
	--no-install-recommends \
	&& rm -rf /var/lib/apt/lists/*

RUN buildDeps=' \
		ca-certificates \
		git \
	' \
	set -x \
	&& apt-get update \
	&& apt-get install -y $buildDeps --no-install-recommends \
	&& git clone --depth 1 --branch develop https://github.com/Lokaltog/vim-powerline.git /pwrline \
	&& ( \
		cd /pwrline \
		&& mv fontpatcher/fontpatcher /usr/bin/ \
		&& mv fontpatcher/PowerlineSymbols.sfd /usr/bin/ \
	) \
	&& rm -rf /pwrline \
	&& apt-get purge -y --auto-remove $buildDeps \
	&& rm -rf /var/lib/apt/lists/* \
	&& echo "Build complete."

ENTRYPOINT [ "fontpatcher" ]


================================================
FILE: fontpatcher/README.md
================================================
# fontpatcher

How to use:

1. Enter the directory where the font file lives you wish to patch.
2. Run:

        $ docker run --rm -it \
            -v $(pwd):/workdir \
            --workdir /workdir \
            r.j3ss.co/fontpatcher myfontfile.otf

3. You should have a `myfontfile-Powerline.otf` as an artifact.
4. Copy the font file into ``~/.fonts`` (or another X font directory)::

        $ cp MyFontFile-Powerline.otf ~/.fonts

   **Note:** If the font is a pure bitmap font (e.g. a PCF font) it will be
   stored in the BDF format. This is usually not a problem, and you may
   convert the font back to the PCF format using ``bdftopcf`` if you want
   to. All other fonts will be stored in the OTF format regardless of the
   original format.

5. Update your font cache::

        $ sudo fc-cache -vf

   **Note:** If you use vim in rxvt-unicode in the client/daemon mode, you
   may need to close all running terminals as well for the font to be
   updated.


================================================
FILE: foss-heartbeat/Dockerfile
================================================
FROM python:3-alpine

RUN apk add --no-cache \
	ca-certificates \
	bash \
	gfortran \
	lapack \
	openjdk8-jre-base \
	py3-numpy \
	py3-scipy

# Install the requirements
RUN set -x \
	&& apk add --no-cache --virtual .build-deps \
		build-base \
		git \
		lapack-dev \
		libffi-dev \
		openssl-dev \
	&& ln -s /usr/include/locale.h /usr/include/xlocale.h \
	&& git clone --depth 1 https://github.com/sarahsharp/foss-heartbeat.git /usr/src/foss-heartbeat \
	&& ( \
		cd /usr/src/foss-heartbeat \
		&& cat requirements.txt | grep -v numpy | grep -v scipy | tee  requirements.txt \
		&& pip install -r requirements.txt \
		&& pip install statistics \
	) \
	&& apk del .build-deps

WORKDIR /usr/src/foss-heartbeat


================================================
FILE: freeradius/Dockerfile
================================================
FROM alpine:latest
LABEL maintainer "Jessie Frazelle <jess@linux.com>"

RUN apk --no-cache add \
    freeradius \
	freeradius-python \
	freeradius-radclient \
	freeradius-sql \
	freeradius-sqlite \
	openssl-dev \
	python2 \
	sqlite

ENTRYPOINT [ "radiusd" ]
CMD [ "-xx","-f" ]


================================================
FILE: gcalcli/Dockerfile
================================================
FROM alpine:latest
LABEL maintainer "Jessie Frazelle <jess@linux.com>"

ENV HOME /home/gcalcli

RUN apk --no-cache add \
	python3 \
	python3-dev \
	build-base \
	&& adduser -S gcalcli \
	&& chown -R gcalcli $HOME \
	&& pip3 install vobject parsedatetime gcalcli

WORKDIR $HOME
USER gcalcli

ENTRYPOINT [ "gcalcli" ]


================================================
FILE: gcc/Dockerfile
================================================
FROM debian:bullseye-slim
LABEL maintainer "Jessie Frazelle <jess@linux.com>"

RUN apt-get update && apt-get install -y \
	gcc \
	libc6-dev \
	--no-install-recommends \
	&& rm -rf /var/lib/apt/lists/*


================================================
FILE: gcloud/Dockerfile
================================================
FROM python:2-alpine

ENV PATH $PATH:/usr/src/google-cloud-sdk/bin
ENV CLOUD_SDK_DOCKER_VERSION 295.0.0

RUN set -x \
	&& apk add --no-cache --virtual .build-deps \
		curl \
		ca-certificates \
		tar \
	&& curl -sSL -o /tmp/google-cloud-sdk.tar.gz "https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/google-cloud-sdk-${CLOUD_SDK_DOCKER_VERSION}-linux-x86_64.tar.gz" \
	&& mkdir -p /usr/src/google-cloud-sdk \
	&& tar -xzf /tmp/google-cloud-sdk.tar.gz -C /usr/src/google-cloud-sdk --strip-components 1 \
	&& rm /tmp/google-cloud-sdk.tar.gz \
	&& ( \
		cd /usr/src/google-cloud-sdk \
		&& ./install.sh \
        	--usage-reporting false \
        	--path-update false \
	) \
	&& apk del .build-deps \
	&& gcloud components update \
	&& gcloud version

WORKDIR /root

ENTRYPOINT ["gcloud"]


================================================
FILE: geary/Dockerfile
================================================
FROM debian:bullseye-slim
LABEL maintainer "Jessie Frazelle <jess@linux.com>"

RUN apt-get update && apt-get install -y \
	geary \
	--no-install-recommends \
	&& rm -rf /var/lib/apt/lists/*

ENTRYPOINT [ "geary" ]


================================================
FILE: ghostscript/Dockerfile
================================================
FROM alpine:latest
LABEL maintainer "Jessie Frazelle <jess@linux.com>"

RUN apk --no-cache add \
	ghostscript

ENTRYPOINT ["gs"]


================================================
FILE: gimp/Dockerfile
================================================
# Run gimp in a contianer
#
# docker run -d \
#	-v /etc/localtime:/etc/localtime:ro \
#	-v /tmp/.X11-unix:/tmp/.X11-unix \
#	-e DISPLAY=unix$DISPLAY \
#	-v $HOME/Pictures:/root/Pictures \
#	--name gimp \
#	jess/gimp
#
FROM debian:bullseye-slim
LABEL maintainer "Jessie Frazelle <jess@linux.com>"

RUN apt-get update && apt-get install -y \
	gimp \
	--no-install-recommends \
	&& rm -rf /var/lib/apt/lists/*

ENTRYPOINT [ "gimp" ]


================================================
FILE: github-dev/Dockerfile
================================================
FROM golang:alpine
MAINTAINER Jessica Frazelle <jess@linux.com>

RUN	apk add --no-cache \
	bash \
	ca-certificates \
	curl \
	gcc \
	git \
	gnupg \
	jq \
	make \
	musl-dev \
	libseccomp-dev \
	linux-headers

RUN go get golang.org/x/lint/golint
RUN go get honnef.co/go/tools/cmd/staticcheck
# TODO: remove this eventually
RUN go get golang.org/x/crypto/ssh/terminal

COPY upload-assets /usr/bin/upload-assets
COPY release-email-notification /usr/bin/release-email-notification
COPY cleanup-pr-branch /usr/bin/cleanup-pr-branch


================================================
FILE: github-dev/cleanup-pr-branch
================================================
#!/bin/bash
set -e
set -o pipefail

if [[ -n "$TOKEN" ]]; then
	GITHUB_TOKEN=$TOKEN
fi

if [[ -z "$GITHUB_TOKEN" ]]; then
	echo "Set the GITHUB_TOKEN env variable."
	exit 1
fi

if [[ -z "$GITHUB_REPOSITORY" ]]; then
	echo "Set the GITHUB_REPOSITORY env variable."
	exit 1
fi

URI=https://api.github.com
API_VERSION=v3
API_HEADER="Accept: application/vnd.github.${API_VERSION}+json"
AUTH_HEADER="Authorization: token ${GITHUB_TOKEN}"

main(){
	action=$(jq --raw-output .action "$GITHUB_EVENT_PATH")
	merged=$(jq --raw-output .pull_request.merged "$GITHUB_EVENT_PATH")

	echo "action: $action merged: $merged"

	if [[ "$action" == "closed" ]] && [[ "$merged" == "true" ]]; then
		# delete the branch.
		ref=$(jq --raw-output .pull_request.head.ref "$GITHUB_EVENT_PATH")
		owner=$(jq --raw-output .pull_request.head.repo.owner.login "$GITHUB_EVENT_PATH")
		repo=$(jq --raw-output .pull_request.head.repo.name "$GITHUB_EVENT_PATH")

		if [[ "$ref" == "master" ]]; then
			# Never delete the master branch.
			echo "Will not delete master branch for ${owner}/${repo}, exiting."
			exit 0
		fi

		echo "Deleting branch ref $ref for owner ${owner}/${repo}..."
		curl -XDELETE -sSL \
			-H "${AUTH_HEADER}" \
			-H "${API_HEADER}" \
			"${URI}/repos/${owner}/${repo}/git/refs/heads/${ref}"

		echo "Branch delete success!"
	fi
}

main "$@"


================================================
FILE: github-dev/release-email-notification
================================================
#!/bin/bash
set -e
set -o pipefail
set -x

if [[ -z "$MAILGUN_API_KEY" ]]; then
	echo "Set the MAILGUN_API_KEY env variable."
	exit 1
fi

if [[ -n "$MAILGUN_DOMAIN" ]]; then
	MAILGUN_DOMAIN_NAME=$MAILGUN_DOMAIN
fi

if [[ -z "$MAILGUN_DOMAIN_NAME" ]]; then
	echo "Set the MAILGUN_DOMAIN_NAME env variable."
	exit 1
fi

if [[ -z "$TO_NAME" ]]; then
	echo "Set the TO_NAME env variable."
	exit 1
fi

if [[ -z "$TO_EMAIL" ]]; then
	echo "Set the TO_EMAIL env variable."
	exit 1
fi

curl -sSL --user "api:${MAILGUN_API_KEY}" \
	"https://api.mailgun.net/v3/${MAILGUN_DOMAIN_NAME}/messages" \
	-F 'from="Mailgun API <mailgun@'"${MAILGUN_DOMAIN_NAME}"'>"' \
	-F "to=${TO_NAME}" \
	-F "to=${TO_EMAIL}" \
	-F 'subject="[github action]: Release '"${GITHUB_REPOSITORY}"':'"${GITHUB_REF}"' uploaded"' \
	-F 'text="The release has been uploaded for https://github.com/'"${GITHUB_REPOSITORY}"'/releases"'


================================================
FILE: github-dev/upload-assets
================================================
#!/bin/bash

if [[ -n "$TOKEN" ]]; then
	GITHUB_TOKEN=$TOKEN
fi

if [[ -z "$GITHUB_TOKEN" ]]; then
	echo "Set the GITHUB_TOKEN env variable."
	exit 1
fi

if [[ -z "$GITHUB_REPOSITORY" ]]; then
	echo "Set the GITHUB_REPOSITORY env variable."
	exit 1
fi

if [[ -z "$GITHUB_REF" ]]; then
	echo "Set the GITHUB_REF env variable."
	exit 1
fi

URI=https://api.github.com
API_VERSION=v3
API_HEADER="Accept: application/vnd.github.${API_VERSION}+json"
AUTH_HEADER="Authorization: token ${GITHUB_TOKEN}"

main(){
	local files

	if [ "$#" -eq 0 ]; then
		echo "Must pass files to be uploaded..."
		exit 1
	fi
	files=( "$@" )

	# Validate the GitHub token.
	curl -o /dev/null -sSL -H "${AUTH_HEADER}" -H "${API_HEADER}" "${URI}/repos/${GITHUB_REPOSITORY}" || { echo "Error: Invalid repo, token or network issue!";  exit 1; }

	echo "Github ref: ${GITHUB_REF}"

	# Get the tags.
	tag_response=$(curl -sSL -H "${AUTH_HEADER}" -H "${API_HEADER}" "${URI}/repos/${GITHUB_REPOSITORY}/tags")

	tag_name=$(echo "$tag_response" | jq -e --raw-output .[0].name)

	# Get the latest release.
	latest_response=$(curl -sSL -H "${AUTH_HEADER}" -H "${API_HEADER}" "${URI}/repos/${GITHUB_REPOSITORY}/releases/latest")
	latest_release=$(echo "$latest_response" | jq -e --raw-output .tag_name)
	release_id=$(echo "$latest_response" | jq -e --raw-output .id)

	if [[ "$tag_name" != "$latest_release" ]] || [[ "$release_id" == "null" ]]; then
		# Create the release.
		echo "Creating release for tag name: ${tag_name}"
		response=$(curl -XPOST -sSL -H "${AUTH_HEADER}" -H "${API_HEADER}" "${URI}/repos/${GITHUB_REPOSITORY}/releases" --data '{"tag_name": "'"${tag_name}"'","name":"'"${tag_name}"'","draft":false,"prerelease":false}')
		release_id=$(echo "$response" | jq -e --raw-output .id)
	fi

	if [[ "$release_id" == "null" ]]; then
		echo "Release ID cannot be null."
		exit 1
	fi


	# Upload the files.
	echo "Uploading files: ${files[*]}"
	echo "For tag name: ${tag_name}"

	# shellcheck disable=SC2068
	for file in ${files[@]}; do
		filename=$(basename "$file")
		rp=$(realpath "$file")

		curl -sSL -H "${AUTH_HEADER}" \
			--data-binary @"$rp" \
			-H "Content-Type: application/octet-stream" \
			"https://uploads.github.com/repos/${GITHUB_REPOSITORY}/releases/${release_id}/assets?name=${filename}&access_token=${GITHUB_TOKEN}"

		echo "Successfully uploaded: ${rp}"
	done

	echo "Uploading assets to ${tag_name} complete!"
}

main "$@"


================================================
FILE: gitiles/Dockerfile
================================================
FROM l.gcr.io/google/bazel:latest
LABEL maintainer "Jessie Frazelle <jess@linux.com>"

# https://gerrit.googlesource.com/gitiles/
ENV GITILES_VERSION v0.4

RUN apt-get update && apt-get install -y \
	bash \
	ca-certificates \
	curl \
	git \
	openjdk-8-jdk \
	--no-install-recommends \
	&& rm -rf /var/lib/apt/lists/*

# install bazel
RUN set -x \
	&& git clone --depth 1 --branch "${GITILES_VERSION}" https://gerrit.googlesource.com/gitiles /usr/src/gitiles \
	&& ( \
		cd /usr/src/gitiles \
		&& bazel build java/com/google/gitiles/dev \
		&& cp -rL bazel-bin bin \
		&& rm -rf bazel-bin \
	)

COPY start.sh /usr/bin/start.sh

ENTRYPOINT [ "/usr/bin/start.sh" ]


================================================
FILE: gitiles/start.sh
================================================
#!/bin/bash
set -e

ROOT=/usr/src/gitiles
PROPERTIES=

if [ "x$1" != "x" ]; then
	PROPERTIES="--jvm_flag=-Dcom.google.gitiles.configPath=$1"
else
	PROPERTIES="--jvm_flag=-Dcom.google.gitiles.configPath=/gitfiles.config"
	cat > /gitfiles.config <<-EOF
	[gitiles]
		# Repositories placed here
		basePath = /home/git
		# Do not check they are exported
		exportAll = true
		# This URL will be displayed as clone URL. DO NOT FORGET TRAILING SLASH!
		baseGitUrl = ${BASE_GIT_URL}:
		# Title of site (doh)
		siteTitle  = Gitiles - ${SITE_TITLE}
		# I dunno why, but it is have to be configured.
		canonicalHostName = ${SITE_TITLE}
	[google]
		analyticsId = UA-${GA_ID}
	EOF
fi

PROPERTIES="$PROPERTIES --jvm_flag=-Dcom.google.gitiles.sourcePath=$ROOT"

# shellcheck disable=SC2086
exec "${ROOT}/bin/java/com/google/gitiles/dev/dev" $PROPERTIES


================================================
FILE: gitserver/Dockerfile
================================================
# Run a git server in a container.
#
# docker run --rm -it -p 1234:22 \
# 	-e DEBUG=true \
# 	-e "PUBKEY=$(cat ~/.ssh/id_ed25519.pub)" \
# 	--name gitserver \
# 	jess/gitserver
FROM alpine:latest
LABEL maintainer "Jessie Frazelle <jess@linux.com>"

ENV HOME /root

RUN apk --no-cache add \
	bash \
	git \
	openssh \
	&& sed -i "s/#PasswordAuthentication yes/PasswordAuthentication no/" /etc/ssh/sshd_config \
	&& sed -i "s/#PubkeyAuthentication yes/PubkeyAuthentication yes/" /etc/ssh/sshd_config \
	&& echo -e "AllowUsers git\n" >> /etc/ssh/sshd_config \
	&& echo -e "Port 22\n" >> /etc/ssh/sshd_config \
	&& addgroup git \
	&& adduser -D -S -s /usr/bin/git-shell -h /home/git -g git git \
	&& mkdir -p /home/git/.ssh \
	&& chown -R git:git /home/git \
	&& passwd -u git

ENV HOME /home/git
EXPOSE 22
WORKDIR $HOME

COPY ./start.sh /
COPY create_repo /usr/bin/create_repo

ENTRYPOINT ["/start.sh"]
CMD ["/usr/sbin/sshd", "-D", "-e", "-f", "/etc/ssh/sshd_config"]


================================================
FILE: gitserver/create_repo
================================================
#!/bin/bash
set -e
set -o pipefail

repo=$1
if [[ "$repo" != *.git ]]; then
	repo="${repo}.git"
fi
echo "Creating $repo"
(
cd "$HOME"
git init --bare "$repo"
chown -R git:git "$repo"
)


================================================
FILE: gitserver/start.sh
================================================
#!/bin/bash
set -e
set -o pipefail

[ "$DEBUG" == 'true' ] && set -x

DAEMON=sshd
HOSTKEY=/etc/ssh/ssh_host_ed25519_key

# create the host key if not already created
if [[ ! -f "${HOSTKEY}" ]]; then
	ssh-keygen -A
fi

mkdir -p "${HOME}/.ssh"
# shellcheck disable=SC1091
source /etc/profile
[ "$PUBKEY" ] && echo "$PUBKEY" > "${HOME}/.ssh/authorized_keys"

chown -R git:git "${HOME}"
chmod -R 755 "${HOME}"

# Fix permissions, if writable
if [[ -w "${HOME}/.ssh" ]]; then
    chown git:git "${HOME}/.ssh" && chmod 700 "${HOME}/.ssh/"
fi
if [[ -w "${HOME}/.ssh/authorized_keys" ]]; then
    chown git:git "${HOME}/.ssh/authorized_keys"
    chmod 600 "${HOME}/.ssh/authorized_keys"
fi

# Warn if no config
if [[ ! -e "${HOME}/.ssh/authorized_keys" ]]; then
  echo "WARNING: No SSH authorized_keys found for git"
fi

# set the default shell
mkdir -p "${HOME}/git-shell-commands"
cat > "${HOME}/git-shell-commands/no-interactive-login" <<\EOF
#!/bin/sh
printf '%s\n' "Hi $USER! You've successfully authenticated, but I do not"
printf '%s\n' "provide interactive shell access."
exit 128
EOF
chmod +x "${HOME}/git-shell-commands/no-interactive-login"

stop() {
    echo "Received SIGINT or SIGTERM. Shutting down $DAEMON"
    # Get PID
    pid=$(cat "/var/run/${DAEMON}/${DAEMON}.pid")
    # Set TERM
    kill -SIGTERM "${pid}"
    # Wait for exit
    wait "${pid}"
    # All done.
    echo "Done."
}

# shellcheck disable=SC2145
echo "Running $@"
if [[ "$(basename "$1")" == "$DAEMON" ]]; then
    trap stop SIGINT SIGTERM
	# shellcheck disable=SC2068
    $@ &
    pid="$!"
    mkdir -p "/var/run/${DAEMON}" && echo "${pid}" > "/var/run/${DAEMON}/${DAEMON}.pid"
    wait "${pid}" && exit $?
else
    exec "$@"
fi


================================================
FILE: gitsome/Dockerfile
================================================
# Run gitsome command line tool:
# https://github.com/donnemartin/gitsome
#
# Usage:
# 	docker run --rm -it \
# 		-v ${HOME}/.gitsomeconfig:/home/anon/.gitsomeconfig \
# 		-v ${HOME}/.gitsomeconfigurl:/home/anon/.gitsomeconfigurl \
#		r.j3ss.co/gitsome
#
FROM python:3.5-alpine

RUN apk add --no-cache \
	bash

RUN pip3 install gitsome

ENV HOME /home/anon
RUN adduser -S anon \
	&& chown -R anon $HOME

WORKDIR $HOME
USER anon

ENTRYPOINT ["gitsome"]


================================================
FILE: gixy/Dockerfile
================================================
# Run gixy command line tool for static nginx analysis:
# https://github.com/yandex/gixy
#
# Usage:
# 	docker run --rm -it \
# 		-v /etc/nginx:/etc/nginx \
#		r.j3ss.co/gixy /etc/nginx/nginx.conf
#
FROM python:2-alpine

RUN pip install gixy

ENTRYPOINT ["gixy"]


================================================
FILE: glxgears/Dockerfile
================================================
# To use:
#	docker run -v /tmp/.X11-unix:/tmp/.X11-unix \
#		-e DISPLAY=unix$DISPLAY \
#		--device /dev/dri \
#		jess/glxgears
#

# Base docker image
FROM debian:bullseye-slim
LABEL maintainer "Jessie Frazelle <jess@linux.com>"

# Install all the things
RUN apt-get update && apt-get install -y \
	mesa-utils \
	--no-install-recommends \
	&& rm -rf /var/lib/apt/lists/*

ENV LIBGL_DEBUG verbose

ENTRYPOINT [ "glxgears" ]


================================================
FILE: gmail-britta/Dockerfile
================================================
FROM	ruby:alpine
LABEL maintainer "Jessie Frazelle <jess@linux.com>"

RUN apk add --no-cache \
	coreutils

RUN	set -x \
	&& apk add --no-cache --virtual .build-deps \
	build-base \
	&& gem install gmail-britta --no-document \
	&& apk del .build-deps


================================================
FILE: gnuplot/Dockerfile
================================================
FROM alpine:latest
LABEL maintainer "Jessie Frazelle <jess@linux.com>"

RUN apk --no-cache add \
	--repository http://dl-cdn.alpinelinux.org/alpine/edge/testing/ \
	gnuplot

ENTRYPOINT ["gnuplot"]


================================================
FILE: golinks/Dockerfile
================================================
FROM golang:alpine as builder
LABEL maintainer "Jessie Frazelle <jess@linux.com>"

RUN	apk --no-cache add \
	ca-certificates \
	git

ENV PATH /go/bin:/usr/local/go/bin:$PATH
ENV GOPATH /go

RUN go get github.com/kellegous/go || true \
	&& cd /go/src/github.com/kellegous/go \
	&& go build ./cmd/go \
	&& mv go /usr/bin/go


FROM alpine:latest

COPY --from=builder /usr/bin/go /usr/bin/go
COPY --from=builder /etc/ssl/certs/ /etc/ssl/certs

ENTRYPOINT [ "go" ]


================================================
FILE: gparted/Dockerfile
================================================
# DESCRIPTION:	  Create gparted container with its dependencies
# AUTHOR:		  Jessie Frazelle <jess@linux.com>
# COMMENTS:
#	This file describes how to build a gparted container with all
#	dependencies installed. It uses native X11 unix socket.
#	Tested on Debian Jessie
# USAGE:
#	# Download gparted Dockerfile
#	wget https://raw.githubusercontent.com/jessfraz/dockerfiles/master/gparted/Dockerfile
#
#	# Build gparted image
#	docker build -t gparted .
#
#	docker run -v /tmp/.X11-unix:/tmp/.X11-unix \
#		--device=/dev/sda:/dev/sda \
#		--device=/dev/mem:/dev/mem \
#		--cap-add SYS_RAWIO \
#		-e DISPLAY=unix$DISPLAY gparted
#

# Base docker image
FROM debian:bullseye-slim
LABEL maintainer "Jessie Frazelle <jess@linux.com>"

# Install Gparted and its dependencies
RUN apt-get update && apt-get install -y \
	dosfstools \
	gparted \
	libcanberra-gtk-module \
	procps \
	--no-install-recommends \
	&& rm -rf /var/lib/apt/lists/*

# Autorun gparted
CMD ["/usr/sbin/gparted"]


================================================
FILE: guetzli/Dockerfile
================================================
# guetzli
#
# docker run --rm -it \
# 	-v ${PWD}:/tmp \
# 	r.j3ss.co/guetzli:latest \
# 	--verbose /tmp/example.jpg /tmp/example.compressed.jpg

FROM alpine:latest
LABEL maintainer "Christian Koep <christiankoep@gmail.com>"

RUN apk --no-cache add \
		libpng \
		libstdc++ \
		libgcc

ENV GUETZLI_VERSION v1.0.1
ENV APPDIR /usr/src/guetzli

RUN buildDeps=' \
    	g++ \
		git \
		libpng-dev \
		make \
	' \
	set -x \
	&& apk --no-cache add $buildDeps \
	&& git clone --depth 1 --branch "${GUETZLI_VERSION}" "https://github.com/google/guetzli.git" "${APPDIR}" \
	&& ( \
		cd "${APPDIR}" \
		&& make \
		&& mv "${APPDIR}/bin/Release/guetzli" /usr/local/bin/guetzli \
	) \
	&& apk del $buildDeps \
	&& rm -rf "${APPDIR}" \
	&& echo "Build complete."

ENTRYPOINT [ "/usr/local/bin/guetzli" ]


================================================
FILE: hollywood/Dockerfile
================================================
FROM ubuntu:16.04
LABEL maintainer "Jessie Frazelle <jess@linux.com>"

RUN apt-get update && apt-get install -y \
	software-properties-common \
	--no-install-recommends && \
	add-apt-repository ppa:hollywood/ppa && \
	apt-get update && \
	apt-get install -y \
	byobu \
	hollywood \
	locate \
	mlocate \
	--no-install-recommends \
	&& rm -rf /var/lib/apt/lists/* \
	&& updatedb

ENV HOME /home/user
RUN useradd --create-home --home-dir $HOME user \
	&& chown -R user:user $HOME

WORKDIR $HOME
USER user

CMD [ "hollywood" ]


================================================
FILE: htop/Dockerfile
================================================
# htop in a container
#
# docker run --rm -it \
# 	--pid host \
# 	jess/htop
#
FROM alpine:latest
LABEL maintainer "Jessie Frazelle <jess@linux.com>"

RUN apk --no-cache add \
	htop

CMD [ "htop" ]


================================================
FILE: htpasswd/Dockerfile
================================================
FROM alpine:latest
LABEL maintainer "Jessie Frazelle <jess@linux.com>"

RUN apk add --no-cache \
	apache2-utils

ENTRYPOINT [ "htpasswd" ]


================================================
FILE: httpbin/Dockerfile
================================================
# Run HTTPBin in a container
#
# USAGE
# 
# docker run -d \
#	-p 8080:8080 \
#	--name httpbin \
#	jess/httpbin
#

FROM python:3-alpine

RUN apk add --no-cache --virtual .build-deps \
		build-base \
		libffi-dev \
	&& pip3 install --no-cache-dir  \
		gevent \
		gunicorn \
		httpbin \
	&& apk del .build-deps

CMD ["gunicorn", "-b", "0.0.0.0:8080", "httpbin:app", "-k", "gevent"]


================================================
FILE: httpie/Dockerfile
================================================
FROM alpine:latest
LABEL maintainer "Jessie Frazelle <jess@linux.com>"

RUN apk --no-cache add \
	ca-certificates \
	python \
	py2-pip \
	&& pip install httpie httpie-unixsocket

ENTRYPOINT [ "http" ]


================================================
FILE: iceweasel/Dockerfile
================================================
FROM debian:bullseye-slim
LABEL maintainer "Jessie Frazelle <jess@linux.com>"

RUN apt-get update && apt-get install -y \
	hicolor-icon-theme \
	firefox-esr \
	libgl1-mesa-dri \
	libgl1-mesa-glx \
	--no-install-recommends \
	&& rm -rf /var/lib/apt/lists/*

COPY local.conf /etc/fonts/local.conf

ENTRYPOINT [ "firefox" ]


================================================
FILE: iceweasel/local.conf
================================================
<?xml version='1.0'?>
<!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
<fontconfig>
<match target="font">
<edit mode="assign" name="rgba">
<const>rgb</const>
</edit>
</match>
<match target="font">
<edit mode="assign" name="hinting">
<bool>true</bool>
</edit>
</match>
<match target="font">
<edit mode="assign" name="hintstyle">
<const>hintslight</const>
</edit>
</match>
<match target="font">
<edit mode="assign" name="antialias">
<bool>true</bool>
</edit>
</match>
<match target="font">
<edit mode="assign" name="lcdfilter">
<const>lcddefault</const>
</edit>
</match>
<match target="font">
<edit name="embeddedbitmap" mode="assign">
<bool>false</bool>
</edit>
</match>
</fontconfig>


================================================
FILE: imagemagick/Dockerfile
================================================
FROM alpine:latest
LABEL maintainer "Jessie Frazelle <jess@linux.com>"

RUN apk --no-cache add \
	imagemagick

CMD [ "echo", "Use one of the following commands [ animate | compare | composite | conjure | convert | display | identify | import | mogrify | montage | stream ]" ]


================================================
FILE: imagemin/Dockerfile
================================================
# Run imagemin in a container:
#
# docker run --rm -it \
#	-v /etc/localtime:/etc/localtime:ro \
#	-v $HOME/Pictures:/root/Pictures \
#	--entrypoint bash \
#	jess/imagemin
#
FROM node:alpine
LABEL maintainer "Jessie Frazelle <jess@linux.com>"

RUN apk --no-cache add \
	file \
	libpng

RUN set -x \
	&& apk add --no-cache --virtual .build-deps \
		autoconf \
		automake \
		build-base \
		libpng-dev \
		nasm \
	&& npm install --global imagemin-cli \
	&& apk del .build-deps

CMD [ "imagemin", "--help" ]


================================================
FILE: inkscape/Dockerfile
================================================
# Run inkscape in a container
#
# docker run -v /tmp/.X11-unix:/tmp/.X11-unix \
#	-v /inkscape/:/workspace \
#	-e DISPLAY=unix$DISPLAY \
#	jess/inkscape
#
FROM ubuntu:16.04
LABEL maintainer "Daniel Romero <infoslack@gmail.com>"

ENV DEBIAN_FRONTEND noninteractive

RUN apt-get update && apt-get install -y \
	python-software-properties \
	software-properties-common

RUN add-apt-repository ppa:inkscape.dev/stable && \
	apt-get update && apt-get install -y \
	inkscape \
	--no-install-recommends \
	&& rm -rf /var/lib/apt/lists/*

VOLUME /workspace
WORKDIR /workspace

ENTRYPOINT [ "inkscape" ]


================================================
FILE: irssi/Dockerfile
================================================
FROM alpine:latest

RUN apk --no-cache add \
	ca-certificates \
	perl-datetime \
	perl-timedate

ENV HOME /home/user
RUN adduser -u 1001 -D user \
	&& mkdir -p $HOME/.irssi \
	&& chown -R user:user $HOME

ENV LANG C.UTF-8

ENV IRSSI_VERSION 1.2.2
# https://otr.cypherpunks.ca/index.php#downloads
ENV LIB_OTR_VERSION 4.1.1
# https://github.com/cryptodotis/irssi-otr/releases
ENV IRSSI_OTR_VERSION 1.0.2

RUN set -x \
	&& apk add --no-cache --virtual .build-deps \
		autoconf \
		automake \
		curl \
		gcc \
		glib-dev \
		gnupg \
		libc-dev \
		libgcrypt-dev \
		libtool \
		lynx \
		make \
		ncurses-dev \
		openssl-dev \
		perl-dev \
		pkgconf \
		tar \
		xz \
	&& curl -sSL "https://github.com/irssi/irssi/releases/download/${IRSSI_VERSION}/irssi-${IRSSI_VERSION}.tar.xz" -o /tmp/irssi.tar.xz \
	&& curl -sSL "https://github.com/irssi/irssi/releases/download/${IRSSI_VERSION}/irssi-${IRSSI_VERSION}.tar.xz.asc" -o /tmp/irssi.tar.xz.asc \
	&& export GNUPGHOME="$(mktemp -d)" \
# gpg: key DDBEF0E1: public key "The Irssi project <staff@irssi.org>" imported
	&& gpg --no-tty --keyserver ha.pool.sks-keyservers.net --recv-keys 7EE65E3082A5FB06AC7C368D00CCB587DDBEF0E1 \
	&& gpg --batch --verify /tmp/irssi.tar.xz.asc /tmp/irssi.tar.xz \
	&& rm -rf "$GNUPGHOME" /tmp/irssi.tar.xz.asc \
	&& mkdir -p /usr/src \
	&& tar -xJf /tmp/irssi.tar.xz -C /usr/src \
	&& rm /tmp/irssi.tar.xz \
	&& ( \
		cd /usr/src/irssi-$IRSSI_VERSION \
		&& ./configure \
			--enable-true-color \
			--with-bot \
			--with-proxy \
			--with-socks \
			--prefix=/usr \
		&& make -j$(getconf _NPROCESSORS_ONLN) \
		&& make install \
	) \
	&& curl -sSL "https://otr.cypherpunks.ca/libotr-${LIB_OTR_VERSION}.tar.gz" -o /tmp/libotr.tar.gz \
	&& curl -sSL "https://otr.cypherpunks.ca/libotr-${LIB_OTR_VERSION}.tar.gz.asc" -o /tmp/libotr.tar.gz.asc \
	&& export GNUPGHOME="$(mktemp -d)" \
# gpg: key 42C2ABAD: public key "OTR Dev Team (Signing Key) <otr@cypherpunks.ca>" imported
	&& curl -sSL https://otr.cypherpunks.ca/gpgkey.asc | gpg --no-tty --import \
	&& gpg --batch --verify /tmp/libotr.tar.gz.asc /tmp/libotr.tar.gz \
	&& rm -rf "$GNUPGHOME" /tmp/libotr.tar.gz.asc \
	&& mkdir -p /usr/src/libotr \
	&& tar -xzf /tmp/libotr.tar.gz -C /usr/src/libotr --strip-components 1 \
	&& rm /tmp/libotr.tar.gz \
	&& ( \
		cd /usr/src/libotr \
		&& ./configure \
			--with-pic \
			--prefix=/usr \
		&& make \
		&& make install \
	) \
	&& mkdir -p /usr/src/irssi-otr \
	&& curl -sSL "https://github.com/cryptodotis/irssi-otr/archive/v${IRSSI_OTR_VERSION}.tar.gz" -o /tmp/irssi-otr.tar.gz \
	&& mkdir -p /usr/src/irssi-otr \
	&& tar -xf /tmp/irssi-otr.tar.gz -C /usr/src/irssi-otr --strip-components 1 \
	&& rm -f /tmp/irssi-otr.tar.gz \
	&& ( \
		cd /usr/src/irssi-otr \
		&& ./bootstrap \
		&& ./configure \
			--prefix=/usr \
		&& make \
		&& make install \
	) \
	&& rm -rf /usr/src/irssi-$IRSSI_VERSION \
	&& rm -rf /usr/src/libotr \
	&& rm -rf /usr/src/irssi-otr \
	&& runDeps="$( \
		scanelf --needed --nobanner --recursive /usr \
			| awk '{ gsub(/,/, "\nso:", $2); print "so:" $2 }' \
			| sort -u \
			| xargs -r apk info --installed \
			| sort -u \
	)" \
	&& apk add --no-cache --virtual .irssi-rundeps $runDeps perl-libwww \
	&& apk del .build-deps

WORKDIR $HOME
VOLUME $HOME/.irssi

USER user
CMD ["irssi"]


================================================
FILE: john/Dockerfile
================================================
FROM alpine:latest
LABEL maintainer "Jessie Frazelle <jess@linux.com>"

RUN apk add --no-cache \
	ca-certificates \
	gmp \
	libgomp

RUN set -x \
	&& apk add --no-cache --virtual .build-deps \
		build-base \
		gcc \
		git \
		gmp-dev \
		krb5-dev \
		libressl-dev \
		make \
		perl \
	&& git clone --depth 1 https://github.com/magnumripper/JohnTheRipper.git /usr/src/johntheripper \
	&& ( \
		cd /usr/src/johntheripper/src \
		&& ./configure || cat config.log \
		&& make \
		&& cp -r ../run/* /usr/local/bin/ \
	) \
	&& rm -rf /usr/src/johntheripper \
	&& apk del .build-deps

COPY john.ini /root/john.ini
COPY passwd.lst /root/passwd.lst

WORKDIR /root

ENTRYPOINT [ "john" ]


================================================
FILE: john/john.ini
================================================
#
# This file is part of John the Ripper password cracker,
# Copyright (c) 1996-98 by Solar Designer
#

[Options]
# Wordlist file name, to be used in batch mode
Wordfile = ~/passwd.lst
# Use idle cycles only
Idle = N
# Crash recovery file saving delay in seconds
Save = 600
# Beep when a password is found (who needs this anyway?)
Beep = N


================================================
FILE: john/passwd.lst
================================================
_
!@#$%
!@#$%^
!@#$%^&
!@#$%^&*
!@#$%^&*
!@#$%^&
!@#$%^
!@#$%
@#$%^&
@#$%^&
*

0000
00000
000000
000000
00000000
00000000
0007
0007
007
007
007007
007007
010203
012345
0123456
0123456789
0246
0249
0852
098765
0987654321
1
1
101010
102030
1022
1022
10sne1
10sne1
1111
11111
111111
111111
11111111
112233
11235813
1212
121212
121212
1213
1214
1225
1225
123
123
123123
123123
123123123
123321
1234
1234
12345
12345
123456
123456
1234567
1234567
12345678
12345678
123456789
1234567890
12345678910
123456a
1234qwer
1234qwer
123654
123789
123abc
123abc
123go
123go
123qwe
1313
1313
131313
131313
1316
1332
13579
13579
1412
141414
1430
14430
147258
147258369
147852
147852369
151515
159357
159753
1701d
1701d
171717
1818
181818
1911
1928
1928
1948
1950
1951
1952
1953
1955
1956
1960
1964
1969
1973
1975
1977
1978
1991
1996
1998
1a2b3c
1a2b3c
1chris
1kitty
1p2o3i
1q2w3e
1q2w3e
1q2w3e4r
1qaz2wsx
1qw23e
1qw23e
1sanjose
2000
2001
2020
202020
2112
2112
21122112
21122112
212121
22
2200
2222
2222
222222
2252
232323
242424
246810
252525
2580
2kids
2welcome
3010
3112
3141
333
333333
3533
369
369
3bears
4055
4444
4444
444444
456123
456789
4788
4854
4runner
4runner
5050
50cent
5201314
5252
5252
54321
54321
5555
5555
55555
555555
5683
5683
57chevy
6262
6301
654321
654321
666666
666666
6969
6969
696969
696969
741852
741852963
777
777
7777
7777
777777
7777777
789456
789456123
7dwarfs
80486
8675309
8675309
87654321
888888
888888
88888888
90210
90210
911
911
92072
987654
987654321
999999
99999999
99999999
999999999
a
a
a12345
a12345
a123456
a1b2c3
a1b2c3
a1b2c3d4
a1b2c3d4
aa
aaa
aaa
aaaa
aaaaaa
aaaaaa
Aaaaaa
aaliyah
aardvark
aaron
aaron
abacab
abbott
abby
abby
abc
abc
abc123
abc123
ABC123
ABC123
abcd
abcd
abcd123
abcd1234
abcd1234
abcde
abcde
abcdef
abcdef
Abcdef
Abcdef
abcdefg
abcdefg
Abcdefg
abigail
abigail
absolut
absolut
access
access
accord
account
ace
acropolis
action
action
Action
active
active
acura
acura
adam
adam
adg
adi
adidas
adidas
Adidas
admin
admin1
adrian
adrian
adriana
adrock
advil
aeh
aerobics
africa
agent
Aggies
Aikman
airborne
Airhead
airwolf
aki123
alaska
alaska
Alaska
albert
albert
Albert
alberto
alejandra
alejandro
alex
alex
alex1
alex1
alexande
alexander
alexandr
alexandr
alexandra
alexis
alexis
Alexis
alfaro
alfred
alfred
alfredo
ali
alice
alice
alice1
alicia
Alicia
alien
aliens
aliens
alina
aline
alison
alison
allegro
allen
allen
allison
allison
allo
allo
allstate
aloha
alpha
alpha
Alpha
alpha1
alpha1
alpine
alpine
altamira
althea
altima
altima1
alyssa
Alyssa
amanda
amanda
Amanda
amanda1
amanda1
amazing
amber
amber
amelia
amelie
amelie
america
America
america7
Amiga
amigas
amigos
amistad
amorcito
amores
amour
amour
amy
amy
anaconda
anamaria
anders
anderson
anderson
andre
andre
andre1
andrea
andrea
Andrea
andrea1
andreea
andrei
andres
andrew
andrew!
andrew
Andrew
Andrew
andrew1
andromeda
andy
andy
angel
angel
angel1
angela
angela
Angela
Angela1
angeles
angelica
angelina
angelito
angelo
angels
angels
angie
angie
angie1
angus
angus
animal
animal
Animal
Animals
Animals
anita
ann
anna
anna
anne
anne
anneli
annette
annie
annie
antares
anthony
anthony
Anthony
Anthony
anthony1
antonio
anything
apache
apache
apollo
apollo
apollo13
apollo13
apple
apple
apple1
apple1
apple2
applepie
apples
apples
Apples
april
april
aptiva
aqua
aquarius
aragorn
archie
archie
Archie
Arctic
ariana
ariane
ariane
ariel
ariel
Ariel
arizona
arizona
arlene
armando
arnold
arrow
arsenal
artemis
arthur
arthur
Arthur
artist
artist
arturo
asdf
asdf
asdf1234
asdfasdf
asdfg
asdfg
asdfgh
asdfgh
Asdfgh
Asdfgh
asdfghjk
asdfghjk
asdfghjkl
asdfjkl
asdfjkl;
asdfjkl;
asdfjkl
asdf;lkj
ashlee
ashley
ashley
Ashley
ashley1
ashraf
ashton
aspen
aspen
ass
ass
asshole
asshole
Asshole
assmunch
asterix
asterix
ath
athena
athena
attila
attila
august
august
August
austin
austin
Austin
Author
autumn
avalon
avalon
avatar
Avatar
avenger
avenir
awesome
awesome
Awesome
ayelet
aylmer
aylmer
babes
Babies
baby
baby
babyblue
babyboo
babyboy
babydoll
babyface
babygirl
babygirl1
babygurl
babyko
babylon5
babylon5
babylove
bach
bach
backup
badboy
Badboy
badger
badger
badgirl
bailey
bailey
Bailey
Bailey
baller
Balls
bambam
bambi
bamboo
bamboo
banana
banana
Banana
bananas
Bananas
banane
bandit
bandit
Bandit
baraka
barbara
barbara
Barbara
barbie
Barbie
barcelona
barn
barney
barney
Barney
barney1
barnyard
barrett
barry
barry
bart
bartman
Basebal
baseball
baseball
basf
basf
basil
basil
basket
basket
baskeT
Basket
Basketb
basketba
Basketba
basketball
bass
Bastard
Bastard
batista
batman
batman
Batman
batman1
bball
beaches
beagle
beagle
beaner
beaner
Beaner
beanie
beanie
beans
bear
bear
bears
bears
beast
beasty
beatles
beatles
Beatles
beatrice
beatriz
beautifu
beautiful
beauty
beaver
beaver
Beaver
beavis
beavis
Beavis
Beavis
beavis1
bebe
bebita
becca
beckham
beer
beer
belgium
belize
bella
belle
belle
belmont
ben
benfica
benjamin
benjamin
benji
benny
benny
benoit
benoit
benson
benson
beowulf
bernard
bernard
bernardo
bernie
bernie
berry
bertha
bertha
beryl
best
bestfriend
bestfriends
beta
betacam
betsy
betty
betty
bettyboop
beyonce
bfi
bharat
bhebhe
bianca
bichon
bigal
bigben
bigbird
bigbird
BigBird
bigboss
bigdog
bigdog
Bigdog
Bigfoot
biggles
bigmac
bigmac
bigman
bigman
bigred
bigred
biker
bilbo
bilbo
bill
bill
billabong
bills
billy
billy
billy1
bimmer
bingo
bingo
binky
binky
biochem
biology
biology
Biology
bird
bird
bird33
bird33
birdie
birdie
birdy
birthday
biscuit
bishop
Bismillah
bitch
bitch
bitch1
biteme
biteme
Biteme
bitter
biz
blabla
black
black
Blackie
blackjack
blah
blahblah
blanche
Blaster
blazer
blazer
Blazer
blessed
blessing
blinds
blink182
bliss
blitz
blizzard
blizzard
blonde
blonde
blondie
blondie
Blondie
blood
blowfish
blowfish
blowjob
blowme
Blowme
blue
blue
bluebird
bluebird
blueeyes
bluefish
bluejean
blues
bluesky
bluesky
bmw
bmw
boat
bob
bob
bobby
bobby
bobcat
bobcat
bogart
bogey
bogus
bombay
bond007
bond007
Bond007
Bond007
Boner
bonita
bonjour
bonjour
bonnie
bonnie
Bonnie
Bonzo
boobie
booboo
booboo
Booboo
Booboo
booger
booger
Booger
boogie
boogie
Bookit
boomer
boomer
Boomer
booster
booster
boots
boots
bootsie
bootsie
boris
boris
bosco
boss
boss
boston
boston
Boston
Boston
boulder
bourbon
Bowling
bowwow
boxer
boxers
bozo
bozo
bradley
bradley
Bradley
brain
branch
brandi
Brandi
brandon
brandon
Brandon
brandon1
brandy
brandy
Brandy
Brasil
braves
braves
Braves
brazil
Brazil
brenda
brenda
Brenda
brent
brewster
brewster
brian
brian
brianna
bridge
bridge
bridges
bridges
bright
bright
britain
britney
brittany
Broadway
broken
broker
bronco
Broncos
bronte
brooke
brooke
brooklyn
brother
Browns
bruce
bruce
bruno
brutus
brutus
bryan
bubba
bubba
Bubba
bubba1
bubba1
bubble
bubblegum
bubbles
bubbles
Bubbles
bubbles1
buck
buck
bucks
buddha
Buddha
buddy
buddy
buddy1
budgie
buffalo
buffalo
Buffalo
buffett
buffy
buffy
bugs
bugsy
bull
bull
bulldog
bulldog
bullet
bullet
bulls
bullshit
bullshit
bunny
bunny
burns
burton
business
business
buster
buster
Buster
butch
butch
butler
butler
butter
buttercup
butterfly
butterfly1
butthead
butthead
Butthead
button
button
Button
buttons
buttons
Buttons
buzz
buzz
byron
byteme
byteme
c00per
cactus
cactus
caesar
caesar
caitlin
caitlin
calendar
calgary
californ
california
calvin
calvin
Calvin
calvin1
camaro
camaro
Camaro
camay
camel
camera
camera
cameron
camila
camille
campbell
campbell
camping
camping
canada
canada
Canada
canced
cancer
Cancer
candy
candy
canela
canela
cannon
cannon
cannonda
cannondale
canon
canon
cantik
capricorn
captain
captain
car
carbon
cardinal
cardinal
Cardinal
carebear
carl
carl
carlitos
carlos
carlos
Carlos
carmen
carmen
carnage
carol
carol
Carol
Carol
carol1
carole
carole
carolina
carolina
caroline
caroline
carolyn
carrie
carrie
Carrie
carrot
carter
cascade
cascade
casey
casey
Casio
casper
casper
Casper
cassandra
cassie
cassie
Cassie
castle
castle
cat
cat
catalina
catalog
catalog
catch22
catdog
catfish
catfish
catherine
cathy
catnip
cats
cats
catwoman
cccccc
cccccc
cecile
cecilia
cedic
celeste
celica
celica
celine
celine
celtic
Celtics
Celtics
cement
center
center
Center
cesar
cesar
cessna
cfi
cfj
cgj
chacha
chad
chainsaw
challeng
challenge
chameleon
champion
champion
Champs
Champs
chance
chance
chandler
chanel
chanel
chang
change
changeit
changeme
changeme
Changeme
Changeme
ChangeMe
ChangeMe
chantal
chaos
chaos
chapman
chapman
charger
charity
charity
charles
charles
Charles
charlie
charlie
Charlie
Charlie
charlie1
charlie1
charlott
charlotte
charmed
chat
cheche
cheerleader
cheese
cheese
Cheese
chelsea
chelsea
Chelsea
chelsea1
cherry
cherry
cheryl
cheryl
Cheryl
chess
chester
Chester
chester1
chester1
chevy
chevy
Chevy
Chevy1
cheyenne
chiara
chicago
chicago
Chicago
chichi
chicken
chicken
Chicken
chico
chico
chiefs
Chiefs
china
china
chinacat
chinook
chip
chip
Chipper
chiquita
chiquita
chivas
chloe
chloe
chocolat
chocolat
chocolate
chouette
chris
chris
Chris
Chris
chris1
chris1
chris123
chrisbrown
Chrissy
christ
Christ
christ1
christia
christia
christian
christin
christin
christina
christine
christmas
christop
Christop
christoph
christopher
christy
christy
chronos
chubby
chuck
chuck
Chucky
church
church
cicero
cinder
cinder
cinderella
Cindi
cindy
cindy
cindy1
cinema
circuit
cirque
cirrus
civic
civil
claire
claire
clancy
clancy
clapton
clark
clark
clarkson
class
class
classroo
classroom
claude
claude
claudel
claudia
claudia
Cleaner
cleo
cliff
clipper
clipper
clock
cloclo
cloclo
Clover
clueless
cobain
cobra
cobra
cocacola
cocacola
coco
coco
cody
coffee
coffee
Coffee
coke
coke
colette
colleen
colleen
Colleen
college
college
colombia
color
colorado
colorado
colors
colt45
coltrane
coltrane
columbia
columbia
comet
commander
#!comment:
#!comment: Common passwords, compiled by Solar Designer.
#!comment: For more wordlists, see http://www.openwall.com/wordlists/
#!comment: in 1996 through 2011.  It is assumed to be in the public domain.
#!comment: Last update: 2011/11/20 (3546 entries)
#!comment: occurred in 2006 through 2010.
#!comment: of "top N passwords" from major community website compromises that
#!comment: revised to also include common website passwords from public lists
#!comment: systems in mid-1990's, sorted for decreasing number of occurrences
#!comment: (that is, more common passwords are listed first).  It has been
#!comment: This list has been compiled by Solar Designer of Openwall Project
#!comment: This list is based on passwords most commonly seen on a set of Unix
compaq
compaq
Compaq
compton
compton
Compute
computer
computer
Computer
Computer
concept
concept
concorde
confused
connect
connect
connie
connie
Connie
connor
conrad
conrad
content
control
control
cook
cookie
cookie
Cookie
cookie1
cookies
cookies
cooking
cool
cool
coolbean
Coolman
coolness
cooper
cooper
Cooper
cooter
copper
copper
Copper
cora
corazon
cordelia
corky
cornflake
corona
corona
corrado
corrado
corvette
corwin
corwin
cosmo
cosmos
cosmos
cougar
cougar
Cougar
Cougar
cougars
cougars
country
country
Country
courier
courtney
courtney
cowboy
cowboy
Cowboy
COWBOY
cowboys
cowboys
Cowboys
cows
coyote
coyote
crack1
cracker
cracker
Cracker
craig
craig
crapp
crawford
crawford
crazy
creative
creative
Creative
crescent
cricket
cricket
Cricket
cristian
cristina
cross
crow
crow
crowley
cruise
cruise
crusader
crystal
crystal
cthulhu
cuda
cuddles
cuddles
cuervo
cunningham
cunt
cupcake
current
curtis
curtis
Curtis
Curtis
cuteako
cuteme
cutie
cutie
cutiepie
cutlass
cyber
cyclone
cyclone
cynthia
cynthia
cyrano
cyrano
daddy
daddy
daddy1
daddysgirl
daedalus
dagger
dagger1
daily
daisie
daisy
daisy
dakota
dakota
Dakota
dale
dallas
dallas
Dallas
damian
dammit
dan
dan
dana
dance
dance
dancer
dancer
dancing
daniel
daniel
Daniel
Daniel
daniel1
daniela
danielle
danielle
danny
danny
daphne
dark1
darkangel
Darkman
darkness
darkstar
darling
darren
darren
darryl
darwin
darwin
Darwin
dasha
dasha
database
database
dave
dave
david
david
david1
david1
davids
dawn
dawn
daytek
daytek
dead
dead
deadhead
deadhead
dean
dean
death
Death
debbie
debbie
deborah
december
december
decker
deedee
deedee
deeznuts
Defense
delano
delete
delfin
deliver
deliver
delta
delta
demo
demo
demon
denali
denali
denis
denise
denise
Denise
Denise
dennis
dennis
Dennis
denny
Denver
depeche
depeche
derek
derek
desert
design
design
desiree
deskjet
destiny
detroit
detroit
Detroit
deutsch
deutsch
devil
devine
devon
dexter
dexter
Dexter
dgj
dharma
diablo
diablo
diamond
diamond
diamonds
diana
diana
diane
diane
dianne
dickens
dickhead
dickhead
diego
diesel
digger
Digger
digital
digital
Digital
digital1
dilbert
dilbert
dillweed
dinamo
dipper
direct1
director
director
dirk
dirk
disco
disney
disney
Disney
dixie
dixie
dixon
doc
doc
doctor
doctor
Doctor
dodger
dodger
dodgers
dodgers
dog
dog
dogbert
dogbert
Doggie
doggy
Doggy
doitnow
dollar
dollars
dollars
dolly
dolphin
dolphin
Dolphin
dolphins
dolphins
dominic
dominic
dominique
domino
domino
don
don
donald
donald
donkey
donkey
donna
donna
dontknow
Doobie
doogie
doogie
dookie
dookie
Dookie
doom
doom
doom2
doom2
doors
dork
dorothy
dorothy
Dorothy
doudou
doug
doug
dougie
dougie
douglas
douglas
downtown
draft
dragon
dragon
Dragon
Dragon
DRAGON
dragon1
dragon1
dragonfl
dragonfly
Dream
dreamer
dreamer
dreams
dreams
Dreams
driver
Drizzt
drowssap
Drums
duck
duck
duckie
duckie
dude
dude
dudley
duke
duke
dumbass
dundee
dundee
dustin
Dustin
dusty
dusty
dutch
dutchess
dwight
Dwight
dylan
dylan
e
e
eagle
eagle
eagle1
eagle1
eagles
eagles
Eagles
Eagles
easter
easter
eastern
Eatme
eclipse
eclipse
eddie
eddie
edith
edmund
eduardo
edward
edward
Edward
eeyore
eeyore
effie
eieio
eight
einstein
einstein
elaine
Elaine
electric
electric
element
elephant
elephant
elijah
elina1
elissa
elizabet
elizabeth
Elizabeth
ella
ellen
ellen
elliot
elliot
elsie
elsie
elvis
elvis
Elvis
Elwood
e-mail
e-mail
emerald
emily
emily
eminem
emmanuel
emmitt
Emmitt
empire
energy
energy
engage
england
enigma
enigma
enrique
enter
enter
enterprise
entropy
entropy
eric
eric
eric1
erika
erin
ernie1
escort
escort1
Espanol
estelle
Esther
estrella
estrellita
etoile
etoile
eugene
eugene
europe
europe
evelyn
excalibu
excalibur
excel
Except
explore
explorer
explorer
export
export
express
express
faculty
fairview
faith
faith
falcon
falcon
Falcon
familia
family
family
Family
Family
family1
farmer
farmer
Farmer
Farming
farout
farside
fashion
fatboy
fatima
faust
fearless
february
feedback
felipe
felix
felix
fender
Fender
fenris
ferguson
fernanda
fernando
ferrari
ferrari
ferret
ferret
ferris
fgh
fiction
fiction
fidel
Figaro
finance
fiona
fiona
fire
fire
fireball
fireball
firebird
firebird
Firebird
fireman
fireman
firenze
first
first
fish
fish
fish1
fish1
fisher
fisher
Fisher
Fisher
fishes
fishhead
fishie
fishing
fishing
Fishing
Fishing
flamingo
flamingo
flanders
flash
flash
fletch
fletch
fletcher
fletcher
fleurs
flight
flight
flip
flip
flipper
flipper
Flipper
flores
florida
florida
Florida
florida1
flower
flower
Flower
flowerpot
flowers
flowers
Flowers
floyd
floyd
fluffy
fluffy
Fluffy
flute
fly
flyboy
flyer
Flyers
foobar
foobar
fool
fool
Footbal
football
football
Football
football1
ford
ford
forest
forest
forever
Fortune
forum
forward
foster
fountain
fountain
fox
fox
foxtrot
foxtrot
fozzie
fozzie
france
france
francesco
francine
francis
francis
Francis
francisco
francois
francois
frank
frank
franka
frankie
Frankie
franklin
franklin
freak1
freak1
fred
fred
freddie
freddy
freddy
Freddy
frederic
frederic
free
freebird
freedom
freedom
Freedom
freeman
french
french1
french1
friday
friday
Friday
Friday
friend
friend
Friend
friends
friends
Friends
Friends
friendship
friendster
frisco
fritz
frodo
frodo
frog
frog
frog1
froggie
froggies
froggy
froggy
Froggy
frogs
frogs
front242
front242
Front242
frontier
Frosty
fubar
Fubar
fucker
fucker
Fucker
fuckface
fuckme
fuckme
Fuckme
fuckoff
fuckoff
fucku
fuckyou
fuckyou
Fuckyou
Fuckyou
FuckYou
FuckYou
fuckyou1
fuckyou2
fugazi
fugazi
fun
fun
funguy
funtime
future
future
fuzz
gabby
gabriel
gabriel
gabriela
gabriell
gabriell
gaby
gaby
gaelic
galaxy
galaxy
galileo
galileo
gambit
gambit
Gambit
gambler
games
gammaphi
ganda
gandako
gandalf
gandalf
Gandalf
Gandalf
gangsta
gangster
garcia
garden
garden
Garden
garfield
garfield
Garfield
garfunkel
gargoyle
garlic
garlic
garnet
garnet
Garrett
garth
gary
gary
gasman
gasman
gaston
gateway
gateway
gateway2
gatita
gatito
gator
gator
gator1
gemini
gemini
Gemini
general
general
genesis
genesis
genius
genius
george
george
George
george1
georgia
georgia
gerald
gerald
gerard
german
German
germany
germany1
Geronimo
getout
ggeorge
ghost
ghost
giants
giants
Giants
gibbons
gibson
gibson
gigi
gilbert
gilgamesh
gilles
gilles
ginger
ginger
Ginger
giselle
gizmo
gizmo
Gizmo
Gizmo
glenn
glenn
glider1
glitter
global
global
Global
gloria
gmoney
go
go
Goalie
goat
goat
goaway
goblin
goblue
goblue
gocougs
gocougs
god
godiva
godzilla
godzilla
goethe
gofish
gofish
goforit
goforit
gold
gold
golden
golden
Golden
Golden
goldfish
Goldie
golf
golf
golfer
golfer
Golfer
Golfing
gollum
gone
gone
goober
goober
Goober
Goober
good
good-luck
goodluck
goofy
goofy
google
goose
gopher
gopher
Gopher
gordon
gordon
Gordon
gorgeous
grace
grace
gracie
graham
gramps
grandma
grandma
Grandma
grant
grant
graphic
graphic
grateful
grateful
gravis
gray
gray
graymail
greed
green
green
greenday
greenday
greg
greg
greg1
gregory
gregory
gremlin
greta
gretchen
gretchen
Gretel
gretzky
gretzky
Griffey
grizzly
groovy
groovy
Groovy
grover
grover
Grover
grumpy
grumpy
guess
guess
guest
guest
guido
guido
guinness
guinness
guitar
guitar
Guitar
guitar1
gumby
gundam
gunner
gunner
Gunner
gustavo
Gymnast
h2opolo
h2opolo
hacker
hacker
Hacker
Hacker
haggis
haha
hahaha
hailey
hal
hal9000
hal9000
hallo
halloween
hallowell
hamid
hamilton
hamlet
hammer
hammer
Hammer
Hammer
Hamster
hank
hanna
hanna
hannah
hannah
hannah1
hansolo
hansolo
hanson
hanson
Hanson
happy
happy
happy1
happy1
happy123
happyday
happyday
hardcore
harley
harley
Harley
Harley
HARLEY
harley1
haro
harold
harold
harriet
harris
harrison
harrison
harry
harry
harrypotter
harvard
harvey
harvey
Harvey
Hatton
hawaii
Hawaii
hawk
hawk
hawkeye
Hawkeye
hawkeye1
hayden
hazel
hazel
health
health
health1
heart
heart
hearts
Hearts
heather
heather
Heather
Heather
heather1
heather2
heaven
hector
hector
hedgehog
heidi
heidi
Heidi
heikki
helen
helen
helena
helene
hell
hell
hello
hello
Hello
Hello
hello1
hello1
hello123
hello8
hellohello
hellokitty
help
help
help123
helper
helpme
helpme
Helpme
hendrix
hendrix
Hendrix
Hendrix
henry
henry
Henry
herbert
herbert
herman
herman
Herman
hermes
hermes
hermosa
hernandez
Hershey
Hershey
herzog
heythere
highland
hilbert
hilda
hillary
hiphop
histoire
history
history
History
hithere
hitler
hobbes
hobbit
Hobbit
hockey
hockey
Hockey
Hockey1
hola
hola
holiday
holly
holly
hollywood
home
home
homebrew
homebrew
homer
homer
Homer
Homer
homerj
honda
honda
honda1
honda1
Honda1
honey
honey
honeyko
hongkong
hoops
hoops
hoosier
hootie
hootie
hope
horizon
horizon
hornet
hornet
Hornets
horse
horse
horses
horses
hosehead
hotdog
hotdog
Hotdog
hotmail
hotrod
Hotrod
hotstuff
hottie
hottie1
house
house
houston
houston
howard
howard
Howard
huang
hudson
huey
hugh
hugo
hummer
hunter
hunter
Hunter
Hunting
Huskers
huskies
hydrogen
i
ib6ub9
ib6ub9
ibanez
icecream
icecream
iceman
iceman
Iceman
idiot
idiot
idontknow
if6was9
iforget
iguana
iguana
Iguana
ihateyou
ilmari
ilovegod
ilovehim
ilovejesus
iloveme
iloveu
iloveu2
iloveyou
iloveyou!
iloveyou
iloveyou1
iloveyou2
image
image
imagine
imagine
imissyou
impact
impala
impala
indian
indian
indiana
indiana
indigo
indigo
indonesia
info
info
informix
informix
ingvar
inlove
insane
insane
inside
inside
insight
instructor
integra
integral
Intel
intern
intern
internet
internet
Internet
Internet
intrepid
inuyasha
iomega
ireland
ireland
irene
irene
irina
iris
irish
irish
irmeli
ironman
ironman
Ironman
isaac
isaac
isabel
isabella
isabelle
isabelle
Isabelle
isaiah
isis
island
island
israel
italia
italia
italy
italy
iubire
iverson
izzy
j1l2t3
jack
jack
jackass
jackie
jackie
Jackie
jackie1
jackson
jackson
Jackson
Jackson
jacob
jacob
Jaeger
jaguar
jaguar
Jaguar
jake
jake
jakey
jamaica
jamaica
james
james
james1
james1
jamesbond
jamie
jamjam
jan
jan
jane
jane
Janet
janice
janice
janine
january
January
japan
japan
jared
jared
jasmin
jasmin
jasmine
jasmine
Jasmine
jasmine1
jason
jason
jason1
jason1
jasper
jasper
Jasper
javier
jayden
jayjay
jayson
jazmin
jazz
jazz
jean
jean
jeanette
jeanette
jeanne
jeanne
Jeanne
Jeanne
jedi
jeepster
jeff
jeff
jeffrey
jeffrey
Jeffrey
jeffrey1
jenifer
jenifer
jenni
jenni
jennie
jennifer
jennifer
Jennifer
Jennifer
jenny
jenny
jenny1
jenny1
jensen
jensen
jer
jeremiah
jeremy
jeremy
Jeremy
jerome
jerry
jerry
Jersey
jesse
jesse1
jessica
jessica
Jessica
Jessica
jessica1
jessie
jessie
Jessie
jester
Jester
jesucristo
jesus
jesus
jesus1
jesus1
jesuschrist
jethro
jethrotull
jetta1
jewels
jewels
jim
jim
jimbo
jimbo
Jimbo
jimbob
Jimbob
jimi
jimmy
jkl123
jkm
joanie
joanna
joanna
Joanna
joanne
joe
joe
joel
joel
joelle
joey
joey
johan
johanna1
john
john
john316
john316
johncena
johnny
johnny
Johnny
johnson
johnson
Johnson
Johnson
jojo
jojo
joker
joker
Joker
joker1
jonathan
jonathan
jordan
jordan
Jordan
Jordan
jordan1
jordan23
jordan23
jordie
jorge
josee
joseph
joseph
Joseph
josh
josh
joshua
joshua
Joshua
Joshua
joshua1
josie
josie
journey
joy
joyce
JSBach
jubilee
judith
judith
judy
judy
juhani
jules
julia
julia
julia2
julian
julian
juliana
julie
julie
julie1
julie1
julien
juliet
julius
jumanji
jumbo
jump
junebug
Junebug
junior
junior
Junior
juniper
jupiter
jupiter
jussi
justdoit
justice
justice
justice4
justin
justin
Justin
justin1
justin1
justine
justme
kalamazoo
kali
kangaroo
karen
karen
karen1
karin
karina
karine
karla
karma
kat
kate
katerina
katherin
katherine
kathleen
kathleen
Kathryn
kathy
kathy
katie
katie
Katie
katie1
katrina
kayla
Kayla
kcin
keeper
keepout
keith
keith
keith1
keller
kelly
kelly
kelly1
kelly1
kelsey
kelsey
kendall
kennedy
kennedy
kenneth
kenneth
kenny
kerala
kermit
kermit
kerrya
ketchup
kevin
kevin
kevin1
kevin1
khan
khan
kidder
kids
kids
killer
killer
Killer
Killer
KILLER
Killme
kim
kim
kimberly
kimberly
Kinder
king
king
kingdom
kingdom
kingfish
kingfish
kings
kirk
kissa2
kisses
kissme
kitkat
kitten
Kitten
Kitten
kitten12
Kittens
kitty
kitty
kittycat
kiwi
kkkkkk
kleenex
kleenex
knicks
knicks
knight
knight
Knight
Knight
Knights
koala
koala
koko
koko
kombat
Kombat
kramer
kramer
kris
kristen
kristen
Kristen
kristi
kristi
Kristi
kristin
kristin
Kristin
kristina
kristine
Kristy
Krystal
labtec
lacrosse
lacrosse
laddie
laddie
lady
lady
ladybug
ladybug
lakers
lakers
Lakers
Lakota
lalala
lambda
lamer
lamer
lance
larry
larry
larry1
larry1
Larson
laser
laser
Laser
laserjet
lassie1
laura
laura
laurel
lauren
lauren
Lauren
laurie
laurie
law
law
lawrence
lawson
lawyer
leader
leaf
leanne
leblanc
ledzep
ledzep
lee
lee
legal
legend
legend
legolas
leland
lemon
Lennon
leo
leon
leon
leonard
leonard
leonardo
leslie
leslie
Leslie
lestat
lestat
Lestat
lester
letmein
letmein
Letmein
letter
Letter
letters
lexus1
liberty
Liberty
libra
library
library
Library
life
light
light
Light
lights
liliana
lilmama
lima
lincoln
lincoln
linda
linda
lindsay
lindsay
Lindsay
Lindsay
lindsey
lindsey
Lindsey
linkinpark
lionel
lionking
lionking
lions
lipgloss
lisa
lisa
lissabon
little
Little
liverpoo
liverpool
liz
lizard
lizard
Lizard
Lizard
lizzie
lizzy
ljf
lloyd
lloyd
logan
logan
logger
logical
logical
logos
loislane
loki
lokita
lola
lolipop
lolita
lollipop
lollypop
london
london
lonely
lonestar
longer
longhorn
looking
looney
looney
Looney
loren
lorena
lori
lorna
lorraine
lorraine
lorrie
loser
loser
Loser
lost
lotus
lou
louis
louis
louise
louise
Louise
love
love
love12
love123
lovebug
lovelove
lovely
lovely
lovely1
loveme
loveme
Loveme
loveme1
lover
Lover
lover1
loverboy
lovers
loves
loveu
loveya
loveyou
loveyou
loving
lucas
lucas
lucia
lucifer
lucky
lucky
lucky1
lucky1
lucky14
lucky7
lucy
lucy
lulu
lulu
lupita
lynn
lynn
m
m1911a1
mac
mac
macha
macha
macintos
macintosh
macross
madalina
maddie
Maddock
maddog
maddog
Maddog
Madeline
madison
madison
madmax
madoka
madonna
maganda
maggie
maggie
Maggie
magic
magic
magic1
magnum
magnum
mahal
mahalkita
mahalko
maiden
mail
mailer
mailer
mailman
mailman
maine
major
major
majordom
majordomo
makeitso
malcolm
malcolm
maldita
malibu
Malibu
mallard
mamita
management
manchester
manson
mantra
mantra
manuel
manutd
marathon
marc
marc
marcel
marcel
marcos
marcus
marcus
margaret
margaret
Margaret
margarita
maria
maria
maria1
mariah
mariah
mariah1
marian
mariana
marie
marie
marie1
marielle
marilyn
marilyn
marina
marina
marine
marine
mariner
marino
Marino
mario
mario
mariposa
mariposa
marisol
marissa
mark
mark
mark1
market
market
marlboro
marlboro
marley
marley
Marley
marlon
mars
mars
Marshal
marshall
mart
martha
Martha
martin
martin
Martin
martin1
martin1
martinez
marty
marty
marvin
marvin
Marvin
mary
mary
maryjane
maryjane
master
master
Master
Master
master1
master1
Masters
math
math
matrix
matrix
matt
matt
matthew
matthew
Matthew
Matthew
matthew1
matti1
mattingly
maurice
maurice
mauricio
Maveric
maverick
maverick
max
max
maxime
maxime
maxine
maxmax
maxwell
maxwell
Maxwell
Maxwell
mayday
mayday
mazda1
mazda1
me
me
meatloaf
mech
mechanic
media
medical
medical
megan
megan
meggie
meister
melanie
melanie
melina
melissa
melissa
Melissa
Mellon
melody
melvin
mememe
memory
memory
memphis
memphis
mensuck
meow
meow
mercedes
mercedes
mercer
mercury
mercury
merde
merlin
merlin
Merlin
merlot
Merlot
mermaid
merrill
metal
metal
metallic
metallic
Metallic
metallica
mexico
mexico
mhine
miami
miamor
michael
michael.
michael
Michael
Michael
michael1
michal
micheal
michel
michel
Michel
Michel1
michele
michele
Michell
michelle
michelle
Michelle
Michelle
michelle1
michigan
michou
mickel
mickey
mickey
Mickey
mickey1
micro
micro
microsoft
midnight
midnight
midori
midori
midvale
midway
mierda
miguel
mikael
mikael
mike
mike
mike1
mike1
mikey
mikey
Mikey
miki
miki
milagros
milano
miles
miles
millenium
miller
miller
Miller
millie
millie
million
million
mimi
mimi
mindy
mindy
mine
mine
minnie
minnie
Minnie
minou
minou
miracle
mirage
mirage
miranda
miranda
miriam
mirror
mirror
misha
misha
mishka
mishka
mission
mission
missy
missy
misty
misty
mitch
mitch
mitchell
mitchell
Mittens
mmm
mmmmmm
mmouse
mobile
mobydick
modem
modem
mojo
molly
molly
molly1
molly1
molson
molson
mom
mom
mommy
mommy1
monday
monday
Monday
Monday
monet
monet
money
money
Money
money1
money1
monica
monica
monique
monique
monkey
monkey
Monkey
monkey1
monkey12
monkeys
monopoly
monopoly
monroe
monster
Monster
Monster
montana
montana
Montana
montana3
montreal
montreal
Montreal
montrose
monty
moocow
moocow
mookie
mookie
moomoo
moomoo
moon
moon
moonbeam
moore
moose
moose
mopar
morecats
morgan
morgan
moroni
moroni
morpheus
morris
morris
Morris
mortimer
mortimer
mother
mother
Mother
motor
motorola
mountain
mountain
mouse
mouse
mouse1
mouse1
movies
mowgli
mozart
mozart
muffin
muffin
Muffin
mulder
mulder1
munchkin
murphy
murphy
Murphy
murray
muscle
music
music
musica
mustang
mustang
Mustang
mustang1
mybaby
mylife
mylove
myself
myspace
myspace1
nadia
nadine
nancy
nancy
naomi
naomi
napoleon
napoleon
naruto
nascar
nascar
Nascar
nat
nat
natalia
natalie
natasha
natasha
Natasha
nathan
nathan
Nathan
nation
national
nautica
nautica
ncc1701
ncc1701
NCC1701
NCC1701
ncc1701d
ncc1701d
ncc1701e
ncc1701e
ne1410s
ne1469
ne1469
ne14a69
nebraska
nebraska
neil
neko
nellie
nellie
nelson
nelson
Nelson
nemesis
nemesis
nenita
nermal
nesbit
nesbitt
nesbitt
nestle
netware
netware
network
network
neutrino
new
new
newaccount
newcourt
newcourt
newlife
newpass
newpass
news
news
newton
newton
Newton
Newton
newuser
newuser
newyork
newyork
newyork1
nexus6
nguyen
nguyen
nicarao
nicarao
nicholas
nicholas
Nicholas
nichole
nick
nick
nicklaus
nicolas
nicole
nicole
Nicole
nicole1
nigel
nightshade
nightwing
nike
niki
niki
nikita
nikita
nikki
nimrod
nimrod
nina
niners
niners
nintendo
nirvana
nirvana
Nirvana
nirvana1
nirvana1
nissan
nissan
Nissan
nisse
nite
nite
nokia
nomore
none
none
none1
nopass
Noriko
normal
norman
norman
norton
notebook
nothing
nothing
notta1
notused
notused
nouveau
novell
november
noway
nss
nugget
nugget
number1
Number1
number9
number9
numbers
nurse
nurse
nursing
nutmeg
oatmeal
oatmeal
oaxaca
obiwan
obiwan
obsession
ocean
october
october
October
October
ohshit
oicu812
olive
olive
oliver
oliver
Oliver
olivia
olivia
olivier
olivier
ollie
olsen
omarion
omega
one
one
onelove
online
online
Online
open
open
openup
opera
opus
opus
orange
orange
Orange
oranges
oranges
orchid
orchid
oregon
oreo
orion
orion
orlando
Orlando
orville
oscar
oscar
otter
ou812
ou812
OU812
OU812
overkill
oxford
oxford
ozzy
paagal
pacers
pacers
Pacers
pacific
pacific
packard
packard
Packard
packer
packer
Packer
packers
packers
Packers
packrat
paint
painter
painter
Paladin
Paladin
paloma
pam
pamela
pamela
Pamela
Pamela
pancake
panda
panda
pandora
pandora
panget
pangit
panic
pantera
pantera
Pantera
panther
panther
Panther
panthers
paola
papa
papa
paradigm
paris
paris
park
parker
parker
Parker
parola
parrot
parrot
partner
pasaway
pascal
pascal
pass
pass
passion
passion
passw0rd
passwd
passwd
Passwor
password
password
Password
Password
PASSWORD
password1
password2
pat
pat
patches
patches
Patches
patricia
patricia
patrick
patrick
Patrick
patriots
patton
paul
paul
paula
paula
pauline
pavel
payton
peace
peace
peach
peaches
peaches
Peaches
Peaches
peanut
peanut
Peanut
peanuts
Peanuts
pearl
pearl
pearljam
pearljam
pebbles
Pebbles
pedro
pedro
pedro1
peewee
peewee
Peewee
peggy
peggy
pencil
penelope
penelope
penguin
penguin
Penguin
penny
penny
pentium
pentium
Pentium
Pentium
people
People
pepper
pepper
Pepper
Pepper
pepsi
pepsi
percy
percy
perfect
performa
perry
perry
person
pete
pete
peter
peter
Peter
Peter
peter1
peterk
peterpan
petey
petey
petunia
petunia
Petunia
phantom
phantom
phialpha
phil
phil
philip
philip
philips
Phillip
phillips
phish
phish
phishy
phoenix
phoenix
Phoenix
phoenix1
phoenix1
phone
photo
photo
piano
piano
piano1
pianoman
pianos
picard
Picard
picasso
picasso
pickle
pickle
Pickle
picture
picture
pictures
pierce
pierce
pierre
pierre
pigeon
piglet
piglet
Piglet
Piglet
pimpin
pineapple
pink
pinkfloy
pinkfloyd
pinky
pioneer
pipeline
piper1
pirate
pirate
pisces
pisces
pizza
pizza
planet
planet
plato
plato
play
play
playboy
playboy
player
player
players
players
playgirl
please
please
Please
plus
pluto
pluto
pmc
poetic
poetry
pogiako
poiuyt
poiuyt
pokemon
polar
polaris
Polaris
pole
police
police
politics
politics
pollito
polo
polo
pomme
pomme
pontiac
poohbear
poohbear
pookey
pookie
pookie
Pookie
Pookie
pookie1
pookie1
poop
poopoo
popcorn
popcorn
Popcorn
pope
popeye
popeye
Popeye
poppy
porsche
porsche
Porsche
porsche9
porsche911
porter
porter
portland
portland
portugal
potter
power
power
ppp
ppp
PPP
praise
praise
prayer
preciosa
precious
predator
prelude
premier
preston
preston
pretty
primus
prince
prince
Prince
princesa
princesita
princess
princess
Princess
princess1
print
printing
prof
prof
promethe
prometheus
property
property
protel
provider
psalms
psalms
psycho
psycho
Psycho
public
public
Puckett
puddin
pulsar
pumpkin
pumpkin
Pumpkin
punkin
punkin
puppies
Puppies
puppy
puppy
puppy123
purple
purple
Purple
Purple
purple1
pussy
pussy1
pussycat
pyramid
pyramid
Pyramid
pyro
python
python
q1w2e3
q1w2e3
q1w2e3r4
qazwsx
qqq111
quality
quality
quebec
quebec
queen
queenie
quentin
quest
quest
qwaszx
qwaszx
qwer
qwert
qwert
Qwert
Qwert
qwerty
qwerty
Qwerty
Qwerty
qwerty1
qwerty12
qwerty12
qwertyui
qwertyuiop
rabbit
rabbit
Rabbit
Rabbit
rabbit1
racer
racerx
racerx
rachel
rachel
Rachel
rachelle
Racing
racoon
racoon
radar
radio
radio
rafael
rafiki
Raider
raiders
raiders
Raiders
Raiders
rain
rain
rainbow
rainbow
Rainbow
Raistlin
Raistlin
raleigh
ralph
ram
rambo
rambo1
rambo1
rancid
random
random
Random
randy
randy
randy1
ranger
ranger
Ranger
rangers
raptor
raptor
raquel
raquel
rascal
rascal
Rasta
rasta1
rastafarian
ratio
raven
raven
ravens
raymond
raymond
Raymond
Reader
Reading
reality
reality
Reality
rebecca
rebecca
Rebecca
Rebecca
rebelde
Rebels
red
red
red123
redcloud
reddog
reddog
Reddog
RedDog
redfish
redman
redrum
redrum
Redskin
redskins
redsox
redwing
redwing
redwood
Reebok
reed
Reefer
reggae
reggie
Reggie
regina
reliant
remember
remember
remote
rene
renee
renee
Renee
renegade
reptile
republic
republic
rescue
research
research
Retard
revolution
rex
reynolds
reynolds
reznor
reznor
rhino
rhonda
rhonda
Rhonda
ricardo
ricardo1
richard
richard
Richard
richard1
richards
richmond
ricky
ricky
riley
ripper
Ripper
ripple
rita
river
river
roadrunner
rob
robbie
robbie
Robbie
robby
robert
robert
Robert
Robert
robert1
robert1
roberto
roberts
robin
robin
robinhoo
robinhood
robocop
robotech
robotech
robotics
roche
rock
rock
rocket
rocket
rocket1
rockie
rocknroll
rockon
rocky
rocky
rocky1
rodeo
Rodman
rodrigo
roger
roger
roger1
rogers
roland
rolex
roman
roman
rommel
ronald
ronald
Ronald
ronaldo
roni
ronnie
rookie
Rooster
rootbeer
Roping
rose
rose
rosebud
rosebud
Rosebud
roses
roses
rosie
rosie
Rosie
rosita
rossignol
rotimi
rouge
route66
roxana
roxy
roxy
roy
roy
royal
royal
Royals
ruby
ruby
rufus
rufus
rugby
rugby
rugger
runner
runner
Runner
running
running
rush
Russel
russell
russell
Russell
Russell
rusty
rusty
ruth
ruth
ruthie
ruthless
rux
ruy
ryan
ryan
sabbath
sabina
sabrina
sabrina
sadie
sadie
safety
safety
safety1
saigon
sailing
sailing
sailor
sailor
saint
sakura
salasana
sales
sales
sally
sally
salmon
salmon
salut
salut
sam
sam
samantha
samantha
samiam
sammie
Sammie
sammy
sammy
Sammy
sample123
Sampler
sampson
sampson
samsam
samson
samson
Samson
samsung
samuel
samuel
Sanders
sandi
sandra
sandra
sandy
sandy
Sango
sanjose
sanjose1
santa
santa
santiago
santos
saphire
sapphire
sapphire
sarah
sarah
sarah1
sarah1
Sarah1
sasha
sasha
saskia
saskia
sassy
sassy
sasuke
satori
saturday
saturn
saturn
Saturn
saturn5
savage
savage
savannah
saved
sayang
sbdc
scarecrow
scarface
scarlet
scarlet
scarlett
scarlett
Scarlett
schnapps
school
school
School
science
science
Science
scooby
scooby
Scooby
scoobydoo
scooter
scooter
Scooter
scooter1
scooter1
scorpio
scorpio
scorpion
scorpion
scotch
scotch
scotland
scott
scott
scott1
scottie
scotty
scotty
Scotty
scout
scout
scouts
scrooge
scruffy
scruffy
scuba
scuba1
scuba1
sean
sean
search
seattle
seattle
sebastian
secret
secret
Secret
secret3
security
security
seeker
Sendit
Senior
seoul
septembe
september
serena
sergei
sergei
sergey
sergio
server
service
service
Service
Service
services
seven
seven
seven7
seven7
sex
sexy
sexy
sexybitch
sexygirl
sexymama
sexyme
shadow
shadow
Shadow
Shadow
shadow1
shadow1
Shadows
shaggy
shakira
shalom
shalom
shanghai
shannon
shannon
Shannon
shanny
shanti
shanti
shaolin
shark
shark
sharon
sharon
Sharon
shasta
shawn
shawn
shayne
shazam
sheba
sheba
sheena
sheena
sheila
sheila
shelby
shelby
shelley
shelley
shelly
shelly
Shelly
shelter
sherry
sherry
ship
shirley
shirley
Shirley
shit
shit
shithead
shithead
Shithead
shoes
shoes
shogun
Shooter
shopping
shorty
shorty
Shorty
shotgun
shotgun
Shotgun
Sidekick
sidney
Sidney
sierra
sierra
Sierra
Sierra
sigmachi
signal
signature
silver
silver
Silver
silvia
simba
simba
simba1
simon
simon
simone
simple
simple
Simple
simpsons
simsim
sinatra
singer
singer
single
sirius
sister
skate
skater
Skater
skeeter
skeeter
Skeeter
Skeeter
skibum
skidoo
skidoo
Skidoo
skiing
skiing
Skiing
Skinny
skip
skipper
skipper
skipper1
skippy
skippy
Skippy
skittles
skull
skunk
skydive
skyler
skyline
skywalker
slacker
slacker
slayer
slayer
Slayer
sleepy
slick
slider
slideshow
slip
slipknot
smashing
smashing
smegma
smile
smile
smile1
smiles
smiles
Smiles
smiley
smiley
Smiley
smiths
smiths
smitty
smoke
smokey
smokey
Smokey
Smokey
smurfy
snake
snake
snakes
snapper
snapple
snapple
Snicker
snickers
snickers
sniper
sniper
Sniper
snoop
snoopdog
snoopdog
snoopy
snoopy
Snoopy
Snoopy
snow
snow
Snowbal
snowball
snowball
snowflake
snowman
snowman
snowski
snuffy
snuffy
sober1
soccer
soccer
Soccer
soccer1
soccer1
softball
softball
soleil
soleil
solomon
something
sonic
sonics
Sonics
sonny
sonny
sony
sophia
sophie
sophie
sound
space
space
spain
spain
Spanish
spanky
spanky
Spanky
sparkle
sparks
sparky
sparky
Sparky
Sparky
sparrow
sparrow
spartan
spazz
special
special
Special
Speech
speedo
speedo
speedy
speedy
Speedy
Speedy
spencer
spencer
sphynx
spider
spider
Spider
spiderman
spike
spike
spike1
spirit
Spirit
spitfire
spitfire
spock
sponge
spongebob
spooky
spooky
spoon
sporting
sports
sports
Sports
spot
spring
spring
Spring
sprite
sprite
Sprite
sprocket
spunky
spunky
Spunky
spurs
squash
Squirt
sss
ssssss
ssssss
stacey
stacey
Stacey
stan
stanley
stanley
Stanley
star
star
star69
star69
starbuck
stargate
stargate
starlight
stars
start
start
starter
startrek
startrek
Startrek
starwars
starwars
station
station
stealth
stealth
steaua
steel
steele
steele
steelers
steelers
stella
stella
steph
steph
steph1
stephani
stephani
stephanie
stephen
stephen
stephi
Sterling
steve
steve
steve1
steven
steven
Steven
Steven
steven1
stevens
stever
stewart
stimpy
stimpy
Stimpy
sting
sting1
sting1
stingray
stingray
stinky
stinky
stivers
stocks
stone
storage
storm
storm
stormy
stormy
stranger
strat
strat
strato
strawber
strawberry
stretch
Strider
strong
stuart
stuart
stud
student
student
Student
student2
studio
Studly
stumpy
stupid
stupid
Stupid
success
success
Success
sucker
suckme
sue
sugar
sugar
sultan
summer
summer
Summer
Summer
summit
sun
sun
sunbird
sunbird
sundance
sundance
sunday
sunday
sunfire
sunflowe
sunflower
sunny
sunny
sunny1
sunny1
sunrise
sunrise
sunset
sunset
Sunshin
sunshine
sunshine
Sunshine
SunShine
sunshine1
super
super
superfly
superman
superman
Superman
Superman
superstar
support
support
supra
supra
surf
surf
surfer
surfer
Surfer
surfing
susan
susan
Susan
susan1
susana
susanna
sutton
suzanne
suzanne
suzuki
suzuki
suzy
Sverige
swanson
sweden
sweet
sweet16
sweetheart
sweetie
sweetie
Sweetie
sweetness
sweetpea
sweetpea
sweets
Sweets
sweety
sweety
swim
swimmer
Swimmer
swimming
swimming
switzer
Swoosh
swordfish
sydney
sydney
Sydney
sylvia
sylvia
sylvie
sylvie
symbol
symbol
system
system
System
system5
tab
tabatha
tacobell
tacobell
taffy
taffy
taiwan
talon
tamara
tamara
Tamara
tammy
tammy
tamtam
Tandy
tango
tango
Tanker
tanner
Tanner
tanya
tanya
tapani
tara
tara
Tardis
targas
target
target
tarheel
tarzan
tarzan
tasha
tasha
Tasha
tata
tatiana
tattoo
tattoo
taurus
taurus
Taurus
Taurus
taylor
taylor
Taylor
Taylor
tazdevil
Tazman
tazmania
tbird
t-bone
t-bone
teacher
teacher
Teacher
TEACHERS
teamo
tech
tech
techno
techno
teddy
teddy
teddy1
teddy1
teddybear
teflon
teiubesc
tekiero
telecom
telecom
temp
temp
temporal
temporal
tennis
tennis
Tennis
Tennis
tequiero
tequila
tequila
teresa
teresa
Teresa
terminal
terry
terry
terry1
test
test
test1
test1
test123
test123
test2
test2
test3
tester
tester
Tester
testi
testing
testing
testtest
testtest
texas
texas
thankyou
the
theatre
theatre
thebest
theboss
theboss
theend
thejudge
theking
theking
thelorax
Theman
theresa
theresa
Theresa
Theresa
thisisit
thomas
thomas
Thomas
Thomas
thompson
thorne
thrasher
thumper
thumper
Thumper
thunder
thunder
Thunder
Thunder
thunderb
thunderbird
thursday
thursday
thx1138
thx1138
tiffany
tiffany
Tiffany
tiger
tiger
tiger2
tigers
tigers
Tigers
tigger
tigger
Tigger
Tigger
tigger1
tightend
tigre
tigre
tika
tim
tim
timber
timber
time
time
timothy
timothy
Timothy
tina
tina
tinker
tinker
tinkerbell
Tinman
tintin
tintin
tnt
toby
toby
today
today
tokiohotel
tokyo
tom
tom
tomcat
tomcat
Tomcat
tommy
tommy
tony
tony
tool
tootsie
tootsie
Tootsie
topcat
topcat
topgun
topgun
topher
topher
tornado
toronto
toronto
torres
toshiba
total
toto1
tototo
toucan
toyota
toyota
Tractor
tracy
tracy
training
training
transfer
transit
transport
trapper
trash
travel
travel
travis
Travis
tre
treasure
trebor
trebor
tree
trees
trek
trek
trevor
trevor
Trevor
tricia
tricia
tricky
trident
trident
trinity
trish
tristan
tristan
triton
trixie
trixie
Trixie
trojan
trombone
trophy
trouble
trouble
Trouble
trout
truck
truck
trucker
Trucks
truelove
truman
trumpet
trumpet
Trumpet
trustno1
tucker
tucker
tucson
tuesday
tuesday
Tuesday
tula
turbo
turbo
Turbo
turbo2
turtle
turtle
Turtle
tweety
tweety
Tweety
twilight
twinkle
twins
twins
tyler
tyler
tyler1
ultimate
undead
undead
undertaker
unicorn
unicorn
unique
united
unity
unix
upsilon
ursula
user1
user1
utopia
utopia
vacation
vader
vader
val
valentin
valentin
valentina
valentine
valeria
valerie
valerie
valhalla
valhalla
valley
vampire
Vampire
vanessa
Vanessa
vanilla
vanilla
vedder
velvet
velvet
venice
venus
venus
vermont
vermont
Vernon
veronica
veronica
vette
Vette
vicki
vicky
vicky
victor
victor
victor1
victoria
victoria
Victoria
Victoria
victory
victory
video
video
viking
viking
Viking
Vikings
vikram
vincent
vincent
Vincent
vincent1
violet
violet
Violet
violin
viper
viper
Viper
viper1
viper1
virago
virgil
virginia
virginia
visa
visa
vision
vision
visual
volcano
volley
volley
Volley
Volleyb
volleyball
volvo
volvo
voodoo
voodoo
vortex
voyager
Voyager
waiting
walden
waldo
walker
walker
walleye
Walleye
wally
wally
walter
walter
wanker
wanker
warcraft
warcraft
Warez
warlock
warner
warner
warren
warren
Warren
warrior
warrior
Warrior
warriors
warriors
water
water
water1
Waterloo
watson
watson
wayne
wayne
wayne1
weasel
weasel
webmaste
webmaster
webster
webster
Webster
Webster
wedge
weezer
Weezer
welcome
welcome
Welcome1
wendy
wendy
wendy1
wesley
wesley
western
western
westlife
westside
whale1
Whales
Whateve
whatever
whatever
wheeling
wheels
wheels
Wheels
whisky
whisky
whit
white
white
whitney
whitney
whocares
whoville
wibble
Wicked
wilbur
wilbur
wildcat
Wildcat
will
william
william
William
william1
williams
williams
willie
willie
Willie
willow
willow
Willow
willy
willy
Willy
wilma
wilson
wilson
Wilson
win95
wind
window
Windows
Windows
windsurf
windsurf
winner
winner
winnie
winnie
Winnie
winniethepooh
winona
winston
winston
winter
winter
Winter
wisdom
wisdom
wizard
wizard
Wizard
wolf
wolf
wolf1
wolf1
wolfgang
wolfgang
wolfMan
wolverin
wolverine
Wolverine
wolves
wolves
Wolves
wombat
wombat
wombat1
wonder
wonder
Woodland
Woodrow
woody
woody
woofwoof
word
wordpass
world
wqsb
wrangler
wrangler
Wrestle
wright
wright
www
xanadu
xanadu
Xanadu
xanth
xavier
xavier
xbox360
xcountry
xcountry
xfiles
x-files
xfiles
x-men
xxx
xxx
xxx123
xxxx
xxxx
xxxxxx
xxxxxxxx
xyz
xyz123
y
yamaha
yamaha
Yamaha
yankee
yankees
yankees
Yankees
yellow
yellow
Yellow
yoda
yoda
yogibear
yolanda
yomama
yomama
young
young
yourmom
yukon
yvette
yvonne
yvonne
zacefron
zachary
zachary
zack
zapata
zapata
zaphod
zaphod
Zaphod
zebra
zebra
zebras
zenith
zenith
zephyr
zephyr
zeppelin
zeppelin
zepplin
zeus
zeus
zhongguo
zhongguo
ziggy
ziggy
Ziggy
zigzag
zoltan
zombie
zombie
Zombie
zoomer
zorro
zorro
Zorro
zxc
zxc123
zxcvb
Zxcvb
zxcvbn
zxcvbnm
zxcvbnm
Zxcvbnm
Zxcvbnm
zzz


================================================
FILE: jq/Dockerfile
================================================
FROM alpine:latest

RUN apk add --no-cache \
	bash \
	ca-certificates \
	curl \
	findutils \
	git \
	jq \
	openssh-client


================================================
FILE: k8scan/Dockerfile
================================================
FROM golang:1.12-alpine as builder
MAINTAINER Jessica Frazelle <jess@linux.com>

ENV PATH /go/bin:/usr/local/go/bin:$PATH
ENV GOPATH /go

RUN	apk add --no-cache \
	ca-certificates \
	git \
	gcc \
	libc-dev \
	libgcc \
	make

# Get go deps for tests etc.
RUN go get honnef.co/go/tools/cmd/staticcheck \
		golang.org/x/lint/golint \
		github.com/google/go-cmp/cmp

WORKDIR /go/src/k8scan

COPY *.go /go/src/k8scan/

RUN set -x \
	&& go get -d . \
	&& gofmt -s -l . \
	&& go test ./... \
	&& go vet ./... \
	&& golint ./... \
	&& staticcheck ./... \
	&& CGO_ENABLED=0 go build -a -tags netgo -ldflags '-w -extldflags "-static"' -o /usr/bin/k8scan *.go \
	&& echo "Build complete."

FROM r.j3ss.co/masscan

COPY --from=builder /usr/bin/k8scan /usr/bin/k8scan
COPY --from=builder /etc/ssl/certs/ /etc/ssl/certs

ENTRYPOINT [ "k8scan" ]
CMD [ "--help" ]


================================================
FILE: k8scan/main.go
================================================
package main

import (
	"context"
	"crypto/tls"
	"encoding/json"
	"errors"
	"flag"
	"fmt"
	"io/ioutil"
	"log"
	"net"
	"net/http"
	"os"
	"os/exec"
	"os/signal"
	"path/filepath"
	"strconv"
	"strings"
	"sync"
	"syscall"
	"time"

	"github.com/Sirupsen/logrus"
	mailgun "github.com/mailgun/mailgun-go"
)

const (
	defaultCIDR = "0.0.0.0/0"

	arinAPIEndpoint = "http://whois.arin.net/rest/ip/%s"

	emailSender = "k8scan@jessfraz.com"
)

var (
	timeoutPing time.Duration
	timeoutGet  time.Duration

	cidr string

	defaultPorts  = intSlice{80, 443, 8001, 9001}
	originalPorts string
	ports         intSlice

	useMasscan bool

	mailgunDomain  string
	mailgunAPIKey  string
	emailRecipient string

	debug bool
)

// intSlice is a slice of ints
type intSlice []int

// implement the flag interface for intSlice
func (i *intSlice) String() (out string) {
	for k, v := range *i {
		if k < len(*i)-1 {
			out += fmt.Sprintf("%d,", v)
		} else {
			out += fmt.Sprintf("%d", v)
		}
	}
	return out
}

func (i *intSlice) Set(value string) error {
	originalPorts = value

	// Set the default if nothing was given.
	if len(value) <= 0 {
		*i = defaultPorts
		return nil
	}

	// Split on "," for individual ports and ranges.
	r := strings.Split(value, ",")
	for _, pr := range r {
		// Split on "-" to denote a range.
		if strings.Contains(pr, "-") {
			p := strings.SplitN(pr, "-", 2)
			begin, err := strconv.Atoi(p[0])
			if err != nil {
				return err
			}
			end, err := strconv.Atoi(p[1])
			if err != nil {
				return err
			}
			if begin > end {
				return fmt.Errorf("end port can not be greater than the beginning port: %d > %d", end, begin)
			}
			for port := begin; port <= end; port++ {
				*i = append(*i, port)
			}

			continue
		}

		// It is not a range just parse the port
		port, err := strconv.Atoi(pr)
		if err != nil {
			return err
		}
		*i = append(*i, port)
	}

	return nil
}

func init() {
	flag.DurationVar(&timeoutPing, "timeout-ping", 2*time.Second, "Timeout for checking that the port is open")
	flag.DurationVar(&timeoutGet, "timeout-get", 10*time.Second, "Timeout for getting the contents of the URL")

	flag.StringVar(&cidr, "cidr", defaultCIDR, "IP CIDR to scan")
	flag.Var(&ports, "ports", fmt.Sprintf("Ports to scan (ex. 80-443 or 80,443,8080 or 1-20,22,80-443) (default %q)", defaultPorts.String()))

	flag.BoolVar(&useMasscan, "masscan", true, "Use masscan binary for scanning (this is faster than using pure golang)")

	flag.StringVar(&mailgunAPIKey, "mailgun-api-key", "", "Mailgun API Key to use for sending email (optional)")
	flag.StringVar(&mailgunDomain, "mailgun-domain", "", "Mailgun Domain to use for sending email (optional)")
	flag.StringVar(&emailRecipient, "email-recipient", "", "Recipient for email notifications (optional)")

	flag.BoolVar(&debug, "d", false, "Run in debug mode")

	flag.Usage = func() {
		flag.PrintDefaults()
	}

	flag.Parse()

	// Set the log level.
	if debug {
		logrus.SetLevel(logrus.DebugLevel)
	}

	// Set the default ports.
	if len(ports) <= 0 {
		ports = defaultPorts
	}
}

func main() {
	// On ^C, or SIGTERM handle exit.
	c := make(chan os.Signal, 1)
	signal.Notify(c, os.Interrupt)
	signal.Notify(c, syscall.SIGTERM)
	go func() {
		for sig := range c {
			logrus.Infof("Received %s, exiting.", sig.String())
			os.Exit(0)
		}
	}()

	// Set the logger to nil so we ignore messages from the Dial that don't matter.
	// See: https://github.com/golang/go/issues/19895#issuecomment-292793756
	log.SetFlags(0)
	log.SetOutput(ioutil.Discard)

	logrus.Infof("Scanning for Kubernetes Dashboards and API Servers on %s over port range %s", cidr, originalPorts)
	if len(mailgunDomain) > 0 && len(mailgunAPIKey) > 0 && len(emailRecipient) > 0 {
		logrus.Infof("Using Mailgun Domain %s, API Key %s to send emails to %s", mailgunDomain, mailgunAPIKey, emailRecipient)
	}
	logrus.Infof("This may take a bit...")

	var (
		startTime = time.Now()
		wg        sync.WaitGroup
	)

	if useMasscan {
		m, err := doMasscan()
		if err != nil {
			logrus.Fatal(err)
		}

		logrus.Infof("Found %d open ports", len(m))

		for _, result := range m {
			for _, port := range result.Ports {
				wg.Add(1)
				go func(ip string, port int) {
					defer wg.Done()

					scanIP(ip, port)

				}(result.IP, port.Port)
			}
		}
	} else {
		ip, ipnet, err := net.ParseCIDR(cidr)
		if err != nil {
			logrus.Fatal(err)
		}

		for ip := ip.Mask(ipnet.Mask); ipnet.Contains(ip); inc(ip) {
			for _, port := range ports {
				wg.Add(1)
				go func(ip string, port int) {
					defer wg.Done()

					// Check if the port is open.
					ok := portOpen(ip, port)
					if !ok {
						return
					}

					scanIP(ip, port)

				}(ip.String(), port)
			}
		}
	}

	wg.Wait()

	since := time.Since(startTime)
	logrus.Infof("Scan took: %s", since.String())
}

func scanIP(ip string, port int) {
	// Check if it's a kubernetes dashboard.
	ok, uri := isKubernetesDashboard(ip, port)
	if !ok {
		return
	}

	// Get the info for the ip address.
	info, err := getIPInfo(ip)
	if err != nil {
		logrus.Warnf("ip info err: %v", err)
	}

	fmt.Printf("%s:%d\t%s\t%s\t%s\n",
		ip, port,
		info.Net.Organization.Handle, info.Net.Organization.Name, info.Net.Organization.Reference)

	// send an email
	if len(mailgunDomain) > 0 && len(mailgunAPIKey) > 0 && len(emailRecipient) > 0 {
		if err := sendEmail(uri, ip, port, info); err != nil {
			logrus.Warn(err)
		}
	}
}

func portOpen(ip string, port int) bool {
	c, err := net.DialTimeout("tcp", fmt.Sprintf("%s:%d", ip, port), timeoutPing)
	if err != nil {
		logrus.Debugf("listen at %s:%d failed: %v", ip, port, err)
		return false
	}
	if c != nil {
		c.Close()
	}

	return true
}

func isKubernetesDashboard(ip string, port int) (bool, string) {
	client := &http.Client{
		Timeout: timeoutGet,
		Transport: &http.Transport{
			TLSClientConfig: &tls.Config{
				InsecureSkipVerify: true,
			},
		},
	}

	tryAddrs := []string{
		fmt.Sprintf("http://%s:%d", ip, port),
		fmt.Sprintf("https://%s:%d", ip, port),
		fmt.Sprintf("http://%s:%d/api/", ip, port),
		fmt.Sprintf("https://%s:%d/api/", ip, port),
	}

	var (
		resp *http.Response
		err  = errors.New("not yet run")
		uri  string
	)

	for i := 0; i < len(tryAddrs) && err != nil; i++ {
		uri = tryAddrs[i]
		resp, err = client.Get(uri)
	}
	if err != nil {
		logrus.Debugf("getting %s:%d failed: %v", ip, port, err)
		return false, ""
	}
	defer resp.Body.Close()

	b, err := ioutil.ReadAll(resp.Body)
	if err != nil {
		return false, ""
	}

	body := strings.ToLower(string(b))
	if (strings.Contains(body, "kubernetes") && strings.Contains(body, "dashboard")) ||
		(strings.Contains(body, `"versions"`) && strings.Contains(body, `"serverAddress`)) ||
		(strings.Contains(body, `"paths"`) && strings.Contains(body, `"/api"`)) {
		return true, uri
	}

	return false, ""
}

// ARINResponse describes the data struct that holds the response from ARIN.
type ARINResponse struct {
	Net NetJSON `json:"net,omitempty"`
}

// NetJSON holds the net data from the ARIN response.
type NetJSON struct {
	Organization OrganizationJSON `json:"orgRef,omitempty"`
}

// OrganizationJSON holds the organization data from the ARIN response.
type OrganizationJSON struct {
	Handle    string `json:"@handle,omitempty"`
	Name      string `json:"@name,omitempty"`
	Reference string `json:"$,omitempty"`
}

// MasscanResult holds the masscan results data struct.
// Looks like:
// [
//   {
//     "ip": "104.198.238.41",
//     "timestamp": "1531524211",
//     "ports": [
//       {
//         "port": 22,
//         "proto": "tcp",
//         "status": "open",
//         "reason": "syn-ack",
//         "ttl": 56
//       }
//     ]
//   },
//   ...
// ]
type MasscanResult struct {
	IP        string        `json:"ip,omitempty"`
	Timestamp MasscanTime   `json:"timestamp,omitempty"`
	Ports     []MasscanPort `json:"ports,omitempty"`
}

// MasscanPort defines the data struct for a masscan port.
type MasscanPort struct {
	Port     int    `json:"port,omitempty"`
	Protocol string `json:"proto,omitempty"`
	Status   string `json:"status,omitempty"`
	Reason   string `json:"reason,omitempty"`
	TTL      int    `json:"ttl,omitempty"`
}

// MasscanTime is the time format returned by masscan.
type MasscanTime struct {
	time.Time
}

// UnmarshalJSON sets MasscanTime correctly from a string.
func (t *MasscanTime) UnmarshalJSON(b []byte) error {
	s := strings.Trim(strings.TrimSpace(string(b)), `"`)

	i, err := strconv.ParseInt(s, 10, 64)
	if err != nil {
		return err
	}

	*t = MasscanTime{time.Unix(i, 0)}

	return nil
}

func getIPInfo(ip string) (b ARINResponse, err error) {
	req, err := http.NewRequest(http.MethodGet, fmt.Sprintf(arinAPIEndpoint, ip), nil)
	if err != nil {
		return b, err
	}
	req.Header.Set("Accept", "application/json")

	resp, err := http.DefaultClient.Do(req)
	if err != nil {
		return b, err
	}
	defer resp.Body.Close()

	if err := json.NewDecoder(resp.Body).Decode(&b); err != nil {
		return b, err
	}

	return b, nil
}

func inc(ip net.IP) {
	for j := len(ip) - 1; j >= 0; j-- {
		ip[j]++
		if ip[j] > 0 {
			break
		}
	}
}

func sendEmail(uri, ip string, port int, arinInfo ARINResponse) error {
	mailgunClient := mailgun.NewMailgun(mailgunDomain, mailgunAPIKey)

	msg, _, err := mailgunClient.Send(context.Background(), mailgunClient.NewMessage(
		/* From */ fmt.Sprintf("%s <%s>", emailSender, emailSender),
		/* Subject */ fmt.Sprintf("[k8scan]: found dashboard %s", uri),
		/* Body */ fmt.Sprintf(`Time: %s

IP: %s:%d
URL: %s

ARIN: %s
	  %s
	  %s
`,
			time.Now().Format(time.UnixDate),
			ip,
			port,
			uri,
			arinInfo.Net.Organization.Handle,
			arinInfo.Net.Organization.Name,
			arinInfo.Net.Organization.Reference,
		),
		/* To */ emailRecipient,
	))
	if err != nil {
		return fmt.Errorf("sending Mailgun message failed: response: %#v error: %v", msg, err)
	}

	return nil
}

func doMasscan() ([]MasscanResult, error) {
	// Create a temporary directory for the output.
	dir, err := ioutil.TempDir(os.TempDir(), "masscan")
	if err != nil {
		return nil, fmt.Errorf("creating temporary directory failed: %v", err)
	}
	defer os.RemoveAll(dir)

	file := filepath.Join(dir, "scan.json")

	cmd := exec.Command("masscan",
		fmt.Sprintf("-p%s", ports.String()),
		cidr,
		"--output-format", "json",
		"--output-file", file,
		"--rate", "1000000",
		"--exclude", "255.255.255.255",
	)
	cmd.Stdout = os.Stdout
	cmd.Stderr = os.Stderr

	logrus.Infof("Running masscan command: `%s`", strings.Join(cmd.Args, " "))
	if err := cmd.Run(); err != nil {
		return nil, fmt.Errorf("running masscan failed: %v", err)
	}

	b, err := cleanMasscanOutputFile(file)
	if err != nil {
		return nil, fmt.Errorf("cleaning up masscan file failed: %v", err)
	}

	m := []MasscanResult{}

	// Return early if empty.
	if len(b) <= 0 {
		return m, nil
	}

	if err := json.Unmarshal(b, &m); err != nil {
		return nil, fmt.Errorf("unmarshal json failed: %v\nbody: %s", err, string(b))
	}

	logrus.Debugf("masscan result: %#v", m)

	return m, nil
}

func cleanMasscanOutputFile(file string) ([]byte, error) {
	b, err := ioutil.ReadFile(file)
	if err != nil {
		return nil, err
	}

	s := strings.TrimSpace(string(b))
	if len(s) <= 0 {
		return nil, nil
	}

	return []byte(strings.TrimSuffix(s, ",\n]") + "]"), nil
}


================================================
FILE: k8scan/main_test.go
================================================
package main

import (
	"testing"

	"github.com/google/go-cmp/cmp"
)

func TestARINResponse(t *testing.T) {
	info, err := getIPInfo("104.40.92.107")
	if err != nil {
		t.Fatal(err)
	}

	if info.Net.Organization.Handle != "MSFT" {
		t.Fatalf("expected handle to be MSFT, got %s", info.Net.Organization.Handle)
	}
	if info.Net.Organization.Name != "Microsoft Corporation" {
		t.Fatalf("expected handle to be Microsoft Corporation, got %s", info.Net.Organization.Name)
	}
	if info.Net.Organization.Reference != "https://whois.arin.net/rest/org/MSFT" {
		t.Fatalf("expected reference to be https://whois.arin.net/rest/org/MSFT, got %s", info.Net.Organization.Reference)
	}
}

func TestParsePortRange(t *testing.T) {
	testFuncs := []struct {
		given    string
		expected intSlice
	}{
		{
			given:    "",
			expected: intSlice{80, 443, 8001, 9001},
		},
		{
			given:    "80,443,9090",
			expected: intSlice{80, 443, 9090},
		},
		{
			given:    "80-90",
			expected: intSlice{80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90},
		},
		{
			given:    "22-24,80,8080-8083",
			expected: intSlice{22, 23, 24, 80, 8080, 8081, 8082, 8083},
		},
		{
			given:    "80",
			expected: intSlice{80},
		},
	}

	for _, testFunc := range testFuncs {
		i := intSlice{}
		if err := i.Set(testFunc.given); err != nil {
			t.Fatal(err)
		}
		if !cmp.Equal(testFunc.expected, i) {
			t.Fatalf("expected: %#v\ngot: %#v", testFunc.expected, i)
		}
	}
}


================================================
FILE: keepass2/Dockerfile
================================================
# DESCRIPTION:	Create keepass2 container with its dependencies
# AUTHOR:		Christian Koep <christiankoep@gmail.com>
# USAGE:
#	# Build keepass2 image
#	docker build -t keepass2 .
#
#	# Run the container and mount your keepass2 database file
#	docker run -it \
#		-v /home/$USER/DB.kdbx:/root/DB.kdbx \
#		-v /tmp/.X11-unix:/tmp/.X11-unix \
#		-v /home/$USER/keepass2-plugins:/usr/lib/keepass2/Plugins \
#		-e DISPLAY=$DISPLAY \
#		keepass2 "$@"
#
# ISSUES:
#	# 'Gtk: cannot open display: :0'
#	Try to set 'DISPLAY=your_host_ip:0' or run 'xhost +' on your host.
#	(see: https://stackoverflow.com/questions/28392949/running-chromium-inside-docker-gtk-cannot-open-display-0)
#

FROM debian:sid-slim
LABEL maintainer "Christian Koep <christiankoep@gmail.com>"

ENV DEBIAN_FRONTEND noninteractive

RUN apt-get update && apt-get install -y \
	keepass2 \
	xdotool \
	mono-mcs \
	--no-install-recommends \
	&& rm -rf /var/lib/apt/lists/*

ENTRYPOINT ["/usr/bin/keepass2"]


================================================
FILE: keepassxc/Dockerfile
================================================
# keepassxc
#
# docker run -d \
#		-v /tmp/.X11-unix:/tmp/.X11-unix \
#		-v /etc/machine-id:/etc/machine-id:ro \
#		-v /usr/share/X11/xkb:/usr/share/X11/xkb/:ro \
#		-v $HOME/.config/keepassxc:/root/.config/keepassxc \
#		-e DISPLAY=unix$DISPLAY \
#		jess/keepassxc
#
FROM alpine:latest
LABEL maintainer "Christian Koep <christiankoep@gmail.com>"

ENV KEEPASSXC_VERSION 2.5.4

RUN buildDeps=' \
		automake \
		argon2-dev \
		bash \
		cmake \
		curl-dev \
		expat \
		g++ \
		gcc \
		git \
		libgcrypt-dev \
		libmicrohttpd-dev \
		libqrencode-dev	\
		libsodium-dev \
		make \
		qt5-qtbase-dev \
		qt5-qtsvg-dev \
		qt5-qttools-dev \
	' \
	set -x \
	&& apk --no-cache add \
		$buildDeps \
	&& git clone --depth 1 --branch ${KEEPASSXC_VERSION} https://github.com/keepassxreboot/keepassxc.git /usr/src/keepassxc \
	&& cd /usr/src/keepassxc \
	&& mkdir build \
	&& cd build \
	&& cmake -DWITH_TESTS=ON -DWITH_XC_AUTOTYPE=ON -DWITH_XC_HTTP=ON .. \
	&& make \
	&& make install \
	&& apk del $buildDeps \
	&& rm -rf /usr/src/keepassxc \
	&& echo "Build complete."

RUN	apk --no-cache add \
		argon2-libs \
		libcurl \
		libmicrohttpd \
		libgcrypt \
		libqrencode \
		libsodium \
		mesa-dri-intel \
		qt5-qtbase \
		qt5-qtbase-x11 \
		qt5-qtsvg \
		qt5-qttools \
		ttf-dejavu

ENTRYPOINT [ "/usr/local/bin/keepassxc" ]


================================================
FILE: kernel-builder/Dockerfile
================================================
FROM r.j3ss.co/wireguard:install
LABEL maintainer "Jessie Frazelle <jess@linux.com>"

RUN apt update && apt -y install \
	bash \
	bc \
	bison \
	ca-certificates \
	curl \
	fakeroot \
	flex \
	git \
	libgmp-dev \
	libncurses-dev \
	perl \
	tar \
	--no-install-recommends \
	&& rm -rf /var/lib/apt/lists/*

ENV HOME /root
WORKDIR $HOME

ENV JOBS 4

COPY build_kernel /usr/local/bin/build_kernel

RUN echo "build_kernel [version]" > /root/.bash_history

ENTRYPOINT [ "bash" ]


================================================
FILE: kernel-builder/build_kernel
================================================
#!/bin/bash
set -e
set -o pipefail

linux_next(){
	local dir="/usr/src/linux-next"

	# Check if we already have the source for linux-next checked out.
	if [[ -d "$dir" ]]; then
		echo "Updating linux-next tree git remotes..."
		(
		cd "$dir"

		git checkout master
		git remote update
		)
	else
		echo "Cloning the git source for linux..."
		git clone https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git "$dir"

		echo "Adding the linux-next git remote..."
		(
		cd "$dir"

		git remote add linux-next https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
		)
	fi

	echo "Fetching the linux-next remote and updating tags..."
	(
	cd "$dir"

	git fetch linux-next
	git fetch --tags linux-next
	)

	local branch
	branch="next-$(date +%Y%m%d)"
	echo "Checking out the correct branch ${branch}..."
	(
	cd "$dir"

	git checkout -b "$branch" "$branch"
	)
}

install_kernel(){
	local VERSION=$1
	local OPT=$2
	local DIR="/usr/src/linux-${VERSION}"

	if [[ -z $VERSION ]]; then
		echo "Please specify a kernel version."
		exit 1
	elif [[ "$VERSION" == "next" ]]; then
		DIR="/usr/src/linux-next"
		linux_next
	fi

	if [[ "$VERSION" != "next" ]]; then
		local MAJOR_VERSION=${VERSION:0:1}
		local V=( "${VERSION//./ }" )
		local MAJOR_MINOR_VERSION="${V[0]}.${V[1]}"

		# Get the kernel source.
		echo "Getting the kernel source for linux-${VERSION}..."
		echo "This might take a bit to download. Hang tight!"
		if [[ "$VERSION" == *-rc* ]]; then
			[ -d "$DIR" ] || curl -sSL "https://git.kernel.org/torvalds/t/linux-${VERSION}.tar.gz" | tar -C /usr/src -xz

			MAJOR_MINOR_VERSION="${MAJOR_VERSION}.x-rcN"
		else
			[ -d "/usr/src/linux-${VERSION}" ] || curl -sSL "https://cdn.kernel.org/pub/linux/kernel/v${MAJOR_VERSION}.x/linux-${VERSION}.tar.xz" | tar -C /usr/src -xJ
		fi

		# Git clone and apply the patches for the aufs filesystem.
		if [[ "$OPT" == "aufs" ]] && [[ ! -d "${DIR}/fs/aufs" ]]; then
			aufsdir=/aufs4-standalone

			echo "Cloning the git patches for the aufs filesystem..."
			git clone --depth 1 --branch "aufs${MAJOR_MINOR_VERSION}" --single-branch https://github.com/sfjro/aufs4-standalone.git "$aufsdir"

			(
			cd "$DIR"

			echo "Applying patch for the aufs filesystem..."
			git apply $aufsdir/aufs4-kbuild.patch
			git apply $aufsdir/aufs4-base.patch
			git apply $aufsdir/aufs4-mmap.patch
			cp -r $aufsdir/{Documentation,fs} .
			cp $aufsdir/include/uapi/linux/aufs_type.h include/uapi/linux/
			)
		fi
	fi


	# Install Wireguard VPN into the kernel.
	if [[ "$OPT" == "wireguard" ]] && [[ ! -f "${DIR}/net/wireguard/allowedips.c" ]]; then
		echo "Applying patch for Wireguard VPN..."
		(
		cd "$DIR"
		/wireguard/contrib/kernel-tree/create-patch.sh | patch -p1
		)
		echo "Patch for Wireguard VPN successfully applied!"
	fi

	# Copy the config from /usr/src/config if it does not already exist.
	if [[ ! -f "${DIR}/.config" ]] && [[ -f "/usr/src/config" ]]; then
		(
		cd "$DIR"

		cp ../config .config

		# Add the config options for the aufs filesystem.
		if [[ "$OPT" == "aufs" ]]; then
			echo "CONFIG_AUFS_FS=y" >> .config
		fi

		# Add the config options for Wireguard VPN.
		if [[ "$OPT" == "wireguard" ]]; then
			echo "CONFIG_WIREGUARD=y" >> .config
		fi
		)
	fi

	(
	cd "$DIR"

	echo "Building the kernel..."
	make -j"$JOBS"
	echo "Installing the modules..."
	make modules_install
	echo "Installing the kernel..."
	make install
	)
	(
	echo "Stripping the modules..."
	find /lib/modules/ -name "*.ko" -exec strip --strip-unneeded {} +
	)
}

# shellcheck disable=SC2068
install_kernel $@

echo "Kernel successfully installed!"
echo "You will now want to run:"
echo "    update-initramfs -u -k all"
echo "and"
echo "    update-grub2"
echo "or the equivalent for your system."


================================================
FILE: kicad/Dockerfile
================================================
FROM debian:bullseye-slim
LABEL maintainer "Jessie Frazelle <jess@linux.com>"

RUN apt-get update && apt-get install -y \
	kicad \
	--no-install-recommends \
	&& rm -rf /var/lib/apt/lists/*

ENTRYPOINT [ "kicad" ]


================================================
FILE: kvm/Dockerfile
================================================
# Run libvirt deamon in a container
#
# docker run -d \
#	--privileged \
#	-v /var/run/libvirt:/var/run/libvirt \
#	--name kvm \
#	jess/kvm
#
FROM debian:sid-slim
LABEL maintainer "Jessie Frazelle <jess@linux.com>"

RUN apt-get update && apt-get install -y \
	dnsmasq \
	gir1.2-spiceclientgtk-3.0 \
	iproute2 \
	iptables \
	libgl1-mesa-dri \
	libgl1-mesa-glx \
	libvirt-daemon-system \
	procps \
	python-gi \
	qemu-kvm \
	virtinst \
	virt-manager \
	virt-viewer \
	--no-install-recommends \
	&& rm -rf /var/lib/apt/lists/*

COPY ./start.sh /start.sh

ENTRYPOINT ["/start.sh"]
CMD ["virt-manager", "--no-fork"]


================================================
FILE: kvm/start.sh
================================================
#!/bin/bash
set -e
set -o pipefail

# add the correct user perms
echo "Adding the user groups..."
gpasswd -a root libvirt
gpasswd -a root kvm
chown root:kvm /dev/kvm

# allow root user to use qemu
echo 'user = "root"' >> /etc/libvirt/qemu.conf
echo 'group = "root"' >> /etc/libvirt/qemu.conf

# create the bridge for networking
echo "Creating the bridge for networking..."
ip link add name virt0 type bridge
ip link set dev virt0 up
bridge link
ip addr add dev virt0 172.20.0.1/16
iptables -t nat -A POSTROUTING -s 172.20.0.1/16 -j MASQUERADE

# start the virtlogd daemon
echo "Starting virtlogd..."
virtlogd &

# start libvirtd
echo "Starting libvirtd..."
libvirtd &

# put in a sleep for services to start
echo "Sleeping while services start..."
sleep 5

# start the default networking
echo "Creating the default networking..."
virsh net-start default

# import existing vms
echo "Importing any existing VMs..."
for f in /root/kvm/*.xml; do
	echo "Importing $(basename "$f")..."
	virsh define "$f"
done

echo "Starting virt-manager..."
# shellcheck disable=SC2068
exec $@


================================================
FILE: latest-versions.sh
================================================
#!/bin/bash
# This script gets the latest GitHub releases for the specified projects.

if [[ -z "$GITHUB_TOKEN" ]]; then
	echo "Set the GITHUB_TOKEN env variable."
	exit 1
fi

URI=https://api.github.com
API_VERSION=v3
API_HEADER="Accept: application/vnd.github.${API_VERSION}+json"
AUTH_HEADER="Authorization: token ${GITHUB_TOKEN}"

get_latest() {
	local repo=$1

	local resp
	resp=$(curl -sSL -H "${AUTH_HEADER}" -H "${API_HEADER}" "${URI}/repos/${repo}/releases")
	if [[ "$repo" != "Radarr/Radarr" ]]; then
		resp=$(echo "$resp" | jq --raw-output '[.[] | select(.prerelease == false)]')
	fi
	local tag
	tag=$(echo "$resp" | jq -e --raw-output .[0].tag_name)
	local name
	name=$(echo "$resp" | jq -e --raw-output .[0].name)

	if [[ "$tag" == "null" ]]; then
		# get the latest tag
		resp=$(curl -sSL -H "${AUTH_HEADER}" -H "${API_HEADER}" "${URI}/repos/${repo}/tags")
		tag=$(echo "$resp" | jq -e --raw-output .[0].name)
		tag=${tag#release-}
	fi

	if [[ "$name" == "null" ]] || [[ "$name" == "" ]]; then
		name="-"
	fi

	local dir=${repo#*/}

	if [[ "$dir" == "CouchPotatoServer" ]]; then
		dir="couchpotato"
	elif [[ "$dir" == "cri-o" ]]; then
		dir="crio"
	elif [[ "$dir" == "byte-unixbench" ]]; then
		dir="unixbench"
	elif [[ "$dir" == "Tautulli" ]]; then
		dir="plexpy"
	elif [[ "$dir" == "zookeeper" ]]; then
		dir="zookeeper/3.6"
	elif [[ "$dir" == "oauth2_proxy" ]]; then
		dir="oauth2-proxy"
	fi

	# Change to upper case for grep
	local udir
	udir=$(echo $dir | awk '{print toupper($0)}')
	# Replace dashes (-) with underscores (_)
	udir=${udir//-/_}
	udir=${udir%/*}

	if [[ "$dir" == "wireguard-tools" ]]; then
		dir="wireguard/install"
		udir="WIREGUARD_TOOLS"
	elif [[ "$dir" == "wireguard-linux-compat" ]]; then
		dir="wireguard/install"
		udir="WIREGUARD"
	fi

	local current
	if [[ ! -d "$dir" ]]; then
		# If the directory does not exist, then grep all for it
		current=$(grep -m 1 "${udir}_VERSION" -- **/Dockerfile | head -n 1 | awk '{print $(NF)}')
	else
		current=$(grep -m 1 "${udir}_VERSION" "${dir}/Dockerfile" | awk '{print $(NF)}')
	fi


	compare "$name" "$dir" "$tag" "$current" "https://github.com/${repo}/releases"
}

get_latest_unifi() {
	local latest current
	latest=$(curl -sSL http://www.ubnt.com/downloads/unifi/debian/dists/cloudkey-stable/ubiquiti/binary-armhf/Packages \
		| awk 'BEGIN {FS="\n"; RS="";} /^Package: unifi/' \
		| awk '/^Version:/ {print $2}' \
		| cut -d- -f1)

	current=$(grep -m 1 UNIFI_VERSION unifi/Dockerfile | tr '"' ' ' | awk '{print $(NF)}')

	compare unifi unifi "$latest" "$current" https://www.ubnt.com/download/unifi
}

compare() {
	local name="$1" dir="$2" tag="$3" current="$4" releases="$5"
	ignore_dirs=( "mc" "zookeeper/3.6" )

	if [[ "$tag" =~ $current ]] || [[ "$name" =~ $current ]] || [[ "$current" =~ $tag ]] || [[ "$current" == "master" ]]; then
		echo -e "\\e[36m${dir}:\\e[39m current ${current} | ${tag} | ${name}"
	else
		# add to the bad versions
		if [[ ! " ${ignore_dirs[*]} " =~  ${dir}  ]]; then
			bad_versions+=( "${dir}" )
		fi
		echo -e "\\e[31m${dir}:\\e[39m current ${current} | ${tag} | ${name} | ${releases}"
	fi
}

projects=(
	iovisor/bcc
	iovisor/bpftrace
	browsh-org/browsh
	certbot/certbot
	cloudflare/cfssl
	quay/clair
	hashicorp/consul
	coredns/coredns
	CouchPotato/CouchPotatoServer
	curl/curl
	kolide/fleet
	GoogleCloudPlatform/cloud-sdk-docker
	google/gitiles
	google/guetzli
	irssi/irssi
	cryptodotis/irssi-otr
	keepassxreboot/keepassxc
	robertdavidgraham/masscan
	MidnightCommander/mc
	zyedidia/micro
	mitmproxy/mitmproxy
	hashicorp/nomad
	nzbget/nzbget
	pusher/oauth2_proxy
	facebook/osquery
	hashicorp/packer
	Tautulli/Tautulli
	perkeep/perkeep
	pomerium/pomerium
	powershell/powershell
	Radarr/Radarr
	cesanta/docker_auth
	ricochet-im/ricochet
	reverse-shell/routersploit
	rstudio/rstudio
	tarsnap/tarsnap
	nginx/nginx
	simplresty/ngx_devel_kit
	openresty/luajit2
	openresty/lua-cjson
	openresty/lua-nginx-module
	leev/ngx_http_geoip2_module
	maxmind/libmaxminddb
	openresty/lua-resty-core
	openresty/lua-resty-lrucache
	hashicorp/terraform
	kdlucas/byte-unixbench
	mitchellh/vagrant
	hashicorp/vault
	containrrr/watchtower
	wireguard/wireguard-tools
	wireguard/wireguard-linux-compat
	znc/znc
	apache/zookeeper
	tianon/gosu
)

other_projects=(
	unifi
)

bad_versions=()

main() {
	# shellcheck disable=SC2068
	for p in ${projects[@]}; do
		get_latest "$p"
	done
	# shellcheck disable=SC2068
	for p in ${other_projects[@]}; do
		get_latest_"$p"
	done

	if [[ ${#bad_versions[@]} -ne 0 ]]; then
		echo
		echo "These Dockerfiles are not up to date: ${bad_versions[*]}" >&2
		exit 1
	fi
}

main


================================================
FILE: libreoffice/Dockerfile
================================================
# Run Libreoffice in a container

# docker run -d \
#	-v /etc/localtime:/etc/localtime:ro \
#	-v /tmp/.X11-unix:/tmp/.X11-unix \
#	-e DISPLAY=unix$DISPLAY \
#	-v $HOME/slides:/root/slides \
#	-e GDK_SCALE \
#	-e GDK_DPI_SCALE \
#	--name libreoffice \
#	jess/libreoffice
#
FROM alpine:latest
LABEL maintainer "Jessie Frazelle <jess@linux.com>"

RUN apk --no-cache add \
	--repository http://dl-cdn.alpinelinux.org/alpine/edge/testing \
	libreoffice \
	ttf-dejavu

ENTRYPOINT [ "libreoffice" ]


================================================
FILE: libvirt-client/Dockerfile
================================================
FROM alpine:latest
LABEL maintainer "Jessie Frazelle <jess@linux.com>"

RUN apk --no-cache add \
	libvirt-client

ENTRYPOINT [ "virsh", "-c", "qemu:///system" ]


================================================
FILE: lilyterm/Dockerfile
================================================
# To use:
#	docker run -v /tmp/.X11-unix:/tmp/.X11-unix \
#		-e DISPLAY=unix$DISPLAY \
#		jess/lilyterm
#

# Base docker image
FROM debian:bullseye-slim
LABEL maintainer "Jessie Frazelle <jess@linux.com>"

# Install all the things
RUN apt-get update && apt-get install -y \
	mesa-utils \
	dbus \
	lilyterm \
	--no-install-recommends \
	&& rm -rf /var/lib/apt/lists/*

ENTRYPOINT [ "lilyterm" ]


================================================
FILE: linapple/Dockerfile
================================================
FROM alpine:latest

RUN apk --no-cache add \
	ca-certificates \
	libcurl \
	libgcc \
	libstdc++ \
	libzip \
	sdl

RUN set -x \
	&& apk add --no-cache --virtual .build-deps \
		build-base \
		bzip2 \
		curl \
		curl-dev \
		libzip-dev \
		make \
		sdl-dev \
		tar \
	&& curl -sSL "https://beotiger.com/download/linapple_src-2b" -o /tmp/linapple.tar.bz2 \
	&& mkdir -p /usr/src/linapple \
	&& tar -xjf /tmp/linapple.tar.bz2 -C /usr/src/linapple --strip-components=1 \
	&& rm /tmp/linapple.tar.bz2 \
	&& ( \
		cd /usr/src/linapple/src \
		&& make \
		&& make install \
	) \
	&& apk del .build-deps

COPY Frogger.dsk /usr/src/games/
COPY quest1.dsk /usr/src/games/

ENTRYPOINT ["linapple"]
CMD ["-1", "/usr/src/games/quest1.dsk"]


================================================
FILE: lkp-tests/Dockerfile
================================================
FROM debian:buster-slim
LABEL maintainer "Jessie Frazelle <jess@linux.com>"

ENV DEBIAN_FRONTEND noninteractive

# install deps do this in sections so the layers are not mazzive
RUN dpkg --add-architecture i386 \
	&& apt-get update && apt-get install -y \
	automake \
	bc \
	binutils-dev \
	bison \
	build-essential \
	bzip2 \
	ca-certificates \
	cpio \
	fakeroot \
	flex \
	gawk \
	gcc \
	git \
	gzip \
	hdparm \
	iperf \
	kmod \
	--no-install-recommends \
	&& rm -rf /var/lib/apt/lists/*

RUN apt-get update && apt-get install -y \
	libaudit-dev \
	libbabeltrace-ctf-dev \
	libc6-dev \
	libc6-dev:i386 \
	libdw-dev \
	libiberty-dev \
	libklibc-dev \
	liblzma-dev \
	libnuma-dev \
	libperl-dev \
	libslang2-dev \
	libssl-dev \
	libtool \
	libunwind-dev \
	linux-libc-dev \
	linux-libc-dev:i386 \
	linux-perf \
	--no-install-recommends \
	&& rm -rf /var/lib/apt/lists/* \
	&& ln -snf /usr/bin/perf_4.9 /usr/bin/perf

RUN apt-get update && apt-get install -y \
	make \
	nfs-common \
	openssl \
	patch \
	perl \
	procps \
	psmisc \
	python-dev \
	rsync \
	rt-tests \
	ruby \
	ruby-dev \
	sysstat \
	systemtap-sdt-dev \
	time \
	wget \
	zlib1g-dev \
	--no-install-recommends \
	&& rm -rf /var/lib/apt/lists/*

ENV KERNEL_VERSION v4.13
ENV LKP_GIT_WORK_TREE /usr/src/linux
RUN git clone -b "${KERNEL_VERSION}" https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux.git "${LKP_GIT_WORK_TREE}"

ENV LKP_SRC /usr/src/lkp-tests
RUN	git clone https://github.com/fengguang/lkp-tests.git "${LKP_SRC}"

WORKDIR /usr/src/lkp-tests

RUN make install \
	&& lkp install

COPY runbench /usr/local/bin/runbench

CMD [ "lkp" ]


================================================
FILE: lkp-tests/runbench
================================================
#!/bin/bash
set -e
set -o pipefail

ARG=$1
JOB_FILE="./jobs/${ARG}.yaml"

if [[ ! -f "$JOB_FILE" ]]; then
	echo "$JOB_FILE does not exist, please select a job that is in the jobs directory." 1>&2;
	echo "For example:" 1>&2;
	echo "     runbench hackbench-100" 1>&2;
	exit 1
fi

# mount the debug filesystem
if ! grep -qs '/sys/kernel/debug' /proc/mounts; then
	mount -t debugfs none /sys/kernel/debug/
fi

echo "Installing dependencies for ${ARG}..."
lkp install "$JOB_FILE"

echo "Running ${ARG}..."
lkp run "$JOB_FILE" || true

echo "Getting result from ${ARG}..."
lkp stat -p "${ARG}"


================================================
FILE: lpass/Dockerfile
================================================
FROM alpine:latest
LABEL maintainer "Jessie Frazelle <jess@linux.com>"

RUN apk add --no-cache \
	ca-certificates \
	curl \
	libxml2 \
	libressl \
	xclip \
	--repository http://dl-cdn.alpinelinux.org/alpine/edge/main

RUN set -x \
	&& apk add --no-cache --virtual .build-deps \
		autoconf \
		automake \
		build-base \
		cmake \
		curl-dev \
		git \
		libressl-dev \
		libxml2-dev \
	&& git clone --depth 1 https://github.com/LastPass/lastpass-cli.git /usr/src/lastpass-cli \
	&& ( \
		cd /usr/src/lastpass-cli \
		&& cmake . \
		&& make \
		&& make install \
	) \
	&& rm -rf /usr/src/lastpass-cli \
	&& apk del .build-deps

ENTRYPOINT [ "lpass" ]


================================================
FILE: lynx/Dockerfile
================================================
# Run Lynx in a conatiner
#
# docker run --rm -it \
#	--name lynx \
#	jess/lynx github.com/jessfraz
#
FROM debian:bullseye-slim
LABEL maintainer "Jessie Frazelle <jess@linux.com>"

RUN apt-get update && apt-get install -y \
	lynx \
	--no-install-recommends \
	&& rm -rf /var/lib/apt/lists/*

ENTRYPOINT [ "lynx" ]


================================================
FILE: mailgun/Dockerfile
================================================
FROM r.j3ss.co/curl
LABEL maintainer "Jessie Frazelle <jess@linux.com>"

RUN apk add --no-cache \
	bash

COPY sendemail /usr/bin/sendemail

ENTRYPOINT [ "sendemail" ]


================================================
FILE: mailgun/sendemail
================================================
#!/bin/bash
set -e
set -o pipefail
set -x

if [[ -z "$MAILGUN_API_KEY" ]]; then
	echo "Set the MAILGUN_API_KEY env variable."
	exit 1
fi

if [[ -n "$MAILGUN_DOMAIN" ]]; then
	MAILGUN_DOMAIN_NAME=$MAILGUN_DOMAIN
fi

if [[ -z "$MAILGUN_DOMAIN_NAME" ]]; then
	echo "Set the MAILGUN_DOMAIN_NAME env variable."
	exit 1
fi

if [[ -z "$TO_NAME" ]]; then
	echo "Set the TO_NAME env variable."
	exit 1
fi

if [[ -z "$TO_EMAIL" ]]; then
	echo "Set the TO_EMAIL env variable."
	exit 1
fi

if [[ -z "$SUBJECT" ]]; then
	echo "Set the SUBJECT env variable."
	exit 1
fi

if [[ -z "$BODY" ]]; then
	echo "Set the BODY env variable."
	exit 1
fi

curl -sSL --user "api:${MAILGUN_API_KEY}" \
	"https://api.mailgun.net/v3/${MAILGUN_DOMAIN_NAME}/messages" \
	-F 'from="Mailgun API <mailgun@'"${MAILGUN_DOMAIN_NAME}"'>"' \
	-F "to=${TO_NAME}" \
	-F "to=${TO_EMAIL}" \
	-F 'subject="'"${SUBJECT}"'"' \
	-F 'text="'"${BODY}"'"'


================================================
FILE: mars/Dockerfile
================================================
FROM openjdk:8-alpine

RUN set -x \
	&& apk add --no-cache --virtual .build-deps \
		ca-certificates \
		curl \
	&& curl -sSL "http://courses.missouristate.edu/KenVollmar/mars/MARS_4_5_Aug2014/Mars4_5.jar" -o /mars.jar \
	&& apk del .build-deps

ENTRYPOINT ["java", "-jar", "/mars.jar", "nc"]


================================================
FILE: masscan/Dockerfile
================================================
FROM alpine:latest
LABEL maintainer "Jessie Frazelle <jess@linux.com>"

RUN apk add --no-cache \
	ca-certificates \
	libpcap-dev

ENV MASSCAN_VERSION 1.0.5

RUN set -x \
	&& apk add --no-cache --virtual .build-deps \
		build-base \
		clang \
		clang-dev \
		git \
		linux-headers \
	&& rm -rf /var/lib/apt/lists/* \
	&& git clone --depth 1 --branch "$MASSCAN_VERSION" https://github.com/robertdavidgraham/masscan.git /usr/src/masscan \
	&& ( \
	cd /usr/src/masscan \
	&& make \
	&& make install \
	) \
	&& rm -rf /usr/src/masscan \
	&& apk del .build-deps

ENTRYPOINT [ "masscan" ]


================================================
FILE: mc/Dockerfile
================================================
FROM alpine:latest
LABEL maintainer "Jessie Frazelle <jess@linux.com>"

RUN apk add --no-cache \
		glib \
		libintl \
		libssh2 \
		ncurses-libs

ENV TERM xterm

# Create user and change ownership
RUN addgroup -g 1001 -S mc \
    && adduser -u 1001 -SHG mc mc \
    && mkdir -p /home/mc/.mc

ENV MC_VERSION 4.8.21

RUN set -x \
	&& apk add --no-cache --virtual .build-deps \
		aspell-dev \
		autoconf \
		automake \
		build-base \
		ca-certificates \
		curl \
		e2fsprogs-dev \
		gettext-dev \
		git \
		glib-dev \
		libssh2-dev \
		libtool \
		ncurses-dev \
		pcre-dev \
	&& git clone --depth 1 --branch "$MC_VERSION" https://github.com/MidnightCommander/mc.git /usr/src/mc \
	&& ( \
		cd /usr/src/mc \
		&& ./autogen.sh \
		&& ./configure \
			--prefix=/usr \
			--libexecdir=/usr/lib \
			--mandir=/usr/share/man \
			--sysconfdir=/etc \
			--enable-background \
			--enable-charset \
			--enable-largefile \
			--enable-vfs-sftp \
			--with-internal-edit \
			--with-mmap \
			--with-screen=ncurses \
			--with-subshell \
			--without-gpm-mouse \
			--without-included-gettext \
			--without-x \
			--enable-aspell \
		&& make \
		&& make install \
	) \
	&& curl -sSL "https://raw.githubusercontent.com/nkulikov/mc-solarized-skin/master/solarized.ini" > /home/mc/.mc/solarized.ini \
	&& rm -rf /usr/src/mc \
	&& apk del .build-deps \
	&& chown -R mc:mc /home/mc

ENV HOME=/home/mc

ENV MC_SKIN=${HOME}/.mc/solarized.ini

WORKDIR ${HOME}

ENTRYPOINT [ "mc" ]


================================================
FILE: mdp/Dockerfile
================================================
FROM debian:bullseye-slim
LABEL maintainer "Jessie Frazelle <jess@linux.com>"

RUN apt-get update && apt-get install -y \
	ca-certificates \
	gcc \
	git \
	libncurses5 \
	libncurses5-dev \
	libncursesw5 \
	libncursesw5-dev \
	make \
	--no-install-recommends \
	&& rm -rf /var/lib/apt/lists/*

RUN git clone --depth 1 --recursive https://github.com/visit1985/mdp.git /src

WORKDIR /src

ENV TERM	xterm-256color
ENV DEBUG	1

RUN make \
	&& make install

ENTRYPOINT [ "/usr/local/bin/mdp" ]


================================================
FILE: micro/Dockerfile
================================================
FROM golang:alpine as builder
LABEL maintainer "Christian Koep <christiankoep@gmail.com>"

RUN apk --no-cache add \
	ca-certificates \
	git \
	make

ENV PATH /go/bin:/usr/local/go/bin:$PATH
ENV GOPATH /go

ENV MICRO_VERSION v2.0.4

RUN git clone --depth 1 --branch "$MICRO_VERSION" https://github.com/zyedidia/micro /go/src/github.com/zyedidia/micro

WORKDIR /go/src/github.com/zyedidia/micro

RUN make install

FROM alpine:latest

COPY --from=builder /go/bin/micro /usr/bin/micro
COPY --from=builder /etc/ssl/certs/ /etc/ssl/certs

ENTRYPOINT [ "micro" ]


================================================
FILE: mitmproxy/Dockerfile
================================================
FROM debian:bullseye-slim
LABEL maintainer "Jessie Frazelle <jess@linux.com>"

ENV LANG=en_US.UTF-8

RUN apt-get update && apt-get install -y \
	ca-certificates \
	curl \
	--no-install-recommends \
	&& rm -rf /var/lib/apt/lists/*

# Add our user first to make sure the ID get assigned consistently,
# regardless of whatever dependencies get added.
RUN groupadd -r mitmproxy && useradd -r -g mitmproxy mitmproxy \
    && mkdir -p /home/mitmproxy/.mitmproxy \
	&& chown -R mitmproxy:mitmproxy /home/mitmproxy

# Download the binaries.
ENV MITMPROXY_VERSION 5.1.1
RUN curl -sSL "https://snapshots.mitmproxy.org/${MITMPROXY_VERSION}/mitmproxy-${MITMPROXY_VERSION}-linux.tar.gz" | tar -vxzC /usr/local/bin

VOLUME /home/mitmproxy/.mitmproxy

COPY docker-entrypoint.sh /usr/local/bin/

EXPOSE 8080 8081

ENTRYPOINT ["docker-entrypoint.sh"]
CMD ["mitmproxy"]


================================================
FILE: mitmproxy/docker-entrypoint.sh
================================================
#!/bin/sh
set -e

MITMPROXY_PATH="/home/mitmproxy/.mitmproxy"

if [ "$1" = "mitmdump" ] || [ "$1" = "mitmproxy" ] || [ "$1" = "mitmweb" ]; then
	mkdir -p "$MITMPROXY_PATH"
	chown -R mitmproxy:mitmproxy "$MITMPROXY_PATH"

	su mitmproxy -c "$@"
else
	exec "$@"
fi


================================================
FILE: mop/Dockerfile
================================================
# Run mop-tracker in a container
#
# docker run -it --rm \
# 	-v ~/.moprc:/root/.moprc \
# 	--name mop \
# 	r.j3ss.co/mop
#
FROM golang:alpine as builder

RUN apk --no-cache add \
	ca-certificates \
	git

ENV PATH /go/bin:/usr/local/go/bin:$PATH
ENV GOPATH /go

RUN go get github.com/mop-tracker/mop/cmd/mop

FROM alpine:latest
COPY --from=builder /go/bin/mop /usr/bin/mop
COPY --from=builder /etc/ssl/certs/ /etc/ssl/certs
ENTRYPOINT [ "mop" ]


================================================
FILE: mpd/Dockerfile
================================================
# Music player daemon
#
# docker run -d \
#	--device /dev/snd \
#	-v /etc/localtime:/etc/localtime:ro \
#	-v $HOME/.mpd:/var/lib/mpd \
#	-p 6600:6600 \
#	--name mpd \
#	jess/mpd
#
FROM debian:sid-slim
LABEL maintainer "Jessie Frazelle <jess@linux.com>"

RUN apt-get update && apt-get install -y \
	mpc \
	mpd \
	nfs-common \
	sudo \
	--no-install-recommends \
	&& rm -rf /var/lib/apt/lists/*

run mkdir -p /var/lib/mpd/playlists \
	&& mkdir -p /var/lib/mpd/music \
	&& touch /var/lib/mpd/state \
	&& touch /var/lib/mpd/tag_cache \
	&& chmod 0777 -R /var/lib/mpd \
	&& chown -R mpd /var/lib/mpd

# my user needs the ability to mount
# because all my music is in a nfs mount
RUN echo "mpd ALL=NOPASSWD: /usr/bin/mount, /sbin/mount.nfs, /usr/bin/umount" >> /etc/sudoers

ENV HOME /home/mpd
COPY mpd.conf /etc/mpd.conf
COPY mpd.sh /usr/local/bin/mpd.sh

WORKDIR $HOME
USER mpd

ENTRYPOINT [ "/usr/local/bin/mpd.sh" ]


================================================
FILE: mpd/mpd.conf
================================================
# An example configuration file for MPD.
# Read the user manual for documentation: http://www.musicpd.org/doc/user/
# or /usr/share/doc/mpd/user-manual.html


# Files and directories #######################################################
#
# This setting controls the top directory which MPD will search to discover the
# available audio files and add them to the daemon's online database. This 
# setting defaults to the XDG directory, otherwise the music directory will be
# be disabled and audio files will only be accepted over ipc socket (using
# file:// protocol) or streaming files over an accepted protocol.
#
music_directory     "/var/lib/mpd/music"
#
# This setting sets the MPD internal playlist directory. The purpose of this
# directory is storage for playlists created by MPD. The server will use 
# playlist files not created by the server but only if they are in the MPD
# format. This setting defaults to playlist saving being disabled.
#
playlist_directory      "/var/lib/mpd/playlists"
#
# This setting sets the location of the MPD database. This file is used to
# load the database at server start up and store the database while the 
# server is not up. This setting defaults to disabled which will allow
# MPD to accept files over ipc socket (using file:// protocol) or streaming
# files over an accepted protocol.
#
db_file         "/var/lib/mpd/tag_cache"
# 
# These settings are the locations for the daemon log files for the daemon.
# These logs are great for troubleshooting, depending on your log_level
# settings.
#
# The special value "syslog" makes MPD use the local syslog daemon. This
# setting defaults to logging to syslog, otherwise logging is disabled.
#
log_file            "/var/log/mpd/mpd.log"
#
# This setting sets the location of the file which stores the process ID
# for use of mpd --kill and some init scripts. This setting is disabled by
# default and the pid file will not be stored.
#
pid_file            "/var/log/mpd/pid"
#
# This setting sets the location of the file which contains information about
# most variables to get MPD back into the same general shape it was in before
# it was brought down. This setting is disabled by default and the server 
# state will be reset on server start up.
#
state_file          "/var/lib/mpd/state"
#
# The location of the sticker database.  This is a database which
# manages dynamic information attached to songs.
#
sticker_file                   "/var/lib/mpd/sticker.sql"
#
###############################################################################


# General music daemon options ################################################
#
# This setting specifies the user that MPD will run as. MPD should never run as
# root and you may use this setting to make MPD change its user ID after
# initialization. This setting is disabled by default and MPD is run as the
# current user.
#
user                "mpd"
#
# This setting specifies the group that MPD will run as. If not specified
# primary group of user specified with "user" setting will be used (if set).
# This is useful if MPD needs to be a member of group such as "audio" to
# have permission to use sound card.
#
group                          "audio"
#
# This setting sets the address for the daemon to listen on. Careful attention
# should be paid if this is assigned to anything other then the default, any.
# This setting can deny access to control of the daemon. Choose any if you want
# to have mpd listen on every address
#
# For network
bind_to_address     "localhost"
#
# And for Unix Socket
#bind_to_address        "/run/mpd/socket"
#
# This setting is the TCP port that is desired for the daemon to get assigned
# to.
#
port               "6600"
#
# This setting controls the type of information which is logged. Available 
# setting arguments are "default", "secure" or "verbose". The "verbose" setting
# argument is recommended for troubleshooting, though can quickly stretch
# available resources on limited hardware storage.
#
#log_level          "default"
#
# If you have a problem with your MP3s ending abruptly it is recommended that 
# you set this argument to "no" to attempt to fix the problem. If this solves
# the problem, it is highly recommended to fix the MP3 files with vbrfix
# (available as vbrfix in the debian archive), at which
# point gapless MP3 playback can be enabled.
#
#gapless_mp3_playback           "yes"
#
# Setting "restore_paused" to "yes" puts MPD into pause mode instead
# of starting playback after startup.
#
#restore_paused "no"
#
# This setting enables MPD to create playlists in a format usable by other
# music players.
#
#save_absolute_paths_in_playlists   "no"
#
# This setting defines a list of tag types that will be extracted during the 
# audio file discovery process. The complete list of possible values can be
# found in the mpd.conf man page.
#metadata_to_use    "artist,album,title,track,name,genre,date,composer,performer,disc"
#
# This setting enables automatic update of MPD's database when files in 
# music_directory are changed.
#
#auto_update    "yes"
#
# Limit the depth of the directories being watched, 0 means only watch
# the music directory itself.  There is no limit by default.
#
#auto_update_depth "3"
#
###############################################################################


# Symbolic link behavior ######################################################
#
# If this setting is set to "yes", MPD will discover audio files by following 
# symbolic links outside of the configured music_directory.
#
#follow_outside_symlinks    "yes"
#
# If this setting is set to "yes", MPD will discover audio files by following
# symbolic links inside of the configured music_directory.
#
follow_inside_symlinks     "yes"
#
###############################################################################


# Zeroconf / Avahi Service Discovery ##########################################
#
# If this setting is set to "yes", service information will be published with
# Zeroconf / Avahi.
#
#zeroconf_enabled       "yes"
#
# The argument to this setting will be the Zeroconf / Avahi unique name for
# this MPD server on the network.
#
#zeroconf_name          "Music Player"
#
###############################################################################


# Permissions #################################################################
#
# If this setting is set, MPD will require password authorization. The password
# can setting can be specified multiple times for different password profiles.
#
#password                        "password@read,add,control,admin"
#
# This setting specifies the permissions a user has who has not yet logged in. 
#
#default_permissions             "read,add,control,admin"
#
###############################################################################


# Database #######################################################################
#

#database {
#       plugin "proxy"
#       host "other.mpd.host"
#       port "6600"
#}

# Input #######################################################################
#

input {
        plugin "curl"
#       proxy "proxy.isp.com:8080"
#       proxy_user "user"
#       proxy_password "password"
}

#
###############################################################################

# Audio Output ################################################################
#
# MPD supports various audio output types, as well as playing through multiple 
# audio outputs at the same time, through multiple audio_output settings 
# blocks. Setting this block is optional, though the server will only attempt
# autodetection for one sound card.
#
# An example of an ALSA output:
#
audio_output {
    type        "alsa"
    name        "My ALSA Device"
#   device      "hw:0,0"    # optional
#   mixer_type      "hardware"      # optional
#   mixer_device    "default"   # optional
#   mixer_control   "PCM"       # optional
#   mixer_index "0"     # optional
}
#
# An example of an OSS output:
#
#audio_output {
#   type        "oss"
#   name        "My OSS Device"
#   device      "/dev/dsp"  # optional
#   mixer_type      "hardware"      # optional
#   mixer_device    "/dev/mixer"    # optional
#   mixer_control   "PCM"       # optional
#}
#
# An example of a shout output (for streaming to Icecast):
#
#audio_output {
#   type        "shout"
#   encoding    "ogg"           # optional
#   name        "My Shout Stream"
#   host        "localhost"
#   port        "8000"
#   mount       "/mpd.ogg"
#   password    "hackme"
#   quality     "5.0"
#   bitrate     "128"
#   format      "44100:16:1"
#   protocol    "icecast2"      # optional
#   user        "source"        # optional
#   description "My Stream Description" # optional
#   url             "http://example.com"    # optional
#   genre       "jazz"          # optional
#   public      "no"            # optional
#   timeout     "2"         # optional
#   mixer_type      "software"              # optional
#}
#
# An example of a recorder output:
#
#audio_output {
#       type            "recorder"
#       name            "My recorder"
#       encoder         "vorbis"                # optional, vorbis or lame
#       path            "/var/lib/mpd/recorder/mpd.ogg"
##      quality         "5.0"                   # do not define if bitrate is defined
#       bitrate         "128"                   # do not define if quality is defined
#       format          "44100:16:1"
#}
#
# An example of a httpd output (built-in HTTP streaming server):
#
#audio_output {
#   type        "httpd"
#   name        "mpd"
#   encoder     "vorbis"        # optional, vorbis or lame
#   port        "8000"
#   bind_to_address "0.0.0.0"               # optional, IPv4 or IPv6
#   quality     "5.0"           # do not define if bitrate is defined
#   bitrate     "128"           # do not define if quality is defined
#   format      "44100:16:1"
#   max_clients     "0"                     # optional 0=no limit
#}
#
# An example of a pulseaudio output (streaming to a remote pulseaudio server)
# Please see README.Debian if you want mpd to play through the pulseaudio
# daemon started as part of your graphical desktop session!
#
#audio_output {
#   type        "pulse"
#   name        "My Pulse Output"
#   server      "remote_server"     # optional
#   sink        "remote_server_sink"    # optional
#}
#
# An example of a winmm output (Windows multimedia API).
#
#audio_output {
#   type        "winmm"
#   name        "My WinMM output"
#   device      "Digital Audio (S/PDIF) (High Definition Audio Device)" # optional
#       or
#   device      "0"     # optional
#   mixer_type  "hardware"  # optional
#}
#
# An example of an openal output.
#
#audio_output {
#   type        "openal"
#   name        "My OpenAL output"
#   device      "Digital Audio (S/PDIF) (High Definition Audio Device)" # optional
#}
#
## Example "pipe" output:
#
#audio_output {
#   type        "pipe"
#   name        "my pipe"
#   command     "aplay -f cd 2>/dev/null"
## Or if you're want to use AudioCompress
#   command     "AudioCompress -m | aplay -f cd 2>/dev/null"
## Or to send raw PCM stream through PCM:
#   command     "nc example.org 8765"
#   format      "44100:16:2"
#}
#
## An example of a null output (for no audio output):
#
#audio_output {
#   type        "null"
#   name        "My Null Output"
#   mixer_type      "none"                  # optional
#}
#
# If MPD has been compiled with libsamplerate support, this setting specifies 
# the sample rate converter to use.  Possible values can be found in the 
# mpd.conf man page or the libsamplerate documentation. By default, this is
# setting is disabled.
#
#samplerate_converter       "Fastest Sinc Interpolator"
#
###############################################################################


# Normalization automatic volume adjustments ##################################
#
# This setting specifies the type of ReplayGain to use. This setting can have
# the argument "off", "album", "track" or "auto". "auto" is a special mode that
# chooses between "track" and "album" depending on the current state of
# random playback. If random playback is enabled then "track" mode is used.
# See <http://www.replaygain.org> for more details about ReplayGain.
# This setting is off by default.
#
#replaygain         "album"
#
# This setting sets the pre-amp used for files that have ReplayGain tags. By
# default this setting is disabled.
#
#replaygain_preamp      "0"
#
# This setting sets the pre-amp used for files that do NOT have ReplayGain tags.
# By default this setting is disabled.
#
#replaygain_missing_preamp  "0"
#
# This setting enables or disables ReplayGain limiting.
# MPD calculates actual amplification based on the ReplayGain tags
# and replaygain_preamp / replaygain_missing_preamp setting.
# If replaygain_limit is enabled MPD will never amplify audio signal
# above its original level. If replaygain_limit is disabled such amplification
# might occur. By default this setting is enabled.
#
#replaygain_limit       "yes"
#
# This setting enables on-the-fly normalization volume adjustment. This will
# result in the volume of all playing audio to be adjusted so the output has 
# equal "loudness". This setting is disabled by default.
#
#volume_normalization       "no"
#
###############################################################################


# Character Encoding ##########################################################
#
# If file or directory names do not display correctly for your locale then you 
# may need to modify this setting.
#
filesystem_charset      "UTF-8"
#
# This setting controls the encoding that ID3v1 tags should be converted from.
#
id3v1_encoding          "UTF-8"
#
###############################################################################


# SIDPlay decoder #############################################################
#
# songlength_database:
#  Location of your songlengths file, as distributed with the HVSC.
#  The sidplay plugin checks this for matching MD5 fingerprints.
#  See http://www.c64.org/HVSC/DOCUMENTS/Songlengths.faq
#
# default_songlength:
#  This is the default playing time in seconds for songs not in the
#  songlength database, or in case you're not using a database.
#  A value of 0 means play indefinitely.
#
# filter:
#  Turns the SID filter emulation on or off.
#
#decoder {
#       plugin                  "sidplay"
#       songlength_database     "/media/C64Music/DOCUMENTS/Songlengths.txt"
#       default_songlength      "120"
#       filter "true"
#}
#
###############################################################################


================================================
FILE: mpd/mpd.sh
================================================
#!/bin/bash
set -e
set -o pipefail

mkdir -p /var/lib/mpd/{playlists,music} \
	&& touch /var/lib/mpd/{state,tag_cache} \
	&& chmod 0777 -R /var/lib/mpd \
	&& chown -R mpd /var/lib/mpd

exec mpd --no-daemon --stdout --verbose /etc/mpd.conf "$@"


================================================
FILE: mpsyt/Dockerfile
================================================
FROM python:3-alpine
LABEL maintainer "Justin Garrison <justinleegarrison@gmail.com>"

RUN apk add --no-cache \
	mplayer \
	mpv

RUN pip install mps-youtube

ENTRYPOINT ["mpsyt"]


================================================
FILE: mpsyt/README
================================================
mps-youtube
--------

Docker container for running (mpsyt)[https://github.com/np1/mps-youtube] inside 
a docker container.

Run with

```
docker run -v /dev/snd:/dev/snd -it --rm --privileged rothgar/mpsyt
```


================================================
FILE: mutt/.mutt/mailcap
================================================
application/octet-stream ; echo %s "can be anything..."                    ; copiousoutput
text/html                ; /usr/bin/elinks -dump %s ; nametemplate=%s.html ; copiousoutput
application/pdf          ; /usr/bin/zathura %s                             ; copiousoutput
image/*                  ; /usr/bin/mirage %s                              ; copiousoutput
audio/*                  ; /usr/bin/mplayer %s                             ; copiousoutput
video/*                  ; /usr/bin/mplayer %s                             ; copiousoutput


================================================
FILE: mutt/.mutt/mutt-colors-solarized-dark-16.muttrc
================================================
# vim: filetype=muttrc

#
#
# make sure that you are using mutt linked against slang, not ncurses, or
# suffer the consequences of weird color issues. use "mutt -v" to check this.

# custom body highlights -----------------------------------------------
# highlight my name and other personally relevant strings
color body          yellow          default         "(jessie|jessica|frazelle|jfrazelle|jessfraz|jess)"
# custom index highlights ----------------------------------------------
# messages which mention my name in the body
color index         yellow          default         "~b \"jessie|jessfraz|jfrazelle\" !~N !~T !~F !~p !~P"
#color index         J_cream         brightwhite     "~b \"phil(_g|\!| gregory| gold)|pgregory\" ~N !~T !~F !~p !~P"
#color index         yellow          cyan            "~b \"phil(_g|\!| gregory| gold)|pgregory\" ~T !~F !~p !~P"
#color index         yellow          J_magent        "~b \"phil(_g|\!| gregory| gold)|pgregory\" ~F !~p !~P"
## messages which are in reference to my mails
color index         brightmagenta        default         "~x \"(jess|jessie|jessica.frazelle)\\.docker\\.com\" !~N !~T !~F !~p !~P"
#color index         J_magent        brightwhite     "~x \"(mithrandir|aragorn)\\.aperiodic\\.net|thorin\\.hillmgt\\.com\" ~N !~T !~F !~p !~P"
#color index         J_magent        cyan            "~x \"(mithrandir|aragorn)\\.aperiodic\\.net|thorin\\.hillmgt\\.com\" ~T !~F !~p !~P"
#color index         J_magent        red             "~x \"(mithrandir|aragorn)\\.aperiodic\\.net|thorin\\.hillmgt\\.com\" ~F !~p !~P"

# for background in 16 color terminal, valid background colors include:
# base03, bg, black, any of the non brights

# basic colors ---------------------------------------------------------
color normal        brightyellow    default         
color error         red             default         
color tilde         black           default         
color message       cyan            default         
color markers       red             white           
color attachment    white           default         
color search        brightmagenta   default         
#color status        J_black         J_status        
color status        brightyellow    black           
color indicator     brightblack     yellow          
color tree          yellow          default                                     # arrow in threads

# basic monocolor screen
mono  bold          bold
mono  underline     underline
mono  indicator     reverse
mono  error         bold

# index ----------------------------------------------------------------

#color index         red             default         "~D(!~p|~p)"               # deleted
#color index         black           default         ~F                         # flagged
#color index         brightred       default         ~=                         # duplicate messages
#color index         brightgreen     default         "~A!~N!~T!~p!~Q!~F!~D!~P"  # the rest
#color index         J_base          default         "~A~N!~T!~p!~Q!~F!~D"      # the rest, new
color index         red             default         "~A"                        # all messages
color index         brightred       default         "~E"                        # expired messages
color index         blue            default         "~N"                        # new messages
color index         blue            default         "~O"                        # old messages
color index         brightmagenta   default         "~Q"                        # messages that have been replied to
color index         brightgreen     default         "~R"                        # read messages
color index         blue            default         "~U"                        # unread messages
color index         blue            default         "~U~$"                      # unread, unreferenced messages
color index         brightyellow    default         "~v"                        # messages part of a collapsed thread
color index         brightyellow    default         "~P"                        # messages from me
color index         cyan            default         "~p!~F"                     # messages to me
color index         cyan            default         "~N~p!~F"                   # new messages to me
color index         cyan            default         "~U~p!~F"                   # unread messages to me
color index         brightgreen     default         "~R~p!~F"                   # messages to me
color index         red             default         "~F"                        # flagged messages
color index         red             default         "~F~p"                      # flagged messages to me
color index         red             default         "~N~F"                      # new flagged messages
color index         red             default         "~N~F~p"                    # new flagged messages to me
color index         red             default         "~U~F~p"                    # new flagged messages to me
color index         black           red             "~D"                        # deleted messages
color index         brightcyan      default         "~v~(!~N)"                  # collapsed thread with no unread
color index         yellow          default         "~v~(~N)"                   # collapsed thread with some unread
color index         green           default         "~N~v~(~N)"                 # collapsed thread with unread parent
# statusbg used to indicated flagged when foreground color shows other status
# for collapsed thread
color index         red             black           "~v~(~F)!~N"                # collapsed thread with flagged, no unread
color index         yellow          black           "~v~(~F~N)"                 # collapsed thread with some unread & flagged
color index         green           black           "~N~v~(~F~N)"               # collapsed thread with unread parent & flagged
color index         green           black           "~N~v~(~F)"                 # collapsed thread with unread parent, no unread inside, but some flagged
color index         cyan            black           "~v~(~p)"                   # collapsed thread with unread parent, no unread inside, some to me directly
color index         yellow          red             "~v~(~D)"                   # thread with deleted (doesn't differentiate between all or partial)
#color index         yellow          default         "~(~N)"                    # messages in threads with some unread
#color index         green           default         "~S"                       # superseded messages
#color index         red             default         "~T"                       # tagged messages
#color index         brightred       red             "~="                       # duplicated messages

# message headers ------------------------------------------------------

#color header        brightgreen     default         "^"
color hdrdefault    brightgreen     default         
color header        brightyellow    default         "^(From)"
color header        blue            default         "^(Subject)"

# body -----------------------------------------------------------------

color quoted        blue            default         
color quoted1       cyan            default         
color quoted2       yellow          default         
color quoted3       red             default         
color quoted4       brightred       default         

color signature     brightgreen     default         
color bold          black           default         
color underline     black           default         
color normal        default         default         
#
color body          brightcyan      default         "[;:][-o][)/(|]"    # emoticons
color body          brightcyan      default         "[;:][)(|]"         # emoticons
color body          brightcyan      default         "[*]?((N)?ACK|CU|LOL|SCNR|BRB|BTW|CWYL|\
                                                     |FWIW|vbg|GD&R|HTH|HTHBE|IMHO|IMNSHO|\
                                                     |IRL|RTFM|ROTFL|ROFL|YMMV)[*]?"
color body          brightcyan      default         "[ ][*][^*]*[*][ ]?" # more emoticon?
color body          brightcyan      default         "[ ]?[*][^*]*[*][ ]" # more emoticon?

## pgp

color body          red             default         "(BAD signature)"
color body          cyan            default         "(Good signature)"
color body          brightblack     default         "^gpg: Good signature .*"
color body          brightyellow    default         "^gpg: "
color body          brightyellow    red             "^gpg: BAD signature from.*"
mono  body          bold                            "^gpg: Good signature"
mono  body          bold                            "^gpg: BAD signature from.*"

# yes, an insance URL regex
mono  body          underline                       "([a-z][a-z0-9+-]*://(((([a-z0-9_.!~*'();:&=+$,-]|%[0-9a-f][0-9a-f])*@)?((([a-z0-9]([a-z0-9-]*[a-z0-9])?)\\.)*([a-z]([a-z0-9-]*[a-z0-9])?)\\.?|[0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+)(:[0-9]+)?)|([a-z0-9_.!~*'()$,;:@&=+-]|%[0-9a-f][0-9a-f])+)(/([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*(;([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*
Download .txt
gitextract_xz9jgwmz/

├── .github/
│   ├── FUNDING.yml
│   └── workflows/
│       └── make-test.yml
├── .gitignore
├── LICENSE
├── Makefile
├── README.md
├── ab/
│   └── Dockerfile
├── afterthedeadline/
│   └── Dockerfile
├── android-tools/
│   └── Dockerfile
├── ansible/
│   └── Dockerfile
├── apt-file/
│   └── Dockerfile
├── aspell/
│   └── Dockerfile
├── atom/
│   └── Dockerfile
├── audacity/
│   └── Dockerfile
├── awscli/
│   └── Dockerfile
├── azure-cli/
│   └── Dockerfile
├── bashrc
├── bcc-tools/
│   ├── Dockerfile
│   └── entrypoint.sh
├── beeswithmachineguns/
│   └── Dockerfile
├── bpftrace/
│   └── Dockerfile
├── brok/
│   └── Dockerfile
├── browsh/
│   └── Dockerfile
├── build-all.sh
├── buttslock/
│   ├── Dockerfile
│   ├── buttslock.py
│   └── buttslock.sh
├── cathode/
│   └── Dockerfile
├── certbot/
│   └── Dockerfile
├── cf-reset-cache/
│   ├── Dockerfile
│   └── reset-cache.py
├── cfssl/
│   └── Dockerfile
├── checkup/
│   └── Dockerfile
├── cheese/
│   └── Dockerfile
├── chrome/
│   ├── beta/
│   │   ├── Dockerfile
│   │   └── local.conf
│   └── stable/
│       ├── Dockerfile
│       └── local.conf
├── chromium/
│   └── Dockerfile
├── clair/
│   └── Dockerfile
├── cli53/
│   └── Dockerfile
├── clisp/
│   ├── .clisprc.lisp
│   └── Dockerfile
├── cloudapp/
│   └── Dockerfile
├── consul/
│   └── Dockerfile
├── coredns/
│   └── Dockerfile
├── couchpotato/
│   └── Dockerfile
├── cura/
│   └── Dockerfile
├── curl/
│   └── Dockerfile
├── dcos-cli/
│   └── Dockerfile
├── debootstrap/
│   └── Dockerfile
├── distcc/
│   ├── Dockerfile
│   └── distccd-init
├── doctor/
│   └── Dockerfile
├── dunnet/
│   └── Dockerfile
├── evince/
│   └── Dockerfile
├── figma-wine/
│   └── Dockerfile
├── firefox/
│   ├── Dockerfile
│   ├── alpine/
│   │   └── Dockerfile
│   ├── entrypoint.sh
│   └── local.conf
├── fleet/
│   └── Dockerfile
├── fontforge/
│   └── Dockerfile
├── fontpatcher/
│   ├── Dockerfile
│   └── README.md
├── foss-heartbeat/
│   └── Dockerfile
├── freeradius/
│   └── Dockerfile
├── gcalcli/
│   └── Dockerfile
├── gcc/
│   └── Dockerfile
├── gcloud/
│   └── Dockerfile
├── geary/
│   └── Dockerfile
├── ghostscript/
│   └── Dockerfile
├── gimp/
│   └── Dockerfile
├── github-dev/
│   ├── Dockerfile
│   ├── cleanup-pr-branch
│   ├── release-email-notification
│   └── upload-assets
├── gitiles/
│   ├── Dockerfile
│   └── start.sh
├── gitserver/
│   ├── Dockerfile
│   ├── create_repo
│   └── start.sh
├── gitsome/
│   └── Dockerfile
├── gixy/
│   └── Dockerfile
├── glxgears/
│   └── Dockerfile
├── gmail-britta/
│   └── Dockerfile
├── gnuplot/
│   └── Dockerfile
├── golinks/
│   └── Dockerfile
├── gparted/
│   └── Dockerfile
├── guetzli/
│   └── Dockerfile
├── hollywood/
│   └── Dockerfile
├── htop/
│   └── Dockerfile
├── htpasswd/
│   └── Dockerfile
├── httpbin/
│   └── Dockerfile
├── httpie/
│   └── Dockerfile
├── iceweasel/
│   ├── Dockerfile
│   └── local.conf
├── imagemagick/
│   └── Dockerfile
├── imagemin/
│   └── Dockerfile
├── inkscape/
│   └── Dockerfile
├── irssi/
│   └── Dockerfile
├── john/
│   ├── Dockerfile
│   ├── john.ini
│   └── passwd.lst
├── jq/
│   └── Dockerfile
├── k8scan/
│   ├── Dockerfile
│   ├── main.go
│   └── main_test.go
├── keepass2/
│   └── Dockerfile
├── keepassxc/
│   └── Dockerfile
├── kernel-builder/
│   ├── Dockerfile
│   └── build_kernel
├── kicad/
│   └── Dockerfile
├── kvm/
│   ├── Dockerfile
│   └── start.sh
├── latest-versions.sh
├── libreoffice/
│   └── Dockerfile
├── libvirt-client/
│   └── Dockerfile
├── lilyterm/
│   └── Dockerfile
├── linapple/
│   ├── Dockerfile
│   ├── Frogger.dsk
│   └── quest1.dsk
├── lkp-tests/
│   ├── Dockerfile
│   └── runbench
├── lpass/
│   └── Dockerfile
├── lynx/
│   └── Dockerfile
├── mailgun/
│   ├── Dockerfile
│   └── sendemail
├── mars/
│   └── Dockerfile
├── masscan/
│   └── Dockerfile
├── mc/
│   └── Dockerfile
├── mdp/
│   └── Dockerfile
├── micro/
│   └── Dockerfile
├── mitmproxy/
│   ├── Dockerfile
│   └── docker-entrypoint.sh
├── mop/
│   └── Dockerfile
├── mpd/
│   ├── Dockerfile
│   ├── mpd.conf
│   └── mpd.sh
├── mpsyt/
│   ├── Dockerfile
│   └── README
├── mutt/
│   ├── .mutt/
│   │   ├── mailcap
│   │   ├── mutt-colors-solarized-dark-16.muttrc
│   │   ├── mutt-patch-highlighting.muttrc
│   │   ├── muttrc
│   │   └── signature
│   ├── Dockerfile
│   └── entrypoint.sh
├── ncmpc/
│   └── Dockerfile
├── neoman/
│   └── Dockerfile
├── nerdy/
│   ├── Dockerfile
│   ├── clippy.cow
│   └── lolcat
├── nes/
│   ├── Dockerfile
│   └── games/
│       ├── supermariobros.rom
│       └── zelda.rom
├── netcat/
│   └── Dockerfile
├── nginx-extras/
│   └── Dockerfile
├── nmap/
│   └── Dockerfile
├── no_new_privs/
│   ├── Dockerfile
│   ├── nnp
│   └── nnp.c
├── node-sonos/
│   └── Dockerfile
├── nomad/
│   └── Dockerfile
├── notify-osd/
│   ├── Dockerfile
│   └── org.freedesktop.Notifications.service
├── nzbget/
│   ├── Dockerfile
│   └── nzbget.conf
├── oauth2-proxy/
│   └── Dockerfile
├── openbmc/
│   └── Dockerfile
├── openscad/
│   └── Dockerfile
├── openvpn/
│   ├── Dockerfile
│   ├── README.md
│   └── docker-compose.yml
├── osquery/
│   ├── Dockerfile
│   └── osquery.example.conf
├── packer/
│   └── Dockerfile
├── pandoc/
│   └── Dockerfile
├── parrot-live/
│   └── Dockerfile
├── pdp-10/
│   └── its/
│       └── Dockerfile
├── perkeep/
│   └── Dockerfile
├── pivman/
│   └── Dockerfile
├── plex-home-theater/
│   └── Dockerfile
├── plexpy/
│   └── Dockerfile
├── pms/
│   └── Dockerfile
├── pomerium/
│   └── Dockerfile
├── pop/
│   ├── .gitignore
│   ├── Dockerfile
│   └── pop
├── postfix/
│   ├── Dockerfile
│   ├── rsyslog.conf
│   ├── runit_bootstrap
│   └── service/
│       ├── postfix/
│       │   ├── run
│       │   └── supervise/
│       │       └── .gitignore
│       └── rsyslog/
│           ├── run
│           └── supervise/
│               └── .gitignore
├── powershell/
│   └── Dockerfile
├── powershell-azure/
│   └── Dockerfile
├── privoxy/
│   ├── Dockerfile
│   └── privoxy.conf
├── protocol/
│   └── Dockerfile
├── pulseaudio/
│   ├── Dockerfile
│   ├── client.conf
│   ├── daemon.conf
│   └── default.pa
├── radarr/
│   ├── Dockerfile
│   └── entrypoint.sh
├── rainbowstream/
│   └── Dockerfile
├── rdesktop/
│   └── Dockerfile
├── registry-auth/
│   └── Dockerfile
├── remmina/
│   └── Dockerfile
├── requestbin/
│   └── Dockerfile
├── ricochet/
│   └── Dockerfile
├── routersploit/
│   └── Dockerfile
├── rstudio/
│   └── Dockerfile
├── rt-tests/
│   └── Dockerfile
├── run.sh
├── runc-rootless/
│   ├── Dockerfile
│   └── start.sh
├── s3cmd/
│   └── Dockerfile
├── scudcloud/
│   └── Dockerfile
├── shellcheck/
│   └── Dockerfile
├── shellcheck.sh
├── shorewall/
│   ├── Dockerfile
│   └── etc/
│       ├── interfaces
│       ├── masq
│       ├── policy
│       ├── rules
│       ├── shorewall.conf
│       └── zones
├── sickbeard/
│   └── Dockerfile
├── skype/
│   ├── Dockerfile
│   └── run-skype-and-wait-for-exit
├── slack/
│   └── Dockerfile
├── slapd/
│   ├── Dockerfile
│   └── start.sh
├── sonarr/
│   ├── Dockerfile
│   └── entrypoint.sh
├── spotify/
│   └── Dockerfile
├── spotify-wine/
│   └── Dockerfile
├── strace/
│   └── Dockerfile
├── stress/
│   └── Dockerfile
├── sublime-text-3/
│   ├── Dockerfile
│   └── run.sh
├── t/
│   └── Dockerfile
├── tarsnap/
│   └── Dockerfile
├── telize/
│   ├── Dockerfile
│   ├── country-code3.conf
│   ├── mime.types
│   ├── nginx.conf
│   ├── telize.conf
│   ├── timezone-offset.conf
│   └── tz-offset.lua
├── telnet/
│   └── Dockerfile
├── termboy/
│   ├── Dockerfile
│   └── games/
│       ├── donkey-kong-lang.gb
│       ├── mspacman.gb
│       └── zelda.gb
├── terraform/
│   └── Dockerfile
├── test.sh
├── tetris/
│   └── Dockerfile
├── texlive/
│   └── Dockerfile
├── tor-browser/
│   ├── alpha/
│   │   ├── Dockerfile
│   │   └── local.conf
│   └── stable/
│       ├── Dockerfile
│       └── local.conf
├── tor-proxy/
│   ├── Dockerfile
│   └── torrc.default
├── tor-relay/
│   ├── Dockerfile
│   ├── README.md
│   ├── run.sh
│   ├── torrc.bridge
│   ├── torrc.exit
│   └── torrc.middle
├── tor-router/
│   ├── Dockerfile
│   └── torrc.default
├── traceroute/
│   └── Dockerfile
├── transfer-sh/
│   └── Dockerfile
├── transmission/
│   └── Dockerfile
├── transmission-ui/
│   └── Dockerfile
├── travis/
│   └── Dockerfile
├── troff/
│   └── Dockerfile
├── unifi/
│   ├── Dockerfile
│   └── entrypoint.sh
├── unixbench/
│   └── Dockerfile
├── vagrant/
│   └── Dockerfile
├── vault/
│   └── Dockerfile
├── viewdocs/
│   └── Dockerfile
├── virt-viewer/
│   └── Dockerfile
├── virtualbox/
│   └── Dockerfile
├── vlc/
│   └── Dockerfile
├── vscode/
│   ├── Dockerfile
│   └── start.sh
├── wargames/
│   └── Dockerfile
├── watchtower/
│   └── Dockerfile
├── wee-slack/
│   └── Dockerfile
├── weechat/
│   └── Dockerfile
├── weechat-matrix/
│   └── Dockerfile
├── wine/
│   └── Dockerfile
├── wireguard/
│   ├── install/
│   │   ├── Dockerfile
│   │   └── entrypoint.sh
│   └── tools/
│       └── Dockerfile
├── wireshark/
│   └── Dockerfile
├── wrk/
│   └── Dockerfile
├── ykman/
│   ├── Dockerfile
│   └── entrypoint.sh
├── ykpersonalize/
│   ├── Dockerfile
│   └── entrypoint.sh
├── yubico-piv-tool/
│   ├── Dockerfile
│   └── entrypoint.sh
├── znc/
│   └── Dockerfile
├── zookeeper/
│   ├── 3.4/
│   │   └── Dockerfile
│   └── 3.6/
│       └── Dockerfile
├── zoom-us/
│   └── Dockerfile
└── zsh/
    ├── .zshrc
    └── Dockerfile
Download .txt
SYMBOL INDEX (27 symbols across 4 files)

FILE: buttslock/buttslock.py
  function handle_sleep (line 12) | def handle_sleep(*args):

FILE: k8scan/main.go
  constant defaultCIDR (line 29) | defaultCIDR = "0.0.0.0/0"
  constant arinAPIEndpoint (line 31) | arinAPIEndpoint = "http://whois.arin.net/rest/ip/%s"
  constant emailSender (line 33) | emailSender = "k8scan@jessfraz.com"
  type intSlice (line 56) | type intSlice
    method String (line 59) | func (i *intSlice) String() (out string) {
    method Set (line 70) | func (i *intSlice) Set(value string) error {
  function init (line 114) | func init() {
  function main (line 146) | func main() {
  function scanIP (line 224) | func scanIP(ip string, port int) {
  function portOpen (line 249) | func portOpen(ip string, port int) bool {
  function isKubernetesDashboard (line 262) | func isKubernetesDashboard(ip string, port int) (bool, string) {
  type ARINResponse (line 311) | type ARINResponse struct
  type NetJSON (line 316) | type NetJSON struct
  type OrganizationJSON (line 321) | type OrganizationJSON struct
  type MasscanResult (line 345) | type MasscanResult struct
  type MasscanPort (line 352) | type MasscanPort struct
  type MasscanTime (line 361) | type MasscanTime struct
    method UnmarshalJSON (line 366) | func (t *MasscanTime) UnmarshalJSON(b []byte) error {
  function getIPInfo (line 379) | func getIPInfo(ip string) (b ARINResponse, err error) {
  function inc (line 399) | func inc(ip net.IP) {
  function sendEmail (line 408) | func sendEmail(uri, ip string, port int, arinInfo ARINResponse) error {
  function doMasscan (line 440) | func doMasscan() ([]MasscanResult, error) {
  function cleanMasscanOutputFile (line 487) | func cleanMasscanOutputFile(file string) ([]byte, error) {

FILE: k8scan/main_test.go
  function TestARINResponse (line 9) | func TestARINResponse(t *testing.T) {
  function TestParsePortRange (line 26) | func TestParsePortRange(t *testing.T) {

FILE: no_new_privs/nnp.c
  function main (line 5) | int main(int argc, char *argv[]){
Condensed preview — 316 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (590K chars).
[
  {
    "path": ".github/FUNDING.yml",
    "chars": 88,
    "preview": "# You can add one username per supported platform and one custom link\npatreon: jessfraz\n"
  },
  {
    "path": ".github/workflows/make-test.yml",
    "chars": 245,
    "preview": "on:\n  push\nname: make test\njobs:\n  test:\n    name: make test\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions"
  },
  {
    "path": ".gitignore",
    "chars": 308,
    "preview": "###Linux###\n\n*~\n\n# KDE directory preferences\n.directory\n\n\n###OSX###\n\n.DS_Store\n.AppleDouble\n.LSOverride\n\n# Icon must end"
  },
  {
    "path": "LICENSE",
    "chars": 1082,
    "preview": "The MIT License (MIT)\n\nCopyright (c) 2017 Jessie Frazelle\n\nPermission is hereby granted, free of charge, to any person o"
  },
  {
    "path": "Makefile",
    "chars": 1749,
    "preview": ".PHONY: build\nbuild: ## Builds all the dockerfiles in the repository.\n\t@$(CURDIR)/build-all.sh\n\n.PHONY: latest-versions\n"
  },
  {
    "path": "README.md",
    "chars": 1838,
    "preview": "## dockerfiles\n\n[![make test](https://github.com/jessfraz/dockerfiles/workflows/make%20test/badge.svg)](https://github.c"
  },
  {
    "path": "ab/Dockerfile",
    "chars": 255,
    "preview": "# ab (apache benchmark)\n# in a container\n#\n# docker run --rm -it \\\n# \tjess/ab\n#\nFROM alpine:latest\nLABEL maintainer \"Jes"
  },
  {
    "path": "afterthedeadline/Dockerfile",
    "chars": 557,
    "preview": "FROM openjdk:8-alpine\nLABEL maintainer \"Jessie Frazelle <jess@linux.com>\"\n\nRUN apk add --no-cache \\\n\tca-certificates \\\n\t"
  },
  {
    "path": "android-tools/Dockerfile",
    "chars": 275,
    "preview": "FROM debian:sid-slim\nLABEL maintainer \"Jessie Frazelle <jess@linux.com>\"\n\nRUN apt-get update && apt-get install -y \\\n\tad"
  },
  {
    "path": "ansible/Dockerfile",
    "chars": 513,
    "preview": "# https://www.ansible.com/\n#\n# docker run --rm \\\n# \t-it \\\n# \t-v ${PWD}/hosts:/etc/ansible/hosts \\\n# \t-v ${PWD}/ansible.c"
  },
  {
    "path": "apt-file/Dockerfile",
    "chars": 204,
    "preview": "FROM debian:sid-slim\nLABEL maintainer \"Jessie Frazelle <jess@linux.com>\"\n\nRUN apt-get update && apt-get install -y \\\n\tap"
  },
  {
    "path": "aspell/Dockerfile",
    "chars": 141,
    "preview": "FROM alpine:latest\nLABEL maintainer \"Jessie Frazelle <jess@linux.com>\"\n\nRUN apk add --no-cache \\\n\taspell \\\n\taspell-en\n\nE"
  },
  {
    "path": "atom/Dockerfile",
    "chars": 1566,
    "preview": "# DESCRIPTION:\t  Create the atom editor in a container\n# AUTHOR:\t\t  Jessie Frazelle <jess@linux.com>\n# COMMENTS:\n#\tThis "
  },
  {
    "path": "audacity/Dockerfile",
    "chars": 215,
    "preview": "FROM debian:sid-slim\nLABEL maintainer \"Jessie Frazelle <jess@linux.com>\"\n\nRUN apt-get update && apt-get install -y \\\n\tau"
  },
  {
    "path": "awscli/Dockerfile",
    "chars": 579,
    "preview": "# Run awscli in a container and list s3 buckets\n#\n# docker run --rm -it \\\n#\t--name awscli \\\n#\tjess/awscli \\\n#       s3 l"
  },
  {
    "path": "azure-cli/Dockerfile",
    "chars": 394,
    "preview": "FROM python:3-alpine\nLABEL maintainer \"Jessie Frazelle <jess@linux.com>\"\n\nRUN apk add --no-cache \\\n\tbash\n\nRUN set -x \\\n\t"
  },
  {
    "path": "bashrc",
    "chars": 1346,
    "preview": "#!/bin/bash\n\ncommand_not_found_handle () {\n\t# Check if there is a container image with that name\n\tif ! docker inspect --"
  },
  {
    "path": "bcc-tools/Dockerfile",
    "chars": 1499,
    "preview": "# Usage:\n# docker run --rm -it \\\n#\t--privileged \\\n#\t-v /lib/modules:/lib/modules:ro \\\n#\t-v /usr/src:/usr/src:ro \\\n#\t-v /"
  },
  {
    "path": "bcc-tools/entrypoint.sh",
    "chars": 87,
    "preview": "#!/bin/bash\nset -e\nset -o pipefail\n\nmount -t debugfs none /sys/kernel/debug/\nexec \"$@\"\n"
  },
  {
    "path": "beeswithmachineguns/Dockerfile",
    "chars": 530,
    "preview": "FROM alpine:latest\nLABEL maintainer \"Jessie Frazelle <jess@linux.com>\"\n\nRUN apk --no-cache add \\\n\tca-certificates \\\n\tpyt"
  },
  {
    "path": "bpftrace/Dockerfile",
    "chars": 838,
    "preview": "FROM r.j3ss.co/bcc\nMAINTAINER Jessica Frazelle <jess@linux.com>\n\nENV PATH /usr/share/bcc/tools:$PATH\n\n# Add non-free apt"
  },
  {
    "path": "brok/Dockerfile",
    "chars": 124,
    "preview": "FROM haskell:8.8\n\nLABEL maintainer \"Jessie Frazelle <jess@linux.com>\"\n\nRUN cabal update && cabal install brok\n\nCMD [\"bro"
  },
  {
    "path": "browsh/Dockerfile",
    "chars": 1678,
    "preview": "FROM debian:bullseye-slim\nLABEL maintainer \"Jessie Frazelle <jess@linux.com>\"\n\n# Install bash and other deps so we have "
  },
  {
    "path": "build-all.sh",
    "chars": 2219,
    "preview": "#!/bin/bash\nset -e\nset -o pipefail\n\nSCRIPT=\"$(cd \"$(dirname \"${BASH_SOURCE[0]}\")\" && pwd)/$(basename \"${BASH_SOURCE[0]}\""
  },
  {
    "path": "buttslock/Dockerfile",
    "chars": 605,
    "preview": "#\n# This container will listen to DBus events to be notified when your\n# computer goes to sleep. When such events happen"
  },
  {
    "path": "buttslock/buttslock.py",
    "chars": 886,
    "preview": "#!/usr/bin/env python\n\n# Shamelessly pasted from:\n# https://serverfault.com/questions/573379/system-suspend-dbus-upower-"
  },
  {
    "path": "buttslock/buttslock.sh",
    "chars": 946,
    "preview": "#!/bin/sh\n\n# Shamelessly copied from:\n# https://github.com/meskarune/i3lock-fancy\n\n# All options are here: https://www.i"
  },
  {
    "path": "cathode/Dockerfile",
    "chars": 613,
    "preview": "FROM debian:bullseye-slim\nLABEL maintainer \"Jessie Frazelle <jess@linux.com>\"\n\nRUN apt-get update && apt-get install -y "
  },
  {
    "path": "certbot/Dockerfile",
    "chars": 140,
    "preview": "FROM alpine:latest\nLABEL maintainer \"Jessie Frazelle <jess@linux.com>\"\n\nRUN apk --no-cache add \\\n\tbash \\\n\tcertbot\n\nENTRY"
  },
  {
    "path": "cf-reset-cache/Dockerfile",
    "chars": 219,
    "preview": "FROM alpine:latest\nLABEL maintainer \"Jessie Frazelle <jess@linux.com>\"\n\nRUN apk add --no-cache \\\n\tca-certificates \\\n\tpy-"
  },
  {
    "path": "cf-reset-cache/reset-cache.py",
    "chars": 1323,
    "preview": "#!/usr/local/bin/python\n\nimport boto\nimport os\nimport sys\n\n\naccess_key = os.getenv(\"AWS_ACCESS_KEY\")\naccess_secret = os."
  },
  {
    "path": "cfssl/Dockerfile",
    "chars": 896,
    "preview": "FROM golang:alpine AS builder\n\nENV PATH /go/bin:/usr/local/go/bin:$PATH\nENV GOPATH /go\n\nRUN apk --no-cache add \\\n\t\tgcc \\"
  },
  {
    "path": "checkup/Dockerfile",
    "chars": 414,
    "preview": "FROM golang:alpine as builder\nLABEL maintainer \"Jessie Frazelle <jess@linux.com>\"\n\nRUN\tapk --no-cache add \\\n\tca-certific"
  },
  {
    "path": "cheese/Dockerfile",
    "chars": 254,
    "preview": "FROM debian:bullseye-slim\nLABEL maintainer \"Jessie Frazelle <jess@linux.com>\"\n\nRUN apt-get update && apt-get install -y "
  },
  {
    "path": "chrome/beta/Dockerfile",
    "chars": 1792,
    "preview": "# Run Chrome in a container\n#\n# docker run -it \\\n#\t--net host \\ # may as well YOLO\n#\t--cpuset-cpus 0 \\ # control the cpu"
  },
  {
    "path": "chrome/beta/local.conf",
    "chars": 676,
    "preview": "<?xml version='1.0'?>\n<!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>\n<fontconfig>\n<match target=\"font\">\n<edit mode=\"assign\" na"
  },
  {
    "path": "chrome/stable/Dockerfile",
    "chars": 1791,
    "preview": "# Run Chrome in a container\n#\n# docker run -it \\\n#\t--net host \\ # may as well YOLO\n#\t--cpuset-cpus 0 \\ # control the cpu"
  },
  {
    "path": "chrome/stable/local.conf",
    "chars": 676,
    "preview": "<?xml version='1.0'?>\n<!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>\n<fontconfig>\n<match target=\"font\">\n<edit mode=\"assign\" na"
  },
  {
    "path": "chromium/Dockerfile",
    "chars": 1903,
    "preview": "# Run Chromium in a container\n#\n# docker run -it \\\n#\t--net host \\ # may as well YOLO\n#\t--cpuset-cpus 0 \\ # control the c"
  },
  {
    "path": "clair/Dockerfile",
    "chars": 484,
    "preview": "FROM golang:alpine as builder\n\nRUN apk --no-cache add \\\n\tca-certificates \\\n\tgit \\\n\tmake\n\nENV PATH /go/bin:/usr/local/go/"
  },
  {
    "path": "cli53/Dockerfile",
    "chars": 131,
    "preview": "FROM alpine:latest\n\nRUN apk --no-cache add \\\n\tca-certificates \\\n\tpython \\\n\tpy2-pip \\\n\t&& pip install cli53\n\nENTRYPOINT ["
  },
  {
    "path": "clisp/.clisprc.lisp",
    "chars": 265,
    "preview": ";;; The following lines added by ql:add-to-init-file:\n#-quicklisp\n(let ((quicklisp-init (merge-pathnames\n               "
  },
  {
    "path": "clisp/Dockerfile",
    "chars": 800,
    "preview": "FROM alpine:latest AS cl-k8s\nRUN apk add --no-cache \\\n\tgit\nRUN git clone https://github.com/brendandburns/cl-k8s.git /cl"
  },
  {
    "path": "cloudapp/Dockerfile",
    "chars": 269,
    "preview": "FROM\truby:alpine\nLABEL maintainer \"Jessie Frazelle <jess@linux.com>\"\n\nRUN\tapk add --no-cache \\\n\tlibcurl\n\nRUN\tset -x \\\n\t&"
  },
  {
    "path": "consul/Dockerfile",
    "chars": 1394,
    "preview": "FROM golang:latest as builder\nMAINTAINER Jessica Frazelle <jess@linux.com>\n\nENV PATH /go/bin:/usr/local/go/bin:$PATH\nENV"
  },
  {
    "path": "coredns/Dockerfile",
    "chars": 608,
    "preview": "FROM golang:alpine as builder\nLABEL maintainer \"Jessie Frazelle <jess@linux.com>\"\n\nENV PATH /go/bin:/usr/local/go/bin:$P"
  },
  {
    "path": "couchpotato/Dockerfile",
    "chars": 1171,
    "preview": "# Couchpotato in a container\n#\n# docker run -d \\\n# \t--restart always \\\n#\t-p 5050:5050 \\\n# \t-v /etc/localtime:/etc/localt"
  },
  {
    "path": "cura/Dockerfile",
    "chars": 489,
    "preview": "FROM ubuntu:bionic\n\nRUN apt-get update && apt-get install -y \\\n\tca-certificates \\\n\tlibgfortran4 \\\n\tlibssl-dev \\\n\twget \\\n"
  },
  {
    "path": "curl/Dockerfile",
    "chars": 1307,
    "preview": "#\n# This Dockerfile builds a recent curl with HTTP/2 client support, using\n# a recent nghttp2 build.\n#\n# See the Makefil"
  },
  {
    "path": "dcos-cli/Dockerfile",
    "chars": 268,
    "preview": "FROM alpine:latest\nLABEL maintainer \"Jessie Frazelle <jess@linux.com>\"\n\nRUN apk --no-cache add \\\n\tca-certificates \\\n\tpyt"
  },
  {
    "path": "debootstrap/Dockerfile",
    "chars": 260,
    "preview": "FROM debian:bullseye-slim\nLABEL maintainer \"Jessie Frazelle <jess@linux.com>\"\n\nRUN apt-get update && apt-get install -y "
  },
  {
    "path": "distcc/Dockerfile",
    "chars": 369,
    "preview": "FROM debian:sid-slim\nLABEL maintainer \"Jessie Frazelle <jess@linux.com>\"\n\nRUN apt-get update && apt-get install -y \\\n\tca"
  },
  {
    "path": "distcc/distccd-init",
    "chars": 803,
    "preview": "#! /bin/sh\n#\n# distccd Debian init.d script contributed by Jason Thomas.  (Debian #161136)\n#\n# skeleton\texample file to "
  },
  {
    "path": "doctor/Dockerfile",
    "chars": 829,
    "preview": "# DESCRIPTION:\t  Run text-based emacs doctor in a container\n# AUTHOR:\t\t  Jessie Frazelle <jess@linux.com>\n# COMMENTS:\n#\t"
  },
  {
    "path": "dunnet/Dockerfile",
    "chars": 836,
    "preview": "# DESCRIPTION:\t  Run text-based game dunnet in a container\n# AUTHOR:\t\t  Jessie Frazelle <jess@linux.com>\n# COMMENTS:\n#\tT"
  },
  {
    "path": "evince/Dockerfile",
    "chars": 381,
    "preview": "# Evince in a container\n#\n# docker run -it \\\n#\t-v $HOME/documents/:/root/documents/ \\\n#\t-v /tmp/.X11-unix:/tmp/.X11-unix"
  },
  {
    "path": "figma-wine/Dockerfile",
    "chars": 771,
    "preview": "# Run figma windows app in a container with wine\n#\n# docker run --rm -it \\\n#\t-v /etc/localtime:/etc/localtime:ro \\\n#\t--c"
  },
  {
    "path": "firefox/Dockerfile",
    "chars": 904,
    "preview": "FROM debian:sid-slim\nLABEL maintainer \"Jessie Frazelle <jess@linux.com>\"\n\nRUN apt-get update && apt-get install -y \\\n\tdi"
  },
  {
    "path": "firefox/alpine/Dockerfile",
    "chars": 248,
    "preview": "FROM alpine:latest\n\nLABEL maintainer \"Christian Koep <christiankoep@gmail.com>\"\n\nRUN apk add --no-cache \\\n\talsa-lib \\\n\tc"
  },
  {
    "path": "firefox/entrypoint.sh",
    "chars": 93,
    "preview": "#!/bin/bash\n\nif [[ -e /dev/snd ]]; then\n\texec apulse firefox \"$@\"\nelse\n\texec firefox \"$@\"\nfi\n"
  },
  {
    "path": "firefox/local.conf",
    "chars": 676,
    "preview": "<?xml version='1.0'?>\n<!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>\n<fontconfig>\n<match target=\"font\">\n<edit mode=\"assign\" na"
  },
  {
    "path": "fleet/Dockerfile",
    "chars": 966,
    "preview": "FROM golang:alpine AS builder\nMAINTAINER Jessica Frazelle <jess@linux.com>\n\nENV PATH /go/bin:/usr/local/go/bin:$PATH\nENV"
  },
  {
    "path": "fontforge/Dockerfile",
    "chars": 776,
    "preview": "# Run Fontforge in a container\n#\n# state=$HOME\n# mkdir -p $state/fontforge\n# docker run --rm \\\n#     -v /tmp/.X11-unix:/"
  },
  {
    "path": "fontpatcher/Dockerfile",
    "chars": 724,
    "preview": "FROM debian:sid-slim\nLABEL maintainer \"Jessie Frazelle <jess@linux.com>\"\n\nRUN apt-get update && apt-get install -y \\\n\tpy"
  },
  {
    "path": "fontpatcher/README.md",
    "chars": 970,
    "preview": "# fontpatcher\n\nHow to use:\n\n1. Enter the directory where the font file lives you wish to patch.\n2. Run:\n\n        $ docke"
  },
  {
    "path": "foss-heartbeat/Dockerfile",
    "chars": 708,
    "preview": "FROM python:3-alpine\n\nRUN apk add --no-cache \\\n\tca-certificates \\\n\tbash \\\n\tgfortran \\\n\tlapack \\\n\topenjdk8-jre-base \\\n\tpy"
  },
  {
    "path": "freeradius/Dockerfile",
    "chars": 277,
    "preview": "FROM alpine:latest\nLABEL maintainer \"Jessie Frazelle <jess@linux.com>\"\n\nRUN apk --no-cache add \\\n    freeradius \\\n\tfreer"
  },
  {
    "path": "gcalcli/Dockerfile",
    "chars": 316,
    "preview": "FROM alpine:latest\nLABEL maintainer \"Jessie Frazelle <jess@linux.com>\"\n\nENV HOME /home/gcalcli\n\nRUN apk --no-cache add \\"
  },
  {
    "path": "gcc/Dockerfile",
    "chars": 201,
    "preview": "FROM debian:bullseye-slim\nLABEL maintainer \"Jessie Frazelle <jess@linux.com>\"\n\nRUN apt-get update && apt-get install -y "
  },
  {
    "path": "gcloud/Dockerfile",
    "chars": 795,
    "preview": "FROM python:2-alpine\n\nENV PATH $PATH:/usr/src/google-cloud-sdk/bin\nENV CLOUD_SDK_DOCKER_VERSION 295.0.0\n\nRUN set -x \\\n\t&"
  },
  {
    "path": "geary/Dockerfile",
    "chars": 214,
    "preview": "FROM debian:bullseye-slim\nLABEL maintainer \"Jessie Frazelle <jess@linux.com>\"\n\nRUN apt-get update && apt-get install -y "
  },
  {
    "path": "ghostscript/Dockerfile",
    "chars": 129,
    "preview": "FROM alpine:latest\nLABEL maintainer \"Jessie Frazelle <jess@linux.com>\"\n\nRUN apk --no-cache add \\\n\tghostscript\n\nENTRYPOIN"
  },
  {
    "path": "gimp/Dockerfile",
    "chars": 430,
    "preview": "# Run gimp in a contianer\n#\n# docker run -d \\\n#\t-v /etc/localtime:/etc/localtime:ro \\\n#\t-v /tmp/.X11-unix:/tmp/.X11-unix"
  },
  {
    "path": "github-dev/Dockerfile",
    "chars": 526,
    "preview": "FROM golang:alpine\nMAINTAINER Jessica Frazelle <jess@linux.com>\n\nRUN\tapk add --no-cache \\\n\tbash \\\n\tca-certificates \\\n\tcu"
  },
  {
    "path": "github-dev/cleanup-pr-branch",
    "chars": 1332,
    "preview": "#!/bin/bash\nset -e\nset -o pipefail\n\nif [[ -n \"$TOKEN\" ]]; then\n\tGITHUB_TOKEN=$TOKEN\nfi\n\nif [[ -z \"$GITHUB_TOKEN\" ]]; the"
  },
  {
    "path": "github-dev/release-email-notification",
    "chars": 890,
    "preview": "#!/bin/bash\nset -e\nset -o pipefail\nset -x\n\nif [[ -z \"$MAILGUN_API_KEY\" ]]; then\n\techo \"Set the MAILGUN_API_KEY env varia"
  },
  {
    "path": "github-dev/upload-assets",
    "chars": 2415,
    "preview": "#!/bin/bash\n\nif [[ -n \"$TOKEN\" ]]; then\n\tGITHUB_TOKEN=$TOKEN\nfi\n\nif [[ -z \"$GITHUB_TOKEN\" ]]; then\n\techo \"Set the GITHUB"
  },
  {
    "path": "gitiles/Dockerfile",
    "chars": 663,
    "preview": "FROM l.gcr.io/google/bazel:latest\nLABEL maintainer \"Jessie Frazelle <jess@linux.com>\"\n\n# https://gerrit.googlesource.com"
  },
  {
    "path": "gitiles/start.sh",
    "chars": 837,
    "preview": "#!/bin/bash\nset -e\n\nROOT=/usr/src/gitiles\nPROPERTIES=\n\nif [ \"x$1\" != \"x\" ]; then\n\tPROPERTIES=\"--jvm_flag=-Dcom.google.gi"
  },
  {
    "path": "gitserver/Dockerfile",
    "chars": 964,
    "preview": "# Run a git server in a container.\n#\n# docker run --rm -it -p 1234:22 \\\n# \t-e DEBUG=true \\\n# \t-e \"PUBKEY=$(cat ~/.ssh/id"
  },
  {
    "path": "gitserver/create_repo",
    "chars": 185,
    "preview": "#!/bin/bash\nset -e\nset -o pipefail\n\nrepo=$1\nif [[ \"$repo\" != *.git ]]; then\n\trepo=\"${repo}.git\"\nfi\necho \"Creating $repo\""
  },
  {
    "path": "gitserver/start.sh",
    "chars": 1707,
    "preview": "#!/bin/bash\nset -e\nset -o pipefail\n\n[ \"$DEBUG\" == 'true' ] && set -x\n\nDAEMON=sshd\nHOSTKEY=/etc/ssh/ssh_host_ed25519_key\n"
  },
  {
    "path": "gitsome/Dockerfile",
    "chars": 452,
    "preview": "# Run gitsome command line tool:\n# https://github.com/donnemartin/gitsome\n#\n# Usage:\n# \tdocker run --rm -it \\\n# \t\t-v ${H"
  },
  {
    "path": "gixy/Dockerfile",
    "chars": 262,
    "preview": "# Run gixy command line tool for static nginx analysis:\n# https://github.com/yandex/gixy\n#\n# Usage:\n# \tdocker run --rm -"
  },
  {
    "path": "glxgears/Dockerfile",
    "chars": 422,
    "preview": "# To use:\n#\tdocker run -v /tmp/.X11-unix:/tmp/.X11-unix \\\n#\t\t-e DISPLAY=unix$DISPLAY \\\n#\t\t--device /dev/dri \\\n#\t\tjess/gl"
  },
  {
    "path": "gmail-britta/Dockerfile",
    "chars": 250,
    "preview": "FROM\truby:alpine\nLABEL maintainer \"Jessie Frazelle <jess@linux.com>\"\n\nRUN apk add --no-cache \\\n\tcoreutils\n\nRUN\tset -x \\\n"
  },
  {
    "path": "gnuplot/Dockerfile",
    "chars": 197,
    "preview": "FROM alpine:latest\nLABEL maintainer \"Jessie Frazelle <jess@linux.com>\"\n\nRUN apk --no-cache add \\\n\t--repository http://dl"
  },
  {
    "path": "golinks/Dockerfile",
    "chars": 460,
    "preview": "FROM golang:alpine as builder\nLABEL maintainer \"Jessie Frazelle <jess@linux.com>\"\n\nRUN\tapk --no-cache add \\\n\tca-certific"
  },
  {
    "path": "gparted/Dockerfile",
    "chars": 976,
    "preview": "# DESCRIPTION:\t  Create gparted container with its dependencies\n# AUTHOR:\t\t  Jessie Frazelle <jess@linux.com>\n# COMMENTS"
  },
  {
    "path": "guetzli/Dockerfile",
    "chars": 788,
    "preview": "# guetzli\n#\n# docker run --rm -it \\\n# \t-v ${PWD}:/tmp \\\n# \tr.j3ss.co/guetzli:latest \\\n# \t--verbose /tmp/example.jpg /tmp"
  },
  {
    "path": "hollywood/Dockerfile",
    "chars": 523,
    "preview": "FROM ubuntu:16.04\nLABEL maintainer \"Jessie Frazelle <jess@linux.com>\"\n\nRUN apt-get update && apt-get install -y \\\n\tsoftw"
  },
  {
    "path": "htop/Dockerfile",
    "chars": 198,
    "preview": "# htop in a container\n#\n# docker run --rm -it \\\n# \t--pid host \\\n# \tjess/htop\n#\nFROM alpine:latest\nLABEL maintainer \"Jess"
  },
  {
    "path": "htpasswd/Dockerfile",
    "chars": 139,
    "preview": "FROM alpine:latest\nLABEL maintainer \"Jessie Frazelle <jess@linux.com>\"\n\nRUN apk add --no-cache \\\n\tapache2-utils\n\nENTRYPO"
  },
  {
    "path": "httpbin/Dockerfile",
    "chars": 379,
    "preview": "# Run HTTPBin in a container\n#\n# USAGE\n# \n# docker run -d \\\n#\t-p 8080:8080 \\\n#\t--name httpbin \\\n#\tjess/httpbin\n#\n\nFROM p"
  },
  {
    "path": "httpie/Dockerfile",
    "chars": 201,
    "preview": "FROM alpine:latest\nLABEL maintainer \"Jessie Frazelle <jess@linux.com>\"\n\nRUN apk --no-cache add \\\n\tca-certificates \\\n\tpyt"
  },
  {
    "path": "iceweasel/Dockerfile",
    "chars": 321,
    "preview": "FROM debian:bullseye-slim\nLABEL maintainer \"Jessie Frazelle <jess@linux.com>\"\n\nRUN apt-get update && apt-get install -y "
  },
  {
    "path": "iceweasel/local.conf",
    "chars": 676,
    "preview": "<?xml version='1.0'?>\n<!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>\n<fontconfig>\n<match target=\"font\">\n<edit mode=\"assign\" na"
  },
  {
    "path": "imagemagick/Dockerfile",
    "chars": 276,
    "preview": "FROM alpine:latest\nLABEL maintainer \"Jessie Frazelle <jess@linux.com>\"\n\nRUN apk --no-cache add \\\n\timagemagick\n\nCMD [ \"ec"
  },
  {
    "path": "imagemin/Dockerfile",
    "chars": 505,
    "preview": "# Run imagemin in a container:\n#\n# docker run --rm -it \\\n#\t-v /etc/localtime:/etc/localtime:ro \\\n#\t-v $HOME/Pictures:/ro"
  },
  {
    "path": "inkscape/Dockerfile",
    "chars": 595,
    "preview": "# Run inkscape in a container\n#\n# docker run -v /tmp/.X11-unix:/tmp/.X11-unix \\\n#\t-v /inkscape/:/workspace \\\n#\t-e DISPLA"
  },
  {
    "path": "irssi/Dockerfile",
    "chars": 3280,
    "preview": "FROM alpine:latest\n\nRUN apk --no-cache add \\\n\tca-certificates \\\n\tperl-datetime \\\n\tperl-timedate\n\nENV HOME /home/user\nRUN"
  },
  {
    "path": "john/Dockerfile",
    "chars": 678,
    "preview": "FROM alpine:latest\nLABEL maintainer \"Jessie Frazelle <jess@linux.com>\"\n\nRUN apk add --no-cache \\\n\tca-certificates \\\n\tgmp"
  },
  {
    "path": "john/john.ini",
    "chars": 340,
    "preview": "#\n# This file is part of John the Ripper password cracker,\n# Copyright (c) 1996-98 by Solar Designer\n#\n\n[Options]\n# Word"
  },
  {
    "path": "john/passwd.lst",
    "chars": 46017,
    "preview": "_\n!@#$%\n!@#$%^\n!@#$%^&\n!@#$%^&*\n!@#$%^&*\r\n!@#$%^&\r\n!@#$%^\r\n!@#$%\r\n@#$%^&\n@#$%^&\r\n*\n\r\n0000\r\n00000\r\n000000\n000000\r\n0000000"
  },
  {
    "path": "jq/Dockerfile",
    "chars": 122,
    "preview": "FROM alpine:latest\n\nRUN apk add --no-cache \\\n\tbash \\\n\tca-certificates \\\n\tcurl \\\n\tfindutils \\\n\tgit \\\n\tjq \\\n\topenssh-clien"
  },
  {
    "path": "k8scan/Dockerfile",
    "chars": 848,
    "preview": "FROM golang:1.12-alpine as builder\nMAINTAINER Jessica Frazelle <jess@linux.com>\n\nENV PATH /go/bin:/usr/local/go/bin:$PAT"
  },
  {
    "path": "k8scan/main.go",
    "chars": 11200,
    "preview": "package main\n\nimport (\n\t\"context\"\n\t\"crypto/tls\"\n\t\"encoding/json\"\n\t\"errors\"\n\t\"flag\"\n\t\"fmt\"\n\t\"io/ioutil\"\n\t\"log\"\n\t\"net\"\n\t\"n"
  },
  {
    "path": "k8scan/main_test.go",
    "chars": 1422,
    "preview": "package main\n\nimport (\n\t\"testing\"\n\n\t\"github.com/google/go-cmp/cmp\"\n)\n\nfunc TestARINResponse(t *testing.T) {\n\tinfo, err :"
  },
  {
    "path": "keepass2/Dockerfile",
    "chars": 963,
    "preview": "# DESCRIPTION:\tCreate keepass2 container with its dependencies\n# AUTHOR:\t\tChristian Koep <christiankoep@gmail.com>\n# USA"
  },
  {
    "path": "keepassxc/Dockerfile",
    "chars": 1312,
    "preview": "# keepassxc\n#\n# docker run -d \\\n#\t\t-v /tmp/.X11-unix:/tmp/.X11-unix \\\n#\t\t-v /etc/machine-id:/etc/machine-id:ro \\\n#\t\t-v /"
  },
  {
    "path": "kernel-builder/Dockerfile",
    "chars": 473,
    "preview": "FROM r.j3ss.co/wireguard:install\nLABEL maintainer \"Jessie Frazelle <jess@linux.com>\"\n\nRUN apt update && apt -y install \\"
  },
  {
    "path": "kernel-builder/build_kernel",
    "chars": 3736,
    "preview": "#!/bin/bash\nset -e\nset -o pipefail\n\nlinux_next(){\n\tlocal dir=\"/usr/src/linux-next\"\n\n\t# Check if we already have the sour"
  },
  {
    "path": "kicad/Dockerfile",
    "chars": 214,
    "preview": "FROM debian:bullseye-slim\nLABEL maintainer \"Jessie Frazelle <jess@linux.com>\"\n\nRUN apt-get update && apt-get install -y "
  },
  {
    "path": "kvm/Dockerfile",
    "chars": 610,
    "preview": "# Run libvirt deamon in a container\n#\n# docker run -d \\\n#\t--privileged \\\n#\t-v /var/run/libvirt:/var/run/libvirt \\\n#\t--na"
  },
  {
    "path": "kvm/start.sh",
    "chars": 1074,
    "preview": "#!/bin/bash\nset -e\nset -o pipefail\n\n# add the correct user perms\necho \"Adding the user groups...\"\ngpasswd -a root libvir"
  },
  {
    "path": "latest-versions.sh",
    "chars": 4602,
    "preview": "#!/bin/bash\n# This script gets the latest GitHub releases for the specified projects.\n\nif [[ -z \"$GITHUB_TOKEN\" ]]; then"
  },
  {
    "path": "libreoffice/Dockerfile",
    "chars": 492,
    "preview": "# Run Libreoffice in a container\n\n# docker run -d \\\n#\t-v /etc/localtime:/etc/localtime:ro \\\n#\t-v /tmp/.X11-unix:/tmp/.X1"
  },
  {
    "path": "libvirt-client/Dockerfile",
    "chars": 161,
    "preview": "FROM alpine:latest\nLABEL maintainer \"Jessie Frazelle <jess@linux.com>\"\n\nRUN apk --no-cache add \\\n\tlibvirt-client\n\nENTRYP"
  },
  {
    "path": "lilyterm/Dockerfile",
    "chars": 394,
    "preview": "# To use:\n#\tdocker run -v /tmp/.X11-unix:/tmp/.X11-unix \\\n#\t\t-e DISPLAY=unix$DISPLAY \\\n#\t\tjess/lilyterm\n#\n\n# Base docker"
  },
  {
    "path": "linapple/Dockerfile",
    "chars": 726,
    "preview": "FROM alpine:latest\n\nRUN apk --no-cache add \\\n\tca-certificates \\\n\tlibcurl \\\n\tlibgcc \\\n\tlibstdc++ \\\n\tlibzip \\\n\tsdl\n\nRUN se"
  },
  {
    "path": "lkp-tests/Dockerfile",
    "chars": 1625,
    "preview": "FROM debian:buster-slim\nLABEL maintainer \"Jessie Frazelle <jess@linux.com>\"\n\nENV DEBIAN_FRONTEND noninteractive\n\n# insta"
  },
  {
    "path": "lkp-tests/runbench",
    "chars": 588,
    "preview": "#!/bin/bash\nset -e\nset -o pipefail\n\nARG=$1\nJOB_FILE=\"./jobs/${ARG}.yaml\"\n\nif [[ ! -f \"$JOB_FILE\" ]]; then\n\techo \"$JOB_FI"
  },
  {
    "path": "lpass/Dockerfile",
    "chars": 648,
    "preview": "FROM alpine:latest\nLABEL maintainer \"Jessie Frazelle <jess@linux.com>\"\n\nRUN apk add --no-cache \\\n\tca-certificates \\\n\tcur"
  },
  {
    "path": "lynx/Dockerfile",
    "chars": 314,
    "preview": "# Run Lynx in a conatiner\n#\n# docker run --rm -it \\\n#\t--name lynx \\\n#\tjess/lynx github.com/jessfraz\n#\nFROM debian:bullse"
  },
  {
    "path": "mailgun/Dockerfile",
    "chars": 167,
    "preview": "FROM r.j3ss.co/curl\nLABEL maintainer \"Jessie Frazelle <jess@linux.com>\"\n\nRUN apk add --no-cache \\\n\tbash\n\nCOPY sendemail "
  },
  {
    "path": "mailgun/sendemail",
    "chars": 905,
    "preview": "#!/bin/bash\nset -e\nset -o pipefail\nset -x\n\nif [[ -z \"$MAILGUN_API_KEY\" ]]; then\n\techo \"Set the MAILGUN_API_KEY env varia"
  },
  {
    "path": "mars/Dockerfile",
    "chars": 293,
    "preview": "FROM openjdk:8-alpine\n\nRUN set -x \\\n\t&& apk add --no-cache --virtual .build-deps \\\n\t\tca-certificates \\\n\t\tcurl \\\n\t&& curl"
  },
  {
    "path": "masscan/Dockerfile",
    "chars": 582,
    "preview": "FROM alpine:latest\nLABEL maintainer \"Jessie Frazelle <jess@linux.com>\"\n\nRUN apk add --no-cache \\\n\tca-certificates \\\n\tlib"
  },
  {
    "path": "mc/Dockerfile",
    "chars": 1462,
    "preview": "FROM alpine:latest\nLABEL maintainer \"Jessie Frazelle <jess@linux.com>\"\n\nRUN apk add --no-cache \\\n\t\tglib \\\n\t\tlibintl \\\n\t\t"
  },
  {
    "path": "mdp/Dockerfile",
    "chars": 488,
    "preview": "FROM debian:bullseye-slim\nLABEL maintainer \"Jessie Frazelle <jess@linux.com>\"\n\nRUN apt-get update && apt-get install -y "
  },
  {
    "path": "micro/Dockerfile",
    "chars": 556,
    "preview": "FROM golang:alpine as builder\nLABEL maintainer \"Christian Koep <christiankoep@gmail.com>\"\n\nRUN apk --no-cache add \\\n\tca-"
  },
  {
    "path": "mitmproxy/Dockerfile",
    "chars": 852,
    "preview": "FROM debian:bullseye-slim\nLABEL maintainer \"Jessie Frazelle <jess@linux.com>\"\n\nENV LANG=en_US.UTF-8\n\nRUN apt-get update "
  },
  {
    "path": "mitmproxy/docker-entrypoint.sh",
    "chars": 262,
    "preview": "#!/bin/sh\nset -e\n\nMITMPROXY_PATH=\"/home/mitmproxy/.mitmproxy\"\n\nif [ \"$1\" = \"mitmdump\" ] || [ \"$1\" = \"mitmproxy\" ] || [ \""
  },
  {
    "path": "mop/Dockerfile",
    "chars": 445,
    "preview": "# Run mop-tracker in a container\n#\n# docker run -it --rm \\\n# \t-v ~/.moprc:/root/.moprc \\\n# \t--name mop \\\n# \tr.j3ss.co/mo"
  },
  {
    "path": "mpd/Dockerfile",
    "chars": 913,
    "preview": "# Music player daemon\n#\n# docker run -d \\\n#\t--device /dev/snd \\\n#\t-v /etc/localtime:/etc/localtime:ro \\\n#\t-v $HOME/.mpd:"
  },
  {
    "path": "mpd/mpd.conf",
    "chars": 14625,
    "preview": "# An example configuration file for MPD.\n# Read the user manual for documentation: http://www.musicpd.org/doc/user/\n# or"
  },
  {
    "path": "mpd/mpd.sh",
    "chars": 244,
    "preview": "#!/bin/bash\nset -e\nset -o pipefail\n\nmkdir -p /var/lib/mpd/{playlists,music} \\\n\t&& touch /var/lib/mpd/{state,tag_cache} \\"
  },
  {
    "path": "mpsyt/Dockerfile",
    "chars": 179,
    "preview": "FROM python:3-alpine\nLABEL maintainer \"Justin Garrison <justinleegarrison@gmail.com>\"\n\nRUN apk add --no-cache \\\n\tmplayer"
  },
  {
    "path": "mpsyt/README",
    "chars": 210,
    "preview": "mps-youtube\n--------\n\nDocker container for running (mpsyt)[https://github.com/np1/mps-youtube] inside \na docker containe"
  },
  {
    "path": "mutt/.mutt/mailcap",
    "chars": 546,
    "preview": "application/octet-stream ; echo %s \"can be anything...\"                    ; copiousoutput\ntext/html                ; /u"
  },
  {
    "path": "mutt/.mutt/mutt-colors-solarized-dark-16.muttrc",
    "chars": 11772,
    "preview": "# vim: filetype=muttrc\n\n#\n#\n# make sure that you are using mutt linked against slang, not ncurses, or\n# suffer the conse"
  },
  {
    "path": "mutt/.mutt/mutt-patch-highlighting.muttrc",
    "chars": 1971,
    "preview": "# Patch syntax highlighting                                                     \n#color   normal  white           defaul"
  },
  {
    "path": "mutt/.mutt/muttrc",
    "chars": 2881,
    "preview": "# A basic .muttrc for use with Gmail\n\n# Change the following six lines to match your Gmail account details\nset imap_user"
  },
  {
    "path": "mutt/.mutt/signature",
    "chars": 140,
    "preview": "\nJessie Frazelle\n4096R / D4C4 DD60 0D66 F65A 8EFC  511E 18F3 685C 0022 BFF3\nhttps://pgp.mit.edu/pks/lookup?op=get&search"
  },
  {
    "path": "mutt/Dockerfile",
    "chars": 1179,
    "preview": "# Run Mutt from a container\n\n# docker run -it \\\n#\t-v /etc/localtime:/etc/localtime:ro \\\n#\t-e GMAIL -e GMAIL_NAME \\ # pas"
  },
  {
    "path": "mutt/entrypoint.sh",
    "chars": 2108,
    "preview": "#!/bin/sh\nset -e\n\nif [ -z \"$GMAIL\" ]; then\n\techo >&2 'error: missing GMAIL environment variable'\n\techo >&2 '  try runnin"
  },
  {
    "path": "ncmpc/Dockerfile",
    "chars": 392,
    "preview": "# ncmpc is a fully featured MPD client\n# which runs in a terminal (using ncurses)\n#\n# docker run --rm -it \\\n# \t-v /etc/l"
  },
  {
    "path": "neoman/Dockerfile",
    "chars": 630,
    "preview": "# Run neoman (yubikey-piv-manager) in a container\n#\n# docker run -d \\\n#\t-v /etc/localtime:/etc/localtime:ro \\\n#\t-v /tmp/"
  },
  {
    "path": "nerdy/Dockerfile",
    "chars": 543,
    "preview": "FROM debian:bullseye-slim\nLABEL maintainer \"Jessie Frazelle <jess@linux.com>\"\n\nRUN apt-get update && apt-get install -y "
  },
  {
    "path": "nerdy/clippy.cow",
    "chars": 421,
    "preview": "##\n## Would you like some assistance today?\n## https://gist.github.com/raggiskula/2351564\n##\n$the_cow = <<EOC;\n   $thoug"
  },
  {
    "path": "nerdy/lolcat",
    "chars": 5398,
    "preview": "#!/usr/bin/env python\n\nimport atexit\nimport math\nimport os\nimport random\nimport re\nimport sys\nimport time\n\n\n# Reset term"
  },
  {
    "path": "nes/Dockerfile",
    "chars": 716,
    "preview": "# NES emulator in a container\n#\n# docker run --rm -d \\\n# \t--device /dev/snd \\\n# \t-v /tmp/.X11-unix:/tmp/.X11-unix \\\n# \t-"
  },
  {
    "path": "netcat/Dockerfile",
    "chars": 211,
    "preview": "FROM debian:sid-slim\nLABEL maintainer \"Jessie Frazelle <jess@linux.com>\"\n\nRUN apt-get update && apt-get install -y \\\n\tne"
  },
  {
    "path": "nginx-extras/Dockerfile",
    "chars": 450,
    "preview": "FROM debian:bullseye-slim\nLABEL maintainer \"Jessie Frazelle <jess@linux.com>\"\n\nRUN apt-get update && apt-get install -y "
  },
  {
    "path": "nmap/Dockerfile",
    "chars": 212,
    "preview": "FROM debian:bullseye-slim\nLABEL maintainer \"Jessie Frazelle <jess@linux.com>\"\n\nRUN apt-get update && apt-get install -y "
  },
  {
    "path": "no_new_privs/Dockerfile",
    "chars": 108,
    "preview": "FROM alpine:latest\n\nCOPY nnp /usr/local/bin/nnp\nRUN chmod +s /usr/local/bin/nnp\n\nCMD [\"/usr/local/bin/nnp\"]\n"
  },
  {
    "path": "no_new_privs/nnp.c",
    "chars": 167,
    "preview": "#include <stdio.h>\n#include <unistd.h>\n#include <sys/types.h>\n\nint main(int argc, char *argv[]){\n        printf(\"Effecti"
  },
  {
    "path": "node-sonos/Dockerfile",
    "chars": 292,
    "preview": "FROM node:alpine\n\nRUN apk add --no-cache \\\n\tbuild-base \\\n\tca-certificates \\\n\tgit \\\n\tpython\n\nRUN git clone --depth 1 http"
  },
  {
    "path": "nomad/Dockerfile",
    "chars": 1284,
    "preview": "FROM golang:latest as builder\nMAINTAINER Jessica Frazelle <jess@linux.com>\n\nENV PATH /go/bin:/usr/local/go/bin:$PATH\nENV"
  },
  {
    "path": "notify-osd/Dockerfile",
    "chars": 1230,
    "preview": "# To use:\n# Needs X11 socket and dbus mounted\n#\n# docker run -d \\\n#\t-v /etc/machine-id:/etc/machine-id:ro \\\n#\t-v /etc/lo"
  },
  {
    "path": "notify-osd/org.freedesktop.Notifications.service",
    "chars": 93,
    "preview": "[D-BUS Service]\nName=org.freedesktop.Notifications\nExec=/usr/lib/x86_64-linux-gnu/notify-osd\n"
  },
  {
    "path": "nzbget/Dockerfile",
    "chars": 1013,
    "preview": "FROM python:2-alpine\nLABEL maintainer \"Jessie Frazelle <jess@linux.com>\"\n\nENV LANG \"en_US.UTF-8\"\nENV LANGUAGE \"en_US.UTF"
  },
  {
    "path": "nzbget/nzbget.conf",
    "chars": 68519,
    "preview": "# Configuration file for NZBGet\r\n\r\n\r\n##############################################################################\r\n###"
  },
  {
    "path": "oauth2-proxy/Dockerfile",
    "chars": 583,
    "preview": "FROM golang:alpine as builder\nLABEL maintainer \"Jessie Frazelle <jess@linux.com>\"\n\nRUN\tapk --no-cache add \\\n\tca-certific"
  },
  {
    "path": "openbmc/Dockerfile",
    "chars": 1348,
    "preview": "FROM debian:buster-slim\n\nRUN apt-get update && apt-get install -y \\\n\tbash \\\n\tbuild-essential \\\n\tca-certificates \\\n\tchrpa"
  },
  {
    "path": "openscad/Dockerfile",
    "chars": 220,
    "preview": "FROM debian:bullseye-slim\nLABEL maintainer \"Jessie Frazelle <jess@linux.com>\"\n\nRUN apt-get update && apt-get install -y "
  },
  {
    "path": "openvpn/Dockerfile",
    "chars": 170,
    "preview": "FROM alpine:latest\nRUN apk --no-cache add \\\n\topenvpn\n\nRUN mkdir /usr/share/openvpn\nRUN cp /etc/openvpn/* /usr/share/open"
  },
  {
    "path": "openvpn/README.md",
    "chars": 1205,
    "preview": "# LMCTVPNFY\n\nLet Me Containerize That VPN For You\n\n\n## How to use this?\n\nDrop your OpenVPN configuration file in this di"
  },
  {
    "path": "openvpn/docker-compose.yml",
    "chars": 170,
    "preview": "vpn:\n  build: .\n  volumes:\n    - .:/etc/openvpn\n    - /etc/resolv.conf:/etc/resolv.conf\n  net: host\n  devices:\n    - /de"
  },
  {
    "path": "osquery/Dockerfile",
    "chars": 2163,
    "preview": "FROM ubuntu:bionic\nLABEL maintainer \"Jessie Frazelle <jess@linux.com>\"\n\nENV DEBIAN_FRONTEND noninteractive\n\nRUN apt-get "
  },
  {
    "path": "osquery/osquery.example.conf",
    "chars": 3585,
    "preview": "{\n  // Configure the daemon below:\n  \"options\": {\n    // Select the osquery config plugin.\n    \"config_plugin\": \"filesys"
  },
  {
    "path": "packer/Dockerfile",
    "chars": 686,
    "preview": "FROM golang:alpine as builder\nMAINTAINER Jessica Frazelle <jess@linux.com>\n\nENV PATH /go/bin:/usr/local/go/bin:$PATH\nENV"
  },
  {
    "path": "pandoc/Dockerfile",
    "chars": 214,
    "preview": "FROM debian:bullseye-slim\nLABEL maintainer \"Jessie Frazelle <jess@linux.com>\"\n\nRUN apt-get update && apt-get install -y "
  },
  {
    "path": "parrot-live/Dockerfile",
    "chars": 185,
    "preview": "FROM node:alpine\n\nRUN apk add --no-cache git\nRUN git clone --branch master --depth 1 https://github.com/hugomd/parrot.li"
  },
  {
    "path": "pdp-10/its/Dockerfile",
    "chars": 601,
    "preview": "FROM debian:bullseye-slim\n\nRUN apt-get update && apt-get install -y \\\n\tca-certificates \\\n\tsimh \\\n\t--no-install-recommend"
  },
  {
    "path": "perkeep/Dockerfile",
    "chars": 632,
    "preview": "FROM golang:1.10-alpine AS builder\nLABEL maintainer \"Jessie Frazelle <jess@linux.com>\"\n\nRUN\tapk --no-cache add \\\n\tca-cer"
  },
  {
    "path": "pivman/Dockerfile",
    "chars": 609,
    "preview": "# Run pivman (yubikey-piv-manager) in a container\n#\n# docker run -d \\\n#\t-v /etc/localtime:/etc/localtime:ro \\\n#\t-v /tmp/"
  },
  {
    "path": "plex-home-theater/Dockerfile",
    "chars": 600,
    "preview": "# plex home theater\n#\n# docker run -d -v /tmp/.X11-unix:/tmp/.X11-unix \\\n# \t-e DISPLAY=unix$DISPLAY \\\n# \t--device /dev/s"
  },
  {
    "path": "plexpy/Dockerfile",
    "chars": 709,
    "preview": "# A Python based monitoring and tracking tool for Plex Media Server.\n#\n# docker run  -d \\\n#  --name=PlexPy \\\n#  -v <path"
  },
  {
    "path": "pms/Dockerfile",
    "chars": 349,
    "preview": "# Practical Music Search, an MPD client\n#\n# docker run --rm -it \\\n# \t-v /etc/localtime:/etc/localtime:ro \\\n#\t--link mpd:"
  },
  {
    "path": "pomerium/Dockerfile",
    "chars": 590,
    "preview": "FROM golang:alpine as builder\nLABEL maintainer \"Jessie Frazelle <jess@linux.com>\"\n\nRUN\tapk --no-cache add \\\n\tca-certific"
  },
  {
    "path": "pop/.gitignore",
    "chars": 6,
    "preview": "pop.c\n"
  },
  {
    "path": "pop/Dockerfile",
    "chars": 76,
    "preview": "FROM alpine:latest\n\nCOPY pop /usr/local/bin/pop\n\nCMD [\"/usr/local/bin/pop\"]\n"
  },
  {
    "path": "postfix/Dockerfile",
    "chars": 398,
    "preview": "FROM alpine:latest\n\nRUN apk add --no-cache \\\n\tbash \\\n\tca-certificates \\\n\tlibsasl \\\n\tmailx \\\n\tpostfix \\\n\trsyslog \\\n\trunit"
  },
  {
    "path": "postfix/rsyslog.conf",
    "chars": 3982,
    "preview": "# rsyslog v5: load input modules\n# If you do not load inputs, nothing happens!\n# You may need to set the module load pat"
  },
  {
    "path": "postfix/runit_bootstrap",
    "chars": 44,
    "preview": "#!/bin/sh\n\nexec /sbin/runsvdir /etc/service\n"
  },
  {
    "path": "postfix/service/postfix/run",
    "chars": 2180,
    "preview": "#!/bin/bash\nset -e\n\n# Avoid  warning: smtputf8_enable is true, but EAI support is not compiled in\necho \"smtputf8_enable "
  },
  {
    "path": "postfix/service/postfix/supervise/.gitignore",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "postfix/service/rsyslog/run",
    "chars": 37,
    "preview": "#!/bin/bash\nset -e\n\nexec rsyslogd -n\n"
  },
  {
    "path": "postfix/service/rsyslog/supervise/.gitignore",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "powershell/Dockerfile",
    "chars": 749,
    "preview": "FROM debian:stretch-slim\nLABEL maintainer \"Christian Koep <christiankoep@gmail.com>\"\n\nENV POWERSHELL_VERSION 7.0.1\n\nRUN "
  },
  {
    "path": "powershell-azure/Dockerfile",
    "chars": 305,
    "preview": "FROM r.j3ss.co/powershell:latest\n\n# Install/Update PowerShellGet\nRUN pwsh -c \"Install-Module PowerShellGet -Force\"\n\n# In"
  },
  {
    "path": "privoxy/Dockerfile",
    "chars": 760,
    "preview": "# run a privoxy in a container and link to a tor socks proxy container\n#\n# docker run -d \\\n#\t--restart always \\\n# \t# the"
  },
  {
    "path": "privoxy/privoxy.conf",
    "chars": 57778,
    "preview": "#        Sample Configuration File for Privoxy\n#\n#  Id: config,v\n#\n#  Copyright (C) 2001-2011 Privoxy Developers http://"
  },
  {
    "path": "protocol/Dockerfile",
    "chars": 470,
    "preview": "FROM alpine:latest\nLABEL maintainer \"James Abley <james.abley@gmail.com>\"\n\nRUN buildDeps=' \\\n               ca-certifica"
  },
  {
    "path": "pulseaudio/Dockerfile",
    "chars": 898,
    "preview": "# Pulseaudio\n#\n# docker run -d \\\n#\t-v /etc/localtime:/etc/localtime:ro \\\n#\t--device /dev/snd \\\n#\t--name pulseaudio \\\n#\t-"
  },
  {
    "path": "pulseaudio/client.conf",
    "chars": 1255,
    "preview": "# This file is part of PulseAudio.\n#\n# PulseAudio is free software; you can redistribute it and/or modify\n# it under the"
  },
  {
    "path": "pulseaudio/daemon.conf",
    "chars": 2261,
    "preview": "# This file is part of PulseAudio.\n#\n# PulseAudio is free software; you can redistribute it and/or modify\n# it under the"
  },
  {
    "path": "pulseaudio/default.pa",
    "chars": 922,
    "preview": "# Replace the *entire* content of this file with these few lines and\n# read the comments\n\n.fail\n    # Set tsched=0 here "
  },
  {
    "path": "radarr/Dockerfile",
    "chars": 937,
    "preview": "FROM alpine:latest\nLABEL maintainer \"Jessie Frazelle <jess@linux.com>\"\n\nENV LANG \"en_US.UTF-8\"\nENV LANGUAGE \"en_US.UTF-8"
  }
]

// ... and 116 more files (download for full content)

About this extraction

This page contains the full source code of the jessfraz/dockerfiles GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 316 files (518.1 KB), approximately 164.2k tokens, and a symbol index with 27 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!