From 71f806847ae162fe676701312ab9ffe47456e0ce Mon Sep 17 00:00:00 2001 From: Aidan Hahn Date: Sat, 1 Jun 2019 12:39:30 -0700 Subject: [PATCH] refactor build wrapper into smaller operations --- buildwrapper.sh => certs-gen.sh | 59 ++------------------------------- package.sh | 54 ++++++++++++++++++++++++++++++ 2 files changed, 56 insertions(+), 57 deletions(-) rename buildwrapper.sh => certs-gen.sh (66%) create mode 100755 package.sh diff --git a/buildwrapper.sh b/certs-gen.sh similarity index 66% rename from buildwrapper.sh rename to certs-gen.sh index b0e0c9d..74abc7c 100755 --- a/buildwrapper.sh +++ b/certs-gen.sh @@ -1,5 +1,7 @@ + #!/bin/sh +pwd read -p "Enter Server CN (localhost or address): " SRVNAME read -p "Enter Client CN (localhost or address): " CLTNAME @@ -23,7 +25,6 @@ rm -rf staging # Get passwords for CAs read -p "Enter Server CA Passphrase: " SRVCAPASS read -p "Enter Client CA Passphrase: " CLTCAPASS - # Generate CA Keys echo "[+] Generating Server CA Key" openssl genrsa -passout pass:$SRVCAPASS -aes256 -out $SERVER_PATH/ca.key 4096 @@ -76,59 +77,3 @@ echo "[+] Converting private keys to X.509" openssl pkcs8 -topk8 -nocrypt -in $CLIENT_PATH/private.key -out $CLIENT_PATH/private.pem openssl pkcs8 -topk8 -nocrypt -in $SERVER_PATH/private.key -out $SERVER_PATH/private.pem openssl pkcs8 -topk8 -nocrypt -in $TEST_PATH/private.key -out $TEST_PATH/private.pem - -echo "[+] initiating gradle build" -./gradlew clean build - -# Ideally this next section would be done with gradle -# Unfortunately gradle's protobuf distribution plugin does not seem to have facilities to manually include certs -# Or to specify seperate client and server tarballs for that matter -# Definitely more research on gradle should be done, but after JobServ hits MVP -echo "[+] extracting built code" -mkdir staging -mkdir staging/client -mkdir staging/server -mkdir staging/test - -DIST_TAR=JobServ.tar -DIST_DIR=JobServ -if [ -f build/distributions/jobserv.tar ]; then - DIST_TAR=jobserv.tar - DIST_DIR=jobserv -fi - -tar -xvf build/distributions/$DIST_TAR -C staging/client -tar -xvf build/distributions/$DIST_TAR -C staging/server -tar -xvf build/distributions/$DIST_TAR -C staging/test - -echo "[+] removing server capabilities from client" -rm staging/client/$DIST_DIR/bin/jobserv-server staging/client/$DIST_DIR/bin/jobserv-server.bat - -echo "[+] removing client capabilities from server" -rm staging/server/$DIST_DIR/bin/jobserv-client staging/server/$DIST_DIR/bin/jobserv-client.bat - -echo "[+] populating certificates" -cp resources/server/server.crt staging/server/ -cp resources/server/private.pem staging/server/ -cp resources/client/ca.crt staging/server/ -cp resources/client/client.crt staging/client/ -cp resources/client/private.pem staging/client/ -cp resources/server/ca.crt staging/client/ -cp -r resources/* staging/test/ - -echo "[+] Adding wrapper script for client" -# This could also be a .desktop file without much more work. -cat << EOF > staging/client/client - ./$DIST_DIR/bin/jobserv-client private.pem client.crt ca.crt \$@ -EOF -chmod +x staging/client/client - -echo "[+] Adding wrapper script for server" -# This could also be a .desktop file without much more work. -cat << EOF > staging/server/server - ./$DIST_DIR/bin/jobserv-server \$1 server.crt private.pem ca.crt -EOF -chmod +x staging/server/server - -echo "[+] removing test logs" -rm JobServ-Server-* diff --git a/package.sh b/package.sh new file mode 100755 index 0000000..f4e93bf --- /dev/null +++ b/package.sh @@ -0,0 +1,54 @@ +#!/bin/sh + +# Ideally this next section would be done with gradle +# Unfortunately gradle's protobuf distribution plugin does not seem to have facilities to manually include certs +# Or to specify seperate client and server tarballs for that matter +# Definitely more research on gradle should be done, but after JobServ hits MVP +echo "[+] extracting built code" +mkdir staging +mkdir staging/client +mkdir staging/server +mkdir staging/test + +DIST_TAR=JobServ.tar +DIST_DIR=JobServ +if [ -f build/distributions/jobserv.tar ]; then + DIST_TAR=jobserv.tar + DIST_DIR=jobserv +fi + +tar -xvf build/distributions/$DIST_TAR -C staging/client +tar -xvf build/distributions/$DIST_TAR -C staging/server +tar -xvf build/distributions/$DIST_TAR -C staging/test + +echo "[+] removing server capabilities from client" +rm staging/client/$DIST_DIR/bin/jobserv-server staging/client/$DIST_DIR/bin/jobserv-server.bat + +echo "[+] removing client capabilities from server" +rm staging/server/$DIST_DIR/bin/jobserv-client staging/server/$DIST_DIR/bin/jobserv-client.bat + +echo "[+] populating certificates" +cp resources/server/server.crt staging/server/ +cp resources/server/private.pem staging/server/ +cp resources/client/ca.crt staging/server/ +cp resources/client/client.crt staging/client/ +cp resources/client/private.pem staging/client/ +cp resources/server/ca.crt staging/client/ +cp -r resources/* staging/test/ + +echo "[+] Adding wrapper script for client" +# This could also be a .desktop file without much more work. +cat << EOF > staging/client/client + ./$DIST_DIR/bin/jobserv-client private.pem client.crt ca.crt \$@ +EOF +chmod +x staging/client/client + +echo "[+] Adding wrapper script for server" +# This could also be a .desktop file without much more work. +cat << EOF > staging/server/server + ./$DIST_DIR/bin/jobserv-server \$1 server.crt private.pem ca.crt +EOF +chmod +x staging/server/server + +echo "[+] removing test logs" +rm JobServ-Server-*