Oberon/ETH Oberon/Tutorial/Internet

Guide to Internet [ Text | Contents | Index | Master index ]

Tutorial objective
So much has been said and written about the Internet that it would be vain to offer yet another "ultimate and complete reference material for accessing the Internet". Enter any bookstore carrying computer literature and take a look at the 'Internet' bookshelve(s): you will quickly gain the impression that Internet is very fashionable and in big demand. From the sheer size of some of the books you also could infer that Internet is difficult to learn and to use, which is after all not so wrong, if you have to master all the Internet services with Unix commands.

The declared objective is thus to lead you through a hands-on training in using the tools at hand, supported by clear and crisp descriptions of the principles of operation and definitions of the commands used. Very little time will be spent in describing and defining the various Internet services: books already contain abundant and suitable material. In the end, you should be convinced that Internet is easy to use - with Oberon of course! Oberon is not the only system including integrated programs for Internet connection as a free bonus, but it is different.

To start, take a look at the table of contents, read through until you find what you need, and select that subject. There is a lot to explore. Have fun!

Estimated time: approximately 4 hours (for the lot). To be consumed piecemeal only.

Internet Connection
This release of Oberon System 3 is Internet ready, i.e. under the provision that a few prerequisites are met, the system extensions provided with this release and the tools and documentation included, allow you to access the Internet. The Internet is a network of computers that spans the globe. The participants in the Internet include universities, major corporations, non-profit organizations, and individuals who want to acquire, distribute and share information.

Prerequisites
Oberon for DOS: A packet driver for your network hardware (typically Ethernet) must be installed in your config.sys.

In addition, you have to create a text file called "Hosts.Text" with the following lines:
 * 255.255.255.192   netmask
 * 129.132.134.1   gwy:lillian-gw    lillian-gw.ethz.ch
 * 129.132.1.11   dns:dns1    dns1.ethz.ch
 * 129.132.134.9   hst:pankow    pankow.inf.ethz.ch

where the prefixes gwy:, dns: and hst: specify respectively the gateway, a domain name server and the local host. The entries netmask and domain specify the default domain and the subnet specific netmask. Netmask, gateway and local host have to be specified by the user. Domain, netmask and domain name server may be omitted. In that case, the default settings are ethz.ch for domain, 129.132.1.11 and 129.132.1.12 for ETH domain name servers. The actual netmask will be queried from the gateway by the ICMP protocol.

Limitation: the maximum number of domain name servers is four!

Oberon for Windows: A WinSocket implementation for Windows is required to use the Internet tools. A shareware implementation called Trumpet is available from most FTP servers. After installing WinSockets, you need to add a new section called NetSystem to your "oberon.ini" file (with the appropriate changes made for your machine details):


 * [NetSystem]
 * HostName=machine.domain
 * HostIP=255.255.255.255

HostName is the name of your machine and HostIP its IP address. You may leave both entries away so that the system tries to figure this out itself (this is the best way of doing it). Use the command
 * System.State NetSystem

to find out if HostName and HostIP is set. If not, you must add HostName and HostIP entries to the ini file. Often, just adding HostName is enough for the system to find out the HostIP entry.

MacOberon: Requires MacTCP from Apple or System >= 7.5 which includes MacTCP to use the Internet tools.

Finally, if you are new to Internet it would be a good idea to learn more about it by reading one of the many books published or articles in the computer press.

Internet the easy way
How about reading an article in a worldwide discussion group? Take your pick in the subjects that come to your mind, there is a fair chance that you will find such an article. Isn't that a document? Either a "simple" text or in broader sense a text with some pictures if you had chosen geography or film as subject. The document could even contain sound fragments when film had been chosen as subject.

Well, using Oberon you have taken the habit of opening (precisely) documents with the command:
 * Desktops.OpenDoc documentLocator

This Internet Connection package in Oberon uses a document-based approach for accessing the Internet resources. You are not required to learn a different interface with all its idiosyncrasies, for every single service that you want to use. All services are presented uniformly and called implicitely; that is, the service specific technical details are handled by the system unconspicuously and behind the scene.

As if this made things not simple enough, you will even be able to use elaborated graphical interfaces, in the form of panels and hypertext documents, with which you will not even have to specify locators yourself.

Document locator for smart documents
To identify the resources (to access), their location and the method to acquire them, a generic scheme is provided. It is based on the Internet specific Uniform Resource Locator (URL), of which a few elements have been ignored, extended with the option of treating a local document in the same manner as other resources.Using this scheme, it is possible to access a variety of resources as "simple" documents to be opened with the Desktops.OpenDoc command. For example, let's say that you have heard about the existence of the Spirit of Oberon home page on the WWW. All you need is find out it's URL and you can access it with:
 * Desktops.OpenDoc "http&#58;//huxley.inf.ethz.ch/~marais/Spirit.html"

Note that the locator is enclosed in double quotes ("). This is required because special characters, other than ".", appear in the string.

The power of the generic scheme is, that the same device allows a resource to be located in the WWW, in a newsgroup or in the Gopherspace, to be accessible by FTP or Telnet, to be located in your mailbox or in a local file on your hard disk. Here follow an example for each of the resource types that you can access:
 * "http&#58;//www.inf.ethz.ch/"
 * "gopher&#58;//gopher.ethz.ch"
 * "mailto&#58;zeller@inf.ethz.ch"
 * "ftp&#58;//huxley.inf.ethz.ch/"
 * "telnet&#58;//ethics.ethz.ch"
 * "news&#58;comp.lang.oberon"
 * "nntp&#58;comp.lang.oberon/144"
 * "file&#58;//Internet.html"

With Oberon everything becomes simpler, also Internet!

Significance of the local file locator
When accessing a document in the WWW (a HTTPDocs document) or in the Gopher, you will observe that the document's name is it's URL. You will see that it is possible to download the document to a local file. Such files may still be browsed as though they were obtained from the Web.

Document locator syntax
For those interested, here is a EBNF description of the document locator syntax. All non-terminal symbols are described after.


 * documentLocator =
 * "mailto:" user "@" host.
 * |   "telnet&#58;//" [ user [ ":" passwd ] "@" ] host [ ":" port ].
 * |   "http&#58;//" host [ ":" port ] [ "/" path ] [ "?" query ].
 * |   "news&#58;" ( group | msgid "@" host ).
 * |   "nntp&#58;" group "/" artnr.
 * |   "ftp&#58;//" [ user [ ":" passwd ] "@" ] host [ ":" port ] "/" path ].
 * |   "gopher&#58;//" host [ ":" port ] [ "/" type [ selector [ "?" query ] ] ].
 * |   "file&#58;//" filename


 * host = hostname | IPaddress
 * hostname = namepart { . namepart }
 * namepart = letter { letter | digit }
 * IPaddress = digits . digits . digits . digits
 * digits = digit { digit }
 * port = digits
 * artnr = digits
 * group = namepart { . namepart }
 * filename = namepart { . namepart }

Note: this is a simplified version of the Nov. 1993 specific URL scheme of the IETF URI working group - "http&#58;//www.w3.org/hypertext/WWW/Addressing/Addressing.html"

Connecting to a mail server
To be able to send and receive messages you have to have access to an Internet mail repository. Oberon System 3 includes an interactive mail program at no cost.

Principle of operation
The mail program receives mail from the Internet host using the Post Office Protocol (POP). Such a mail program is often named a user agent. You can inspect your mailbox to find out if mail has arrived. Messages in the mailbox can be read, received, replied to or deleted. Receiving a message means that it is transferred to the local message data base and deleted from the central mailbox. Messages in the local mail data base can likely be read, replied to or deleted. The local mail data base can be searched for specific messages specified with a simple query. New messages or replies to received ones, may be edited and are sent using the standard Simple Mail Transfer Protocol (SMTP). Technical hint: Other PC and Macintosh mail programs that enjoy wide use are also POP-based user agents that take advantage of this protocol, but almost all of them move the messages at your address from the mail repository to your computer where they are stored in regular files. This program reads your mail from the central repository without moving it first to your computer.

Every time you want to use mail, you have to have set up your system beforehand in three manners. First, you must define your installation environment with the iconizer captioned "Setup" in the Mail panel.

Second, for reading your mailbox must enter your userid and password in one two ways:


 * using the "Set User" button in the Mail panel
 * by executing a NetSystem.SetUser command (associated with that button)

Third, for sending mail your must execute the command NetTools.Set EMail.

Note that you will have have to enter your userid and password every time you start Oberon: these value are not stored permanently. Caution, security hazard: these two values, and in particular your password, can easily be retrieved with the System.State NetSystem command. Remember that, when you leave your PC unattended! To change your password access your mail server with Telnet and execute a Unix passwd command.

Using mail interactively
Composing a message to be mailed to a user is initiated by opening a document whose document locator has the following syntax:
 * "mailto:" user "@" host

Try to edit a message addressed to the Oberon development group with:
 * Desktops.OpenDoc "mailto:oberon@inf.ethz.ch"

A viewer named "oberon@inf.ethz.ch" is opened. The first line has already be prepared for you: it is a "To:" header line with the address of the recipient extracted from the locator. You may now set the caret in the viewer and start composing the message text. You may add any number of addresses to the "To:" line and you may write any number of additional "To:" lines, grouping the recipients sharing the same host. Finally, you may add any number of addresses to a "Cc:" (Carbon copy) line to specify to whom else you want to send copies of the message.

It is considered good practice to start with a "Subject:" header line. You may also merge any other text selected in a viewer into this viewer, a simple device offering an easy solution to the problem of sending files or Oberon documents to an individual.

The text field gadget contains the name of your SMTP server if you have set up the Mail panel earlier. If that field still contains the default value, you must enter the correct name or set up the panel.

Finally, send the message by clicking on the "Send" button. You may immediately start composing a new message in the same document viewer. All you have to do, is to erase everything you have typed before and to modify the "To:" header line as needed.

Using the mail panel
Desktops.OpenDoc Mail.Panel

The mail panel is logically divided into a message list (top half) and control panel (bottom half). We shall now review the function of the control panel buttons. Observe that the system's reactions can be followed in the "status" text field in the middle of the panel.

Starting with the upper half of the panel, you have a series of buttons:

In the message list, a one-line description or header summary, is displayed for each message. Most recent messages are at the top. If no mail is waiting, "no mail" appears in the "Status" field.

If you click on a message summary line in the list, the message is displayed in a document viewer named "Mail.Text".

Command NetSystem.SetUser used to identify yourself before accessing your mailbox. When the command is executed, the mouse pointer is frozen. The password must then be typed blindly that is, it is not echoed on the screen. The password entry must be terminated with the ENTER or RETURN key. The password may have a maximum length of 64 characters.

[Get] retrieves messages queued on the server to the MailMessages file. If MailMessages does not yet exist, it is created. According to a configuration setting, retrieved messages are deleted from the server or retained there.

[Send *] Sends the marked text to the address(es) appearing in the "To:" header line(s). The message text must have been composed as described in the previous section. There is no log of messages sent but the AutoCc configuration setting will produce a copy to the sender.

[Settings] Click on the little square in the iconizer to flip it to the "Mailer Setup" panel. Now enter the names of the POP server and of the SMTP server in the corresponding text fields. The three radio buttons define the mime parameter to be used for sending (performed by a Mail.Send command). Flip the iconizer back, and make the change permanent with the [Store] button.

[Reply] A document viewer named "Mail.Out.Text" is opened with two header lines: "To:" and "Subject:", ready for replying to the address found in the most recent selection. This address appears in the "To:" line. The message's body can now be typed. To send it, mark it, and click on the "Send" button. Clearing any selection with the F2 key allows opening an empty message template for a new message.

[Cite ^] While answering a message, you may cite any part of a message displayed in a document viewer by copying over or copying to as you prefer. The selected text segment is inserted at the caret in the reply and each line will be prefixed with "> ".

Sending a viewer text as mail
You may have observed (in Send * and Reply ^) that after composing a message it suffices to mark the viewer and to click the "Send *" button to mail it. Consequently, the text displayed in any viewer, to which at least one "To:" line with at least one valid address has been added, may be sent in the same manner. Moreover, it can be sent even without using the Mail panel; that is, it can be done by directly executing the Mail.Send command associated with the "Send *" button.

Mail.Send smtpServerName [mime] * sends the marked text to the recipient(s) listed in the "To:" header line(s) and in the "Cc:" line(s) via the named SMTP host. If specified, mime may take the following values:
 * ascii - plain US ASCII text is sent
 * iso - plain 8 bit ISO text is sent
 * oberon - US ASCII with application/oberon doc
 * ooberon - only application/oberon doc

The mail commands
Each button described earlier is a gadget associated with a command of the mail module. These commands are intimately associated with the mail panel described earlier. That is, they cannot be executed outside of the context for which they have been designed, except Mail.Send.

Encoding data to ASCII
Using SMTP, Internet hosts can only send text data. The Oberon Connection eschews the difficulty by offering to transform "binary" files and documents (with embedded objects) to pure ASCII strings, using the ancillary module AsciiCoder. The resulting text, presented in a document viewer, may be merged into a message during composition. To the recipient of such a message, the same module offers the inverse transform of decoding the encoded part of the message. To conserve transmission time, the text may optionally be compressed (using the "%" option in the commands). The AsciiCoder is Oberon's version of the Unix uuencode / uudecode eventually combined with the use of compress / uncompress.

The terms "encode" and "decode" do not convey a meaning of "encryption".

Sending text documents and files by mail
Oberon text documents and files with arbitrary content can be sent by e-mail by tranforming their content to plain Ascii data streams with: AsciiCoder.CodeText or AsciiCoder.CodeFiles.

Receiving text documents and files by mail
Oberon text documents and files with arbitrary content received by e-mail can be transformed back with: AsciiCoder.DecodeText or AsciiCoder.DecodeFiles.

Automatically forwarding your mail
If you want to let the mail server forward your mail during your absence, create a file named ".forward" containing a single line with the address to which your mail must be forwarded. Use FTP to access your home directory on the mail server, and transfer the file to that directory.

To stop the forwarding, use FTP to access your home directory on the mail server, and delete the file.

Accessing Usenet newsgroups
Usenet (an abbreviation of "users network") is often referred to as the news or netnews, even though there is little real news in the sense of a newspaper. Usenet is a large collection of discussion groups centered around zillions of topics. The Oberon language and system are the subject of such a discussion group: comp.lang.oberon. Note: In the subsequent explanations we shall assume that you are familiar with the newsgroups naming conventions which may be recognised in the previous example.

Discussion groups are sometimes called newsgroups or simply groups. Within each newsgroup, the individual contributions are called articles or postings.

Connecting to a news server
To be able to read articles in newsgroups you have to have access to a Usenet site via the Internet. Oberon System 3 includes an interactive news reader at no cost.

Technical hint: The Usenet articles are transported using the NNTP (Network News Tansfer Protocol). The News module implements this (and only this) protocol directly.

Note 1: Consequently, it is possible to avoid communicating through one of the "classical" news readers such as for example rn, trn, nn or tin, which some readers might have used already.

Note 2: Another networking arrangement such as UUCP for example, is not supported.

The site from which you will be obtaining articles is identified by its name such as for example ftp.inf.ethz.ch. Prior to accessing a news server, its name must be set.

Setting the NNTP host name - NetTools.Set
NetTools.Set NNTPHost (hostName | ^) sets or changes the name of the NNTP host with which articles will be exchanged. The setting is made permanent by storing the name in a public library called Net.Lib. You only need to set it once.

Inspecting the NNTP host name - NetTools.Get
NetTools.Get NNTPHost inspects the current setting and displays it in the Oberon log.

How many groups are there? - News.ShowAllGroups
News.ShowAllGroups opens a text document viewer named "All Groups" listing the name of all the groups which are maintained by your news server. That list will not make it easier for you to select a news group. At this date "ftp.inf.ethz.ch" carries more than 2'500 items. It will however clearly demonstrate how important it is to define and maintain a personal newsgroup list.

Any new newsgroups? - News.ShowNewGroups
News.ShowNewGroups opens a text document viewer named "New Groups" listing the name of all the new groups which have been added to your news server since the command was last used.

Maintaining your personal newsgroup list
Desktops.OpenDoc News.Tool

News.SubGroup (groupName | ^) subscribe to groupName.

News.UnsubGroup (groupName | ^) unsubscribe.

News.SubscribedGroups opens a text document viewer named "Subscribed Groups" listing the name of the newsgroups to which you intend to subscribe. This information is based on the contents of the local file "News.Read.Text" cumulatively modified by subsequent "subscribe" and "unsubscribe" commands. The document presents a hypertext list of group names colored in blue. Each element may be selected with a middle mouse key click as explained below.

Selecting a newsgroup
Selecting a newsgroup is, opening a document whose document locator has the following syntax:
 * "news:" group - or
 * "news:" xalphas "@" host

Try accessing the Oberon language and operating system group with:
 * Desktops.OpenDoc "news&#58;comp.lang.oberon"

Alternatively, you may use a slightly more intuitive approach by launching a News.SubscribedGroups command and by middle clicking on one of the list items appearing in the document viewer.

You are then presented yet another text document with the following appearance:

The top line showing the selected newsgroup's name is followed by information about each article, in the form of short one-line descriptions. Reading from left to right you find the article number followed by the contents of three article header lines: "Subject", "From" and "Date". Followup articles are clearly indicated by the initial text "Re: ". Unread articles are recogniseable at the red color, whereas the blue color denotes articles read.

Note that the information about already read articles (in blue) will only be presented the next time you open that newsgroup.

Also this document is organized as hypertext where the red or blue article number can be selected with a middle mouse key click.

Selecting and reading articles
Here follows a brief explanation of how to read and interprete a news article header.

Path: lists the names of the computers that the article traversed to reach your news server. Read the list from right to left! The names are separated by "!"s.

From:

Newsgroups: designates the newsgroup to which the article has been posted. When you are reading the articles of a particular group, they have obviously been posted to that group. However, if you are looking at an old article - that you had previously saved - it is handy to know what group the article appeared in.

Message-ID:

NNTP-Posting-Host:

Alternatively, you may select an article directly by its number in the selected newsgroup. Here is an example of how you would specify this request:
 * Desktops.OpenDoc "nntp:comp.lang.oberon/4932"

The correct syntax was described earlier. Do not forget to enclose the parameter in double quotes '"' because of the special characters.

Unfortunately, the example will most probably fail to produce a useable result because the number does not exist anymore (watch the Oberon log).

Posting an article - News.PostArticle
Before posting an article your e-mail address must be set with the NetTool.Set command. If no e-mail address is set, the NNTP server will not accept your article. This e-mail address will appear in the "From:" header line of the article when it is posted.

Setting your e-mail address - NetTools.Set
NetTools.Set EMail (e-mail | ^ ) sets your e-mail address persistently in the public library Net.Lib. If an e-mail address was already set, it is changed.

Inspecting your e-mail address - NetTools.Get
NetTools.Get EMail displays the current e-mail address in the Oberon log.

Structure of an article
The minimal article contains at least header lines starting with "Newsgroups:" and with "Subject:".



A "From:" and a "NNTP-Posting-Host:" header line are automatically added.

News.PostArticle [mime] * posts the marked text using the specified mime. MIME stands for Multipurpose Internet Mail Extensions. The mime parameter can take the following values:
 * ascii : text/plain, us-ascii
 * iso : text/plain, iso 8bit
 * oberon : text/plain with application/oberondoc attachment
 * ooberon : only application/oberondoc

When the mime parameter is omitted, the system will automatically choose the most appropriate transmission, that is:
 * - Simple text without different colors or fonts
 * no Umlaut -> ascii
 * Umlaut -> iso
 * - Text without objects, but with different colors or fonts -> oberon
 * - Text with objects -> ooberon

As you would expect, the recipient of an article containing rich text, cannot process it unless the news reader supports MIME. Evidently, a recipient using Oberon can read such an article. However, you can expect that postings and replies will most often require the use of ascii or iso as mime parameter.

You may have observed that you may post articles to a group to which you have not subscribed. The news server ftp.inf.ethz.ch carries a group inf.test for the special purpose of testing how posting and replying really work. Use this newsgroup as a playground or sandbox: you will not interfere with anybody else. There is no need to say that the newsgroup is local to this server and is not fed to the rest of Usenet.

Replying to an article - News.FollowupArticle
Use the News.FollowupArticle command to reply to an given article. The procedure for using that command is as described for the command News.PostArticle, except that the beginning of the article to which you are replying must be selected.

Frequently asked question list - FAQ
An FAQ list is a document, maintained by a volunteer, that identifies and answers questions frequently asked in a particular newsgroup. Many newsgroups have FAQ lists which the keeper revises at intervals. Though not all newsgroups have such lists Oberon has. It is considered good manners to refrain from asking questions in a newsgroup until you have read the associated FAQ lists.

Using
 * Desktops.OpenDoc "news&#58;news.answers"

You might be lucky to find an FAQ list related to comp.lang.oberon. But we would recommend to obtain these lists by FTP.

File Transfer Protocol - FTP
The File Transfer Protocol (FTP) makes it possible to move a file from your computer to another, even if that other computer has a different operating system and file storage format. Files may be data, programs, text -- anything that can be stored online.

Log in to your local computer
FTP.SetUser userName"/" sets the userName and password. The slash "/" is a required separator. Blanks are not allowed between userName and the slash. userName may have a maximum length of 32 characters.

When the command is invoked, the password must be typed blindly that is, it is not echoed on the screen. The password entry must be terminated with the ENTER or RETURN key. The password may have a maximum length of 64 characters.

Note: This one of the few modal commands in the Oberon system which requires termination by the ENTER key.

Caution, security hazard: these two values, and in particular your password, can easily be retrieved with the System.State FTP command. Remember that, when you leave your PC unattended!

To change your password access your FTP server with Telnet and execute a Unix passwd command.

Anonymous FTP
Anonymous FTP is a facility that lets you to visit a remote FTP server and to download files without having to be registered as a user. This facility is offered by a number of FTP servers which are set up (by the system manager) with a special userid named anonymous, that anyone, anywhere on the Internet is allowed to use. Functionally, the anomymous FTP works the same way as regular FTP. There are however two differences:
 * 1) - you must enter your mail address in place of the password. This is so the keepers of the server can keep track of who is accessing their files.
 * 2) - you are able to access only certain directories which have been declared open to public access (by the system manager). The rest of the directories are off limits. As an extra security measure, most such FTP servers allow you to download files, but not upload. If these limitations are not bearable for your purpose, you have to register to the system, obtained a standard userid and password.

In general, all the public directories are kept in a directory named pub which is a subdirectory of the main directory.

Using FTP interactively
Accessing a file or a directory on a remote FTP server is, opening a document whose document locator has the following syntax:
 * "ftp://" [ user [ ":" password ] "@" ] host [ ":" port ] "/" path

Try accessing the directory containing the Oberon software with:
 * Desktops.OpenDoc "ftp&#58;//huxley.inf.ethz.ch/pub/"

Finding your way around an FTP server
Desktops.OpenDoc '"ftp&#58;//' serverName '/' [path '/' [docuName]] '"' opens a document viewer named serverName displaying the entries (file or subdirectory names) in the directory specified by path, or if path is omitted the root directory open to public use. It is a hypertext document where the entries which are subdirectories are highlighted in blue. With a middle mouse key click on such a blue text element, the document contents is replaced by an analog listing of the directory at the next lower level. Note that the top text field displays the current subdirectory.

If docuName is affixed to the '/' terminating the path, the document itself is displayed in the viewer. Try the following and observe the difference:
 * Desktops.OpenDoc "ftp&#58;//huxley.inf.ethz.ch/pub/Tools/Sieve.Mod"
 * Desktops.OpenDoc "ftp&#58;//huxley.inf.ethz.ch/pub/"

The menu bar at the top features a "Back" button. When clicked, the document contents is replaced again by the listing of the directory at the next higher level. The process can be repeated until the main directory is accessed. When anonymous FTP is used, it is the root directory open to public use.

Most of FTP hosts are Unix based systems, but this kind of presentation is very intuitive indeed and you will not really need to know anything about the Unix file system. However, some of you will probably have recognised the information obtained with a dir command in the document viewer.

Controlling file transfer
File transfer is controlled by a set of buttons in the menu bar. A file (or a text) name must be selected prior to clicking a button. The buttons are described below in their order of appearance from left to right.

Show ^: transfers the selected file to a temporary file on your computer and opens a document viewer "file://FTP.Temp" showing the raw contents of that file.

ASCII ^: transfers the selected file to a temporary file on your computer and opens a document viewer showing the ASCII text contents of that file.

Get ^: transfers the selected file from the server to your computer (download).

PutF ^: transfers the selected file from your computer to the server (upload).

PutT ^: transfers the text designated by the selection from your computer to the server (upload). Only the ASCII contents is transferred: colors, fonts, objects and others are ignored. All text is converted to ISO-8859-1.

Del ^: deletes the selected file from the server.

Terminating FTP
The FTP connection to the FTP server is closed by clicking on the "Close" button in the menu bar.

Controlling FTP with commands - FTPTool
The module FTPTool provides a set of commands for controlling the communication with an FTP server. These commands, gathered in the text tool FTP.Tool, can be classified in three groups:
 * commands used for connecting to/disconnecting from a server
 * commands used for controlling the FTP server directories
 * commands for transferring files

Connecting to a server - FTPTool.Open
FTPTool.Open (hostAddress | ^) opens a new FTP session with the named host. It uses the user name and password previously defined with an FTP.SetUser command.

Disconnecting from a server - FTPTool.Close
FTPTool.Close closes the current FTP session.

FTPTool.ChangeDir
FTPTool.ChangeDir (dirName | ^ | "..") changes the current directory to dirName. If ".." is specified the current directory is set to the next higher level in a multilevel directory structure unless the current directory is already the root directory.

FTPTool.CurDir
FTPTool.CurDir displays the current directory path.

FTPTool.Dir
FTPTool.Dir lists all the entries (file or directory names) in the current directory.

FTPTool.DeleteFiles
FTPTool.DeleteFiles ^ deletes the selected files in the current directory. You cannot use this command to delete a subdirectory. To delete a subdirectory, use the FTPTool.RmDir command.

FTPTool.MakeDir
FTPTool.MakeDir ^ creates a subdirectory in the current directory.

FTPTool.RmDir
FTPTool.RmDir ^ removes an empty subdirectory in a multilevel directory structure. The subdirectory must be empty before it can be removed. The last directory name in the path is the directory to be removed. the root directory and the current directory cannot be removed.

FTPTool.GetFiles
FTPTool.GetFiles ({remFileName => locFileName} | {fileName}) ~ transfers a list of binary files from the remote server to the local computer. When the two names in the name pairs are equal, single names can be used as shorthand.

FTPTool.GetTexts
FTPTool.GetTexts ({remFileName => locFileName} | {fileName}) ~ transfers a list of files from the remote server to the local computer. The files are treated as ASCII files and are transformed from ISO 8859-1 to Oberon. When the two names in the name pairs are equal, single names can be used as shorthand.

FTPTool.PutFiles
FTPTool.PutFiles ({locFileName => remFileName} | {fileName}) ~ transfers a list of files from the local computer to the remote server. The files are sent as binary files. When the two names in the name pairs are equal, single names can be used as shorthand.

FTPTool.PutTexts
FTPTool.PutTexts ({locFileName => remFileName} | {fileName}) ~ transfers a list of files from the local computer to the remote server. The files are sent as ASCII files. When the two names in the name pairs are equal, single names can be used as shorthand.

FTPTool.CompactDir
FTPTool.CompactDir lists all the entries (file or directory names) in the current directory with no additional information.

Table of correspondance
To round off this chapter, all the commands that were presented are collected in the following table. The FTP commands at the left, are used in the interactive context i.e. are associated to button gadgets, while the FTPTool commands can be used in any document viewer. To complete the picture the standard FTP commands of Unix systems are presented in the last column.

A practical example of use
Assume that whilst moving in the Gopherspace, you hit on an anonymous FTP service which happens to store a very interesting file, that you want to store on your home directory of your preferred server. Access the latter by FTP (you'll have to log in!). Now, get the file in the first session, and put it in the second. You will never need a Unix command.

Getting the most recent version of Oberon
You can get the most recent version of the ETH Oberon from one of the several servers around the world where Oberon is archived (mirrored). The original is on "ftp&#58;//ftp.ethoberon.ethz.ch/". A known US location is "ftp.clark.net/pub/thutt/distrib". [For current servers, refer to the table of variants.]

Check your local archie server for a convenient source. [In 2021, an obsolete tip.]

File types encountered on Oberon FTP servers
You can expect to encounter Oberon archive files having names ending with ".Arc". You can obtain information on how to handle such files in the Compress tutorial. UUDecode.Arc is such a file on the FTP server.

Using Telnet
With Telnet, it is as easy to use a remote computer as it is to use your local computer. Unfortunately, apart from using a comfortable user interface, you will drop out from the cosy Oberon world and, with the best of goodwill you will not elude the pains of learning and using another computer gibberish for controlling a Unix, a VAX/VMS system or else. Think twice before plunging head first into these worlds and note that apart from the public services described below, you will probably only have to work with a very small number of Unix hosts, e.g. one serving your mail and a WWW repository. If you have to manage files and directories, use FTP even to create dot (.) files such as .plan, .project or .forward. It is really possible to use the Internet without using the Unix vi editor! This facility comes in various flavours:
 * either you need to have an individual account (userid and password) on the remote computer
 * or you need to have an individual account in principle, but the remote computer offers to open the sesame with a userid such as guest or else, and warns that access restrictions apply (an example thereof is the ETH info system which is accessed with Desktops.OpenDoc "telnet&#58;//ezinfo.ethz.ch" )
 * or you have to use a publicized account name with a userid such as guest, visitor or else, and a trivial password or none at all. Books on Internet often list some of them in tables or appendices.
 * or you don't need anything to access to a public service, of which an example follows.

Once you log in, you can use the computer in the regular manner that is, your computer will merely act like a (emulating) terminal of the distant computer. Internet which serves as transport media, becomes transparent. Oberon System 3 includes a VT-100 terminal emulator at no cost.

Using Telnet interactively
Accessing a remote computer is, opening a document whose document locator has the following syntax:
 * "telnet://" [ user [ ":" password ] "@" ] host [ ":" port ]

Try accessing the ETH Library System (ETHICS) with:
 * Desktops.OpenDoc "telnet&#58;//ethics.ethz.ch"

A document viewer with a special look is opened: you should regard it as the display screen of an emulating terminal. A connection with the distant host is attempted and its progress is reported in the viewer. Take a glance at the unusual caret shape (vertical rectangle) marking the position of the next character. If you position the mouse cursor in the viewer and click the left mouse key, the caret changes to a filled rectangle. Keyboard input is now directed to that viewer.

If for some reason, the attempt fails, a message telling what went wrong is displayed. You will do well to look at the Oberon log also.

From now on, whatever you type is under the control of the remote host, which usually starts by displaying an informative message. If you are expected to log in, you will be prompted with a "login:" line. Proceed with the log in as usual. Otherwise, follow the instructions.

To conduct a successful dialog, you will need a user's guide or may resort to on-line help information which can in general be obtained by entering "?", "help" or for a Unix system "man".

The text in the terminal emulator viewer will ONLY scroll forward, but everything transmitted to and fro is captured in internal storage. Now, if you click on the "OpenLog" button in the title bar, a document viewer "Telnet.Log" is opened, which displays the log of the current session. Since that is a standard Oberon document, you can scroll it forward and backward and even store it, giving you a persistent recording of the session. Alternatively, you may directly use the command which is associated with this button:


 * TelnetGadgets.OpenLog

When you are finished working with the remote computer, terminate the dialog orderly first and then, break the connection by clicking on the "CloseCon" button in the title bar. Alternatively, you may directly use the command which is associated with this button:


 * TelnetGadgets.CloseCon

There is no standard termination procedure, though issuing a "logout" command is generally the right thing to do. At a difference, leaving a public service such as ETHICS, requires pressing the PA2 key, which is simulated by typing "A2" in an input field and pressing ENTER. In the latter case the connection will also have been closed automatically.

Finally, click on the "Close" button. There is no way to connect anew to a server with that viewer.

The Telnet panel
The Telnet Panel offers slightly more comfort than the interactive invocation. First of all, you may use it repeatedly (without closing and re-opening) to access several servers in succession. Secondly, it can be slightly customised for frequently used commands.

Using the panel
Try it now:   Desktops.OpenDoc Telnet.Panel

The document viewer "Telnet.Panel" which is opened contains the same terminal emulator as before, but just above it, you find a series of buttons and a text field containing the model pattern "user@host".

The text field accepts a string built as follows:
 * [ user [ ":" password ] "@" ] host [ ":" port ]

but in general either just a host name or a userid @ host name will be entered. Using the latter version, you will be directly prompted to enter the password after clicking on the "Open" button. You will then embark in the same scenario as was described under "Using Telnet interactively". Entering your password in an unprotected field constitutes a security hazard.

You will also have recognised the buttons "Close" and "Log" (which has the same function as "OpenLog" met before).

The buttons with the captions "ESC", "F1", "F2", "F3" and "F4" are convenient for dialoging with some applications where they are used extensively. The captionless iconizer is used as follows: press and hold the middle mouse key on it, drag until the mouse cursor is positioned on one of the five menu items and finally, release the key. The Unix command selected will be executed. The menu item may be customised.

Customizing the iconizer
The captionless iconizer hides on it's back-side five text field gadgets which you may use to store frequently used Unix commands. Click the iconizer on the little square to flip it. You may enter up to 5 Unix command strings terminated with a Unix carrier return "\n". Example: "ls -al\n" including the double quotes (")!

Flip the iconizer back and click on the "Store" button to make the changes permanent.

A few useful Unix commands
Unix is a vast subject but may epitomize it to a few (not too) indispensable commands, which you may want to record in the iconizer's menu positions:

passwd: used to change your password (Use CTRL-C if you decide not to change it) who: use Oberon's Finger.Finger - see next chapter finger: use Oberon's Finger.Finger - see next chapter

Take also good note of this: CTRL-C: (is called the interrupt key) used to abort a running program or command.

Fingering the world
Finger is the name of a Unix client/server application for obtaining information about users. Oberon System 3 includes an even more refined finger client at no cost. To use the commands described below it is not necessary to Telnet and use the Unix finger command. Since it may help in daily activities, we give you the minimum of information necessary for specifying a search.

Finger.Finger user ["@" host] displays information about all the users named "user" registered on the specified host. If no host is specified, the requester's host is searched.

The Finger server looks for two special files named .plan and .project in the home directory of the user(s). If the .plan file is present, the entire file is displayed. Otherwise the message "No Plan." is displayed. If the .project file is present, the first line is displayed. You may create and edit your personal (in principle plain ASCII) dot files locally with Oberon and place them in your home directory by FTP.

You may also add Oberon text to the address of Oberon users by inserting the line --&#45;--ASCIICODED directly followed by an AsciiCoded version of the Oberon text you want to have shown. Obviously enough, only Oberon users using the Finger.Finger command will be able to receive the text in clear.

Finger.Finger ["@" host] displays a summary of all the users who are logged in on the specified host. If no host is specified, the requester's host is searched. The latter case produces information equivalent to that obtained with the Unix who command.

World-Wide Web - WWW
The World-Wide Web (WWW or W3) is currently one of the most popular information network systems on the Internet. The range of items that may be accessed within the WWW includes hypertext documents, images, sound patterns and video sequences.Accessing a WWW document is, opening a document whose document locator has the following syntax:
 * "http://" host [ ":" port ] [ "/" path ] [ "?" search ]

Try accessing the WWW home page of the ETH Zürich with:
 * Desktops.OpenDoc "http&#58;//www.inf.ethz.ch/"

Navigating the WWW
A hypertext document contains data intertwined with links. In Oberon, the links are marked in blue to stand out, and you can select one by clicking (with the middle mouse key) on it. If you do so, the hypertext document you are viewing is replaced by another one identified by information hidden behind the link. Backtracking is done by clicking on the "Back" button in the menu bar. You will then return to the previous document, but a more elaborate movement strategy is described below. Moving from one link to another is called navigating the Web or also familiarly surfing on the Web. With a bit of experience and flair you will eventually home on what you were looking for. If you hit on a document really worth remembering, you may choose to add its URL to the hot list.

The program you are using is called a browser.

Every now and then, you will notice that the Web is slow. That may be the case when you are connected to a slow Web server or when you are receiving a document with embedded images. Be patient! If that is precisely the reason for being slow, turn the images off. Otherwise, there is little you can do to control or stop a Web activity in progress, except interrupting the reception by pressing ESC. A log message "interrupted" will appear but it will take a few more seconds until the system comes to a rest.

The HTTPLinks panel
To see what is behind a link before it is selected, you may use the HTTPLinks panel. To inspect a link it suffices to select ANY part of the link text and to click on "Inspect".

Using the hot list
You should by now have gained some experience with the WWW and got a feeling for what navigating is like. One problem is that while travelling, you might be scrutinizing valuable information at one time and soon after, have forgotten how you got it. Indeed, the WWW will have gotten it for you - wherever it happened to be.

If you decide that the HTTPDocs document you are viewing is worth re-visiting at a later time, you simply mark it and execute the command
 * HTTPDocs.AddToHotList [*]

to add the document locator to a local file named "HTTP.HotList.Text". If the file does not exist already, it is created.

The current hot list of Internet resources may be inspected and edited (in particular for removing obsolete entries) with:
 * HTTPDocs.ShowHotList

or Desktops.OpenDoc HTTP.HotList.Text quite obviously.

Here is an example of hot list:
 * [[File:OberonInternet3.png]]

The list contains one document locator per line and is easy to interprete and edit. You may view it as a list of bookmarks, and it can be used to quickly retrieve a document using the next command.

Note that the hot list is not a hypertext document and that it may also include document locators of local HTTPDocs documents ("file:...").
 * HTTPDocs.ReloadDoc ^

Loads the document identified by the (most recent) selection. Normally, the selection will be placed on one of the document locators appearing in the hot list, but is not a requirement. Instead of using that command, you may simply interclick the middle + the left mouse keys on an document locator to load a document.


 * HTTPDocs.History *

Displays the history of the marked document in the Oberon log. The history is an enumeration of document locators representing the itinerary leading to this document. The list shows the most recent locator on top and may contain locators of local files.

Technical hint: documents requested from the Web are downloaded and kept in a local cache. Their document locators are ordered in the history which may be consulted. Local documents are not cached, they are readily retrieved.

The HTTPDocs Panel
Most of functions described in the two preceding sections are collected in the HTTPDocs panel. You will easily recognise what these buttons are used for: The other buttons are described now.
 * Inspector : iconizer hiding the HTTPLinks panel
 * to HotList *
 * Show HotList
 * History *
 * Reload ^

Images: This toggling button is used to control the amount of information received from the Web, i.e. whether images included in a document should be received or not. Turning the image support off, may considerably reduce the time to download a WWW page. This action is performed by the associated command
 * HTMLDocs.SwitchIMG

Clear Cache: Frees the storage occupied by all the documents that have been requested from the Web. The corresponding document locators do not disappear from the history. Thus when using the Back button the document is reloaded from the server. This action is performed by the associated command
 * NetTools.ClearCache

Technical hint: a request for a document that is still in the cache will be honored very rapidly by retrieving the document from there, instead of downloading it. Consequently, if the image support is turned on (or off), force the browser to collect fresh information.

Download: download the document behind the selected link to a local file specified in the text field gadget at the right. This action is performed by the associated command
 * NetTools.DownLoadDoc fileName documentLocator ~

where, in this context of hyperlinks, the document locator is most probably of the form:
 * ["http&#58;//" host[ ":" port ] ["/" path"] ]

Important note: In reality, the command is much more general and powerful since the second parameter may be almost any document locator. Example:
 * NetTools.DownLoadDoc Attachments.Obj
 * "ftp&#58;//huxley.inf.ethz.ch/pub/OMI/Attachments.Obj" ~

However, the locator may not denote an FTP directory or a Telnet service.

Using the Gopher
The Gopher is a powerful information system that allows you to access many of the Internet resources in a simple, consistent manner. After having reviewed some of the important and useful Internet services in detail one by one, we might present the Gopher as the closest thing to a one-size-fits-all service providing a unique window to the Internet. The description which follows should make that clear.

Connecting to a Gopher server
To use the Gopher you have to have access to a Gopher server via the Internet. Oberon System 3 includes a no cost gopher client that takes advantage of the unique features of Oberon.

There are several thousands Gopher servers around the Internet, and they store all manner of information. Each such server carries information that is of interest to the users of the community which it serves. That is the case with many university departments for example. A Gopher site is identified by its name such as for example gopher.ethz.ch.

Accessing a Gopher server is, opening a document whose document locator has the following syntax:
 * "gopher&#58;//" host [ ":" port ] [ "/" gtype ] [ path ]

Try accessing the Gopher at the ETHZ with:
 * Desktops.OpenDoc "gopher&#58;//gopher.ethz.ch"

A document viewer named "gopher&#58;//gopher.ethz.ch" (with some suffix) is opened presenting a menu and all you will have to do is to make a cascade of selections. This starting point for the exploration in a public Gopher is called the main Gopher menu. The menu is, like many other documents we have seen, a hypertext in which selectable items appear in blue.

The symbols at the left tell you what type of Internet resource will be accessed if you select a menu item. The following interpretation table shows what these symbols anticipate:


 * &#x25B7;   Menu entity
 * &#x25A1;   Text entity
 * &#x25A0;   Binary file
 * ?   CSO phone book or text search
 * T   Telnet session
 * G   GIF image

Technical hint: Unix users will have established the correspondance with Unix menus in which the type of resource is represented by a symbol at the end of the menu items.

Moving around in the Gopherspace
Each time you make a selection, the Gopher will undertake whatever is necessary to carry out the request. We shall now explore the most common situations that you will encounter when making selections. As you read this, you may experiment the Gopher's reactions by yourself. You will observe that your choices will be guided primarily by the resource type symbol at the left. If after having made a choice, i.e. selected an item, you realise that what you are getting does not live up to your expectations, you may return to the previous menu by clicking on the "Back" button in the menu bar.

The most common symbol that you will see next to menu items is the Menu entity (&#x25B7;). If you select such an item, the Gopher will obtain the new menu which then replaces the previous menu.

The next most common symbol is the Text entity (&#x25A1;). If you select such an item, the Gopher will fetch the text and display it in place of the menu.

The Telnet session symbol (T) indicates that it becomes necessary to contact another type of service. If you select such an item, the Gopher will initiate a Telnet connection with a remote host. The situations which may then occur are described in the Telnet chapter. The ETH library system ETHICS shown on the sample menu is an example of public Telnet service. If you decide not to embark, you "Close" the Telnet session and you will return to the Gopher client. However, if you proceed with Telnet, during the session you will be operating in the Telnet environment that is, you will probably have to use your knowledge of Unix and you will do well to learn the rules of the game of the service, be it subscribed or public (by requesting help, h, F1 or whatever).

The symbol (?) announces one of two similar inquiries which you should be able to differentiate by reading the item text. Either you are about to interrogate a Computing Services Office (CSO) or you are about to search in a data base. A CSO is a repository of information about people in an organization. It is common to see such an item on the main Gopher menu of a university or other larger organization, as is the case in the example above. If you select such an item, you must enter a search argument in the text field indicated by "Enter Search-String here:". The text field will ONLY be present if the menu includes a (?) symbol. If you omit to specify the search argument, the system will send a "No Search String" to the Oberon log.

There is no general rule for the formulation of a query, most Gophers (and Veronicas) have their own syntactical sugar, but you may try with a single "?" to obtain more information on how to compose queries.

If you select an item with the binary file symbol (&#x25A0;), the file will be transferred to your computer and stored in a file named "Gopher.Temp".

Finally, if you select a menu item identified with a GIF image symbol (G), you will be able to see the picture.

Note that the main menu presented above carries (toward the end) a menu position "Other Gophers" of the type Menu entity. That menu in turn leads (directly or indirectly) to a list of other Gopher servers. If you select one of them, your Gopher client will contact the remote Gopher to ask for information on your behalf: you will then move from one Gopher to another, smoothly and easily but all this will be transparent to you. It is thus quite understandable that knowing a single Gopher server name is all you need to access what may be called a gopherspace enveloping many interconnected Gopher servers. That single Gopher server is the place to start.

Every now and then, you will notice that the Gopher is slow. That may be the case when it is connecting to a remote Gopher server or when you initiate a database search. Be patient! There little you can do to control or stop a Gopher activity in progress, except interrupting the reception by pressing ESC. A log message "interrupted" will appear but it will take a few more seconds until the system comes to a rest.

Using bookmarks
You should by now have gained some experience with the gopherspace and got a feeling for what travelling through, what is literally a galaxy of gopher servers, is like. One problem is that while travelling, you might be scrutinizing valuable information at one time and soon after, have forgotten how you got it. Indeed, the Gopher will have gotten it for you - wherever it happened to be. The hot list maintenance mechanism described for the WWW can be equally be used for exploring and accessing the gopherspace.

Using Veronica to search the Gopherspace
Veronica is a Gopher-based resource that you can use to search the gopherspace for all the menu items that contain specified words.

There is a good probability that you will find a menu position for accessing Veronica very close to your start menu. You only need to find Veronica once, at which time you may add it to your hot list.

As an example, here are the steps from the ETHZ main menu to the closest Veronica access offer:
 * Other Gophers => Uni Zuerich => Other-Gophers => Veronica

Using Jughead to search the Gopherspace
Jughead has the same functionality as Veronica but searches a small part of the gopherspace only, instead of all of it. How?

Accessing Internet services via Telnet
Now that you know how comfortably the various Internet services can be accessed, you would rather prefer to ignore the following primitive alternatives via Telnet and a public client program. However, if for some reason your Gopher client is not operational, you may try accessing a server via Telnet either using the Telnet panel or by opening a document as suggested in the following examples.

Using Telnet to access the WWW
World-Wide Web public browser example:
 * Desktops.OpenDoc "telnet&#58;//telnet.w3.org"

No login required. Gives you the same information as "http&#58;//www.w3.org/".

Using Telnet to access Gopher
Gopher public client example:
 * Desktops.OpenDoc "telnet&#58;//gopher.inf.ethz.ch:70"

Note the use of a port number (70) indicating that you want to access a special service (Gopher) on that server. Otherwise you would have to sign on with a password.

Throughout the Internet world there are a number of public Gopher clients which may be accessed with a trivial userid, usually gopher, but you will get a degraded service from them.

What to do if you want to Internet from another computer
There are quite a few information elements, stored permanently on your PC, which you will be missing very badly if you want to access the Internet from another office or from abroad. Regard this information as a first aid kit for grafting "your" Internet onto another PC.

Mail
Take your mail data base with you, i.e. the file "MailMessages". Setup the Mail panel.

For news
In Oberon.Text revise the NNTP news server setting. Verify that the news server carries the newsgroups that you subscribed to. If you want to post an article or reply to one, execute the NetTools.Set EMail command.

For WWW, Gopher, Veronica
Take your hot list with you, i.e. the file "HTTP.HotList.Text". Maybe also valuable local .html files.

A few interesting Oberon document locators
Desktops.OpenDoc ^

"http&#58;//huxley.inf.ethz.ch/~marais/Spirit.html" - Home page of the Spirit of Oberon (Windows) "http&#58;//www.inf.ethz.ch/department/CS/Oberon.html" - Home page of Oberon "http&#58;//www.inf.ethz.ch/department/CS/Newsletter.html" - Oberon newsletter "http&#58;//huxley.inf.ethz.ch/~fischer/AboutTutorials.html" - Starting point for tutorials

"ftp&#58;//ftp.ethoberon.ethz.ch/" - Oberon deliverables "ftp&#58;//huxley.inf.ethz.ch/pub/System3ForWindows/" - Oberon for Win deliverables "ftp&#58;//huxley.inf.ethz.ch/pub/OMI/" - Object Module Interchange deliverables

"gopher&#58;//gopher.ethz.ch" "gopher&#58;//gopher.psg.com" - Choose: Programming Languages -> Oberon

"mailto&#58;oberon@inf.ethz.ch" "mailto&#58;oberon-user@inf.ethz.ch"

"news&#58;comp.lang.oberon" - Oberon language and system newsgroup

What's next?
Collect and disseminate information using the rich collection of communication tools provided.

Index
[ B | C | D | F | G | H | M | N | P | S | T | U | V | W ]

B

browser

C

changing your password

D

document locator dot file (Unix)

F

FAQ finger (Unix) Finger.Finger forwarding mail FTPTool.ChangeDir FTPTool.Close FTPTool.CompactDir FTPTool.CurDir FTPTool.DeleteFiles FTPTool.Dir FTPTool.GetFiles FTPTool.GetTexts FTPTool.MakeDir FTPTool.Open FTPTool.PutFiles FTPTool.PutTexts FTPTool.RmDir

G

Gopher

H

hot list HTMLDocs.SwitchIMG HTTPDocs panel HTTPDocs.AddToHotList HTTPDocs.History HTTPDocs.ReloadDoc HTTPDocs.ShowHotList HTTPLinks panel hypertext

M

MacTCP Mail.Panel Mail.Send mail mailbox

N

NetTools.ClearCache NetTools.DownLoadDoc NetTools.Get EMail NetTools.Get NNTPHost NetTools.Set EMail NetTools.Set NNTPHost News.FollowupArticle News.PostArticle News.ShowAllGroups News.ShowNewGroups News.StoreInitText News.SubGroup News.SubscribedGroups News.UnsubGroup

P

POP Post Office Protocol

S

SMTP

T

TelnetGadgets.CloseCon TelnetGadgets.OpenLog Trumpet

U

Uniform Resource Location URL User agent uudecode uuencode

V

Veronica

W

who (Unix) WinSocket WWW

Revised 13 July 1996 Installed on 30 05 1997