integ/ldap/ldapscripts/files/ldap-user-setup-support-input-validation.patch
Scott Little 69be80651e Relocate ldapscripts to stx-integ/ldap/ldapscripts
Move content from stx-gplv2 into stx-integ

Packages will be relocated to

stx-integ:
    base/
        bash
        cgcs-users
        cluster-resource-agents
        dpkg
        haproxy
        libfdt
        netpbm
        rpm

    database/
        mariadb

    filesystem/
        iscsi-initiator-utils

    filesystem/drbd/
        drbd-tools

    kernel/kernel-modules/
        drbd
        integrity
        intel-e1000e
        intel-i40e
        intel-i40evf
        intel-ixgbe
        intel-ixgbevf
        qat17
        tpmdd

    ldap/
        ldapscripts

    networking/
        iptables
        net-tools

Change-Id: I688cd576de5e8fb9fbe7ad727b9e5321ad4b0e45
Story: 2002801
Task: 22687
Signed-off-by: Scott Little <scott.little@windriver.com>
2018-08-01 15:31:54 -04:00

88 lines
2.5 KiB
Diff

---
sbin/ldapusersetup | 45 ++++++++++++++++++++++++++++++++++-----------
1 file changed, 34 insertions(+), 11 deletions(-)
--- a/sbin/ldapusersetup
+++ b/sbin/ldapusersetup
@@ -44,6 +44,29 @@ _SHELL=""
### Helper functions ###
+# Gets input from user and validates it.
+# Will only return if input meets validation
+# criteria otherwise will just sit there.
+#
+# Input : input string ($1), valid output options ($2)
+# Output: the validated input
+# Note : the validation list must be an array
+LdapUserInput () {
+declare -a optionAry=("${!2}")
+while true; do
+ read -p "$1" _output
+ # convert to lower case
+ _output2=${_output,,}
+ # check if output is a valid option
+ if [[ "${optionAry[@]}" =~ "$_output2" ]]; then
+ break
+ else
+ echo "Invalid input \"$_output\". Allowed options: ${optionAry[@]}" >&2
+ fi
+done
+ echo "$_output2"
+}
+
# Delete an ldap user if it exists
# and exit with error
# Input : username ($1), exit msg ($2)
@@ -67,10 +90,12 @@ LdapAddUser() {
LdapAddLoginShell () {
if [ -z "$2" ]; then
# Ask the user for the login shell
- echo "Select Login Shell option # [2]:
+ shellInput="Select Login Shell option # [2]:
1) Bash
-2) Lshell"
- read opn
+2) Lshell
+"
+ options=( 1, 2 )
+ opn=`LdapUserInput "$shellInput" options[@]`
case $opn in
1) _SHELL="/bin/sh";;
2) _SHELL="$_DEFAULTLSHELL";;
@@ -139,7 +164,6 @@ LdapUpdateShadowWarning () {
echo "Updating password expiry to $_newWarning days"
}
-
# Since this setup script is meant to be a
# wrapper on top of existing ldap scripts,
# it share invoke those... we could have achieved
@@ -170,10 +194,9 @@ if [ "$#" -eq 0 ]; then
# prompt for sudo permissions
if [ "$_SHELL" != "$_DEFAULTLSHELL" ]; then
# Should sudo be activated for this user
- echo -n "Add $_username to sudoer list? (yes/NO): "
- read CONFIRM
- CONFIRM=${CONFIRM,,}
-
+ shellInput="Add $_username to sudoer list? (yes/NO): "
+ options=( "yes", "no" )
+ CONFIRM=`LdapUserInput "$shellInput" options[@]`
if is_yes $CONFIRM
then
LdapAddSudo "$_username"
@@ -181,9 +204,9 @@ if [ "$#" -eq 0 ]; then
fi
# Add to secondary user group
- echo -n "Add $_username to secondary user group? (yes/NO): "
- read CONFIRM
- CONFIRM=${CONFIRM,,}
+ shellInput="Add $_username to secondary user group? (yes/NO): "
+ options=( "yes", "no" )
+ CONFIRM=`LdapUserInput "$shellInput" options[@]`
if is_yes $CONFIRM
then
echo -n "Secondary group to add user to? [$_DEFAULTGRP2]: "