SMOLNET PORTAL home about changes
/********************************************************************
 * 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
Original URLgopher://bitreich.org/9/gopher2007/2007-gopher-mirror/gop...
Content-Typetext/plain; charset=utf-8