From: Selva Nair Date: Sat, 18 Nov 2017 17:40:58 +0000 (-0500) Subject: Make most registry values optional X-Git-Tag: v2.4.5~13 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=c07bdace820753ab29def5edc3a6cadbf233cd03;p=thirdparty%2Fopenvpn.git Make most registry values optional Not all installations need registry values such as log_dir and config_dir especially if automatic service is not in use. This patch provides reasonable defaults for registry values. - Read the default value of HKLM\Software\PACKAGE_NAME to get the install path and construct defaults for exe_path, config_dir, log_dir from it. Use "ovpn", "0", NORMAL_PRIORITY as the defaults for config file extension, log-append flag and process priority. The only remaining required registry entry is the root key (usually HKLM\Software\OpenVPN) whose default value should be set to the installation path. Signed-off-by: Selva Nair Acked-by: Gert Doering Message-Id: <1511026858-23281-2-git-send-email-selva.nair@gmail.com> URL: https://www.mail-archive.com/openvpn-devel@lists.sourceforge.net/msg15892.html Signed-off-by: Gert Doering (cherry picked from commit db04bca6729e9fe1ea60f0b3bd0329244a6ed611) --- diff --git a/src/openvpnserv/common.c b/src/openvpnserv/common.c index 200a47b56..6c29f5799 100644 --- a/src/openvpnserv/common.c +++ b/src/openvpnserv/common.c @@ -89,6 +89,8 @@ GetOpenvpnSettings(settings_t *s) TCHAR append[2]; DWORD error; HKEY key; + TCHAR install_path[MAX_PATH]; + TCHAR default_value[MAX_PATH]; openvpn_sntprintf(reg_path, _countof(reg_path), TEXT("SOFTWARE\\" PACKAGE_NAME "%s"), service_instance); @@ -99,37 +101,50 @@ GetOpenvpnSettings(settings_t *s) return MsgToEventLog(M_SYSERR, TEXT("Could not open Registry key HKLM\\%s not found"), reg_path); } - error = GetRegString(key, TEXT("exe_path"), s->exe_path, sizeof(s->exe_path), NULL); + /* The default value of REG_KEY is the install path */ + if (GetRegString(key, NULL, install_path, sizeof(install_path), NULL) != ERROR_SUCCESS) + { + goto out; + } + + openvpn_sntprintf(default_value, _countof(default_value), TEXT("%s\\bin\\openvpn.exe"), + install_path); + error = GetRegString(key, TEXT("exe_path"), s->exe_path, sizeof(s->exe_path), default_value); if (error != ERROR_SUCCESS) { goto out; } - error = GetRegString(key, TEXT("config_dir"), s->config_dir, sizeof(s->config_dir), NULL); + openvpn_sntprintf(default_value, _countof(default_value), TEXT("%s\\config"), install_path); + error = GetRegString(key, TEXT("config_dir"), s->config_dir, sizeof(s->config_dir), + default_value); if (error != ERROR_SUCCESS) { goto out; } - error = GetRegString(key, TEXT("config_ext"), s->ext_string, sizeof(s->ext_string), NULL); + error = GetRegString(key, TEXT("config_ext"), s->ext_string, sizeof(s->ext_string), + TEXT(".ovpn")); if (error != ERROR_SUCCESS) { goto out; } - error = GetRegString(key, TEXT("log_dir"), s->log_dir, sizeof(s->log_dir), NULL); + openvpn_sntprintf(default_value, _countof(default_value), TEXT("%s\\log"), install_path); + error = GetRegString(key, TEXT("log_dir"), s->log_dir, sizeof(s->log_dir), default_value); if (error != ERROR_SUCCESS) { goto out; } - error = GetRegString(key, TEXT("priority"), priority, sizeof(priority), NULL); + error = GetRegString(key, TEXT("priority"), priority, sizeof(priority), + TEXT("NORMAL_PRIORITY_CLASS")); if (error != ERROR_SUCCESS) { goto out; } - error = GetRegString(key, TEXT("log_append"), append, sizeof(append), NULL); + error = GetRegString(key, TEXT("log_append"), append, sizeof(append), TEXT("0")); if (error != ERROR_SUCCESS) { goto out;