diff etc/gnuserv.1 @ 428:3ecd8885ac67 r21-2-22

Import from CVS: tag r21-2-22
author cvs
date Mon, 13 Aug 2007 11:28:15 +0200
parents
children abe6d1db359e
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/etc/gnuserv.1	Mon Aug 13 11:28:15 2007 +0200
@@ -0,0 +1,294 @@
+.TH GNUSERV 1 "" "XEmacs Server"
+.UC 4
+.SH NAME
+gnuserv, gnuclient \- Server and Clients for XEmacs
+.SH SYNOPSIS
+.B gnuclient
+[-nw] [-display display] [-q] [-v] [-l library] [-batch] [-f function] [-eval form] 
+[-h hostname] [-p port] [-r remote-pathname] [[+line] file] ...
+.br
+.B gnudoit [-q] 
+form
+.br
+.B gnuserv
+.br
+.B gnuattach   
+Removed as of gnuserv 3.x
+.SH DESCRIPTION
+
+.PP
+\fIgnuclient\fP allows the user to request a running XEmacs process to
+edit the named files or directories and/or evaluate lisp forms.
+Depending on your environment, it can be an X frame or a TTY frame.
+One typical use for this is with a dialup connection to a machine on
+which an XEmacs process is currently running.
+.PP
+\fIgnudoit\fP is a shell script frontend to ``gnuclient -batch -eval form''.
+Its use is depreciated. Try to get used to calling gnuclient directly.
+.PP
+\fIgnuserv\fP is the server program that is set running by XEmacs to
+handle all incoming and outgoing requests. It is not usually invoked
+directly, but is started from XEmacs by loading the \fIgnuserv\fP
+package and evaluating the Lisp form (gnuserv-start).
+.PP
+\fIgnuattach\fP no longer exists. Its functionality has been replaced by
+\fIgnuclient -nw\fP.
+.SH OPTIONS
+.PP 
+\fIgnuclient\fP supports as much of the command line options of Emacs as
+makes sense in this context. In addition it adds a few of its own. 
+.br
+Options with long names can also be specified using a double
+hyphen instead of a single one.
+.TP 8
+.BI \-nw
+This option makes \fIgnuclient\fP act as a frontend such that XEmacs
+can attach to the current TTY. XEmacs will then open a new TTY frame.
+The effect is similar to having started a new XEmacs on this TTY with
+the ``-nw'' option. It currently only works if XEmacs is running on
+the same machine as gnuclient. This is the default if the `DISPLAY'
+environment variable is not set.
+.TP 8
+.BI \-display " display, " \--display " display" 
+If this option is given or the `DISPLAY' environment variable is set
+then gnuclient will tell XEmacs to edit files in a frame on the
+specified X device.
+.TP 8
+.BI \-q
+This option informs \fIgnuclient\fP to exit once connection has been
+made with the XEmacs process.  Normally \fIgnuclient\fP waits until
+all of the files on the command line have been finished with (their
+buffers killed) by the XEmacs process, and all the forms have been
+evaluated.
+.TP 8
+.BI \-v
+When this option is specified \fIgnuclient\fP will request for the
+specified files to be viewed instead of edited.
+.TP 8
+.BI \-l " library"
+Tell Emacs to load the specified library.
+.TP 8
+.BI \-batch
+Tell Emacs not to open any frames. Just load libraries and evaluate
+lisp code.  If no files to execute, functions to call or forms to eval 
+are given using the
+.BR \-l ,
+.BR \-f ,
+or
+.B \-eval
+options, then forms to eval are read from STDIN.
+.TP 8
+.BI \-f " function," 
+Make Emacs execute the lisp function.
+.TP 8
+.BI \-eval " form"
+Make Emacs execute the lisp form.
+.TP 8
+.BI \-h " hostname"
+Used only with Internet-domain sockets, this option specifies the host
+machine which should be running \fIgnuserv\fP. If this option is not
+specified then the value of the environment variable GNU_HOST is used
+if set. If no hostname is specified, and the GNU_HOST variable is not
+set, an internet connection will not be attempted. N\.B.:
+\fIgnuserv\fP does NOT allow internet connections unless XAUTH
+authentication is used or the GNU_SECURE variable has been specified
+and points at a file listing all trusted hosts. (See SECURITY below.)
+
+.br
+Note that an internet address may be specified instead of a hostname
+which can speed up connections to the server by quite a bit,
+especially if the client machine is running YP.
+
+.br
+Note also that a hostname of \fBunix\fP can be used to specify that
+the connection to the server should use a Unix-domain socket (if
+supported) rather than an Internet-domain socket.
+.TP 8
+.BI \-p " port"
+Used only with Internet-domain sockets, this option specifies the
+service port used to communicate between server and clients.  If this
+option is not specified, then the value of the environment variable
+GNU_PORT is used, if set, otherwise a service called ``gnuserv'' is
+looked up in the services database.  Finally, if no other value can be
+found for the port, then a default port is used which is usually 21490
++ uid.
+.br
+Note that since \fIgnuserv\fP doesn't allow command-line options, the port for
+it will have to be specified via one of the alternative methods.
+.TP 8
+.BI \-r " pathname"
+Used only with Internet-domain sockets, the pathname argument may be
+needed to inform XEmacs how to reach the root directory of a remote
+machine.  \fIgnuclient\fP prepends this string to each path argument
+given.  For example, if you were trying to edit a file on a client
+machine called otter, whose root directory was accessible from the
+server machine via the path /net/otter, then this argument should be
+set to '/net/otter'.  If this option is omitted, then the value is
+taken from the environment variable GNU_NODE, if set, or the empty
+string otherwise.
+.TP 8
+.BI "[+n] file"
+This is the path of the file to be edited.  If the file is a directory, then
+the directory browsers dired or monkey are usually invoked instead.
+The cursor is put at line number 'n' if specified.
+
+.SH SETUP
+\fIgnuserv\fP is packaged standardly with recent versions of XEmacs.
+Therefore, you should be able to start the server simply by evaluating
+the XEmacs Lisp form (gnuserv-start), or equivalently by typing
+`M-x gnuserv-start'.
+
+.SH CONFIGURATION
+The behavior of this suite of program is mostly controlled on the lisp 
+side in Emacs and its behavior can be customized to a large extent.
+Type `M-x customize-group RET gnuserv RET' for easy access. More
+documentation can be found in the file `gnuserv.el'
+
+.SH EXAMPLE
+.RS 4
+gnuclient -q -f mh-smail
+.br
+gnuclient -h cuckoo -r /ange@otter: /tmp/*
+.br
+gnuclient -nw ../src/listproc.c
+.RE
+.br
+
+.br
+More examples and sample wrapper scripts are provided in the
+etc/gnuserv directory of the Emacs installation.
+
+
+.SH SYSV IPC
+SysV IPC is used to communicate between \fIgnuclient\fP and
+\fIgnuserv\fP if the symbol SYSV_IPC is defined at the top of
+gnuserv.h. This is incompatible with both Unix-domain and
+Internet-domain socket communication as described below. A file called
+/tmp/gsrv??? is created as a key for the message queue, and if removed
+will cause the communication between server and client to fail until
+the server is restarted.
+.SH UNIX-DOMAIN SOCKETS
+A Unix-domain socket is used to communicate between \fIgnuclient\fP
+and \fIgnuserv\fP if the symbol UNIX_DOMAIN_SOCKETS is defined at the
+top of gnuserv.h.  A file called /tmp/gsrvdir????/gsrv is created for
+communication and if deleted will cause communication between server
+and client to fail.  Only the user running gnuserv will be able to
+connect to the socket.
+.SH INTERNET-DOMAIN SOCKETS
+Internet-domain sockets are used to communicate between
+\fIgnuclient\fP and \fIgnuserv\fP if the symbol
+INTERNET_DOMAIN_SOCKETS is defined at the top of gnuserv.h. Both
+Internet-domain and Unix-domain sockets can be used at the same
+time. If a hostname is specified via -h or via the GNU_HOST
+environment variable, \fIgnuclient\fP establish connections using an
+internet domain socket. If not, a local connection is attempted via
+either a unix-domain socket or SYSV IPC.
+.SH SECURITY
+Using Internet-domain sockets, a more robust form of security is
+needed that wasn't necessary with either Unix-domain sockets or SysV
+IPC. Currently, two authentication protocols are supported to provide
+this: MIT-MAGIC-COOKIE-1 (based on the X11 xauth(1) program) and a
+simple host-based access control mechanism, hereafter called
+GNUSERV-1. The GNUSERV-1 protocol is always available, whereas support
+for MIT-MAGIC-COOKIE-1 may or may not have been enabled (via a #define
+at the top of gnuserv.h) at compile-time.
+.PP
+\fIgnuserv\fP, using GNUSERV-1, performs a limited form of access
+control at the machine level. By default no internet-domain socket is
+opened.  If the variable GNU_SECURE can be found in \fIgnuserv\fP's
+environment, and it names a readable filename, then this file is
+opened and assumed to be a list of hosts, one per line, from which the
+server will allow requests. Connections from any other host will be
+rejected. Even the machine on which \fIgnuserv\fP is running is not
+permitted to make connections via the internet socket unless its
+hostname is explicitly specified in this file.  Note that a host may
+be either a numeric IP address or a hostname, and that
+.I any
+user on an approved host may connect to your gnuserv and execute arbitrary
+elisp (e.g., delete all your files).
+If this file contains a lot of
+hostnames then the server may take quite a time to start up.
+.PP
+When the MIT-MAGIC-COOKIE-1 protocol is enabled, an internet socket
+\fIis\fP opened by default. \fIgnuserv\fP will accept a connection from
+any host, and will wait for a "magic cookie" (essentially, a password)
+to be presented by the client. If the client doesn't present the
+cookie, or if the cookie is wrong, the authentication of the client is
+considered to have failed. At this point. \fIgnuserv\fP falls back to
+the GNUSERV-1 protocol; If the client is calling from a host listed in
+the GNU_SECURE file, the connection will be accepted, otherwise it
+will be rejected. 
+.TP 4
+.I  Using MIT-MAGIC-COOKIE-1 authentication
+When the \fIgnuserv\fP server is started, it looks for a cookie
+defined for display 999 on the machine where it is running. If the
+cookie is found, it will be stored for use as the authentication
+cookie. These cookies are defined in an authorization file (usually
+~/.Xauthority) that is manipulated by the X11 xauth(1) program. For
+example, a machine "kali" which runs an emacs that invokes
+\fIgnuserv\fP should respond as follows (at the shell prompt) when set
+up correctly.
+.PP
+.RS 8
+kali% xauth list
+.br
+GS65.SP.CS.CMU.EDU:0  MIT-MAGIC-COOKIE-1  11223344
+.br
+KALI.FTM.CS.CMU.EDU:999  MIT-MAGIC-COOKIE-1  1234
+.RE
+.PP
+.RS 4
+In the above case, the authorization file defines two cookies. The
+second one, defined for screen 999 on the server machine, is used for
+gnuserv authentication. 
+.PP
+On the client machine's side, the authorization file must contain an
+identical line, specifying the 
+.I server's 
+cookie. In other words, on a machine "foobar" which wishes to connect
+to "kali,"  the `xauth list' output should contain the line:
+.PP
+.RS 4
+KALI.FTM.CS.CMU.EDU:999  MIT-MAGIC-COOKIE-1  1234
+.RE
+.PP
+For more information on authorization files, take a look at the
+xauth(1X11) man page, or invoke xauth interactively (without any
+arguments) and type "help" at the prompt. Remember that case in the
+name of the authorization protocol (i.e.`MIT-MAGIC-COOKIE-1') 
+.I is
+significant!
+.RE
+
+
+.SH ENVIRONMENT
+.PP
+.TP 8
+.B DISPLAY
+Default X device to put edit frame.
+
+.SH FILES
+.PP
+.TP 8
+.B /tmp/gsrv???
+(SYSV_IPC only)
+.TP 8
+.B /tmp/gsrvdir???/gsrv
+(unix domain sockets only)
+.TP 8
+.B ~/.emacs
+XEmacs customization file, see xemacs(1).
+.SH SEE ALSO
+.PP
+.TP 8
+xauth(1X11), Xsecurity(1X11), gnuserv.el
+.SH BUGS
+.PP 
+NULs occurring in result strings don't get passed back to gnudoit properly.
+
+.SH AUTHOR.
+Andy Norman (ange@hplb.hpl.hp.com), based heavily upon
+etc/emacsclient.c, etc/server.c and lisp/server.el from the GNU Emacs
+18.52 distribution.  Various modifications from Bob Weiner (weiner@mot.com),
+Darrell Kindred (dkindred@cmu.edu), Arup Mukherjee (arup@cmu.edu), Ben
+Wing (ben@xemacs.org) and Hrvoje Niksic (hniksic@xemacs.org).