mirror of
https://github.com/telekom-security/tpotce.git
synced 2025-04-19 21:52:27 +00:00
119 lines
3.5 KiB
Bash
Executable file
119 lines
3.5 KiB
Bash
Executable file
#!/bin/bash
|
|
|
|
# Buildx Example: docker buildx build --platform linux/amd64,linux/arm64 -t username/demo:latest --push .
|
|
|
|
# Setup Vars
|
|
myPLATFORMS="linux/amd64,linux/arm64"
|
|
myHUBORG_DOCKER="dtagdevsec"
|
|
myHUBORG_GITHUB="ghcr.io/telekom-security"
|
|
myTAG="24.04"
|
|
myIMAGESBASE="tpotinit adbhoney ciscoasa citrixhoneypot conpot cowrie ddospot dicompot dionaea elasticpot endlessh ewsposter fatt glutton hellpot heralding honeypots honeytrap ipphoney log4pot mailoney medpot nginx p0f redishoneypot sentrypeer spiderfoot suricata wordpot"
|
|
myIMAGESELK="elasticsearch kibana logstash map"
|
|
myIMAGESTANNER="phpox redis snare tanner"
|
|
myBUILDERLOG="builder.log"
|
|
myBUILDERERR="builder.err"
|
|
myBUILDCACHE="/buildcache"
|
|
|
|
# Got root?
|
|
myWHOAMI=$(whoami)
|
|
if [ "$myWHOAMI" != "root" ]
|
|
then
|
|
echo "Need to run as root ..."
|
|
exit
|
|
fi
|
|
|
|
# Check for Buildx
|
|
docker buildx > /dev/null 2>&1
|
|
if [ "$?" == "1" ];
|
|
then
|
|
echo "### Build environment not setup. Install docker engine from docker:"
|
|
echo "### https://docs.docker.com/engine/install/debian/"
|
|
fi
|
|
|
|
# Let's ensure arm64 and amd64 are supported
|
|
echo "### Let's ensure ARM64 and AMD64 are supported ..."
|
|
myARCHITECTURES="amd64 arm64"
|
|
mySUPPORTED=$(docker buildx inspect --bootstrap)
|
|
|
|
for i in $myARCHITECTURES;
|
|
do
|
|
if ! echo $mySUPPORTED | grep -q linux/$i;
|
|
then
|
|
echo "## Installing $i support ..."
|
|
docker run --privileged --rm tonistiigi/binfmt --install $i
|
|
docker buildx inspect --bootstrap
|
|
else
|
|
echo "## $i support detected!"
|
|
fi
|
|
done
|
|
echo
|
|
|
|
# Let's ensure we have builder created with cache support
|
|
echo "### Checking for mybuilder ..."
|
|
if ! docker buildx ls | grep -q mybuilder;
|
|
then
|
|
echo "## Setting up mybuilder ..."
|
|
docker buildx create --name mybuilder
|
|
# Set as default, otherwise local cache is not supported
|
|
docker buildx use mybuilder
|
|
docker buildx inspect --bootstrap
|
|
else
|
|
echo "## Found mybuilder!"
|
|
fi
|
|
echo
|
|
|
|
# Only run with command switch
|
|
if [ "$1" == "" ]; then
|
|
echo "### T-Pot Multi Arch Image Builder."
|
|
echo "## Usage: builder.sh [build, push]"
|
|
echo "## build - Just build images, do not push."
|
|
echo "## push - Build and push images."
|
|
echo "## Pushing requires an active docker login."
|
|
exit
|
|
fi
|
|
|
|
fuBUILDIMAGES () {
|
|
local myPATH="$1"
|
|
local myIMAGELIST="$2"
|
|
local myPUSHOPTION="$3"
|
|
|
|
for myREPONAME in $myIMAGELIST;
|
|
do
|
|
echo -n "Now building: $myREPONAME in $myPATH$myREPONAME/."
|
|
docker buildx build --cache-from "type=local,src=$myBUILDCACHE" \
|
|
--cache-to "type=local,dest=$myBUILDCACHE" \
|
|
--platform $myPLATFORMS \
|
|
-t $myHUBORG_DOCKER/$myREPONAME:$myTAG \
|
|
-t $myHUBORG_GITHUB/$myREPONAME:$myTAG \
|
|
$myPUSHOPTION $myPATH$myREPONAME/. >> $myBUILDERLOG 2>&1
|
|
if [ "$?" != "0" ];
|
|
then
|
|
echo " [ ERROR ] - Check logs!"
|
|
echo "Error building $myREPONAME" >> "$myBUILDERERR"
|
|
else
|
|
echo " [ OK ]"
|
|
fi
|
|
done
|
|
}
|
|
|
|
# Just build images
|
|
if [ "$1" == "build" ];
|
|
then
|
|
mkdir -p $myBUILDCACHE
|
|
rm -f "$myBUILDERLOG" "$myBUILDERERR"
|
|
echo "### Building images ..."
|
|
fuBUILDIMAGES "" "$myIMAGESBASE" ""
|
|
fuBUILDIMAGES "elk/" "$myIMAGESELK" ""
|
|
fuBUILDIMAGES "tanner/" "$myIMAGESTANNER" ""
|
|
fi
|
|
|
|
# Build and push images
|
|
if [ "$1" == "push" ];
|
|
then
|
|
mkdir -p $myBUILDCACHE
|
|
rm -f "$myBUILDERLOG" "$myBUILDERERR"
|
|
echo "### Building and pushing images ..."
|
|
fuBUILDIMAGES "" "$myIMAGESBASE" "--push"
|
|
fuBUILDIMAGES "elk/" "$myIMAGESELK" "--push"
|
|
fuBUILDIMAGES "tanner/" "$myIMAGESTANNER" "--push"
|
|
fi
|