Start development on 386BSD 0.0
[unix-history] / .ref-BSD-4_3_Net_2 / usr / src / contrib / isode / quipu / sys_tai.c
/* sys_tai.c - System tailoring routines */
#ifndef lint
static char *rcsid = "$Header: /f/osi/quipu/RCS/sys_tai.c,v 7.3 91/02/22 09:39:53 mrose Interim $";
#endif
/*
* $Header: /f/osi/quipu/RCS/sys_tai.c,v 7.3 91/02/22 09:39:53 mrose Interim $
*
*
* $Log: sys_tai.c,v $
* Revision 7.3 91/02/22 09:39:53 mrose
* Interim 6.8
*
* Revision 7.2 90/10/17 11:54:46 mrose
* sync
*
* Revision 7.1 90/07/09 14:46:38 mrose
* sync
*
* Revision 7.0 89/11/23 22:18:08 mrose
* Release 6.0
*
*/
/*
* NOTICE
*
* Acquisition, use, and distribution of this module and related
* materials are subject to the restrictions of a license agreement.
* Consult the Preface in the User's Manual for the full terms of
* this agreement.
*
*/
#include "quipu/util.h"
#include "quipu/policy.h"
#include "cmd_srch.h"
extern char *isodelogpath,
*treedir,
*dsaoidtable,
*mydsaname;
extern char startup_update;
extern int oidformat;
extern int no_dsp_chain;
extern int no_last_mod;
extern int search_level;
extern int read_only;
extern int admin_size;
extern int auth_bind;
extern time_t admin_time;
extern time_t cache_timeout;
extern time_t retry_timeout;
extern time_t slave_timeout;
extern time_t conn_timeout;
extern time_t nsap_timeout;
extern int bind_window;
extern unsigned watchdog_time;
extern unsigned watchdog_delta;
extern LLog * log_dsap;
#ifndef NO_STATS
extern LLog * log_stat;
#endif
#ifdef TURBO_INDEX
extern int optimized_only;
#endif
unsigned bind_policy = POLICY_ACCESS_ALL;
unsigned strong_policy = POLICY_ACCESS_ALL;
extern unsigned str2permission();
#define MLOGDIR 1
#define SYSLOG 2
#define OIDTAB 4
#define OIDFMT 5
#define ROOTDIR 8
#define MYDSANAME 11
#define PARENT 12
#define STATS 13
#define START_UPDATE 15
#define DSP_CHAIN 16
#define SEARCH_LEVEL 17
#define ISODE_TAILOR 18
#define LAST_MOD 19
#define ADMIN_SIZE 20
#define ADMIN_TIME 21
#define PREFER_DSA 22
#define CACHE_TIME 23
#define CONN_TIME 24
#define SLAVE_TIME 25
#define RETRY_TIME 26
#define CA_INFO 27
#define SECRET_KEY 28
#define NSAP_TIME 29
#define READ_ONLY 30
#define BIND_WINDOW 31
#define WATCHDOG_TIME 34
#define WATCHDOG_DELTA 35
#define BIND_POLICY 36
#define STRONG_POLICY 37
#define AUTH 38
#define SHADOW 39
#define OPTIMIZE_ATTR 40
#define OPTIMIZED_ONLY 41
#define INDEX_SUBTREE 42
#define INDEX_SIBLINGS 43
static CMD_TABLE cmdtab[] =
{
"LOGDIR", MLOGDIR,
"DSAPLOG", SYSLOG,
"OIDTABLE", OIDTAB,
"OIDFORMAT", OIDFMT,
"TREEDIR", ROOTDIR,
"MYDSANAME", MYDSANAME,
"PARENT", PARENT,
"UPDATE", START_UPDATE,
"DSPCHAINING", DSP_CHAIN,
"LASTMODIFIED", LAST_MOD,
"SEARCHLEVEL", SEARCH_LEVEL,
"ISODE", ISODE_TAILOR,
"ADMINSIZE", ADMIN_SIZE,
"ADMINTIME", ADMIN_TIME,
"CACHETIME", CACHE_TIME,
"SLAVETIME", SLAVE_TIME,
"RETRYTIME", RETRY_TIME,
"CONNTIME", CONN_TIME,
"NSAPTIME", NSAP_TIME,
"CAINFO", CA_INFO,
"SECRETKEY", SECRET_KEY,
"PREFERDSA", PREFER_DSA,
"READONLY", READ_ONLY,
"BINDWINDOW", BIND_WINDOW,
"WATCHDOG_TIME", WATCHDOG_TIME,
"WATCHDOG_DELTA", WATCHDOG_DELTA,
"BIND_POLICY", BIND_POLICY,
"STRONG_POLICY", STRONG_POLICY,
"AUTHENTICATION", AUTH,
"SHADOW", SHADOW,
#ifdef TURBO_INDEX
"OPTIMIZE_ATTR", OPTIMIZE_ATTR,
"OPTIMIZED_ONLY", OPTIMIZED_ONLY,
"INDEX_SUBTREE", INDEX_SUBTREE,
"INDEX_SIBLINGS", INDEX_SIBLINGS,
#endif
#ifndef NO_STATS
"STATS", STATS,
#endif
0, -1,
};
static CMD_TABLE authtab[] =
{
"NONE", 0,
"DN", 1,
"SIMPLE", 2,
"PROTECTED", 3,
"STRONG", 4,
0, 0,
};
/*
* do system wide initialisations
*/
dsa_sys_tai (argc, argv)
char **argv;
{
char *arg;
if(argc < 2)
return(NOTOK);
arg = argv[1];
switch(cmd_srch(argv[0], cmdtab))
{
case MLOGDIR:
DLOG (log_dsap,LLOG_TRACE,( "Tailor LOGDIR %s", arg));
isodelogpath = strdup (arg);
break;
#ifndef NO_STATS
case STATS:
DLOG (log_dsap,LLOG_TRACE,( "Tailor STATS %s", arg));
log_tai(log_stat, &argv[1], argc-1);
break;
#endif
case SYSLOG:
DLOG (log_dsap,LLOG_TRACE,( "Tailor SYSLOG %s", arg));
log_tai(log_dsap, &argv[1], argc-1);
break;
case OIDTAB:
DLOG (log_dsap,LLOG_TRACE,( "Tailor OIDTable=%s", arg));
dsaoidtable = strdup (arg);
load_oid_table (dsaoidtable);
break;
case OIDFMT:
DLOG (log_dsap,LLOG_TRACE,( "Tailor OIDFMT=%s", arg));
oidformat = atoi (arg);
break;
case ROOTDIR:
DLOG (log_dsap,LLOG_TRACE,( "Tailor Rootdir %s", arg));
treedir = strdup(arg);
break;
case MYDSANAME:
DLOG (log_dsap,LLOG_TRACE,( "Tailor Myname %s", arg));
mydsaname = strdup(arg);
break;
case DSP_CHAIN:
DLOG (log_dsap,LLOG_TRACE,( "Tailor DSPChaining %s", arg));
if (lexequ (arg,"on") == 0)
no_dsp_chain = FALSE;
else
no_dsp_chain = TRUE;
break;
case LAST_MOD:
DLOG (log_dsap,LLOG_TRACE,( "Tailor last modified %s", arg));
if (lexequ (arg,"on") == 0)
no_last_mod = FALSE;
else
no_last_mod = TRUE;
break;
case START_UPDATE:
DLOG (log_dsap,LLOG_TRACE,( "Tailor Update %s", arg));
if (lexequ (arg,"on") == 0)
startup_update = TRUE;
else
startup_update = FALSE;
break;
case READ_ONLY:
DLOG (log_dsap,LLOG_TRACE,( "Tailor read only", arg));
if (lexequ (arg,"on") == 0)
read_only = TRUE;
else
read_only = FALSE;
break;
case SEARCH_LEVEL:
search_level = atoi (arg);
DLOG (log_dsap,LLOG_TRACE,(" Tailor search level %d", search_level));
break;
case ADMIN_SIZE:
admin_size = atoi (arg);
DLOG (log_dsap,LLOG_TRACE,(" Tailor admin size %d", admin_size));
break;
case ADMIN_TIME:
(void) sscanf (arg, "%ld", &admin_time);
DLOG (log_dsap,LLOG_TRACE,(" Tailor admin time %ld", admin_time));
break;
case CACHE_TIME:
(void) sscanf (arg, "%ld", &cache_timeout);
DLOG (log_dsap,LLOG_TRACE,(" Tailor cache time %ld", cache_timeout));
break;
case RETRY_TIME:
(void) sscanf (arg, "%ld", &retry_timeout);
DLOG (log_dsap,LLOG_TRACE,(" Tailor retry time %ld", retry_timeout));
break;
case SLAVE_TIME:
(void) sscanf (arg, "%ld", &slave_timeout);
DLOG (log_dsap,LLOG_TRACE,(" Tailor slave time %ld", slave_timeout));
break;
case CONN_TIME:
(void) sscanf (arg, "%ld", &conn_timeout);
DLOG (log_dsap,LLOG_TRACE,(" Tailor conn time %ld", conn_timeout));
break;
case NSAP_TIME:
(void) sscanf (arg, "%ld", &nsap_timeout);
DLOG (log_dsap,LLOG_TRACE,(" Tailor nsap time %ld", nsap_timeout));
break;
case WATCHDOG_TIME:
(void) sscanf (arg, "%d", &watchdog_time);
DLOG (log_dsap,LLOG_TRACE,(" Tailor watchdog time %d", watchdog_time));
break;
case WATCHDOG_DELTA:
(void) sscanf (arg, "%d", &watchdog_delta);
DLOG (log_dsap,LLOG_TRACE,(" Tailor watchdog delta %d", watchdog_delta));
break;
case BIND_POLICY:
bind_policy = str2permission(arg);
DLOG(log_dsap,LLOG_TRACE,("Bind policy %d", bind_policy));
break;
case STRONG_POLICY:
strong_policy = str2permission(arg);
DLOG(log_dsap,LLOG_TRACE,("Strong auth. policy %d", strong_policy));
break;
case CA_INFO:
if (add_ca_key(arg) == OK)
DLOG (log_dsap,LLOG_TRACE,("Certification Authority: %s", arg));
else
LLOG (log_dsap,LLOG_EXCEPTIONS,("CA FAILURE: Certification Authority: %s ", arg));
break;
case SECRET_KEY:
if (set_secret_key(arg) == OK)
DLOG (log_dsap,LLOG_TRACE,("Secret key read from %s", arg));
else
LLOG (log_dsap,LLOG_EXCEPTIONS,("Secret key NOT read from %s", arg));
break;
case BIND_WINDOW:
bind_window = atoi(arg);
if (bind_window <= 0)
LLOG(log_dsap,LLOG_EXCEPTIONS,("Invalid bind window %s", arg));
else
DLOG (log_dsap, LLOG_TRACE,("Bind window %d", bind_window));
break;
case PREFER_DSA:
DLOG (log_dsap,LLOG_TRACE,( "Tailor prefer dsa %s", arg));
prefer_dsa (arg);
break;
case PARENT:
DLOG (log_dsap,LLOG_TRACE,( "Tailor parent name %s, address %s", arg,argv[2]));
add_str_parent (arg,argv[2]);
break;
case ISODE_TAILOR:
DLOG (log_dsap,LLOG_TRACE,( "Tailor Isode %s%s",arg,argv[2]));
(void) isodesetvar(arg,strdup(argv[2]),0);
break;
case AUTH:
auth_bind = cmd_srch(arg, authtab);
DLOG (log_dsap,LLOG_TRACE,( "Tailor authentication", arg));
break;
case SHADOW:
DLOG (log_dsap,LLOG_TRACE,( "Tailor shadow %s", arg));
shadow_attribute (arg);
break;
#ifdef TURBO_INDEX
case OPTIMIZED_ONLY:
if (lexequ(arg, "on") == 0)
optimized_only = TRUE;
else
optimized_only = FALSE;
DLOG(log_dsap, LLOG_TRACE, ("Tailor optimized only %s", arg));
break;
case OPTIMIZE_ATTR:
turbo_optimize(arg);
DLOG(log_dsap, LLOG_TRACE, (" Tailor optimize (%s)", arg));
break;
case INDEX_SUBTREE:
index_subtree(arg);
DLOG(log_dsap, LLOG_TRACE, ("Tailor index subtree %s", arg));
break;
case INDEX_SIBLINGS:
index_siblings(arg);
DLOG(log_dsap, LLOG_TRACE, ("Tailor index siblings %s", arg));
break;
#endif
}
return (OK);
}