Group adding from system implemented

pull/193/head
Ivan Dmitrievich Yartsev 10 months ago
parent 8044261302
commit b04152b211

@ -161,9 +161,9 @@ void yon_interface_update(main_window *widgets){
}
gtk_list_store_set(widgets->GroupsList,&iter,
1,login,
0,parameters_size>1?parameters[1]:"",
2,parameters_size>0?parameters[0]:"",
3,parameters_size>2?parameters[2]:"",
0,parameters_size>2?parameters[2]:"",
2,parameters_size>1?parameters[1]:"",
3,parameters_size>3?parameters[3]:"",
4,pars,
-1);
if(parameters)
@ -2854,28 +2854,34 @@ void on_user_sync_with_config(GtkWidget *,main_window *widgets){
gtk_tree_model_get(model,&iter,1,&target,-1);
dialog_confirmation_data data;
if (config(USERADD(target))){
data.action_text = SYSTEM_GROUP_SYNC_CONFIRMATION_LABEL(target);
data.action_text = SYSTEM_GROUP_ADD_CONFIRMATION_LABEL(target);
data.data=NULL;
data.function=NULL;
} else {
data.action_text = SYSTEM_GROUP_ADD_CONFIRMATION_LABEL(target);
data.action_text = SYSTEM_GROUP_SYNC_CONFIRMATION_LABEL(target);
data.data=NULL;
data.function=NULL;
}
if (yon_confirmation_dialog_call(widgets->Window,&data)!=GTK_RESPONSE_ACCEPT){
return;
}
int group_size;
config_str group = yon_config_load(get_system_group_command(target),&group_size);
if (group_size>0){
yon_char_remove_last_symbol(group[0],'\n');
free(yon_char_divide_search(group[0],"=",-1));
yon_char_remove_brackets(group[0]);
char *group_command = yon_config_parameter_prepare_command(dull_parameter_get_command,NULL,"users",USERADD(target));
yon_config_register(GROUPADD(target),group_command,group[0]);
char *group = yon_char_parsed_check_exist_begins_with(main_config.groups,main_config.groups_size,target);
char *group_shadow = yon_char_parsed_check_exist_begins_with(main_config.group_shadow,main_config.group_shadow_size,target);
yon_char_remove_last_symbol(group,'\n');
yon_char_remove_last_symbol(group_shadow,'\n');
int group_size=0;
int group_shadow_size=0;
config_str parsed = yon_char_parse(group,&group_size,":");
config_str parsed_shadow = yon_char_parse(group_shadow,&group_shadow_size,":");
char *config_group = yon_char_unite(parsed[0],":",parsed[3],":",parsed[2],"::",parsed_shadow[2],":",strcmp(parsed[1],"x")?parsed[1]:parsed_shadow[1],NULL);
if (!yon_char_is_empty(config_group)){
char *group_command = yon_config_parameter_prepare_command(dull_parameter_get_command,NULL,"users",GROUPADD(target));
yon_config_register(GROUPADD(target),group_command,config_group);
yon_interface_update(widgets);
}
}
}break;
}break;
}
}
@ -2905,6 +2911,8 @@ void config_init(){
main_config.save_config=0;
main_config.groups = yon_file_open(groups_path,&main_config.groups_size);
main_config.users = yon_file_open(users_path,&main_config.users_size);
main_config.shadow = yon_file_open(shadow_path,&main_config.shadow_size);
main_config.group_shadow = yon_file_open(group_shadow_path,&main_config.group_shadow_size);
main_config.users_list=NULL;
main_config.groups_list=NULL;
main_config.password_min_length=6;

@ -54,6 +54,7 @@
#define groups_path "/etc/group"
#define users_path "/etc/passwd"
#define shadow_path "/etc/shadow"
#define group_shadow_path "/etc/gshadow"
#define uid_path "/etc/login.defs"
#define password_limits_path "/etc/security/pwquiality.conf"
#define get_user_info_command(target) yon_char_unite("getent passwd \"",target,"\"",NULL)
@ -143,10 +144,16 @@ char *local;
typedef struct {
template_config_fields
config_str groups;
int groups_size;
config_str users;
int users_size;
config_str shadow;
int shadow_size;
config_str group_shadow;
int group_shadow_size;
GtkListStore *users_list;
GtkListStore *groups_list;

Loading…
Cancel
Save