Go to the previous, next section.

Telnet Interface

@everyfooting Author: ensley // Editor: rootd // Texinfo: ensley @| @| 3 December 1994

General Overview and I/O

This interface allows users to login to an archie server directly and interactively request searches. A login with no password will be created on the archie server allowing people to login. The telnet interface will be the shell (given in the /etc/passwd file) of the remote user. Since there is no "remote site client", the telnet interface/shell must keep track of all environment variables.

Since we are allowing the general public to login without identification or a password, this interface is a potential security risk. Care must be taken to make certain that users are limited to archie functionality, and cannot break out of the archie-shell and gain unauthorized privileges. As a minimum, the "archie-user" must not own any files (designers note: will having different users owning different archie processes mess up our signal passing mechanism--this must be tested and dealt with if necessary).

One telnet interface will be spawned for each remote user.

For the users convenience and pleasure, this new generation telnet-client has emacs command-line editing and history keys built in.

Data Structure overview

Each user definable environment variable corresponds to a variable in the source code. For example "maxhits" is a integer variable interactively set by the user of the telnet interface. So this would correspond to an integer variable called "maxhits" in the source code. The following are user changeable variables, their types, and their default values (see User Manual for in-depth description of options):

Name            Type            Default Value
maxhits         integer         100
maxhitspm       integer         0
maxmatch        integer         0
autologout      integer         60
compress        string          ""
language        string          "english"
mailto          string          ""
match-domain    string          ""
match-path      string          ""
output-format   string          "verbose"
search          string          "sub"
server          string          "localhost"
sortby          string          "none"
pager           boolean         0
status          boolean         1

Algorithm overview

The telnet interface is designed so that adding a new command is very simple. Each command a user can enter has a corresponding subroutine. Any command that takes one or more arguments will have one only one argument in it's corresponding subroutine. This argument is a string that contains one or more of the arguments. For example, the user types the command "set maxhits 500". The only parsing that is needed by the main subroutine is parsing the command, in this case "set". Then the corresponding subroutine is called like this: set("maxhits 500"). Each subroutine is responsible for parsing it's argument into separate strings and determining validity.

The following commands are currently supported:

prog 
find 
help
list
mail
manpage
domains
motd
server
set
show
site
unset
version
whatis
stty
bye
quit

Go to the previous, next section.