%PDF- %PDF-
| Direktori : /opt/webdir/bin/menu/06_site/ |
| Current File : //opt/webdir/bin/menu/06_site/07_ntlm.sh |
#!/bin/bash
# ntlm status
# menu uses next functions:
# server_ntlm_status - information about host NTLM_STATUS
# ex.
# NTLMStatus:not_configured::::::
#
# print_site_list_point_ntlm - information about sites point of view NTLM settings
# NONTLM_SITES - sites with is not configured for use LDAP/NTLM
#set -x
PROGNAME=$(basename $0)
PROGPATH=$(dirname $0)
[[ -z $DEBUG ]] && DEBUG=0
. $PROGPATH/functions.sh || exit 1
logo=$(get_logo)
# ask user for host domain options
# NTLM_DOMAIN
# NTLM_FQDN
# NTLM_DC
# NTLM_ADMIN
# NTLM_PWD
get_ntlm_options(){
NTLM_HOST_SETTINGS=N
NETBIOS_NAME_LIMIT=15 # bytes
NETBIOS_NAME_DEFAULT=$(hostname | awk -F'.' '{print $1}') # netbios hostname
IS_FIRST_RUN=1
DEFAULT_NTLM_DOMAIN=
DEFAULT_NTLM_FQDN=
[[ -n $_ntlm_domain ]] && DEFAULT_NTLM_FQDN="$_ntlm_domain"
DEFAULT_NTLM_DC=
[[ -n $_ntlm_ldap ]] && \
DEFAULT_NTLM_DC="$(echo "$_ntlm_ldap" | awk -F':' '{print $1}')"
DEFAULT_NTLM_HOST=
DEFAULT_NTLM_ADMIN=Administrator
EX_NTLM_DOMAIN=TEST
EX_NTLM_FQDN=TEST.LOCAL
EX_NTLM_DC=TEST-DC-SP.TEST.LOCAL
# https://technet.microsoft.com/en-us/library/cc731383.aspx
until [[ "$NTLM_HOST_SETTINGS" == "Y" ]]; do
NTLM_DOMAIN= # netbios domain name
NTLM_FQDN= # full domain name
NTLM_DC= # domain controller
NTLM_HOST= # netbios name for host
NTLM_ADMIN=
NTLM_PWD=
if [[ -z $DEFAULT_NTLM_DOMAIN ]]; then
print_message "$( get_text "$SM0072" "ex. $EX_NTLM_DOMAIN" )" \
"" "" NTLM_DOMAIN
else
print_message "$( get_text "$SM0072" "default $DEFAULT_NTLM_DOMAIN" )" \
"" "" NTLM_DOMAIN "$DEFAULT_NTLM_DOMAIN"
fi
if [[ -z "$NTLM_DOMAIN" ]]; then
print_color_text "$SM0073" red
continue
else
DEFAULT_NTLM_DOMAIN="$NTLM_DOMAIN"
fi
if [[ -z $DEFAULT_NTLM_HOST ]]; then
print_message "$(get_text "$SM0074" "default $NETBIOS_NAME_DEFAULT")" \
"" "" NTLM_HOST "$NETBIOS_NAME_DEFAULT"
else
print_message "$(get_text "$SM0074" "default $NETBIOS_NAME_DEFAULT")" \
"" "" NTLM_HOST "$DEFAULT_NTLM_HOST"
fi
test_hostname "$NTLM_HOST" 15
if [[ $test_hostname -eq 0 ]]; then
continue
else
DEFAULT_NTLM_HOST="$NTLM_HOST"
fi
if [[ -z $DEFAULT_NTLM_FQDN ]]; then
print_message "$(get_text "$SM0075" "ex. $EX_NTLM_FQDN")" \
"" "" NTLM_FQDN
else
print_message "$(get_text "$SM0075" "default $DEFAULT_NTLM_FQDN")" \
"" "" NTLM_FQDN "$DEFAULT_NTLM_FQDN"
fi
if [[ -z "$NTLM_FQDN" ]]; then
print_color_text "$SM0076" red
continue
else
DEFAULT_NTLM_FQDN="$NTLM_FQDN"
fi
if [[ -z $DEFAULT_NTLM_DC ]]; then
print_message "$(get_text "$SM0077" "ex. $EX_NTLM_DC")" \
"" "" NTLM_DC
else
print_message "$(get_text "$SM0077" "default $DEFAULT_NTLM_DC")" \
"" "" NTLM_DC
fi
if [[ -z "$NTLM_DC" ]]; then
print_color_text "$SM0078" red
continue
else
DEFAULT_NTLM_DC="$NTLM_DC"
fi
if [[ -z "$DEFAULT_NTLM_ADMIN" ]]; then
print_message "$(get_text "$SM0079" "default Administrator")" "" "" \
NTLM_ADMIN Administrator
else
print_message "$(get_text "$SM0079" "default $DEFAULT_NTLM_ADMIN")" "" "" \
NTLM_ADMIN "$DEFAULT_NTLM_ADMIN"
fi
if [[ -z "$NTLM_ADMIN" ]]; then
print_color_text "$SM0080" red
continue
else
DEFAULT_NTLM_ADMIN=$NTLM_ADMIN
fi
print_message "$SM0081" "" "-s" NTLM_PWD
if [[ -n $NTLM_PWD ]]; then
NTLM_PWD_FILE=$(mktemp $CACHE_DIR/.ntlmXXXXXXXX)
echo "$NTLM_PWD" > $NTLM_PWD_FILE
else
print_color_text "$SM9990" red
continue
fi
NTLM_HOST_SETTINGS=Y
done
print_color_text "$SM0082" green
echo "$MENU_SPACER"
printf "%-20s: %s\n" "$SM0083" "$NTLM_DOMAIN"
printf "%-20s: %s\n" "$SM0084" "$NTLM_HOST"
printf "%-20s: %s\n" "$SM0085" "$NTLM_FQDN"
printf "%-20s: %s\n" "$SM0086" "$NTLM_DC"
printf "%-20s: %s\n" "$SM0087" "$NTLM_ADMIN"
if [[ $DEBUG -gt 0 ]]; then
printf "%-20s: %s\n" "$SM0088" "$NTLM_PWD"
printf "%-20s: %s\n" "$SM0089" "$NTLM_PWD_FILE"
fi
echo "$MENU_SPACER"
}
# ask for NTLM_SITE, check it:
# -- not empty
# -- NTLM configration options in database
# -- LDAP Module
ntlm_site_name(){
start_ntlm_config=0
# ask about sites
print_message "$SM0090" "$SM0091" "" NTLM_SITE default
if [[ -z $NTLM_SITE ]]; then
print_message "$CS0101" "$SM0092" "" any_key
exit
fi
if [[ $DEBUG -gt 0 ]]; then
echo $MENU_SPACER
echo "$SM0093$NONTLM_SITES"
echo $MENU_SPACER
echo "$SM0094$NTLM_SITES"
echo $MENU_SPACER
fi
if_ntlm_empty_setting=$(echo "$NONTLM_SITES" | grep -c "^$NTLM_SITE:")
if_ntlm_exist_setting=$(echo "$NTLM_SITES" | grep -c "^$NTLM_SITE:")
if [[ $DEBUG -gt 0 ]]; then
echo "noldap=$if_ntlm_empty_setting ldap=$if_ntlm_exist_setting"
fi
# site exist in the list; NTLM is enabled on the site
if [[ ( $if_ntlm_empty_setting -eq 0 ) && ( $if_ntlm_exist_setting -eq 1 ) ]]; then
print_message "$SM0096" \
"$(get_text "$SM0095" "$NTLM_SITE")" "" any_key n
[[ $(echo "$any_key" | grep -wic "Y") -gt 0 ]] && start_ntlm_config=1
# get additional site info
site_dir=$(echo "$NTLM_SITES" | grep "^$NTLM_SITE:" | awk -F':' '{print $3}')
site_db=$(echo "$NTLM_SITES" | grep "^$NTLM_SITE:" | awk -F':' '{print $2}')
site_ntlm_rewrite=$(echo "$NTLM_SITES" | grep "^$NTLM_SITE:" | awk -F':' '{print $4}')
site_ntlm_use=$(echo "$NTLM_SITES" | grep "^$NTLM_SITE:" | awk -F':' '{print $5}')
site_ldap_mod=$(echo "$NTLM_SITES" | grep "^$NTLM_SITE:" | awk -F':' '{print $6}')
# site exist in the list; NTLM is not enabled on the site
elif [[ ( $if_ntlm_empty_setting -eq 1 ) && ( $if_ntlm_exist_setting -eq 0 ) ]]; then
start_ntlm_config=1
site_dir=$(echo "$NONTLM_SITES" | grep "^$NTLM_SITE:" | awk -F':' '{print $3}')
site_db=$(echo "$NONTLM_SITES" | grep "^$NTLM_SITE:" | awk -F':' '{print $2}')
site_ntlm_rewrite=$(echo "$NONTLM_SITES" | grep "^$NTLM_SITE:" | awk -F':' '{print $4}')
site_ntlm_use=$(echo "$NONTLM_SITES" | grep "^$NTLM_SITE:" | awk -F':' '{print $5}')
site_ldap_mod=$(echo "$NONTLM_SITES" | grep "^$NTLM_SITE:" | awk -F':' '{print $6}')
# site not found
else
print_message "$CS0101" \
"$(get_text "$SM0034" "$NTLM_SITE")" \
"" any_key
exit 1
fi
if [[ $DEBUG -gt 0 ]]; then
echo "Site=$NTLM_SITE dir=$site_dir db=$site_db"
echo "LDAPMod=$site_ldap_mod NTLMUse=$site_ntlm_use NTLMRewrite=$site_ntlm_rewrite"
echo "Flag start_ntlm_config=$start_ntlm_config"
fi
# test if NTLM module is enabled for site
if [[ "$site_ldap_mod" != "Y" ]]; then
print_message "$CS0101" \
"$(get_text "$SM0097" "$NTLM_SITE")" \
"" any_key
exit
fi
}
# start process for create/replace NTLM settings
ntlm_create() {
# test current AD status for host
[[ -z "$NTLM_STATUS" ]] && server_ntlm_status "skip"
ntlm_create=Y
if [[ "$NTLM_STATUS" == "configured" ]]; then
ntlm_create=N
print_message "$SM0098" "$SM0099" "" ntlm_create N
fi
if [[ $(echo "$ntlm_create" | grep -iwc 'Y') -gt 0 ]]; then
# get host settings
get_ntlm_options
ntlm_task="$bx_sites_script -a ntlm"
ntlm_task=$ntlm_task" --ntlm_domain=$NTLM_DOMAIN --ntlm_fqdn=$NTLM_FQDN"
ntlm_task=$ntlm_task" --ntlm_ads=$NTLM_DC"
ntlm_task=$ntlm_task" --ntlm_login=$NTLM_ADMIN"
ntlm_task=$ntlm_task" --password_file=$NTLM_PWD_FILE"
ntlm_task=$ntlm_task" --ntlm_host=$NTLM_HOST"
# get site name
ntlm_site_name
# start configuration process
if [[ $start_ntlm_config -eq 1 ]]; then
ntlm_task=$ntlm_task" --database=$site_db --root=$site_dir"
print_message "$SM0100" "" "" _domain_confirm 'n'
if [[ $(echo "$_domain_confirm" | grep -iwc 'y') -gt 0 ]]; then
[[ $DEBUG -gt 0 ]] && echo "$ntlm_task"
exec_pool_task "$ntlm_task" "$SM0101"
fi
fi
fi
NTLM_MENU_SELECT=
}
# Add apache NTLM configuration to the site; NTLM already configured on the server
ntml_site_config() {
ntlm_task="$bx_sites_script -a ntlm_update"
# get site name
ntlm_site_name
if [[ $start_ntlm_config -eq 1 ]]; then
ntlm_task=$ntlm_task" --database=$site_db --root=$site_dir"
print_message "$SM0100" "" "" _domain_confirm 'n'
if [[ $(echo "$_domain_confirm" | grep -iwc 'y') -gt 0 ]]; then
[[ $DEBUG -gt 0 ]] && echo "$ntlm_task"
exec_pool_task "$ntlm_task" "$SM0101"
fi
else
[[ $DEBUG -gt 0 ]] && print_message "$CS0101" "" "" any_key
fi
NTLM_MENU_SELECT=
}
# print host menu
sub_menu() {
menu_00="$SM0201"
menu_01="$SM0102" # configure new NTLM settings for server and one site
menu_02="$SM0103" # add existen NTLM settings to a site
MENU_SELECT=
until [[ -n "$MENU_SELECT" ]]; do
menu_logo="$SM0104"
print_menu_header
# menu
print_site_list_point_ntlm # NONTLM_SITES = site:site_dir site1:site_dir1
server_ntlm_status # NTLM_STATUS = configured|not_configured
get_task_by_type site POOL_SITE_TASK_LOCK POOL_SITE_TASK_INFO
print_task_by_type site "$POOL_SITE_TASK_LOCK" "$POOL_SITE_TASK_INFO"
if [[ $POOL_MYSQL_TASK_LOCK -eq 1 ]]; then
menu_list="\n$menu_00"
else
if [[ ( "$NTLM_STATUS" == "configured" ) && ( -n $NONTLM_SITES ) ]]; then
menu_list="\n$menu_01\n$menu_02\n$menu_00"
else
menu_list="\n$menu_01\n$menu_00"
fi
fi
print_menu
print_message "$SM0205" '' '' MENU_SELECT
# process selection
case "$MENU_SELECT" in
"1") ntlm_create;; # configure new NTLM settings for server and one site
"2") ntml_site_config;; # add existen NTLM settings to a site
"0") exit ;;
*) error_pick;;
esac
MENU_SELECT=
done
}
sub_menu