II.d.4 Running from Wollongong's INET_SERVERS --------------------------------------------- (Chris Petroff, University of Oklahoma Computing Services, ) Define a system logical GOPHER_CONFIG, or GOPHER_CONFIG# where # is the port number (for a multiple server environment), to point to the server's configuration file. For example: $ DEFINE/SYSTEM/EXEC/TRAN=CONCEAL/NAME=NO_ALIAS/NOLOG - GOPHER_CONFIG70 GOPHER_ROOT:[_BIN]_GOPHER70 In the configuration file (or each configuration file for a server to be started by the INET_SERVERS), add or modify the following items. Inetd: TRUE DataDirectory: GOPHER_ROOT:[000000] ScratchDir: GOPHER_ROOT:[_SCRATCH] SpawnInit: GOPHER$ROOT:[_BIN]GOPHER_SPAWN_INIT.COM Where GOPHER_ROOT:[000000] is the root of the data directory for the server; note that this *could* be different for each server, but need not be. GOPHER_ROOT:[_SCRATCH] is a directory which is fully accessible to the authorization under which the server using this configuration file will run (RWED). The directory will receive temporary and scratch files for the server and any subprocesses it spawns. Note that a server started by the INET_SERVERS will not have the system logical SYS$SCRATCH: defined, so a different value with an explicit device and directory path will be required. GOPHER$ROOT:[_BIN]GOPHER_SPAWN_INIT.COM is a file in a directory to which the authorization running the server has read and execute access. Whenever a server started by INET_SERVERS spawns a subprocess, the sub-process will execute the file to define symbols and so forth. Note the use of GOPHER$ROOT:[_BIN] is specific to the site aardvark.ucs.uoknor.edu; in no way should you feel obligated to use the same device and directory tree specification. Customize, as needed, the GOPHER_SPAWN_INIT.COM file. It should at minimum contain the following lines to insure appropriate operation of GREP searches (customize where your copy of EGREP resides, of course). Since servers started by INET_SERVERS go through OpenVMS LOGIN but do *NOT* perform the normal SYLOGIN.COM functions, this command file replaces the minimum features required there. Note also that it is not sufficient to define SYS$SCRATCH in this file; the server requires scratch space prior to any spawned tasks, so the scratch directory must be defined in the configuration file. $ V = F$VERIFY(0) $ ON ERROR THEN CONTINUE $ EGREP :== $x:EGREP $ EXIT Login to the SYSTEM account and perform the following steps: Note: the use of GOPHER$ROOT:[_BIN] is specific to the site aardvark.ucs.uoknor.edu; in no way should you feel obligated to use the same device and directory tree specification. 1. Copy GOPHER$ROOT:[_BIN]GOPHERD.EXE to twg$tcp:[netdist.serv] 2. Add the following block to twg$tcp:[netdist.etc]servers.dat # GOPHERD (VMSGopher-server) service-name GOPHER program TWG$TCP:[NETDIST.SERV]GOPHERD socket-type SOCK_STREAM socket-options SO_ACCEPTCONN | SO_KEEPALIVE socket-address AF_INET , 70 working-set 200 maxservers 10 INIT TCP_Init LISTEN TCP_Listen CONNECTED TCP_Connected SERVICE Run_Program Note: 'maxservers 10' is only a suggested setting. For conservative systems, 'maxservers 5' might be more appropriate. 3. Add the following line to twg$tcp:[netdist.etc]services. gopher 70/tcp Gopher_Server 4. Stop/Id on the INET_SERVERS process and restart it by running @twg$tcp:[netdist.misc]inetserv NOTE: Addendum for Wollongong's PATHWAYS 1.x We are still using the archaic Wollongong TCP/IP Version 5.1 (!) due to the agony involved in updating local help files for 5.2 or Pathways 1.0. This should be corrected soon, but as a result of this wee have no working experience with Pathways. The following information from Robert Jackson for gottcha's under Pathways is all I am aware of right now: >Date: Wed, 17 Nov 93 14:22:15 EST >From: JACKSON@CALL.TESC.EDU >Subject: RE: test. >To: CHRIS@barrister.ucs.uoknor.edu > >Hi Chris, let me thank you again for all the help the other day in trying >to get my VMS Gopher Server up. I found out a couple of things after we >talked >1: Wollongong forgot to send me the newest API's with this new version of > TCP/IP(Pathway). So they are sending them to me within the next day > or so. But that is not what was keeping the port (70) from answering. >2: They also did not mention that in the default configuration of the > Pathway software they impliment the Netcontrol routines and use the > netcontrol.dat file for security for the different ports and services. > Even though I saw the service listening on the port, the netcontrol did > not have that port or service activated. So I ran Netcontrol and > issued the ADD/SERVICE command. This added the service and allowed the > port to answer. The server just needs to be re-compiled with the new > API's. It now states in the log file that it can't bind the port > because the address is being used by something else. Wollongong said > that would be fixed after I upgrade (with the new API Saveset for > Pathways). > >So it look like the server will soon be a reality. I will drop you a note >when we are finaly up and running.. > >Robert Jackson >System Admin. >Jackson@call.tesc.edu So added steps for Pathways: 5. run twg$tcp:[NETDIST.ETC]NETCONTROL and add the gopher service by: ADD/SERVICES=gopher Where 'gopher' matches the entry in the twg$tcp:[NETDIST.ETC]SERVICES. file for the gopher server. 6. Make sure you have the new API Saveset Distribution installed and compile (or recompile if nessesary) the gopher server. When a client attempts to connect to the configured port, INET_SERVERS should start a fresh copy of the server to service that client's request. Regardless of how long that copy of the server takes to process the request (and if the server survives the request ;-), other clients will not be obstructed unless there are already 'maxservers' number of gopherd processes running where maxservers is defined in the twg$tcp:[NETDIST.ETC]SERVERS.DAT entry for the gopher server. Note that servers started by INET_SERVERS run under the SYSTEM authorization, and tend to be high-privileged users. The server has access to all privileges defined for the INET-SERVERS daemon process as defined in the twg$tcp:[netdist.misc]inetserv.com file but discards all the dangerous privileges it can after binding to the connected socket. .