helpers
#!/bin/bash
#
# This file contains helpers for the various Masking API cookbook scripts.
# This script uses jq to process JSON. More information can be found here - https://stedolan.github.io/jq/.
#
# Login and set the correct $AUTH_HEADER.
login() {
echo "* logging in..."
LOGIN_RESPONSE=$(curl -s $SSL_CERT -X POST -H 'Content-Type: application/json' -H 'Accept: application/json' --data @- $MASKING_ENGINE/login <<EOF
{
"username": "$USERNAME",
"password": "$PASSWORD"
}
EOF)
check_error "$LOGIN_RESPONSE"
TOKEN=$(echo $LOGIN_RESPONSE | jq -r '.Authorization')
AUTH_HEADER="Authorization: $TOKEN"
}
# Get all applications and select the first one. Place the applicationName in $APPLICATION_ID.
get_application_id() {
echo "* getting all applications and selecting first one"
APPLICATIONS_RESPONSE=$(curl -s $SSL_CERT -X GET -H ''"$AUTH_HEADER"'' -H 'Content-Type: application/json' $MASKING_ENGINE/applications)
check_error "$APPLICATIONS_RESPONSE"
NUM_APPLICATIONS=$(echo $APPLICATIONS_RESPONSE | jq -r '._pageInfo.total')
check_empty $NUM_APPLICATIONS "found no applications to use"
APPLICATION_ID=$(echo $APPLICATIONS_RESPONSE | jq -r '.responseList[0].applicationName')
echo "using application '$APPLICATION_ID'"
}
# Get all environments and select the first one. Place the environmentId in $ENVIRONMENT_ID.
get_environment_id() {
echo "* getting all environments and selecting first one"
ENVIRONMENTS_RESPONSE=$(curl -s $SSL_CERT -X GET -H ''"$AUTH_HEADER"'' -H 'Content-Type: application/json' $MASKING_ENGINE/environments)
check_error "$ENVIRONMENTS_RESPONSE"
NUM_ENVIRONMENTS=$(echo $ENVIRONMENTS_RESPONSE | jq -r '._pageInfo.total')
check_empty $NUM_ENVIRONMENTS "found no environments to use"
ENVIRONMENT_ID=$(echo $ENVIRONMENTS_RESPONSE | jq -r '.responseList[0].environmentId')
echo "using environment '$ENVIRONMENT_ID'"
}
# Get all database connectors and select the first one. Place the databaseConnectorId in $CONNECTOR_ID.
get_connector_id() {
echo "* getting all database connectors and selecting first one"
CONNECTORS_RESPONSE=$(curl -s $SSL_CERT -X GET -H ''"$AUTH_HEADER"'' -H 'Content-Type: application/json' $MASKING_ENGINE/database-connectors)
check_error "$CONNECTORS_RESPONSE"
NUM_CONNECTORS=$(echo $CONNECTORS_RESPONSE | jq -r '._pageInfo.total')
check_empty $NUM_CONNECTORS "found no db connectors to use"
CONNECTOR_ID=$(echo $CONNECTORS_RESPONSE | jq -r '.responseList[0].databaseConnectorId')
echo "using database connector '$CONNECTOR_ID'"
}
# Get all database rulesets and select the first one. Place the databaseRulesetId in $RULESET_ID.
get_ruleset_id() {
echo "* getting all database rulesets and selecting first one"
RULESETS_RESPONSE=$(curl -s $SSL_CERT -X GET -H ''"$AUTH_HEADER"'' -H 'Content-Type: application/json' $MASKING_ENGINE/database-rulesets)
check_error "$RULESETS_RESPONSE"
NUM_RULESETS=$(echo $RULESETS_RESPONSE | jq -r '._pageInfo.total')
check_empty $NUM_RULESETS "found no db rulesets to use"
RULESET_ID=$(echo $RULESETS_RESPONSE | jq -r '.responseList[0].databaseRulesetId')
echo "using database ruleset '$RULESET_ID'"
}
# Get all database tables for a database connector specified by $CONNECTOR_ID. Select the first one and place in $TABLE_NAME.
get_table() {
echo "* getting all tables for connector '$CONNECTOR_ID' and selecting first one"
TABLES_RESPONSE=$(curl -s $SSL_CERT -X GET -H ''"$AUTH_HEADER"'' -H 'Content-Type: application/json' $MASKING_ENGINE/database-connectors/$CONNECTOR_ID/fetch)
check_error "$TABLES_RESPONSE"
NUM_TABLES=$(echo $TABLES_RESPONSE | jq -r '. | length')
check_empty $NUM_TABLES "found no tables to use"
TABLE_NAME=$(echo $TABLES_RESPONSE | jq -r '.[0]')
echo "using table '$TABLE_NAME'"
}
# Get all column metadata for table metadata specified by $TABLE_METADATA_ID. Select the first one and place in $COLUMN_METADATA_ID.
get_column_metadata_id() {
echo "* getting all column metadata belonging to table metadata '$TABLE_METADATA_ID' and selecting the first one"
COLUMNS_RESPONSE=$(curl -s $SSL_CERT -X GET -H ''"$AUTH_HEADER"'' -H 'Content-Type: application/json' $MASKING_ENGINE/column-metadata?table_metadata_id=$TABLE_METADATA_ID)
check_error "$COLUMNS_RESPONSE"
NUM_COLUMNS=$(echo $COLUMNS_RESPONSE | jq -r '. | length')
check_empty $NUM_COLUMNS "found no columns to use"
COLUMN_METADATA=$(echo $COLUMNS_RESPONSE | jq -r '.responseList[0]')
COLUMN_METADATA_ID=$(echo $COLUMN_METADATA | jq -r '.columnMetadataId')
echo "using column '$COLUMN_METADATA_ID'"
}
# Get all masking jobs and select the first one. Place the jobId in $MASKING_JOB_ID.
get_masking_job_id() {
echo "* getting all masking jobs and selecting first one"
MASKINGJOB_RESPONSE=$(curl -s $SSL_CERT -X GET -H ''"$AUTH_HEADER"'' -H 'Content-Type: application/json' $MASKING_ENGINE/masking-jobs)
check_error "$MASKINGJOB_RESPONSE"
NUM_MASKINGJOB=$(echo $MASKINGJOB_RESPONSE | jq -r '._pageInfo.total')
check_empty $NUM_MASKINGJOB "found no masking jobs to use"
MASKING_JOB_ID=$(echo $MASKINGJOB_RESPONSE | jq -r '.responseList[0].maskingJobId')
echo "using masking job '$MASKINGJOB_ID'"
}
# Check if $1 is equal to 0. If so print out message specified in $2 and exit.
check_empty() {
if [ $1 -eq 0 ]; then
echo $2
exit 1
fi
}
# Check if $1 is an object and if it has an 'errorMessage' specified. If so, print the object and exit.
check_error() {
# jq returns a literal null so we have to check against that...
if [ "$(echo "$1" | jq -r 'if type=="object" then .errorMessage else "null" end')" != 'null' ]; then
echo $1
exit 1
fi
}