
The internal header directory conflicted with in-source builds causing a build failure. This is fixed by renaming the internal header directory to something other than maxscale. The renaming pointed out a few problems in a couple of source files that appeared to include internal headers when the headers were in fact public headers. Fixed maxctrl in-source builds by making the copying of the sources optional.
338 lines
10 KiB
C
338 lines
10 KiB
C
#pragma once
|
|
/*
|
|
* Copyright (c) 2016 MariaDB Corporation Ab
|
|
*
|
|
* Use of this software is governed by the Business Source License included
|
|
* in the LICENSE.TXT file and at www.mariadb.com/bsl11.
|
|
*
|
|
* Change Date: 2020-01-01
|
|
*
|
|
* On the date above, in accordance with the Business Source License, use
|
|
* of this software will be governed by version 2 or later of the General
|
|
* Public License.
|
|
*/
|
|
|
|
/**
|
|
* @file config_runtime.h - Functions for runtime configuration modifications
|
|
*/
|
|
|
|
#include <maxscale/cdefs.h>
|
|
|
|
#include <maxscale/adminusers.h>
|
|
#include <maxscale/monitor.h>
|
|
#include <maxscale/server.h>
|
|
#include <maxscale/service.h>
|
|
|
|
MXS_BEGIN_DECLS
|
|
|
|
/**
|
|
* @brief Create a new server
|
|
*
|
|
* This function creates a new, persistent server by first allocating a new
|
|
* server and then storing the resulting configuration file on disk. This
|
|
* function should be used only from administrative interface modules and internal
|
|
* modules should use server_alloc() instead.
|
|
*
|
|
* @param name Server name
|
|
* @param address Network address
|
|
* @param port Network port
|
|
* @param protocol Protocol module name
|
|
* @param authenticator Authenticator module name
|
|
* @param options Options for the authenticator module
|
|
* @return True on success, false if an error occurred
|
|
*/
|
|
bool runtime_create_server(const char *name, const char *address,
|
|
const char *port, const char *protocol,
|
|
const char *authenticator, const char *options);
|
|
|
|
/**
|
|
* @brief Destroy a server
|
|
*
|
|
* This removes any created server configuration files and marks the server removed
|
|
* If the server is not in use.
|
|
*
|
|
* @param server Server to destroy
|
|
* @return True if server was destroyed
|
|
*/
|
|
bool runtime_destroy_server(SERVER *server);
|
|
|
|
/**
|
|
* @brief Link a server to an object
|
|
*
|
|
* This function links the server to another object. The target can be either
|
|
* a monitor or a service.
|
|
*
|
|
* @param server Server to link
|
|
* @param target The monitor or service where the server is added
|
|
* @return True if the object was found and the server was linked to it, false
|
|
* if no object matching @c target was found
|
|
*/
|
|
bool runtime_link_server(SERVER *server, const char *target);
|
|
|
|
/**
|
|
* @brief Unlink a server from an object
|
|
*
|
|
* This function unlinks the server from another object. The target can be either
|
|
* a monitor or a service.
|
|
*
|
|
* @param server Server to unlink
|
|
* @param target The monitor or service from which the server is removed
|
|
* @return True if the object was found and the server was unlinked from it, false
|
|
* if no object matching @c target was found
|
|
*/
|
|
bool runtime_unlink_server(SERVER *server, const char *target);
|
|
|
|
/**
|
|
* @brief Alter server parameters
|
|
*
|
|
* @param server Server to alter
|
|
* @param key Key to modify
|
|
* @param value New value
|
|
* @return True if @c key was one of the supported parameters
|
|
*/
|
|
bool runtime_alter_server(SERVER *server, const char *key, const char *value);
|
|
|
|
/**
|
|
* @brief Enable SSL for a server
|
|
*
|
|
* The @c key , @c cert and @c ca parameters are required. @c version and @c depth
|
|
* are optional.
|
|
*
|
|
* @note SSL cannot be disabled at runtime.
|
|
*
|
|
* @param server Server to configure
|
|
* @param key Path to SSL private key
|
|
* @param cert Path to SSL public certificate
|
|
* @param ca Path to certificate authority
|
|
* @param version Required SSL Version
|
|
* @param depth Certificate verification depth
|
|
* @return True if SSL was successfully enabled
|
|
*/
|
|
bool runtime_enable_server_ssl(SERVER *server, const char *key, const char *cert,
|
|
const char *ca, const char *version, const char *depth);
|
|
|
|
/**
|
|
* @brief Alter monitor parameters
|
|
*
|
|
* @param monitor Monitor to alter
|
|
* @param key Key to modify
|
|
* @param value New value
|
|
* @return True if @c key was one of the supported parameters
|
|
*/
|
|
bool runtime_alter_monitor(MXS_MONITOR *monitor, const char *key, const char *value);
|
|
|
|
/**
|
|
* @brief Alter service parameters
|
|
*
|
|
* @param monitor Service to alter
|
|
* @param key Key to modify
|
|
* @param value New value
|
|
*
|
|
* @return True if @c key was one of the supported parameters
|
|
*/
|
|
bool runtime_alter_service(SERVICE *service, const char* zKey, const char* zValue);
|
|
|
|
/**
|
|
* @brief Alter MaxScale parameters
|
|
*
|
|
* @param name Key to modify
|
|
* @param value New value
|
|
*
|
|
* @return True if @c key was one of the supported parameters
|
|
*/
|
|
bool runtime_alter_maxscale(const char* name, const char* value);
|
|
|
|
/**
|
|
* @brief Create a new listener for a service
|
|
*
|
|
* This function adds a new listener to a service and starts it.
|
|
*
|
|
* @param service Service where the listener is added
|
|
* @param name Name of the listener
|
|
* @param addr Listening address, NULL for default of ::
|
|
* @param port Listening port, NULL for default of 3306
|
|
* @param proto Listener protocol, NULL for default of "MySQLClient"
|
|
* @param auth Listener authenticator, NULL for protocol default authenticator
|
|
* @param auth_opt Options for the authenticator, NULL for no options
|
|
* @param ssl_key SSL key, NULL for no key
|
|
* @param ssl_cert SSL cert, NULL for no cert
|
|
* @param ssl_ca SSL CA cert, NULL for no CA cert
|
|
* @param ssl_version SSL version, NULL for default of "MAX"
|
|
* @param ssl_depth SSL cert verification depth, NULL for default
|
|
*
|
|
* @return True if the listener was successfully created and started
|
|
*/
|
|
bool runtime_create_listener(SERVICE *service, const char *name, const char *addr,
|
|
const char *port, const char *proto, const char *auth,
|
|
const char *auth_opt, const char *ssl_key,
|
|
const char *ssl_cert, const char *ssl_ca,
|
|
const char *ssl_version, const char *ssl_depth);
|
|
|
|
/**
|
|
* @brief Destroy a listener
|
|
*
|
|
* This disables the listener by removing it from the polling system. It also
|
|
* removes any generated configurations for this listener.
|
|
*
|
|
* @param service Service where the listener exists
|
|
* @param name Name of the listener
|
|
*
|
|
* @return True if the listener was successfully destroyed
|
|
*/
|
|
bool runtime_destroy_listener(SERVICE *service, const char *name);
|
|
|
|
/**
|
|
* @brief Create a new monitor
|
|
*
|
|
* @param name Name of the monitor
|
|
* @param module Monitor module
|
|
* @return True if new monitor was created and persisted
|
|
*/
|
|
bool runtime_create_monitor(const char *name, const char *module);
|
|
|
|
/**
|
|
* @brief Destroy a monitor
|
|
*
|
|
* Monitors are not removed from the runtime configuration but they are stopped.
|
|
* Destroyed monitor are removed after a restart.
|
|
*
|
|
* @param monitor Monitor to destroy
|
|
* @return True if monitor was destroyed
|
|
*/
|
|
bool runtime_destroy_monitor(MXS_MONITOR *monitor);
|
|
|
|
/**
|
|
* @brief Create a new server from JSON
|
|
*
|
|
* @param json JSON defining the server
|
|
*
|
|
* @return Created server or NULL on error
|
|
*/
|
|
SERVER* runtime_create_server_from_json(json_t* json);
|
|
|
|
/**
|
|
* @brief Alter a server using JSON
|
|
*
|
|
* @param server Server to alter
|
|
* @param new_json JSON definition of the updated server
|
|
*
|
|
* @return True if the server was successfully modified to represent @c new_json
|
|
*/
|
|
bool runtime_alter_server_from_json(SERVER* server, json_t* new_json);
|
|
|
|
/**
|
|
* @brief Alter server relationships
|
|
*
|
|
* @param server Server to alter
|
|
* @param type Type of the relation, either @c services or @c monitors
|
|
* @param json JSON that defines the relationship data
|
|
*
|
|
* @return True if the relationships were successfully modified
|
|
*/
|
|
bool runtime_alter_server_relationships_from_json(SERVER* server, const char* type, json_t* json);
|
|
|
|
/**
|
|
* @brief Create a new monitor from JSON
|
|
*
|
|
* @param json JSON defining the monitor
|
|
*
|
|
* @return Created monitor or NULL on error
|
|
*/
|
|
MXS_MONITOR* runtime_create_monitor_from_json(json_t* json);
|
|
|
|
/**
|
|
* @brief Alter a monitor using JSON
|
|
*
|
|
* @param monitor Monitor to alter
|
|
* @param new_json JSON definition of the updated monitor
|
|
*
|
|
* @return True if the monitor was successfully modified to represent @c new_json
|
|
*/
|
|
bool runtime_alter_monitor_from_json(MXS_MONITOR* monitor, json_t* new_json);
|
|
|
|
/**
|
|
* @brief Alter monitor relationships
|
|
*
|
|
* @param monitor Monitor to alter
|
|
* @param json JSON that defines the new relationships
|
|
*
|
|
* @return True if the relationships were successfully modified
|
|
*/
|
|
bool runtime_alter_monitor_relationships_from_json(MXS_MONITOR* monitor, json_t* json);
|
|
|
|
/**
|
|
* @brief Alter a service using JSON
|
|
*
|
|
* @param service Service to alter
|
|
* @param new_json JSON definition of the updated service
|
|
*
|
|
* @return True if the service was successfully modified to represent @c new_json
|
|
*/
|
|
bool runtime_alter_service_from_json(SERVICE* service, json_t* new_json);
|
|
|
|
/**
|
|
* @brief Alter service relationships
|
|
*
|
|
* @param service Service to alter
|
|
* @param json JSON that defines the new relationships
|
|
*
|
|
* @return True if the relationships were successfully modified
|
|
*/
|
|
bool runtime_alter_service_relationships_from_json(SERVICE* service, json_t* json);
|
|
|
|
/**
|
|
* @brief Create a listener from JSON
|
|
*
|
|
* @param service Service where the listener is created
|
|
* @param json JSON definition of the new listener
|
|
*
|
|
* @return True if the listener was successfully created and started
|
|
*/
|
|
bool runtime_create_listener_from_json(SERVICE* service, json_t* json);
|
|
|
|
/**
|
|
* @brief Alter logging options using JSON
|
|
*
|
|
* @param json JSON definition of the updated logging options
|
|
*
|
|
* @return True if the modifications were successful
|
|
*/
|
|
bool runtime_alter_logs_from_json(json_t* json);
|
|
|
|
/**
|
|
* @brief Get current runtime error in JSON format
|
|
*
|
|
* @return The latest runtime error in JSON format or NULL if no error has occurred
|
|
*/
|
|
json_t* runtime_get_json_error();
|
|
|
|
/**
|
|
* @brief Create a new user account
|
|
*
|
|
* @param json JSON defining the user
|
|
*
|
|
* @return True if the user was successfully created
|
|
*/
|
|
bool runtime_create_user_from_json(json_t* json);
|
|
|
|
/**
|
|
* @brief Remove admin user
|
|
*
|
|
* @param id Username of the network user
|
|
* @param type USER_TYPE_INET for network user and USER_TYPE_UNIX for enabled accounts
|
|
*
|
|
* @return True if user was successfully removed
|
|
*/
|
|
bool runtime_remove_user(const char* id, enum user_type type);
|
|
|
|
/**
|
|
* @brief Alter core MaxScale parameters from JSON
|
|
*
|
|
* @param new_json JSON defining the new core parameters
|
|
*
|
|
* @return True if the core parameters are valid and were successfully applied
|
|
*/
|
|
bool runtime_alter_maxscale_from_json(json_t* new_json);
|
|
|
|
MXS_END_DECLS
|