Merge pull request 'master' (#160) from YanTheKaller/ubl-settings-usergroups:master into master

Reviewed-on: #160
pull/235/head v2.11
Dmitry Razumov 2 years ago
commit 1ff4e50288

@ -104,6 +104,8 @@ void yon_interface_update(main_window *widgets){
if (!check_is_password_hash(parameters[5])&&parameters[5][0]!='%'&&parameters[5][1]!='%'){
pars = ENCRYPTED_LABEL;
} else if (!strcmp(parameters[5],"!*")){
pars = NO_PASSWORD_LABEL;
} else {
pars = UNENCRYPTED_LABEL;
@ -113,7 +115,7 @@ void yon_interface_update(main_window *widgets){
}
gtk_list_store_set(widgets->UsersList,&iter,
0,parameters[5][0]=='!'||parameters[5][0]=='*',
0,(parameters[5][0]=='!'||parameters[5][0]=='*')||(parameters[5][0]=='!'&&parameters[5][1]=='*'),
2,login,
3,parameters_size>0?parameters[0]:"",
1,parameters_size>1&&!yon_char_is_empty(parameters[1])?parameters[1]:"",
@ -394,6 +396,19 @@ void on_save_done(main_window *widgets, config_str output, int size){
yon_accept_changes();
yon_samba_sync_proceed();
}
textdomain(template_ui_LocaleName);
switch (main_config.save_config){
case 0:
yon_ubl_status_box_render(GLOBAL_SAVE_SUCCESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE);
break;
case 1:
yon_ubl_status_box_render(LOCAL_SAVE_SUCCESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE);
break;
case 2:
yon_ubl_status_box_render(GLOBAL_LOCAL_SAVE_SUCCESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE);
break;
}
textdomain(LocaleName);
}
@ -401,6 +416,7 @@ void on_save_done(main_window *widgets, config_str output, int size){
void on_config_save(GtkWidget *self, main_window *widgets){
yon_accept_changes();
yon_samba_sync_proceed();
main_config.save_config=2;
template_saving_window *window = yon_save_proceed(NULL,YON_CONFIG_BOTH,config_get_command("global"),NULL);
if (window){
if (main_config.load_mode==0){
@ -459,6 +475,7 @@ void on_config_save(GtkWidget *self, main_window *widgets){
}
void on_config_global_save(GtkWidget *self, main_window *widgets){
main_config.save_config=0;
template_saving_window *window = yon_save_proceed("global",YON_CONFIG_GLOBAL,config_get_command("global"),NULL);
if (window){
yon_hide_passwords(window);
@ -466,6 +483,7 @@ void on_config_global_save(GtkWidget *self, main_window *widgets){
}
void on_config_local_save(GtkWidget *self, main_window *widgets){
main_config.save_config=1;
int size;
config_str keys = yon_config_get_all_by_key(USERADD_SEARCH_macro,&size);
int passw_size;
@ -489,8 +507,6 @@ void on_config_local_save(GtkWidget *self, main_window *widgets){
}
yon_accept_changes();
yon_samba_sync_proceed();
// char *output = yon_config_save_simple(YON_CONFIG_LOCAL,"system");
// if (output) puts(output);
template_saving_window *window = yon_save_proceed("system",YON_CONFIG_LOCAL,config_get_command("system"),NULL);
if (window){
yon_hide_passwords(window);
@ -503,6 +519,7 @@ void on_config_local_save(GtkWidget *self, main_window *widgets){
}
void on_config_custom_save(GtkWidget *self, main_window *widgets){
main_config.save_config=1;
template_saving_window *window = yon_save_proceed(NULL,YON_CONFIG_CUSTOM,config_get_command("system"),NULL);
if (window){
yon_hide_passwords(window);
@ -659,6 +676,25 @@ void yon_group_delete_confirmation_save(GtkWidget *self, dictionary *dict){
on_subwindow_close(self);
}
int yon_check_password_blocked(char *password){
if (!yon_char_is_empty(password)){
if (!strcmp(password,"!*")){
memset(password,0,strlen(password));
return 1;
} else if (password[0]=='!'&&password[1]=='*'){
char *copy = yon_char_new(password);
memcpy(copy,password+2,strlen(password+2));
memset(password,0,strlen(password));
memcpy(password,copy,strlen(copy));
free(copy);
return 1;
} else if (password[0]=='!'||password[0]=='*'){
free(yon_char_divide(password,0));
return 1;
}
} else return 0;
}
yon_confirmation_window *yon_delete_confirmation_new(){
yon_confirmation_window *window = malloc(sizeof(yon_confirmation_window));
GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_ubl_settings_usergroups_confirmation);
@ -1565,6 +1601,10 @@ void on_password_accept(GtkWidget *self, dictionary *dict){
char *pasted_hash = (char*)gtk_entry_get_text(GTK_ENTRY(window->PasswordHashEntry));
if (!yon_char_is_empty(pasted_hash)){
gtk_entry_set_text(entry,pasted_hash);
} else {
yon_ubl_status_highlight_incorrect(window->PasswordEntry);
yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),PASSWORD_SHORT_LABEL(yon_char_from_int(main_config.password_min_length)),5,BACKGROUND_IMAGE_FAIL_TYPE);
return;
}
} else {
@ -1662,12 +1702,19 @@ void yon_system_load(ubl_settings_usergroups_system_window *window){
if (shadow[i][strlen(shadow[i])-1]=='\n') shadow[i][strlen(shadow[i])-1]='\0';
int parsed_size=0;
config_str parsed = yon_char_parse(shadow[i],&parsed_size,":");
if (yon_gtk_list_store_find_text(window->liststore1,&iter,3,parsed[0])){
GDateTime *date = g_date_time_new_from_unix_local(atol(parsed[2]));
if (yon_gtk_list_store_find_text(window->liststore1,&iter,2,parsed[0])){
GDateTime *date = g_date_time_new_from_unix_local(atol(parsed[2])*24*60*60);
char *date_string;
date_string = g_date_time_format(date,"%Y-%m-%d");
g_date_time_unref(date);
char *expiration_string="";
if (parsed_size>7&&!yon_char_is_empty(parsed[7])){
date = g_date_time_new_from_unix_local(atol(parsed[7])*24*60*60);
expiration_string = g_date_time_format(date,"%Y-%m-%d");
g_date_time_unref(date);
}
gtk_list_store_set(window->liststore1,&iter,8,parsed_size>2?date_string:"",9,parsed_size>7?parsed[7]:"",10,parsed_size>3?parsed[3]:"",11,parsed_size>4?parsed[4]:"",12,parsed_size>5?parsed[5]:"",13,parsed_size>2?parsed[6]:"",-1);
gtk_list_store_set(window->liststore1,&iter,8,parsed_size>2?date_string:"",9,expiration_string,10,parsed_size>3?parsed[3]:"",11,parsed_size>4?parsed[4]:"",12,parsed_size>5?parsed[5]:"",13,parsed_size>2?parsed[6]:"",-1);
}
}
}
@ -1872,14 +1919,16 @@ void on_user_save(GtkWidget *self, dictionary *dict){
yon_ubl_status_highlight_incorrect(window->userPasswordEntry);
return;
}
} else {
password="";
} else if (password_active==1){
password = "!*";
} else {
password="";
}
char *old_password = NULL;
if (window->old_password){
old_password = window->old_password;
if (old_password[0]=='!') free(yon_char_divide(old_password,0));
yon_check_password_blocked(old_password);
}
if (!old_password||old_password&&strcmp(old_password,password)){
time_t t = time(NULL);
@ -2482,18 +2531,18 @@ void on_main_edit(GtkWidget *self, main_window *widgets){
}
}
if (parsed_size>5){
window->old_password=yon_char_new(parameters[5]);
if (!yon_char_is_empty(window->old_password)&&strlen(window->old_password)&&window->old_password[0]=='!'&&window->old_password[1]=='*'){
free(yon_char_divide(window->old_password,1));
}
window->old_password=yon_char_new(parameters[5]);
if (strcmp(parameters[5],"x")&&strcmp(parameters[5],"")){
if (parameters[5][0]=='!'){
if (yon_check_password_blocked(parameters[5])){
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->userDeactivatedCheck),1);
}
free(yon_char_divide(parameters[5],0));
if (!yon_char_is_empty(parameters[5])){
gtk_entry_set_text(GTK_ENTRY(window->userPasswordEntry),parameters[5]);
gtk_combo_box_set_active(GTK_COMBO_BOX(window->userPasswordCombo),2);
if (!strcmp(parameters[5],"!*")){
gtk_combo_box_set_active(GTK_COMBO_BOX(window->userPasswordCombo),1);
} else {
gtk_entry_set_text(GTK_ENTRY(window->userPasswordEntry),parameters[5]);
gtk_combo_box_set_active(GTK_COMBO_BOX(window->userPasswordCombo),2);
}
}
}
}
@ -2662,6 +2711,7 @@ void config_init(){
main_config.users_size=0;
main_config.load_mode=1;
main_config.hash_default_id=-1;
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.users_list=NULL;
@ -2671,6 +2721,8 @@ void config_init(){
main_config.sync_size=0;
main_config.homes_size=0;
main_config.remove_homes=NULL;
main_config.launch_arguments=NULL;
main_config.launch_size=0;
int login_size;
config_str login_defs = yon_file_open(uid_path,&login_size);
for (int i=0;i<login_size;i++){
@ -2834,6 +2886,9 @@ main_window *yon_main_window_complete(main_window *widgets){
g_signal_connect(G_OBJECT(widgets->UsersTree),"button-press-event",G_CALLBACK(on_menu_open),widgets->UsersMenu);
g_signal_connect(G_OBJECT(widgets->GroupsTree),"button-press-event",G_CALLBACK(on_menu_open),widgets->GroupsMenu);
yon_root_button_setup((template_main_window*)widgets,main_config.launch_arguments,main_config.launch_size);
yon_gtk_tree_view_minimal_fixed_size_set_full(GTK_TREE_VIEW(widgets->UsersTree));
yon_gtk_tree_view_minimal_fixed_size_set_full(GTK_TREE_VIEW(widgets->GroupsTree));
yon_load_proceed(YON_CONFIG_LOCAL);
@ -2869,5 +2924,7 @@ int main(int argc, char *argv[]){
template_main_window *widgets = yon_ubl_window_setup();
yon_main_window_complete((main_window*)widgets);
yon_window_config_load(config_path);
main_config.launch_arguments=yon_char_parsed_copy(argv,argc);
main_config.launch_size=argc;
gtk_main();
}

@ -130,6 +130,9 @@ typedef struct {
config_str remove_homes;
int homes_size;
char *default_home;
int save_config;
int launch_size;
config_str launch_arguments;
} config;
typedef struct {

Loading…
Cancel
Save