mirror of https://github.com/OpenVPN/openvpn-gui
check if "log_dir" exists or create it
parent
56654663f5
commit
22ff456888
7
main.c
7
main.c
|
@ -41,6 +41,7 @@
|
||||||
#include "openvpn-gui-res.h"
|
#include "openvpn-gui-res.h"
|
||||||
#include "localization.h"
|
#include "localization.h"
|
||||||
#include "manage.h"
|
#include "manage.h"
|
||||||
|
#include "misc.h"
|
||||||
|
|
||||||
#ifndef DISABLE_CHANGE_PASSWORD
|
#ifndef DISABLE_CHANGE_PASSWORD
|
||||||
#include <openssl/evp.h>
|
#include <openssl/evp.h>
|
||||||
|
@ -170,6 +171,12 @@ int WINAPI _tWinMain (HINSTANCE hThisInstance,
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!EnsureDirExists(o.log_dir))
|
||||||
|
{
|
||||||
|
ShowLocalizedMsg(IDS_ERR_CREATE_PATH, _T("log_dir"), o.log_dir);
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
BuildFileList();
|
BuildFileList();
|
||||||
if (!VerifyAutoConnections()) {
|
if (!VerifyAutoConnections()) {
|
||||||
exit(1);
|
exit(1);
|
||||||
|
|
38
misc.c
38
misc.c
|
@ -24,6 +24,8 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
|
#include <tchar.h>
|
||||||
|
#include <string.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <malloc.h>
|
#include <malloc.h>
|
||||||
|
|
||||||
|
@ -106,6 +108,42 @@ ManagementCommandFromInput(connection_t *c, LPCSTR fmt, HWND hDlg, int id)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Ensures the given directory exists, by checking for and
|
||||||
|
* creating missing parts of the path.
|
||||||
|
* If the path does not exist and cannot be created return FALSE.
|
||||||
|
*/
|
||||||
|
BOOL
|
||||||
|
EnsureDirExists(LPTSTR dir)
|
||||||
|
{
|
||||||
|
DWORD attr = GetFileAttributes(dir);
|
||||||
|
if (attr == INVALID_FILE_ATTRIBUTES)
|
||||||
|
{
|
||||||
|
DWORD error = GetLastError();
|
||||||
|
if (error == ERROR_PATH_NOT_FOUND)
|
||||||
|
{
|
||||||
|
LPTSTR pos = _tcsrchr(dir, '\\');
|
||||||
|
if (pos == NULL)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
*pos = '\0';
|
||||||
|
BOOL ret = EnsureDirExists(dir);
|
||||||
|
*pos = '\\';
|
||||||
|
if (ret == FALSE)
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
else if (error != ERROR_FILE_NOT_FOUND)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
/* No error if directory already exists */
|
||||||
|
return (CreateDirectory(dir, NULL) == TRUE
|
||||||
|
|| GetLastError() == ERROR_ALREADY_EXISTS);
|
||||||
|
}
|
||||||
|
|
||||||
|
return (attr & FILE_ATTRIBUTE_DIRECTORY ? TRUE : FALSE);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Various string helper functions
|
* Various string helper functions
|
||||||
*/
|
*/
|
||||||
|
|
2
misc.h
2
misc.h
|
@ -24,6 +24,8 @@
|
||||||
|
|
||||||
BOOL ManagementCommandFromInput(connection_t *, LPCSTR, HWND, int);
|
BOOL ManagementCommandFromInput(connection_t *, LPCSTR, HWND, int);
|
||||||
|
|
||||||
|
BOOL EnsureDirExists(LPTSTR);
|
||||||
|
|
||||||
BOOL streq(LPCSTR, LPCSTR);
|
BOOL streq(LPCSTR, LPCSTR);
|
||||||
BOOL wcsbegins(LPCWSTR, LPCWSTR);
|
BOOL wcsbegins(LPCWSTR, LPCWSTR);
|
||||||
BOOL wcseq(LPCWSTR, LPCWSTR);
|
BOOL wcseq(LPCWSTR, LPCWSTR);
|
||||||
|
|
|
@ -166,6 +166,7 @@
|
||||||
#define IDS_NFO_SERVICE_STOPPED 1306
|
#define IDS_NFO_SERVICE_STOPPED 1306
|
||||||
#define IDS_NFO_ACTIVE_CONN_EXIT 1307
|
#define IDS_NFO_ACTIVE_CONN_EXIT 1307
|
||||||
#define IDS_NFO_SERVICE_ACTIVE_EXIT 1308
|
#define IDS_NFO_SERVICE_ACTIVE_EXIT 1308
|
||||||
|
#define IDS_ERR_CREATE_PATH 1309
|
||||||
|
|
||||||
/* Program Options Related */
|
/* Program Options Related */
|
||||||
#define IDS_NFO_USAGE 1401
|
#define IDS_NFO_USAGE 1401
|
||||||
|
|
|
@ -230,6 +230,7 @@ BEGIN
|
||||||
|
|
||||||
/* main - Resources */
|
/* main - Resources */
|
||||||
IDS_ERR_OPEN_DEBUG_FILE "Fehler beim öffnen des Debugfiles (%s)."
|
IDS_ERR_OPEN_DEBUG_FILE "Fehler beim öffnen des Debugfiles (%s)."
|
||||||
|
IDS_ERR_CREATE_PATH "Fehler beim Erstellen des %s Pfads:\n%s"
|
||||||
IDS_ERR_LOAD_RICHED20 "Kann RICHED20.DLL nicht laden."
|
IDS_ERR_LOAD_RICHED20 "Kann RICHED20.DLL nicht laden."
|
||||||
IDS_ERR_SHELL_DLL_VERSION "Die shell32.dll Versionsnummer ist zu niedrieg (0x%lx). Es müssen mindestens Version 5.0 installiert sein."
|
IDS_ERR_SHELL_DLL_VERSION "Die shell32.dll Versionsnummer ist zu niedrieg (0x%lx). Es müssen mindestens Version 5.0 installiert sein."
|
||||||
IDS_ERR_GUI_ALREADY_RUNNING "Die OpenVPN GUI wurde bereits gestartet."
|
IDS_ERR_GUI_ALREADY_RUNNING "Die OpenVPN GUI wurde bereits gestartet."
|
||||||
|
|
|
@ -228,6 +228,7 @@ BEGIN
|
||||||
"they reside in diffrent folders."
|
"they reside in diffrent folders."
|
||||||
/* main - Resources */
|
/* main - Resources */
|
||||||
IDS_ERR_OPEN_DEBUG_FILE "Error opening debug file (%s) for output."
|
IDS_ERR_OPEN_DEBUG_FILE "Error opening debug file (%s) for output."
|
||||||
|
IDS_ERR_CREATE_PATH "Could not create %s path:\n%s"
|
||||||
IDS_ERR_LOAD_RICHED20 "Could not load RICHED20.DLL."
|
IDS_ERR_LOAD_RICHED20 "Could not load RICHED20.DLL."
|
||||||
IDS_ERR_SHELL_DLL_VERSION "Your shell32.dll version is to low (0x%lx). You need at least version 5.0."
|
IDS_ERR_SHELL_DLL_VERSION "Your shell32.dll version is to low (0x%lx). You need at least version 5.0."
|
||||||
IDS_ERR_GUI_ALREADY_RUNNING "OpenVPN GUI is already running."
|
IDS_ERR_GUI_ALREADY_RUNNING "OpenVPN GUI is already running."
|
||||||
|
|
Loading…
Reference in New Issue