#!/bin/ksh # # This version of the CDE dtconfig script is for use in the Solaris(TM) # operating environment. # # Copyright 2006 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # (c) Copyright 1993, 1994 Hewlett-Packard Company # (c) Copyright 1993, 1994 International Business Machines Corp. # (c) Copyright 1993, 1994 Sun Microsystems, Inc. # (c) Copyright 1993, 1994 Novell, Inc. # (c) Copyright 1993, 1994 Unix System Labs, Inc., a subsidiary of # # This script can be run after CDE installation to configure CDE within # the host platforms operating environment. For example, when auto-start # is selected, the CDE desktop login window will be displayed at end of the # workstation's power up boot cycle. # # Location: $PKG_INSTALL_ROOT/bin/dtconfig # #pragma ident "@(#)dtconfig.src 1.41 06/05/19 SMI" # # Main service # svc:/application/graphical-login/cde-login:default # # CDE inetd-based services # svc:/network/rpc/cde-ttdbserver:tcp # svc:/network/rpc/cde-calendar-manager:udp # svc:/network/cde-spc:default FMRI=svc:application/graphical-login/cde-login:default mode=$1 arg_count=$# prg_name=$0 Message() { # Message() - display message from dtconfig.cat # $1 - message id # $2 - fallback message text if [ -x $DTDSPMSG ]; then $DTDSPMSG -s 20 dtconfig $1 "$2" "$3" echo " " else echo "$2" fi } usage_error() { echo " " Message 1 " CDE configuration utility" echo " " Message 2 " $prg_name -d (disable auto-start)" $prg_name Message 3 " $prg_name -e (enable auto-start)" $prg_name Message 4 " $prg_name -kill (kill dtlogin)" $prg_name Message 5 " $prg_name -reset (reset dtlogin)" $prg_name Message 6 " $prg_name -p (printer action update)" $prg_name Message 25 " $prg_name -inetd (inetd.conf /usr/dt daemons)" $prg_name Message 26 " $prg_name -inetd.ow (inetd.conf /usr/openwin daemons)" $prg_name echo " " } # # Allow for configured and factory versions of dtlogin.rc # if [ -f $PKG_INSTALL_ROOT//etc/dt/config/dtlogin.rc ] then RC_MASTER=$PKG_INSTALL_ROOT//etc/dt/config/dtlogin.rc elif [ -f $PKG_INSTALL_ROOT//usr/dt/config/dtlogin.rc ] then RC_MASTER=$PKG_INSTALL_ROOT//usr/dt/config/dtlogin.rc fi RC_COPY=$PKG_INSTALL_ROOT/etc/init.d/dtlogin DTDSPMSG=$PKG_INSTALL_ROOT/usr/dt/bin/dtdspmsg set `/bin/id` if [ $1 != "uid=0(root)" ]; then Message 7 "$prg_name: this script must be run as root" $prg_name exit 1 fi if [ $arg_count -ne 1 ]; then echo " " # # Display error message for too many arguments # if [ $arg_count -gt 1 ]; then Message 8 "Usage: Too many arguments" # # Display error message for NULL arguments passed # elif [ $arg_count -eq 0 ]; then Message 9 "Usage: Needs one argument" fi usage_error exit 1 fi rc_master_check() { if [ ! -x $RC_MASTER ]; then Message 10 "option failed" Message 11 "could not execute $RC_MASTER" $RC_MASTER exit 1 fi } # # Upgrade user calendars at system upgrade time. # do_sdtcm_convert() { SDTCM_CONVERT=$PKG_INSTALL_ROOT/usr/dt/bin/sdtcm_convert CALENDAR_DIR=$PKG_INSTALL_ROOT/var/spool/calendar # Check for existence of /var/spool/calendar. if [ ! -d $CALENDAR_DIR ]; then return 1 fi # Check for local /var/spool/calendar. ret=`/bin/df -l $CALENDAR_DIR` if [ $? != 0 ]; then Message 36 "Skipping the upgrade of user calendar files - \n /var/spool/calendar is not a local file system." return 1 fi # Check for existence of calendar files. count=`(ls $CALENDAR_DIR/callog.* | wc -l) 2>/dev/null` if [ $count = 0 ]; then return 1 fi # Check for existence of $SDTCM_CONVERT. if [ ! -x $SDTCM_CONVERT ]; then Message 37 "Skipping the upgrade of user calendar files - \n sdtcm_convert is not available." return 1 fi cd $CALENDAR_DIR Message 38 "\nUpgrading Calendar Files ..." # Create links needed by sdtcm_convert. if [ ! -r /var/spool ]; then /bin/mkdir -p /var/spool 1>/dev/null 2>&1 fi if [ ! -r /var/spool/calendar ]; then /bin/ln -s $CALENDAR_DIR /var/spool/calendar 1>/dev/null 2>&1 fi if [ ! -r /usr/spool ]; then /bin/ln -s /var/spool /usr/spool 1>/dev/null 2>&1 fi for file in $CALENDAR_DIR/callog.* ; do # Split off the username. user=`echo $file | /usr/bin/sed "s/.*callog\.//"` print "" Message 39 "Checking calendar $user ..." if [ -r calorig.${user} ]; then # Save the backup, in case the calendar is OK, and does not # need to be upgraded. /bin/mv calorig.${user} calorig.${user}.tmp 1>/dev/null 2>&1 fi export LD_LIBRARY_PATH=${PKG_INSTALL_ROOT}/usr/dt/lib:${LD_LIBRARY_PATH} $SDTCM_CONVERT -v 4 $user /dev/null # Handle error condition. status=$? # echo "Status: " $status if [ $status -gt 0 ]; then Message 40 "Cannot upgrade calendar $user at this time." elif [ ! -r calorig.${user} ]; then Message 41 "Calendar OK." else Message 42 "Calendar $user upgraded, old version saved in /var/spool/calendar/calorig.$user." fi # Restore the backup of the backup if no new backup was created, # because the calendar was OK, and did not need to be upgraded. if [ ! -r calorig.${user} -a -r calorig.${user}.tmp ]; then /bin/mv calorig.${user}.tmp calorig.${user} 1>/dev/null 2>&1 elif [ calorig.${user}.tmp ]; then /bin/rm -f calorig.${user}.tmp 1>/dev/null 2>&1 fi done Message 43 "\nDone Upgrading Calendar Files.\n" } is_enabled() { enabled=`/usr/bin/svcs -l $1 | /usr/bin/grep '^enabled' | awk '{print $2}'` [ "$enabled" = "true" ] && /usr/sbin/svcadm enable -t $1 || /usr/sbin/svcadm disable -t $1 } disable_dtlogin () { is_enabled $FMRI /usr/sbin/svccfg -s $FMRI setprop general/enabled = boolean: false if [ $? = 0 ]; then Message 14 "done" Message 15 "desktop auto-start disabled." else Message 12 "disable failed" fi } enable_dtlogin () { is_enabled $FMRI /usr/sbin/svccfg -s $FMRI setprop general/enabled = boolean: true if [ $? = 0 ]; then Message 14 "done" Message 20 "desktop auto-start enabled." else Message 16 "enable failed" fi } kill_dtlogin () { /usr/sbin/svcadm disable -t $FMRI if [ $? = 0 ]; then Message 14 "done" Message 21 "dtlogin kill complete." fi } refresh_dtlogin () { /usr/sbin/svcadm refresh $FMRI if [ $? = 0 ]; then Message 14 "done" Message 22 "dtlogin config resources reloaded." fi } print_actions () { rc_master_check $RC_MASTER update_printers Message 14 "done" Message 23 "printer action update is complete" } enable_inetd () { Message 27 "Next system boot, following will be run from /usr/dt/bin" /usr/sbin/svcadm enable network/rpc/cde-ttdbserver:tcp if [ $? = 0 ];then Message 28 " rpc.ttdbserverd (ToolTalk)" fi /usr/sbin/svcadm enable network/cde-spc:default if [ $? = 0 ];then Message 30 " dtspcd (Subprocess Control)" fi /usr/sbin/svcadm enable network/rpc/cde-calendar-manager:udp if [ $? = 0 ];then Message 29 " rpc.cmsd (Calendar Manager)" fi do_sdtcm_convert } enable_inetd_openwin () { echo dtconfig: obsolete openwin services removed } case "$mode" in -d) disable_dtlogin ;; -e) enable_dtlogin ;; -kill) kill_dtlogin ;; -reset) refresh_dtlogin ;; -p) print_actions ;; -inetd) enable_inetd ;; -inetd.ow) enable_inetd_openwin ;; *) Message 24 "Usage:" usage_error exit 1 ;; esac exit 0