mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2026-01-04 02:50:17 +01:00
cli: merge branch 'bg/rh1702199'
Don't print blob certificates unless the '--show-secrets' option is passed to nmcli; plus other related changes. https://bugzilla.redhat.com/show_bug.cgi?id=1702199 https://gitlab.freedesktop.org/NetworkManager/NetworkManager/merge_requests/122
This commit is contained in:
commit
9ecbca4798
5 changed files with 64 additions and 25 deletions
|
|
@ -3785,6 +3785,7 @@ _meta_abstract_complete (const NMMetaAbstractInfo *abstract_info, const char *te
|
|||
nmc_meta_environment_arg,
|
||||
&ctx,
|
||||
text,
|
||||
NULL,
|
||||
&values_to_free);
|
||||
if (values)
|
||||
return values_to_free ?: g_strdupv ((char **) values);
|
||||
|
|
@ -4525,11 +4526,12 @@ run_rl_generator (rl_compentry_func_t *generator_func, const char *prefix)
|
|||
}
|
||||
|
||||
static gboolean
|
||||
complete_option (const NMMetaAbstractInfo *abstract_info, const char *prefix, NMConnection *context_connection)
|
||||
complete_option (NmCli *nmc, const NMMetaAbstractInfo *abstract_info, const char *prefix, NMConnection *context_connection)
|
||||
{
|
||||
const OptionInfo *candidate;
|
||||
const char *const*values;
|
||||
gs_strfreev char **values_to_free = NULL;
|
||||
gboolean complete_filename = FALSE;
|
||||
const NMMetaOperationContext ctx = {
|
||||
.connection = context_connection,
|
||||
};
|
||||
|
|
@ -4539,7 +4541,12 @@ complete_option (const NMMetaAbstractInfo *abstract_info, const char *prefix, NM
|
|||
nmc_meta_environment_arg,
|
||||
&ctx,
|
||||
prefix,
|
||||
&complete_filename,
|
||||
&values_to_free);
|
||||
if (complete_filename) {
|
||||
nmc->return_value = NMC_RESULT_COMPLETE_FILE;
|
||||
return TRUE;
|
||||
}
|
||||
if (values) {
|
||||
for (; values[0]; values++)
|
||||
g_print ("%s\n", values[0]);
|
||||
|
|
@ -4556,19 +4563,13 @@ complete_option (const NMMetaAbstractInfo *abstract_info, const char *prefix, NM
|
|||
}
|
||||
|
||||
static void
|
||||
complete_property (const char *setting_name, const char *property, const char *prefix, NMConnection *connection)
|
||||
complete_property (NmCli *nmc, const char *setting_name, const char *property, const char *prefix, NMConnection *connection)
|
||||
{
|
||||
const NMMetaPropertyInfo *property_info;
|
||||
|
||||
property_info = nm_meta_property_info_find_by_name (setting_name, property);
|
||||
if (property_info) {
|
||||
if (complete_option ((const NMMetaAbstractInfo *) property_info, prefix, connection))
|
||||
return;
|
||||
}
|
||||
|
||||
if ( strcmp (setting_name, NM_SETTING_BLUETOOTH_SETTING_NAME) == 0
|
||||
&& strcmp (property, NM_SETTING_BLUETOOTH_TYPE) == 0)
|
||||
run_rl_generator (gen_func_bt_type, prefix);
|
||||
if (property_info)
|
||||
complete_option (nmc, (const NMMetaAbstractInfo *) property_info, prefix, connection);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
|
@ -4658,8 +4659,10 @@ nmc_read_connection_properties (NmCli *nmc,
|
|||
if (!get_value (&value, argc, argv, option, error))
|
||||
return FALSE;
|
||||
|
||||
if (!*argc && nmc->complete)
|
||||
complete_property (setting, strv[1], value ?: "", connection);
|
||||
if (!*argc && nmc->complete) {
|
||||
complete_property (nmc, setting, strv[1], value ?: "", connection);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
if (!set_property (nmc->client, connection, setting_name, strv[1], value, modifier, error))
|
||||
return FALSE;
|
||||
|
|
@ -4740,7 +4743,7 @@ nmc_read_connection_properties (NmCli *nmc,
|
|||
return FALSE;
|
||||
|
||||
if (!*argc && nmc->complete)
|
||||
complete_option (chosen, value ?: "", connection);
|
||||
complete_option (nmc, chosen, value ?: "", connection);
|
||||
|
||||
if (!set_option (nmc, connection, chosen, value, error))
|
||||
return FALSE;
|
||||
|
|
@ -8869,7 +8872,7 @@ do_connection_import (NmCli *nmc, int argc, char **argv)
|
|||
if ( argc == 1
|
||||
&& nmc->complete) {
|
||||
nmc_complete_strings (*argv, "wireguard");
|
||||
complete_option ((const NMMetaAbstractInfo *) nm_meta_property_info_vpn_service_type,
|
||||
complete_option (nmc, (const NMMetaAbstractInfo *) nm_meta_property_info_vpn_service_type,
|
||||
*argv,
|
||||
NULL);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -273,6 +273,7 @@ nm_meta_abstract_info_complete (const NMMetaAbstractInfo *abstract_info,
|
|||
gpointer environment_user_data,
|
||||
const NMMetaOperationContext *operation_context,
|
||||
const char *text,
|
||||
gboolean *out_complete_filename,
|
||||
char ***out_to_free)
|
||||
{
|
||||
const char *const*values;
|
||||
|
|
@ -292,6 +293,7 @@ nm_meta_abstract_info_complete (const NMMetaAbstractInfo *abstract_info,
|
|||
environment_user_data,
|
||||
operation_context,
|
||||
text,
|
||||
out_complete_filename,
|
||||
out_to_free);
|
||||
|
||||
nm_assert (!*out_to_free || values == (const char *const*) *out_to_free);
|
||||
|
|
|
|||
|
|
@ -69,6 +69,7 @@ const char *const*nm_meta_abstract_info_complete (const NMMetaAbstractInfo *abst
|
|||
gpointer environment_user_data,
|
||||
const NMMetaOperationContext *operation_context,
|
||||
const char *text,
|
||||
gboolean *out_complete_filename,
|
||||
char ***out_to_free);
|
||||
|
||||
/*****************************************************************************/
|
||||
|
|
|
|||
|
|
@ -657,7 +657,7 @@ _env_warn_fcn (const NMMetaEnvironment *environment,
|
|||
const NMMetaPropertyInfo *property_info, const NMMetaEnvironment *environment, gpointer environment_user_data, NMSetting *setting, const char *value, GError **error
|
||||
|
||||
#define ARGS_COMPLETE_FCN \
|
||||
const NMMetaPropertyInfo *property_info, const NMMetaEnvironment *environment, gpointer environment_user_data, const NMMetaOperationContext *operation_context, const char *text, char ***out_to_free
|
||||
const NMMetaPropertyInfo *property_info, const NMMetaEnvironment *environment, gpointer environment_user_data, const NMMetaOperationContext *operation_context, const char *text, gboolean *out_complete_filename, char ***out_to_free
|
||||
|
||||
#define ARGS_VALUES_FCN \
|
||||
const NMMetaPropertyInfo *property_info, char ***out_to_free
|
||||
|
|
@ -2216,8 +2216,7 @@ _get_fcn_cert_8021x (ARGS_GET_FCN)
|
|||
|
||||
switch (vtable->scheme_func (s_8021X)) {
|
||||
case NM_SETTING_802_1X_CK_SCHEME_BLOB:
|
||||
if ( vtable->is_secret
|
||||
&& !NM_FLAGS_HAS (get_flags, NM_META_ACCESSOR_GET_FLAGS_SHOW_SECRETS))
|
||||
if (!NM_FLAGS_HAS (get_flags, NM_META_ACCESSOR_GET_FLAGS_SHOW_SECRETS))
|
||||
return _get_text_hidden (get_type);
|
||||
str = bytes_to_string (vtable->blob_func (s_8021X));
|
||||
break;
|
||||
|
|
@ -2255,16 +2254,25 @@ _set_fcn_cert_8021x (ARGS_SET_FCN)
|
|||
vtable = &nm_setting_8021x_scheme_vtable[property_info->property_typ_data->subtype.cert_8021x.scheme_type];
|
||||
|
||||
if (vtable->is_secret) {
|
||||
gs_free char *path = NULL;
|
||||
nm_auto_free_secret char *password_free = NULL;
|
||||
char *password;
|
||||
gs_free const char **strv = NULL;
|
||||
const char *password;
|
||||
const char *path;
|
||||
gsize len;
|
||||
|
||||
path = g_strdup (value);
|
||||
password = path + strcspn (path, " \t");
|
||||
if (password[0] != '\0') {
|
||||
password[0] = '\0';
|
||||
while (nm_utils_is_separator (password[0]))
|
||||
password++;
|
||||
strv = nm_utils_escaped_tokens_split (value, NM_ASCII_SPACES);
|
||||
len = NM_PTRARRAY_LEN (strv);
|
||||
if (len > 2) {
|
||||
g_set_error_literal (error,
|
||||
NM_UTILS_ERROR,
|
||||
NM_UTILS_ERROR_INVALID_ARGUMENT,
|
||||
_("too many arguments. Please only specify a private key file and optionally a password"));
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
path = len > 0 ? strv[0] : NULL;
|
||||
if (len == 2) {
|
||||
password = strv[1];
|
||||
} else {
|
||||
password_free = g_strdup (vtable->passwd_func (NM_SETTING_802_1X (setting)));
|
||||
password = password_free;
|
||||
|
|
@ -2285,6 +2293,26 @@ _set_fcn_cert_8021x (ARGS_SET_FCN)
|
|||
}
|
||||
}
|
||||
|
||||
static const char *const*
|
||||
_complete_fcn_cert_8021x (ARGS_COMPLETE_FCN)
|
||||
{
|
||||
const NMSetting8021xSchemeVtable *vtable;
|
||||
|
||||
vtable = &nm_setting_8021x_scheme_vtable[property_info->property_typ_data->subtype.cert_8021x.scheme_type];
|
||||
|
||||
if (vtable->is_secret) {
|
||||
gs_free const char **strv = NULL;
|
||||
|
||||
strv = nm_utils_escaped_tokens_split (text, NM_ASCII_SPACES);
|
||||
/* don't try to complete the password */
|
||||
if (NM_PTRARRAY_LEN (strv) > 1)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
NM_SET_OUT (out_complete_filename, TRUE);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static gconstpointer
|
||||
_get_fcn_bond_options (ARGS_GET_FCN)
|
||||
{
|
||||
|
|
@ -4428,6 +4456,7 @@ static const NMMetaPropertyType _pt_dcb = {
|
|||
static const NMMetaPropertyType _pt_cert_8021x = {
|
||||
.get_fcn = _get_fcn_cert_8021x,
|
||||
.set_fcn = _set_fcn_cert_8021x,
|
||||
.complete_fcn = _complete_fcn_cert_8021x,
|
||||
};
|
||||
|
||||
static const NMMetaPropertyType _pt_ethtool = {
|
||||
|
|
@ -8122,6 +8151,7 @@ _meta_type_property_info_complete_fcn (const NMMetaAbstractInfo *abstract_info,
|
|||
gpointer environment_user_data,
|
||||
const NMMetaOperationContext *operation_context,
|
||||
const char *text,
|
||||
gboolean *out_complete_filename,
|
||||
char ***out_to_free)
|
||||
{
|
||||
const NMMetaPropertyInfo *info = (const NMMetaPropertyInfo *) abstract_info;
|
||||
|
|
@ -8134,6 +8164,7 @@ _meta_type_property_info_complete_fcn (const NMMetaAbstractInfo *abstract_info,
|
|||
environment_user_data,
|
||||
operation_context,
|
||||
text,
|
||||
out_complete_filename,
|
||||
out_to_free);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -221,6 +221,7 @@ struct _NMMetaPropertyType {
|
|||
gpointer environment_user_data,
|
||||
const NMMetaOperationContext *operation_context,
|
||||
const char *text,
|
||||
gboolean *out_complete_filename,
|
||||
char ***out_to_free);
|
||||
|
||||
/* Whether set_fcn() supports the '-' modifier. That is, whether the property
|
||||
|
|
@ -451,6 +452,7 @@ struct _NMMetaType {
|
|||
gpointer environment_user_data,
|
||||
const NMMetaOperationContext *operation_context,
|
||||
const char *text,
|
||||
gboolean *out_complete_filename,
|
||||
char ***out_to_free);
|
||||
};
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue