summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGaetan Nadon <memsize@videotron.ca>2011-01-21 21:59:03 -0500
committerGaetan Nadon <memsize@videotron.ca>2011-01-27 15:52:13 -0500
commitb00a9a1272a59dd34f11fe76f003d56e3ac94e2b (patch)
treefa7fe0f1941373b4554645caf060816511e8c515
parent23e2b8b8640adcfe39a3f365402aa0be3263912d (diff)
config: do not use sed as there is no text substitution to make
Just ship the script. Signed-off-by: Gaetan Nadon <memsize@videotron.ca>
-rw-r--r--.gitignore5
-rw-r--r--Makefile.am14
-rw-r--r--[-rwxr-xr-x]xauth_switch_to_sun-des-1 (renamed from xauth_switch_to_sun-des-1.cpp)126
3 files changed, 69 insertions, 76 deletions
diff --git a/.gitignore b/.gitignore
index 33a7964..0b88b62 100644
--- a/.gitignore
+++ b/.gitignore
@@ -71,9 +71,8 @@ core
*.tar.bz2
*.tar.gz
#
-# Add & Override patterns for scripts
+# Add & Override patterns for scripts
#
# Edit the following section as needed
# For example, !report.pc overrides *.pc. See 'man gitignore'
-#
-xauth_switch_to_sun-des-1
+#
diff --git a/Makefile.am b/Makefile.am
index b6f0ed7..487c606 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -20,17 +20,13 @@
# PERFORMANCE OF THIS SOFTWARE.
SUBDIRS = man
-dist_bin_SCRIPTS = fontname.sh fontprop.sh xon
-
-bin_SCRIPTS = xauth_switch_to_sun-des-1
-
-xauth_switch_to_sun-des-1: $(srcdir)/xauth_switch_to_sun-des-1.cpp
- grep -v Avoid $(srcdir)/xauth_switch_to_sun-des-1.cpp | sed -e /^\#.*$$/d -e s/XCOMM/\#/g > $@
+dist_bin_SCRIPTS = \
+ fontname.sh \
+ fontprop.sh \
+ xon \
+ xauth_switch_to_sun-des-1
MAINTAINERCLEANFILES = ChangeLog INSTALL
-CLEANFILES = xauth_switch_to_sun-des-1
-
-EXTRA_DIST = xauth_switch_to_sun-des-1.cpp
.PHONY: ChangeLog INSTALL
diff --git a/xauth_switch_to_sun-des-1.cpp b/xauth_switch_to_sun-des-1
index 3e5850f..13d8fb9 100755..100644
--- a/xauth_switch_to_sun-des-1.cpp
+++ b/xauth_switch_to_sun-des-1
@@ -1,40 +1,38 @@
-XCOMM!/bin/ksh
-XCOMM X11 MIT-MAGIC-COOKIE to SUN-DES-1 auth.
-XCOMM this script switched the current Xservers authentification
-XCOMM (usually MIT-MAGIC-COOKIE-1) to SUN-DES-1.
-XCOMM
-XCOMM
-XCOMM Copyright 2002-2004 by Roland Mainz <roland.mainz@nrubsig.org>.
-XCOMM
-XCOMM
-XCOMM Requirements:
-XCOMM - Solaris/Linux/AIX running as NIS+ client (YP/LDAP not supported yet)
-XCOMM - user must have proper credentials ("SecureRPC")
-XCOMM - script must be able to "guess" the UID of the Xserver
-XCOMM
-XCOMM Advantages:
-XCOMM - User may allow other users to gain access via
-XCOMM % xhost +jigsaw@
-XCOMM instead of moving 128bit cookies
-XCOMM
-XCOMM Known bugs:
-XCOMM - Was not tested on Linux since several months
-
-/* Avoid problems with CPP processing */
-#undef unix
+#!/bin/ksh
+# X11 MIT-MAGIC-COOKIE to SUN-DES-1 auth.
+# this script switched the current Xservers authentification
+# (usually MIT-MAGIC-COOKIE-1) to SUN-DES-1.
+#
+#
+# Copyright 2002-2004 by Roland Mainz <roland.mainz@nrubsig.org>.
+#
+#
+# Requirements:
+# - Solaris/Linux/AIX running as NIS+ client (YP/LDAP not supported yet)
+# - user must have proper credentials ("SecureRPC")
+# - script must be able to "guess" the UID of the Xserver
+#
+# Advantages:
+# - User may allow other users to gain access via
+# % xhost +jigsaw@
+# instead of moving 128bit cookies
+#
+# Known bugs:
+# - Was not tested on Linux since several months
+
umask 077
-XCOMM force POSIX binaries
+# force POSIX binaries
export PATH=/usr/xpg4/bin:/usr/bin:/usr/dt/bin:/usr/openwin/bin
-XCOMM debug
+# debug
alias xxdebug=true
-XCOMM alias xxdebug=
+# alias xxdebug=
-XCOMM get full qualified domain name
+# get full qualified domain name
getFQDN()
{
- getent hosts ${1} | awk "{print \$2}" -
+ getent hosts ${1} | awk "{print \$2}" -
}
user2netname()
@@ -47,7 +45,7 @@ user2netname()
netname=unix.$HOSTNAME@$DOMAINNAME
fi
- # BUG: SecureRPC isn't limited to NIS+
+ # BUG: SecureRPC isn't limited to NIS+
# (but there is no "getent publickey ...") ...
# ToDo:
# - YP name is "publickey.byname"
@@ -58,19 +56,19 @@ user2netname()
echo "user ${UID} has no entry in cred.org_dir" >&2
return 1
fi
-
+
return 0
-}
+}
-XCOMM pid to username
+# pid to username
getUserOfPID()
{
ps -p $1 -o user,pid | awk "NR != 1 {print \$1}" -
}
-XCOMM test if we can access $DISPLAY via SUN-DES-1 auth. using a temporary
-XCOMM Xauthority file
+# test if we can access $DISPLAY via SUN-DES-1 auth. using a temporary
+# Xauthority file
dry_run()
{
(
@@ -79,7 +77,7 @@ dry_run()
if [ "$XAUTHORITY" = "" ] ; then
export XAUTHORITY=~/.Xauthority
fi
-
+
ORIGINAL_XAUTHORITY="${XAUTHORITY:-~/.Xauthority}"
TMP_XAUTHORITY=/tmp/mit-cookie2sun-des-1tmpxauth_${LOGNAME}_${RANDOM}.xauth
export XAUTHORITY="$TMP_XAUTHORITY"
@@ -88,29 +86,29 @@ dry_run()
(echo "add $displayhost/unix:$displaynum SUN-DES-1 $principal" ;
echo "add $displayhost:$displaynum SUN-DES-1 $principal"
) | xauth source -
-
+
# check if a sample X11 app. (/usr/openwin/bin/xset) can access Xserver...
- if ! xset q 2>/dev/null 1>/dev/null ; then
+ if ! xset q 2>/dev/null 1>/dev/null ; then
# clean-up
rm -f "$TMP_XAUTHORITY"
return 1
fi
rm -f "$TMP_XAUTHORITY"
-
+
return 0
)
}
-XCOMM main
+# main
HOSTNAME=$(hostname)
FQDN=$(getFQDN $HOSTNAME)
-XCOMM be sure that DISPLAY contains the host name
-XCOMM BUGs:
-XCOMM - this does _not_ catch non-tcp connections (like DECnet).
-XCOMM - this may not work with IPv6 addresses
+# be sure that DISPLAY contains the host name
+# BUGs:
+# - this does _not_ catch non-tcp connections (like DECnet).
+# - this may not work with IPv6 addresses
displayhost=${DISPLAY%:*}
displaynum=$(x=${DISPLAY#*:}; echo ${x%.*})
if [ "$displayhost" == "" -o "$displayhost" == "localhost" ] ; then
@@ -120,45 +118,45 @@ if [ "$displayhost" == "" -o "$displayhost" == "localhost" ] ; then
fi
-XCOMM grant access for current user and for user root
-XCOMM (a bug in /usr/dt/bin/dtaction requires this for user "root", too -
-XCOMM Solaris 7/8 dtaction runns setuid root and opens a display connection
-XCOMM before chaning the EUID to the "destination uid"... ;-( ).
+# grant access for current user and for user root
+# (a bug in /usr/dt/bin/dtaction requires this for user "root", too -
+# Solaris 7/8 dtaction runns setuid root and opens a display connection
+# before chaning the EUID to the "destination uid"... ;-( ).
xhost +${LOGNAME}@ +$(user2netname root)
-XCOMM get X server principal(=user)
-XCOMM this may fail if user isn't local
-XCOMM unfortunately we cannot get the Xserver PID with a simply API - we
-XCOMM have to "guess" in this case. "pgrep" creates a list of PIDs which may
-XCOMM match. Then we create a list of all matching "principals" and test
-XCOMM them - item by item...
-XCOMM ... step 1: Create list of principals
+# get X server principal(=user)
+# this may fail if user isn't local
+# unfortunately we cannot get the Xserver PID with a simply API - we
+# have to "guess" in this case. "pgrep" creates a list of PIDs which may
+# match. Then we create a list of all matching "principals" and test
+# them - item by item...
+# ... step 1: Create list of principals
principal_list="" # you can add "most common" principals here...
fallback_principal_list="" # you can add "fallback" principals here
# (for example, principals for Xterminals (where
- # the Xserver always runns under the same UID)
+ # the Xserver always runns under the same UID)
# which use SUN-DES-1)
-for i in $(pgrep -f ".*X.* :$displaynum*") ; do
+for i in $(pgrep -f ".*X.* :$displaynum*") ; do
principal_list="$(user2netname `getUserOfPID $i`) ${principal_list}"
done
xxdebug echo "principal_list=${principal_list}"
-XCOMM ... step 2: Test the list of principals
-for PRINCIPAL in ${principal_list} ${fallback_principal_list} ; do
+# ... step 2: Test the list of principals
+for PRINCIPAL in ${principal_list} ${fallback_principal_list} ; do
# make a "dry run" and test whether we really can use SUN-DES-1 auth.
# for this display using the given principal
if dry_run "${PRINCIPAL}" ; then
# remove old MIT-MAGIC-COOKIES and insert SUN-DES-1 cookies
# Users ~/.Xauthority _must_ be changed in _one_ step to avoid
- # possible race conditions when switching auth. on a "live"
+ # possible race conditions when switching auth. on a "live"
# $DISPLAY...
(echo "remove $displayhost/unix:$displaynum" ;
echo "remove $displayhost:$displaynum" ;
echo "add $displayhost/unix:$displaynum SUN-DES-1 $PRINCIPAL" ;
echo "add $displayhost:$displaynum SUN-DES-1 $PRINCIPAL"
) | xauth source -
-
+
# success.
xxdebug echo "success."
exit 0
@@ -166,9 +164,9 @@ for PRINCIPAL in ${principal_list} ${fallback_principal_list} ; do
done
echo "${0}: failure; could not establish SUN-DES-1 auth. on $DISPLAY" >&2
-xhost -$LOGNAME@ -$(user2netname root)
+xhost -$LOGNAME@ -$(user2netname root)
-XCOMM failure.
+# failure.
xxdebug echo failure.
exit 1
-XCOMM EOF.
+# EOF.