Test fix for crash

pull/83/head
parent 5da3e95f35
commit 0c1f42d8aa

@ -117,15 +117,28 @@ if (main_config.sync_users){
} }
} }
void yon_accept_changes(){
char *remove_homes = "";
for (int i=0;i<main_config.homes_size;i++){
remove_homes = yon_char_unite(remove_homes,yon_char_is_empty(remove_homes)?"":",",main_config.remove_homes[i],NULL);
}
if (!yon_char_is_empty(remove_homes)){
if (system(remove_home_dirs_command(remove_homes))){};
}
}
void on_config_save(){ void on_config_save(){
yon_accept_changes();
yon_save_proceed(NULL,YON_CONFIG_BOTH,"users", "DEFAULTPASSWD DEFAULTROOTPASSWD DEFAULTUSER HASHPASSWD USERGROUPS ADDADM USERADD[*] USERSHADOW[*] GROUPADD[*]",NULL); yon_save_proceed(NULL,YON_CONFIG_BOTH,"users", "DEFAULTPASSWD DEFAULTROOTPASSWD DEFAULTUSER HASHPASSWD USERGROUPS ADDADM USERADD[*] USERSHADOW[*] GROUPADD[*]",NULL);
} }
void on_config_global_save(){ void on_config_global_save(){
yon_accept_changes();
yon_save_proceed("global",YON_CONFIG_GLOBAL,"users", "DEFAULTPASSWD DEFAULTROOTPASSWD DEFAULTUSER HASHPASSWD USERGROUPS ADDADM USERADD[*] USERSHADOW[*] GROUPADD[*]",NULL); yon_save_proceed("global",YON_CONFIG_GLOBAL,"users", "DEFAULTPASSWD DEFAULTROOTPASSWD DEFAULTUSER HASHPASSWD USERGROUPS ADDADM USERADD[*] USERSHADOW[*] GROUPADD[*]",NULL);
} }
void on_config_local_save(){ void on_config_local_save(){
yon_accept_changes();
yon_save_proceed("system",YON_CONFIG_LOCAL,"users", "DEFAULTPASSWD DEFAULTROOTPASSWD DEFAULTUSER HASHPASSWD USERGROUPS ADDADM USERADD[*] USERSHADOW[*] GROUPADD[*]",NULL); yon_save_proceed("system",YON_CONFIG_LOCAL,"users", "DEFAULTPASSWD DEFAULTROOTPASSWD DEFAULTUSER HASHPASSWD USERGROUPS ADDADM USERADD[*] USERSHADOW[*] GROUPADD[*]",NULL);
} }
@ -197,7 +210,8 @@ void yon_delete_confirmation_save(GtkWidget *self, dictionary *dict){
int valid2 = gtk_tree_model_get_iter_first(GTK_TREE_MODEL(window->list),&itar); int valid2 = gtk_tree_model_get_iter_first(GTK_TREE_MODEL(window->list),&itar);
for (;valid2;valid2 = gtk_tree_model_iter_next(GTK_TREE_MODEL(window->list),&itar)){ for (;valid2;valid2 = gtk_tree_model_iter_next(GTK_TREE_MODEL(window->list),&itar)){
char *name_check; char *name_check;
gtk_tree_model_get(GTK_TREE_MODEL(window->list),&itar,1,&name_check,-1); int status;
gtk_tree_model_get(GTK_TREE_MODEL(window->list),&itar,1,&name_check,3,&status,-1);
if (!strcmp(name,name_check)){ if (!strcmp(name,name_check)){
GtkTreeIter *it = gtk_tree_iter_copy(&iter); GtkTreeIter *it = gtk_tree_iter_copy(&iter);
if (!gtk_tree_model_iter_next(GTK_TREE_MODEL(widgets->UsersList),&iter)){ if (!gtk_tree_model_iter_next(GTK_TREE_MODEL(widgets->UsersList),&iter)){
@ -209,6 +223,11 @@ void yon_delete_confirmation_save(GtkWidget *self, dictionary *dict){
gtk_list_store_remove(widgets->UsersList,it); gtk_list_store_remove(widgets->UsersList,it);
yon_config_remove_by_key(USERADD(name)); yon_config_remove_by_key(USERADD(name));
yon_config_remove_by_key(USERSHADOW(name)); yon_config_remove_by_key(USERSHADOW(name));
if (status){
if (yon_char_parsed_check_exist(main_config.remove_homes,main_config.homes_size,name)==-1){
yon_char_parsed_add_or_create_if_exists(main_config.remove_homes,&main_config.homes_size,name);
}
}
} }
} }
} }
@ -255,17 +274,27 @@ void yon_delete_confirmation_open(main_window *widgets){
for (;valid;valid=gtk_tree_model_iter_next(GTK_TREE_MODEL(widgets->UsersList),&iter)){ for (;valid;valid=gtk_tree_model_iter_next(GTK_TREE_MODEL(widgets->UsersList),&iter)){
char *name,*parameters,*homedir=NULL; char *name,*parameters,*homedir=NULL;
gtk_tree_model_get(GTK_TREE_MODEL(widgets->UsersList),&iter,2,&name,6,&parameters,-1); gtk_tree_model_get(GTK_TREE_MODEL(widgets->UsersList),&iter,2,&name,6,&parameters,-1);
if (strstr(parameters,"--home-dir")){ int found = yon_char_parsed_check_exist(main_config.users,main_config.users_size,yon_char_append(name,":"));
int size;
config_str parsed = yon_char_parse(parameters,&size," "); if (found>-1){
for (int i=0;i<size-1;i++){ int parsed_size;
if (!strcmp(parsed[i],"--home-dir")){ config_str parsed = yon_char_parse(main_config.users[found],&parsed_size,":");
homedir = yon_char_new(parsed[i+1]); if (parsed_size>5&&!yon_char_is_empty(parsed[5])&&strcmp(parsed[5],"x")){
break;
} homedir = yon_char_new(parsed[5]);
} }
yon_char_parsed_free(parsed,size); yon_char_parsed_free(parsed,parsed_size);
} }
// if (strstr(parameters,"--home-dir")){
// int size;
// config_str parsed = yon_char_parse(parameters,&size," ");
// for (int i=0;i<size-1;i++){
// if (!strcmp(parsed[i],"--home-dir")){
// homedir = yon_char_new(parsed[i+1]);
// break;
// }
// }
// }
int status=0; int status=0;
if (homedir) status=1; if (homedir) status=1;
gtk_list_store_append(window->list,&itar); gtk_list_store_append(window->list,&itar);
@ -1072,7 +1101,8 @@ void on_settings_usergroups_system_open(GtkWidget *self, main_window *widgets){
void on_user_shell_changed(GtkWidget *self, ubl_settings_usergroups_user_window *window){ void on_user_shell_changed(GtkWidget *self, ubl_settings_usergroups_user_window *window){
if (!strcmp(gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(window->userShellCombo)),SET_LABEL)){ const char *current = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(window->userShellCombo));
if (!strcmp(current,SET_LABEL)){
if(gtk_combo_box_get_active(GTK_COMBO_BOX(window->userShellCombo))>1){ if(gtk_combo_box_get_active(GTK_COMBO_BOX(window->userShellCombo))>1){
gtk_widget_set_sensitive(window->userShellEntry,1); gtk_widget_set_sensitive(window->userShellEntry,1);
} else { } else {
@ -1333,6 +1363,10 @@ void on_user_save(GtkWidget *self, dictionary *dict){
NULL); NULL);
yon_config_register(USERADD(login),"users",final_user); yon_config_register(USERADD(login),"users",final_user);
yon_config_register(USERSHADOW(login),"users",shadow_string); yon_config_register(USERSHADOW(login),"users",shadow_string);
int home_delete = yon_char_parsed_check_exist(main_config.remove_homes,main_config.homes_size,login);
if (home_delete>-1){
yon_char_parsed_rip(main_config.remove_homes,&main_config.homes_size,home_delete);
}
if (!yon_char_is_empty(useradd_sync_string)) if (!yon_char_is_empty(useradd_sync_string))
yon_config_register(USERADD_SYNC(login),"users",useradd_sync_string); yon_config_register(USERADD_SYNC(login),"users",useradd_sync_string);
@ -1799,6 +1833,8 @@ void config_init(){
main_config.password_min_length=6; main_config.password_min_length=6;
main_config.sync_users = NULL; main_config.sync_users = NULL;
main_config.sync_size=0; main_config.sync_size=0;
main_config.homes_size=0;
main_config.remove_homes=NULL;
int login_size; int login_size;
config_str login_defs = yon_file_open(uid_path,&login_size); config_str login_defs = yon_file_open(uid_path,&login_size);
for (int i=0;i<login_size;i++){ for (int i=0;i<login_size;i++){

@ -50,6 +50,8 @@
#define shadow_path "/etc/shadow" #define shadow_path "/etc/shadow"
#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_home_command "getent passwd "$USER" | cut -d: -f6"
#define remove_home_dirs_command(users_string) yon_char_append("/usr/lib/ublinux/functions remove_userhome ", users_string)
#define hash_list_path "/usr/share/ubl-settings-usergroups/csv/hash_list.csv" #define hash_list_path "/usr/share/ubl-settings-usergroups/csv/hash_list.csv"
#define shell_list_path "/usr/share/ubl-settings-usergroups/csv/shell_list.csv" #define shell_list_path "/usr/share/ubl-settings-usergroups/csv/shell_list.csv"
@ -102,6 +104,8 @@ typedef struct {
int hash_default_id; int hash_default_id;
config_str sync_users; config_str sync_users;
int sync_size; int sync_size;
config_str remove_homes;
int homes_size;
} config; } config;
typedef struct { typedef struct {

@ -39,10 +39,6 @@ background:transparent;
border-right-width:inherit; border-right-width:inherit;
} }
.menuitemmiddlemargin{
margin-top: 6px;
}
.menuitemtop{ .menuitemtop{
margin-bottom:0px; margin-bottom:0px;
border-color:inherit; border-color:inherit;
@ -50,17 +46,17 @@ background:transparent;
border-left-width:inherit; border-left-width:inherit;
border-right-width:inherit; border-right-width:inherit;
} }
.menuitemtop *{ .menuitemtop>*{
margin:4px 2px 0 2px; margin:2px 2px 0 2px;
padding: 3px 10px 3px 5px; padding: 3px 10px 3px 5px;
border:transparent; border:transparent;
} }
.menuitemmiddle *{ .menuitemmiddle>*{
margin:0 2px 0 2px; margin:0 2px 0 2px;
padding: 3px 10px 3px 5px; padding: 3px 10px 3px 5px;
border:transparent; border:transparent;
} }
.menuitembottom *{ .menuitembottom>*{
margin:0 2px 2px 2px; margin:0 2px 2px 2px;
padding: 3px 10px 3px 5px; padding: 3px 10px 3px 5px;
} }
@ -85,19 +81,19 @@ background:transparent;
border-right-width:inherit; border-right-width:inherit;
} }
.menuitemtop:hover* { .menuitemtop:hover>* {
margin:4px 2px 0 2px; margin:2px 2px 0 2px;
padding: 3px 10px 3px 5px; padding: 3px 10px 3px 5px;
background:@theme_selected_bg_color; background:@theme_selected_bg_color;
border-radius:2px; border-radius:2px;
} }
.menuitemmiddle:hover* { .menuitemmiddle:hover>* {
margin:0 2px 0 2px; margin:0 2px 0px 2px;
padding: 3px 10px 3px 5px; padding: 3px 10px 3px 5px;
background:@theme_selected_bg_color; background:@theme_selected_bg_color;
border-radius:2px; border-radius:2px;
} }
.menuitembottom:hover* { .menuitembottom:hover>* {
margin:0 2px 2px 2px; margin:0 2px 2px 2px;
padding: 3px 10px 3px 5px; padding: 3px 10px 3px 5px;
background:@theme_selected_bg_color; background:@theme_selected_bg_color;

Loading…
Cancel
Save