From 3427aeb88ff5ef3c639fb9e19201a20710eb3eab Mon Sep 17 00:00:00 2001 From: Selva Nair Date: Wed, 30 Nov 2022 22:31:23 -0500 Subject: [PATCH] Enable localization of openvpn daemon state names These strings are displayed in the PLAP progress window. Signed-off-by: Selva Nair --- openvpn-gui-res.h | 16 ++++++++++++++++ openvpn.c | 21 +++++++++++++++++++++ openvpn.h | 6 ++++++ plap/ui_glue.c | 2 +- res/openvpn-gui-res-en.rc | 17 +++++++++++++++++ 5 files changed, 61 insertions(+), 1 deletion(-) diff --git a/openvpn-gui-res.h b/openvpn-gui-res.h index f600067..1a90ab1 100644 --- a/openvpn-gui-res.h +++ b/openvpn-gui-res.h @@ -380,6 +380,22 @@ #define IDS_CERT_ISSUER 2163 #define IDS_CERT_NOTAFTER 2164 +/* openvpn daemon state descriptions */ +#define IDS_NFO_OVPN_STATE_INITIAL 2200 +#define IDS_NFO_OVPN_STATE_CONNECTING 2201 +#define IDS_NFO_OVPN_STATE_ASSIGN_IP 2202 +#define IDS_NFO_OVPN_STATE_ADD_ROUTES 2203 +#define IDS_NFO_OVPN_STATE_CONNECTED 2204 +#define IDS_NFO_OVPN_STATE_RECONNECTING 2205 +#define IDS_NFO_OVPN_STATE_EXITING 2206 +#define IDS_NFO_OVPN_STATE_WAIT 2207 +#define IDS_NFO_OVPN_STATE_AUTH 2208 +#define IDS_NFO_OVPN_STATE_GET_CONFIG 2209 +#define IDS_NFO_OVPN_STATE_RESOLVE 2210 +#define IDS_NFO_OVPN_STATE_TCP_CONNECT 2211 +#define IDS_NFO_OVPN_STATE_AUTH_PENDING 2212 +#define IDS_NFO_OVPN_STATE_UNKNOWN 2220 + /* Timer IDs */ #define IDT_STOP_TIMER 2500 /* Timer used to trigger force termination */ diff --git a/openvpn.c b/openvpn.c index fd663d7..39657d2 100644 --- a/openvpn.c +++ b/openvpn.c @@ -2789,3 +2789,24 @@ ResetSavePasswords(connection_t *c) c->flags &= ~(FLAG_SAVE_KEY_PASS | FLAG_SAVE_AUTH_PASS); SetMenuStatus(c, c->state); } + +/* keep this array in same order as corresponding resource ids -- IDS_NFO_OVPN_STATE_xxxxx */ +static const char *daemon_states[] = {"INITIAL", "CONNECTING", "ASSIGN_IP", + "ADD_ROUTES", "CONNECTED", "RECONNECTING", "EXITING", "WAIT", + "AUTH", "GET_CONFIG", "RESOLVE", "TCP_CONNECT", "AUTH_PENDING", NULL}; + +/* + * Given an OpenVPN state as reported by the management interface + * return the correspnding resource id for translated string. + * Returns IDS_NFO_OVPN_STATE_UNKNOWN if no match found. + */ +int +daemon_state_resid(const char *state) +{ + int i = 0; + while (daemon_states[i] && strcmp(daemon_states[i], state)) + { + i++; + } + return daemon_states[i] ? IDS_NFO_OVPN_STATE_INITIAL + i : IDS_NFO_OVPN_STATE_UNKNOWN; +} diff --git a/openvpn.h b/openvpn.h index a989ec0..7a6b153 100644 --- a/openvpn.h +++ b/openvpn.h @@ -89,4 +89,10 @@ parse_dynamic_cr(const char* str, auth_param_t* param); void free_auth_param(auth_param_t* param); +/* + * Given an OpenVPN state as reported by the management interface + * return the correspnding resource id for translation. + */ +int daemon_state_resid(const char *name); + #endif diff --git a/plap/ui_glue.c b/plap/ui_glue.c index f848654..dd12230 100644 --- a/plap/ui_glue.c +++ b/plap/ui_glue.c @@ -353,7 +353,7 @@ GetConnectionStatusText(connection_t *c, wchar_t *status, DWORD len) } else if (*c->daemon_state) /* this is more fine-grained and thus preferred */ { - __sntprintf_0(status, len, L"%hs", c->daemon_state); + LoadLocalizedStringBuf(status, len, daemon_state_resid(c->daemon_state)); } else if (*status_text) { diff --git a/res/openvpn-gui-res-en.rc b/res/openvpn-gui-res-en.rc index 840825a..ebd7ac2 100644 --- a/res/openvpn-gui-res-en.rc +++ b/res/openvpn-gui-res-en.rc @@ -582,4 +582,21 @@ once as Administrator to update the registry." IDS_CERT_DISPLAYNAME "Issued to" IDS_CERT_ISSUER "Issued by" IDS_CERT_NOTAFTER "Valid until" + + /* openvpn daemon state names -- these are shown on progress dialog in PLAP */ + IDS_NFO_OVPN_STATE_INITIAL "Initializing" + IDS_NFO_OVPN_STATE_CONNECTING "Connecting" + IDS_NFO_OVPN_STATE_ASSIGN_IP "Assigning IP address" + IDS_NFO_OVPN_STATE_ADD_ROUTES "Adding routes" + IDS_NFO_OVPN_STATE_CONNECTED "Connected" + IDS_NFO_OVPN_STATE_RECONNECTING "Reconnecting" + IDS_NFO_OVPN_STATE_EXITING "Exiting" + IDS_NFO_OVPN_STATE_WAIT "Waiting" + IDS_NFO_OVPN_STATE_AUTH "Authenticating" + IDS_NFO_OVPN_STATE_GET_CONFIG "Pulling configuration from server" + IDS_NFO_OVPN_STATE_RESOLVE "Resolving remote host" + IDS_NFO_OVPN_STATE_TCP_CONNECT "Establishing TCP connection" + IDS_NFO_OVPN_STATE_AUTH_PENDING "Authentication pending" + IDS_NFO_OVPN_STATE_UNKNOWN "?" + END