#include <sbuild-auth-conv-tty.h>
Inheritance diagram for sbuild::auth_conv_tty:
Public Member Functions | |
auth_conv_tty () | |
The constructor. | |
virtual | ~auth_conv_tty () |
The destructor. | |
virtual time_t | get_warning_timeout () |
Get the time at which the user will be warned. | |
virtual void | set_warning_timeout (time_t timeout) |
Set the time at which the user will be warned. | |
virtual time_t | get_fatal_timeout () |
Get the time at which the conversation will be terminated with an error. | |
virtual void | set_fatal_timeout (time_t timeout) |
Set the time at which the conversation will be terminated with an error. | |
virtual bool | conversation (message_list &messages) |
Private Member Functions | |
int | get_delay () |
Get the time delay before the next SIGALRM signal. | |
std::string | read_string (std::string message, bool echo) |
Read user input from standard input. | |
Private Attributes | |
time_t | warning_timeout |
The time to warn at. | |
time_t | fatal_timeout |
The time to end at. | |
time_t | start_time |
The time the current delay was obtained at. |
This class is an implementation of the auth_conv interface, and is used to interact with the user on a terminal (TTY) interface.
In order to implement timeouts, this class uses alarm(2). This has some important implications. Global state is modified by the object, so only one may be used at once in a single process. In addition, no other part of the process may set or unset the SIGALRM handlers and the alarm(2) timer during the time PAM authentication is proceeding.
|
The constructor.
|
|
The destructor.
|
|
|
|
Get the time delay before the next SIGALRM signal. If either the warning timeout or the fatal timeout have expired, a message to notify the user is printed to stderr. If the fatal timeout is reached, an exception is thrown.
|
|
Get the time at which the conversation will be terminated with an error.
Implements sbuild::auth_conv. |
|
Get the time at which the user will be warned.
Implements sbuild::auth_conv. |
|
Read user input from standard input. The prompt message is printed to prompt the user for input. If echo is true, the user input it echoed back to the terminal, but if false, echoing is suppressed using termios(3). If the SIGALRM timer expires while waiting for input, this is handled by re-checking the delay time which will warn the user or cause the input routine to terminate if the fatal timeout has expired.
|
|
Set the time at which the conversation will be terminated with an error.
Implements sbuild::auth_conv. |
|
Set the time at which the user will be warned.
Implements sbuild::auth_conv. |
|
The time to end at.
|
|
The time the current delay was obtained at.
|
|
The time to warn at.
|