Created
June 10, 2015 13:53
-
-
Save seangreen/9df34f8179c654f92d13 to your computer and use it in GitHub Desktop.
Shell Script to switch the Magento braintree gateway from Sandbox mode to Production mode and vice-versa
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# Author: Sean Grünböck / studio19.at | |
# Version: 1.0 | |
# Usage: Use this script to switch braintree to sandbox or production mode | |
# VARIABLES | |
CONFIG_FILE="./app/etc/local.xml" | |
PAYMENT_PROVIDER="Braintree" | |
# SANDBOX | |
SANDBOX_CSE="" | |
SANDBOX_MERCHANTID="" | |
SANDBOX_ENVIRONMENT="" | |
SANDBOX_PRIVATEKEY="" | |
SANDBOX_PUBLICKEY="" | |
# PRODUCTION | |
PRODUCTION_CSE="" | |
PRODUCTION_MERCHANTID="" | |
PRODUCTION_ENVIRONMENT="" | |
PRODUCTION_PRIVATEKEY="" | |
PRODUCTION_PUBLICKEY="" | |
# USAGE | |
function usage() | |
{ | |
cat <<EOF | |
Usage: $0 [OPTIONS] | |
Version: 1.0 | |
Author: Sean Grünböck / studio19.at | |
Use this script to switch braintree to sandbox or production mode | |
OPTIONS: | |
-s Set to Sandbox | |
-p Set to Production | |
EOF | |
} | |
# MESSAGE FUNCTION | |
function message() | |
{ | |
STRIP=$(for i in {1..38}; do echo -n "#"; done) | |
echo -e "$STRIP\n$1\n$STRIP" | |
} | |
# GET OPTIONS | |
while getopts ":sp" OPTION; do | |
case $OPTION in | |
h) | |
usage | |
exit 0 | |
;; | |
*) | |
[[ "$OPTARG" == "" ]] && OPTARG='"-'$OPTION' 1"' | |
OPTION="OPT_$OPTION" | |
eval ${OPTION}=$OPTARG | |
;; | |
esac | |
done | |
# EXIT IF NO OPTIONS | |
[[ "$OPT_s$OPT_p" == "" ]] && usage && exit 1 | |
# GET PARAMETERS FROM LOCAL.XML | |
function getParam() | |
{ | |
RETVAL=$(grep -Eoh "<$1>(<!\[CDATA\[)?(.*)(\]\]>)?<\/$1>" $TMP_FILE | sed "s#<$1><!\[CDATA\[##g;s#\]\]><\/$1>##g") | |
if [[ "$2" == "sanitise" ]]; then | |
RETVAL=$(echo "$RETVAL" | sed 's/"/\\\"/g') | |
fi | |
echo -e "$RETVAL" | |
} | |
which mktemp >/dev/null 2>&1 | |
[ $? -eq 0 ] && TMP_FILE=$(mktemp ./var/local.xml.XXXXX) || TMP_FILE="./var/.tmp.local.xml" | |
sed -ne '/default_setup/,/\/default_setup/p' $CONFIG_FILE > $TMP_FILE | |
IGNORE_STRING="" | |
DBHOST=$(getParam "host") | |
DBUSER=$(getParam "username") | |
DBPASS=$(getParam "password" "sanitise" ) | |
DBNAME=$(getParam "dbname") | |
TABLE_PREFIX=$(getParam "table_prefix") | |
[ -f $TMP_FILE ] && rm $TMP_FILE | |
# DO THE MAGIC | |
if [[ ! "$OPT_s" == "" ]]; then | |
mysql -h $DBHOST -u $DBUSER -p$DBPASS -e "UPDATE core_config_data SET value='$SANDBOX_CSE' WHERE path='payment/braintree/client_side_encryption_key'" $DBNAME; | |
mysql -h $DBHOST -u $DBUSER -p$DBPASS -e "UPDATE core_config_data SET value='$SANDBOX_MERCHANTID' WHERE path='payment/braintree/merchant_id'" $DBNAME; | |
mysql -h $DBHOST -u $DBUSER -p$DBPASS -e "UPDATE core_config_data SET value='$SANDBOX_ENVIRONMENT' WHERE path='payment/braintree/environment'" $DBNAME; | |
mysql -h $DBHOST -u $DBUSER -p$DBPASS -e "UPDATE core_config_data SET value='$SANDBOX_PRIVATEKEY' WHERE path='payment/braintree/private_key'" $DBNAME; | |
mysql -h $DBHOST -u $DBUSER -p$DBPASS -e "UPDATE core_config_data SET value='$SANDBOX_PUBLICKEY' WHERE path='payment/braintree/public_key'" $DBNAME; | |
message "Switched $PAYMENT_PROVIDER to SANDBOX" | |
elif [[ ! "$OPT_p" == "" ]]; then | |
mysql -h $DBHOST -u $DBUSER -p$DBPASS -e "UPDATE core_config_data SET value='$PRODUCTION_CSE' WHERE path='payment/braintree/client_side_encryption_key'" $DBNAME; | |
mysql -h $DBHOST -u $DBUSER -p$DBPASS -e "UPDATE core_config_data SET value='$PRODUCTION_MERCHANTID' WHERE path='payment/braintree/merchant_id'" $DBNAME; | |
mysql -h $DBHOST -u $DBUSER -p$DBPASS -e "UPDATE core_config_data SET value='$PRODUCTION_ENVIRONMENT' WHERE path='payment/braintree/environment'" $DBNAME; | |
mysql -h $DBHOST -u $DBUSER -p$DBPASS -e "UPDATE core_config_data SET value='$PRODUCTION_PRIVATEKEY' WHERE path='payment/braintree/private_key'" $DBNAME; | |
mysql -h $DBHOST -u $DBUSER -p$DBPASS -e "UPDATE core_config_data SET value='$PRODUCTION_PUBLICKEY' WHERE path='payment/braintree/public_key'" $DBNAME; | |
message "Switched $PAYMENT_PROVIDER to PRODUCTION" | |
fi |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
I should load Sandbox and Production information from a config file - maybe add it to etc/local.xml ... that would be more secure, than having the data directly in the script.