1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117
|
/********************************************************************
* $Author: lindner $
* $Revision: 3.10 $
* $Date: 1995/09/26 05:16:23 $
* $Source: /home/arcwelder/GopherSrc/CVS/gopher+/gopherd/site.h,v $
* $State: 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: site.h
* Main functions for the gopher client
*********************************************************************
* Revision History:
* $Log: site.h,v $
* Revision 3.10 1995/09/26 05:16:23 lindner
* more fixes...
*
* Revision 3.9 1995/09/25 05:02:40 lindner
* Convert to ANSI C
*
* Revision 3.8 1994/07/22 22:59:40 lindner
* More NO_AUTH stuff..
*
* Revision 3.7 1994/07/22 22:56:21 lindner
* More NO_AUTH stuff..
*
* Revision 3.6 1994/06/29 05:31:15 lindner
* Use an enum
*
* Revision 3.5 1994/03/17 21:18:26 lindner
* Massive reworking of access limits
*
* Revision 3.4 1994/03/17 04:27:17 lindner
* Add funky site defines
*
* Revision 3.3 1993/12/27 16:32:38 lindner
* Fix cvs header
*
* Revision 3.2 1993/08/20 18:03:17 lindner
* Mods to allow gopherd.conf files control ftp gateway access
*
* Revision 3.1.1.1 1993/02/11 18:02:53 lindner
* Gopher+1.2beta release
*
* Revision 1.1 1992/12/10 23:13:27 lindner
* gopher 1.1 release
*
*
*********************************************************************/
/*
* Definitions for security and hostname access
*/
#ifndef SITE_H
#define SITE_H
#include "STRstring.h"
#include "boolean.h"
#include "DAarray.h"
#include <errno.h>
typedef int Accesslevel;
#define ACC_BROWSE (1<<0)
#define ACC_READ (1<<1)
#define ACC_SEARCH (1<<2)
#define ACC_FTP (1<<3)
#define ACC_UNKNOWN (-1)
#define ACC_FULL (ACC_BROWSE | ACC_READ | ACC_SEARCH | ACC_FTP)
struct Site_struct {
String *domain;
Accesslevel Level;
boolean isnum;
int maxsessions;
};
typedef struct Site_struct Site;
#define SITEgetDomain(a) (STRget((a)->domain))
#define SITEgetLevel(a) ((a)->Level)
#define SITEisnum(a) ((a)->isnum)
#define SITEmaxsessions(a) ((a)->maxsessions)
#define SITEsetDomain(a,b) (STRset((a)->domain),b)
#define SITEsetLevel(a,b) ((a)->Level=(b))
#define SITEsetisnum(a,b) ((a)->isnum=(b))
#define SITEsetmaxsessions(a,b) ((a)->maxsessions=(b))
typedef DynArray SiteArray;
#define SiteArrgetEntry(a,b) (Site *)(DAgetEntry((DynArray*)a,b))
#define SiteArrDestroy(a) (DAdestroy(a))
#define SiteArrPush(a,b) (DApush((DynArray*)(a),(char*)(b)))
typedef enum {SITE_UNDEF, SITE_OK, SITE_NOACCESS, SITE_TOOBUSY} AccessResult;
/** Functions declared in site.c **/
#ifndef NO_AUTHENTICATION
SiteArray *SiteArrayNew();
AccessResult SiteAccess(SiteArray*, char*, char*, Accesslevel, int);
Accesslevel SiteDefAccess(SiteArray *sitearr);
boolean SiteProcessLine(SiteArray *, char *, Accesslevel);
#else
# define SiteArrayNew() (NULL)
# define SiteAccess(a,b,c,d,e) (SITE_OK)
# define SiteProcessLine(a,b,c) (1)
# define SiteDefAccess(a) (ACC_BROWSE|ACC_READ|ACC_SEARCH|ACC_FTP)
#endif
#endif /* SITE_H */
|