[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

8.1 Woes: X-Server; CDROM net access from 3600s.



    Date: Fri, 07 Jun 91 07:22:34 EDT
    From: rjb1@gte.com

    Second: probably a simple question, as we've never used the Symbolics
    X Server before.  Got it installed on a MacIvory, namespace entries
    with X-WINDOW-SYSTEM TCP X-WINDOW-SYSTEM for both the MacIvory and
    some YoonixBox, which is on the same "Secure Subnet" of the Site.
    Select-<Square>. Start Server.  Now, on the other machine:

     YoonixBox% xterm -display 132.197.8.217:0.0
     Xlib:  connection to "132.197.8.217:0.0" refused by server
     Xlib:  Client is not authorized to connect to server.
     Error: Can't Open display

    This one I did try to debug a bit.  Managed to trace-break some
    X-Server connection routine on the Symbolics side, and it is getting
    called at an appropriate time, so the connection request is getting
    over the net, but the Symbolics is denying the connection.  (Nasty
    stuff, though, this X Server code; even the debugger seems to have
    problems with this sorta transliterated C.)

    I suspect that I'm just missing something here that authorizes
    clients.  Some old X hand (with better documentation?) might know the
    answer.  (I tried logging out of the Symbolics, which used to help
    with starting Symbolics CLX clients, but doesn't appear relevant here.)

In Genera 8.0, the X server used the Secure Subnet mechanism.  The 8.1
version makes use of the specific host list manipulated by the Unix
"xhost" command.  Unfortunately, it defaults to authorizing only the
local host, and there's no nice Genera interface to updating the host
list!

I think the following should work.  It's a CLX equivalent to the xhost
command (it currently only operates on the local host, but it could
easily be extended to take a server name).  I'm not actually running 8.1
here, so I can't test it.  It assumes you have CLX loaded.

(defun allow-x-client (hostname &key (address-family :internet)) 
  (let ((display nil)
	(aborting t))
    (unwind-protect
	(progn
	  (setq display (xlib:open-display net:*local-host*))
	  (xlib:add-access-host display hostname address-family)
	  (setq aborting nil))
      (when display (xlib:close-display display :abort aborting)))))

Actually, for just controlling the local host, the following may be even
better:

(cp:define-command (com-enable-x-client-host
		     :command-table "User"
		     :provide-output-destination-keyword nil) 
    ((host 'net:host))
   (setf (gethash host (x-server-lisp::x-server-authorized-hosts
			 x-server-lisp::*x-server-data*))
	 t))

(cp:install-command 'x-server-lisp::x-server-program 'com-enable-x-client-host "Enable Client Host") 

(cp:define-command (com-disable-x-client-host
		     :command-table "User"
		     :provide-output-destination-keyword nil) 
    ((hostname 'net:host))
   (remhash host (x-server-lisp::x-server-authorized-hosts
		   x-server-lisp::*x-server-data*)))

(cp:install-command 'x-server-lisp::x-server-program 'com-disable-x-client-host "Disable Client Host") 

You could add them to the menu if you want.

Another interesting possibility that I've seen mentioned on the net
would be for the authorization code to pop up a query for the user.
This should be trivial to add to the Genera version (this part of the
server is all in Lisp).  Meta-dot
X-SERVER-LISP::X-SERVER-CLIENT-AUTHORIZED and play around with it.

                                                barmar