/********************************************************************
* 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 */
.
Response:
text/plain