OpenVPN
src
openvpn
console.c
Go to the documentation of this file.
1
/*
2
* OpenVPN -- An application to securely tunnel IP networks
3
* over a single UDP port, with support for SSL/TLS-based
4
* session authentication and key exchange,
5
* packet encryption, packet authentication, and
6
* packet compression.
7
*
8
* Copyright (C) 2002-2024 OpenVPN Inc <sales@openvpn.net>
9
* Copyright (C) 2014-2015 David Sommerseth <davids@redhat.com>
10
* Copyright (C) 2016-2024 David Sommerseth <davids@openvpn.net>
11
*
12
* This program is free software; you can redistribute it and/or modify
13
* it under the terms of the GNU General Public License version 2
14
* as published by the Free Software Foundation.
15
*
16
* This program is distributed in the hope that it will be useful,
17
* but WITHOUT ANY WARRANTY; without even the implied warranty of
18
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19
* GNU General Public License for more details.
20
*
21
* You should have received a copy of the GNU General Public License along
22
* with this program; if not, write to the Free Software Foundation, Inc.,
23
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
24
*/
25
26
#ifdef HAVE_CONFIG_H
27
#include "
config.h
"
28
#endif
29
30
#include "
syshead.h
"
31
#include "
console.h
"
32
#include "
error.h
"
33
#include "
buffer.h
"
34
#include "
misc.h
"
35
36
#ifdef ENABLE_SYSTEMD
37
#include <systemd/sd-daemon.h>
38
#endif
39
40
41
struct
_query_user
query_user
[
QUERY_USER_NUMSLOTS
];
/* GLOBAL */
42
43
44
void
45
query_user_clear
(
void
)
46
{
47
int
i;
48
49
for
(i = 0; i <
QUERY_USER_NUMSLOTS
; i++)
50
{
51
CLEAR
(
query_user
[i]);
52
}
53
}
54
55
56
void
57
query_user_add
(
char
*
prompt
,
size_t
prompt_len
,
58
char
*resp,
size_t
resp_len,
59
bool
echo
)
60
{
61
int
i;
62
63
/* Ensure input is sane. All these must be present otherwise it is
64
* a programming error.
65
*/
66
ASSERT
(
prompt_len
> 0 &&
prompt
!= NULL && resp_len > 0 && resp != NULL );
67
68
/* Seek to the last unused slot */
69
for
(i = 0; i <
QUERY_USER_NUMSLOTS
; i++)
70
{
71
if
(
query_user
[i].
prompt
== NULL)
72
{
73
break
;
74
}
75
}
76
ASSERT
( i <
QUERY_USER_NUMSLOTS
);
/* Unlikely, but we want to panic if it happens */
77
78
/* Save the information needed for the user interaction */
79
query_user
[i].
prompt
=
prompt
;
80
query_user
[i].
prompt_len
=
prompt_len
;
81
query_user
[i].
response
= resp;
82
query_user
[i].
response_len
= resp_len;
83
query_user
[i].
echo
=
echo
;
84
}
error.h
_query_user::echo
bool echo
True: The user should see what is being typed, otherwise mask it.
Definition:
console.h:39
query_user
struct _query_user query_user[QUERY_USER_NUMSLOTS]
Global variable, declared in console.c.
Definition:
console.c:41
_query_user
Configuration setup for declaring what kind of information to ask a user for.
Definition:
console.h:34
console.h
CLEAR
#define CLEAR(x)
Definition:
basic.h:33
ASSERT
#define ASSERT(x)
Definition:
error.h:195
query_user_add
void query_user_add(char *prompt, size_t prompt_len, char *resp, size_t resp_len, bool echo)
Adds an item to ask the user for.
Definition:
console.c:57
_query_user::response_len
size_t response_len
Length the of the user response.
Definition:
console.h:38
_query_user::prompt_len
size_t prompt_len
Length of the prompt string.
Definition:
console.h:36
misc.h
QUERY_USER_NUMSLOTS
#define QUERY_USER_NUMSLOTS
Definition:
console.h:42
query_user_clear
void query_user_clear(void)
Wipes all data put into all of the query_user structs.
Definition:
console.c:45
buffer.h
syshead.h
_query_user::prompt
char * prompt
Prompt to present to the user.
Definition:
console.h:35
_query_user::response
char * response
The user's response.
Definition:
console.h:37
config.h
Generated by
1.8.17