From 0cb73cc095a84bc8510f4565abef8f539772a0fe Mon Sep 17 00:00:00 2001
From: Bob Mottram <bob@robotics.uk.to>
Date: Sat, 21 Nov 2015 12:23:46 +0000
Subject: [PATCH] Generate a random initial password for the image

Fixed default passwords should be avoided
---
 src/freedombone-image | 41 +++++++++++++++++++++++++++++++----------
 1 file changed, 31 insertions(+), 10 deletions(-)

diff --git a/src/freedombone-image b/src/freedombone-image
index cbdcfcaaf..326ab9007 100755
--- a/src/freedombone-image
+++ b/src/freedombone-image
@@ -37,7 +37,7 @@ VMDEBOOTSTRAP_VERSION=0.8
 MAKEFILE=${PROJECT_NAME}-image-makefile
 
 USERNAME=$(echo $USER)
-PASSWORD="${PROJECT_NAME}"
+PASSWORD=
 
 # IP address of the router (gateway)
 ROUTER_IP_ADDRESS="192.168.1.254"
@@ -52,6 +52,8 @@ NAMESERVER2='85.214.20.141'
 # An optional freedombone configuration file
 CONFIG_FILENAME=
 
+DEFAULT_DOMAIN_NAME="${PROJECT_NAME}.local"
+
 while [[ $# > 1 ]]
 do
 key="$1"
@@ -63,6 +65,11 @@ case $key in
     -c|--config)
     shift
     CONFIG_FILENAME="$1"
+    if [ ! -f $CONFIG_FILENAME ]; then
+        echo "Config file $CONFIG_FILENAME not found"
+        exit 3
+    fi
+    DEFAULT_DOMAIN_NAME=$(cat $CONFIG_FILENAME | grep 'DEFAULT_DOMAIN_NAME' | awk -F '=' '{print $2}')
     ;;
     -t|--target|--board)
     shift
@@ -103,7 +110,10 @@ esac
 shift
 done
 
-
+if [ ! $PASSWORD ]; then
+    # generate a random password
+    PASSWORD="$(openssl rand -base64 10 | cut -c1-8)"
+fi
 
 rm $CURR_DIR/*.img.bz2
 rm $CURR_DIR/*.img
@@ -145,15 +155,15 @@ make $IMAGE_TYPE \
     BOX_IP_ADDRESS="$BOX_IP_ADDRESS" \
     NAMESERVER1="$NAMESERVER1" \
     NAMESERVER2="$NAMESERVER2" \
-	PROJECT_NAME="$PROJECT_NAME" \
-	CONFIG_FILENAME="$CONFIG_FILENAME"
+    PROJECT_NAME="$PROJECT_NAME" \
+    CONFIG_FILENAME="$CONFIG_FILENAME"
 
 shopt -s nullglob
 imgfiles=(build/${PROJECT_NAME}*.img)
 if [ ${#imgfiles[@]} -eq 0 ]; then
-	echo 'Image was not created'
-	rm -rf $BUILD_DIR
-	exit 1
+    echo 'Image was not created'
+    rm -rf $BUILD_DIR
+    exit 1
 fi
 
 mv build/${PROJECT_NAME}*.bz2 $CURR_DIR
@@ -162,9 +172,20 @@ mv build/${PROJECT_NAME}*.sig $CURR_DIR
 rm -rf $BUILD_DIR
 
 clear
-echo '
-Image was created
-'
+echo "
+Image was created.
+
+You will be able to log into it with:
+
+    ssh $USERNAME@$DEFAULT_DOMAIN_NAME -p 2222
+
+    Password: $PASSWORD
+"
 ls -lh ${PROJECT_NAME}*.img ${PROJECT_NAME}*.sig ${PROJECT_NAME}*.bz2
 
+# record the default login credentials for later use
+echo "Username: $USERNAME
+Password: $PASSWORD" > ${PROJECT_NAME}_login_credentials.txt
+chmod 600 ${PROJECT_NAME}_login_credentials.txt
+
 exit 0
-- 
GitLab