home *** CD-ROM | disk | FTP | other *** search
- go4gw version 1.01
- ------------------
-
- go4gw is a daemon which can handle many different gopher gateways
- written in perl. It should be started from inetd.
-
- Bugs to gopher@boombox.micro.umn.edu
-
- INSTALLATION
- ------------
-
- You need to put the following line in /etc/services:
-
- go4gw 4320/tcp
-
- And the following line in /etc/inetd.conf (depending on your system type):
-
- go4gw stream tcp nowait nobody /usr/local/etc/go4gw go4gw
-
- The go4gw script has a few variables you might want to change:
-
- $Gconf_file = "/usr/local/etc/go4gw.conf"; # configuration file
- $Gport=4320; # port THIS daemon is running on
- $Ghost="Slapshot.Stanford.EDU"; # host THIS daemon is running on
-
- You need to set Gport to the same port as in /etc/services, and Ghost to
- your fully qualified host name.
-
- Why aren't these two auto-magically figured out?
- Mainly for speed, but also because some `hostname` commands don't
- have the domain, some do, etc. Its easier just to define them here.
- Since all the other gateways are run in the context of this perl script,
- the gateways don't need any of this stuff in them.
-
- Gconf_file should be set to the location of your go4gw.conf file. The
- format of this file is:
-
- #
- # format
- # gateway : user : module : gopher title
- #
- whois:-2:/usr/local/etc/g2whois:Whois:
- nntp:-2:/usr/local/etc/g2nntp:USENET News:
- webster:-2:/usr/local/etc/g2webster:Webster:
- #
-
- Where gateway is the name of the gateway, user is either a numeric uid
- or name, module is the name of the perl script that go4gw will dynamically
- load, and title is the title that will show up in the gopher menu if go4gw
- is sent the string "". If the gateway doesn't take an empty string, the title
- should be "" and it won't show up in the menu. By writing all your gateways so
- they take a "" command, you can point a link at the go4gw daemon with
- path set to "" and get a menu of all your gateways. The menu order will
- be the same order as the go4gw.conf file.
-
- Once you've done all this configuration you'll want to try HUP inetd.
- Then you can test it out by running a gopher client to the newly
- created port..
-
-
- Writing go4gw gateways
- -----------------------
- go4gw gateways need to a follow a few simple conventions:
-
- You need to have a routine called "${gateway}_main", where gateway
- is the name of your gateway. For example, if your gateway is called
- whois, then you need:
-
- whois_main {
- local($_) = @_;
- ...
- }
-
- In your module (/usr/local/etc/g2whois for example).
-
- Your *_main will be passed the string sent to go4gw WITHOUT your gateway
- prefix. For example, if someone sends the following string to go4gw:
-
- nntp ls su.jobs
-
- Then go4gw will call &nntp_main("ls su.jobs"), after loading g2nntp.
-
- You should define any variables that users might have to change at the
- front of your script, and prefix them with your gateway name.
-
- When your gateway has to return selector string, hostname, and port, it
- should use the following variables:
-
- $Ggw -> name of this gateway
- $Gport -> port this gateway is running on
- $Ghost -> host this gateway is running on
-
- For example, nntp might do the following:
-
- &Greply("0$Subject\t$Ggw article $group $article\t$Ghost\t$Gport");
-
- So when the user selects this they will send:
-
- nntp article su.jobs 104
-
- Back to the go4gw daemon, which will figure out that "article su.jobs 104"
- needs to get passed to g2nntp.
-
- The following variables and routines are defined in go4gw, and can be used
- by gateways:
-
- $GnotServer You can define this in perl scripts that want to include
- the go4gw script without running the server. See the
- g2nntp_groups script.
-
- $Ggw Can be used by gateway routines to determine their gateway
- name.
-
- $Gport Can be used by gateway routines to determine which port go4gw
- is running on.
-
- $Ghost Can be used by gateway routines to determine which host go4gw
- is running on.
-
- GSERVER File handle which is opened when GopenServer is called.
-
- &Greply(reply) Sends string back to gopher client with \r\n on the end.
-
- &Gabort(mess) Sends error message back to gopher client with
- "3mess\r\n.\r\n" on end.
-
- &GopenServer(server,port)
- Opens TCP port at server or calls Gabort.
-
- &GcloseServer Closes server.
-
- $Gdebug define this to turn on debugging in &Gsend and &Grecv.
-
- &Gsend(cmd) Sends "cmd\r\n" to GSERVER.
-
- $_ = &Grecv; Gets response from GSERVER and strips \r and \n.
-
- &Gsorry Sends message about data that cannot be delivered due to
- restrictions.
-
- Other "standard" routines and variables may be added. They will start
- with a 'G'.
-
- Roland
-