diff options
Diffstat (limited to 'src/nm-config-data.c')
-rw-r--r-- | src/nm-config-data.c | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/src/nm-config-data.c b/src/nm-config-data.c index b5868b7b1a..6461331c0a 100644 --- a/src/nm-config-data.c +++ b/src/nm-config-data.c @@ -386,6 +386,52 @@ _nm_config_data_get_keyfile_user (const NMConfigData *self) /*****************************************************************************/ +static NMAuthPolkitMode +nm_auth_polkit_mode_from_string (const char *str) +{ + int as_bool; + + if (!str) + return NM_AUTH_POLKIT_MODE_UNKNOWN; + + if (nm_streq (str, "root-only")) + return NM_AUTH_POLKIT_MODE_ROOT_ONLY; + + as_bool = _nm_utils_ascii_str_to_bool (str, -1); + if (as_bool != -1) { + return as_bool + ? NM_AUTH_POLKIT_MODE_USE_POLKIT + : NM_AUTH_POLKIT_MODE_ALLOW_ALL; + } + + return NM_AUTH_POLKIT_MODE_UNKNOWN; +} + +NMAuthPolkitMode +nm_config_data_get_main_auth_polkit (const NMConfigData *self) +{ + NMAuthPolkitMode auth_polit_mode; + const char *str; + + str = nm_config_data_get_value (self, + NM_CONFIG_KEYFILE_GROUP_MAIN, + NM_CONFIG_KEYFILE_KEY_MAIN_AUTH_POLKIT, + NM_CONFIG_GET_VALUE_STRIP + | NM_CONFIG_GET_VALUE_NO_EMPTY); + auth_polit_mode = nm_auth_polkit_mode_from_string (str); + if (auth_polit_mode == NM_AUTH_POLKIT_MODE_UNKNOWN) { + auth_polit_mode = nm_auth_polkit_mode_from_string (NM_CONFIG_DEFAULT_MAIN_AUTH_POLKIT); + if (auth_polit_mode == NM_AUTH_POLKIT_MODE_UNKNOWN) { + nm_assert_not_reached (); + auth_polit_mode = NM_AUTH_POLKIT_MODE_ROOT_ONLY; + } + } + + return auth_polit_mode; +} + +/*****************************************************************************/ + /** * nm_config_data_get_groups: * @self: the #NMConfigData instance |