72 lines
No EOL
1.8 KiB
Bash
Executable file
72 lines
No EOL
1.8 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
SERVER_INSTALL_PATH="$1"
|
|
EXTERN_IP="$2"
|
|
|
|
HTTP_PORT="$((1024 + $RANDOM % 65535))"
|
|
TMPDIR="/tmp/server_http_$HTTP_PORT"
|
|
|
|
if [ "$SERVER_INSTALL_PATH" == "" ]; then
|
|
echo "You didn't pass in all the arguments! Usage:"
|
|
echo " ./install.sh \$INSTALL_KEY"
|
|
exit 1
|
|
fi
|
|
|
|
if [ "$EXTERN_IP" == "" ]; then
|
|
BASE_IPS="$(ip a | grep "inet" | grep "brd" | cut -d "/" -f 1 | cut -d " " -f 6)"
|
|
|
|
EXT_10_DOT_IP="$(echo "$BASE_IPS" | grep "10." | cut -d $'\n' -f 1)"
|
|
EXT_172_16_IP="$(echo "$BASE_IPS" | grep "172.16." | cut -d $'\n' -f 1)"
|
|
EXT_192168_IP="$(echo "$BASE_IPS" | grep "192.168." | cut -d $'\n' -f 1)"
|
|
|
|
if [ "$EXT_10_DOT_IP" != "" ]; then
|
|
EXTERN_IP="$EXT_10_DOT_IP"
|
|
fi
|
|
|
|
if [ "$EXT_172_16_IP" != "" ]; then
|
|
EXTERN_IP="$EXT_172_16_IP"
|
|
fi
|
|
|
|
if [ "$EXT_192168_IP" != "" ]; then
|
|
EXTERN_IP="$EXT_192168_IP"
|
|
fi
|
|
fi
|
|
|
|
echo "[x] initializing..."
|
|
./merge.py "$SERVER_INSTALL_PATH" "http://$EXTERN_IP:$HTTP_PORT/api/installer_update_webhook"
|
|
mkdir $TMPDIR
|
|
|
|
echo "#cloud-config" > $TMPDIR/user-data
|
|
cat /tmp/script.yml >> $TMPDIR/user-data
|
|
|
|
if [ "$(uname)" == "Linux" ]; then
|
|
echo "[x] stopping firewall (Linux)..."
|
|
sudo systemctl stop firewall
|
|
fi
|
|
|
|
touch $TMPDIR/meta-data
|
|
touch $TMPDIR/vendor-data
|
|
|
|
echo "[x] starting HTTP server..."
|
|
echo " - Going to listen on port $HTTP_PORT."
|
|
echo " - Unless you believe the install has gone wrong, do NOT manually kill the HTTP server,"
|
|
echo " - as it will close on its own."
|
|
echo " - Add these command line options to Ubuntu:"
|
|
echo " - autoinstall \"ds=nocloud-net;s=http://$EXTERN_IP:$HTTP_PORT/\""
|
|
|
|
echo
|
|
|
|
SERVE_SCRIPT="$PWD/serve.py"
|
|
|
|
pushd $TMPDIR > /dev/null
|
|
|
|
python3 $SERVE_SCRIPT $HTTP_PORT
|
|
|
|
popd > /dev/null
|
|
|
|
echo "[x] running cleanup tasks..."
|
|
rm -rf $TMPDIR
|
|
|
|
if [ "$(uname)" == "Linux" ]; then
|
|
echo "[x] starting firewall (Linux)..."
|
|
sudo systemctl start firewall
|
|
fi |