1
0
Files
irix-657m-src/eoe/cmd/sss/userenv/launchESPartner
2022-09-29 17:59:04 +03:00

330 lines
8.1 KiB
Bash
Executable File

#!/bin/sh
# This shell script is launched by ESPartner.ftr or command line
# and is supposed to launch in "theBrowser" with predefined
# URL.
#
# Only two browsers are supported for now
#
# (1) netscape
# (2) lynx
#
# The netscape is a prefered browser
#
Success=0
Failure=1
XMode=0
TargetHostName=""
WinList=""
WinId=""
TheURL=""
theBrowser=""
netscape="`which -f netscape`"
if [ ! -x "$netscape" ]; then
netscape=""
fi
lynx="`which -f lynx`"
if [ ! -x "$lynx" ]; then
lynx=""
fi
Xlynx="/usr/sbin/xwsh -display $DISPLAY -name Lynx -e $lynx"
portno="`fgrep -e sgi-esphttp /etc/services | cut -f2 | cut -f1 -d"/"`"
IsNetscapeRunning()
{
# is netscape running on this system?
netscapeOn="`ps -e | grep -i netscape | egrep -v grep | head -1`"
if [ "$netscapeOn" = "" ] ; then
return $Failure
fi
# may be
# let's check lock file
if [ -h "$HOME/.netscape/lock" ] > /dev/null; then
return $Success
else
# ps again, in case previous ps caught a dying process
sleep 1
netscapeOn="`ps -e|grep -i netscape|egrep -v grep|head -1`"
if [ "$netscapeOn" = "" ]; then
return $Failure
fi
# Check lock again
if [ -h "$HOME/.netscape/lock" ] > /dev/null; then
return $Success
fi
fi
return $Failure
}
FindWindowID()
{
echo "$WinList" |
while read WinId PrName
do
if [ "$WinId" = "" ]; then
WinId="0"
return $Success
fi
wndmozl=`2>/dev/null xprop -notype -id $WinId _MOZILLA_VERSION | \
2>/dev/null cut -d"\"" -f2 | grep -v _MOZILLA_VERSION`
wndhost=`2>/dev/null xprop -notype -id $WinId WM_CLIENT_MACHINE | \
2>/dev/null cut -d"\"" -f2`
if [ "$wndhost" = "$TargetHostName" ]; then
if [ "$wndmozl" != "" ]; then
return $Success
fi
fi
done
WinId="0"
return $Success
}
# ------------------- openNetscape ---------------------
# Open URL using netscape
# Takes one argument: the URL.
openNetscape()
{
TargetHostName="`uname -n`"
#we want to launch Netscape in separate window
IsNetscapeRunning
if [ "$?" = "$Failure" ]; then
# it is simple then
if [ "$XMode" = "1" ]; then
2>/dev/null $theBrowser -display $DISPLAY $1 &
else
$theBrowser -display $DISPLAY $1 &
fi
else
# o-o-oh man this is pain
WinList=""
if [ -x /usr/bin/X11/xlswins -a -x /usr/bin/X11/xprop ] > /dev/null; then
WinList="`2>/dev/null /usr/bin/X11/xlswins -display $DISPLAY | grep -i netscape`"
fi
if [ "$WinList" = "" ]; then
# it looks like it is not possible to avoid locked cashe message and
# it is nothing we can do about it
$theBrowser -display $DISPLAY $1 &
return $Success
fi
FindWindowID
if [ "$WinId" != "0" ]; then
# window found, so we can use -remote api to connect to this window
$theBrowser -display $DISPLAY -id $WinId -noraise -remote "openURL(`echo $1`,new-window)" &
else
# it looks like it is not possible to avoid locked cashe message and
# it is nothing we can do about it
$theBrowser -display $DISPLAY $1 &
fi
fi
return $Success
}
# #######################
# Script Starts here
# #######################
if [ "$1" = "-h" ]; then
# Display usage message
echo "Usage : launchESPartner [-h -l] [-host hostname]"
echo " -h - displays this message"
echo " -l - force to use Lynx browser"
echo " -host hostname - launch ESP for host 'hostname'"
exit 0
fi
# Check is there any terminal present
tty -s
if [ "$?" != "0" ]; then
# There is no terminal present
# we must report
XMode=1
fi
#
# Figure out what browser to use.
# check -l flag
# Netscape
# lynx
#
if [ "$1" = "-l" ]; then
# force Lynx as a web browser
if [ -x "$lynx" ]; then
theBrowser="$lynx"
else
if [ "$XMode" = "1" ]; then
/usr/bin/X11/xconfirm \
-h "Embedded Support Partner" \
-icon error \
-t "Unable to find Lynx WEB Browser" \
-t "" \
-t "Please, install Lynx WEB Browser and try again."
-t "" \
-t "ESP console launch operation aborted" \
-b "OK" > /dev/null &
else
echo "ESP console launch operation aborted : Unable to find Lynx WEB Browser."
echo "Please, install Lynx WEB browser and try again."
fi
exit 1
fi
shift 1
elif [ -x "$netscape" ] > /dev/null; then
# netscape exist
theBrowser="$netscape"
elif [ -x "$lynx" ] > /dev/null; then
theBrowser="$lynx"
else
# Browser not found
if [ "$XMode" = "1" ]; then
/usr/bin/X11/xconfirm \
-h "Embedded Support Partner" \
-icon error \
-t "Unable to determine your Web browser" \
-t "" \
-t "Please, install Netscape or Lynx web browser and try again."
-t "" \
-t "ESP console launch operation aborted" \
-b "OK" > /dev/null &
else
echo "ESP console launch operation aborted : Unable to determine your Web browser."
echo "Please, install Netscape or Lynx WEB browser and try again."
fi
exit 1
fi
# OK Browser found
# Now run through URLs.
#
if [ $# -le 0 ]; then
# there is no args left
# so we must launch ESP for localhost
if [ "$theBrowser" = "$lynx" ]; then
TheURL="http://localhost:$portno/index_sem.txt.html"
else
TheURL="http://localhost:$portno/index.html"
fi
elif [ "$1" = "-host" ]; then
# hostname is specified
shift 1
if [ $# -ge 0 ]; then
if [ "$theBrowser" = "$lynx" ]; then
TheURL="http://$1:$portno/index_sem.txt.html"
else
TheURL="http://$1:$portno/index.html"
fi
else
# hostname not found
if [ "$XMode" = "1" ]; then
/usr/bin/X11/xconfirm \
-h "Embedded Support Partner" \
-icon error \
-t "Hostname expected in the command line" \
-t "" \
-t "ESP console launch operation aborted" \
-b "OK" > /dev/null &
else
echo "ESP console launch operation aborted : Hostname expected in the command line."
fi
exit 1
fi
else
# Launch from file
# read URL index
LineToLaunch="$1"
shift 1
if [ $# -le 0 ]; then
if [ "$XMode" = "1" ]; then
/usr/bin/X11/xconfirm \
-h "Embedded Support Partner" \
-icon error \
-t "Filename expected in the command line" \
-t "" \
-t "ESP console launch operation aborted" \
-b "OK" > /dev/null &
else
echo "ESP console launch operation aborted : Filename expected in the command line."
fi
exit 1
fi
# Next Args must be a launchESPartnerType file
# and it must contains URL in it's $LineToLaunch's string
TheURL=""
if [ -r $1 ]; then
TheURL="`head -$LineToLaunch $1 | tail -1`"
else
if [ "$XMode" = "1" ]; then
/usr/bin/X11/xconfirm \
-h "Missing launchESPartnerType file" \
-icon error \
-t "The file that is containing ESP console URL was not found." \
-t "" \
-t "ESP console launch operation aborted" \
-b "OK" > /dev/null &
else
echo "ESP console launch operation aborted : \n The file that is containing ESP console URL was not found."
fi
exit 1
fi
if [ "$TheURL" = "" ]; then
if [ "$XMode" = "1" ]; then
/usr/bin/X11/xconfirm \
-h "Missing URL" \
-icon error \
-t "The line number $LineToLaunch does not contains URL in ESP console URL file." \
-t "" \
-t "ESP console launch operation aborted." \
-b "OK" > /dev/null &
else
echo "ESP console launch operation aborted : \n The line number $LineToLaunch does not contains URL in ESP console URL file."
fi
exit 1
fi
fi
# TheURL is ready, TheBrowser is ready
# Time to Launch
if [ "$theBrowser" = "$netscape" ]; then
openNetscape $TheURL &
elif [ "$theBrowser" = "$lynx" ]; then
if [ "$XMode" = "1" ]; then
#we want to launch Lynx in separate window
$Xlynx -cache=0 $TheURL &
else
#we want to launch Lynx in the same window
$lynx -cache=0 $TheURL
fi
fi
################################
# This is it folks #
################################