/******************************************************************** * wilkinson * 3.19VMS * 1996/01/24 11:00 * gopher_root1:[gopher.g2.vms2_13.gopherd]gopherdconf.h,v * Exp * * Paul Lindner, University of Minnesota CIS. * * Copyright 1991, 1992 by the Regents of the University of Minnesota * see the file "Copyright" in the distribution for conditions of use. ********************************************************************* * MODULE: gopherdconf.h * Header file for routines in gopherdconf.c ********************************************************************* * Revision History: * gopherdconf.h,v * Revision 3.19VMS-1 1996/01/24 11:00 wilkinson * Made OPCOM message console selection configurable * * Revision 3.19VMS 1995/09/08 18:30 wilkinson * Consolodate VMS/Unix source code for server as well as client * * Revision 3.19 1995/02/13 19:07:06 lindner * Add MaxConnection limit for total server * * Revision 3.18 1995/02/11 06:21:27 lindner * remove pid junk * * Revision 3.17 1994/12/15 17:33:20 lindner * Add BlockScript: keyword support * * Revision 3.16 1994/08/18 22:28:47 lindner * Abstract for top level and malloc casts * * Revision 3.15 1994/07/22 22:56:19 lindner * More NO_AUTH stuff.. * * Revision 3.14 1994/07/22 22:32:28 lindner * fix num args * * Revision 3.13 1994/07/22 22:29:01 lindner * Remove tix.h * * Revision 3.12 1994/07/21 17:23:06 lindner * Add File Separator code * * Revision 3.11 1994/06/29 05:30:10 lindner * Add code to handle lists of authscripts and authitems * * Revision 3.10 1994/03/17 04:31:01 lindner * Many, many parameter additions * * Revision 3.9 1994/03/08 15:56:03 lindner * gcc -Wall fixes * * Revision 3.8 1994/01/21 03:59:54 lindner * Add support for Timezone * * Revision 3.7 1993/09/30 17:05:15 lindner * start of subconf * * Revision 3.6 1993/09/21 04:16:52 lindner * Move cache settings into gopherd.conf * * Revision 3.5 1993/08/23 19:37:32 lindner * Add a semicolon * * Revision 3.4 1993/08/23 18:46:20 lindner * Crude addition of a veronica top-level block * * Revision 3.3 1993/08/20 18:03:11 lindner * Mods to allow gopherd.conf files control ftp gateway access * * Revision 3.2 1993/03/24 20:25:46 lindner * Addition for secureusers file * * Revision 3.1.1.1 1993/02/11 18:02:52 lindner * Gopher+1.2beta release * * Revision 1.2 1993/01/30 23:57:44 lindner * Added macros for Geog and Lang * * Revision 1.1 1992/12/10 23:13:27 lindner * gopher 1.1 release * * *********************************************************************/ #ifndef GOPHERDCONF_H #define GOPHERDCONF_H #include "boolean.h" #include "STRstring.h" #include "STAarray.h" #include "ext.h" /** Filename extensions **/ #include "site.h" /** Hostname/IP security **/ #include "AUTH.h" /** Username/pw security */ #ifndef VMS_SERVER #define GDCcontinue '\\' #else #define GDCcontinue '-' #endif /************************************************************************** * A structure that defines all the changable parameters of a gopher server * Read from the file gopherd.conf */ struct gdconf_struct { ExtArray *Extensions; /* Filename extensions */ SiteArray *Sites; /* IPnum/hostname based security */ AUTHarray *Authroutines; /* Authentication routines/scripts */ AUTHITEMS *Authitems; /* list of items to authenticate */ String *Serverpw; /* The internal server password */ Accesslevel Defaccess; /* Default access level for unknowns **/ boolean RunFromInetd; /* -I option **/ boolean Caching; /* -C option **/ int Cachetime; /* Cachetime: ***/ String *Logfile; /* The filename for the logfile **/ String *Errorfile; /* The filename for the Errorfile **/ String *BummerMsg; /* Message given to non-secure sites **/ #ifndef VMS_SERVER String *Data_Dir; /* Where our data directory is **/ #else String *DataDir; /* Where our data directory is **/ #endif String *Hostname; /* A FQDN for the host **/ int Port; /* The Port we're running at **/ boolean chroot; /* Are we chroot()ing? **/ boolean Securityon; /* Are we restricting access or not? **/ String *Admin; /* Administrator info **/ String *AdminEmail; /* E-mail address of administrator **/ String *Site; /* Description of site **/ String *Org; /* Name of Organization **/ String *Loc; /* Location of site **/ String *Geog; /* Latitude and Longitude **/ String *Lang; /* Default language ***/ double MaxLoad; /* Maximum Load Average ***/ int TZ; /* Timezone **/ String *TimeZoneText; /* Timezone in Text Format ***/ String *Tixfile; /* Tickets file ***/ boolean VeronicaIndex; /* Index it or not? **/ String *Abstract; /* The abstract for the server */ StrArray *other_dirs; /* Subdirectories ***/ StrArray *other_gdcs; /* The associated gdc file ***/ StrArray *FileSeparators; /* Separators for Multipart files */ StrArray *BlkScriptBlocks;/* Block Names for block generation */ StrArray *BlkScripts; /* Associated Script to run for Block */ int MaxConnections; /* # of connections we can handle.. */ #ifdef VMS_SERVER boolean IsGplus; /*** Assume Type=X+ in directories? **/ boolean IgnoreAll; /*** Ignore all non-.links files? **/ boolean SortDir; /*** Do we sort directories by default? **/ int FTPPort; /*** Where do we accept aFTP gateways? **/ int EXECPort; /*** Where do we accept EXEC scripts? **/ int SRCHPort; /*** Where do we accept searches? **/ int OVERPort; /*** Where do we accept oversize files? **/ int OVERSize; /*** What to we consider oversize? **/ boolean SortShell; /*** Do we sort Shell searches by dflt? **/ boolean SortGREP; /*** Do we sort GREP searches by default?**/ boolean SortCMD1; /*** Do we sort CMD1 searches by default?**/ int ReadTimeout; /*** Network READTIMEOUT value **/ unsigned OPCOM; /*** Operator's Console for $SNDOPR **/ String *Hidden_Prefix; /*** Files starting w/ this string are ignored **/ String *Link_Prefix; /*** Files starting w/ this string are .LINKS files **/ String *LookAside; /*** Name for the lookaside directories **/ String *DName; /*** Default name for files w/o lookaside**/ String *DHead; /*** Default printfile() header **/ String *DFoot; /*** Default printfile() footer **/ String *Scratch_Dir; /*** Where our scratch directory is **/ String *Support_Dir; /*** Where our support files reside **/ String *Spawn_Init; /*** Command file for spawned processes **/ String *RestartLnm; /*** Logical name to watch for RESTART **/ int rollover; /*** Rollover period for log file **/ #define ROLLOVER_NEVER 0 #define ROLLOVER_ANNUALLY 1 #define ROLLOVER_MONTHLY 2 #define ROLLOVER_DAILY 3 #define ROLLOVER_HOURLY 4 #define ROLLOVER_WEEKLY 5 String *LogFileTag; /*** some tag to identify this daemon **/ String *ConfigFile; /*** where all this stuff came from **/ #endif }; typedef struct gdconf_struct GDCobj; #define GDCgetDefAccess(a) ((a)->Defaccess) #define GDCgetInetdActive(a) ((a)->RunFromInetd) #define GDCsetInetdActive(a,b) ((a)->RunFromInetd=(b)) #define GDCgetCaching(a) ((a)->Caching) #define GDCsetCaching(a,b) ((a)->Caching=(b)) #define GDCgetCachetime(a) ((a)->Cachetime) #define GDCsetCachetime(a,b) ((a)->Cachetime=(b)) #define GDCgetLogfile(a) STRget((a)->Logfile) #define GDCsetLogfile(a,b) STRset((a)->Logfile,(b)) #define GDCgetErrorfile(a) STRget((a)->Errorfile) #define GDCsetErrorfile(a,b) STRset((a)->Errorfile,(b)) #ifndef VMS_SERVER #define GDCgetDatadir(a) STRget((a)->Data_Dir) #else #define GDCgetDatadir(a) STRget((a)->DataDir) #endif #define GDCgetHostname(a) STRget((a)->Hostname) #define GDCsetHostname(a,b) STRset((a)->Hostname,(b)) #define GDCgetPort(a) ((a)->Port) #define GDCgetchroot(a) ((a)->chroot) #define GDCgetBummerMsg(a) STRget((a)->BummerMsg) #define GDCsetBummerMsg(a,b) STRset((a)->BummerMsg,(b)) #define GDCgetAdmin(a) STRget((a)->Admin) #define GDCsetAdmin(a,b) STRset((a)->Admin,(b)) #define GDCgetAdminEmail(a) STRget((a)->AdminEmail) #define GDCsetAdminEmail(a,b) STRset((a)->AdminEmail,(b)) #define GDCgetSite(a) STRget((a)->Site) #define GDCsetSite(a,b) STRset((a)->Site,(b)) #define GDCgetOrg(a) STRget((a)->Org) #define GDCsetOrg(a,b) STRset((a)->Org,(b)) #define GDCgetLoc(a) STRget((a)->Loc) #define GDCsetLoc(a,b) STRset((a)->Loc,(b)) #define GDCsetGeog(a,b) STRset((a)->Geog,(b)) #define GDCgetGeog(a) STRget((a)->Geog) #define GDCgetLang(a) STRget((a)->Lang) #define GDCsetLang(a,b) STRset((a)->Lang,(b)) #define GDCgetTixfile(a) STRget((a)->Tixfile) #define GDCsetTixfile(a,b) STRset((a)->Tixfile,(b)) #define GDCgetShouldIndex(a) ((a)->VeronicaIndex) #define GDCsetShouldIndex(a,b) ((a)->VeronicaIndex=(b)) #define GDCgetOtherGDCpath(a,b) (STAgetText((a)->other_dirs,(b))) #define GDCgetOtherGDCconf(a,b) (STAgetText((a)->other_gdcs,(b))) #define GDCgetTZ(a) (a)->TZ #define GDCsetTZ(a,b) ((a)->TZ=(b)) #define GDCgetTimeZone(a) STRget((a)->TimeZoneText) #define GDCsetTimeZone(a,b) STRset((a)->TimeZoneText,(b)) #define GDCgetMaxLoad(a) (a)->MaxLoad #define GDCsetMaxLoad(a,b) ((a)->MaxLoad=(b)) #define GDCgetPW(a) (STRget((a)->Serverpw)) #define GDCsetPW(a,b) (STRset((a)->Serverpw,(b))) #define GDCgetAbstract(a) (STRget((a)->Abstract)) #define GDCsetAbstract(a,b) (STRset((a)->Abstract,(b))) #define GDCgetFileSep(a,b) (STAgetText((a)->FileSeparators,(b))) #define GDCgetNumFileSep(a) (STAgetTop((a)->FileSeparators)) #define GDCnumBlkScripts(a) (STAgetTop((a)->BlkScripts)) #define GDCgetBlkName(a,b) (STAgetText((a)->BlkScriptBlocks,(b))) #define GDCgetBlkScript(a,b) (STAgetText((a)->BlkScripts,(b))) #define GDCgetMaxconns(a) ((a)->MaxConnections) #define GDCsetMaxconns(a,b) ((a)->MaxConnections=(b)) #ifdef VMS_SERVER #define GDCsetPort(a,b) ((a)->Port=(b)) #define GDCgetReadTimeout(a) ((a)->ReadTimeout) #define GDCsetReadTimeout(a,b) ((a)->ReadTimeout=(b)) #define GDCgetOPCOM(a) ((a)->OPCOM) #define GDCsetOPCOM(a,b) ((a)->OPCOM=(b)) #define GDCgetFTPPort(a) ((a)->FTPPort) #define GDCsetFTPPort(a,b) ((a)->FTPPort=(b)) #define GDCgetEXECPort(a) ((a)->EXECPort) #define GDCsetEXECPort(a,b) ((a)->EXECPort=(b)) #define GDCgetSRCHPort(a) ((a)->SRCHPort) #define GDCsetSRCHPort(a,b) ((a)->SRCHPort=(b)) #define GDCgetOVERPort(a) ((a)->OVERPort) #define GDCsetOVERPort(a,b) ((a)->OVERPort=(b)) #define GDCgetOVERSize(a) ((a)->OVERSize) #define GDCsetOVERSize(a,b) ((a)->OVERSize=(b)) #define GDCgetIsGplus(a) ((a)->IsGplus) #define GDCsetIsGplus(a,b) ((a)->IsGplus=(b)) #define GDCgetIgnoreAll(a) ((a)->IgnoreAll) #define GDCsetIgnoreAll(a,b) ((a)->IgnoreAll=(b)) #define GDCgetSortDir(a) ((a)->SortDir) #define GDCsetSortDir(a,b) ((a)->SortDir=(b)) #define GDCgetSortShell(a) ((a)->SortShell) #define GDCsetSortShell(a,b) ((a)->SortShell=(b)) #define GDCgetSortGREP(a) ((a)->SortGREP) #define GDCsetSortGREP(a,b) ((a)->SortGREP=(b)) #define GDCgetSortCMD1(a) ((a)->SortCMD1) #define GDCsetSortCMD1(a,b) ((a)->SortCMD1=(b)) #define GDCsetDatadir(a,b) STRset((a)->DataDir,(b)) #define GDCgetHiddenPrefix(a) STRget((a)->Hidden_Prefix) #define GDCsetHiddenPrefix(a,b) STRset((a)->Hidden_Prefix,(b)) #define GDClenHiddenPrefix(a) (strlen(GDCgetHiddenPrefix(a))) #define GDCisHidden(a,b) (strncasecmp(b,GDCgetHiddenPrefix(a),\ GDClenHiddenPrefix(a))==0) #define GDCgetLinkPrefix(a) STRget((a)->Link_Prefix) #define GDCsetLinkPrefix(a,b) STRset((a)->Link_Prefix,(b)) #define GDClenLinkPrefix(a) (strlen(GDCgetLinkPrefix(a))) #define GDCisLink(a,b) (strncasecmp(b,GDCgetLinkPrefix(a),\ GDClenLinkPrefix(a))==0) #define GDCgetLookAside(a) STRget((a)->LookAside) #define GDCsetLookAside(a,b) STRset((a)->LookAside,(b)) #define GDCgetDName(a) STRget((a)->DName) #define GDCsetDName(a,b) STRset((a)->DName,(b)) #define GDCgetDHead(a) STRget((a)->DHead) #define GDCsetDHead(a,b) STRset((a)->DHead,(b)) #define GDCgetDFoot(a) STRget((a)->DFoot) #define GDCsetDFoot(a,b) STRset((a)->DFoot,(b)) #define GDCgetScratchDir(a) STRget((a)->Scratch_Dir) #define GDCsetScratchDir(a,b) STRset((a)->Scratch_Dir,(b)) #define GDCgetSupportDir(a) STRget((a)->Support_Dir) #define GDCsetSupportDir(a,b) STRset((a)->Support_Dir,(b)) #define GDCgetSpawnInit(a) STRget((a)->Spawn_Init) #define GDCsetSpawnInit(a,b) STRset((a)->Spawn_Init,(b)) #define GDCgetRestart(a) STRget((a)->RestartLnm) #define GDCsetRestart(a,b) STRset((a)->RestartLnm,(b)) #define GDCgetRollover(a) ((a)->rollover) #define GDCsetRollover(a,b) ((a)->rollover=(b)) #define GDCgetConfig(a) STRget((a)->ConfigFile) #define GDCsetConfig(a,b) STRset((a)->ConfigFile,(b)) #define GDCgetLogTag(a) STRget((a)->LogFileTag) #define GDCsetLogTag(a,b) STRset((a)->LogFileTag,(b)) #define GDCsetCaching(a,b) ((a)->Caching=(b)) #define GDCsetchroot(a,b) ((a)->chroot=(b)) #endif /* * Real live functions in gopherdconf.c */ GDCobj *GDCnew(); void GDCinit(/* gdc, FILE* gdc.conf file */); void GDCdestroy(/* gdc */); #ifdef VMS_SERVER GDCobj *GDCcpy(/* orig */); #endif boolean GDCignore(/* gdc, char *filename */); #ifndef NO_AUTHENTICATION AccessResult GDCCanRead(/* gdc, hostname, ipnum */); AccessResult GDCCanBrowse(/* gdc, hostname, ipnum */); AccessResult GDCCanSearch(/* gdc, hostname, ipnum */); AccessResult GDCCanFTP(/* gdc, hostname, ipnum */); #ifdef VMS_SERVER AccessResult GDCCanEXEC(/* gdc, hostname, ipnum */); AccessResult GDCcanAccess(/* gdc, hostname, ipnum, sessions, access */); AccessResult GScanAccess(/* sockfd, gopherstruct, access */); #endif char *GDCauthType(); AUTHresult GDCvalidate(); char **GDCauthAsk(); #else # define GDCCanRead(a,b,c,d) (SITE_OK) # define GDCCanBrowse(a,b,c,d) (SITE_OK) # define GDCCanSearch(a,b,c,d) (SITE_OK) # define GDCCanFTP(a,b,c,d) (SITE_OK) #ifdef VMS_SERVER # define GDCCanEXEC(a,b,c,d) (SITE_OK) # define GDCcanAccess(a,b,c,d,e) (SITE_OK) # define GScanAccess(a,b,c) (SITE_OK) #endif # define GDCauthType(a,b) (NULL) # define GDCvalidate(a,b,c,d,e,f) (AUTHRES_OK) # define GDCauthAsk(a,b) (NULL) #endif boolean GDCExtension(/*gdc, ext, Gtype, Prefix*/); void GDCpushOtherGDC(); void GDCaddFileSep(); void GDCpushBlockScript(); #ifdef VMS_SERVER #undef GDCgetLogfile char *GDCgetLogfile(/* gdc */); void GDCfromLink(/*gdc, fio, sep*/); #endif #endif /* GOPHERDCONF_H */ .