store::network: Added support for SSL configuration options.
ssl utils: During shutdown, destroy mutexes as the last step.
Even ERR_free_strings() may call CRYPTO_lock.
Even ERR_free_strings() may call CRYPTO_lock.
store::network: Use INFO level for an informational message.
ssl: Register OpenSSL thread-ID and locking callbacks.
This is required for multi-threaded applications. Else, they "will crash at
random".
This is required for multi-threaded applications. Else, they "will crash at
random".
SSL utils: Added init() and shutdown() functions for global setup/shutdown.
Use those functions in sysdb and sysdbd instead of calling the OpenSSL
functions directly.
Use those functions in sysdb and sysdbd instead of calling the OpenSSL
functions directly.
valgrind.suppress: Ignore a Memcheck:Cond error in libcrypto.
This happens with the libssl version on Travis.
This happens with the libssl version on Travis.
t/integration/: Added simple SSL tests.
parser_test: Added various tests for STORE commands.
README: Add libssl to prerequisites.
sysdb(1), sysdbd(1): Document client authentication.
sysdb(1), sysdbd(1): Document files used by the tools by default.
sysdb(1): Document SSL related command line options.
sysdbd.conf(5): Document the Listen SSL options.
frontend, client: Properly support IPv6 when handling address strings.
client: Prefix all log messages with "client:".
sysdb: Add -A option to specify a CA certificates file.
Unload all plugins when shutting down sysdbd.
This will destruct all registered user-data objects, thus properly shutting
down all internal plugin state (e.g. connections to other systems).
This will destruct all registered user-data objects, thus properly shutting
down all internal plugin state (e.g. connections to other systems).
collectd::unixsock: Fixed a memory leak happening when unloading the module.
client: Check the remote peer name.
sysdbd-syslog(5): Documented LogLevel configuration option.
plugin: Fixed log message for newly registered config callbacks.
syslog plugin: Make log-level configurable.
error utils: Add sdb_error_parse_priority().
sysdbd: Add SSL{Certificate,CertificateKey,CACertificates} config options.
frontend: Support custom SSL options for each listener.
sysdb: Added -K and -C options to specify SSL key and cert files.
sysdb: Use SSL keys and certs in ~/.config/sysdb/ssl/ by default.
utils os: Add sdb_realpath().
This function is similar to realpath() but also expands ~/ to the current
user's home directory.
This function is similar to realpath() but also expands ~/ to the current
user's home directory.
SSL utils: Pass a constant options object to all constructors.
sysdb: Add and use sdb_input_reset().
This simplifies cleanup.
This simplifies cleanup.
Move sdb_get_homedir() from tools/sysdb to utils/os.
SSL utils: Include the relevant filename in all error messages.
SSL utils: Add sdb_ssl_free_options().
client: Make SSL options configurable.
configure: Where available, include version information in the summary.
frontend: Log an INFO message about which listener sockets are in use.
client, sysdb: Let TCP connection use SSL.
client: Don't use select() before reading from a client connection.
This doesn't work well if the connection buffers data (like with the upcoming
SSL support).
This doesn't work well if the connection buffers data (like with the upcoming
SSL support).
frontend, sysdbd: Let all TCP connections use SSL.
Client certificate checks are enforced and the client cert's common name (CN)
is used as the peer name.
Client certificate checks are enforced and the client cert's common name (CN)
is used as the peer name.
SSL utils: Added helper functions for managing OpenSSL servers and clients.
The module provides session management for OpenSSL servers and clients and
helper functions for I/O operations.
The module provides session management for OpenSSL servers and clients and
helper functions for I/O operations.
store::network plugin: Fixed a minor memory leak.
valgrind.suppress: Add a memory leak reported for some dl helper.
Removed a spammy and now unnecessary debug log message.
integration: Use store::network in the query tests.
Set up a second SysDB instance which receives all data from the other
instance. Query the receiver instead of the collector.
Set up a second SysDB instance which receives all data from the other
instance. Query the receiver instead of the collector.
integration: Split off mock_timeseries from mock_plugin.
frontend: Trigger the main thread after putting a connection back in the list.
Else, we'd have pauses of up to a second (select timeout) between processing
subsequent requests from a client because the main thread didn't notice that
an open connection was put back into the waiting queue.
Else, we'd have pauses of up to a second (select timeout) between processing
subsequent requests from a client because the main thread didn't notice that
an open connection was put back into the waiting queue.
store::network: Add a store writer plugin sending objects over the network.
The plugin supports sending data to one or more other SysDB instances using
the wire-format of the STORE command.
The plugin supports sending data to one or more other SysDB instances using
the wire-format of the STORE command.
store: Don't report an error in scan() if the store is still empty.
sysdb: Simplified prompt used for continuation lines.
frontend/store: Free dynamically allocated memory of attribute values.
frontend/store: Fixed parsing of STORE attribute commands.
In this case, the object type is a bit-wise OR of the parent type and the
attribute type.
In this case, the object type is a bit-wise OR of the parent type and the
attribute type.
frontend/store: Fixed parsing of STORE command.
After parsing the type, keep it still around in the current buffer. The
sdb_proto_unmarshal_<type> functions expect to find it as well.
After parsing the type, keep it still around in the current buffer. The
sdb_proto_unmarshal_<type> functions expect to find it as well.
plugin: Let store writer plugin object inherit from generic plugin objects.
Else, we cannot use them in the same way.
Else, we cannot use them in the same way.
client: Use sdb_client_rpc in sdb_client_connect.
client: Added sdb_client_rpc.
This function handles a full RPC call: it sends a message to the server and
waits for the reply. While doing so, it handles all asynchronous log messages.
That is, it'll return the actual result status of the command.
This function handles a full RPC call: it sends a message to the server and
waits for the reply. While doing so, it handles all asynchronous log messages.
That is, it'll return the actual result status of the command.
store: Pass on all stored objects to store writer plugins.
core: Add the store writer plugin type.
A plugin may now provide an implementation of a store by providing a set of
callbacks. For now, this is only about writing to a store. Queries are not
supported through this interface.
A plugin may now provide an implementation of a store by providing a set of
callbacks. For now, this is only about writing to a store. Queries are not
supported through this interface.
plugin: Reload time-series fetcher callbacks as well.
integration/config.sh: Add a test to load and reload a plugin.
t/integration: Add a simple time-series fetcher test.
connection_test: Updated according to latest changes.
sysdbql(7): Document the STORE commands.
connection: Log peer information after accepting a connection.
sysdb: Use the current user's homedir rather than the SysDB user.
connection: Let sdb_connection_accept() handle all connection setup.
… rather than having it split up between the caller and accept().
… rather than having it split up between the caller and accept().
client: Add support for TCP connections.
frontend: Add support for TCP connections.
This is the new default listener type (unless the listen address starts with a
slash in which case a UNIXSOCK connection is used).
This does not support any kind of peer lookup yet. Instead, it'll fully trust
the client for now and accept any username. In the future, this will be
configurable and multiple mechanisms (e.g. ident, SSL cert) will be supported.
This is the new default listener type (unless the listen address starts with a
slash in which case a UNIXSOCK connection is used).
This does not support any kind of peer lookup yet. Instead, it'll fully trust
the client for now and accept any username. In the future, this will be
configurable and multiple mechanisms (e.g. ident, SSL cert) will be supported.
frontend: Make peer detection more flexible.
It's now a property of a listener implementation.
Moved the unixsock implementation over from frontend/connection to
frontend/sock.
It's now a property of a listener implementation.
Moved the unixsock implementation over from frontend/connection to
frontend/sock.
os utils: Fixed a typo in the UDP resolver implementation.
frontend/sock: Simplified internal address handling.
Strip the <type>: prefix early. Else, we'd have to strip it off over and over
again when working with the address string.
Strip the <type>: prefix early. Else, we'd have to strip it off over and over
again when working with the address string.
connection: Update the connection name as early as possible.
This is just to avoid weird error messages if setting up the connection
failed.
This is just to avoid weird error messages if setting up the connection
failed.
os utils: Added sdb_resolve().
This is a convenient wrapper around getaddrinfo().
This is a convenient wrapper around getaddrinfo().
client: Make I/O handling more flexible.
frontend: Make connection I/O handling more flexible.
That'll allow to create connection objects which require special I/O
operations.
That'll allow to create connection objects which require special I/O
operations.
sysdb: Accept status=OK after sending a query.
OK is sent back on successful STORE commands.
OK is sent back on successful STORE commands.
frontend/grammar: Added 'STORE host|service|metric [attribute]' commands.
This implements the STORE command in SysQL.
This implements the STORE command in SysQL.
frontend: Add support for SDB_CONNECTION_STORE.
The front-end now supports parsing and executing STORE commands.
The front-end now supports parsing and executing STORE commands.
store: Let store_metric() accept non-NULL but empty metric-store.
proto: Added support for unmarshaling hosts/services/metrics/attributes.
proto: Let unmarshaled string/binary data point into the provided buffer.
The caller may decide whether to keep a copy or not.
The caller may decide whether to keep a copy or not.
utils unixsock: Avoid memory allocations in common cases.
data: Let sdb_data_parse() accept a const string and copy it if necessary.
Given that we need a copy for regex values anyway, this is more consistent.
Given that we need a copy for regex values anyway, this is more consistent.
frontend/scanner: Pass the right size to strncat.
Thanks to clang for identifying this :-)
Thanks to clang for identifying this :-)
sysdb/scanner.l: Include ctype.h; needed for isspace().
Link librt into libsysdbclient.
That's required for clock_gettime.
That's required for clock_gettime.
proto: Added sdb_proto_unmarshal_data().
This function decodes a datum from the wire format.
This function decodes a datum from the wire format.
data: Free binary and regex array values as well.
data: Let sdb_data_cmp() support all array types.
proto: Let unmarshal functions return the number of bytes processed.
That's a more flexible and straight-forward interface allowing callers to not
care about the size of the expected data.
That's a more flexible and straight-forward interface allowing callers to not
care about the size of the expected data.
proto: Added support for marshaling attribute objects.
proto: Use hton instead of ntoh functions in marshal functions.
D'oh!
D'oh!
proto: Define a wire format for host/service/metric and add marshal functions.
proto: Don't include a string's length in the wire format.
That's not necessary given that all strings are null-terminated.
That's not necessary given that all strings are null-terminated.
Add a suffix to integer marshal/unmarshal functions specifying the int size.
proto: Add support for marshaling all data types.
proto: Add support for marshaling regex types.
That is, marshal the regex's raw string to be recompiled by the receiver.
That is, marshal the regex's raw string to be recompiled by the receiver.
proto: Added support for marshaling double-precision values.
For this, determine the memory layout of doubles in 'configure' and then use
IEEE-754 big-endian encoding on the wire. For now, only little- and big-endian
IEEE-754 doubles are supported but that'll cover the vast majority of all
systems.
For this, determine the memory layout of doubles in 'configure' and then use
IEEE-754 big-endian encoding on the wire. For now, only little- and big-endian
IEEE-754 doubles are supported but that'll cover the vast majority of all
systems.
proto: Added sdb_proto_marshal_data.
This function encodes a datum into the wire format.
This function encodes a datum into the wire format.
utils/proto: Let all unmarshal functions accept strings instead of strbufs.
This is more consistent and flexible.
This is more consistent and flexible.
utils/strbuf: Added SDB_STRBUF_STR.
This macro returns a tuple describing the buffer content and length. The idea
is that functions which operate on (binary) strings should accept two such
arguments and the macro will make it easier to pass them in.
This macro returns a tuple describing the buffer content and length. The idea
is that functions which operate on (binary) strings should accept two such
arguments and the macro will make it easier to pass them in.