#include <sbuild-session.h>
Inheritance diagram for sbuild::Session:
Public Types | |
typedef runtime_error_custom< Session > | error |
Exception type. | |
typedef std::tr1::shared_ptr< Config > | config_ptr |
A shared_ptr to a Config object. | |
enum | Operation { OPERATION_AUTOMATIC, OPERATION_BEGIN, OPERATION_RECOVER, OPERATION_END, OPERATION_RUN } |
Session operations. More... | |
Public Member Functions | |
Session (const std::string &service, config_ptr &config, Operation operation, string_list chroots) | |
The constructor. | |
virtual | ~Session () |
The destructor. | |
config_ptr & | get_config () |
Get the configuration associated with this session. | |
void | set_config (config_ptr &config) |
Set the configuration associated with this session. | |
const string_list & | get_chroots () const |
Get the chroots to use in this session. | |
void | set_chroots (const string_list &chroots) |
Set the chroots to use in this session. | |
Operation | get_operation () const |
Get the operation this session will perform. | |
void | set_operation (Operation operation) |
Set the operation this session will perform. | |
const std::string & | get_session_id () const |
Get the session identifier. | |
void | set_session_id (const std::string &session_id) |
Set the session identifier. | |
bool | get_force () const |
Get the force status of this session. | |
void | set_force (bool force) |
Set the force status of this session. | |
int | get_child_status () const |
Get the exit (wait) status of the last child process to run in this session. | |
virtual sbuild::Auth::Status | get_auth_status () const |
Check if authentication is required, taking groups and root-groups membership or all chroots specified into account. | |
virtual void | run_impl () |
Run a session. | |
Private Member Functions | |
int | exec (const std::string &file, const string_list &command, const env_list &env) |
execve wrapper. | |
void | setup_chroot (Chroot &session_chroot, Chroot::SetupType setup_type) |
Setup a chroot. | |
void | run_chroot (Chroot &session_chroot) |
Run command or login shell in the specified chroot. | |
void | run_child (Chroot &session_chroot) |
Run a command or login shell as a child process in the specified chroot. | |
void | wait_for_child (int pid, int &child_status) |
Wait for a child process to complete, and check its exit status. | |
Private Attributes | |
config_ptr | config |
The chroot configuration. | |
string_list | chroots |
The chroots to run the session operation in. | |
int | child_status |
The child exit status. | |
Operation | operation |
The session operation to perform. | |
std::string | session_id |
The session identifier. | |
bool | force |
The session force status. |
This class provides the session handling for schroot. It derives from Auth, which performs all the necessary PAM actions, specialising it by overriding its virtual functions. This allows more sophisticated handling of user authorisation (groups and root-groups membership in the configuration file) and session management (setting up the session, entering the chroot and running the requested command or shell).
|
Session operations.
|
|
The constructor.
|
|
execve wrapper. Run the command specified by file (an absolute pathname), using command and env as the argv and environment, respectively.
|
|
Get the exit (wait) status of the last child process to run in this session.
|
|
Get the chroots to use in this session.
|
|
Get the configuration associated with this session.
|
|
Get the force status of this session.
|
|
Get the operation this session will perform.
|
|
Get the session identifier. The session identifier is a unique string to identify a session.
|
|
Run a command or login shell as a child process in the specified chroot. This method is only ever to be run in a child process, and will never return.
|
|
Run command or login shell in the specified chroot. An error will be thrown on failure.
|
|
Run a session. If a command has been specified, this will be run in each of the specified chroots. If no command has been specified, a login shell will run in the specified chroot. An error will be thrown on failure. Implements sbuild::Auth. |
|
Set the chroots to use in this session.
|
|
Set the configuration associated with this session.
|
|
Set the force status of this session.
|
|
Set the operation this session will perform.
|
|
Set the session identifier. The session identifier is a unique string to identify a session.
|
|
Setup a chroot. This runs all of the commands in setup.d or run.d. The environment variables CHROOT_NAME, CHROOT_DESCRIPTION, CHROOT_LOCATION, AUTH_USER and AUTH_VERBOSITY are set for use in setup scripts. See schroot-setup(5) for a complete list. An error will be thrown on failure.
|
|
Wait for a child process to complete, and check its exit status. An error will be thrown on failure.
|
|
The child exit status.
|