Skip to content

Commit 728f67a

Browse files
committed
Initial hackbox
1 parent c4d0c01 commit 728f67a

File tree

5 files changed

+216
-0
lines changed

5 files changed

+216
-0
lines changed

.bashrc

Lines changed: 131 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,131 @@
1+
# ~/.bashrc: executed by bash(1) for non-login shells.
2+
# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
3+
# for examples
4+
5+
# If not running interactively, don't do anything
6+
case $- in
7+
*i*) ;;
8+
*) return;;
9+
esac
10+
11+
# don't put duplicate lines or lines starting with space in the history.
12+
# See bash(1) for more options
13+
HISTCONTROL=ignoreboth
14+
15+
# append to the history file, don't overwrite it
16+
shopt -s histappend
17+
18+
# for setting history length see HISTSIZE and HISTFILESIZE in bash(1)
19+
HISTSIZE=1000
20+
HISTFILESIZE=2000
21+
22+
# check the window size after each command and, if necessary,
23+
# update the values of LINES and COLUMNS.
24+
shopt -s checkwinsize
25+
26+
# If set, the pattern "**" used in a pathname expansion context will
27+
# match all files and zero or more directories and subdirectories.
28+
#shopt -s globstar
29+
30+
# make less more friendly for non-text input files, see lesspipe(1)
31+
[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)"
32+
33+
# set variable identifying the chroot you work in (used in the prompt below)
34+
if [ -z "${debian_chroot:-}" ] && [ -r /etc/debian_chroot ]; then
35+
debian_chroot=$(cat /etc/debian_chroot)
36+
fi
37+
38+
# set a fancy prompt (non-color, unless we know we "want" color)
39+
case "$TERM" in
40+
xterm-color|*-256color) color_prompt=yes;;
41+
esac
42+
43+
# uncomment for a colored prompt, if the terminal has the capability; turned
44+
# off by default to not distract the user: the focus in a terminal window
45+
# should be on the output of commands, not on the prompt
46+
#force_color_prompt=yes
47+
48+
if [ -n "$force_color_prompt" ]; then
49+
if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then
50+
# We have color support; assume it's compliant with Ecma-48
51+
# (ISO/IEC-6429). (Lack of such support is extremely rare, and such
52+
# a case would tend to support setf rather than setaf.)
53+
color_prompt=yes
54+
else
55+
color_prompt=
56+
fi
57+
fi
58+
59+
if [ "$color_prompt" = yes ]; then
60+
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
61+
else
62+
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
63+
fi
64+
unset color_prompt force_color_prompt
65+
66+
# If this is an xterm set the title to user@host:dir
67+
case "$TERM" in
68+
xterm*|rxvt*)
69+
PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
70+
;;
71+
*)
72+
;;
73+
esac
74+
75+
# enable color support of ls and also add handy aliases
76+
if [ -x /usr/bin/dircolors ]; then
77+
test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
78+
alias ls='ls --color=auto'
79+
#alias dir='dir --color=auto'
80+
#alias vdir='vdir --color=auto'
81+
82+
alias grep='grep --color=auto'
83+
alias fgrep='fgrep --color=auto'
84+
alias egrep='egrep --color=auto'
85+
fi
86+
87+
# colored GCC warnings and errors
88+
#export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01'
89+
90+
# some more ls aliases
91+
alias ll='ls -alF'
92+
alias la='ls -A'
93+
alias l='ls -CF'
94+
95+
# Add an "alert" alias for long running commands. Use like so:
96+
# sleep 10; alert
97+
alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"'
98+
99+
# Alias definitions.
100+
# You may want to put all your additions into a separate file like
101+
# ~/.bash_aliases, instead of adding them here directly.
102+
# See /usr/share/doc/bash-doc/examples in the bash-doc package.
103+
104+
if [ -f ~/.bash_aliases ]; then
105+
. ~/.bash_aliases
106+
fi
107+
108+
# enable programmable completion features (you don't need to enable
109+
# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
110+
# sources /etc/bash.bashrc).
111+
if ! shopt -oq posix; then
112+
if [ -f /usr/share/bash-completion/bash_completion ]; then
113+
. /usr/share/bash-completion/bash_completion
114+
elif [ -f /etc/bash_completion ]; then
115+
. /etc/bash_completion
116+
fi
117+
fi
118+
119+
#### Above ths line is the default .bashrc
120+
121+
# strip the instance name from the prompt, because it's huge and/or meaningless with a container
122+
export PS1="\W\$ "
123+
124+
# hop into the code folder
125+
cd ~/hack
126+
127+
# activate the virtual env for everyone
128+
source ~/hack/.venv/bin/activate
129+
130+
# Login to azure
131+
az login --identity >/dev/null

Dockerfile

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
FROM ubuntu:18.04
2+
3+
RUN apt-get update
4+
5+
# Azure CLI
6+
RUN apt-get -y install ca-certificates curl apt-transport-https lsb-release gnupg
7+
RUN curl -sL https://packages.microsoft.com/keys/microsoft.asc | \
8+
gpg --dearmor | \
9+
tee /etc/apt/trusted.gpg.d/microsoft.asc.gpg > /dev/null
10+
11+
RUN echo "deb [arch=amd64] https://packages.microsoft.com/repos/azure-cli/ $(lsb_release -cs) main" | \
12+
tee /etc/apt/sources.list.d/azure-cli.list
13+
14+
RUN apt-get update && apt-get install azure-cli
15+
16+
# OS packages
17+
RUN apt-get install -y build-essential jq git libmysqlclient-dev python3 python3-dev python3-pip python3-venv
18+
19+
# Enable sshd
20+
RUN apt-get install -y openssh-server
21+
RUN mkdir /var/run/sshd
22+
RUN sed -ri 's/^#?PermitRootLogin\s+.*/PermitRootLogin yes/' /etc/ssh/sshd_config
23+
RUN sed -ri 's/UsePAM yes/#UsePAM yes/g' /etc/ssh/sshd_config
24+
EXPOSE 22
25+
26+
# Pre-pull dependencies
27+
WORKDIR /root/hack
28+
ARG REQ=https://raw.githubusercontent.com/noelbundick/python-hackbox/master/requirements.txt
29+
RUN curl -Lo requirements.txt $REQ \
30+
&& python3 -m venv .venv \
31+
&& . .venv/bin/activate \
32+
&& pip install pip wheel -U \
33+
&& pip install -r requirements.txt \
34+
&& rm requirements.txt
35+
36+
# Setup the environment
37+
ENV REPO_BRANCH=master
38+
RUN git config --global user.name "Hacker"
39+
COPY .bashrc /root
40+
41+
COPY startup.sh /
42+
CMD ["/bin/bash", "/startup.sh"]

README.md

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
# python-hackbox
2+
3+
This is a Python dev container meant to be run on Azure Container Instances
4+
5+
## Usage
6+
7+
One-time steps
8+
9+
```bash
10+
# Build a container with your dependencies that should be baked in
11+
docker build --build-arg REQ=https://raw.githubusercontent.com/noelbundick/python-hackbox/master/requirements.txt
12+
13+
# Push to Docker Hub
14+
docker push acanthamoeba/hackbox
15+
16+
# Set up some one-time Azure resources
17+
az group create -n hackbox -l westus
18+
az identity create -n hackbox -g hackbox
19+
PRINCIPAL_ID=`az identity show -n hackbox -g hackbox --query principalId -o tsv`
20+
az role assignment create --role Contributor --assignee $PRINCIPAL_ID
21+
22+
# Create an Azure Container Instance
23+
SSHPUBLIC=`cat ~/.ssh/id_rsa.pub`
24+
REPO_URL=https://github.com/noelbundick/python-hackbox.git
25+
REPO_BRANCH=master
26+
IDENTITY_ID=`az identity show -n hackbox -g hackbox --query id -o tsv`
27+
28+
az container create -g hackbox -n hackbox --image acanthamoeba/hackbox:latest -e "REPO_URL=$REPO_URL" "SSH_PUBLIC_KEY=$SSHPUBLIC" --ports 22 --dns-name-label noelhackbox --cpu 2 --memory 2 --assign-identity $IDENTITY_ID
29+
```

requirements.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
pylint

startup.sh

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
#!/bin/bash
2+
set -euo pipefail
3+
4+
mkdir -p ~/.ssh
5+
echo $SSH_PUBLIC_KEY >> ~/.ssh/authorized_keys
6+
7+
# Pull git repo
8+
git init
9+
git remote add origin $REPO_URL
10+
git pull origin $REPO_BRANCH
11+
12+
# Start sshd
13+
/usr/sbin/sshd -D

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy