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, gtk_list_store_set(widgets->GroupsList,&iter,
1,login, 1,login,
0,parameters_size>1?parameters[1]:"", 0,parameters_size>2?parameters[2]:"",
2,parameters_size>0?parameters[0]:"", 2,parameters_size>1?parameters[1]:"",
3,parameters_size>2?parameters[2]:"", 3,parameters_size>3?parameters[3]:"",
4,pars, 4,pars,
-1); -1);
if(parameters) 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); gtk_tree_model_get(model,&iter,1,&target,-1);
dialog_confirmation_data data; dialog_confirmation_data data;
if (config(USERADD(target))){ 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.data=NULL;
data.function=NULL; data.function=NULL;
} else { } else {
data.action_text = SYSTEM_GROUP_ADD_CONFIRMATION_LABEL(target); data.action_text = SYSTEM_GROUP_SYNC_CONFIRMATION_LABEL(target);
data.data=NULL; data.data=NULL;
data.function=NULL; data.function=NULL;
} }
if (yon_confirmation_dialog_call(widgets->Window,&data)!=GTK_RESPONSE_ACCEPT){ if (yon_confirmation_dialog_call(widgets->Window,&data)!=GTK_RESPONSE_ACCEPT){
return; return;
} }
int group_size; char *group = yon_char_parsed_check_exist_begins_with(main_config.groups,main_config.groups_size,target);
config_str group = yon_config_load(get_system_group_command(target),&group_size); char *group_shadow = yon_char_parsed_check_exist_begins_with(main_config.group_shadow,main_config.group_shadow_size,target);
if (group_size>0){ yon_char_remove_last_symbol(group,'\n');
yon_char_remove_last_symbol(group[0],'\n'); yon_char_remove_last_symbol(group_shadow,'\n');
free(yon_char_divide_search(group[0],"=",-1)); int group_size=0;
yon_char_remove_brackets(group[0]); int group_shadow_size=0;
char *group_command = yon_config_parameter_prepare_command(dull_parameter_get_command,NULL,"users",USERADD(target)); config_str parsed = yon_char_parse(group,&group_size,":");
yon_config_register(GROUPADD(target),group_command,group[0]); 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.save_config=0;
main_config.groups = yon_file_open(groups_path,&main_config.groups_size); 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.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.users_list=NULL;
main_config.groups_list=NULL; main_config.groups_list=NULL;
main_config.password_min_length=6; main_config.password_min_length=6;

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

Loading…
Cancel
Save