Skip to content

Commit dbe97b5

Browse files
authored
password start with numeric letter bug fix (#486)
1 parent 3166fb7 commit dbe97b5

File tree

1 file changed

+79
-50
lines changed

1 file changed

+79
-50
lines changed

workshops/oracleAQ/setup.sh

Lines changed: 79 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -1,92 +1,116 @@
11
#!/bin/bash
22
# Copyright (c) 2021 Oracle and/or its affiliates.
33
# Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl.
4-
5-
COMPARTMENT="oracleAQ";
6-
DB_NAME="aqdatabase";
7-
export PLSQL_DB_USER1="admin";
8-
export JAVA_DB_USER="javaUser";
4+
5+
COMPARTMENT="oracleAQ"
6+
DB_NAME="aqdatabase"
7+
export PLSQL_DB_USER1="admin"
8+
export JAVA_DB_USER="javaUser"
99

1010
#set all language paths
11-
export ORACLEAQ_HOME=${HOME}/${COMPARTMENT};
11+
export ORACLEAQ_HOME=${HOME}/${COMPARTMENT}
1212

13-
export ORACLEAQ_PLSQL_AQ=${ORACLEAQ_HOME}/aqPlsql/aq;
14-
export ORACLEAQ_PLSQL_TEQ=${ORACLEAQ_HOME}/aqPlsql/teq;
15-
export ORACLEAQ_PYTHON_AQ=${ORACLEAQ_HOME}/aqPython/aq;
16-
export ORACLEAQ_PYTHON_TEQ=${ORACLEAQ_HOME}/aqPython/teq;
17-
export ORACLEAQ_JAVA=${ORACLEAQ_HOME}/aqJava;
13+
export ORACLEAQ_PLSQL_AQ=${ORACLEAQ_HOME}/aqPlsql/aq
14+
export ORACLEAQ_PLSQL_TEQ=${ORACLEAQ_HOME}/aqPlsql/teq
15+
export ORACLEAQ_PYTHON_AQ=${ORACLEAQ_HOME}/aqPython/aq
16+
export ORACLEAQ_PYTHON_TEQ=${ORACLEAQ_HOME}/aqPython/teq
17+
export ORACLEAQ_JAVA=${ORACLEAQ_HOME}/aqJava
1818

1919
export TNS_ADMIN=$ORACLEAQ_HOME/wallet
2020
export USER_DEFINED_WALLET=${TNS_ADMIN}/user_defined_wallet
2121
export TNS_ADMIN_FOR_JAVA=$ORACLEAQ_HOME/wallet_java
2222
export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::")
2323
TNS_WALLET_STR="(MY_WALLET_DIRECTORY="$TNS_ADMIN")"
2424

25-
# fetch user's OCID
25+
#Create compartment
2626
ROOT_COMPARTMENT_OCID=$(oci iam compartment list --all --compartment-id-in-subtree true --access-level ACCESSIBLE --include-root --raw-output --query "data[?contains(\"id\",'tenancy')].id | [0]")
2727

28-
#Create compartment
29-
oci iam compartment create --name ${COMPARTMENT} -c ${ROOT_COMPARTMENT_OCID} --description "Oracle Advanced Queue workflow" --wait-for-state ACTIVE
28+
if [[ -z $(oci iam compartment list --all | jq -r ".data[] | select(.name == \"${COMPARTMENT}\") | .id") ]]; then
29+
oci iam compartment create --name ${COMPARTMENT} -c ${ROOT_COMPARTMENT_OCID} --description "Oracle Advanced Queue workflow" --wait-for-state ACTIVE
30+
echo "COMPARTMENT '${COMPARTMENT}' CREATED."
31+
else
32+
echo "Compartment '${COMPARTMENT}' already exists."
33+
fi
34+
3035
export COMPARTMENT_OCID=$(oci iam compartment list --all | jq -r ".data[] | select(.name == \"${COMPARTMENT}\") | .id")
31-
32-
create_db() {
36+
37+
create_db() {
3338
#Get the database password
34-
echo "ENTER THE DATABASE PASSWORD:" ;
39+
3540
echo "NOTE: Password must contain:"
3641
echo "* 12 to 30 characters"
3742
echo "* at least one uppercase letter"
3843
echo "* at least one lowercase letter"
3944
echo "* at least one number"
40-
echo "* The password cannot contain the double quote character or the username 'admin' ";
45+
echo "* The password cannot start with a numeric letter"
46+
echo "* The password cannot contain the double quote character or the username 'admin' "
4147
while true; do
42-
read -s -r -p "Please enter the password to be used for the database users: " db_pwd
43-
if [[ ${#db_pwd} -ge 12 && ${#db_pwd} -le 30 && "$db_pwd" =~ [A-Z] && "$db_pwd" =~ [a-z] && "$db_pwd" =~ [0-9] && "$db_pwd" != *admin* && "$db_pwd" != *'"'* ]]; then
48+
read -s -r -p "ENTER THE DATABASE PASSWORD: " db_pwd
49+
if [[ ${#db_pwd} -ge 12 && ${#db_pwd} -le 30 &&
50+
"$db_pwd" =~ [A-Z] && "$db_pwd" =~ [a-z] && "$db_pwd" =~ [0-9] &&
51+
"$db_pwd" =~ ^[^0-9] && "$db_pwd" != *admin* && "$db_pwd" != *'"'* ]]; then
4452
echo
4553
break
4654
else
4755
echo "Invalid Password, please retry"
4856
fi
4957
done
50-
umask 177
58+
umask 177
5159
DB_PASSWORD="$db_pwd"
5260
WALLET_PASSWORD="$db_pwd"
5361
umask 22
5462

5563
# Create ATP- #21c always free
5664
umask 177
57-
echo '{"adminPassword": "'"$DB_PASSWORD"'"}' > temp_params
65+
echo '{"adminPassword": "'"$DB_PASSWORD"'"}' >temp_params
5866
umask 22
5967
oci db autonomous-database create -c ${COMPARTMENT_OCID} --db-name ${DB_NAME} --display-name ${DB_NAME} --db-workload OLTP --is-free-tier true --cpu-core-count 1 --data-storage-size-in-tbs 1 --db-version "21c" --wait-for-state AVAILABLE --wait-interval-seconds 5 --from-json "file://temp_params"
60-
rm temp_params;
68+
rm temp_params
6169
}
6270

6371
export DB_ID=$(oci db autonomous-database list -c ${COMPARTMENT_OCID} --query "data[?\"db-name\"=='aqdatabase'].id | [0]" --raw-output)
6472
if [[ -z "${DB_ID}" ]]; then
65-
create_db;
73+
create_db
6674
else
67-
echo "ATP '${DB_NAME}' already exists."
68-
while true; do
69-
read -p "Database '${DB_NAME}' already exists. Do you remember the password?" yn
75+
echo "ATP '${DB_NAME}' already exists."
76+
while true; do
77+
read -p "Database '${DB_NAME}' already exists. Do you want to delete the existing ATP database [y/n]?" yn
7078
case $yn in
71-
[Yy]* ) read -s -r -p "Enter the password used to create ATP: " db_pwd
72-
break;;
73-
[Nn]* ) echo "Creating new database."; create_db; break;;
74-
* ) echo "Please answer y or n.";;
79+
[Yy]*)
80+
echo "Deleting existing database. Please wait..."
81+
oci db autonomous-database delete --autonomous-database-id ${DB_ID} --force --wait-for-state SUCCEEDED
82+
echo "Creating new database."
83+
create_db
84+
break
85+
;;
86+
[Nn]*)
87+
read -s -r -p " " db_pwd
88+
while true; do
89+
read -s -r -p "Enter the password used to create existing ATP: " db_pwd
90+
if [[ ${#db_pwd} -ge 12 && ${#db_pwd} -le 30 &&
91+
"$db_pwd" =~ [A-Z] && "$db_pwd" =~ [a-z] && "$db_pwd" =~ [0-9] &&
92+
"$db_pwd" =~ ^[^0-9] && "$db_pwd" != *admin* && "$db_pwd" != *'"'* ]]; then
93+
echo
94+
break
95+
else
96+
echo "Invalid Password, please retry"
97+
fi
98+
done
99+
;;
75100
esac
76101
done
77102
fi
78103

79104
# Get connection string
80105
DB_OCID=$(oci db autonomous-database list -c ${COMPARTMENT_OCID} --query "data [?\"db-name\"=='${DB_NAME}'] | [0].id" --raw-output)
81-
export DB_ALIAS=`oci db autonomous-database get --autonomous-database-id "$DB_OCID" --query 'data."connection-strings".profiles[?"consumer-group"=='"'TP'"']."display-name" | [0]' --raw-output`
82-
106+
export DB_ALIAS=$(oci db autonomous-database get --autonomous-database-id "$DB_OCID" --query 'data."connection-strings".profiles[?"consumer-group"=='"'TP'"']."display-name" | [0]' --raw-output)
83107

84108
# Generating wallet
85109
mkdir -p $TNS_ADMIN
86110
mkdir -p $TNS_ADMIN_FOR_JAVA
87111
cd $TNS_ADMIN
88112
umask 177
89-
echo '{"password": "'"$DB_PASSWORD"'"}' > temp_params
113+
echo '{"password": "'"$DB_PASSWORD"'"}' >temp_params
90114
umask 22
91115
oci db autonomous-database generate-wallet --autonomous-database-id "$DB_OCID" --file 'wallet.zip' --from-json "file://temp_params"
92116
rm temp_params
@@ -102,7 +126,7 @@ WALLET_LOCATION = (SOURCE = (METHOD = file) (METHOD_DATA = (DIRECTORY="$TNS_ADMI
102126
SQLNET.WALLET_OVERRIDE = TRUE
103127
SSL_SERVER_DN_MATCH = yes
104128
!
105-
129+
106130
#Configure sqlnet.ora for ADMIN
107131
cd $TNS_ADMIN
108132
cat >sqlnet.ora <<!
@@ -112,7 +136,7 @@ SSL_SERVER_DN_MATCH = yes
112136
!
113137

114138
rm -rf $USER_DEFINED_WALLET
115-
mkdir -p $USER_DEFINED_WALLET
139+
mkdir -p $USER_DEFINED_WALLET
116140

117141
# Add the admin credential to the wallet
118142
# set classpath for mkstore - align this to your local SQLcl installation
@@ -138,7 +162,7 @@ tns_alias=$(grep "$DB_ALIAS " $TNS_ADMIN/tnsnames.ora)
138162
tns_alias=${tns_alias/security=/security= $TNS_WALLET_STR}
139163
tns_alias1=${tns_alias/$DB_ALIAS /${DB_ALIAS}_${PLSQL_DB_USER1} }
140164

141-
echo $tns_alias1 >> $TNS_ADMIN/tnsnames.ora
165+
echo $tns_alias1 >>$TNS_ADMIN/tnsnames.ora
142166

143167
# Print names of the newly created TNS Aliases
144168
echo "Added TNS Alias: ${DB_ALIAS}_${PLSQL_DB_USER1}"
@@ -147,6 +171,7 @@ sqlplus /@${DB_ALIAS}_${PLSQL_DB_USER1} <<!
147171
SET VERIFY OFF;
148172
149173
CREATE USER ${JAVA_DB_USER} IDENTIFIED BY $DB_PASSWORD ;
174+
SET echo off;
150175
GRANT execute on DBMS_AQ TO ${JAVA_DB_USER};
151176
GRANT CREATE SESSION TO ${JAVA_DB_USER};
152177
GRANT RESOURCE TO ${JAVA_DB_USER};
@@ -166,6 +191,11 @@ GRANT EXECUTE ON sys.dbms_aq TO ${JAVA_DB_USER};
166191
EXIT;
167192
!
168193

194+
cd $ORACLEAQ_HOME
195+
export TNS_ADMIN=${TNS_ADMIN_FOR_JAVA}
196+
sqlplus /@"${DB_ALIAS}" <<!
197+
Show user;
198+
!
169199
#Java Setup
170200

171201
# Add JavaUser Credentials to the ATP Wallet
@@ -181,29 +211,28 @@ export JDBC_URL=jdbc:oracle:thin:@${DB_ALIAS}?TNS_ADMIN=${TNS_ADMIN_FOR_JAVA}
181211

182212
#Build java code
183213
cd ../
184-
cd aqJava;
185-
mvn clean install -Dmaven.wagon.http.ssl.insecure=true -Dmaven.test.skip=true;
186-
cd target;
187-
nohup java -jar aqJava-0.0.1-SNAPSHOT.jar &
188-
189-
cd $ORACLEAQ_HOME;
190-
export TNS_ADMIN=${TNS_ADMIN_FOR_JAVA}
191-
sqlplus /@"${DB_ALIAS}" <<!
192-
Show user;
193-
!
214+
cd aqJava
215+
{
216+
mvn clean install -Dmaven.wagon.http.ssl.insecure=true -Dmaven.test.skip=true
217+
cd target
218+
nohup java -jar aqJava-0.0.1-SNAPSHOT.jar &
219+
} &>/dev/null
220+
echo "Java setup completed."
194221

195222
#Node.js setup
223+
cd $ORACLEAQ_HOME
196224
npm install oracledb debug
225+
echo "node.js setup completed."
197226

198-
echo "ORACLEAQ_HOME : "$ORACLEAQ_HOME;
227+
echo "ORACLEAQ_HOME : "$ORACLEAQ_HOME
199228
echo "COMPARTMENT NAME : "${COMPARTMENT}
200229
echo "COMPARTMENT OCID : "${COMPARTMENT_OCID}
201230
echo "DATABASE NAME : "${DB_NAME}
202231
echo "ATP OCID : "${DB_OCID}
203232
echo "TNS ALIAS- USER1 : ${DB_ALIAS}_${PLSQL_DB_USER1}"
204233
echo "TNS ALIAS- USER2 : "${DB_ALIAS}
205234
echo "JDBC URL : "${JDBC_URL}
206-
echo
235+
echo
207236
echo "-------------------------------"
208237
echo " SETUP COMPLETED "
209-
echo "-------------------------------"
238+
echo "-------------------------------"

0 commit comments

Comments
 (0)