#ifndef SERVERCONF_H
#define SERVERCONF_H
#include "conf.h"
#ifdef __cplusplus
extern "C" {
#endif
typedef struct _server_conf_obj {
ConfigLine *begin;
ConfigLine *end;
sstr_t type;
UcxList *directives;
} ServerConfigObject;
typedef struct _server_conf {
ConfigParser parser;
char *file;
UcxMap *objects;
ServerConfigObject *obj;
} ServerConfig;
typedef struct _cfg_listener {
ServerConfigObject *cfgobj;
sstr_t name;
sstr_t vs;
sstr_t threadpool;
sstr_t address;
int port;
int nacceptors;
int cfg_correct;
} CfgListener;
typedef struct _cfg_keyfile_authdb {
sstr_t file;
} CfgKeyfileAuthDB;
typedef struct _cfg_ldap_authdb {
sstr_t host;
int port;
sstr_t basedn;
sstr_t binddn;
sstr_t bindpw;
} CfgLDAPAuthDB;
union authdb {
CfgKeyfileAuthDB keyfile;
CfgLDAPAuthDB ldap;
};
enum authdb_type {
AUTHDB_TYPE_KEYFILE,
AUTHDB_TYPE_LDAP
};
typedef struct _cfg_authdb {
sstr_t name;
enum authdb_type type;
union authdb cfg;
int cfg_correct;
} CfgAuthDB;
ServerConfig *load_server_config(
char *file);
void free_server_config(ServerConfig *conf);
int serverconf_parse(
void *p, ConfigLine *begin, ConfigLine *end,
sstr_t line);
UcxList* srvcfg_get_listeners(ServerConfig *cfg, UcxAllocator *mp,
int *error);
#ifdef __cplusplus
}
#endif
#endif