mirror of
https://github.com/sudo-project/sudo.git
synced 2025-08-22 18:08:23 +00:00
Make the failed relay retry interval configurable.
This is the amount of time to wait before trying to resend a journal to the relay server after a connection error.
This commit is contained in:
parent
177816b787
commit
f49930c62e
@ -16,7 +16,7 @@
|
|||||||
.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||||
.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
.\"
|
.\"
|
||||||
.TH "SUDO_LOGSRVD.CONF" "@mansectform@" "April 14, 2021" "Sudo @PACKAGE_VERSION@" "File Formats Manual"
|
.TH "SUDO_LOGSRVD.CONF" "@mansectform@" "May 1, 2021" "Sudo @PACKAGE_VERSION@" "File Formats Manual"
|
||||||
.nh
|
.nh
|
||||||
.if n .ad l
|
.if n .ad l
|
||||||
.SH "NAME"
|
.SH "NAME"
|
||||||
@ -288,7 +288,7 @@ The default value is 30.
|
|||||||
relay_dir = path
|
relay_dir = path
|
||||||
The directory in which log messages are temporarily stored before they
|
The directory in which log messages are temporarily stored before they
|
||||||
are sent to the relay host.
|
are sent to the relay host.
|
||||||
Messages are stored in the wire format used by
|
Messages are stored in the wire format specified by
|
||||||
sudo_logsrv.proto(@mansectform@)
|
sudo_logsrv.proto(@mansectform@)
|
||||||
The default value is
|
The default value is
|
||||||
\fI@relay_dir@\fR.
|
\fI@relay_dir@\fR.
|
||||||
@ -318,6 +318,11 @@ If multiple
|
|||||||
\fIrelay_host\fR
|
\fIrelay_host\fR
|
||||||
lines are specified, the first available relay host will be used.
|
lines are specified, the first available relay host will be used.
|
||||||
.TP 10n
|
.TP 10n
|
||||||
|
retry_interval = number
|
||||||
|
The number of seconds to wait after a connection error before making
|
||||||
|
a new attempt to forward a message to a relay host.
|
||||||
|
The default value is 30 seconds.
|
||||||
|
.TP 10n
|
||||||
store_first = boolean
|
store_first = boolean
|
||||||
If true,
|
If true,
|
||||||
\fBsudo_logsrvd\fR
|
\fBsudo_logsrvd\fR
|
||||||
@ -812,6 +817,21 @@ Sudo log server configuration file
|
|||||||
# The default value is 30.
|
# The default value is 30.
|
||||||
#connect_timeout = 30
|
#connect_timeout = 30
|
||||||
|
|
||||||
|
# The directory to store messages in before they are sent to the relay.
|
||||||
|
# Messages are stored in wire format.
|
||||||
|
# The default value is /var/log/logsrvd-relay.
|
||||||
|
#relay_dir = /var/log/logsrvd-relay
|
||||||
|
|
||||||
|
# The number of seconds to wait after a connection error before
|
||||||
|
# making a new attempt to forward a message to a relay host.
|
||||||
|
# The default value is 30.
|
||||||
|
#retry_interval = 30
|
||||||
|
|
||||||
|
# Whether to store the log before relaying it. If true, enable store
|
||||||
|
# and forward mode. If false, the client connection is immediately
|
||||||
|
# relayed. Defaults to false.
|
||||||
|
#store_first = true
|
||||||
|
|
||||||
# If true, enable the SO_KEEPALIVE socket option on relay connections.
|
# If true, enable the SO_KEEPALIVE socket option on relay connections.
|
||||||
#tcp_keepalive = true
|
#tcp_keepalive = true
|
||||||
|
|
||||||
|
@ -15,7 +15,7 @@
|
|||||||
.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||||
.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
.\"
|
.\"
|
||||||
.Dd April 14, 2021
|
.Dd May 1, 2021
|
||||||
.Dt SUDO_LOGSRVD.CONF @mansectform@
|
.Dt SUDO_LOGSRVD.CONF @mansectform@
|
||||||
.Os Sudo @PACKAGE_VERSION@
|
.Os Sudo @PACKAGE_VERSION@
|
||||||
.Sh NAME
|
.Sh NAME
|
||||||
@ -250,7 +250,7 @@ The default value is 30.
|
|||||||
.It relay_dir = path
|
.It relay_dir = path
|
||||||
The directory in which log messages are temporarily stored before they
|
The directory in which log messages are temporarily stored before they
|
||||||
are sent to the relay host.
|
are sent to the relay host.
|
||||||
Messages are stored in the wire format used by
|
Messages are stored in the wire format specified by
|
||||||
.Xr sudo_logsrv.proto @mansectform@
|
.Xr sudo_logsrv.proto @mansectform@
|
||||||
The default value is
|
The default value is
|
||||||
.Pa @relay_dir@ .
|
.Pa @relay_dir@ .
|
||||||
@ -278,6 +278,10 @@ protocol.
|
|||||||
If multiple
|
If multiple
|
||||||
.Em relay_host
|
.Em relay_host
|
||||||
lines are specified, the first available relay host will be used.
|
lines are specified, the first available relay host will be used.
|
||||||
|
.It retry_interval = number
|
||||||
|
The number of seconds to wait after a connection error before making
|
||||||
|
a new attempt to forward a message to a relay host.
|
||||||
|
The default value is 30 seconds.
|
||||||
.It store_first = boolean
|
.It store_first = boolean
|
||||||
If true,
|
If true,
|
||||||
.Nm sudo_logsrvd
|
.Nm sudo_logsrvd
|
||||||
@ -744,6 +748,21 @@ Sudo log server configuration file
|
|||||||
# The default value is 30.
|
# The default value is 30.
|
||||||
#connect_timeout = 30
|
#connect_timeout = 30
|
||||||
|
|
||||||
|
# The directory to store messages in before they are sent to the relay.
|
||||||
|
# Messages are stored in wire format.
|
||||||
|
# The default value is /var/log/logsrvd-relay.
|
||||||
|
#relay_dir = /var/log/logsrvd-relay
|
||||||
|
|
||||||
|
# The number of seconds to wait after a connection error before
|
||||||
|
# making a new attempt to forward a message to a relay host.
|
||||||
|
# The default value is 30.
|
||||||
|
#retry_interval = 30
|
||||||
|
|
||||||
|
# Whether to store the log before relaying it. If true, enable store
|
||||||
|
# and forward mode. If false, the client connection is immediately
|
||||||
|
# relayed. Defaults to false.
|
||||||
|
#store_first = true
|
||||||
|
|
||||||
# If true, enable the SO_KEEPALIVE socket option on relay connections.
|
# If true, enable the SO_KEEPALIVE socket option on relay connections.
|
||||||
#tcp_keepalive = true
|
#tcp_keepalive = true
|
||||||
|
|
||||||
|
@ -80,6 +80,21 @@
|
|||||||
# The default value is 30.
|
# The default value is 30.
|
||||||
#connect_timeout = 30
|
#connect_timeout = 30
|
||||||
|
|
||||||
|
# The directory to store messages in before they are sent to the relay.
|
||||||
|
# Messages are stored in wire format.
|
||||||
|
# The default value is /var/log/logsrvd-relay.
|
||||||
|
#relay_dir = /var/log/logsrvd-relay
|
||||||
|
|
||||||
|
# The number of seconds to wait after a connection error before
|
||||||
|
# making a new attempt to forward a message to a relay host.
|
||||||
|
# The default value is 30.
|
||||||
|
#retry_interval = 30
|
||||||
|
|
||||||
|
# Whether to store the log before relaying it. If true, enable store
|
||||||
|
# and forward mode. If false, the client connection is immediately
|
||||||
|
# relayed. Defaults to false.
|
||||||
|
#store_first = true
|
||||||
|
|
||||||
# If true, enable the SO_KEEPALIVE socket option on relay connections.
|
# If true, enable the SO_KEEPALIVE socket option on relay connections.
|
||||||
#tcp_keepalive = true
|
#tcp_keepalive = true
|
||||||
|
|
||||||
|
@ -212,6 +212,7 @@ const char *logsrvd_conf_pid_file(void);
|
|||||||
struct timespec *logsrvd_conf_server_timeout(void);
|
struct timespec *logsrvd_conf_server_timeout(void);
|
||||||
struct timespec *logsrvd_conf_relay_connect_timeout(void);
|
struct timespec *logsrvd_conf_relay_connect_timeout(void);
|
||||||
struct timespec *logsrvd_conf_relay_timeout(void);
|
struct timespec *logsrvd_conf_relay_timeout(void);
|
||||||
|
time_t logsrvd_conf_relay_retry_interval(void);
|
||||||
#if defined(HAVE_OPENSSL)
|
#if defined(HAVE_OPENSSL)
|
||||||
bool logsrvd_conf_server_tls_check_peer(void);
|
bool logsrvd_conf_server_tls_check_peer(void);
|
||||||
SSL_CTX *logsrvd_server_tls_ctx(void);
|
SSL_CTX *logsrvd_server_tls_ctx(void);
|
||||||
@ -239,7 +240,7 @@ bool store_winsize_local(ChangeWindowSize *msg, uint8_t *buf, size_t len, struct
|
|||||||
bool store_suspend_local(CommandSuspend *msg, uint8_t *buf, size_t len, struct connection_closure *closure);
|
bool store_suspend_local(CommandSuspend *msg, uint8_t *buf, size_t len, struct connection_closure *closure);
|
||||||
|
|
||||||
/* logsrvd_queue.c */
|
/* logsrvd_queue.c */
|
||||||
bool logsrvd_queue_enable(int timeout, struct sudo_event_base *evbase);
|
bool logsrvd_queue_enable(time_t timeout, struct sudo_event_base *evbase);
|
||||||
bool logsrvd_queue_insert(struct connection_closure *closure);
|
bool logsrvd_queue_insert(struct connection_closure *closure);
|
||||||
bool logsrvd_queue_scan(struct sudo_event_base *evbase);
|
bool logsrvd_queue_scan(struct sudo_event_base *evbase);
|
||||||
void logsrvd_queue_dump(void);
|
void logsrvd_queue_dump(void);
|
||||||
|
@ -119,6 +119,7 @@ static struct logsrvd_config {
|
|||||||
struct address_list_container relays;
|
struct address_list_container relays;
|
||||||
struct timespec connect_timeout;
|
struct timespec connect_timeout;
|
||||||
struct timespec timeout;
|
struct timespec timeout;
|
||||||
|
time_t retry_interval;
|
||||||
char *relay_dir;
|
char *relay_dir;
|
||||||
bool tcp_keepalive;
|
bool tcp_keepalive;
|
||||||
bool store_first;
|
bool store_first;
|
||||||
@ -270,6 +271,12 @@ logsrvd_conf_relay_connect_timeout(void)
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
time_t
|
||||||
|
logsrvd_conf_relay_retry_interval(void)
|
||||||
|
{
|
||||||
|
return logsrvd_config->relay.retry_interval;
|
||||||
|
}
|
||||||
|
|
||||||
#if defined(HAVE_OPENSSL)
|
#if defined(HAVE_OPENSSL)
|
||||||
SSL_CTX *
|
SSL_CTX *
|
||||||
logsrvd_relay_tls_ctx(void)
|
logsrvd_relay_tls_ctx(void)
|
||||||
@ -1225,6 +1232,7 @@ logsrvd_conf_alloc(void)
|
|||||||
config->relay.timeout.tv_sec = DEFAULT_SOCKET_TIMEOUT_SEC;
|
config->relay.timeout.tv_sec = DEFAULT_SOCKET_TIMEOUT_SEC;
|
||||||
config->relay.connect_timeout.tv_sec = DEFAULT_SOCKET_TIMEOUT_SEC;
|
config->relay.connect_timeout.tv_sec = DEFAULT_SOCKET_TIMEOUT_SEC;
|
||||||
config->relay.tcp_keepalive = true;
|
config->relay.tcp_keepalive = true;
|
||||||
|
config->relay.retry_interval = 30;
|
||||||
if (!cb_relay_dir(config, _PATH_SUDO_RELAY_DIR, 0))
|
if (!cb_relay_dir(config, _PATH_SUDO_RELAY_DIR, 0))
|
||||||
goto bad;
|
goto bad;
|
||||||
#if defined(HAVE_OPENSSL)
|
#if defined(HAVE_OPENSSL)
|
||||||
|
@ -142,7 +142,7 @@ outgoing_queue_cb(int unused, int what, void *v)
|
|||||||
* The event will fire after the specified timeout elapses.
|
* The event will fire after the specified timeout elapses.
|
||||||
*/
|
*/
|
||||||
bool
|
bool
|
||||||
logsrvd_queue_enable(int timeout, struct sudo_event_base *evbase)
|
logsrvd_queue_enable(time_t timeout, struct sudo_event_base *evbase)
|
||||||
{
|
{
|
||||||
debug_decl(logsrvd_queue_enable, SUDO_DEBUG_UTIL);
|
debug_decl(logsrvd_queue_enable, SUDO_DEBUG_UTIL);
|
||||||
|
|
||||||
@ -193,7 +193,8 @@ logsrvd_queue_insert(struct connection_closure *closure)
|
|||||||
closure->journal_path = NULL;
|
closure->journal_path = NULL;
|
||||||
TAILQ_INSERT_TAIL(&outgoing_journal_queue, oj, entries);
|
TAILQ_INSERT_TAIL(&outgoing_journal_queue, oj, entries);
|
||||||
|
|
||||||
if (!logsrvd_queue_enable(30, closure->evbase))
|
if (!logsrvd_queue_enable(logsrvd_conf_relay_retry_interval(),
|
||||||
|
closure->evbase))
|
||||||
debug_return_bool(false);
|
debug_return_bool(false);
|
||||||
|
|
||||||
debug_return_bool(true);
|
debug_return_bool(true);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user