mirror of
https://github.com/falk-werner/webfused
synced 2026-03-02 04:09:19 +00:00
refacator: merged wfd_config_builder into wfd_config
This commit is contained in:
@@ -1,81 +0,0 @@
|
||||
#include "webfused/config/builder.h"
|
||||
|
||||
void
|
||||
wfd_config_builder_set_server_vhostname(
|
||||
struct wfd_config_builder builder,
|
||||
char const * vhost_name)
|
||||
{
|
||||
builder.vtable->set_server_vhostname(builder.data, vhost_name);
|
||||
}
|
||||
|
||||
void
|
||||
wfd_config_builder_set_server_port(
|
||||
struct wfd_config_builder builder,
|
||||
int port)
|
||||
{
|
||||
builder.vtable->set_server_port(builder.data, port);
|
||||
}
|
||||
|
||||
void
|
||||
wfd_config_builder_set_server_key(
|
||||
struct wfd_config_builder builder,
|
||||
char const * key_path)
|
||||
{
|
||||
builder.vtable->set_server_key(builder.data, key_path);
|
||||
}
|
||||
|
||||
void
|
||||
wfd_config_builder_set_server_cert(
|
||||
struct wfd_config_builder builder,
|
||||
char const * cert_path)
|
||||
{
|
||||
builder.vtable->set_server_cert(builder.data, cert_path);
|
||||
}
|
||||
|
||||
void
|
||||
wfd_config_builder_set_server_document_root(
|
||||
struct wfd_config_builder builder,
|
||||
char const * document_root)
|
||||
{
|
||||
builder.vtable->set_server_document_root(builder.data, document_root);
|
||||
}
|
||||
|
||||
bool
|
||||
wfd_config_builder_add_auth_provider(
|
||||
struct wfd_config_builder builder,
|
||||
char const * provider,
|
||||
struct wfd_settings * settings)
|
||||
{
|
||||
return builder.vtable->add_auth_provider(builder.data, provider, settings);
|
||||
}
|
||||
|
||||
bool
|
||||
wfd_config_builder_add_filesystem(
|
||||
struct wfd_config_builder builder,
|
||||
char const * name,
|
||||
char const * mount_point)
|
||||
{
|
||||
return builder.vtable->add_filesystem(builder.data, name, mount_point);
|
||||
}
|
||||
|
||||
bool
|
||||
wfd_config_builder_set_logger(
|
||||
struct wfd_config_builder builder,
|
||||
char const * provider,
|
||||
int level,
|
||||
struct wfd_settings * settings)
|
||||
{
|
||||
return builder.vtable->set_logger(builder.data, provider, level, settings);
|
||||
}
|
||||
|
||||
void
|
||||
wfd_config_builder_set_user(
|
||||
struct wfd_config_builder builder,
|
||||
char const * user,
|
||||
char const * group)
|
||||
{
|
||||
return builder.vtable->set_user(builder.data, user, group);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1,138 +0,0 @@
|
||||
#ifndef WFD_CONFIG_BUILDER_H
|
||||
#define WFD_CONFIG_BUILDER_H
|
||||
|
||||
#ifndef __cplusplus
|
||||
#include <stdbool.h>
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
struct wfd_settings;
|
||||
|
||||
typedef void
|
||||
wfd_config_builder_set_server_vhostname_fn(
|
||||
void * data,
|
||||
char const * vhost_name);
|
||||
|
||||
typedef void
|
||||
wfd_config_builder_set_server_port_fn(
|
||||
void * data,
|
||||
int port);
|
||||
|
||||
typedef void
|
||||
wfd_config_builder_set_server_key_fn(
|
||||
void * data,
|
||||
char const * key_path);
|
||||
|
||||
typedef void
|
||||
wfd_config_builder_set_server_cert_fn(
|
||||
void * data,
|
||||
char const * cert_path);
|
||||
|
||||
typedef void
|
||||
wfd_config_builder_set_server_document_root_fn(
|
||||
void * data,
|
||||
char const * document_root);
|
||||
|
||||
typedef bool
|
||||
wfd_config_builder_add_auth_provider_fn(
|
||||
void * data,
|
||||
char const * provider,
|
||||
struct wfd_settings * settings);
|
||||
|
||||
typedef bool
|
||||
wfd_config_builder_add_filesystem_fn(
|
||||
void * data,
|
||||
char const * name,
|
||||
char const * mount_point);
|
||||
|
||||
typedef bool
|
||||
wfd_config_builder_set_logger_fn(
|
||||
void * data,
|
||||
char const * provider,
|
||||
int level,
|
||||
struct wfd_settings * settings);
|
||||
|
||||
typedef void
|
||||
wfd_config_builder_set_user_fn(
|
||||
void * data,
|
||||
char const * user,
|
||||
char const * group);
|
||||
|
||||
struct wfd_config_builder_vtable
|
||||
{
|
||||
wfd_config_builder_set_server_vhostname_fn * set_server_vhostname;
|
||||
wfd_config_builder_set_server_port_fn * set_server_port;
|
||||
wfd_config_builder_set_server_key_fn * set_server_key;
|
||||
wfd_config_builder_set_server_cert_fn * set_server_cert;
|
||||
wfd_config_builder_set_server_document_root_fn * set_server_document_root;
|
||||
wfd_config_builder_add_auth_provider_fn * add_auth_provider;
|
||||
wfd_config_builder_add_filesystem_fn * add_filesystem;
|
||||
wfd_config_builder_set_logger_fn * set_logger;
|
||||
wfd_config_builder_set_user_fn * set_user;
|
||||
};
|
||||
|
||||
struct wfd_config_builder
|
||||
{
|
||||
struct wfd_config_builder_vtable const * vtable;
|
||||
void * data;
|
||||
};
|
||||
|
||||
extern void
|
||||
wfd_config_builder_set_server_vhostname(
|
||||
struct wfd_config_builder builder,
|
||||
char const * vhost_name);
|
||||
|
||||
extern void
|
||||
wfd_config_builder_set_server_port(
|
||||
struct wfd_config_builder builder,
|
||||
int port);
|
||||
|
||||
extern void
|
||||
wfd_config_builder_set_server_key(
|
||||
struct wfd_config_builder builder,
|
||||
char const * key_path);
|
||||
|
||||
extern void
|
||||
wfd_config_builder_set_server_cert(
|
||||
struct wfd_config_builder builder,
|
||||
char const * cert_path);
|
||||
|
||||
extern void
|
||||
wfd_config_builder_set_server_document_root(
|
||||
struct wfd_config_builder builder,
|
||||
char const * document_root);
|
||||
|
||||
extern bool
|
||||
wfd_config_builder_add_auth_provider(
|
||||
struct wfd_config_builder builder,
|
||||
char const * provider,
|
||||
struct wfd_settings * settings);
|
||||
|
||||
extern bool
|
||||
wfd_config_builder_add_filesystem(
|
||||
struct wfd_config_builder builder,
|
||||
char const * name,
|
||||
char const * mount_point);
|
||||
|
||||
extern bool
|
||||
wfd_config_builder_set_logger(
|
||||
struct wfd_config_builder builder,
|
||||
char const * provider,
|
||||
int level,
|
||||
struct wfd_settings * settings);
|
||||
|
||||
extern void
|
||||
wfd_config_builder_set_user(
|
||||
struct wfd_config_builder builder,
|
||||
char const * user,
|
||||
char const * group);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -1,4 +1,5 @@
|
||||
#include "webfused/config/config.h"
|
||||
#include "webfused/config/config_intern.h"
|
||||
#include "webfuse/adapter/server_config.h"
|
||||
#include "webfused/auth/factory.h"
|
||||
#include "webfused/auth/authenticator.h"
|
||||
@@ -21,125 +22,6 @@ struct wfd_config
|
||||
char * group;
|
||||
};
|
||||
|
||||
static void
|
||||
wfd_config_set_server_vhostname(
|
||||
void * data,
|
||||
char const * vhost_name)
|
||||
{
|
||||
struct wfd_config * config = data;
|
||||
wf_server_config_set_vhostname(config->server, vhost_name);
|
||||
}
|
||||
|
||||
static void
|
||||
wfd_config_set_server_port(
|
||||
void * data,
|
||||
int port)
|
||||
{
|
||||
struct wfd_config * config = data;
|
||||
wf_server_config_set_port(config->server, port);
|
||||
}
|
||||
|
||||
static void
|
||||
wfd_config_set_server_key(
|
||||
void * data,
|
||||
char const * key_path)
|
||||
{
|
||||
struct wfd_config * config = data;
|
||||
wf_server_config_set_keypath(config->server, key_path);
|
||||
}
|
||||
|
||||
static void
|
||||
wfd_config_set_server_cert(
|
||||
void * data,
|
||||
char const * cert_path)
|
||||
{
|
||||
struct wfd_config * config = data;
|
||||
wf_server_config_set_certpath(config->server, cert_path);
|
||||
}
|
||||
|
||||
static void
|
||||
wfd_config_set_server_document_root(
|
||||
void * data,
|
||||
char const * document_root)
|
||||
{
|
||||
struct wfd_config * config = data;
|
||||
wf_server_config_set_documentroot(config->server, document_root);
|
||||
}
|
||||
|
||||
static bool
|
||||
wfd_config_add_auth_provider(
|
||||
void * data,
|
||||
char const * provider,
|
||||
struct wfd_settings * settings)
|
||||
{
|
||||
bool result = false;
|
||||
struct wfd_config * config = data;
|
||||
|
||||
if (!config->has_authenticator)
|
||||
{
|
||||
result = wfd_authenticator_create(provider, settings, &config->authenticator);
|
||||
if (result)
|
||||
{
|
||||
wf_server_config_add_authenticator(
|
||||
config->server,
|
||||
wfd_authenticator_get_type(config->authenticator),
|
||||
config->authenticator.vtable->authenticate,
|
||||
config->authenticator.data);
|
||||
|
||||
config->has_authenticator = true;
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
static bool
|
||||
wfd_config_add_filesystem(
|
||||
void * data,
|
||||
char const * name,
|
||||
char const * mount_point)
|
||||
{
|
||||
struct wfd_config * config = data;
|
||||
return wfd_mountpoint_factory_add_filesystem(
|
||||
config->mountpoint_factory, name, mount_point);
|
||||
}
|
||||
|
||||
static bool
|
||||
wfd_config_set_logger(
|
||||
void * data,
|
||||
char const * provider,
|
||||
int level,
|
||||
struct wfd_settings * settings)
|
||||
{
|
||||
struct wfd_config * config = data;
|
||||
return wfd_log_manager_set_logger(provider, level, settings);
|
||||
}
|
||||
|
||||
static void
|
||||
wfd_config_set_user(
|
||||
void * data,
|
||||
char const * user,
|
||||
char const * group)
|
||||
{
|
||||
struct wfd_config * config = data;
|
||||
config->user = strdup(user);
|
||||
config->group = strdup(group);
|
||||
}
|
||||
|
||||
static const struct wfd_config_builder_vtable
|
||||
wfd_config_vtable_config_builder =
|
||||
{
|
||||
.set_server_vhostname = &wfd_config_set_server_vhostname,
|
||||
.set_server_port = &wfd_config_set_server_port,
|
||||
.set_server_key = &wfd_config_set_server_key,
|
||||
.set_server_cert = &wfd_config_set_server_cert,
|
||||
.set_server_document_root = &wfd_config_set_server_document_root,
|
||||
.add_auth_provider = &wfd_config_add_auth_provider,
|
||||
.add_filesystem = &wfd_config_add_filesystem,
|
||||
.set_logger = &wfd_config_set_logger,
|
||||
.set_user = &wfd_config_set_user
|
||||
};
|
||||
|
||||
struct wfd_config *
|
||||
wfd_config_create(void)
|
||||
{
|
||||
@@ -175,17 +57,100 @@ wfd_config_dispose(
|
||||
free(config);
|
||||
}
|
||||
|
||||
struct wfd_config_builder
|
||||
wfd_config_get_builder(
|
||||
struct wfd_config * config)
|
||||
void
|
||||
wfd_config_set_server_vhostname(
|
||||
struct wfd_config * config,
|
||||
char const * vhost_name)
|
||||
{
|
||||
struct wfd_config_builder builder =
|
||||
{
|
||||
&wfd_config_vtable_config_builder,
|
||||
config
|
||||
};
|
||||
wf_server_config_set_vhostname(config->server, vhost_name);
|
||||
}
|
||||
|
||||
return builder;
|
||||
void
|
||||
wfd_config_set_server_port(
|
||||
struct wfd_config * config,
|
||||
int port)
|
||||
{
|
||||
wf_server_config_set_port(config->server, port);
|
||||
}
|
||||
|
||||
void
|
||||
wfd_config_set_server_key(
|
||||
struct wfd_config * config,
|
||||
char const * key_path)
|
||||
{
|
||||
wf_server_config_set_keypath(config->server, key_path);
|
||||
}
|
||||
|
||||
void
|
||||
wfd_config_set_server_cert(
|
||||
struct wfd_config * config,
|
||||
char const * cert_path)
|
||||
{
|
||||
wf_server_config_set_certpath(config->server, cert_path);
|
||||
}
|
||||
|
||||
void
|
||||
wfd_config_set_server_document_root(
|
||||
struct wfd_config * config,
|
||||
char const * document_root)
|
||||
{
|
||||
wf_server_config_set_documentroot(config->server, document_root);
|
||||
}
|
||||
|
||||
bool
|
||||
wfd_config_add_auth_provider(
|
||||
struct wfd_config * config,
|
||||
char const * provider,
|
||||
struct wfd_settings * settings)
|
||||
{
|
||||
bool result = false;
|
||||
|
||||
if (!config->has_authenticator)
|
||||
{
|
||||
result = wfd_authenticator_create(provider, settings, &config->authenticator);
|
||||
if (result)
|
||||
{
|
||||
wf_server_config_add_authenticator(
|
||||
config->server,
|
||||
wfd_authenticator_get_type(config->authenticator),
|
||||
config->authenticator.vtable->authenticate,
|
||||
config->authenticator.data);
|
||||
|
||||
config->has_authenticator = true;
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
bool
|
||||
wfd_config_add_filesystem(
|
||||
struct wfd_config * config,
|
||||
char const * name,
|
||||
char const * mount_point)
|
||||
{
|
||||
return wfd_mountpoint_factory_add_filesystem(
|
||||
config->mountpoint_factory, name, mount_point);
|
||||
}
|
||||
|
||||
bool
|
||||
wfd_config_set_logger(
|
||||
struct wfd_config * config,
|
||||
char const * provider,
|
||||
int level,
|
||||
struct wfd_settings * settings)
|
||||
{
|
||||
return wfd_log_manager_set_logger(provider, level, settings);
|
||||
}
|
||||
|
||||
void
|
||||
wfd_config_set_user(
|
||||
struct wfd_config * config,
|
||||
char const * user,
|
||||
char const * group)
|
||||
{
|
||||
config->user = strdup(user);
|
||||
config->group = strdup(group);
|
||||
}
|
||||
|
||||
struct wf_server_config *
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
#ifndef WFD_CONFIG_H
|
||||
#define WFD_CONFIG_H
|
||||
|
||||
#include "webfused/config/builder.h"
|
||||
|
||||
#ifndef __cplusplus
|
||||
#include <stdbool.h>
|
||||
#include <stddef.h>
|
||||
@@ -18,17 +16,10 @@ extern "C"
|
||||
struct wfd_config;
|
||||
struct wf_server_config;
|
||||
|
||||
extern struct wfd_config *
|
||||
wfd_config_create(void);
|
||||
|
||||
extern void
|
||||
wfd_config_dispose(
|
||||
struct wfd_config * config);
|
||||
|
||||
extern struct wfd_config_builder
|
||||
wfd_config_get_builder(
|
||||
struct wfd_config * config);
|
||||
|
||||
extern struct wf_server_config *
|
||||
wfd_config_get_server_config(
|
||||
struct wfd_config * config);
|
||||
|
||||
73
src/webfused/config/config_intern.h
Normal file
73
src/webfused/config/config_intern.h
Normal file
@@ -0,0 +1,73 @@
|
||||
#ifndef WFD_CONFIG_INTERN_H
|
||||
#define WFD_CONFIG_INTERN_H
|
||||
|
||||
#ifndef __cplusplus
|
||||
#include <stdbool.h>
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
struct wfd_settings;
|
||||
struct wfd_config;
|
||||
|
||||
extern struct wfd_config *
|
||||
wfd_config_create(void);
|
||||
|
||||
extern void
|
||||
wfd_config_set_server_vhostname(
|
||||
struct wfd_config * config,
|
||||
char const * vhost_name);
|
||||
|
||||
extern void
|
||||
wfd_config_set_server_port(
|
||||
struct wfd_config * config,
|
||||
int port);
|
||||
|
||||
extern void
|
||||
wfd_config_set_server_key(
|
||||
struct wfd_config * config,
|
||||
char const * key_path);
|
||||
|
||||
extern void
|
||||
wfd_config_set_server_cert(
|
||||
struct wfd_config * config,
|
||||
char const * cert_path);
|
||||
|
||||
extern void
|
||||
wfd_config_set_server_document_root(
|
||||
struct wfd_config * config,
|
||||
char const * document_root);
|
||||
|
||||
extern bool
|
||||
wfd_config_add_auth_provider(
|
||||
struct wfd_config * config,
|
||||
char const * provider,
|
||||
struct wfd_settings * settings);
|
||||
|
||||
extern bool
|
||||
wfd_config_add_filesystem(
|
||||
struct wfd_config * config,
|
||||
char const * name,
|
||||
char const * mount_point);
|
||||
|
||||
extern bool
|
||||
wfd_config_set_logger(
|
||||
struct wfd_config * config,
|
||||
char const * provider,
|
||||
int level,
|
||||
struct wfd_settings * settings);
|
||||
|
||||
extern void
|
||||
wfd_config_set_user(
|
||||
struct wfd_config * config,
|
||||
char const * user,
|
||||
char const * group);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -1,4 +1,6 @@
|
||||
#include "webfused/config/factory.h"
|
||||
#include "webfused/config/config_intern.h"
|
||||
#include "webfused/config/config.h"
|
||||
#include "webfused/config/settings_intern.h"
|
||||
#include "webfused/log/log.h"
|
||||
|
||||
@@ -58,7 +60,7 @@ wfd_config_check_version(
|
||||
static bool
|
||||
wfd_config_read_logger(
|
||||
config_t * config,
|
||||
struct wfd_config_builder builder)
|
||||
struct wfd_config * builder)
|
||||
{
|
||||
bool result = true;
|
||||
|
||||
@@ -100,7 +102,7 @@ wfd_config_read_logger(
|
||||
config_setting_t * setting = config_lookup(config, "log.settings");
|
||||
struct wfd_settings settings;
|
||||
wfd_settings_init(&settings, setting);
|
||||
result = wfd_config_builder_set_logger(builder, provider, level, &settings);
|
||||
result = wfd_config_set_logger(builder, provider, level, &settings);
|
||||
wfd_settings_cleanup(&settings);
|
||||
}
|
||||
}
|
||||
@@ -111,41 +113,41 @@ wfd_config_read_logger(
|
||||
static bool
|
||||
wfd_config_read_server(
|
||||
config_t * config,
|
||||
struct wfd_config_builder builder)
|
||||
struct wfd_config * builder)
|
||||
{
|
||||
char const * vhost_name;
|
||||
int rc = config_lookup_string(config, "server.vhost_name", &vhost_name);
|
||||
if (CONFIG_TRUE == rc)
|
||||
{
|
||||
wfd_config_builder_set_server_vhostname(builder, vhost_name);
|
||||
wfd_config_set_server_vhostname(builder, vhost_name);
|
||||
}
|
||||
|
||||
int port;
|
||||
rc = config_lookup_int(config, "server.port", &port);
|
||||
if (CONFIG_TRUE == rc)
|
||||
{
|
||||
wfd_config_builder_set_server_port(builder, port);
|
||||
wfd_config_set_server_port(builder, port);
|
||||
}
|
||||
|
||||
char const * cert;
|
||||
rc = config_lookup_string(config, "server.tls.certificate", &cert);
|
||||
if (CONFIG_TRUE == rc)
|
||||
{
|
||||
wfd_config_builder_set_server_cert(builder, cert);
|
||||
wfd_config_set_server_cert(builder, cert);
|
||||
}
|
||||
|
||||
char const * key;
|
||||
rc = config_lookup_string(config, "server.tls.key", &key);
|
||||
if (CONFIG_TRUE == rc)
|
||||
{
|
||||
wfd_config_builder_set_server_key(builder, key);
|
||||
wfd_config_set_server_key(builder, key);
|
||||
}
|
||||
|
||||
char const * doc_root;
|
||||
rc = config_lookup_string(config, "server.document_root", &doc_root);
|
||||
if (CONFIG_TRUE == rc)
|
||||
{
|
||||
wfd_config_builder_set_server_document_root(builder, doc_root);
|
||||
wfd_config_set_server_document_root(builder, doc_root);
|
||||
}
|
||||
|
||||
return true;
|
||||
@@ -154,7 +156,7 @@ wfd_config_read_server(
|
||||
static bool
|
||||
wfd_config_read_authenticator(
|
||||
config_setting_t * authenticator,
|
||||
struct wfd_config_builder builder)
|
||||
struct wfd_config * builder)
|
||||
{
|
||||
bool result = (NULL != authenticator);
|
||||
|
||||
@@ -185,7 +187,7 @@ wfd_config_read_authenticator(
|
||||
struct wfd_settings auth_settings;
|
||||
wfd_settings_init(&auth_settings, settings);
|
||||
|
||||
result = wfd_config_builder_add_auth_provider(builder, provider_name, &auth_settings);
|
||||
result = wfd_config_add_auth_provider(builder, provider_name, &auth_settings);
|
||||
wfd_settings_cleanup(&auth_settings);
|
||||
}
|
||||
|
||||
@@ -195,7 +197,7 @@ wfd_config_read_authenticator(
|
||||
static bool
|
||||
wfd_config_read_authentication(
|
||||
config_t * config,
|
||||
struct wfd_config_builder builder)
|
||||
struct wfd_config * builder)
|
||||
{
|
||||
bool result = true;
|
||||
|
||||
@@ -216,7 +218,7 @@ wfd_config_read_authentication(
|
||||
static bool
|
||||
wfd_config_read_filesystems(
|
||||
config_t * config,
|
||||
struct wfd_config_builder builder)
|
||||
struct wfd_config * builder)
|
||||
{
|
||||
bool result = true;
|
||||
config_setting_t * filesystems = config_lookup(config, "filesystems");
|
||||
@@ -251,7 +253,7 @@ wfd_config_read_filesystems(
|
||||
break;
|
||||
}
|
||||
|
||||
result = wfd_config_builder_add_filesystem(builder, name, mount_point);
|
||||
result = wfd_config_add_filesystem(builder, name, mount_point);
|
||||
if (!result)
|
||||
{
|
||||
break;
|
||||
@@ -265,7 +267,7 @@ wfd_config_read_filesystems(
|
||||
static bool
|
||||
wfd_config_read_user(
|
||||
config_t * config,
|
||||
struct wfd_config_builder builder)
|
||||
struct wfd_config * builder)
|
||||
{
|
||||
bool result = true;
|
||||
|
||||
@@ -295,43 +297,48 @@ wfd_config_read_user(
|
||||
|
||||
if (result)
|
||||
{
|
||||
wfd_config_builder_set_user(builder, user, group);
|
||||
wfd_config_set_user(builder, user, group);
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
static bool
|
||||
static struct wfd_config *
|
||||
wfd_config_load(
|
||||
struct wfd_config_builder builder,
|
||||
config_t * config)
|
||||
{
|
||||
struct wfd_config * result = wfd_config_create();
|
||||
|
||||
bool result = wfd_config_check_version(config)
|
||||
&& wfd_config_read_logger(config, builder)
|
||||
&& wfd_config_read_server(config, builder)
|
||||
&& wfd_config_read_authentication(config, builder)
|
||||
&& wfd_config_read_filesystems(config, builder)
|
||||
&& wfd_config_read_user(config, builder)
|
||||
bool success = wfd_config_check_version(config)
|
||||
&& wfd_config_read_logger(config, result)
|
||||
&& wfd_config_read_server(config, result)
|
||||
&& wfd_config_read_authentication(config, result)
|
||||
&& wfd_config_read_filesystems(config, result)
|
||||
&& wfd_config_read_user(config, result)
|
||||
;
|
||||
|
||||
if (!success)
|
||||
{
|
||||
wfd_config_dispose(result);
|
||||
result = NULL;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
bool
|
||||
struct wfd_config *
|
||||
wfd_config_load_file(
|
||||
struct wfd_config_builder builder,
|
||||
char const * filename)
|
||||
{
|
||||
bool result = false;
|
||||
struct wfd_config * result = NULL;
|
||||
|
||||
config_t config;
|
||||
config_init(&config);
|
||||
int rc = config_read_file(&config, filename);
|
||||
if (CONFIG_TRUE == rc)
|
||||
{
|
||||
result = wfd_config_load(builder, &config);
|
||||
result = wfd_config_load(&config);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -346,19 +353,18 @@ wfd_config_load_file(
|
||||
return result;
|
||||
}
|
||||
|
||||
bool
|
||||
struct wfd_config *
|
||||
wfd_config_load_string(
|
||||
struct wfd_config_builder builder,
|
||||
char const * contents)
|
||||
{
|
||||
bool result = false;
|
||||
struct wfd_config * result = NULL;
|
||||
|
||||
config_t config;
|
||||
config_init(&config);
|
||||
int rc = config_read_string(&config, contents);
|
||||
if (CONFIG_TRUE == rc)
|
||||
{
|
||||
result = wfd_config_load(builder, &config);
|
||||
result = wfd_config_load(&config);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -1,25 +1,19 @@
|
||||
#ifndef WFD_CONFIG_FACTORY_H
|
||||
#define WFD_CONFIG_FACTORY_H
|
||||
|
||||
#ifndef __cplusplus
|
||||
#include <stdbool.h>
|
||||
#endif
|
||||
|
||||
#include "webfused/config/builder.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
extern bool
|
||||
struct wfd_config;
|
||||
|
||||
extern struct wfd_config *
|
||||
wfd_config_load_file(
|
||||
struct wfd_config_builder builder,
|
||||
char const * filename);
|
||||
|
||||
extern bool
|
||||
extern struct wfd_config *
|
||||
wfd_config_load_string(
|
||||
struct wfd_config_builder builder,
|
||||
char const * contents);
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
||||
@@ -109,9 +109,9 @@ int wfd_daemon_run(int argc, char * argv[])
|
||||
{
|
||||
signal(SIGINT, on_interrupt);
|
||||
|
||||
struct wfd_config * config = wfd_config_create();
|
||||
struct wfd_config_builder builder = wfd_config_get_builder(config);
|
||||
bool success = wfd_config_load_file(builder, args.config_file);
|
||||
struct wfd_config * config = wfd_config_load_file(args.config_file);
|
||||
bool success = (NULL != config);
|
||||
|
||||
if (!success)
|
||||
{
|
||||
fprintf(stderr, "fatal: failed to load server config\n");
|
||||
@@ -145,7 +145,10 @@ int wfd_daemon_run(int argc, char * argv[])
|
||||
}
|
||||
}
|
||||
|
||||
wfd_config_dispose(config);
|
||||
if (NULL != config)
|
||||
{
|
||||
wfd_config_dispose(config);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user