/********************************************************************
* lindner
* 3.5
* 1995/02/13 19:10:34
* /home/arcwelder/GopherSrc/CVS/gopher+/gopherd/AUTH.h,v
*
* Paul Lindner, University of Minnesota DCS.
*
* Copyright 1991, 92, 93, 94 by the Regents of the University of Minnesota
* see the file "Copyright" in the distribution for conditions of use.
*********************************************************************
* MODULE: AUTH.c
* Routines to verify authentication
*********************************************************************
* Revision History:
* AUTH.h,v
* Revision 3.5 1995/02/13 19:10:34 lindner
* next compile
*
* Revision 3.4 1995/02/06 21:24:58 lindner
* Add stuff for unix pw file
*
* Revision 3.3 1994/12/12 16:58:13 lindner
* Add new AUTHresult code, AUTHRES_SYSERR
*
* Revision 3.2 1994/07/22 22:27:44 lindner
* NO_AUTHENTICATION mods
*
* Revision 3.1 1994/06/29 05:34:20 lindner
* New authentication routines
*
*
*********************************************************************/
/*
* Platform independent authentication routines go here...
*
* AUTH object --> contains auth type name and script/fcn to call
* AUTHA object --> dynamic array of AUTH objects.
*
* AUTHITEM object --> contains directory, authtype, link to dns sites
*/
#include "boolean.h"
#include "STAarray.h"
typedef enum {AUTH_UNINITED, AUTH_INTERNAL, AUTH_SCRIPT} AUTHtype;
typedef enum {AUTHRES_OK, AUTHRES_BADPW, AUTHRES_EXPIRED,
AUTHRES_NOUSER, AUTHRES_SYSERR} AUTHresult;
struct AUTHstruct {
AUTHtype type;
String *name;
AUTHresult (*authfcn)(); /* The authentication test */
char **(*authfcnask)(); /* The authentication askblock fcn */
String *scriptname;
};
typedef struct AUTHstruct AUTH;
/*
* Member functions
*/
#define AUTHgetType(a) (a->type)
#define AUTHgetName(a) (STRget(a->name))
#define AUTHgetScriptName(a) (STRget(a->scriptname))
#define AUTHgetFcn(a) (a->authfcn)
#define AUTHgetAskFcn(a) (a->authfcnask)
#define AUTHsetType(a,b) (a->type=(b))
#define AUTHsetName(a,b) (STRset(a->name,(b)))
#define AUTHsetScriptName(a,b) (STRset(a->scriptname,b))
#define AUTHsetFcn(a,b) (a->authfcn=(b))
#define AUTHsetAskFcn(a,b) (a->authfcnask=(b))
/*
* Prototypes
*/
AUTH *AUTHnew();
void AUTHdestroy();
void AUTHinit();
AUTH *AUTHcpy();
AUTHresult AUTHunix();
AUTHresult AUTHident();
char **AUTHgenericAsk();
/******************************************************************
* Array of auth stuff...
*/
#include "DAarray.h"
typedef DynArray AUTHarray;
#define AUTHAgetEntry(a,b) (AUTH*)(DAgetEntry((DynArray*)a,b))
#define AUTHAdestroy(a) (DAdestroy(a))
#define AUTHApush(a,b) (DApush((a),(b)))
#define AUTHAgetTop(a) (DAgetTop(a))
#ifdef VMS_SERVER
#define AUTHAcpy(a,b) (DAcpy(a,b))
#define AUTHITEMScpy(a,b) {STAcpy(a->regexps,b->regexps);\
STAcpy(a->authtypes,b->authtypes);}
#endif
AUTHarray *AUTHAnew();
AUTHresult AUTHAvalidate();
AUTH* AUTHAlocate();
/******************************************************************
* List of items and authentication types.
*
*/
struct AUTHITEMS_struct {
StrArray *regexps;
StrArray *authtypes;
};
typedef struct AUTHITEMS_struct AUTHITEMS;
#define AUTHITEMSgetRegexp(a,i) (STRget(STAgetEntry((a)->regexps,i)))
#define AUTHITEMSgetAuthtype(a,i) (STRget(STAgetEntry((a)->authtypes,i)))
#ifndef NO_AUTHENTICATION
AUTHITEMS *AUTHITEMSnew();
void AUTHITEMSdestroy();
void AUTHITEMSpush();
AUTH *AUTHITEMSfindAUTH();
char *AUTHITEMSfindType();
#else
# define AUTHAvalidate(a,b,c,d,e,f) (AUTHRES_OK)
# define AUTHITEMSdestroy(a)
# define AUTHAnew(a) (NULL)
# define AUTHAprocessLine(a,b) (1)
# define AUTHITEMSfindType(a,b) (NULL)
# define AUTHITEMSprocessLine(a,b) (1)
# define AUTHITEMSnew(a) (NULL)
# define AUTHITEMSfindAUTH(a,b,c) (NULL)
#endif
.
Response:
text/plain