124 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			124 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/bin/bash
 | |
| #
 | |
| # cyglsa-config, Copyright 2006, 2010 Red Hat Inc.
 | |
| #
 | |
| #     This program is free software; you can redistribute it and/or modify
 | |
| #     it under the terms of the GNU General Public License as published by
 | |
| #     the Free Software Foundation; either version 2 of the License, or
 | |
| #     (at your option) any later version.
 | |
| #
 | |
| #     A copy of the GNU General Public License can be found at
 | |
| #     http://www.gnu.org/
 | |
| #
 | |
| # This file is part of the Cygwin LSA authentication package.
 | |
| 
 | |
| request()
 | |
| {
 | |
|   if [ "${auto_answer}" = "yes" ]
 | |
|   then
 | |
|     echo "$1 (yes/no) yes"
 | |
|     return 0
 | |
|   elif [ "${auto_answer}" = "no" ]
 | |
|   then
 | |
|     echo "$1 (yes/no) no"
 | |
|     return 1
 | |
|   fi
 | |
| 
 | |
|   answer=""
 | |
|   while [ "X${answer}" != "Xyes" -a "X${answer}" != "Xno" ]
 | |
|   do
 | |
|     echo -n "$1 (yes/no) "
 | |
|     read -e answer
 | |
|   done
 | |
|   if [ "X${answer}" = "Xyes" ]
 | |
|   then
 | |
|     return 0
 | |
|   else
 | |
|     return 1
 | |
|   fi
 | |
| }
 | |
| 
 | |
| # Check if running under at least Windows 2000
 | |
| _nt_too_old=`uname | awk -F- '{print ( $2 < 5.0 ) ? 1 : 0;}'`
 | |
| if [ ${_nt_too_old} -eq 1 ]
 | |
| then
 | |
|   echo "Cygwin LSA authentication not supported on Windows NT4 or older.  Exiting."
 | |
|   exit 1
 | |
| fi
 | |
| 
 | |
| # Directory in which cyglsa DLL is installed as DOS path.
 | |
| bindir=`cygpath -w /`\\bin
 | |
| 
 | |
| # Check if we're running on 64 bit Windows.  If so, we need the 64 bit
 | |
| # cyglsa DLL.
 | |
| dll=cyglsa.dll
 | |
| test -d `cygpath -p ${SYSTEMROOT}`/SysWOW64 && dll=cyglsa64.dll
 | |
| 
 | |
| # Check if the DLL is actually installed.  If not, bail out.
 | |
| if [ ! -f /bin/${dll} ]
 | |
| then
 | |
|   echo "Required Cygwin authentication DLL /bin/${dll} doesn't exist.  Exiting."
 | |
|   exit 1
 | |
| fi
 | |
| 
 | |
| echo
 | |
| echo "Warning: Registering the Cygwin LSA authentication package requires"
 | |
| echo "administrator privileges!  You also have to reboot the machine to"
 | |
| echo "activate the change."
 | |
| echo
 | |
| request "Are you sure you want to continue?" || exit 0
 | |
| 
 | |
| # The registry value which keeps the authentication packages.
 | |
| value='/HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/Lsa/Authentication Packages'
 | |
| 
 | |
| [ -f /bin/cyglsa -a ! -d /bin/cyglsa ] && rm -rf /bin/cyglsa
 | |
| if [ ! -d /bin/cyglsa ]
 | |
| then
 | |
|   if ! mkdir -m 755 /bin/cyglsa
 | |
|   then
 | |
|     echo "Creating the /bin/cyglsa directory failed.  Exiting."
 | |
|     exit 1
 | |
|   fi
 | |
| fi
 | |
| if ! cp -b "/bin/${dll}" "/bin/cyglsa/${dll}"
 | |
| then
 | |
|     echo "Copying the new LSA authentication package /bin/${dll} to"
 | |
|     echo "/bin/cyglsa/${dll} failed.  Exiting."
 | |
|     exit 1
 | |
| fi
 | |
| 
 | |
| # Get old content, remove every trace of "cyglsa" from it and write the
 | |
| # content back to the registry with the new, correct path to the cyglsa DLL.
 | |
| old=`regtool get "${value}"`
 | |
| new=`for i in ${old}
 | |
| do
 | |
|   echo $i | GREP_OPTIONS="" grep -v cyglsa
 | |
| done`
 | |
| if ! regtool set "${value}" ${new} "${bindir}\\cyglsa\\${dll}"
 | |
| then
 | |
|   echo "Setting the new registry value failed.  Exiting."
 | |
|   exit 1
 | |
| fi
 | |
| 
 | |
| echo
 | |
| echo "Cygwin LSA authentication package registered."
 | |
| echo
 | |
| echo "Activating Cygwin's LSA authentication package requires to reboot."
 | |
| if [ -x /bin/shutdown ]
 | |
| then
 | |
|   if request "Do you want to do this immediately?"
 | |
|   then
 | |
|     echo
 | |
|     echo "Other users might still be working on this machine."
 | |
|     echo
 | |
|     if request "Are you sure?"
 | |
|     then
 | |
|       echo
 | |
|       echo "Ok, will reboot in 30 seconds."
 | |
|       echo
 | |
|       echo "If you change your mind, call 'shutdown -a' within 30 seconds"
 | |
|       shutdown -r 30
 | |
|     fi
 | |
|   fi
 | |
| fi
 |