GO4HAM The Hamburg Gopher Server for WINSOCK.DLL Including a Full Text Search Engine 08-JUN-1993 (c) Gunter Hille Comp. Science Dept., University Hamburg hille@informatik.uni-hamburg.de Here comes a PC Gopher server for MS-Windows. Before you start downloading, make sure that you have a WINSOCK.DLL from one of the vendors. The server will not work without it! This is a port of the Hamburg PC Gopher server which was released in February 1993. Due to an unsolved problem with the UoM TCP/IP package (which works fine when connecting PC clients) I decided to switch to the Windows socket library. My thanks goes to Netmanage Inc., I downloaded their WINSOCK.DLL just six hours before the license expired (European time, of course). And thanks to MS-DOS from Microsoft Inc., it allowed me to set the date of my PC to the day before expiry. Until Lanera Corp. sent me a demo version of their WINSOCK.DLL without this time limit, I did not grow older. That's why the server has been tested against two WINSOCK implementations. The server is written in Borland Pascal for Windows(BP-7). Marc B. Manza's definition of the API calls was very helpful. You will find the package at the Univ. Hamburg anonymous ftp server ftp.informatik.uni-hamburg.de/pub/net/gopher/pc/go4ham You can let the server execute ANY program which is just doing output to the standard output device and which does not expect character input from the keyboard. Be sure to run Windows in 386 enhanced mode. See the example selector strings in the root gopher file *.GOP These directories are included in the package: DOC Documentation of this package SERVER The Go4ham Gopher Server Improvements to the DOS version: Search Engine: The search engine can be used by the PC server as well. I will release a new version of the PC server within the next month (then it will hopefully send to all UNIX clients). To understand the search engine you have to read the small documentation accompanying the programs. The system is a patchwork, but I could take most of the parts from programs I had developed a year ago. If more than one keyword appears in the search string, this implies a logical AND. The wildcard character is a "*" at the end of a word. Seek time is approx. 3 seconds per keyword if 5MB (2000 documents) are indexed (measured under DOS on a 386SX-33). Indexing is slower, approx. 500 KB/h (under DOS). Windows reduces these times drastically, as expected. Secure server mode: 1. You have to specify the names of the programs which will be executed by the server. Create a file GOPHPROG.DAT and specify the names, each name on a separate line (without extension). 2. No access to files above the working directory. You have to specify the working directory in the command line. Using a wildcard "*" will allow access to all files on your computer, be sure to use it in a safe environment! Character translation: You may configure the server to translate characters to different character sets (I will add ISO to ASCII and IBM later, there is no need here at home, I do just have IBM code text files). - RAW : no translation - ISO : ISO Latin 1 as specified in the Gopher protocol - ASCII : translate IBM character set to 7 bit ASCII (as single characters are expanded to two or three characters, tabular output may be corrupted). Logfile: The logfile is in the QED format as all other database files. Date, time, Internet address of the caller, and the requests are logged to the file GOPHSERV.LOG. Bugs: - Probably lots of them. The server was tested at home and has never been tested on the Internet (our PCs load their Windows system from a mainframe, using Digital Equipment's PCSA, so you cannot run TCP/IP as well). But if the Winsock API is a standard, there should be no problems. - All application programs have to send their results in a file with the name RESULTS.PDX. This file will be send back to the client (being a Gopher directory or a text file). The server adds . at the end, if item types 1 and 7 are in the selector string. - Do not start other Windows applications while the server is executing an application. The server can only synchronize with the completion of a task (waiting for RESULTS.PDX to appear) by checking the number of tasks in the system. This is not yet tested. - The server does not fork itself for multiple connections, because otherwise you could not execute DOS programs by the server and receive the result in a special file. So only one connection is handled at a time. But up to 5 waiting connections are allowed by the WINSOCK API. - the documentation is poor, I know. But I was too busy to get the server working. - you cannot index files while the server is running (I didn't try it, but I'm sure I have to use the new Paradox Engine for Windows instead of the current one, which was programmed in Borland Pascal version 5.x) History: 24-APR-93: download of WINSOCK.DLL and WINSOCK.PAS from vax.ftp.com 25-APR-93: First try of Winsock API with Borland PASCAL 7.0 02-MAY-93: got my first TCP/IP test programs running 09-MAY-93: Gopher Server running with WINSOCK API 18-MAY-93: I added an icon and a small menu, now the code is approx.40 KB. The icon is borrowed from the University of Minnesota, the letters "HH" on the gopher's cap are an abbreviation for the city of Hamburg. 25-MAY-93: search engine added in the menu 10-JUN-93: Beta release of version 1.06 Happy gophering, Gunter Please send bug reports and comments to: hille@informatik.uni-hamburg.de