openldap/contrib/tweb/init_exp.h
1999-09-10 17:33:39 +00:00

383 lines
18 KiB
C

/*_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
* *
* init_exp.h. *
* *
* Function:..File for TWEB-SOFTWARE *
* *
* *
* *
* Authors:...Dr. Kurt Spanier & Bernhard Winkler, *
* Zentrum fuer Datenverarbeitung, Bereich Entwicklung *
* neuer Dienste, Universitaet Tuebingen, GERMANY *
* *
* ZZZZZ DDD V V *
* Creation date: Z D D V V *
* July 21 1995 Z D D V V *
* Last modification: Z D D V V *
* May 11 1999 ZZZZ DDD V *
* *
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_*/
/*
* $Id: init_exp.h,v 1.6 1999/09/10 15:01:17 zrnsk01 Exp $
*
*/
#ifndef _INIT_EXP_
#define _INIT_EXP_
#ifdef TUE_TEL
# include "tueTel_exp.h"
#endif
#include "regular_exp.h"
PUBLIC int get_str_param(/* FILELINE *inLine, char **str,
GLOB_STRUCT *glob, int lower */);
PUBLIC void getopts ();
PUBLIC void check ();
PUBLIC void init();
PUBLIC void output();
PUBLIC void langinit();
PUBLIC void langoutput();
PUBLIC void get_lang();
PUBLIC void file_test();
PUBLIC int do_readf();
PUBLIC void get_index_url_rules();
PUBLIC void re_read_index_url_rules();
extern STRDISP disp_types[];
/* A pointer to an integer-function */
typedef int (*IFP)();
/* One line in the config-file, with line-counter */
typedef struct _fileline {
char value[BUFSIZ];
int count;
} FILELINE;
/* Table-structure to parse the key-words in the config- und rc-files */
typedef struct _parse_keys {
char *keyWord;
IFP keyFunc;
struct _parse_keys *subTable;
} PARSE_ENTRY;
/* Maximum number of sub-lists in order to display result-lists */
#define MAX_OCS 128
/* List of attributes which will be displayed (on 1./2. page) */
typedef struct _display_line {
char *attribute; /* the X.500-Attribute */
char *label; /* the Label of the Web-Page */
char *type; /* the Format-Type as String (C-Option) */
int ty; /* the Format-Type as Int (print-Funkt.) */
struct _display_line *next; /* the next Attribute */
} DISPLAY_LINE, *pDISPLAY_LINE;
/* List of Object-Classes which shall be displayed */
typedef struct _display {
char *ocs; /* the X.500-Object-Class(es) */
DISPLAY_LINE *first_page; /* Attribute on the first page */
DISPLAY_LINE *second_page; /* Attribute on the second page */
struct _display *next; /* the next Objekt-Class(es) */
} DISPLAY, *pDISPLAY;
/* List of attributes which may be modified */
typedef struct _modify_line {
char *attribute; /* the X.500-attribute */
char *label; /* the Label in the modification-formulare */
int count; /* the maximmum number of attribute-values */
struct _modify_line *next; /* the next attribute */
} MODIFY_LINE, *pMODIFY_LINE;
/* List of Object-Class(es) which may be modified */
typedef struct _modify {
char *ocs; /* the X.500-Object-Class(es) */
MODIFY_LINE *modattr; /* the modifyable attributes */
struct _modify *next; /* the next Object-Class(es) */
} MODIF, *pMODIF;
/*attributes which are read from another entry */
typedef struct _ind_attr_arr {
char *key; /* pers for person etc. */
int replace; /* 2 -> function, 1 -> replace, 0 -> append */
char *attr; /* functionname / referenced attribute */
char *host; /* on which host to look */
int port; /* on which port to look */
char *base; /* where to look for ref-entry */
LDAPMessage **e; /* Pointer to the result */
LDAP *ld; /* Pointer to the matching LDAP-Struct */
} IND_ATTR_ARR;
typedef struct _ind_attrs {
char *ref_attr; /* name of the reference-attribute */
IND_ATTR_ARR *valid_nodes; /* valid nodes array (only in 1st element) */
IND_ATTR_ARR *ia_arr; /* supported keys, attrs and bases */
struct _ind_attrs *next; /* the next ind_attr */
} IND_ATTRS, *pIND_ATTRS;
/* Support-structure to sort the result-lists */
typedef struct _dncompare {
char *string; /* Sort-String */
char *href; /* Hyper-Link for the sorted entry */
char *raw; /* Raw data: -> <name>[<attr>=<value>&..%..$.. */
} DNLIST, *pDNLIST;
/* Structure to sort the result-lists object-class/attribute-related */
typedef struct _sort_line {
char *object_class; /* Object-class by which is sorted */
char *label; /* Label to display sub-lists */
int priority; /* Sequence for list-output */
char *display_class; /* dedicated display-class */
DISPLAY *display_class_ptr; /* Pointer therefor */
char *sort_attr; /* Attribut by which sorting is done */
pDNLIST *dnList; /* Entries in the sub-list */
int dnLast; /* Amount of entries in the sub-list */
int restricted; /* 1 -> sub-list was restricted : 0 -> not*/
struct _sort_line *next; /* the next Object-Class */
} SORT_LINE, *pSORT_LINE;
/* Structure to handle caching */
typedef struct _caching_terms_line {
int time; /* time to cache */
char *access_type; /* type of access */
int rdn_oc; /* 1 -> rdn, 0 -> oc -lookup */
char *pattern; /* mach-pattern: oc/rdn */
struct _caching_terms_line *next; /* the next line */
} CACHING_TERMS_LINE, *pCACHING_TERMS_LINE;
/* DN of the TWEB-Homepage, including header and footer thereof */
typedef struct _basedn_line {
char *dn;
char **dnarray;
char *head;
char *foot;
} BASEDN_LINE;
/* List of rules for table-button and table display */
typedef struct _table_display {
int allow; /* 1 -> tables only if allowed, 0 -> in any case */
char *select_oc; /* table-button only if
objectclass contains select_oc */
char *button_label; /* label for table-request-button */
char *dn_extension; /* extension behind button Xdn?MENU */
struct _table_display *next;
} TABLE_DISPLAY, *pTABLE_DISPLAY;
/* List of organisational units where only searching is permitted,
including header and footer thereof */
typedef struct _search_only_line {
char *dn;
char *head;
char *foot;
struct _search_only_line *next;
} SEARCH_ONLY_LINE, *pSEARCH_ONLY_LINE;
/* Anti-Hack Structure */
typedef struct _comrefuse {
int tmin;
int tdiff;
int maxAccept;
int suspendCycle;
time_t statCycle;
char *statFile;
} COMREFUSE;
/* static list of Gateway-Switches */
typedef struct _gw_switch_line {
char *dn; /* the DN of the organization(al unit) */
char *url; /* the URL of the gateway to be called */
struct _gw_switch_line *next; /* the next Gateway-Switch */
} GW_SWITCH_LINE, *pGW_SWITCH_LINE;
/* the head of the Gateway-Switch-list */
typedef struct _gw_switch {
int dynamic; /* is dynamic switching allowed */
char *lagws; /* language dependant recognition of
GW-Switch-entries in X.500
(language independant recognition is
implemented by macro) */
GW_SWITCH_LINE *list; /* the static list of switches */
} GW_SWITCH, *pGW_SWITCH;
/* static list of already available ldap-connections */
typedef struct _ld_list {
LDAP *ld; /* pointer to the ldap-structure */
char *host; /* The corresponding host */
int port; /* The corresponding port */
struct _ld_list *next; /* the next */
} LD_LIST, *pLD_LIST;
typedef struct _index_url_rule {
char *rule; /* Atribute providing data */
char *dit_dn; /* DN supporting config */
} INDEX_URL_RULE;
typedef struct _index_url {
char *dat_file; /* File providing data */
#define INDEX_RULE_SIZE 20
INDEX_URL_RULE rarr[INDEX_RULE_SIZE]; /* array with rules */
int rereadcycle; /* frequency to reread */
} INDEX_URL;
/* Structure to hold config of buttons leading to form-scripts */
typedef struct _form_button {
int read_menu; /* 1-> button in do_read; 0-> in do_menu */
char *object_class; /* display the button on presence of this
object-class*/
char *method; /* cgi method: GET .. */
char *script_url; /* URL of CGI-Script */
char *text; /* text in front of button */
char *dn_name; /* name of dn in hidden form */
char *form_name; /* name of form (submit-button) */
char *button_label; /* label of submit-button */
struct _form_button *next; /* the next FORM_BUTTON definition */
} FORM_BUTTON, *pFORM_BUTTON;
typedef struct _ip_refuse {
char *dat_file; /* File providing data */
char *refu_str; /* String of refused clients */
#define REFU_BUFSIZ 256
#define REFU_STRDELIM "&"
int rereadcycle; /* frequency to reread */
} IP_REFUSE;
/* the central structure of TWEB with the configuration of the gateway */
typedef struct _glob_struct {
char *webdn; /* GW-DN in case of authorisded access */
char *webpw; /* GW-PW in case of authorisded access */
char *webdn2; /* GW-DN in case of non-authorisded access */
char *webpw2; /* GW-PW in case of non-authorisded access */
int webport; /* the Port the GW is listening on */
int timeout; /* how long does the gateway wait for the DSA*/
time_t stat_slice; /* Time for the anti-Hack + Statistic */
char *ldapd; /* the computer LDAPD is running on */
int ldapport; /* the Port thereof */
char *grant; /* ':'-separated list of domains with access */
char *refuse; /* ':'-separated list of domains
without access */
char *allow_string; /* ':'-separated list of domains
supported with authorised access */
char *deny_string; /* ':'-separated list of domains
supported with restricted access */
regexp *comp_grant; /* compiled regular expressions for GRANT */
regexp *comp_refuse; /* compiled regular expressions for REFUSE */
regexp *comp_allow; /* compiled regular expressions for ALLOW_ST */
regexp *comp_deny; /* compiled regular expressions for DENY_ST. */
char **allow_proxy; /* ':'-separated list of proxy-servers
supported with authorised access */
char **subtree_search; /* ':'-separated list of objectclasses
where to make subtree_search instead of
single_level_search */
DISPLAY *display; /* presentation of Objects */
DISPLAY *default_display_type; /* pointer to the default display descript */
BASEDN_LINE *basedn; /* the entry-page of TWEB */
SEARCH_ONLY_LINE *search_only; /* where only searching is supported */
GW_SWITCH *gw_switch; /* the Gateway-Switching */
MODIF *modify; /* what may be modified within TWEB */
IND_ATTRS *ind_attrs; /*attributes which are read from
another entry */
int cache_expire; /* caching-time for proxies in seconds */
CACHING_TERMS_LINE *caching_terms; /* cache-control-rules */
int maxcount; /* maximum amount of result-lists */
int max_person; /* maximum amount of persons displayed */
COMREFUSE *comrefuse; /* Anti-Hack Structure */
TABLE_DISPLAY *tables; /* listings also as tables by button-request */
INDEX_URL *index_url; /* how to display search-results of index
-> display-type INDEX-URL */
FORM_BUTTON *form_button; /* display buttons leading to forms */
char *tables_marker; /* flag for menu with tables += their config */
char **language; /* the language links on a html-page */
char lang[2]; /* the number of the "own" language */
char *olang; /* the other languages */
char *no_show_rdn; /* String with "unvisible" DN parts */
char *no_modify; /* Objectclasses without MODIFY-button */
SORT_LINE *sort; /* how shall the results be sorted */
SORT_LINE *sorty[MAX_OCS]; /* Array with the sorted lists */
char **sort_attribs; /* Array with the sort-attributes */
char *myname; /* the programname */
char *argv0; /* ARGV[0] */
char *hostname; /* the name of the computer TWEB
is running on*/
int virtualport; /* port if defined is set in every link
instead of webport (may always
lead requests over www4ward) */
char *header; /* the header for the standardpage */
char *footer; /* the footer for the standardpage */
char *allow_msg; /* file containing allow-message */
char *helpfile; /* the helpfile */
char *filterfile; /* the filterfile for LDAP-search */
char *etcdir; /* the directory containing the supportfiles */
char *friendlyfile; /* the file for "more friendly" DNs */
char *acfilename; /* the name of the actual config-file */
time_t nowtime; /* actual time in tics */
time_t expiretime; /* time for cache to expire in tics */
char *nowtimestr; /* actual timestring in GMT */
char *strip_pin; /* truncation of PINs at named sort_ocs */
char *expiretimestr; /* timestring for cache to expire in GMT */
char *server_connection_msg; /* TCP Connection-message */
char *user_agent_msg; /* User-Agent message */
char *menu_filter; /* menu_filter */
#define LANG_ARR_SIZE 110
char la[LANG_ARR_SIZE][BUFSIZ]; /* language-specific text-fragments */
LD_LIST *ld_list; /* List of open LDAP-Connections */
char **raw_attrs; /* Attributes to be shown with raw_access */
size_t svc_cnt; /* A counter for the number of requests */
#ifdef TUE_TEL
DIT_CONFIG *dit_config; /* container for relations between DNs and
responsible host:port */
TON_URLS *ton_urls; /* TONs in addition to DNs */
char *phoneworld; /* visibility of phonebook */
#endif
IP_REFUSE *ip_refuse; /* refuse certain hosts by ip-addr */
#ifdef AMBIXGW
char *selbsteintrag[10]; /* some strings for AMBIX-selfentry */
#endif
unsigned show_defoc : 1, /* respect unknown OCs while sorting */
strict : 1, /* restriction of person-lists also in the
authorised case */
restricted : 1, /* hard restriction of the extent of the list*/
persRestricted : 1, /* restriction of person-lists (legal) */
prefer_ref_uris : 1, /* take over labeledURIS from
referenced objects */
is_proxy : 1, /* did the request come from a proxy-server */
pull_down_menus : 1, /* move upwards with pull-down-menus */
no_proxy : 1, /* no local proxy-servers */
strict_basedn : 1, /* no access outside BASEDN */
no_browse : 1, /* no person-lists while browsing */
noauth : 1, /* dynamic flag for question of authorisation*/
caching : 1, /* shall be cached by proxy-server */
legal : 1, /* display privacy-text */
legal_top : 1, /* display privacy-text on top */
unknown_host : 1, /* connection from unknown */
allowed : 1; /* access allowed for decide_access */
unsigned raw_data : 1, /* provide raw-data instead of html */
ldap_referral_mode : 1, /* TWEB displayes foreign ldap-url */
disp_sea_rdn : 1; /* display only rdns as search-result */
} GLOB_STRUCT, *pGLOB_STRUCT;
/* the function the gateway is initialized with */
void init();
#endif /* _INIT_EXP_ */