This file contains the remote control functionality for the daemon. More...
Data Structures | |
struct | rc_state |
a busy control command connection, SSL state More... | |
struct | daemon_remote |
The remote control tool state. More... | |
Defines | |
#define | REMOTE_CONTROL_TCP_TIMEOUT 120 |
number of seconds timeout on incoming remote control handshake | |
Functions | |
struct daemon_remote * | daemon_remote_create (struct config_file *cfg) |
Create new remote control state for the daemon. | |
void | daemon_remote_delete (struct daemon_remote *rc) |
remote control state to delete. | |
void | daemon_remote_clear (struct daemon_remote *rc) |
remote control state to clear up. | |
struct listen_port * | daemon_remote_open_ports (struct config_file *cfg) |
Open and create listening ports for remote control. | |
int | daemon_remote_open_accept (struct daemon_remote *rc, struct listen_port *ports, struct worker *worker) |
Setup comm points for accepting remote control connections. | |
void | daemon_remote_exec (struct worker *worker) |
Handle nonthreaded remote cmd execution. | |
int | remote_accept_callback (struct comm_point *, void *, int, struct comm_reply *) |
handle remote control accept callbacks | |
int | remote_control_callback (struct comm_point *, void *, int, struct comm_reply *) |
handle remote control data callbacks | |
int | ssl_print_text (SSL *ssl, const char *text) |
Print fixed line of text over ssl connection in blocking mode. | |
int | ssl_printf (SSL *ssl, const char *format,...) ATTR_FORMAT(printf |
printf style printing to the ssl connection | |
int int | ssl_read_line (SSL *ssl, char *buf, size_t max) |
Read until is encountered If SSL signals EOF, the string up to then is returned (without ). | |
void | remote_get_opt_ssl (char *line, void *arg) |
routine to printout option values over SSL |
This file contains the remote control functionality for the daemon.
The remote control can be performed using either the commandline unbound-control tool, or a SSLv3/TLS capable web browser. The channel is secured using SSLv3 or TLSv1, and certificates. Both the server and the client(control tool) have their own keys.
struct daemon_remote* daemon_remote_create | ( | struct config_file * | cfg | ) | [read] |
Create new remote control state for the daemon.
cfg,: | config file with key file settings. |
References daemon_remote::ctx, daemon_remote_delete(), fname_after_chroot(), log_crypto_err(), log_err(), daemon_remote::max_active, config_file::remote_control_enable, config_file::server_cert_file, config_file::server_key_file, VERB_ALGO, and verbose().
Referenced by perform_setup(), and service_init().
void daemon_remote_delete | ( | struct daemon_remote * | rc | ) |
remote control state to delete.
rc,: | state to delete. |
References daemon_remote::ctx, and daemon_remote_clear().
Referenced by daemon_delete(), and daemon_remote_create().
void daemon_remote_clear | ( | struct daemon_remote * | rc | ) |
remote control state to clear up.
Busy and accept points are closed. Does not delete the rc itself, or the ssl context (with its keys).
rc,: | state to clear. |
References daemon_remote::accept_list, daemon_remote::active, daemon_remote::busy_list, rc_state::c, comm_point_delete(), listen_list_delete(), rc_state::next, rc_state::ssl, and daemon_remote::worker.
Referenced by daemon_cleanup(), and daemon_remote_delete().
struct listen_port* daemon_remote_open_ports | ( | struct config_file * | cfg | ) | [read] |
Open and create listening ports for remote control.
cfg,: | config options. |
References add_open(), config_file::control_ifs, config_file::control_port, config_file::do_ip4, config_file::do_ip6, listening_ports_free(), log_assert, config_strlist::next, config_file::remote_control_enable, and config_strlist::str.
Referenced by daemon_open_shared_ports().
int daemon_remote_open_accept | ( | struct daemon_remote * | rc, | |
struct listen_port * | ports, | |||
struct worker * | worker | |||
) |
Setup comm points for accepting remote control connections.
rc,: | state | |
ports,: | already opened ports. | |
worker,: | worker with communication base. and links to command channels. |
References accept_open(), listen_port::fd, log_err(), listen_port::next, and daemon_remote::worker.
Referenced by worker_init().
void daemon_remote_exec | ( | struct worker * | worker | ) |
Handle nonthreaded remote cmd execution.
worker,: | this worker (the remote worker). |
References worker::cmd, execute_cmd(), log_err(), tube_read_msg(), VERB_ALGO, and verbose().
Referenced by worker_handle_control_cmd().
int ssl_print_text | ( | SSL * | ssl, | |
const char * | text | |||
) |
Print fixed line of text over ssl connection in blocking mode.
ssl,: | print to | |
text,: | the text. |
References log_crypto_err(), VERB_QUERY, and verbose().
Referenced by ssl_print_vmsg().
int ssl_printf | ( | SSL * | ssl, | |
const char * | format, | |||
... | ||||
) |
printf style printing to the ssl connection
ssl,: | the SSL connection to print to. Blocking. | |
format,: | printf style format string. |
int int ssl_read_line | ( | SSL * | ssl, | |
char * | buf, | |||
size_t | max | |||
) |
Read until
is encountered If SSL signals EOF, the string up to then is returned (without
).
ssl,: | the SSL connection to read from. blocking. | |
buf,: | buffer to read to. | |
max,: | size of buffer. |
References log_crypto_err(), and log_err().
Referenced by handle_req(), and ssl_read_buf().