12#ifndef OPENVPN_COMMON_DAEMON_H
13#define OPENVPN_COMMON_DAEMON_H
37 const bool combine_out_err)
57 catch (
const std::exception &e)
59 std::cerr <<
"LogReopen: " << e.what() << std::endl;
70 const bool log_append,
71 const int log_versions,
72 const bool stdin_to_dev_null,
73 const bool combine_out_err)
75 if (!log_append && log_versions >= 1)
77 RedirectStd redir(stdin_to_dev_null ?
"/dev/null" :
"",
86 user_group->
chown(redir.
out(), log_fn);
88 catch (
const std::exception &)
103#if defined(__APPLE__)
104#pragma clang diagnostic push
105#pragma clang diagnostic ignored "-Wdeprecated-declarations"
107 if (daemon(1, 1) < 0)
108 throw daemon_err(
"daemon() failed");
109#if defined(__APPLE__)
110#pragma clang diagnostic pop
116 const bool log_append,
117 const int log_versions)
const std::string log_fn_
LogReopen(const std::string &log_fn, const bool combine_out_err)
virtual void reopen() override
const bool combine_out_err_
static constexpr int FLAGS_OVERWRITE
static constexpr mode_t MODE_USER_GROUP
static constexpr int FLAGS_APPEND
void chown(const std::string &fn) const
WritePid(const WritePid &)=delete
WritePid(const char *pid_fn_arg)
WritePid & operator=(const WritePid &)=delete
#define OPENVPN_EXCEPTION(C)
Support deferred server-side state creation when client connects.
std::string to_string(T value)
LogSetup::Ptr log_setup(const std::string &log_fn, const SetUserGroup *user_group, const bool log_append, const int log_versions, const bool stdin_to_dev_null, const bool combine_out_err)
void log_rotate(const std::string &fn, const int max_versions)
void write_string(const std::string &filename, const std::string &str)
void write_pid(const std::string &fn)
void redirect() noexcept override