[nst-cvs] src/scripts/nstvncadmin nstvncadmin.nstscript, 1.22, 1.23 nstvncadmin.sh, 1.42, 1.43
A network security analysis and monitoring toolkit Linux distribution.
Brought to you by:
pblankenbaker,
rwhalb
From: Ronald W. H. <rw...@us...> - 2009-08-31 19:01:23
|
Update of /cvsroot/nst/src/scripts/nstvncadmin In directory fdv4jf1.ch3.sourceforge.com:/tmp/cvs-serv18526/src/scripts/nstvncadmin Modified Files: nstvncadmin.nstscript nstvncadmin.sh Log Message: - setting random pqassword for user vnc when install the nst-old-scripts pkg... - added ability to reset a VNC user's password with the nstvncadmin script... Index: nstvncadmin.nstscript =================================================================== RCS file: /cvsroot/nst/src/scripts/nstvncadmin/nstvncadmin.nstscript,v retrieving revision 1.22 retrieving revision 1.23 diff -C2 -d -r1.22 -r1.23 *** nstvncadmin.nstscript 6 May 2009 15:51:34 -0000 1.22 --- nstvncadmin.nstscript 31 Aug 2009 19:01:12 -0000 1.23 *************** *** 252,271 **** <summary>Specify an initial password for the VNC session.</summary> ! <description>Before a VNC server can be started, the user must ! exist on the system and a password file for the VNC server must ! exist at <filename>$HOME/.vnc/passwd</filename>. If either of ! these conditions are not met, a VNC server can not normally be ! started. If you specify this option, the <command>&SCRIPT.NAME;</command> script will attempt to add the new user to the system (if necessary), and then create the ! appropriate <filename>$HOME/.vnc/passwd</filename> file. It ! should be noted that this requires that the ! <command>vncpasswd-stdin</command> program is installed on the ! system (which can be found in the NST distribution). It is also ! important to note that if a new user is created on the system, ! both their normal login password and VNC server passwords will ! be identical.</description> </text> <host default="OMITTED" varname="VNC_RHOST"> <key>rhost</key> --- 252,294 ---- <summary>Specify an initial password for the VNC session.</summary> ! <description>Before a <acronym>VNC</acronym> server can be ! started, the user must exist on the system and a password file ! for the VNC server must exist ! at <filename>$HOME/.vnc/passwd</filename>. If either of these ! conditions are not met, a <acronym>VNC</acronym> server can not ! normally be started. If you specify this option, the <command>&SCRIPT.NAME;</command> script will attempt to add the new user to the system (if necessary), and then create the ! appropriate <filename>$HOME/.vnc/passwd</filename> ! file. <emphasis>Note 1:</emphasis> ! The <command>vncpasswd-stdin</command> program is required to be ! installed on the system (which can be found in ! the <acronym>NST</acronym> distribution) for password ! creation. <emphasis>Note 2:</emphasis> If a new user is created ! on the system, both their normal login password and VNC server ! passwords will be identical. <emphasis>Note 3:</emphasis> If ! this command line option is not used and a ! new <acronym>VNC</acronym> user is created, the script will ! prompt for a new <literal>password</literal>.</description> </text> + <boolean default="false" varname="VNC_PASSWD_RESET"> + <key>passwd-reset</key> + <summary>Used to reset the VNC password of an existing user.</summary> + + <description>Use this command line switch + to <emphasis>reset</emphasis> an existing + user's <acronym>VNC</acronym> password. The "<literal>--passwd + TEXT</literal>" parameter may also be specified containing the + new password with this command line option. If it is not + specfied, the script will prompt for a + new <literal>password</literal>. <emphasis>Note 1:</emphasis> + Only the user's <acronym>VNC</acronym> password is reset and not + the user's login password. <emphasis>Note 2:</emphasis> It is + not necessary to use this command line switch when creating + a <literal>new</literal> <acronym>VNC</acronym> + user.</description> + </boolean> + <host default="OMITTED" varname="VNC_RHOST"> <key>rhost</key> Index: nstvncadmin.sh =================================================================== RCS file: /cvsroot/nst/src/scripts/nstvncadmin/nstvncadmin.sh,v retrieving revision 1.42 retrieving revision 1.43 diff -C2 -d -r1.42 -r1.43 *** nstvncadmin.sh 8 May 2009 15:11:51 -0000 1.42 --- nstvncadmin.sh 31 Aug 2009 19:01:12 -0000 1.43 *************** *** 525,529 **** # ! # Make sure no server already running local PORT_LIST="$((DISPLAY_NUM + 6000)),$((DISPLAY_NUM + 5900))"; if ${LSOF} -i ":${PORT_LIST}" &> /dev/null; then --- 525,529 ---- # ! # Make sure no server already running... local PORT_LIST="$((DISPLAY_NUM + 6000)),$((DISPLAY_NUM + 5900))"; if ${LSOF} -i ":${PORT_LIST}" &> /dev/null; then *************** *** 538,550 **** check_vnc_user; ! # Default home directory VNC_HOME="${HOME}"; # ! # Check for different user if [ "${VNC_SELF}" != "true" ]; then verbose_out "Determine home directory for VNC User: \"${VNC_USER}\""; # ! # If user doesn't yet exist, then create if ! USER_HOME="$(get_user_home "${VNC_USER}")"; then verbose_out "Need to create new VNC User: \"${VNC_USER}\""; --- 538,552 ---- check_vnc_user; ! # ! # Default home directory... VNC_HOME="${HOME}"; + # ! # Check for different user... if [ "${VNC_SELF}" != "true" ]; then verbose_out "Determine home directory for VNC User: \"${VNC_USER}\""; # ! # If user doesn't yet exist, then create... if ! USER_HOME="$(get_user_home "${VNC_USER}")"; then verbose_out "Need to create new VNC User: \"${VNC_USER}\""; *************** *** 565,569 **** # ! # Make sure we can encrypt the password if ! PASSWD_MD5="$(get_md5_passwd "${VNC_PASSWD}")"; then error "Failed to encrypt password to form required by: \"${NST_sysconfdir}/shadow\""; --- 567,571 ---- # ! # Make sure we can encrypt the password... if ! PASSWD_MD5="$(get_md5_passwd "${VNC_PASSWD}")"; then error "Failed to encrypt password to form required by: \"${NST_sysconfdir}/shadow\""; *************** *** 579,583 **** # ! # If still unable to locate home directory if ! USER_HOME="$(get_user_home "${VNC_USER}")"; then error "Still unable to locate home directory for VNC User: \"${VNC_USER}\""; --- 581,585 ---- # ! # If still unable to locate home directory... if ! USER_HOME="$(get_user_home "${VNC_USER}")"; then error "Still unable to locate home directory for VNC User: \"${VNC_USER}\""; *************** *** 587,599 **** # ! # Transfer user's home directory information VNC_HOME="${USER_HOME}"; # ! # If user id specified on command line, look up home directory elif [ "${VNC_USER}" != "SELF" ]; then # ! # If still unable to locate home directory if ! USER_HOME="$(get_user_home "${VNC_USER}")"; then error "Unable to locate home directory for VNC User: \"${VNC_USER}\""; --- 589,601 ---- # ! # Transfer user's home directory information... VNC_HOME="${USER_HOME}"; # ! # If user id specified on command line, look up home directory... elif [ "${VNC_USER}" != "SELF" ]; then # ! # If still unable to locate home directory... if ! USER_HOME="$(get_user_home "${VNC_USER}")"; then error "Unable to locate home directory for VNC User: \"${VNC_USER}\""; *************** *** 604,608 **** # ! # Create VNC password file if password known VNC_PASSWD_DIR="${VNC_HOME}/.vnc"; VNC_PASSWD_FILE="${VNC_PASSWD_DIR}/passwd"; --- 606,610 ---- # ! # Create VNC password file if password known... VNC_PASSWD_DIR="${VNC_HOME}/.vnc"; VNC_PASSWD_FILE="${VNC_PASSWD_DIR}/passwd"; *************** *** 638,645 **** return 1; fi fi # ! # Try and locate Java applet directory APPLET_ARGS=""; if [ "${VNC_APPLET_DIR}" = "SEARCH" ]; then --- 640,669 ---- return 1; fi + # + # chk to reset the VNC password... + elif [ "${VNC_PASSWD_RESET}" = "true" ]; then + if [ "${VNC_PASSWD}" = "PROMPT" ]; then + if ! prompt_verify_passwd "VNC Password for user (${VNC_USER}): "; then + error "Failed to get valid VNC password for user!"; + return 1; + fi + VNC_PASSWD="${PROMPT_PASSWD}"; + unset PROMPT_PASSWD; + elif ! verify_passwd "${VNC_PASSWD}"; then + return 1; + fi + verbose_out "Resetting the VNC password for user: \"${VNC_USER}\""; + require_program VNCPASSWD_STDIN vncpasswd-stdin + printf "%s\n" "${VNC_PASSWD}" | \ + vnc_user_run ${VNCPASSWD_STDIN} "${VNC_PASSWD_FILE}"; + + if [ ! -f "${VNC_PASSWD_FILE}" ]; then + error "Failed to reset the VNC password via: \"${VNCPASSWD_STDIN}\""; + return 1; + fi fi # ! # Try and locate Java applet directory... APPLET_ARGS=""; if [ "${VNC_APPLET_DIR}" = "SEARCH" ]; then *************** *** 658,667 **** fi ! # ! # Verify X font server is running check_xfs; # ! # Start from user's home directory if cd ${VNC_HOME}; then verbose_out "Changed to VNC user's home directory: \"${VNC_HOME}\""; --- 682,691 ---- fi ! # ! # Verify X font server is running... check_xfs; # ! # Start from user's home directory... if cd ${VNC_HOME}; then verbose_out "Changed to VNC user's home directory: \"${VNC_HOME}\""; *************** *** 672,680 **** # ! # Setup .Xauthority file export XAUTHORITY="${VNC_HOME}/.Xauthority"; # ! # Build a random 16 hex digit string local RAND_KEY="$(${DD} if=/dev/urandom count=32 ibs=1 2> /dev/null | ${HEXDUMP} -e '"%02x"')"; RAND_KEY="${RAND_KEY:0:16}"; --- 696,704 ---- # ! # Setup .Xauthority file... export XAUTHORITY="${VNC_HOME}/.Xauthority"; # ! # Build a random 16 hex digit string... local RAND_KEY="$(${DD} if=/dev/urandom count=32 ibs=1 2> /dev/null | ${HEXDUMP} -e '"%02x"')"; RAND_KEY="${RAND_KEY:0:16}"; *************** *** 702,706 **** # ! # Set default arguments local VNC_ARGS=":${DISPLAY_NUM} -geometry ${WIDTH}x${HEIGHT}"; VNC_ARGS="${VNC_ARGS} -depth ${DEPTH} -dpi ${DPI} ${APPLET_ARGS}"; --- 726,730 ---- # ! # Set default arguments... local VNC_ARGS=":${DISPLAY_NUM} -geometry ${WIDTH}x${HEIGHT}"; VNC_ARGS="${VNC_ARGS} -depth ${DEPTH} -dpi ${DPI} ${APPLET_ARGS}"; *************** *** 727,735 **** # ! # NOTE: check_xfs will clear XVNC_FP_ARGS if xfs is not on system VNC_ARGS="${VNC_ARGS} ${XVNC_FP_ARGS}"; # ! # Check for localhost only connections if [ "${VNC_LOCALHOST}" = "true" ]; then VNC_ARGS="${VNC_ARGS} -localhost"; --- 751,759 ---- # ! # NOTE: check_xfs will clear XVNC_FP_ARGS if xfs is not on system... VNC_ARGS="${VNC_ARGS} ${XVNC_FP_ARGS}"; # ! # Check for localhost only connections... if [ "${VNC_LOCALHOST}" = "true" ]; then VNC_ARGS="${VNC_ARGS} -localhost"; *************** *** 737,741 **** # ! # See if view only if [ "${VNC_VIEWONLY}" = "true" ]; then if [ "${XVNC_AUTHOR}" = "realvnc" ]; then --- 761,765 ---- # ! # See if view only... if [ "${VNC_VIEWONLY}" = "true" ]; then if [ "${XVNC_AUTHOR}" = "realvnc" ]; then *************** *** 749,753 **** # ! # Check for share mode if [ "${VNC_SHARED}" = "always" ]; then if [ "${XVNC_AUTHOR}" = "realvnc" ]; then --- 773,777 ---- # ! # Check for share mode... if [ "${VNC_SHARED}" = "always" ]; then if [ "${XVNC_AUTHOR}" = "realvnc" ]; then *************** *** 765,769 **** # ! # Check for no disconnect option if [ "${VNC_NO_DISCONNECT}" = "true" ]; then if [ "${XVNC_AUTHOR}" = "realvnc" ]; then --- 789,793 ---- # ! # Check for no disconnect option... if [ "${VNC_NO_DISCONNECT}" = "true" ]; then if [ "${XVNC_AUTHOR}" = "realvnc" ]; then *************** *** 775,779 **** # ! # Make sure ".vnc" directory exists if [ ! -d "${VNC_HOME}/.vnc" ]; then if ! ${MKDIR} -p "${VNC_HOME}/.vnc"; then --- 799,803 ---- # ! # Make sure ".vnc" directory exists... if [ ! -d "${VNC_HOME}/.vnc" ]; then if ! ${MKDIR} -p "${VNC_HOME}/.vnc"; then *************** *** 935,1120 **** # Returns 0 on success and 1 on failure. mode_setup_vncserver() { ! require_program VNCSERVER vncserver; ! check_vnc_user; ! # Default home directory ! VNC_HOME="${HOME}"; ! # Check for different user ! if [ "${VNC_SELF}" != "true" ]; then ! verbose_out "Determined home directory for: \"${VNC_USER}\""; ! # If user doesn't yet exist, then create ! if ! USER_HOME="$(get_user_home "${VNC_USER}")"; then ! require_program USERADD useradd ! verbose_out "Need to create new system user: \"${VNC_USER}\""; ! if [ "${VNC_PASSWD}" = "PROMPT" ]; then ! if ! prompt_verify_passwd "Password for new user (${VNC_USER}): "; then ! error "Failed to get valid password for new user!"; ! return 1; ! fi ! VNC_PASSWD="${PROMPT_PASSWD}"; ! unset PROMPT_PASSWD; ! ! elif ! verify_passwd "${VNC_PASSWD}"; then ! return 1; fi ! # Make sure we can encrypt the password ! if ! PASSWD_MD5="$(get_md5_passwd "${VNC_PASSWD}")"; then ! error "Failed to encrypt password to form required by: \"${NST_sysconfdir}/shadow\""; ! return 1; ! fi ! ! ${USERADD} -c "Created for VNC access" -p "${PASSWD_MD5}" "${VNC_USER}" ! if [ "$?" != "0" ]; then ! error "Failed to add new user: \"${VNC_USER}\", giving up!"; ! return 1; ! fi ! verbose_out "Successfully added new user: \"${VNC_USER}\""; ! # If still unable to locate home directory ! if ! USER_HOME="$(get_user_home "${VNC_USER}")"; then ! error "Still unable to locate home directory for VNC user: \"${VNC_USER}\""; ! return 1; ! fi fi ! # Transfer user's home directory information ! VNC_HOME="${USER_HOME}"; ! # If user id specified on command line, look up home directory ! elif [ "${VNC_USER}" != "SELF" ]; then ! # If still unable to locate home directory if ! USER_HOME="$(get_user_home "${VNC_USER}")"; then ! error "Unable to locate home directory for VNC user: \"${VNC_USER}\""; return 1; fi - VNC_HOME="${USER_HOME}"; fi ! # ! # Create VNC password file if password known ! VNC_PASSWD_DIR="${VNC_HOME}/.vnc"; ! VNC_PASSWD_FILE="${VNC_PASSWD_DIR}/passwd"; ! if [ "${VNC_PASSWD}" != "PROMPT" -a ! -f "${VNC_PASSWD_FILE}" ]; then ! require_program CHMOD chmod; ! require_program CHOWN chown; ! verbose_out "Attempting to set VNC user's password..."; ! if [ ! -d "${VNC_PASSWD_DIR}" ]; then ! require_program MKDIR mkdir; ! if ${MKDIR} -p "${VNC_PASSWD_DIR}" && ${CHMOD} 700 "${VNC_PASSWD_DIR}"; then ! if [ "${VNC_SELF}" != "true" ]; then ! if ! ${CHOWN} "${VNC_USER}:${VNC_USER}" "${VNC_PASSWD_DIR}"; then ! error "Failed to set ownership to: \"${VNC_USER}:${VNC_USER}\" on: \"${VNC_PASSWD_DIR}\""; ! return 1; ! fi fi - else - error "Failed to create directory: \"${VNC_PASSWD_DIR}\""; - return 1; fi fi ! require_program VNCPASSWD_STDIN vncpasswd-stdin ! printf "%s\n" "${VNC_PASSWD}" |\ ! vnc_user_run ${VNCPASSWD_STDIN} "${VNC_PASSWD_FILE}"; ! if [ ! -f "${VNC_PASSWD_FILE}" ]; then ! error "Failed to set new VNC password via: \"${VNCPASSWD_STDIN}\""; ! return 1; ! fi ! if ! ${CHMOD} 600 "${VNC_PASSWD_FILE}"; then ! error "Failed to change permissions to 600 on: \"${VNC_PASSWD_FILE}\""; ! return 1; fi fi ! # ! # Try and locate Java applet directory ! # ! APPLET_ARGS=""; ! if [ "${VNC_APPLET_DIR}" = "SEARCH" ]; then ! for d in ${NST_datadir}/vnc/classes /usr/share/vnc/classes /usr/local/share/vnc/classes; do ! if [ -d "${d}" ]; then ! APPLET_ARGS="-httpd ${d}"; ! verbose_out "Found VNC applet directory at: \"${d}\""; ! break; ! fi ! done ! elif [ -d "${VNC_APPLET_DIR}" ]; then ! verbose_out "Using VNC applet directory of: \"${VNC_APPLET_DIR}\""; ! APPLET_ARGS="-httpd ${VNC_APPLET_DIR}"; ! else ! verbose_out "VNC applet support disabled..."; fi ! ! # ! # Verify X font server is running ! # ! check_xfs; ! # ! # Start from user's home directory ! # ! if ! cd ${VNC_HOME}; then ! error "Failed to change directory to user's home: \"${VNC_HOME}\""; ! return 1; ! fi ! # ! # Set default arguments ! local VNC_ARGS=":${DISPLAY_NUM} -geometry ${WIDTH}x${HEIGHT}"; ! VNC_ARGS="${VNC_ARGS} -depth ${DEPTH} -dpi ${DPI} ${APPLET_ARGS}"; ! # ! # Check for localhost only connections ! if [ "${VNC_LOCALHOST}" = "true" ]; then ! VNC_ARGS="${VNC_ARGS} -localhost"; ! fi ! # ! # See if view only ! if [ "${VNC_VIEWONLY}" = "true" ]; then ! VNC_ARGS="${VNC_ARGS} -viewonly"; ! fi ! # ! # Check for share mode ! if [ "${VNC_SHARED}" = "always" ]; then ! VNC_ARGS="${VNC_ARGS} -alwaysshared"; ! elif [ "${VNC_SHARED}" = "never" ]; then ! VNC_ARGS="${VNC_ARGS} -nevershared"; ! fi ! # ! # Check for no disconnect option ! if [ "${VNC_NO_DISCONNECT}" = "true" ]; then ! VNC_ARGS="${VNC_ARGS} -dontdisconnect"; ! fi ! verbose_out "*** Starting a vnc server on display: \"${DISPLAY_NUM}\""; ! if [ "${VERBOSE}" = "true" ]; then ! vnc_user_run ${VNCSERVER} ${VNC_ARGS}; ! local RC="$?"; ! else ! vnc_user_run ${VNCSERVER} ${VNC_ARGS} &> /dev/null; ! local RC="$?"; ! fi ! if [ "${RC}" != "0" ]; then ! error "Failed to start new VNC server using display: \"${DISPLAY_NUM}\""; ! fi ! if [ "${VERBOSE}" = "true" ]; then ! printf "\nActive VNC servers:\n"; ! list_vnc_processes; ! fi ! exit $RC; } --- 959,1169 ---- # Returns 0 on success and 1 on failure. mode_setup_vncserver() { ! require_program VNCSERVER vncserver; ! check_vnc_user; ! # ! # Default home directory... ! VNC_HOME="${HOME}"; ! # Check for different user... ! if [ "${VNC_SELF}" != "true" ]; then ! verbose_out "Determined home directory for: \"${VNC_USER}\""; ! # ! # If user doesn't yet exist, then create... ! if ! USER_HOME="$(get_user_home "${VNC_USER}")"; then ! require_program USERADD useradd ! verbose_out "Need to create new system user: \"${VNC_USER}\""; ! if [ "${VNC_PASSWD}" = "PROMPT" ]; then ! if ! prompt_verify_passwd "Password for new user (${VNC_USER}): "; then ! error "Failed to get valid password for new user!"; ! return 1; fi + VNC_PASSWD="${PROMPT_PASSWD}"; + unset PROMPT_PASSWD; + elif ! verify_passwd "${VNC_PASSWD}"; then + return 1; + fi ! # ! # Make sure we can encrypt the password... ! if ! PASSWD_MD5="$(get_md5_passwd "${VNC_PASSWD}")"; then ! error "Failed to encrypt password to form required by: \"${NST_sysconfdir}/shadow\""; ! return 1; ! fi ! ${USERADD} -c "Created for VNC access" -p "${PASSWD_MD5}" "${VNC_USER}"; ! if [ "$?" != "0" ]; then ! error "Failed to add new user: \"${VNC_USER}\", giving up!"; ! return 1; fi ! verbose_out "Successfully added new user: \"${VNC_USER}\""; ! # ! # If still unable to locate home directory... if ! USER_HOME="$(get_user_home "${VNC_USER}")"; then ! error "Still unable to locate home directory for VNC user: \"${VNC_USER}\""; return 1; fi fi ! # ! # Transfer user's home directory information... ! VNC_HOME="${USER_HOME}"; ! # ! # If user id specified on command line, look up home directory ! elif [ "${VNC_USER}" != "SELF" ]; then ! # ! # If still unable to locate home directory... ! if ! USER_HOME="$(get_user_home "${VNC_USER}")"; then ! error "Unable to locate home directory for VNC user: \"${VNC_USER}\""; ! return 1; ! fi ! VNC_HOME="${USER_HOME}"; ! fi ! ! # ! # Create VNC password file if password known ! VNC_PASSWD_DIR="${VNC_HOME}/.vnc"; ! VNC_PASSWD_FILE="${VNC_PASSWD_DIR}/passwd"; ! ! if [ "${VNC_PASSWD}" != "PROMPT" -a ! -f "${VNC_PASSWD_FILE}" ]; then ! require_program CHMOD chmod; ! require_program CHOWN chown; ! ! verbose_out "Attempting to set VNC user's password..."; ! if [ ! -d "${VNC_PASSWD_DIR}" ]; then ! require_program MKDIR mkdir; ! if ${MKDIR} -p "${VNC_PASSWD_DIR}" && ${CHMOD} 700 "${VNC_PASSWD_DIR}"; then ! if [ "${VNC_SELF}" != "true" ]; then ! if ! ${CHOWN} "${VNC_USER}:${VNC_USER}" "${VNC_PASSWD_DIR}"; then ! error "Failed to set ownership to: \"${VNC_USER}:${VNC_USER}\" on: \"${VNC_PASSWD_DIR}\""; ! return 1; fi fi + else + error "Failed to create directory: \"${VNC_PASSWD_DIR}\""; + return 1; fi + fi ! require_program VNCPASSWD_STDIN vncpasswd-stdin ! printf "%s\n" "${VNC_PASSWD}" | \ ! vnc_user_run ${VNCPASSWD_STDIN} "${VNC_PASSWD_FILE}"; ! if [ ! -f "${VNC_PASSWD_FILE}" ]; then ! error "Failed to set new VNC password via: \"${VNCPASSWD_STDIN}\""; ! return 1; ! fi ! if ! ${CHMOD} 600 "${VNC_PASSWD_FILE}"; then ! error "Failed to change permissions to 600 on: \"${VNC_PASSWD_FILE}\""; ! return 1; ! fi ! # ! # chk to reset the VNC password... ! elif [ "${VNC_PASSWD_RESET}" = "true" ]; then ! if [ "${VNC_PASSWD}" = "PROMPT" ]; then ! if ! prompt_verify_passwd "VNC Password for user (${VNC_USER}): "; then ! error "Failed to get valid VNC password for user!"; ! return 1; fi + VNC_PASSWD="${PROMPT_PASSWD}"; + unset PROMPT_PASSWD; + elif ! verify_passwd "${VNC_PASSWD}"; then + return 1; fi + require_program VNCPASSWD_STDIN vncpasswd-stdin + printf "%s\n" "${VNC_PASSWD}" | \ + vnc_user_run ${VNCPASSWD_STDIN} "${VNC_PASSWD_FILE}"; ! if [ ! -f "${VNC_PASSWD_FILE}" ]; then ! error "Failed to reset the VNC password via: \"${VNCPASSWD_STDIN}\""; ! return 1; fi ! fi ! # ! # Try and locate Java applet directory... ! APPLET_ARGS=""; ! if [ "${VNC_APPLET_DIR}" = "SEARCH" ]; then ! for d in ${NST_datadir}/vnc/classes /usr/share/vnc/classes /usr/local/share/vnc/classes; do ! if [ -d "${d}" ]; then ! APPLET_ARGS="-httpd ${d}"; ! verbose_out "Found VNC applet directory at: \"${d}\""; ! break; ! fi ! done ! elif [ -d "${VNC_APPLET_DIR}" ]; then ! verbose_out "Using VNC applet directory of: \"${VNC_APPLET_DIR}\""; ! APPLET_ARGS="-httpd ${VNC_APPLET_DIR}"; ! else ! verbose_out "VNC applet support disabled..."; ! fi ! # ! # Verify X font server is running... ! check_xfs; ! # ! # Start from user's home directory... ! if ! cd ${VNC_HOME}; then ! error "Failed to change directory to user's home: \"${VNC_HOME}\""; ! return 1; ! fi ! # ! # Set default arguments... ! local VNC_ARGS=":${DISPLAY_NUM} -geometry ${WIDTH}x${HEIGHT}"; ! VNC_ARGS="${VNC_ARGS} -depth ${DEPTH} -dpi ${DPI} ${APPLET_ARGS}"; ! # ! # Check for localhost only connections... ! if [ "${VNC_LOCALHOST}" = "true" ]; then ! VNC_ARGS="${VNC_ARGS} -localhost"; ! fi ! # ! # See if view only... ! if [ "${VNC_VIEWONLY}" = "true" ]; then ! VNC_ARGS="${VNC_ARGS} -viewonly"; ! fi ! # ! # Check for share mode... ! if [ "${VNC_SHARED}" = "always" ]; then ! VNC_ARGS="${VNC_ARGS} -alwaysshared"; ! elif [ "${VNC_SHARED}" = "never" ]; then ! VNC_ARGS="${VNC_ARGS} -nevershared"; ! fi ! # ! # Check for no disconnect option... ! if [ "${VNC_NO_DISCONNECT}" = "true" ]; then ! VNC_ARGS="${VNC_ARGS} -dontdisconnect"; ! fi ! verbose_out "*** Starting a vnc server on display: \"${DISPLAY_NUM}\""; ! if [ "${VERBOSE}" = "true" ]; then ! vnc_user_run ${VNCSERVER} ${VNC_ARGS}; ! local RC="$?"; ! else ! vnc_user_run ${VNCSERVER} ${VNC_ARGS} &> /dev/null; ! local RC="$?"; ! fi ! if [ "${RC}" != "0" ]; then ! error "Failed to start new VNC server using display: \"${DISPLAY_NUM}\""; ! fi ! if [ "${VERBOSE}" = "true" ]; then ! printf "\nActive VNC servers:\n"; ! list_vnc_processes; ! fi ! ! exit $RC; } |