|
|
|
|
@ -104,6 +104,8 @@ void yon_interface_update(main_window *widgets){
|
|
|
|
|
|
|
|
|
|
if (!check_is_password_hash(parameters[5])&¶meters[5][0]!='%'&¶meters[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]=='!'&¶meters[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,6 +1919,8 @@ void on_user_save(GtkWidget *self, dictionary *dict){
|
|
|
|
|
yon_ubl_status_highlight_incorrect(window->userPasswordEntry);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
} else if (password_active==1){
|
|
|
|
|
password = "!*";
|
|
|
|
|
} else {
|
|
|
|
|
password="";
|
|
|
|
|
}
|
|
|
|
|
@ -1879,7 +1928,7 @@ void on_user_save(GtkWidget *self, dictionary *dict){
|
|
|
|
|
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);
|
|
|
|
|
@ -2483,20 +2532,20 @@ 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));
|
|
|
|
|
}
|
|
|
|
|
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])){
|
|
|
|
|
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);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
int samba_sync = yon_samba_sync_get(name);
|
|
|
|
|
if (samba_sync==1){
|
|
|
|
|
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->userSyncSAMBACheck),1);
|
|
|
|
|
@ -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();
|
|
|
|
|
}
|