/*
* a header for Techinfo network stuff
*/
/* The top half of this file will need to be modified before compiling the
server for a new installation. Also there are other file locations
in glob.c */
/*
* NOTE: By default clients do NOT see the a node's flags; in the default
* format a zero is sent in place of the flags. To receive the flags, a
* client must use the 'O' transaction (see below).
*/
#define PIPS_PORT 9000
#define PORT "9000"
#define PIPS_SERVER "penninfo-srv.upenn.edu"
struct pending_helper
{
long pid; /* id of child process */
char *file; /* name of child's output file */
/*
nodeid and gophtype needed because we will move the translated results
to cachedir/nodeid.gophtype.
nodeid is also needed because it is the first node when an nlist
is sent back to the client.
gophtype is also needed because we need to know HOW to interpret
the results in the child's output file.
*/
struct s1 *node; /* nodeid and gophtype for this send */
/* needed after child exits to decide what to send client */
long startpoint; /* what byte to start at --for documents */
long requested; /* how much to send --for documents */
/* child needs to know where to put the converted results */
char *cachefile;
};
struct pending_sends
{
char *buf; /* buffer to free when through */
char *ptr; /* pointer to start sending from */
int size; /* how much left to send */
int sock; /* socket to send to */
};
struct pending_recvs
{
char *filename; /* the file name of the file being recvd */
int the_fd; /* the file desc of the open file */
int sock; /* the socket to receive from */
};
typedef struct connection CONN;
struct connection {
int c_socket;
char *c_hostname;
int c_portnum;
int c_flags;
char *c_uid;
char *c_type;
time_t c_made;
time_t c_last;
TOSEND *c_ptr;
TOREC *c_recptr;
WAITFORHELPER *c_hptr; /* Added Jan 1993 LAM */
int c_output_fmt; /* Added 8/12/92 ark */
int c_trans_cnt; /* added 9/118/92 ST */
};
#define C_FULLFMT 0x1 /* Using full format output */
#define C_BUSY 0x2 /* connection is already being serviced */
#define C_TIMEOUT 0x4 /* Connection has timed out */
#define C_PROVIDER 0x8 /* Connection is a provider */
/* Added 1/93 LAM:
c_childpid = process id of child getting Gopher data.
c_gophertype = gopher file type -- so parent knows what
output format to expect from its child.
c_state tells whether child is done getting gopher data.
*/
#define MAX_TRANS_FIELDS 31 /* number of DLM separated fields in transaction*/
/*
* Transaction codes.
*/
#define T_ADDNODE 'a' /* add */
#define T_FIND 'b' /* fnd, find */
#define T_ENDPROVIDER 'c' /* epv, */
#define T_DUMPWEB 'd' /* dmp, dump */
#define T_EXPAND 'e' /* exp, expand */
#define T_GETFILE 'f' /* fil, file, getfile */
#define T_REORDER_BEFORE 'g' /* reorder the child links */
#define T_SOURCE 'h' /* test of valid source for an id */
#define T_RELOAD 'i' /* reload the web from disk */
#define T_REORDER_AFTER 'j' /* reorder the child links */
#define T_FINDKEY 'k' /* find keyword */
#define T_ADDLINK 'l' /* lnk, link */
#define T_GET_SERVER_INFO 'm' /* get info on other servers */
#define T_SRC_INFO 'n' /* get full source info on a node */
#define T_OUTPUTFMT 'o' /* fmt -- undocumented */
#define T_TRYPROVIDER 'p' /* prv, provider */
#define T_QUIT 'q' /* quit */
#define T_REPLACENODE 'r' /* rpl, replace */
#define T_SENDNODE 's' /* get, show? node? */
#define T_SENDFILE 't' /* sfl, sendfile */
#define T_RMLINK 'u' /* ulk, unlink */
#define T_VERSION 'v' /* find current version */
#define T_TRAVERSE 'w' /* trv, web? trav, traverse */
#define T_RMNODE 'x' /* del, delete */
#define T_SAVEWEB 'y' /* save the web to disk */
#define T_ADMIN 'z' /* adm, admin */
#define T_CHG_SRC_INFO 'A' /* change the info about a source
format is A:<source_info_line> */
#define T_SHOW_CONN 'B' /* show the current connections, an admin cmd*/
#define T_SHUTDOWN 'C' /* shutdown the server, save web , dont
accept connections, and shutdown when
connections left have been inactive
for n minutes */
#define T_CHG_BANNER 'D' /* change the banner msg */
#define T_SET_DATES 'E' /* stat all files except those flagged
and set the last modified date (admin cmd)*/
#define T_HELP 'H' /* send the help menu */
#define T_CHGD_SINCE 'I' /* send the non-menu nodes which have changed
since a certain date*/
#define T_FULL_TXT_SEARCH 'J' /* Perform full-text WAIS search */
#define T_SOURCE_SRCH 'K' /* Return all nodes of a given source*/
#define T_NODE_FORMAT 'O' /* Choose nodelist format */
#define T_TITLE_SRCH 'T' /* return nodes based on title */
/*
* For/From netio.c
*/
/* Output codes necessitated by client bugs which crashed when a node's flags
field contained values it didn't like. Thus the default output format
zeros out the flags field, while the new and better format sends the flags
across. The format is changed with the 'O' transaction, which supposedly
only new clients will do, to request the new format & get the flags.
Added 8/12/92 ark */
#define NO_FLAGS_FORMAT 1 /* Zeros out flags field */
#define SEND_FLAGS_FORMAT 2 /* Sends flags unchanged */
#define TELNET_FORMAT 3 /* "Pretty printing" to make
telnet readable */
#define NUM_FORMATS 3
#define DEFAULT_OUTPUT_FORMAT NO_FLAGS_FORMAT