2017-09-28 20:00:51 +00:00
|
|
|
|
#!/bin/bash
|
2017-10-05 22:53:35 +00:00
|
|
|
|
|
2017-10-05 22:02:02 +00:00
|
|
|
|
###################################################
|
2018-08-21 14:57:25 +00:00
|
|
|
|
# Do not change any contents of this script!!
|
2017-10-05 22:02:02 +00:00
|
|
|
|
###################################################
|
2018-01-10 17:14:39 +00:00
|
|
|
|
|
|
|
|
|
# Some vars
|
2017-10-05 19:13:58 +00:00
|
|
|
|
myCONFIGFILE="/opt/tpot/etc/tpot.yml"
|
2018-01-10 17:13:48 +00:00
|
|
|
|
myCOMPOSEPATH="/opt/tpot/etc/compose"
|
2017-10-05 19:13:58 +00:00
|
|
|
|
myRED="[0;31m"
|
|
|
|
|
myGREEN="[0;32m"
|
|
|
|
|
myWHITE="[0;0m"
|
|
|
|
|
myBLUE="[0;34m"
|
|
|
|
|
|
2017-09-28 20:00:51 +00:00
|
|
|
|
|
2017-10-05 19:13:58 +00:00
|
|
|
|
# Check for existing tpot.yml
|
|
|
|
|
function fuCONFIGCHECK () {
|
|
|
|
|
echo "### Checking for T-Pot configuration file ..."
|
|
|
|
|
echo -n "###### $myBLUE$myCONFIGFILE$myWHITE "
|
2017-10-19 09:02:59 +00:00
|
|
|
|
if ! [ -f $myCONFIGFILE ];
|
2017-10-05 19:13:58 +00:00
|
|
|
|
then
|
|
|
|
|
echo
|
2018-08-20 15:06:10 +00:00
|
|
|
|
echo "[ $myRED""NOT OK""$myWHITE ] - No T-Pot configuration found."
|
|
|
|
|
echo "Please create a link to your desired config i.e. 'ln -s /opt/tpot/etc/compose/standard.yml /opt/tpot/etc/tpot.yml'."
|
2017-10-05 19:13:58 +00:00
|
|
|
|
echo
|
|
|
|
|
exit 1
|
|
|
|
|
else
|
2018-08-20 15:06:10 +00:00
|
|
|
|
echo "[ $myGREEN""OK""$myWHITE ]"
|
2017-10-05 19:13:58 +00:00
|
|
|
|
fi
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
# Let's test the internet connection
|
|
|
|
|
function fuCHECKINET () {
|
|
|
|
|
mySITES=$1
|
|
|
|
|
echo "### Now checking availability of ..."
|
|
|
|
|
for i in $mySITES;
|
|
|
|
|
do
|
|
|
|
|
echo -n "###### $myBLUE$i$myWHITE "
|
|
|
|
|
curl --connect-timeout 5 -IsS $i 2>&1>/dev/null
|
|
|
|
|
if [ $? -ne 0 ];
|
|
|
|
|
then
|
2018-08-20 15:06:10 +00:00
|
|
|
|
echo
|
|
|
|
|
echo "###### $myBLUE""Error - Internet connection test failed.""$myWHITE"" [ $myRED""NOT OK""$myWHITE ]"
|
|
|
|
|
echo "Exiting.""$myWHITE"
|
2017-10-05 19:13:58 +00:00
|
|
|
|
echo
|
|
|
|
|
exit 1
|
|
|
|
|
else
|
2018-08-20 15:06:10 +00:00
|
|
|
|
echo "[ $myGREEN"OK"$myWHITE ]"
|
2017-10-05 19:13:58 +00:00
|
|
|
|
fi
|
|
|
|
|
done;
|
|
|
|
|
}
|
|
|
|
|
|
2018-08-20 15:06:10 +00:00
|
|
|
|
# Update
|
2017-10-05 22:02:02 +00:00
|
|
|
|
function fuSELFUPDATE () {
|
2017-10-05 22:34:41 +00:00
|
|
|
|
echo "### Now checking for newer files in repository ..."
|
2018-08-20 15:06:10 +00:00
|
|
|
|
git fetch --all
|
2017-10-05 22:34:41 +00:00
|
|
|
|
myREMOTESTAT=$(git status | grep -c "up-to-date")
|
|
|
|
|
if [ "$myREMOTESTAT" != "0" ];
|
|
|
|
|
then
|
2018-08-20 15:06:10 +00:00
|
|
|
|
echo "###### $myBLUE""No updates found in repository.""$myWHITE"
|
2017-10-05 22:34:41 +00:00
|
|
|
|
return
|
|
|
|
|
fi
|
2018-08-21 14:51:46 +00:00
|
|
|
|
myRESULT=$(git diff --name-only origin/18.04 | grep update.sh)
|
2017-10-05 22:02:02 +00:00
|
|
|
|
myLOCALSTAT=$(git status -uno | grep -c update.sh)
|
|
|
|
|
if [ "$myRESULT" == "update.sh" ];
|
|
|
|
|
then
|
2017-10-05 22:40:31 +00:00
|
|
|
|
if [ "$myLOCALSTAT" == "0" ];
|
2017-10-05 22:02:02 +00:00
|
|
|
|
then
|
2018-08-20 15:06:10 +00:00
|
|
|
|
echo "###### $myBLUE""Found newer version, will update myself and restart.""$myWHITE"
|
2018-08-21 14:50:33 +00:00
|
|
|
|
git reset --hard
|
2017-10-05 22:02:02 +00:00
|
|
|
|
git pull --force
|
|
|
|
|
exec "$1" "$2"
|
|
|
|
|
exit 1
|
|
|
|
|
fi
|
|
|
|
|
else
|
2018-08-20 15:06:10 +00:00
|
|
|
|
echo "###### $myBLUE""Update script is already up-to-date.""$myWHITE"
|
|
|
|
|
git reset --hard
|
2017-10-13 21:53:21 +00:00
|
|
|
|
git pull --force
|
2017-10-19 09:02:59 +00:00
|
|
|
|
fi
|
|
|
|
|
}
|
2017-10-05 22:02:02 +00:00
|
|
|
|
|
2018-08-08 15:02:56 +00:00
|
|
|
|
# Let's check for version
|
|
|
|
|
function fuCHECK_VERSION () {
|
|
|
|
|
local myMINVERSION="18.04.0"
|
2018-08-21 14:35:35 +00:00
|
|
|
|
local myMASTERVERSION="18.10.0"
|
2018-08-08 15:02:56 +00:00
|
|
|
|
echo
|
2018-08-20 15:06:10 +00:00
|
|
|
|
echo "### Checking for version tag ..."
|
2018-08-08 15:02:56 +00:00
|
|
|
|
if [ -f "version" ];
|
|
|
|
|
then
|
|
|
|
|
myVERSION=$(cat version)
|
|
|
|
|
if [[ "$myVERSION" > "$myMINVERSION" || "$myVERSION" == "$myMINVERSION" ]] && [[ "$myVERSION" < "$myMASTERVERSION" || "$myVERSION" == "$myMASTERVERSION" ]]
|
|
|
|
|
then
|
2018-08-20 15:06:10 +00:00
|
|
|
|
echo "###### $myBLUE$myVERSION is eligible for the update procedure.$myWHITE"" [ $myGREEN""OK""$myWHITE ]"
|
2018-08-08 15:02:56 +00:00
|
|
|
|
else
|
2018-08-20 15:06:10 +00:00
|
|
|
|
echo "###### $myBLUE $myVERSION cannot be upgraded automatically. Please run a fresh install.$myWHITE"" [ $myRED""NOT OK""$myWHITE ]"
|
|
|
|
|
exit
|
2018-08-08 15:02:56 +00:00
|
|
|
|
fi
|
|
|
|
|
else
|
2018-08-20 15:06:10 +00:00
|
|
|
|
echo "###### $myBLUE""Unable to determine version. Please run 'update.sh' from within '/opt/tpot'.""$myWHITE"" [ $myRED""NOT OK""$myWHITE ]"
|
2018-08-08 15:02:56 +00:00
|
|
|
|
exit
|
|
|
|
|
fi
|
|
|
|
|
}
|
|
|
|
|
|
2018-08-20 15:06:10 +00:00
|
|
|
|
|
|
|
|
|
# Stop T-Pot to avoid race conditions with running containers with regard to the current T-Pot config
|
|
|
|
|
function fuSTOP_TPOT () {
|
|
|
|
|
echo "### Need to stop T-Pot ..."
|
|
|
|
|
echo -n "###### $myBLUE Now stopping T-Pot.$myWHITE "
|
|
|
|
|
systemctl stop tpot
|
|
|
|
|
if [ $? -ne 0 ];
|
|
|
|
|
then
|
|
|
|
|
echo " [ $myRED""NOT OK""$myWHITE ]"
|
|
|
|
|
echo "###### $myBLUE""Could not stop T-Pot.""$myWHITE"" [ $myRED""NOT OK""$myWHITE ]"
|
|
|
|
|
echo "Exiting.""$myWHITE"
|
|
|
|
|
echo
|
|
|
|
|
exit 1
|
|
|
|
|
else
|
|
|
|
|
echo "[ $myGREEN"OK"$myWHITE ]"
|
2017-09-28 20:00:51 +00:00
|
|
|
|
fi
|
2018-08-20 15:06:10 +00:00
|
|
|
|
}
|
2017-10-05 21:02:36 +00:00
|
|
|
|
|
2018-08-20 15:06:10 +00:00
|
|
|
|
# Backup
|
|
|
|
|
function fuBACKUP () {
|
|
|
|
|
local myARCHIVE="/root/$(date +%Y%m%d%H%M)_tpot_backup.tgz"
|
|
|
|
|
local myPATH=$PWD
|
|
|
|
|
echo "### Create a backup, just in case ... "
|
|
|
|
|
echo -n "###### $myBLUE Building archive in $myARCHIVE $myWHITE"
|
|
|
|
|
cd /opt/tpot
|
|
|
|
|
tar cvfz $myARCHIVE * 2>&1>/dev/null
|
|
|
|
|
if [ $? -ne 0 ];
|
|
|
|
|
then
|
|
|
|
|
echo " [ $myRED""NOT OK""$myWHITE ]"
|
|
|
|
|
echo "###### $myBLUE""Something went wrong.""$myWHITE"" [ $myRED""NOT OK""$myWHITE ]"
|
|
|
|
|
echo "Exiting.""$myWHITE"
|
|
|
|
|
echo
|
|
|
|
|
cd $myPATH
|
|
|
|
|
exit 1
|
|
|
|
|
else
|
|
|
|
|
echo "[ $myGREEN"OK"$myWHITE ]"
|
|
|
|
|
cd $myPATH
|
|
|
|
|
fi
|
|
|
|
|
}
|
2017-10-05 22:34:41 +00:00
|
|
|
|
|
2018-08-20 15:06:10 +00:00
|
|
|
|
# Let's load docker images in parallel
|
|
|
|
|
function fuPULLIMAGES {
|
|
|
|
|
local myTPOTCOMPOSE="/opt/tpot/etc/tpot.yml"
|
|
|
|
|
for name in $(cat $myTPOTCOMPOSE | grep -v '#' | grep image | cut -d'"' -f2 | uniq)
|
|
|
|
|
do
|
|
|
|
|
docker pull $name &
|
|
|
|
|
done
|
|
|
|
|
wait
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function fuUPDATER () {
|
|
|
|
|
local myPACKAGES="apache2-utils apparmor apt-transport-https aufs-tools bash-completion build-essential ca-certificates cgroupfs-mount cockpit cockpit-docker curl dialog dnsutils docker.io docker-compose dstat ethtool fail2ban genisoimage git glances grc html2text htop ifupdown iptables iw jq libcrack2 libltdl7 lm-sensors man multitail net-tools npm ntp openssh-server openssl pass prips syslinux psmisc pv python-pip unattended-upgrades unzip vim wireless-tools wpasupplicant"
|
|
|
|
|
echo "### Now upgrading packages ..."
|
|
|
|
|
apt-get -y autoclean
|
|
|
|
|
apt-get -y autoremove
|
|
|
|
|
apt-get update
|
|
|
|
|
apt-get -y install $myPACKAGES
|
|
|
|
|
# Some updates require interactive attention, you can override that for unattended upgrades.
|
|
|
|
|
# Be warned, this can easily break your system.
|
|
|
|
|
# apt-get dist-upgrade -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" --force-yes
|
|
|
|
|
apt-get -y dist-upgrade
|
|
|
|
|
npm install "https://github.com/taskrabbit/elasticsearch-dump#9fcc8cc" -g
|
|
|
|
|
pip install --upgrade pip
|
|
|
|
|
hash -r
|
|
|
|
|
pip install --upgrade elasticsearch-curator yq
|
|
|
|
|
wget https://github.com/bcicen/ctop/releases/download/v0.7.1/ctop-0.7.1-linux-amd64 -O /usr/bin/ctop && chmod +x /usr/bin/ctop
|
2017-10-05 19:13:58 +00:00
|
|
|
|
echo
|
2017-10-05 21:02:36 +00:00
|
|
|
|
|
2018-08-20 15:06:10 +00:00
|
|
|
|
echo "### Now replacing T-Pot related config files on host"
|
|
|
|
|
cp host/etc/systemd/* /etc/systemd/system/
|
|
|
|
|
cp host/etc/issue /etc/
|
2017-10-05 22:02:02 +00:00
|
|
|
|
echo
|
|
|
|
|
|
2018-08-20 15:06:10 +00:00
|
|
|
|
echo "### Now pulling latest docker images"
|
|
|
|
|
fuPULLIMAGES
|
2017-10-05 19:13:58 +00:00
|
|
|
|
echo
|
2017-09-28 20:00:51 +00:00
|
|
|
|
|
2018-08-20 15:06:10 +00:00
|
|
|
|
echo "### If you made changes to tpot.yml please ensure to add them again."
|
|
|
|
|
echo "### We stored the previous version as backup in /root/."
|
|
|
|
|
echo "### Done, please reboot."
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
################
|
|
|
|
|
# Main section #
|
|
|
|
|
################
|
|
|
|
|
|
|
|
|
|
# Got root?
|
|
|
|
|
myWHOAMI=$(whoami)
|
|
|
|
|
if [ "$myWHOAMI" != "root" ]
|
|
|
|
|
then
|
|
|
|
|
echo "Need to run as root ..."
|
|
|
|
|
sudo ./$0
|
|
|
|
|
exit
|
|
|
|
|
fi
|
2017-09-28 20:00:51 +00:00
|
|
|
|
|
2018-08-20 15:06:10 +00:00
|
|
|
|
# Only run with command switch
|
|
|
|
|
if [ "$1" != "-y" ]; then
|
|
|
|
|
echo "This script will update / upgrade all T-Pot related scripts, tools and packages"
|
|
|
|
|
echo "Some of your changes might be overwritten, so make sure to save your work"
|
|
|
|
|
echo "This is beta feature and only recommended for experienced users, run with '-y' switch"
|
|
|
|
|
echo
|
|
|
|
|
exit
|
|
|
|
|
fi
|
2018-01-10 17:29:02 +00:00
|
|
|
|
|
2018-08-20 15:06:10 +00:00
|
|
|
|
fuCHECK_VERSION
|
2017-09-28 20:00:51 +00:00
|
|
|
|
echo
|
|
|
|
|
|
2018-08-20 15:06:10 +00:00
|
|
|
|
fuCONFIGCHECK
|
2017-09-28 20:00:51 +00:00
|
|
|
|
echo
|
|
|
|
|
|
2018-08-20 15:06:10 +00:00
|
|
|
|
fuCHECKINET "https://index.docker.io https://github.com https://pypi.python.org https://ubuntu.com"
|
2017-09-28 20:00:51 +00:00
|
|
|
|
echo
|
|
|
|
|
|
2018-08-20 15:06:10 +00:00
|
|
|
|
fuSTOP_TPOT
|
2017-09-28 20:00:51 +00:00
|
|
|
|
echo
|
|
|
|
|
|
2018-08-20 15:06:10 +00:00
|
|
|
|
fuBACKUP
|
2017-09-28 20:00:51 +00:00
|
|
|
|
echo
|
|
|
|
|
|
2018-08-20 15:06:10 +00:00
|
|
|
|
fuSELFUPDATE "$0" "$@"
|
2017-09-28 20:00:51 +00:00
|
|
|
|
echo
|
|
|
|
|
|
2018-08-20 15:06:10 +00:00
|
|
|
|
fuUPDATER
|
2017-09-28 20:00:51 +00:00
|
|
|
|
echo
|