sbuild
1.6.10
|
Chroot support for extensible user metadata. More...
#include <sbuild-chroot-facet-userdata.h>
Public Types | |
enum | error_code { ENV_AMBIGUOUS, KEY_AMBIGUOUS, KEY_DISALLOWED, KEYNAME_INVALID } |
Error codes. More... | |
typedef custom_error< error_code > | error |
Exception type. | |
typedef std::shared_ptr< chroot_facet_userdata > | ptr |
A shared_ptr to a chroot facet object. | |
typedef std::shared_ptr< const chroot_facet_userdata > | const_ptr |
A shared_ptr to a const chroot facet object. | |
![]() | |
typedef std::shared_ptr< chroot_facet > | ptr |
A shared_ptr to a chroot facet object. | |
typedef std::shared_ptr< const chroot_facet > | const_ptr |
A shared_ptr to a const chroot facet object. | |
Public Member Functions | |
virtual | ~chroot_facet_userdata () |
The destructor. | |
virtual chroot_facet::ptr | clone () const |
Copy the chroot facet. More... | |
virtual std::string const & | get_name () const |
Get the name of the chroot facet. More... | |
virtual void | setup_env (chroot const &chroot, environment &env) const |
Set environment. More... | |
virtual chroot::session_flags | get_session_flags (chroot const &chroot) const |
Get the session flags of the chroot. More... | |
virtual void | get_details (chroot const &chroot, format_detail &detail) const |
Get detailed information about the chroot for output. More... | |
virtual void | get_keyfile (chroot const &chroot, keyfile &keyfile) const |
Copy the chroot properties into a keyfile. More... | |
virtual void | set_keyfile (chroot &chroot, keyfile const &keyfile, string_list &used_keys) |
Set the chroot properties from a keyfile. More... | |
string_map const & | get_data () const |
Get user data as a map of key-value pairs. More... | |
bool | get_data (std::string const &key, std::string &value) const |
Get the value of a single user data key. More... | |
void | set_data (string_map const &data) |
Set user data from a string map. More... | |
void | set_data (std::string const &key, std::string const &value) |
Set a single key-value pair. More... | |
void | set_system_data (std::string const &key, std::string const &value) |
Set a single key-value pair. More... | |
void | remove_data (std::string const &key) |
Remove a single key. More... | |
string_set const & | get_user_modifiable_keys () const |
Get the set of keys allowed to be modified by a user. More... | |
void | set_user_modifiable_keys (string_set const &keys) |
Set the set of keys allowed to be modified by a user. More... | |
string_set const & | get_root_modifiable_keys () const |
Get the set of keys allowed to be modified by root. More... | |
void | set_root_modifiable_keys (string_set const &keys) |
Set the set of keys allowed to be modified by root. More... | |
void | set_user_data (string_map const &data) |
Set data for the current user. More... | |
void | set_root_data (string_map const &data) |
Set data for root. More... | |
void | set_system_data (string_map const &data) |
Set data without user or root checks. More... | |
![]() | |
virtual | ~chroot_facet () |
The destructor. | |
Static Public Member Functions | |
static ptr | create () |
Create a chroot facet. More... | |
Private Member Functions | |
chroot_facet_userdata () | |
The constructor. | |
void | set_data (string_map const &data, string_set const &allowed_keys, bool root) |
Generic function for setting data for any user. More... | |
Private Attributes | |
string_map | userdata |
Mapping between user keys and values. | |
string_set | env |
Environment checking. | |
string_set | user_modifiable_keys |
Keys modifiable by users. | |
string_set | root_modifiable_keys |
Keys modifiable by root. | |
Additional Inherited Members | |
![]() | |
chroot_facet () | |
The constructor. | |
void | set_chroot (chroot &chroot) |
Set containing chroot. More... | |
![]() | |
chroot * | owner |
Chroot owning this facet. | |
Chroot support for extensible user metadata.
This facet contains user-specific configuration, both additional keys in schroot.conf, and also set from the command-line.
|
virtual |
Copy the chroot facet.
This is a virtual copy constructor.
Implements sbuild::chroot_facet.
References chroot_facet_userdata().
|
static |
Create a chroot facet.
References chroot_facet_userdata().
Referenced by sbuild::chroot::chroot().
string_map const & chroot_facet_userdata::get_data | ( | ) | const |
bool chroot_facet_userdata::get_data | ( | std::string const & | key, |
std::string & | value | ||
) | const |
Get the value of a single user data key.
key | the key to search for. |
value | the string to store the key's value in. Only modified if the key is found. |
References userdata.
|
virtual |
Get detailed information about the chroot for output.
chroot | the chroot to use. |
detail | the details to output to. |
Implements sbuild::chroot_facet.
References sbuild::_(), sbuild::format_detail::add(), root_modifiable_keys, user_modifiable_keys, and userdata.
Copy the chroot properties into a keyfile.
The keyfile group with the name of the chroot will be set; if it already exists, it will be removed before setting it.
chroot | the chroot to use. |
keyfile | the keyfile to use. |
Implements sbuild::chroot_facet.
References sbuild::chroot::get_name(), get_root_modifiable_keys(), get_user_modifiable_keys(), sbuild::basic_keyfile< K, P >::set_object_set_value(), sbuild::basic_keyfile< K, P >::set_value(), and userdata.
|
virtual |
string_set const & chroot_facet_userdata::get_root_modifiable_keys | ( | ) | const |
Get the set of keys allowed to be modified by root.
References root_modifiable_keys.
Referenced by get_keyfile().
|
virtual |
Get the session flags of the chroot.
These determine how the Session controlling the chroot will operate.
chroot | the chroot to use. |
Implements sbuild::chroot_facet.
References sbuild::chroot::SESSION_NOFLAGS.
string_set const & chroot_facet_userdata::get_user_modifiable_keys | ( | ) | const |
Get the set of keys allowed to be modified by a user.
References user_modifiable_keys.
Referenced by get_keyfile().
void chroot_facet_userdata::remove_data | ( | std::string const & | key | ) |
Remove a single key.
If present, the specified key is removed.
key | the key to remove. |
References userdata.
void chroot_facet_userdata::set_data | ( | string_map const & | data | ) |
Set user data from a string map.
Note that this method does not perform permissions checking.
data | the user data to set. |
Referenced by set_data(), set_root_data(), and set_user_data().
void chroot_facet_userdata::set_data | ( | std::string const & | key, |
std::string const & | value | ||
) |
Set a single key-value pair.
Note that this method does not perform permissions checking.
key | the key to set. |
value | the value of the key. |
References KEYNAME_INVALID, and set_system_data().
|
private |
Generic function for setting data for any user.
data | a map of key-value pairs. |
allowed_keys | the keys which may be used. |
root | whether or not the user is the root user. |
References sbuild::_(), KEY_DISALLOWED, set_data(), and sbuild::error_base::set_reason().
|
virtual |
Set the chroot properties from a keyfile.
The chroot name must have previously been set, so that the correct keyfile group may be determined.
chroot | the chroot to use. |
keyfile | the keyfile to get the properties from. |
used_keys | a list of the keys used will be set. |
Implements sbuild::chroot_facet.
References sbuild::chroot::get_name(), sbuild::basic_keyfile< K, P >::get_object_set_value(), sbuild::keyfile_base::PRIORITY_OPTIONAL, set_root_modifiable_keys(), and set_user_modifiable_keys().
void chroot_facet_userdata::set_root_data | ( | string_map const & | data | ) |
Set data for root.
Only keys set using set_user_modifiable_keys() and set_root_modifiable_keys() are permitted to be set, otherwise an exception will be thrown.
data | a map of key-value pairs. |
References root_modifiable_keys, set_data(), and user_modifiable_keys.
Referenced by sbuild::session::run_impl().
void chroot_facet_userdata::set_root_modifiable_keys | ( | string_set const & | keys | ) |
Set the set of keys allowed to be modified by root.
keys | a string set of keys. |
References root_modifiable_keys.
Referenced by set_keyfile().
void chroot_facet_userdata::set_system_data | ( | std::string const & | key, |
std::string const & | value | ||
) |
Set a single key-value pair.
Note that this method does not perform permissions checking or key name validation.
key | the key to set. |
value | the value of the key. |
References sbuild::_(), env, KEY_AMBIGUOUS, sbuild::error_base::set_reason(), and userdata.
Referenced by set_data(), and set_system_data().
void chroot_facet_userdata::set_system_data | ( | string_map const & | data | ) |
Set data without user or root checks.
string_map | a map of key-value pairs. |
References set_system_data().
void chroot_facet_userdata::set_user_data | ( | string_map const & | data | ) |
Set data for the current user.
Only keys set using set_user_modifiable_keys() are permitted to be set, otherwise an exception will be thrown.
string_map | a map of key-value pairs. |
References set_data(), and user_modifiable_keys.
void chroot_facet_userdata::set_user_modifiable_keys | ( | string_set const & | keys | ) |
Set the set of keys allowed to be modified by a user.
keys | a string set of keys. |
References user_modifiable_keys.
Referenced by set_keyfile().
|
virtual |
Set environment.
Set the environment that the setup scripts will see during execution.
chroot | the chroot to use. |
env | the environment to set. |
Implements sbuild::chroot_facet.
References sbuild::_(), sbuild::environment::add(), ENV_AMBIGUOUS, sbuild::environment::get(), sbuild::error_base::set_reason(), and userdata.