54get_env(
const char *name,
const char *envp[])
58 const size_t namelen = strlen(name);
59 for (
int i = 0; envp[
i]; ++
i)
61 if (!strncmp(envp[
i], name, namelen))
63 const char *cp = envp[
i] + namelen;
83 printf(
"log_v3: ** ERROR ** Incompatible plug-in interface between this plug-in and OpenVPN\n");
89 printf(
"This plug-in can only be used against OpenVPN with OpenSSL\n");
94 printf(
"log_v3: OpenVPN %s (Major: %i, Minor: %i, Patch: %s)\n", args->
ovpn_version,
114 printf(
"PLUGIN: allocating memory for context failed\n");
129show(
const int type,
const char *
argv[],
const char *envp[])
135 printf(
"OPENVPN_PLUGIN_UP\n");
139 printf(
"OPENVPN_PLUGIN_DOWN\n");
143 printf(
"OPENVPN_PLUGIN_ROUTE_UP\n");
147 printf(
"OPENVPN_PLUGIN_IPCHANGE\n");
151 printf(
"OPENVPN_PLUGIN_TLS_VERIFY\n");
155 printf(
"OPENVPN_PLUGIN_AUTH_USER_PASS_VERIFY\n");
159 printf(
"OPENVPN_PLUGIN_CLIENT_CONNECT_V2\n");
163 printf(
"OPENVPN_PLUGIN_CLIENT_DISCONNECT\n");
167 printf(
"OPENVPN_PLUGIN_LEARN_ADDRESS\n");
171 printf(
"OPENVPN_PLUGIN_TLS_FINAL\n");
175 printf(
"OPENVPN_PLUGIN_?\n");
180 for (
i = 0;
argv[
i] != NULL; ++
i)
182 printf(
"%d '%s'\n", (
int)
i,
argv[
i]);
186 for (
i = 0; envp[
i] != NULL; ++
i)
188 printf(
"%d '%s'\n", (
int)
i, envp[
i]);
199 X509_NAME *x509_name;
200 X509_NAME_ENTRY *ent;
202 unsigned char *buf = NULL;
204 x509_name = X509_get_subject_name(x509crt);
205 n = X509_NAME_entry_count(x509_name);
206 for (
i = 0;
i < n; ++
i)
208 ent = X509_NAME_get_entry(x509_name,
i);
213 fn = X509_NAME_ENTRY_get_object(ent);
218 val = X509_NAME_ENTRY_get_data(ent);
223 fn_nid = OBJ_obj2nid(fn);
224 if (fn_nid == NID_undef)
228 objbuf = OBJ_nid2sn(fn_nid);
233 if (ASN1_STRING_to_UTF8(&buf, val) < 0)
238 printf(
"X509 %s: %s\n", objbuf, (
char *)buf);
250 printf(
"\nopenvpn_plugin_func_v3() :::::>> ");
256 printf(
"---- X509 Subject information ----\n");
259 printf(
"----------------------------------\n");
OPENVPN_EXPORT void openvpn_plugin_close_v1(openvpn_plugin_handle_t handle)
static void x509_print_info(X509 *x509crt)
void show(const int type, const char *argv[], const char *envp[])
static const char * get_env(const char *name, const char *envp[])
OPENVPN_EXPORT int openvpn_plugin_open_v3(const int v3structver, struct openvpn_plugin_args_open_in const *args, struct openvpn_plugin_args_open_return *ret)
OPENVPN_EXPORT int openvpn_plugin_func_v3(const int version, struct openvpn_plugin_args_func_in const *args, struct openvpn_plugin_args_func_return *retptr)
#define OPENVPN_PLUGIN_AUTH_USER_PASS_VERIFY
#define OPENVPN_PLUGIN_CLIENT_CONNECT_V2
#define OPENVPN_PLUGIN_LEARN_ADDRESS
#define OPENVPN_PLUGIN_DOWN
void * openvpn_plugin_handle_t
#define OPENVPN_PLUGIN_MASK(x)
#define OPENVPN_PLUGIN_TLS_FINAL
#define OPENVPN_PLUGIN_TLS_VERIFY
#define OPENVPN_PLUGIN_IPCHANGE
#define OPENVPN_PLUGIN_FUNC_SUCCESS
#define OPENVPN_PLUGIN_UP
#define OPENVPN_PLUGIN_CLIENT_DISCONNECT
#define OPENVPN_PLUGIN_ROUTE_UP
#define OPENVPN_PLUGINv3_STRUCTVER
Defines version of the v3 plugin argument structs.
#define OPENVPN_PLUGIN_FUNC_ERROR
Contains all state information for one tunnel.
Arguments used to transport variables to and from the plug-in.
openvpn_x509_cert_t * current_cert
openvpn_plugin_handle_t handle
Arguments used to transport variables to and from the plug-in.
Arguments used to transport variables to the plug-in.
const char *const ovpn_version_patch
const unsigned int ovpn_version_major
const char * ovpn_version
const unsigned int ovpn_version_minor
Arguments used to transport variables from the plug-in back to the OpenVPN process.
openvpn_plugin_handle_t handle