diff --git a/gresource.xml b/gresource.xml
index c29a06f..f5e3ee7 100644
--- a/gresource.xml
+++ b/gresource.xml
@@ -10,10 +10,14 @@
ubl-settings-usergroups-system.glade
ubl-settings-usergroups-savesettings.glade
ubl-settings-usergroups-confirmation.glade
+ ubl-settings-usergroups-system-deletion-confirmation.glade
ubl-settings-usergroups.css
+
+ sync_parameters.csv
+
ubl-settings-usergroups-banner.png
diff --git a/source/CMakeLists.txt b/source/CMakeLists.txt
index b33f93b..24cb0e2 100644
--- a/source/CMakeLists.txt
+++ b/source/CMakeLists.txt
@@ -38,6 +38,8 @@ set(DEPENDFILES
../ubl-settings-usergroups-group.glade
../ubl-settings-usergroups-savesettings.glade
../ubl-settings-usergroups-confirmation.glade
+ ../ubl-settings-usergroups-system-deletion-confirmation.glade
+ ../sync_parameters.csv
../gresource.xml
../ubl-settings-usergroups-banner.png
../ubl-settings-usergroups.css
@@ -79,6 +81,12 @@ endif()
set(SOURCE_FILES
ubl-settings-usergroups.c
+ ubl-settings-usergroups-settings.c
+ ubl-settings-usergroups-user.c
+ ubl-settings-usergroups-system.c
+ ubl-settings-usergroups-additional-config.c
+ ubl-settings-usergroups-group.c
+ ubl-settings-usergroups-password.c
ubl-settings-usergroups.h
ubl-strings.h
)
diff --git a/source/ubl-cmake.in b/source/ubl-cmake.in
deleted file mode 100644
index d4623a7..0000000
--- a/source/ubl-cmake.in
+++ /dev/null
@@ -1 +0,0 @@
-#cmakedefine WEBKIT_FOUND
diff --git a/source/ubl-settings-usergroups-additional-config.c b/source/ubl-settings-usergroups-additional-config.c
new file mode 100644
index 0000000..e99741d
--- /dev/null
+++ b/source/ubl-settings-usergroups-additional-config.c
@@ -0,0 +1,31 @@
+#include "ubl-settings-usergroups.h"
+
+
+
+ void on_hash_changed(GtkWidget *, ubl_settings_usergroups_additional_settings_window *window){
+
+ int hash_size=0;
+ config_str hash_algos = yon_file_open(hash_list_path,&hash_size);
+ for (int i=1;iPasswordHashCombo,parsed[1]);
+ yon_char_parsed_free(parsed,parsed_size);
+ }
+ yon_char_parsed_free(hash_algos,hash_size);
+ }
+
+void on_additional_settings_clicked(GtkWidget *, GtkEntry *){
+ ubl_settings_usergroups_additional_settings_window *window = yon_ubl_settings_usergroups_additional_settings_new();
+ g_signal_connect(G_OBJECT(window->AcceptButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
+ gtk_widget_show(window->Window);
+
+}
+
+void on_passwords_encrypt(){
+ int pid = fork();
+ if (!pid){
+ exit(system(encrypt_passwords_command));
+ }
+}
\ No newline at end of file
diff --git a/source/ubl-settings-usergroups-group.c b/source/ubl-settings-usergroups-group.c
new file mode 100644
index 0000000..fb4ff76
--- /dev/null
+++ b/source/ubl-settings-usergroups-group.c
@@ -0,0 +1,282 @@
+#include "ubl-settings-usergroups.h"
+
+
+
+
+ubl_settings_usergroups_group_creation_window *yon_ubl_settings_usergroups_group_creation_new(){
+ ubl_settings_usergroups_group_creation_window *window = malloc(sizeof(ubl_settings_usergroups_group_creation_window));
+ GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_ubl_settings_usergroups_group_creation);
+ window->CreateGroupWindow=yon_gtk_builder_get_widget(builder,"CreateGroupWindow");
+ window->StatusBox=yon_gtk_builder_get_widget(builder,"StatusBox");
+ window->userUIDAutoCheck=yon_gtk_builder_get_widget(builder,"GIDAutoCheck");
+ window->userUIDEntry=yon_gtk_builder_get_widget(builder,"userUIDEntry");
+ window->userLoginEntry=yon_gtk_builder_get_widget(builder,"userLoginEntry");
+ window->userGroupsEntry=yon_gtk_builder_get_widget(builder,"userGroupsEntry");
+ window->UserAdditionalGroupsButton=yon_gtk_builder_get_widget(builder,"AdditionalGroupsButton");
+ window->UserCancelButton=yon_gtk_builder_get_widget(builder,"UserCancelButton");
+ window->UserOkButton=yon_gtk_builder_get_widget(builder,"UserOkButton");
+ window->AdditionalGroupsButton=yon_gtk_builder_get_widget(builder,"AdditionalGroupsButton");
+ window->UnuniqueGIDCheck=yon_gtk_builder_get_widget(builder,"UnuniqueGIDCheck");
+ window->SystemGroupCheck=yon_gtk_builder_get_widget(builder,"SystemGroupCheck");
+ window->PasswordCombo=yon_gtk_builder_get_widget(builder,"PasswordCombo");
+ window->PasswordEntry=yon_gtk_builder_get_widget(builder,"PasswordEntry");
+ window->ChangePasswordButton=yon_gtk_builder_get_widget(builder,"ChangePasswordButton");
+ window->userTitleNameLabel=yon_gtk_builder_get_widget(builder,"userTitleNameLabel");
+ window->AdminGroupsEntry=yon_gtk_builder_get_widget(builder,"AdminGroupsEntry");
+ window->AdminGroupsButton=yon_gtk_builder_get_widget(builder,"AdminGroupsButton");
+ window->GroupaddShutdownCheck=yon_gtk_builder_get_widget(builder,"GroupaddShutdownCheck");
+ window->groupExtraOptionsEntry=yon_gtk_builder_get_widget(builder,"groupExtraOptionsEntry");
+ window->MainNotebook=yon_gtk_builder_get_widget(builder,"MainNotebook");
+ window->last_gid=NULL;
+
+ gtk_window_set_title(GTK_WINDOW(window->CreateGroupWindow),GROUPS_TITLE_LABEL);
+
+ on_GID_update(NULL,window);
+ dictionary *entry_dict=NULL;
+ yon_dictionary_add_or_create_if_exists_with_data(entry_dict,"combo",window->PasswordCombo);
+ yon_dictionary_add_or_create_if_exists_with_data(entry_dict,"entry",window->PasswordEntry);
+ yon_window_config_custom_window_setup(GTK_WINDOW(window->CreateGroupWindow),"GroupAddWindow");
+ g_signal_connect(G_OBJECT(window->userUIDAutoCheck),"clicked",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button_inversed),window->userUIDEntry);
+ g_signal_connect(G_OBJECT(window->ChangePasswordButton),"clicked",G_CALLBACK(on_password_change),entry_dict);
+ g_signal_connect(G_OBJECT(window->PasswordCombo),"changed",G_CALLBACK(on_password_combo_changed),window->ChangePasswordButton);
+ g_signal_connect(G_OBJECT(window->UserCancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
+ g_signal_connect(G_OBJECT(window->UserAdditionalGroupsButton),"clicked",G_CALLBACK(on_user_choose),window->userGroupsEntry);
+ g_signal_connect(G_OBJECT(window->AdminGroupsButton),"clicked",G_CALLBACK(on_user_choose),window->AdminGroupsEntry);
+ g_signal_connect(G_OBJECT(window->userUIDAutoCheck),"toggled",G_CALLBACK(on_GID_update),window);
+ g_signal_connect(G_OBJECT(window->SystemGroupCheck),"toggled",G_CALLBACK(on_GID_update),window);
+ g_signal_connect(G_OBJECT(window->userUIDAutoCheck),"toggled",G_CALLBACK(yon_gtk_toggle_button_set_inactive_from_toggle_button),window->SystemGroupCheck);
+ g_signal_connect(G_OBJECT(window->userUIDAutoCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button),window->SystemGroupCheck);
+ g_signal_connect(G_OBJECT(window->userUIDAutoCheck),"toggled",G_CALLBACK(yon_gtk_toggle_button_set_inactive_from_toggle_button_inversed),window->UnuniqueGIDCheck);
+ g_signal_connect(G_OBJECT(window->userUIDAutoCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button_inversed),window->UnuniqueGIDCheck);
+ g_signal_connect(G_OBJECT(window->UnuniqueGIDCheck),"toggled",G_CALLBACK(on_system_parameter_changed),window);
+ g_signal_connect(G_OBJECT(window->SystemGroupCheck),"toggled",G_CALLBACK(on_system_parameter_changed),window);
+ g_signal_connect(G_OBJECT(window->userUIDEntry),"insert-text",G_CALLBACK(yon_on_text_insert_only_digits),NULL);
+return window;
+}
+
+
+
+void on_GID_update(GtkWidget *, ubl_settings_usergroups_group_creation_window *window){
+ if (!gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->userUIDAutoCheck))){
+ if (window->last_gid){
+ gtk_entry_set_text(GTK_ENTRY(window->userUIDEntry),window->last_gid);
+ } else {
+ int config_size=0;
+ int final_size=0;
+ config_str config_groups = yon_config_get_all_by_key(GROUPADD_parameter,&config_size);
+ yon_char_parsed_prepend_strings(config_groups,config_size,":");
+ config_str final = yon_char_parsed_merge(main_config.groups,main_config.groups_size,config_groups,config_size,&final_size);
+ long prev_busy=gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->SystemGroupCheck))?0:main_config.MINGID;
+
+ int minimum = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->SystemGroupCheck))?0:main_config.MINGID;
+ int maximum = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->SystemGroupCheck))?68000:main_config.MAXGID;
+ for (int i=0;i2&&minimumprev_busy){
+ prev_busy=atol(parsed[2]);
+ }
+ }
+ yon_char_parsed_free(parsed, parsed_size);
+ }
+ gtk_entry_set_text(GTK_ENTRY(window->userUIDEntry),yon_char_from_long(prev_busy+1));
+ }
+ } else {
+ gtk_entry_set_text(GTK_ENTRY(window->userUIDEntry),"");
+ }
+}
+
+void on_group_save(GtkWidget *self, dictionary *dict){
+ main_window *widgets = yon_dictionary_get_data(dict->first,main_window*);
+ ubl_settings_usergroups_group_creation_window *window = yon_dictionary_get_data(dict->first->next,ubl_settings_usergroups_group_creation_window*);
+ char *final_string = NULL;
+ char *group_name = NULL;
+ char *group_users = NULL;
+ char *gid = NULL;
+ char *non_unique = NULL;
+ char *gsystem = NULL;
+ char *admins = NULL;
+ char *password = NULL;
+ int gid_active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->userUIDAutoCheck));
+ if (gid_active){
+ gid="x";
+ } else {
+ gid = (char*)gtk_entry_get_text(GTK_ENTRY(window->userUIDEntry));
+ if (yon_char_is_empty(gid)){
+ yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
+ gtk_notebook_set_current_page(GTK_NOTEBOOK(window->MainNotebook),0);
+ yon_ubl_status_highlight_incorrect(window->userUIDEntry);
+ return;
+ }
+
+
+ if (!yon_char_is_empty(window->last_gid)&&strcmp(gid,window->last_gid)){
+ int config_size=0;
+ int final_size=0;
+ config_str config_users = yon_config_get_all_by_key(GROUPADD_SEARCH_macro,&config_size);
+ config_str final = yon_char_parsed_merge(main_config.groups,main_config.groups_size,config_users,config_size,&final_size);
+ if (!gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->UnuniqueGIDCheck))){
+ int found=0;
+ char *uid_string = (char*)gtk_entry_get_text(GTK_ENTRY(window->userUIDEntry));
+ for (int i=0;i2&&!strcmp(parsed[2],uid_string)){
+ if (yon_char_is_empty(window->last_gid)||(!yon_char_is_empty(window->last_gid)&&strcmp(parsed[2],window->last_gid))){
+ found = yon_char_parsed_check_exist(config_users,config_size,final[i])>-1?1:2;
+ break;
+ }
+ }
+ if (parsed_size) yon_char_parsed_free(parsed,parsed_size);
+ }
+ if (found){
+ yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),found==1?GID_ALREADY_EXIST_CONFIG_LABEL:GID_ALREADY_EXIST_SYSTEM_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
+ yon_ubl_status_highlight_incorrect(window->userUIDEntry);
+ gtk_notebook_set_current_page(GTK_NOTEBOOK(window->MainNotebook),0);
+ return;
+ }
+ }
+ }
+ }
+
+ group_name = (char*)gtk_entry_get_text(GTK_ENTRY(window->userLoginEntry));
+ if (group_name[0]>'0'&&group_name[0]<'9'){
+ yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),GROUP_BEGINS_WITH_DIGIT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
+ yon_ubl_status_highlight_incorrect(window->userLoginEntry);
+ return;
+ }
+ if (yon_char_is_empty(group_name)){
+ yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
+ gtk_notebook_set_current_page(GTK_NOTEBOOK(window->MainNotebook),0);
+ yon_ubl_status_highlight_incorrect(window->userLoginEntry);
+ return;
+ }
+ {
+ GtkTreeIter iter;
+ GtkTreeModel *model = GTK_TREE_MODEL(widgets->GroupsList);
+ for_iter(model,&iter){
+ char *cur;
+ gtk_tree_model_get(model,&iter,1, &cur,-1);
+ if (!yon_char_is_empty(cur)&&!strcmp(cur,group_name)){
+ if (!gtk_tree_selection_iter_is_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->GroupsTree)),&iter)){
+
+ yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),GROUP_EXIST_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
+ yon_ubl_status_highlight_incorrect(window->userLoginEntry);
+ gtk_notebook_set_current_page(GTK_NOTEBOOK(window->MainNotebook),0);
+ return;
+ }
+ }
+ }
+ }
+
+ group_users = (char*)gtk_entry_get_text(GTK_ENTRY(window->userGroupsEntry));
+
+ admins = (char*)gtk_entry_get_text(GTK_ENTRY(window->AdminGroupsEntry));
+ int non_unique_active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->UnuniqueGIDCheck));
+ if(non_unique_active){
+ non_unique="--non-unique";
+ } else non_unique="";
+
+ int gsystem_active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->SystemGroupCheck));
+ if(gsystem_active){
+ gsystem="--system";
+ } else gsystem="";
+
+ int shutdown_sync_active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->GroupaddShutdownCheck));
+ if (shutdown_sync_active){
+ char *final_command = yon_config_parameter_prepare_command(dull_parameter_get_command,NULL,"users",GROUPADD_SYNC(group_name));
+ yon_config_register(GROUPADD_SYNC(group_name),final_command,"shutdown");
+ } else {
+ yon_config_remove_by_key(GROUPADD_SYNC(group_name));
+ }
+
+
+ int password_active = gtk_combo_box_get_active(GTK_COMBO_BOX(window->PasswordCombo));
+ if (password_active == 1) {
+ password = "!*";
+ } else if (password_active == 2){
+ password = (char*)gtk_entry_get_text(GTK_ENTRY(window->PasswordEntry));
+ if (yon_char_is_empty(password)){
+ yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
+ gtk_notebook_set_current_page(GTK_NOTEBOOK(window->MainNotebook),0);
+ yon_ubl_status_highlight_incorrect(window->PasswordEntry);
+ return;
+ }
+ } else {
+ password="";
+ }
+ final_string = yon_char_unite(yon_char_return_if_exist(group_users,""),
+ ":",yon_char_return_if_exist(gid,"x"),
+ ":",yon_char_return_if_exist(non_unique,""),
+ yon_char_return_if_exist(gsystem,""),
+ ":",yon_char_return_if_exist(admins,""),
+ ":",yon_char_return_if_exist(password,""),
+ NULL);
+ char *final_command = yon_config_parameter_prepare_command(dull_parameter_get_command,NULL,"users",GROUPADD_SYNC(group_name));
+ yon_config_register(GROUPADD(group_name),final_command,final_string);
+ yon_interface_update(widgets);
+ on_subwindow_close(self);
+}
+
+
+void yon_group_delete_confirmation_open(main_window *widgets){
+ yon_confirmation_window *window = yon_delete_confirmation_new();
+ gtk_window_set_transient_for(GTK_WINDOW(window->Window),GTK_WINDOW(widgets->Window));
+ GtkTreeIter iter,itar;
+ dictionary *dict = NULL;
+ gtk_label_set_text(GTK_LABEL(window->TitleLabel),DELETE_GROUP_CONFIRMATION_CONFIRM_LABEL);
+ gtk_tree_view_column_set_title(window->UserCell,GROUP_LABEL);
+ gtk_label_set_text(GTK_LABEL(window->HatLabel),DELETE_GROUP_CONFIRMATION_TITLE_LABEL);
+ gtk_tree_view_column_set_visible(gtk_tree_view_get_column(GTK_TREE_VIEW(window->DeletionTree),2),0);
+ gtk_tree_view_column_set_visible(gtk_tree_view_get_column(GTK_TREE_VIEW(window->DeletionTree),3),0);
+ gtk_tree_view_column_set_visible(gtk_tree_view_get_column(GTK_TREE_VIEW(window->DeletionTree),4),0);
+ yon_dictionary_add_or_create_if_exists_with_data(dict,"widgets",widgets);
+ yon_dictionary_add_or_create_if_exists_with_data(dict,"window",window);
+ g_signal_connect(G_OBJECT(window->AcceptButton),"clicked",G_CALLBACK(yon_group_delete_confirmation_save),dict);
+ GtkTreeModel *model = GTK_TREE_MODEL(widgets->GroupsList);
+ GList *list = gtk_tree_selection_get_selected_rows(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->GroupsTree)),&model);
+ int chosen_size=0;
+ config_str chosen = NULL;
+ for (guint i=0;iGroupsList),&iter);
+ for (;valid;valid=gtk_tree_model_iter_next(GTK_TREE_MODEL(widgets->GroupsList),&iter)){
+ char *name;
+ gtk_tree_model_get(GTK_TREE_MODEL(widgets->GroupsList),&iter,1,&name,-1);
+ gtk_list_store_append(window->list,&itar);
+ gtk_list_store_set(window->list,&itar,0,yon_char_parsed_check_exist(chosen,chosen_size,name)>-1?1:0,1,name,-1);
+ free(name);
+ }
+ gtk_widget_show(window->Window);
+}
+
+void yon_group_delete_confirmation_save(GtkWidget *self, dictionary *dict){
+ GtkTreeIter iter,itar;
+ main_window *widgets = yon_dictionary_get_data(dict->first,main_window*);
+ yon_confirmation_window *window = yon_dictionary_get_data(dict->first->next,yon_confirmation_window*);
+ int valid = gtk_tree_model_get_iter_first(GTK_TREE_MODEL(widgets->GroupsList),&iter);
+ for (;valid;valid = gtk_tree_model_iter_next(GTK_TREE_MODEL(widgets->GroupsList),&iter)){
+ char *name;
+ gtk_tree_model_get(GTK_TREE_MODEL(widgets->GroupsList),&iter,1,&name,-1);
+ 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)){
+ char *name_check;
+ int delete;
+ gtk_tree_model_get(GTK_TREE_MODEL(window->list),&itar,0,&delete,1,&name_check,-1);
+ if (!strcmp(name,name_check)&&delete){
+ yon_config_remove_by_key(GROUPADD(name));
+ yon_config_remove_by_key(GROUPADD_SYNC(name));
+ valid=0;
+ break;
+ }
+ }
+ }
+ yon_interface_update(widgets);
+
+ on_subwindow_close(self);
+}
\ No newline at end of file
diff --git a/source/ubl-settings-usergroups-password.c b/source/ubl-settings-usergroups-password.c
new file mode 100644
index 0000000..8eef247
--- /dev/null
+++ b/source/ubl-settings-usergroups-password.c
@@ -0,0 +1,152 @@
+#include "ubl-settings-usergroups.h"
+
+
+
+void on_password_user_changed(GtkComboBox *,ubl_settings_usergroups_user_window *window){
+ char *passw = (char*)gtk_entry_get_text(GTK_ENTRY(window->userPasswordEntry));
+ if ((passw[0]=='$')){
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->userSyncSAMBACheck),0);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->userSyncSAMBAPasswordCheck),0);
+ gtk_widget_set_sensitive(GTK_WIDGET(window->userSyncSAMBAPasswordCheck),0);
+ } else {
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->userSyncSAMBACheck),0);
+ gtk_widget_set_sensitive(GTK_WIDGET(window->userSyncSAMBACheck),1);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->userSyncSAMBAPasswordCheck),0);
+ gtk_widget_set_sensitive(GTK_WIDGET(window->userSyncSAMBAPasswordCheck),1);
+
+ }
+}
+
+
+
+void on_password_change(GtkWidget *, dictionary *entry_dict){
+ GtkEntry *output_target = yon_dictionary_get_data(entry_dict->first->next,GtkEntry*);
+ ubl_settings_usergroups_password_window *window = yon_ubl_settings_usergroups_password_new();
+ dictionary *dict = NULL;
+ char *password = (char*)gtk_entry_get_text(output_target);
+ if (!yon_char_is_empty(password)){
+ if (main_config.load_mode==0){
+ password = yon_char_new(password);
+ if (!check_is_password_hash(password)){
+ gtk_entry_set_text(GTK_ENTRY(window->PasswordHashEntry),password);
+ } else {
+ if (password[0]=='%'&&password[1]=='%'){
+ free(yon_char_divide(password,1));
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->NoEncriptionCheck),1);
+ }
+ gtk_entry_set_text(GTK_ENTRY(window->PasswordEntry),password);
+ }
+ }
+ }
+ yon_dictionary_add_or_create_if_exists_with_data(dict,"window",window);
+ yon_dictionary_add_or_create_if_exists_with_data(dict,"target",output_target);
+ g_signal_connect(G_OBJECT(window->UserOkButton),"clicked",G_CALLBACK(on_password_accept),dict);
+ g_signal_connect(G_OBJECT(window->UserCancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
+ gtk_window_set_transient_for(GTK_WINDOW(window->CreateGroupWindow),GTK_WINDOW(gtk_widget_get_toplevel(GTK_WIDGET(output_target))));
+ gtk_widget_show(window->CreateGroupWindow);
+
+}
+
+void on_password_show_hide(GtkEntry *self, GtkEntryIconPosition icon_pos, GdkEvent*){
+ if (icon_pos == GTK_ENTRY_ICON_SECONDARY){
+ int visible = gtk_entry_get_visibility(self);
+ if (!visible){
+ gtk_entry_set_visibility(self,1);
+ } else {
+ gtk_entry_set_visibility(self,0);
+ gtk_entry_set_invisible_char(self,'*');
+ }
+ }
+}
+
+void on_password_accept(GtkWidget *self, dictionary *dict){
+ ubl_settings_usergroups_password_window *window = yon_dictionary_get_data(dict->first,ubl_settings_usergroups_password_window*);
+ GtkEntry *entry = yon_dictionary_get_data(dict->first->next,GtkEntry*);
+ char *password = (char*)gtk_entry_get_text(GTK_ENTRY(window->PasswordEntry));
+ char *password_check = (char*)gtk_entry_get_text(GTK_ENTRY(window->RepeatPasswordEntry));
+ if (yon_char_is_empty(password)){
+ 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 {
+ for (size_t i=0;iStatusBox),RESTRICTED_SYMBOLS_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
+ return;
+ }
+ }
+ if (yon_char_is_empty(password)){
+ yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
+ return;
+ } else if (password[0]=='%'&&password[1]=='%'){
+ yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
+ return;
+ }
+ if (strlen(password)StatusBox),PASSWORD_SHORT_LABEL(yon_char_from_int(main_config.password_min_length)),5,BACKGROUND_IMAGE_FAIL_TYPE);
+ return;
+ }
+ if (!strcmp(password,password_check)){
+ if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->NoEncriptionCheck))){
+ char *pasw=yon_char_append("%%",password);
+ password=pasw;
+ }
+ gtk_entry_set_text(GTK_ENTRY(entry),password);
+ } else {
+ yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),PASSWORD_MISMATCH_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
+ return;
+ }
+ }
+ on_subwindow_close(self);
+}
+
+ubl_settings_usergroups_password_window *yon_ubl_settings_usergroups_password_new(){
+ ubl_settings_usergroups_password_window *window = malloc(sizeof(ubl_settings_usergroups_password_window));
+ GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_ubl_settings_usergroups_password);
+ window->CreateGroupWindow=yon_gtk_builder_get_widget(builder,"CreateGroupWindow");
+ window->StatusBox=yon_gtk_builder_get_widget(builder,"StatusBox");
+ window->PasswordEntry=yon_gtk_builder_get_widget(builder,"PasswordEntry");
+ window->RepeatPasswordEntry=yon_gtk_builder_get_widget(builder,"RepeatPasswordEntry");
+ window->PasswordHashEntry=yon_gtk_builder_get_widget(builder,"PasswordHashEntry");
+ window->HashBox=yon_gtk_builder_get_widget(builder,"HashBox");
+ window->PasswordBox=yon_gtk_builder_get_widget(builder,"PasswordBox");
+ window->NoEncriptionCheck=yon_gtk_builder_get_widget(builder,"NoEncriptionCheck");
+
+ window->UserCancelButton=yon_gtk_builder_get_widget(builder,"UserCancelButton");
+ window->UserOkButton=yon_gtk_builder_get_widget(builder,"UserOkButton");
+
+ yon_window_config_custom_window_setup(GTK_WINDOW(window->CreateGroupWindow),"PasswordWindow");
+ g_signal_connect(G_OBJECT(window->UserCancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
+ g_signal_connect(G_OBJECT(window->PasswordEntry),"icon-press",G_CALLBACK(on_password_show_hide),NULL);
+ g_signal_connect(G_OBJECT(window->RepeatPasswordEntry),"icon-press",G_CALLBACK(on_password_show_hide),NULL);
+ g_signal_connect(G_OBJECT(window->PasswordHashEntry),"icon-press",G_CALLBACK(on_password_show_hide),NULL);
+ gtk_window_set_title(GTK_WINDOW(window->CreateGroupWindow),PASSWORD_TITLE_LABEL);
+
+return window;
+}
+
+
+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;
+ }
+ }
+ return 0;
+}
\ No newline at end of file
diff --git a/source/ubl-settings-usergroups-settings.c b/source/ubl-settings-usergroups-settings.c
new file mode 100644
index 0000000..5a0aada
--- /dev/null
+++ b/source/ubl-settings-usergroups-settings.c
@@ -0,0 +1,835 @@
+#include "ubl-settings-usergroups.h"
+
+void on_additional_settings_changed(GtkWidget *self, ubl_settings_usergroups_additional_settings_window *window){
+ if (self == window->DefaultUserNameEntry){
+ window->default_user_name = gtk_entry_get_text(GTK_ENTRY(window->DefaultUserNameEntry));
+
+ } else if (self == window->DefaultPasswordEntry){
+ window->default_password = gtk_entry_get_text(GTK_ENTRY(window->DefaultPasswordEntry));
+
+ } else if (self == window->RootPasswordEntry){
+ window->default_root_password = gtk_entry_get_text(GTK_ENTRY(window->RootPasswordEntry));
+
+ } else if (self == window->PasswordHashCombo){
+ window->password_hash = "";
+
+ } else if (self == window->DefaultUserAdministratorCheck){
+ window->user_1000_admin = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->DefaultUserAdministratorCheck));
+
+ } else if (self == window->UsersBootCheck){
+ window->user_boot = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->UsersBootCheck));
+
+ // } else if (self == window->UsersShutdownCheck){
+ // window->user_shutdown = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->UsersShutdownCheck));
+ }
+}
+
+ void on_additional_settings_save(GtkWidget *, ubl_settings_usergroups_additional_settings_window *window){
+ const char *default_user = (char*)gtk_entry_get_text(GTK_ENTRY(window->DefaultUserNameEntry));
+ if (!yon_char_is_empty(default_user)){
+ if (window->default_user_name)
+ yon_config_register(DEFAULTUSER_parameter,DEFAULTUSER_parameter_command,yon_char_new((char*)default_user));
+ } else {
+ if (window->default_user_name)
+ yon_config_remove_by_key(DEFAULTUSER_parameter);
+ }
+ char *default_password = gtk_combo_box_get_active(GTK_COMBO_BOX(window->DefaultPasswordCombo))>1? (char*)gtk_entry_get_text(GTK_ENTRY(window->DefaultPasswordEntry)):NULL;
+ if (!yon_char_is_empty(default_password)){
+ if (window->default_password)
+ yon_config_register(DEFAULTPASSWD_parameter,DEFAULTPASSWD_parameter_command,default_password);
+ } else {
+ if (window->default_password)
+ yon_config_remove_by_key(DEFAULTPASSWD_parameter);
+ }
+ char *root_password = gtk_combo_box_get_active(GTK_COMBO_BOX(window->RootPasswordCombo)) > 1 ? (char*)gtk_entry_get_text(GTK_ENTRY(window->RootPasswordEntry)) : NULL;
+ if (!yon_char_is_empty(root_password)){
+ if (window->default_root_password)
+ yon_config_register(DEFAULTROOTPASSWD_parameter,DEFAULTROOTPASSWD_parameter_command,root_password);
+ } else {
+ if (window->default_root_password)
+ yon_config_remove_by_key(DEFAULTROOTPASSWD_parameter);
+ }
+ int user_k_admin = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->DefaultUserAdministratorCheck));
+ if (user_k_admin){
+ if (window->user_1000_admin)
+ yon_config_register(ADDADM_parameter,ADDADM_parameter_command,"yes");
+ } else {
+ if (window->user_1000_admin)
+ yon_config_register(ADDADM_parameter,ADDADM_parameter_command,"no");
+ }
+ if (gtk_combo_box_get_active(GTK_COMBO_BOX(window->PasswordHashCombo))!=0){
+ char *hash = (char*)gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->PasswordHashCombo));
+ if (!yon_char_is_empty(hash)){
+ if (window->password_hash)
+ yon_config_register(HASHPASSWD_parameter,HASHPASSWD_parameter_command,hash);
+ }
+ }else {
+ if (window->password_hash)
+ yon_config_remove_by_key(HASHPASSWD_parameter);
+ }
+ // char *sync = "";
+ // int boot_active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->UsersBootCheck));
+ // int shutdown_active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->UsersShutdownCheck));
+ // if (!boot_active&&!shutdown_active){
+ // if (window->user_boot>-1||window->user_boot>-1)
+ // yon_config_remove_by_key(USERADD_SYNC_parameter);
+ // } else {
+ // if (boot_active){
+ // if (window->user_boot>-1)
+ // sync = "boot";
+ // }
+ // if (shutdown_active){
+ // if (window->user_shutdown>-1)
+ // sync = yon_char_unite(sync,yon_char_is_empty(sync)?"":",","shutdown",NULL);
+ // }
+ // if (window->user_boot>-1||window->user_boot>-1)
+ // yon_config_register(USERADD_SYNC_parameter,USERADD_SYNC_parameter_command,sync);
+ // }
+ on_useradd_sync_changed(window);
+ }
+
+ void on_additional_settings_user_sync_add(GtkWidget *self, ubl_settings_usergroups_additional_settings_window *window){
+ GtkTreeModel *model;
+ GtkTreeIter iter;
+ GtkWidget *tree;
+ if (self == window->UserAddButton){
+ tree = window->UsersTree;
+ } else {
+ tree = window->GroupsTree;
+ }
+ if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(tree)),&model,&iter)){
+ char *name;
+ char *parameter;
+ int min_sensitive;
+ int max_sensitive;
+ gtk_tree_model_get(model,&iter,1,&name,7,&min_sensitive,8,&max_sensitive,9,¶meter,-1);
+
+ gtk_list_store_append(GTK_LIST_STORE(model),&iter);
+ gtk_list_store_set(GTK_LIST_STORE(model),&iter,0,1,1,name,5,1,6,1,7,min_sensitive,8,max_sensitive,9,parameter,10,1,11,1,-1);
+
+ }
+ }
+
+ void on_additional_settings_user_sync_remove(GtkWidget *, ubl_settings_usergroups_additional_settings_window *window){
+ GtkTreeModel *model;
+ GtkTreeIter iter;
+ if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(window->UsersTree)),&model,&iter)){
+ gboolean is_indeletable;
+ gtk_tree_model_get(model,&iter,4,&is_indeletable,-1);
+ if (!is_indeletable){
+ gtk_list_store_remove(window->UsersShutdownList,&iter);
+ }
+ }
+ }
+
+ void on_additional_settings_group_sync_remove(GtkWidget *, ubl_settings_usergroups_additional_settings_window *window){
+ GtkTreeModel *model;
+ GtkTreeIter iter;
+ if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(window->GroupsTree)),&model,&iter)){
+ gboolean is_indeletable;
+ gtk_tree_model_get(model,&iter,4,&is_indeletable,-1);
+ if (!is_indeletable){
+ gtk_list_store_remove(window->GroupsShutdownList,&iter);
+ }
+ }
+ // on_useradd_sync_changed(window);
+ }
+
+void on_additional_settings_cell_toggled(GtkCellRenderer *self, char *path, ubl_settings_usergroups_additional_settings_window *window){
+ GtkTreeIter iter;
+ GtkTreeModel *model = NULL;
+ if (self == window->UserActiveCell){
+ model = GTK_TREE_MODEL(window->UsersShutdownList);
+ } else {
+ model = GTK_TREE_MODEL(window->GroupsShutdownList);
+ }
+ int status;
+ gtk_tree_model_get_iter_from_string(model,&iter,path);
+ gtk_tree_model_get(model,&iter,0,&status,-1);
+ gtk_list_store_set(GTK_LIST_STORE(model),&iter,0,!status,6,!status,-1);
+ if (path[0]=='0'&&!!status){
+ for_iter(model,&iter){
+ gtk_list_store_set(GTK_LIST_STORE(model),&iter,5,1,-1);
+ }
+ } else if (path[0] == '0'&&!status) {
+ int i=0;
+ for_iter(model,&iter){
+ if (i){
+ gtk_list_store_set(GTK_LIST_STORE(model),&iter,5,0,-1);
+ }
+ i++;
+ }
+ }
+ // on_useradd_sync_changed(window);
+}
+
+void on_additional_settings_cell_edited(GtkCellRenderer *self, char *path, char *new_text, ubl_settings_usergroups_additional_settings_window *window){
+ for (size_t i=0;iUserMinCell){
+ model = GTK_TREE_MODEL(window->UsersShutdownList);
+ place_to_set=2;
+ } else if (self == window->UserMaxCell) {
+ model = GTK_TREE_MODEL(window->UsersShutdownList);
+ place_to_set=3;
+ } else if (self == window->GroupMinCell) {
+ model = GTK_TREE_MODEL(window->GroupsShutdownList);
+ place_to_set=2;
+ } else if (self == window->GroupMaxCell) {
+ model = GTK_TREE_MODEL(window->GroupsShutdownList);
+ place_to_set=3;
+ }
+ gtk_tree_model_get_iter_from_string(model,&iter,path);
+ char *old_val;
+ gtk_tree_model_get(model,&iter,place_to_set==2?3:2,&old_val,-1);
+ if (yon_char_is_empty(old_val)) old_val = "";
+ if (!yon_char_is_empty(old_val)){
+ if (place_to_set==2){
+ if (atoi(new_text)>atoi(old_val)){
+ new_text=old_val;
+ }
+ } else {
+ if (atoi(old_val)>atoi(new_text)){
+ new_text = old_val;
+ }
+ }
+ }
+ gtk_list_store_set(GTK_LIST_STORE(model),&iter,place_to_set,new_text,place_to_set==2?3:2,old_val,-1);
+ // on_useradd_sync_changed(window);
+}
+
+void on_adiitional_settings_tree_selection_changed(GtkWidget *self, ubl_settings_usergroups_additional_settings_window *window){
+ GtkTreeModel *model;
+ GtkTreeIter iter;
+ GtkWidget *tree;
+ GtkWidget *add_button;
+ GtkWidget *remove_button;
+ if (self == window->UsersTree){
+ tree = window->UsersTree;
+ add_button = window->UserAddButton;
+ remove_button = window->UserRemoveButton;
+ } else {
+ tree = window->GroupsTree;
+ add_button = window->GroupAddButton;
+ remove_button = window->GroupRemoveButton;
+ }
+ if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(tree)),&model,&iter)){
+ int deletable;
+ int creatable;
+ char *parameter;
+ gtk_tree_model_get(model,&iter,9,¶meter,10,&creatable,11,&deletable,-1);
+ if (creatable) gtk_widget_set_sensitive(add_button,1); else gtk_widget_set_sensitive(add_button,0);
+ if (deletable) gtk_widget_set_sensitive(remove_button,1); else gtk_widget_set_sensitive(remove_button,0);
+ }
+}
+
+void on_useradd_sync_changed(ubl_settings_usergroups_additional_settings_window *window){
+ char *useradd_sync = "";
+ if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->UsersBootCheck))){
+ useradd_sync = yon_char_new("boot");
+ }
+ if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->UsersShutdownCheck))){
+ char *temp = yon_char_unite(useradd_sync,!yon_char_is_empty(useradd_sync)?",":"","shutdown",NULL);
+ if(!yon_char_is_empty(useradd_sync)) free(useradd_sync);
+ useradd_sync = temp;
+
+ }
+
+ GtkTreeIter iter;
+ for_iter(window->UsersShutdownList,&iter){
+ int active;
+ char *min_str, *max_str;
+ int sensitive;
+ char *parameter;
+
+ gtk_tree_model_get(GTK_TREE_MODEL(window->UsersShutdownList),&iter,0,&active,2,&min_str,3,&max_str,6,&sensitive,9,¶meter,-1);
+
+ if (active&&sensitive){
+ if (!strcmp(parameter,"shutdown@all")){
+ char *temp = yon_char_unite(useradd_sync,!yon_char_is_empty(useradd_sync)?",":"",parameter,NULL);
+ if(!yon_char_is_empty(useradd_sync)) free(useradd_sync);
+ useradd_sync = temp;
+ } else if (!strcmp(parameter,"shutdown@users")){
+ char *temp = yon_char_unite(useradd_sync,!yon_char_is_empty(useradd_sync)?",":"",parameter,NULL);
+ if(!yon_char_is_empty(useradd_sync)) free(useradd_sync);
+ useradd_sync = temp;
+
+ } else if (!strcmp(parameter,"shutdown@systems")){
+ char *temp = yon_char_unite(useradd_sync,!yon_char_is_empty(useradd_sync)?",":"",parameter,NULL);
+ if(!yon_char_is_empty(useradd_sync)) free(useradd_sync);
+ useradd_sync = temp;
+
+ } else if (!strcmp(parameter,"shutdown@min-max")){
+ if (yon_char_is_empty(min_str)||yon_char_is_empty(max_str)){
+ yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
+ return;
+ }
+ char *temp = yon_char_unite(useradd_sync,!yon_char_is_empty(useradd_sync)?",":"","shutdown@",min_str,"-",max_str,NULL);
+ if(!yon_char_is_empty(useradd_sync)) free(useradd_sync);
+ useradd_sync = temp;
+
+ } else if (!strcmp(parameter,"shutdown@uid")){
+ if (yon_char_is_empty(min_str)){
+ yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
+ return;
+ }
+ char *temp = yon_char_unite(useradd_sync,!yon_char_is_empty(useradd_sync)?",":"","shutdown@",min_str,NULL);
+ if(!yon_char_is_empty(useradd_sync)) free(useradd_sync);
+ useradd_sync = temp;
+
+ }
+ }
+ }
+ if (!yon_char_is_empty(useradd_sync)){
+ yon_config_register(USERADD_SYNC_parameter,USERADD_SYNC_get_command,useradd_sync);
+ } else {
+ yon_config_remove_by_key(USERADD_SYNC_parameter);
+ }
+
+ char *groupadd_sync = "";
+ if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->GroupsBootCheck))){
+ groupadd_sync = yon_char_new("boot");
+ }
+ if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->GroupsShutdownCheck))){
+ char *temp = yon_char_unite(groupadd_sync,!yon_char_is_empty(groupadd_sync)?",":"","shutdown",NULL);
+ if(!yon_char_is_empty(groupadd_sync)) free(groupadd_sync);
+ groupadd_sync = temp;
+ }
+ for_iter(window->GroupsShutdownList,&iter){
+ int active;
+ char *min_str, *max_str;
+ int sensitive;
+ char *parameter;
+
+ gtk_tree_model_get(GTK_TREE_MODEL(window->GroupsShutdownList),&iter,0,&active,2,&min_str,3,&max_str,6,&sensitive,9,¶meter,-1);
+ if (active&&sensitive){
+ if (!strcmp(parameter,"shutdown@all")){
+ char *temp = yon_char_unite(groupadd_sync,!yon_char_is_empty(groupadd_sync)?",":"",parameter,NULL);
+ if(!yon_char_is_empty(groupadd_sync)) free(groupadd_sync);
+ groupadd_sync = temp;
+ } else if (!strcmp(parameter,"shutdown@users")){
+ char *temp = yon_char_unite(groupadd_sync,!yon_char_is_empty(groupadd_sync)?",":"",parameter,NULL);
+ if(!yon_char_is_empty(groupadd_sync)) free(groupadd_sync);
+ groupadd_sync = temp;
+
+ } else if (!strcmp(parameter,"shutdown@systems")){
+ char *temp = yon_char_unite(groupadd_sync,!yon_char_is_empty(groupadd_sync)?",":"",parameter,NULL);
+ if(!yon_char_is_empty(groupadd_sync)) free(groupadd_sync);
+ groupadd_sync = temp;
+
+ } else if (!strcmp(parameter,"shutdown@min-max")){
+ if (yon_char_is_empty(min_str)||yon_char_is_empty(max_str)){
+ yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
+ return;
+ }
+ char *temp = yon_char_unite(groupadd_sync,!yon_char_is_empty(groupadd_sync)?",":"","shutdown@",min_str,"-",max_str,NULL);
+ if(!yon_char_is_empty(groupadd_sync)) free(groupadd_sync);
+ groupadd_sync = temp;
+
+ } else if (!strcmp(parameter,"shutdown@gid")){
+ if (yon_char_is_empty(min_str)){
+ yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
+ return;
+ }
+ char *temp = yon_char_unite(groupadd_sync,!yon_char_is_empty(groupadd_sync)?",":"","shutdown@",min_str,NULL);
+ if(!yon_char_is_empty(groupadd_sync)) free(groupadd_sync);
+ groupadd_sync = temp;
+
+ }
+ }
+ }
+ if (!yon_char_is_empty(groupadd_sync)){
+ yon_config_register(GROUPADD_SYNC_parameter,GROUPADD_SYNC_parameter_command,groupadd_sync);
+ } else {
+ yon_config_remove_by_key(GROUPADD_SYNC_parameter);
+ }
+ on_subwindow_close(window->Window);
+}
+
+ubl_settings_usergroups_additional_settings_window *yon_ubl_settings_usergroups_additional_settings_new(){
+ ubl_settings_usergroups_additional_settings_window *window = malloc(sizeof(ubl_settings_usergroups_additional_settings_window));
+ GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_ubl_settings_usergroups_additional_settings);
+ window->Window=yon_gtk_builder_get_widget(builder,"Window");
+ window->StatusBox=yon_gtk_builder_get_widget(builder,"StatusBox");
+ window->DefaultUserNameEntry=yon_gtk_builder_get_widget(builder,"DefaultUserNameEntry");
+ window->DefaultUserAdministratorCheck=yon_gtk_builder_get_widget(builder,"DefaultUserAdministratorCheck");
+ window->DefaultPasswordCombo=yon_gtk_builder_get_widget(builder,"DefaultPasswordCombo");
+ window->DefaultPasswordEntry=yon_gtk_builder_get_widget(builder,"DefaultPasswordEntry");
+ window->DefaultPasswordButton=yon_gtk_builder_get_widget(builder,"DefaultPasswordButton");
+ window->RootPasswordCombo=yon_gtk_builder_get_widget(builder,"RootPasswordCombo");
+ window->RootPasswordEntry=yon_gtk_builder_get_widget(builder,"RootPasswordEntry");
+ window->RootPasswordButton=yon_gtk_builder_get_widget(builder,"RootPasswordButton");
+ window->PasswordHashCombo=yon_gtk_builder_get_widget(builder,"PasswordHashCombo");
+ window->EncryptAllPasswordsButton=yon_gtk_builder_get_widget(builder,"EncryptAllPasswordsButton");
+ window->CancelButton=yon_gtk_builder_get_widget(builder,"CancelButton");
+ window->AcceptButton=yon_gtk_builder_get_widget(builder,"AcceptButton");
+ window->UsersBootCheck=yon_gtk_builder_get_widget(builder,"UsersBootCheck");
+ window->UsersShutdownCheck=yon_gtk_builder_get_widget(builder,"UsersShutdownCheck");
+ window->UsersShutdownExpander=yon_gtk_builder_get_widget(builder,"UsersShutdownExpander");
+ window->UserShutdownRevealer=yon_gtk_builder_get_widget(builder,"UserShutdownRevealer");
+ window->UsersTree=yon_gtk_builder_get_widget(builder,"UsersTree");
+ window->UserAddButton=yon_gtk_builder_get_widget(builder,"UserAddButton");
+ window->UserRemoveButton=yon_gtk_builder_get_widget(builder,"UserRemoveButton");
+ window->GroupsBootCheck=yon_gtk_builder_get_widget(builder,"GroupsBootCheck");
+ window->GroupsShutdownCheck=yon_gtk_builder_get_widget(builder,"GroupsShutdownCheck");
+ window->GroupsShutdownExpander=yon_gtk_builder_get_widget(builder,"GroupShutdownExpander");
+ window->GroupShutdownRevealer=yon_gtk_builder_get_widget(builder,"GroupShutdownRevealer");
+ window->GroupsTree=yon_gtk_builder_get_widget(builder,"GroupsTree");
+ window->GroupAddButton=yon_gtk_builder_get_widget(builder,"GroupAddButton");
+ window->GroupRemoveButton=yon_gtk_builder_get_widget(builder,"GroupRemoveButton");
+ window->UsersShutdownList=GTK_LIST_STORE(gtk_builder_get_object(builder,"UsersShutdownList"));
+ window->GroupsShutdownList=GTK_LIST_STORE(gtk_builder_get_object(builder,"GroupsShutdownList"));
+ window->UserActiveCell=GTK_CELL_RENDERER(gtk_builder_get_object(builder,"UserActiveCell"));
+ window->UserMinCell=GTK_CELL_RENDERER(gtk_builder_get_object(builder,"UserMinCell"));
+ window->UserMaxCell=GTK_CELL_RENDERER(gtk_builder_get_object(builder,"UserMaxCell"));
+ window->GroupActiveCell=GTK_CELL_RENDERER(gtk_builder_get_object(builder,"GroupActiveCell"));
+ window->GroupMinCell=GTK_CELL_RENDERER(gtk_builder_get_object(builder,"GroupMinCell"));
+ window->GroupMaxCell=GTK_CELL_RENDERER(gtk_builder_get_object(builder,"GroupMaxCell"));
+
+ yon_gtk_revealer_set_from_expander(GTK_REVEALER(window->UserShutdownRevealer),GTK_EXPANDER(window->UsersShutdownExpander));
+ yon_gtk_revealer_set_from_expander(GTK_REVEALER(window->GroupShutdownRevealer),GTK_EXPANDER(window->GroupsShutdownExpander));
+
+ window->default_password=NULL;
+ window->default_root_password=NULL;
+ window->default_user_name=NULL;
+ window->user_1000_admin=-1;
+ window->user_shutdown=-1;
+ window->user_boot=-1;
+ window->password_hash=NULL;
+
+ char *useradd_sync = yon_config_get_by_key(USERADD_SYNC_parameter);
+ char *groupadd_sync = yon_config_get_by_key(GROUPADD_SYNC_parameter);
+
+ if (!yon_char_is_empty(useradd_sync)){
+ GtkTreeModel *model = GTK_TREE_MODEL(window->UsersShutdownList);
+ GtkTreeIter iter;
+ int useradd_sync_size;
+ config_str parsed = yon_char_parse(useradd_sync,&useradd_sync_size,",");
+ if (yon_char_parsed_check_exist(parsed,useradd_sync_size,"shutdown@all")){
+ int a=0;
+ for_iter(model,&iter){
+ if (!a){
+ gtk_list_store_set(window->UsersShutdownList,&iter,6,0,-1);
+ a++;
+ } else {
+ gtk_list_store_set(window->UsersShutdownList,&iter,5,1,-1);
+ }
+ }
+ }
+ int uid_set=0, maxmin_set=0;
+ for (int i=0;iUsersShutdownExpander),1);
+ gtk_revealer_set_reveal_child(GTK_REVEALER(window->UserShutdownRevealer),1);
+ if (!strcmp(parsed[i],"boot")){
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->UsersBootCheck),1);
+ } else if (!strcmp(parsed[i],"shutdown@all")){
+ gtk_tree_model_get_iter_first(model,&iter);
+ gtk_list_store_set(window->UsersShutdownList,&iter,0,1,7,0,8,0,-1);
+ } else if (!strcmp(parsed[i],"shutdown@users")){
+ gtk_tree_model_get_iter_first(model,&iter);
+ gtk_list_store_set(window->UsersShutdownList,&iter,0,0,5,0,6,0,-1);
+ gtk_tree_model_get_iter_from_string(model,&iter,"1");
+ gtk_list_store_set(window->UsersShutdownList,&iter,0,1,5,1,6,1,7,0,8,0,-1);
+
+ } else if (!strcmp(parsed[i],"shutdown@systems")){
+ gtk_tree_model_get_iter_first(model,&iter);
+ gtk_list_store_set(window->UsersShutdownList,&iter,0,0,5,0,6,0,-1);
+ gtk_tree_model_get_iter_from_string(model,&iter,"2");
+ gtk_list_store_set(window->UsersShutdownList,&iter,0,1,5,1,6,1,7,0,8,0,-1);
+
+ } else if (strstr(parsed[i],"-")){
+ gtk_tree_model_get_iter_first(model,&iter);
+ gtk_list_store_set(window->UsersShutdownList,&iter,0,0,5,0,6,0,-1);
+ if (!maxmin_set){
+ gtk_tree_model_get_iter_from_string(model,&iter,"3");
+ maxmin_set++;
+ } else {
+ gtk_list_store_append(window->UsersShutdownList,&iter);
+ gtk_list_store_set(window->UsersShutdownList,&iter,1,SHUTDOWN_UID_RANGE_LABEL,5,1,6,1,7,1,8,1,9,"shutdown@uid",10,1,11,1,-1);
+ }
+
+ char *temp = yon_char_new(parsed[i]);
+ free(yon_char_divide_search(temp,"@",-1));
+ char *min = yon_char_divide_search(temp,"-",-1);
+
+ gtk_list_store_set(window->UsersShutdownList,&iter,0,1,2,min,3,temp,6,1,7,1,8,1,-1);
+
+ } else if (strstr(parsed[i],"shutdown@")) {
+ gtk_tree_model_get_iter_first(model,&iter);
+ gtk_list_store_set(window->UsersShutdownList,&iter,0,0,5,0,6,0,-1);
+
+ if (!uid_set){
+ gtk_tree_model_get_iter_from_string(model,&iter,"4");
+ uid_set++;
+ } else {
+ gtk_list_store_append(window->UsersShutdownList,&iter);
+ gtk_list_store_set(window->UsersShutdownList,&iter,1,SHUTDOWN_UID_LABEL,5,1,6,1,7,1,8,0,9,"shutdown@uid",10,1,11,1,-1);
+ }
+ char *temp = yon_char_new(parsed[i]);
+ free(yon_char_divide_search(temp,"@",-1));
+ gtk_list_store_set(window->UsersShutdownList,&iter,0,1,2,temp,6,1,7,1,8,1,-1);
+ } else if (!strcmp(parsed[i],"shutdown")){
+ gtk_tree_model_get_iter_first(model,&iter);
+ gtk_list_store_set(window->UsersShutdownList,&iter,0,0,-1);
+ gtk_tree_model_get_iter_from_string(model,&iter,"1");
+ gtk_list_store_set(window->UsersShutdownList,&iter,0,1,5,1,6,1,-1);
+ gtk_tree_model_get_iter_from_string(model,&iter,"2");
+ gtk_list_store_set(window->UsersShutdownList,&iter,0,1,5,1,6,1,-1);
+
+ }
+ }
+ }
+
+ if (!yon_char_is_empty(groupadd_sync)){
+ GtkTreeModel *model = GTK_TREE_MODEL(window->GroupsShutdownList);
+ GtkTreeIter iter;
+ int useradd_sync_size;
+ config_str parsed = yon_char_parse(groupadd_sync,&useradd_sync_size,",");
+ if (yon_char_parsed_check_exist(parsed,useradd_sync_size,"shutdown@all")){
+ int a=0;
+ for_iter(model,&iter){
+ if (!a){
+ gtk_list_store_set(window->GroupsShutdownList,&iter,6,0,-1);
+ a++;
+ } else {
+ gtk_list_store_set(window->GroupsShutdownList,&iter,5,1,-1);
+ }
+ }
+ }
+ gtk_expander_set_expanded(GTK_EXPANDER(window->GroupsShutdownExpander),1);
+ gtk_revealer_set_reveal_child(GTK_REVEALER(window->GroupShutdownRevealer),1);
+ int uid_set=0, maxmin_set=0;
+ for (int i=0;iGroupsBootCheck),1);
+ } else if (!strcmp(parsed[i],"shutdown@all")){
+ gtk_tree_model_get_iter_first(model,&iter);
+ gtk_list_store_set(window->GroupsShutdownList,&iter,0,1,-1);
+ } else if (!strcmp(parsed[i],"shutdown@users")){
+ gtk_tree_model_get_iter_first(model,&iter);
+ gtk_list_store_set(window->GroupsShutdownList,&iter,0,0,-1);
+ gtk_tree_model_get_iter_from_string(model,&iter,"1");
+ gtk_list_store_set(window->GroupsShutdownList,&iter,0,1,5,1,6,1,-1);
+
+ } else if (!strcmp(parsed[i],"shutdown@systems")){
+ gtk_tree_model_get_iter_first(model,&iter);
+ gtk_list_store_set(window->GroupsShutdownList,&iter,0,0,-1);
+ gtk_tree_model_get_iter_from_string(model,&iter,"2");
+ gtk_list_store_set(window->GroupsShutdownList,&iter,0,1,5,1,6,1,-1);
+
+ } else if (strstr(parsed[i],"-")){
+ gtk_tree_model_get_iter_first(model,&iter);
+ gtk_list_store_set(window->GroupsShutdownList,&iter,0,0,-1);
+ if (!maxmin_set){
+ gtk_tree_model_get_iter_from_string(model,&iter,"3");
+ maxmin_set++;
+ } else {
+ gtk_list_store_append(window->GroupsShutdownList,&iter);
+ gtk_list_store_set(window->GroupsShutdownList,&iter,1,SHUTDOWN_GID_RANGE_LABEL,5,1,6,1,9,"shutdown@uid",10,1,11,1,-1);
+ }
+
+ char *temp = yon_char_new(parsed[i]);
+ free(yon_char_divide_search(temp,"@",-1));
+ char *min = yon_char_divide_search(temp,"-",-1);
+
+ gtk_list_store_set(window->GroupsShutdownList,&iter,0,1,2,min,3,temp,6,1,7,1,8,1,-1);
+
+ } else if (strstr(parsed[i],"shutdown@")){
+ gtk_tree_model_get_iter_first(model,&iter);
+ gtk_list_store_set(window->GroupsShutdownList,&iter,0,0,-1);
+
+ if (!uid_set){
+ gtk_tree_model_get_iter_from_string(model,&iter,"4");
+ uid_set++;
+ } else {
+ gtk_list_store_append(window->GroupsShutdownList,&iter);
+ gtk_list_store_set(window->GroupsShutdownList,&iter,1,SHUTDOWN_GID_LABEL,5,1,6,1,7,1,8,1,9,"shutdown@uid",10,1,11,1,-1);
+ }
+ char *temp = yon_char_new(parsed[i]);
+ free(yon_char_divide_search(temp,"@",-1));
+ gtk_list_store_set(window->GroupsShutdownList,&iter,0,1,2,temp,5,1,6,1,-1);
+ } else if (!strcmp(parsed[i],"shutdown")){
+ gtk_tree_model_get_iter_first(model,&iter);
+ gtk_list_store_set(window->GroupsShutdownList,&iter,0,0,-1);
+ gtk_tree_model_get_iter_from_string(model,&iter,"1");
+ gtk_list_store_set(window->GroupsShutdownList,&iter,0,1,6,1,-1);
+ gtk_tree_model_get_iter_from_string(model,&iter,"2");
+ gtk_list_store_set(window->GroupsShutdownList,&iter,0,1,6,1,-1);
+
+ }
+ }
+ }
+
+ g_signal_connect(G_OBJECT(window->UserAddButton),"clicked",G_CALLBACK(on_additional_settings_user_sync_add),window);
+ g_signal_connect(G_OBJECT(window->UserRemoveButton),"clicked",G_CALLBACK(on_additional_settings_user_sync_remove),window);
+ g_signal_connect(G_OBJECT(window->GroupAddButton),"clicked",G_CALLBACK(on_additional_settings_user_sync_add),window);
+ g_signal_connect(G_OBJECT(window->GroupRemoveButton),"clicked",G_CALLBACK(on_additional_settings_group_sync_remove),window);
+
+ g_signal_connect(G_OBJECT(window->UserActiveCell),"toggled",G_CALLBACK(on_additional_settings_cell_toggled),window);
+ g_signal_connect(G_OBJECT(window->GroupActiveCell),"toggled",G_CALLBACK(on_additional_settings_cell_toggled),window);
+ g_signal_connect(G_OBJECT(window->UserMinCell),"edited",G_CALLBACK(on_additional_settings_cell_edited),window);
+ g_signal_connect(G_OBJECT(window->UserMaxCell),"edited",G_CALLBACK(on_additional_settings_cell_edited),window);
+ g_signal_connect(G_OBJECT(window->GroupMinCell),"edited",G_CALLBACK(on_additional_settings_cell_edited),window);
+ g_signal_connect(G_OBJECT(window->GroupMaxCell),"edited",G_CALLBACK(on_additional_settings_cell_edited),window);
+
+ g_signal_connect(G_OBJECT(window->UsersShutdownExpander),"activate",G_CALLBACK(on_additional_settings_changed),window);
+ g_signal_connect(G_OBJECT(window->GroupsShutdownExpander),"activate",G_CALLBACK(on_additional_settings_changed),window);
+
+ g_signal_connect(G_OBJECT(window->UsersShutdownCheck),"toggled",G_CALLBACK(on_additional_settings_changed),window);
+ g_signal_connect(G_OBJECT(window->GroupsShutdownCheck),"toggled",G_CALLBACK(on_additional_settings_changed),window);
+
+ g_signal_connect(G_OBJECT(window->UsersTree),"cursor-changed",G_CALLBACK(on_adiitional_settings_tree_selection_changed),window);
+ g_signal_connect(G_OBJECT(window->GroupsTree),"cursor-changed",G_CALLBACK(on_adiitional_settings_tree_selection_changed),window);
+ yon_window_config_custom_window_setup(GTK_WINDOW(window->Window),"AdditionalSettingsWindow");
+ gtk_window_set_title(GTK_WINDOW(window->Window),ADDITIONAL_SETTINGS_TITLE_LABEL);
+ {
+ char *sync_parameters = yon_config_get_by_key(USERADD_SYNC_parameter);
+ int size;
+ config_str parsed = yon_char_parse(sync_parameters,&size,",");
+ if (sync_parameters){
+ if (strstr(sync_parameters,"boot")){
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->UsersBootCheck),1);
+ }
+ if (yon_char_parsed_check_exist(parsed,size,"shutdown")!=-1){
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->UsersShutdownCheck),1);
+ }
+ }
+ }
+ {
+ char *sync_parameters = yon_config_get_by_key(GROUPADD_SYNC_parameter);
+ int size;
+ config_str parsed = yon_char_parse(sync_parameters,&size,",");
+ if (sync_parameters){
+ if (strstr(sync_parameters,"boot")){
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->GroupsBootCheck),1);
+ }
+ if (yon_char_parsed_check_exist(parsed,size,"shutdown")!=-1){
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->GroupsShutdownCheck),1);
+ }
+ }
+ }
+ int hash_size=0;
+ config_str hash_algos = yon_file_open(hash_list_path,&hash_size);
+ if (main_config.hash_default_id==-1){
+ int size;
+ config_str ret = yon_config_load(get_default_hash_command,&size);
+ if (size>0){
+ char *hash = ret[0];
+ if (hash[strlen(hash)-1]=='\n') hash[strlen(hash)-1]='\0';
+ for (int i=0;iPasswordHashCombo),yon_char_unite(DEFAULT_USER_LABEL," (",def,")",NULL));
+ }
+ }
+ }
+ }
+ }
+ for (int i=1;iPasswordHashCombo),parsed[0],_(parsed[1]));
+ gtk_widget_set_tooltip_text(window->PasswordHashCombo,parsed[1]);
+ yon_char_parsed_free(parsed,parsed_size);
+ }
+ }
+ yon_char_parsed_free(hash_algos,hash_size);
+ gtk_combo_box_set_active(GTK_COMBO_BOX(window->PasswordHashCombo),0);
+ char *default_user = yon_config_get_by_key(DEFAULTUSER_parameter);
+ if (!yon_char_is_empty(default_user))
+ gtk_entry_set_text(GTK_ENTRY(window->DefaultUserNameEntry),default_user);
+
+
+ g_signal_connect(G_OBJECT(window->RootPasswordCombo),"changed",G_CALLBACK(on_password_combo_changed),window->RootPasswordButton);
+ g_signal_connect(G_OBJECT(window->DefaultPasswordCombo),"changed",G_CALLBACK(on_password_combo_changed),window->DefaultPasswordButton);
+ char *default_password = yon_config_get_by_key(DEFAULTPASSWD_parameter);
+ if (!yon_char_is_empty(default_password)){
+ gtk_entry_set_text(GTK_ENTRY(window->DefaultPasswordEntry),default_password);
+ if(!yon_config_check_ignore(DEFAULTPASSWD_parameter))
+ gtk_combo_box_set_active(GTK_COMBO_BOX(window->DefaultPasswordCombo),2);
+ }
+ char *root_password = yon_config_get_by_key(DEFAULTROOTPASSWD_parameter);
+ if (!yon_char_is_empty(root_password)){
+ gtk_entry_set_text(GTK_ENTRY(window->RootPasswordEntry),root_password);
+ if(!yon_config_check_ignore(DEFAULTROOTPASSWD_parameter))
+ gtk_combo_box_set_active(GTK_COMBO_BOX(window->RootPasswordCombo),2);
+ }
+ char *is_k_admin = yon_config_get_by_key(ADDADM_parameter);
+ if (!yon_char_is_empty(is_k_admin))
+ if (!strcmp(is_k_admin,"yes"))
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->DefaultUserAdministratorCheck),1);
+ char *hash = yon_config_get_by_key(HASHPASSWD_parameter);
+ if (!yon_char_is_empty(hash)){
+ gtk_combo_box_set_active_id(GTK_COMBO_BOX(window->PasswordHashCombo),hash);
+ }
+
+ // char *parameter = config(USERADD_SYNC_parameter);
+ // {
+ // int size;
+ // config_str parsed = yon_char_parse(parameter,&size,",");
+ // int sync_parameters_size;
+ // config_str sync_parameters = yon_resource_open_file(sync_parameters_path,&sync_parameters_size);
+ // for(int i=0;iUsersShutdownList,&iter);
+ // gtk_list_store_set(window->UsersShutdownList,&iter,1,sync_parsed[0],2,cur[0],3,cur_size>1?cur[1]:"",-1);
+ // };
+ // }
+ // yon_char_parsed_free(sync_parsed,sync_parsed_size);
+ // }
+
+ // }
+
+ // }
+
+ g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
+ g_signal_connect(G_OBJECT(window->AcceptButton),"clicked",G_CALLBACK(on_additional_settings_save),window);
+ dictionary *default_dict=NULL;
+ yon_dictionary_add_or_create_if_exists_with_data(default_dict,"combo",window->DefaultPasswordCombo);
+ yon_dictionary_add_or_create_if_exists_with_data(default_dict,"entry",window->DefaultPasswordEntry);
+
+ dictionary *root_dict=NULL;
+ yon_dictionary_add_or_create_if_exists_with_data(root_dict,"combo",window->RootPasswordCombo);
+ yon_dictionary_add_or_create_if_exists_with_data(root_dict,"entry",window->RootPasswordEntry);
+ g_signal_connect(G_OBJECT(window->DefaultPasswordButton),"clicked",G_CALLBACK(on_password_change),default_dict);
+ g_signal_connect(G_OBJECT(window->RootPasswordButton),"clicked",G_CALLBACK(on_password_change),root_dict);
+ dialog_confirmation_data *data=malloc(sizeof(dialog_confirmation_data));
+ data->function=on_passwords_encrypt;
+ data->action_text = ENCRYPT_SURE_LABEL;
+ data->data=NULL;
+
+ g_signal_connect(G_OBJECT(window->EncryptAllPasswordsButton),"clicked",G_CALLBACK(yon_confirmation_dialog_call),data);
+ g_signal_connect(G_OBJECT(window->PasswordHashCombo),"changed",G_CALLBACK(on_hash_changed),window);
+
+ g_signal_connect(G_OBJECT(window->DefaultUserNameEntry),"changed",G_CALLBACK(on_additional_settings_changed),window);
+ g_signal_connect(G_OBJECT(window->DefaultPasswordEntry),"changed",G_CALLBACK(on_additional_settings_changed),window);
+ g_signal_connect(G_OBJECT(window->RootPasswordEntry),"changed",G_CALLBACK(on_additional_settings_changed),window);
+ g_signal_connect(G_OBJECT(window->PasswordHashCombo),"changed",G_CALLBACK(on_additional_settings_changed),window);
+ g_signal_connect(G_OBJECT(window->DefaultUserAdministratorCheck),"toggled",G_CALLBACK(on_additional_settings_changed),window);
+ g_signal_connect(G_OBJECT(window->UsersBootCheck),"toggled",G_CALLBACK(on_additional_settings_changed),window);
+ g_signal_connect(G_OBJECT(window->GroupsBootCheck),"toggled",G_CALLBACK(on_additional_settings_changed),window);
+
+ // g_signal_connect(G_OBJECT(window->UsersBootCheck),"toggled",G_CALLBACK(on_users_boot_toggled),NULL);
+ // g_signal_connect(G_OBJECT(window->UsersShutdownCheck),"toggled",G_CALLBACK(on_users_shutdown_toggled),NULL);
+
+return window;
+}
+
+void on_ubl_settings_usergroups_additional_settings_open(GtkWidget *, main_window *widgets){
+ ubl_settings_usergroups_additional_settings_window *window = yon_ubl_settings_usergroups_additional_settings_new();
+
+ gtk_window_set_transient_for(GTK_WINDOW(window->Window),GTK_WINDOW(widgets->Window));
+ gtk_widget_show(window->Window);
+
+}
+
+config_str yon_parameter_parse(char *parameter, int *size){
+ if (yon_char_is_empty(parameter)) return NULL;
+ char *cur;
+ (*size)=0;
+ if ((cur = strstr(parameter,"<"))){
+ config_str parsed = yon_char_parse(parameter,size,">");
+ for (int i=0;i<(*size);i++){
+ char *tag = strstr(parsed[i],">");
+ int length = strlen(parsed[i])-strlen(tag+1);
+ free(yon_char_divide(parsed[i],length));
+ }
+ return parsed;
+ } else {
+ config_str parsed = yon_char_parsed_new(size,parameter,NULL);
+ return parsed;
+ }
+}
+
+int yon_parameter_check_tag(char *parameter, char *pattern){
+ char *tag_template = "[0-9]{1,}";
+ char *converted = "";
+ char *current = pattern;
+ while (!yon_char_is_empty(current)){
+ if ((*current)=='<'){
+ char *end = strchr(current,'>');
+ if (end){
+ converted = yon_char_append(converted,tag_template);
+ current = end+1;
+ } else {
+ // закрытие тэга не найдено
+ }
+ } else {
+ char *temp = yon_char_append_c(converted,*current);
+ if (!yon_char_is_empty(converted)) free(converted);
+ converted = temp;
+ current++;
+ }
+ }
+
+ GRegex *regex = g_regex_new(converted,G_REGEX_EXTENDED,0,NULL);
+ if (regex){
+ GMatchInfo *match;
+ if (g_regex_match(regex,parameter,0,&match)){
+ char *value = g_match_info_fetch(match, 0);
+ if (!strcmp(parameter,value))
+ return 1;
+ }
+ }
+
+
+ return 0;
+}
+
+config_str yon_parameter_get_by_template(char *parameter, char *pattern, int *size){
+ config_str final = NULL;
+ char *tag_template = "[0-9]{1,}";
+ char *converted = "";
+ char *current = pattern;
+ while (!yon_char_is_empty(current)){
+ if ((*current)=='<'){
+ char *end = strchr(current,'>');
+ if (end){
+ converted = yon_char_append(converted,tag_template);
+ current = end+1;
+ } else {
+ // закрытие тэга не найдено
+ }
+ } else {
+ char *temp = yon_char_append_c(converted,*current);
+ if (!yon_char_is_empty(converted)) free(converted);
+ converted=temp;
+ current++;
+ }
+ }
+ GRegex *regex = g_regex_new("[0-9]{1,}",G_REGEX_EXTENDED,0,NULL);
+ if (regex){
+ GMatchInfo *match;
+ if (g_regex_match(regex, parameter, 0, &match)) {
+ while (g_match_info_matches(match)) {
+ char *value = g_match_info_fetch(match, 0);
+ yon_char_parsed_add_or_create_if_exists(final, size, value);
+ g_free(value);
+ g_match_info_next(match, NULL);
+ }
+ }
+ g_match_info_free(match);
+ }
+ g_regex_unref(regex);
+ return final;
+}
\ No newline at end of file
diff --git a/source/ubl-settings-usergroups-system.c b/source/ubl-settings-usergroups-system.c
new file mode 100644
index 0000000..06f59c4
--- /dev/null
+++ b/source/ubl-settings-usergroups-system.c
@@ -0,0 +1,159 @@
+#include "ubl-settings-usergroups.h"
+
+void on_delete_system_user(GtkWidget *, dictionary *dict){
+ main_window *widgets = yon_dictionary_get_data(dict->first,main_window*);
+ yon_confirmation_window *dialog = yon_dictionary_get_data(dict->first->next,yon_confirmation_window*);
+ GtkTreeModel *model = GTK_TREE_MODEL(dialog->list);
+ GtkTreeIter iter;
+ char *command=NULL;
+ for_iter(model,&iter){
+ int status,delete_home_status;
+ char *target;
+ gtk_tree_model_get(model,&iter,0,&status,1,&target,3,&delete_home_status,-1);
+ if (command) command=yon_char_unite(command,"; ",delete_home_status?remove_user_and_homedir_from_system_command(target):remove_user_from_system_command(target),NULL);
+ else command = delete_home_status?remove_user_and_homedir_from_system_command(target):remove_user_from_system_command(target);
+ }
+ if (!yon_char_is_empty(command)){
+ if (system(yon_debug_output("%s\n",command))){
+ yon_ubl_status_box_render(USER_REMOVE_ERROR,BACKGROUND_IMAGE_FAIL_TYPE);
+ } else {
+
+ textdomain(template_ui_LocaleName);
+ yon_ubl_status_box_render(SUCCESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE);
+ textdomain(LocalePath);
+ }
+ }
+ on_subwindow_close(dialog->Window);
+ yon_system_load(widgets);
+}
+
+void on_delete_system_group(GtkWidget *, dictionary *dict){
+ main_window *widgets = yon_dictionary_get_data(dict->first,main_window*);
+ yon_confirmation_window *dialog = yon_dictionary_get_data(dict->first->next,yon_confirmation_window*);
+ GtkTreeModel *model = GTK_TREE_MODEL(dialog->list);
+ GtkTreeIter iter;
+ char *command=NULL;
+ for_iter(model,&iter){
+ int status,delete_home_status;
+ char *target;
+ gtk_tree_model_get(model,&iter,0,&status,1,&target,3,&delete_home_status,-1);
+ if (command) command=yon_char_unite(command,"; ",remove_group_from_system_command(target),NULL);
+ else command = remove_group_from_system_command(target);
+ }
+ if (!yon_char_is_empty(command)){
+ if (system(yon_debug_output("%s\n",command))){
+ yon_ubl_status_box_render(USER_REMOVE_ERROR,BACKGROUND_IMAGE_FAIL_TYPE);
+ } else {
+
+ textdomain(template_ui_LocaleName);
+ yon_ubl_status_box_render(SUCCESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE);
+ textdomain(LocalePath);
+ }
+ }
+ on_subwindow_close(dialog->Window);
+ yon_system_load(widgets);
+}
+
+void yon_remove_confirmation_window_accept_clicked(GtkWidget *self,dictionary *dict){
+ main_window *widgets = yon_dictionary_get_data(dict->first,main_window *);
+ system_remove_confirmation_window *window = yon_dictionary_get_data(dict->first->next,system_remove_confirmation_window *);
+ if (self == window->ConfigAcceptButton){
+ if (gtk_notebook_get_current_page(GTK_NOTEBOOK(widgets->MainNotebook))==2){
+ GtkTreeIter iter, itar;
+ GtkTreeModel *model;
+ char *target;
+ if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->SystemTree)),&model,&iter)){
+ gtk_tree_model_get(model,&iter,2,&target,-1);
+ }
+ for_iter(GTK_TREE_MODEL(widgets->UsersList),&itar){
+ char *cur;
+ gtk_tree_model_get(GTK_TREE_MODEL(widgets->UsersList),&itar,2,&cur,-1);
+ if (!strcmp(target,cur)){
+ gtk_tree_selection_select_iter(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->UsersTree)),&itar);
+ break;
+ }
+ }
+ gtk_notebook_set_current_page(GTK_NOTEBOOK(widgets->MainNotebook),0);
+ yon_delete_confirmation_open(widgets);
+ } else if (self == window->AcceptButton || self == window->SystemAcceptButton) {
+ GtkTreeIter iter, itar;
+ GtkTreeModel *model;
+ char *target;
+ if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->SystemGroupsTree)),&model,&iter)){
+ gtk_tree_model_get(model,&iter,1,&target,-1);
+ }
+ for_iter(GTK_TREE_MODEL(widgets->GroupsList),&itar){
+ char *cur;
+ gtk_tree_model_get(GTK_TREE_MODEL(widgets->GroupsList),&itar,1,&cur,-1);
+ if (!strcmp(target,cur)){
+ gtk_tree_selection_select_iter(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->GroupsTree)),&itar);
+ break;
+ }
+ }
+ gtk_notebook_set_current_page(GTK_NOTEBOOK(widgets->MainNotebook),1);
+ yon_group_delete_confirmation_open(widgets);
+ }
+ } else {
+ yon_confirmation_window *dialog = yon_delete_confirmation_new();
+ dictionary *dact = NULL;
+ yon_dictionary_add_or_create_if_exists_with_data(dact,"widgets",widgets);
+ yon_dictionary_add_or_create_if_exists_with_data(dact,"dialog",dialog);
+ if (gtk_notebook_get_current_page(GTK_NOTEBOOK(widgets->MainNotebook))==2){
+ gtk_label_set_text(GTK_LABEL(dialog->TitleLabel),DELETE_CONFIRMATION_CONFIRM_LABEL);
+ gtk_label_set_text(GTK_LABEL(dialog->HatLabel),DELETE_CONFIRMATION_TITLE_LABEL);
+ yon_gtk_window_setup(GTK_WINDOW(dialog->Window),GTK_WINDOW(widgets->Window),DELETE_CONFIRMATION_TITLE_LABEL,icon_path,"delete-system-user-window");
+ g_signal_connect(G_OBJECT(dialog->AcceptButton),"clicked",G_CALLBACK(on_delete_system_user),dact);
+ GtkTreeModel *model = gtk_tree_view_get_model(GTK_TREE_VIEW(widgets->SystemTree));
+ GtkTreeIter iter;
+ if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->SystemTree)),&model,&iter)){
+ char *name,*username,*homedir=NULL;
+ gtk_tree_model_get(model,&iter,2,&name,3,&username,6,&homedir,-1);
+ gtk_list_store_append(dialog->list,&iter);
+ gtk_list_store_set(dialog->list,&iter,0,1,1,name,2,homedir,4,!yon_char_is_empty(homedir),5,username,-1);
+ gtk_widget_show(dialog->Window);
+ }
+
+ } else {
+ GtkTreeModel *model = gtk_tree_view_get_model(GTK_TREE_VIEW(widgets->SystemGroupsTree));
+ GtkTreeIter iter;
+ if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->SystemGroupsTree)),&model,&iter)){
+ yon_gtk_window_setup(GTK_WINDOW(dialog->Window),GTK_WINDOW(widgets->Window),DELETE_GROUP_CONFIRMATION_TITLE_LABEL,icon_path,"delete-system-gruop-window");
+ g_signal_connect(G_OBJECT(dialog->AcceptButton),"clicked",G_CALLBACK(on_delete_system_group),dact);
+ gtk_widget_show(window->AcceptButton);
+ gtk_widget_hide(window->ConfigAcceptButton);
+ gtk_widget_hide(window->SystemAcceptButton);
+ char *name;
+ gtk_label_set_text(GTK_LABEL(window->TitleLabel),DELETE_GROUP_CONFIRMATION_CONFIRM_LABEL);
+ gtk_label_set_text(GTK_LABEL(dialog->HatLabel),DELETE_GROUP_CONFIRMATION_TITLE_LABEL);
+ gtk_tree_view_column_set_title(dialog->UserCell,GROUP_LABEL);
+ gtk_tree_view_column_set_visible(gtk_tree_view_get_column(GTK_TREE_VIEW(dialog->DeletionTree),2),0);
+ gtk_tree_view_column_set_visible(gtk_tree_view_get_column(GTK_TREE_VIEW(dialog->DeletionTree),3),0);
+ gtk_tree_view_column_set_visible(gtk_tree_view_get_column(GTK_TREE_VIEW(dialog->DeletionTree),4),0);
+
+ gtk_tree_model_get(model,&iter,1,&name,-1);
+ gtk_list_store_append(dialog->list,&iter);
+ gtk_list_store_set(dialog->list,&iter,0,1,1,name,-1);
+ gtk_widget_show(dialog->Window);
+ }
+ }
+ }
+ on_subwindow_close(self);
+}
+
+system_remove_confirmation_window *yon_system_remove_confirmation_window_new(){
+ system_remove_confirmation_window *window = malloc(sizeof(system_remove_confirmation_window));
+ GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_ubl_settings_usergroups_system_deletion_confirmation);
+
+ window->Window = yon_gtk_builder_get_widget(builder,"Window");
+ window->HeaderLabel = yon_gtk_builder_get_widget(builder,"HeaderLabel");
+ window->CancelButton = yon_gtk_builder_get_widget(builder,"CancelButton");
+ window->StatusBox = yon_gtk_builder_get_widget(builder,"StatusBox");
+ window->TitleLabel = yon_gtk_builder_get_widget(builder,"TitleLabel");
+ window->AcceptButton = yon_gtk_builder_get_widget(builder,"AcceptButton");
+ window->ConfigAcceptButton = yon_gtk_builder_get_widget(builder,"ConfigAcceptButton");
+ window->SystemAcceptButton = yon_gtk_builder_get_widget(builder,"SystemAcceptButton");
+
+ g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
+
+ return window;
+}
\ No newline at end of file
diff --git a/source/ubl-settings-usergroups-user.c b/source/ubl-settings-usergroups-user.c
new file mode 100644
index 0000000..c7ced30
--- /dev/null
+++ b/source/ubl-settings-usergroups-user.c
@@ -0,0 +1,656 @@
+#include "ubl-settings-usergroups.h"
+
+void on_parameter_changed(GtkWidget *,ubl_settings_usergroups_user_window *window){
+ char *user_shell=NULL;
+ char *user_home=NULL;
+ char *login=NULL;
+ char *create_system_user=NULL;
+ char *create_ununique=NULL;
+ char *do_not_check=NULL;
+ char *main_group=NULL;
+ char *no_user_group=NULL;
+
+ int do_not_check_actve = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->userDontCheckCheck));
+ if (do_not_check_actve)
+ do_not_check = "--badnames";
+
+ login = (char*)gtk_entry_get_text(GTK_ENTRY(window->userLoginEntry));
+ if (login[0]>'0'&&login[0]<'9'&&!do_not_check_actve){
+ yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),USER_BEGINS_WITH_DIGIT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
+ gtk_notebook_set_current_page(GTK_NOTEBOOK(window->MainNotebook),0);
+ yon_ubl_status_highlight_incorrect(window->userLoginEntry);
+ return;
+ }
+ if (yon_char_is_empty(login)){
+ yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
+ gtk_notebook_set_current_page(GTK_NOTEBOOK(window->MainNotebook),0);
+ yon_ubl_status_highlight_incorrect(window->userLoginEntry);
+ return;
+ }
+
+ int user_shell_active = gtk_combo_box_get_active(GTK_COMBO_BOX(window->userShellCombo));
+ if (user_shell_active>0){
+ user_shell = yon_char_unite("--shell ",!strcmp(gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->userShellCombo)),"Set")?(char*)gtk_entry_get_text(GTK_ENTRY(window->userShellEntry)):(char*)gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(window->userShellCombo)),NULL);
+
+ } else user_shell="";
+
+ int user_home_active = gtk_combo_box_get_active(GTK_COMBO_BOX(window->userHomeCombo));
+ if (user_home_active==2){
+ char *path = (char*)gtk_entry_get_text(GTK_ENTRY(window->userHomeEntry));
+ if (!yon_char_is_empty(path))
+ user_home=yon_char_unite("--home-dir ",path,NULL);
+ else user_home = "";
+ } else if (user_home_active==1){
+ user_home="--no-create-home";
+ } else user_home = "";
+
+ int system_user_active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->userCreateSystemCheck));
+ if (system_user_active)
+ create_system_user = "--system";
+
+ int create_ununique_active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->userCreateUnuniqueCheck));
+ if (create_ununique_active)
+ create_ununique = "--non-unique";
+ int main_group_active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->userGroupsCheck));
+ if (!main_group_active){
+ main_group = (char*)gtk_entry_get_text(GTK_ENTRY(window->userGroupsEntry));
+ if (yon_char_is_empty(main_group)){
+ no_user_group="--no-user-group";
+ }
+ } else {
+ main_group = "";
+ }
+ char *final_string = user_home;
+ final_string = yon_char_unite(final_string,!yon_char_is_empty(final_string)?" ":"",
+ yon_char_return_if_exist(user_shell,""),
+ !yon_char_is_empty(user_shell)?" ":"",
+ yon_char_return_if_exist(create_system_user,""),
+ !yon_char_is_empty(create_system_user)?" ":"",
+ yon_char_return_if_exist(create_ununique,""),
+ !yon_char_is_empty(create_ununique)?" ":"",
+ yon_char_return_if_exist(do_not_check,""),
+ !yon_char_is_empty(do_not_check)?" ":"",
+ yon_char_return_if_exist(no_user_group,""),
+ NULL);
+ if (final_string&&strlen(final_string)){
+ if (final_string[strlen(final_string)-1]==' ') final_string[strlen(final_string)-1]='\0';
+ gtk_entry_set_text(GTK_ENTRY(window->userExtraOptionsEntry),final_string);
+ free(final_string);
+ } else {
+ gtk_entry_set_text(GTK_ENTRY(window->userExtraOptionsEntry),"");
+ }
+}
+
+ubl_settings_usergroups_user_window *yon_ubl_settings_usergroups_user_new(){
+ ubl_settings_usergroups_user_window *window = malloc(sizeof(ubl_settings_usergroups_user_window));
+ GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_ubl_settings_usergroups_user);
+ window->CreateUserWindow=yon_gtk_builder_get_widget(builder,"CreateUserWindow");
+ window->StatusBox=yon_gtk_builder_get_widget(builder,"StatusBox");
+ window->userUIDAutoCheck=yon_gtk_builder_get_widget(builder,"userUIDAutoCheck");
+ window->userUIDEntry=yon_gtk_builder_get_widget(builder,"userUIDEntry");
+ window->userLoginEntry=yon_gtk_builder_get_widget(builder,"userLoginEntry");
+ window->userPasswordCombo=yon_gtk_builder_get_widget(builder,"userPasswordCombo");
+ window->userPasswordEntry=yon_gtk_builder_get_widget(builder,"userPasswordEntry");
+ window->userPasswordButton=yon_gtk_builder_get_widget(builder,"userPasswordButton");
+ window->userUserNameEntry=yon_gtk_builder_get_widget(builder,"userUserNameEntry");
+ window->userGroupsCheck=yon_gtk_builder_get_widget(builder,"userGroupsCheck");
+ window->userGroupsEntry=yon_gtk_builder_get_widget(builder,"userGroupsEntry");
+ window->UserGroupsButton=yon_gtk_builder_get_widget(builder,"UserGroupsButton");
+ window->userAdditionalGroupsEntry=yon_gtk_builder_get_widget(builder,"userAdditionalGroupsEntry");
+ window->userAdditionalGroupsButton=yon_gtk_builder_get_widget(builder,"userAdditionalGroupsButton");
+ window->userPasswordChangedEntry=yon_gtk_builder_get_widget(builder,"userPasswordChangedEntry");
+ window->userPasswordExpirationEntry=yon_gtk_builder_get_widget(builder,"userPasswordExpirationEntry");
+ window->userPasswordExpirationButton=yon_gtk_builder_get_widget(builder,"userPasswordExpirationButton");
+ window->userPasswordChangeDelayMinimumSpin=yon_gtk_builder_get_widget(builder,"userPasswordChangeDelayMinimumSpin");
+ window->userPasswordChangeDelayMaximumSpin=yon_gtk_builder_get_widget(builder,"userPasswordChangeDelayMaximumSpin");
+ window->userWarningSpin=yon_gtk_builder_get_widget(builder,"userWarningSpin");
+ window->userActivitySpin=yon_gtk_builder_get_widget(builder,"userActivitySpin");
+ window->userForceChangeCheck=yon_gtk_builder_get_widget(builder,"userForceChangeCheck");
+ window->userShellCombo=yon_gtk_builder_get_widget(builder,"userShellCombo");
+ window->userShellEntry=yon_gtk_builder_get_widget(builder,"userShellEntry");
+ window->userHomeCombo=yon_gtk_builder_get_widget(builder,"userHomeCombo");
+ window->userHomeEntry=yon_gtk_builder_get_widget(builder,"userHomeEntry");
+ window->userHomeButton=yon_gtk_builder_get_widget(builder,"userHomeButton");
+ window->userCreateSystemCheck=yon_gtk_builder_get_widget(builder,"userCreateSystemCheck");
+ window->userCreateUnuniqueCheck=yon_gtk_builder_get_widget(builder,"userCreateUnuniqueCheck");
+ window->userDontCheckCheck=yon_gtk_builder_get_widget(builder,"userDontCheckCheck");
+ window->userSyncSAMBACheck=yon_gtk_builder_get_widget(builder,"userSyncSAMBACheck");
+ window->userSyncSAMBAPasswordCheck=yon_gtk_builder_get_widget(builder,"userSyncSAMBAPasswordCheck");
+ window->userDeactivatedCheck=yon_gtk_builder_get_widget(builder,"userDeactivatedCheck");
+ window->userExtraOptionsEntry=yon_gtk_builder_get_widget(builder,"userExtraOptionsEntry");
+ window->UserCancelButton=yon_gtk_builder_get_widget(builder,"UserCancelButton");
+ window->UserOkButton=yon_gtk_builder_get_widget(builder,"UserOkButton");
+ window->CalendarPopup=yon_gtk_builder_get_widget(builder,"CalendarPopover");
+ window->UseraddBootCheck=yon_gtk_builder_get_widget(builder,"UseraddBootCheck");
+ window->ExpirationCalendar=yon_gtk_builder_get_widget(builder,"ExpirationCalendar");
+ window->UseraddShutdownCheck=yon_gtk_builder_get_widget(builder,"UseraddShutdownCheck");
+ window->UsershadowBootCheck=yon_gtk_builder_get_widget(builder,"UsershadowBootCheck");
+ window->UsershadowShutdownCheck=yon_gtk_builder_get_widget(builder,"UsershadowShutdownCheck");
+ window->userTitleNameLabel=yon_gtk_builder_get_widget(builder,"userTitleNameLabel");
+ window->MainNotebook=yon_gtk_builder_get_widget(builder,"MainNotebook");
+ window->expiration_unix=NULL;
+ window->last_uid=NULL;
+
+ time_t t = time(NULL);
+ struct tm tm = *localtime(&t);
+ gtk_calendar_select_day(GTK_CALENDAR(window->ExpirationCalendar),tm.tm_mday);
+ gtk_calendar_select_month(GTK_CALENDAR(window->ExpirationCalendar),tm.tm_mon,1900+tm.tm_year);
+
+ on_UID_update(NULL,window);
+ int shell_size=0;
+ config_str shells = yon_file_open(shell_list_path,&shell_size);
+ for (int i=1;iuserShellCombo),parsed[0],parsed[0]);
+ yon_char_parsed_free(parsed,parsed_size);
+ }
+ }
+ gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(window->userShellCombo),"Set",SET_LABEL);
+ yon_char_parsed_free(shells,shell_size);
+ gtk_combo_box_set_active(GTK_COMBO_BOX(window->userShellCombo),0);
+ window->old_password=NULL;
+ window->old_username=NULL;
+ dictionary *entry_dict = NULL;
+
+ struct target_struct *target = malloc(sizeof(struct target_struct));
+ target->target=GTK_ENTRY(window->userGroupsEntry);
+ target->defaut_toggle=GTK_TOGGLE_BUTTON(window->userGroupsCheck);
+ yon_window_config_custom_window_setup(GTK_WINDOW(window->CreateUserWindow),"UserWindow");
+ yon_dictionary_add_or_create_if_exists_with_data(entry_dict,"combo",window->userPasswordCombo);
+ yon_dictionary_add_or_create_if_exists_with_data(entry_dict,"entry",window->userPasswordEntry);
+ // char *password = yon_config_get_by_key(USERADD((char*)gtk_entry_get_text(GTK_ENTRY(window->userLoginEntry))));
+ g_signal_connect(G_OBJECT(window->UserCancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
+ g_signal_connect(G_OBJECT(window->userUIDAutoCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button_inversed),window->userUIDEntry);
+ g_signal_connect(G_OBJECT(window->userHomeButton),"clicked",G_CALLBACK(on_filechooser_open),window->userHomeEntry);
+ g_signal_connect(G_OBJECT(window->UserGroupsButton),"clicked",G_CALLBACK(on_groups_clicked),target);
+ g_signal_connect(G_OBJECT(window->userPasswordButton),"clicked",G_CALLBACK(on_password_change),entry_dict);
+ g_signal_connect(G_OBJECT(window->userAdditionalGroupsButton),"clicked",G_CALLBACK(on_groups_multiple_clicked),window->userAdditionalGroupsEntry);
+ g_signal_connect(G_OBJECT(window->userPasswordExpirationButton),"clicked",G_CALLBACK(on_expiration_clicked),window);
+ g_signal_connect(G_OBJECT(window->userUIDAutoCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button_inversed),window->userUIDEntry);
+ g_signal_connect(G_OBJECT(window->userHomeCombo),"changed",G_CALLBACK(on_password_combo_changed),window->userHomeEntry);
+ g_signal_connect(G_OBJECT(window->userHomeCombo),"changed",G_CALLBACK(on_password_combo_changed),window->userHomeButton);
+ g_signal_connect(G_OBJECT(window->userPasswordCombo),"changed",G_CALLBACK(on_password_combo_changed),window->userPasswordButton);
+ g_signal_connect(G_OBJECT(window->userGroupsCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button_inversed),window->userGroupsEntry);
+ g_signal_connect(G_OBJECT(window->userGroupsCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button_inversed),window->UserGroupsButton);
+ g_signal_connect(G_OBJECT(window->userShellCombo),"changed",G_CALLBACK(on_user_shell_changed),window);
+ g_signal_connect(G_OBJECT(window->ExpirationCalendar),"day-selected",G_CALLBACK(on_date_selected),window);
+ g_signal_connect(G_OBJECT(window->userUIDAutoCheck),"toggled",G_CALLBACK(on_UID_update),window);
+ g_signal_connect(G_OBJECT(window->userCreateSystemCheck),"toggled",G_CALLBACK(on_UID_update),window);
+ g_signal_connect(G_OBJECT(window->userGroupsCheck),"toggled",G_CALLBACK(on_user_login_update),window);
+ g_signal_connect(G_OBJECT(window->userLoginEntry),"changed",G_CALLBACK(on_user_login_update),window);
+ g_signal_connect(G_OBJECT(window->userUIDAutoCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button),window->userCreateSystemCheck);
+ g_signal_connect(G_OBJECT(window->userUIDAutoCheck),"toggled",G_CALLBACK(yon_gtk_toggle_button_set_inactive_from_toggle_button),window->userCreateSystemCheck);
+ g_signal_connect(G_OBJECT(window->userUIDAutoCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button_inversed),window->userCreateUnuniqueCheck);
+ g_signal_connect(G_OBJECT(window->userUIDAutoCheck),"toggled",G_CALLBACK(yon_gtk_toggle_button_set_inactive_from_toggle_button_inversed),window->userCreateUnuniqueCheck);
+ g_signal_connect(G_OBJECT(window->userSyncSAMBACheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button_inversed),window->userSyncSAMBAPasswordCheck);
+ g_signal_connect(G_OBJECT(window->userSyncSAMBAPasswordCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button_inversed),window->userSyncSAMBACheck);
+ g_signal_connect(G_OBJECT(window->userSyncSAMBACheck),"toggled",G_CALLBACK(on_toggle_button_set_active_from_toggle_button_inversed),window);
+ g_signal_connect(G_OBJECT(window->userSyncSAMBAPasswordCheck),"toggled",G_CALLBACK(on_toggle_button_set_active_from_toggle_button_inversed),window);
+ g_signal_connect(G_OBJECT(window->userPasswordCombo),"changed",G_CALLBACK(on_toggle_button_set_active_from_combo_box),window);
+ g_signal_connect(G_OBJECT(window->userPasswordCombo),"changed",G_CALLBACK(on_toggle_button_set_active_from_combo_box),window);
+ g_signal_connect(G_OBJECT(window->userPasswordEntry),"changed",G_CALLBACK(on_password_user_changed),window);
+ g_signal_connect(G_OBJECT(window->userHomeEntry),"changed",G_CALLBACK(on_parameter_changed),window);
+ g_signal_connect(G_OBJECT(window->userHomeCombo),"changed",G_CALLBACK(on_parameter_changed),window);
+ g_signal_connect(G_OBJECT(window->userShellCombo),"changed",G_CALLBACK(on_parameter_changed),window);
+ g_signal_connect(G_OBJECT(window->userShellEntry),"changed",G_CALLBACK(on_parameter_changed),window);
+ g_signal_connect(G_OBJECT(window->userCreateSystemCheck),"toggled",G_CALLBACK(on_parameter_changed),window);
+ g_signal_connect(G_OBJECT(window->userCreateUnuniqueCheck),"toggled",G_CALLBACK(on_parameter_changed),window);
+ g_signal_connect(G_OBJECT(window->userDontCheckCheck),"toggled",G_CALLBACK(on_parameter_changed),window);
+ g_signal_connect(G_OBJECT(window->userGroupsCheck),"toggled",G_CALLBACK(on_parameter_changed),window);
+ g_signal_connect(G_OBJECT(window->userGroupsEntry),"changed",G_CALLBACK(on_parameter_changed),window);
+ g_signal_connect(G_OBJECT(window->userPasswordExpirationEntry),"icon-press",G_CALLBACK(on_remove_expired),window->userPasswordExpirationEntry);
+ g_signal_connect(G_OBJECT(window->userUIDEntry),"insert-text",G_CALLBACK(yon_on_text_insert_only_digits),NULL);
+return window;
+}
+
+void on_UID_update(GtkWidget *, ubl_settings_usergroups_user_window *window){
+ if (!gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->userUIDAutoCheck))){
+ if (window->last_uid){
+ gtk_entry_set_text(GTK_ENTRY(window->userUIDEntry),window->last_uid);
+ } else {
+ int config_size=0;
+ int final_size=0;
+ config_str config_users = yon_config_get_all_by_key(USERADD_SEARCH_macro,&config_size);
+ yon_char_parsed_prepend_strings(config_users,config_size,":");
+ config_str final = yon_char_parsed_merge(main_config.users,main_config.users_size,config_users,config_size,&final_size);
+ long prev_busy=gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->userCreateSystemCheck))?0:main_config.MINGID;
+ for (int i=0;iuserCreateUnuniqueCheck))?0:main_config.MINGID;
+ int maximum = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->userCreateUnuniqueCheck))?68000:main_config.MAXGID;
+ for (int i=0;iprev_busy){
+ prev_busy=atol(parsed[2]);
+ }
+ }
+ }
+ yon_char_parsed_free(parsed, parsed_size);
+ }
+ gtk_entry_set_text(GTK_ENTRY(window->userUIDEntry),yon_char_from_long(prev_busy+1));
+ }
+ } else {
+ gtk_entry_set_text(GTK_ENTRY(window->userUIDEntry),"");
+ }
+}
+
+void on_user_shell_changed(GtkWidget *, ubl_settings_usergroups_user_window *window){
+ const char *current = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(window->userShellCombo));
+ if (!yon_char_is_empty(current)&&!strcmp(current,SET_LABEL)){
+ if(gtk_combo_box_get_active(GTK_COMBO_BOX(window->userShellCombo))>1){
+ gtk_widget_set_sensitive(window->userShellEntry,1);
+ } else {
+ gtk_widget_set_sensitive(window->userShellEntry,0);
+ }
+ } else {
+ gtk_widget_set_sensitive(window->userShellEntry,0);
+ }
+}
+
+void on_user_login_update(GtkWidget *, ubl_settings_usergroups_user_window *window){
+ if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->userGroupsCheck))){
+ gtk_entry_set_text(GTK_ENTRY(window->userGroupsEntry),gtk_entry_get_text(GTK_ENTRY(window->userLoginEntry)));
+ } else {
+ gtk_entry_set_text(GTK_ENTRY(window->userGroupsEntry),"");
+ }
+}
+
+void on_user_save(GtkWidget *self, dictionary *dict){
+ main_window *widgets = yon_dictionary_get_data(dict->first,main_window*);
+ ubl_settings_usergroups_user_window *window = yon_dictionary_get_data(dict->first->next,ubl_settings_usergroups_user_window*);
+ char *final_user="";
+ char *uid_string = NULL;
+ char *password = NULL;
+ char *login = NULL;
+ char *username = NULL;
+ char *main_group = NULL;
+ char *additional_groups = NULL;
+ char *password_changed_date = NULL;
+ char *password_expiration_date = NULL;
+ char *password_change_interval_minimum = NULL;
+ char *password_change_interval_maximum = NULL;
+ char *warning_days = NULL;
+ char *no_activity_days = NULL;
+ int samba_sync = 0;
+ int samba_password_sync = 0;
+ int deactivate = 0;
+ char *extra_options = NULL;
+ char *useradd_boot = "";
+ char *useradd_shutdown = "";
+ char *usershadow_boot = "";
+ char *usershadow_shutdown = "";
+
+
+ int uid_auto_active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->userUIDAutoCheck));
+ if (uid_auto_active){
+ uid_string="";
+ } else {
+ int config_size=0;
+ int final_size=0;
+ config_str config_users = yon_config_get_all_by_key(USERADD_SEARCH_macro,&config_size);
+ yon_char_parsed_prepend_strings(config_users,config_size,":");
+ config_str final = yon_char_parsed_merge(main_config.users,main_config.users_size,config_users,config_size,&final_size);
+
+ uid_string = (char*)gtk_entry_get_text(GTK_ENTRY(window->userUIDEntry));
+ if (strcmp(uid_string,window->last_uid)){
+ if (!gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->userCreateUnuniqueCheck))){
+ int found=0;
+ for (int i=0;i2&&!strcmp(parsed[2],uid_string)){
+ if (yon_char_is_empty(window->last_uid)||(!yon_char_is_empty(window->last_uid)&&strcmp(parsed[2],window->last_uid))){
+ found = yon_char_parsed_check_exist(config_users,config_size,final[i])>-1?1:2;
+ break;
+ }
+ }
+
+ if (parsed_size) yon_char_parsed_free(parsed,parsed_size);
+ }
+ if (found){
+ yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),found==1?UID_ALREADY_EXIST_CONFIG_LABEL:UID_ALREADY_EXIST_SYSTEM_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
+ yon_ubl_status_highlight_incorrect(window->userUIDEntry);
+ gtk_notebook_set_current_page(GTK_NOTEBOOK(window->MainNotebook),0);
+ return;
+ }
+ }
+ }
+
+ if (yon_char_is_empty(uid_string)){
+ yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
+ yon_ubl_status_highlight_incorrect(window->userUIDEntry);
+ gtk_notebook_set_current_page(GTK_NOTEBOOK(window->MainNotebook),0);
+ return;
+ }
+ }
+
+ int do_not_check_actve = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->userDontCheckCheck));
+ login = (char*)gtk_entry_get_text(GTK_ENTRY(window->userLoginEntry));
+ if (yon_char_is_empty(login)){
+ yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
+ yon_ubl_status_highlight_incorrect(window->userLoginEntry);
+ return;
+
+ }
+ if (login[0]>'0'&&login[0]<'9'&&!do_not_check_actve){
+ yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),USER_BEGINS_WITH_DIGIT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
+ yon_ubl_status_highlight_incorrect(window->userLoginEntry);
+ return;
+ }
+ {
+ GtkTreeIter iter;
+ GtkTreeModel *model = GTK_TREE_MODEL(widgets->UsersList);
+ for_iter(model,&iter){
+ char *cur;
+ gtk_tree_model_get(model,&iter,2, &cur,-1);
+ if (!yon_char_is_empty(cur)&&!strcmp(cur,login)){
+ if (!gtk_tree_selection_iter_is_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->UsersTree)),&iter)){
+
+ yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),USER_EXIST_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
+ yon_ubl_status_highlight_incorrect(window->userLoginEntry);
+ gtk_notebook_set_current_page(GTK_NOTEBOOK(window->MainNotebook),0);
+ return;
+ }
+ }
+ }
+ }
+
+ int password_active = gtk_combo_box_get_active(GTK_COMBO_BOX(window->userPasswordCombo));
+ if (password_active > 1){
+ password = (char*)gtk_entry_get_text(GTK_ENTRY(window->userPasswordEntry));
+ if (yon_char_is_empty(password)){
+ yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
+ yon_ubl_status_highlight_incorrect(window->userPasswordEntry);
+ gtk_notebook_set_current_page(GTK_NOTEBOOK(window->MainNotebook),0);
+ return;
+ }
+ } else if (password_active==1){
+ password = "!*";
+ } else {
+ password="";
+ }
+
+ char *old_password = NULL;
+ if (window->old_password){
+ old_password = window->old_password;
+ yon_check_password_blocked(old_password);
+ }
+ if (!old_password||(old_password&&strcmp(old_password,password))){
+ time_t t = time(NULL);
+ struct tm tm = *localtime(&t);
+ char *month = yon_char_from_int(tm.tm_mon+1);
+ if (strlen(month)==1){
+ month=yon_char_append("0",month);
+ }
+ char *day = yon_char_from_int(tm.tm_mday);
+ if (strlen(day)<2){
+ day=yon_char_append("0",day);
+ }
+ password_changed_date = yon_char_unite(yon_char_from_int(1900+tm.tm_year),"-",month,"-",day,NULL);
+ } else {
+ password_changed_date = (char*)gtk_entry_get_text(GTK_ENTRY(window->userPasswordChangedEntry));
+ }
+
+ deactivate = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->userDeactivatedCheck));
+ if (deactivate){
+ if (strlen(password)>1&&password[0]=='%'&&password[1]=='%'){
+ char *temp = yon_char_replace(password,"%%","!!");
+ password = yon_char_replace(temp,"!!","%%!");
+ } else {
+ password = yon_char_append("!",password);
+ }
+ }
+
+ username = (char*)gtk_entry_get_text(GTK_ENTRY(window->userUserNameEntry));
+ if (yon_char_is_empty(username)){
+ username="";
+ }
+
+ int main_group_active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->userGroupsCheck));
+ if (!main_group_active){
+ main_group = (char*)gtk_entry_get_text(GTK_ENTRY(window->userGroupsEntry));
+ } else {
+ main_group = "";
+ }
+
+ additional_groups = (char*)gtk_entry_get_text(GTK_ENTRY(window->userAdditionalGroupsEntry));
+ char *default_groups = yon_config_get_by_key(USERGROUPS_parameter);
+ if (!yon_char_is_empty(default_groups)&&!strcmp(default_groups,additional_groups)){
+ additional_groups="";
+ }
+ long password_change_interval_minimum_active = gtk_spin_button_get_value(GTK_SPIN_BUTTON(window->userPasswordChangeDelayMinimumSpin));
+ if (password_change_interval_minimum_active>0){
+ password_change_interval_minimum = yon_char_from_long(password_change_interval_minimum_active);
+ } else password_change_interval_minimum = 0;
+
+ long password_change_interval_maximum_active = gtk_spin_button_get_value(GTK_SPIN_BUTTON(window->userPasswordChangeDelayMaximumSpin));
+ if (password_change_interval_minimum_active>0){
+ password_change_interval_maximum = yon_char_from_long(password_change_interval_maximum_active);
+ } else password_change_interval_maximum = 0;
+
+ password_expiration_date = (char*)gtk_entry_get_text(GTK_ENTRY(window->userPasswordExpirationEntry));
+ if (yon_char_is_empty(password_expiration_date)){
+ password_expiration_date="-1";
+ }
+
+ long warning_days_active = gtk_spin_button_get_value(GTK_SPIN_BUTTON(window->userWarningSpin));
+ if (warning_days_active>0)
+ warning_days = yon_char_from_long(warning_days_active);
+
+ int no_activity_days_active = gtk_spin_button_get_value(GTK_SPIN_BUTTON(window->userActivitySpin));
+ if (no_activity_days_active>0){
+ no_activity_days = yon_char_from_long(no_activity_days_active);
+ }
+
+ samba_sync = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->userSyncSAMBACheck));
+ samba_password_sync = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->userSyncSAMBAPasswordCheck));
+ if (samba_sync){
+ if (yon_samba_sync_get(login)==2)
+ yon_samba_sync_remove(login);
+ yon_samba_sync_add(login,NULL);
+ } else if (samba_password_sync){
+ if (yon_samba_sync_get(login)==1)
+ yon_samba_sync_remove(login);
+ yon_samba_sync_add(login,password);
+ } else {
+ yon_samba_sync_remove(login);
+ }
+
+ extra_options=(char*)gtk_entry_get_text(GTK_ENTRY(window->userExtraOptionsEntry));
+
+ int force_at_next_login_active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->userForceChangeCheck));
+ if (force_at_next_login_active){
+ password_changed_date = "0";
+ }
+
+ int useradd_boot_active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->UseraddBootCheck));
+ if (useradd_boot_active){
+ useradd_boot = "boot";
+ }
+
+ int useradd_shutdown_active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->UseraddShutdownCheck));
+ if (useradd_shutdown_active){
+ useradd_shutdown = "shutdown";
+ }
+
+ int usershadow_boot_active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->UsershadowBootCheck));
+ if (usershadow_boot_active){
+ usershadow_boot = "boot";
+ }
+
+ int usershadow_shutdown_active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->UsershadowShutdownCheck));
+ if (usershadow_shutdown_active){
+ usershadow_shutdown = "shutdown";
+ }
+
+
+ char *useradd_sync_string = NULL;
+ useradd_sync_string = yon_char_unite(useradd_boot,!yon_char_is_empty(useradd_boot)&&!yon_char_is_empty(useradd_shutdown)?",":"",useradd_shutdown,NULL);
+ char *usershadow_sync_string = NULL;
+ usershadow_sync_string = yon_char_unite(usershadow_boot,!yon_char_is_empty(usershadow_boot)?",":"",usershadow_shutdown,NULL);
+ char *shadow_string = NULL;
+ shadow_string = yon_char_unite(yon_char_return_if_exist(password_changed_date,""),
+ ":",yon_char_return_if_exist(password_change_interval_minimum,""),
+ ":",yon_char_return_if_exist(password_change_interval_maximum,""),
+ ":",yon_char_return_if_exist(warning_days,""),
+ ":",yon_char_return_if_exist(no_activity_days,""),
+ ":",yon_char_return_if_exist(password_expiration_date,""),
+ NULL);
+
+ final_user = yon_char_unite(yon_char_return_if_exist(username,""),
+ ":",yon_char_return_if_exist(uid_string,""),
+ ":",yon_char_return_if_exist(main_group,""),
+ ":",yon_char_return_if_exist(additional_groups,""),
+ ":",yon_char_return_if_exist(extra_options,""),
+ ":",yon_char_return_if_exist(password,""),
+ NULL);
+
+ char *final_command = yon_config_parameter_prepare_command(dull_parameter_get_command,NULL,"users",USERADD(login));
+ yon_config_register(USERADD(login),final_command,final_user);
+ if (!yon_char_is_empty(window->old_username)&&strcmp(window->old_username,login)){
+ yon_config_remove_by_key(USERADD(window->old_username));
+ }
+ if (window->old_password&&strcmp(window->old_password,password)){
+ final_command = yon_config_parameter_prepare_command(dull_parameter_get_command,NULL,"users",USERSHADOW(login));
+ yon_config_register(USERSHADOW(login),final_command,shadow_string);
+ if (!yon_char_is_empty(window->old_username)&&strcmp(window->old_username,login)){
+ yon_config_remove_by_key(USERSHADOW(window->old_username));
+ }
+ }
+ int home_delete = yon_char_parsed_check_exist(main_config.remove_homes,main_config.homes_size,login);
+ if (home_delete>-1){
+ main_config.remove_homes = yon_char_parsed_rip(main_config.remove_homes,&main_config.homes_size,home_delete);
+ }
+
+ if (!yon_char_is_empty(useradd_sync_string)){
+ final_command = yon_config_parameter_prepare_command(dull_parameter_get_command,NULL,"users",USERADD_SYNC(login));
+ yon_config_register(USERADD_SYNC(login),final_command,useradd_sync_string);
+ if (!yon_char_is_empty(window->old_username)&&strcmp(window->old_username,login)){
+ yon_config_remove_by_key(USERADD_SYNC(window->old_username));
+ }
+ } else {
+ yon_config_remove_by_key(USERADD_SYNC(window->old_username));
+ }
+
+ if (!yon_char_is_empty(usershadow_sync_string)){
+ final_command = yon_config_parameter_prepare_command(dull_parameter_get_command,NULL,"users",USERSHADOW_SYNC(login));
+ yon_config_register(USERSHADOW_SYNC(login),final_command,usershadow_sync_string);
+ if (!yon_char_is_empty(window->old_username)&&strcmp(window->old_username,login)){
+ yon_config_remove_by_key(USERSHADOW_SYNC(window->old_username));
+ }
+ } else {
+ yon_config_remove_by_key(USERSHADOW_SYNC(window->old_username));
+ }
+ yon_interface_update(widgets);
+
+ on_subwindow_close(self);
+}
+
+void on_user_sync_with_config(GtkWidget *,main_window *widgets){
+ int active = gtk_notebook_get_current_page(GTK_NOTEBOOK(widgets->MainNotebook));
+ switch (active){
+ case 2:{
+ GtkTreeModel *model = GTK_TREE_MODEL(widgets->liststore1);
+ GtkTreeIter iter;
+ if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->SystemTree)),&model,&iter)){
+ char *target;
+ gtk_tree_model_get(model,&iter,2,&target,-1);
+ dialog_confirmation_data data;
+ if (config(USERADD(target))){
+ data.action_text = SYSTEM_USER_SYNC_CONFIRMATION_LABEL(target);
+ data.data=NULL;
+ data.function=NULL;
+ } else {
+ data.action_text = SYSTEM_USER_ADD_CONFIRMATION_LABEL(target);
+ data.data=NULL;
+ data.function=NULL;
+ }
+ if (yon_confirmation_dialog_call(widgets->Window,&data)!=GTK_RESPONSE_ACCEPT){
+ return;
+ }
+
+ char *user = yon_char_parsed_check_exist_begins_with(main_config.groups,main_config.groups_size,target);
+ char *shadow = yon_char_parsed_check_exist_begins_with(main_config.group_shadow,main_config.group_shadow_size,target);
+ yon_char_remove_last_symbol(user,'\n');
+ yon_char_remove_last_symbol(shadow,'\n');
+ int user_size=0;
+ int shadow_size=0;
+ config_str parsed = yon_char_parse(user,&user_size,":");
+ config_str parsed_shadow = yon_char_parse(shadow,&shadow_size,":");
+
+ char *optionals = yon_char_unite(user_size>5? parsed[5]:"",user_size>5?" ":"",user_size>6?parsed[6]:"",NULL);
+ char *config_user = yon_char_unite(parsed[0],":",
+ user_size>4?parsed[4]:"",":",
+ user_size>2?parsed[2]:"",":",
+ user_size>3?parsed[3]:"",":",
+ !yon_char_is_empty(optionals)?optionals:"",":",
+ user_size>1&&strcmp(parsed[1],"x")?yon_char_return_if_exist(parsed[1],""):yon_char_return_if_exist(parsed_shadow[1],""),NULL);
+ char *config_shadow = yon_char_unite(yon_char_return_if_exist(parsed[2],""),":",
+ user_size>3?parsed[3]:"",":",
+ user_size>4?parsed[4]:"",":",
+ user_size>5?parsed[5]:"",":",
+ user_size>6?parsed[6]:"",":",
+ user_size>7?parsed[7]:"",":",NULL);
+
+ if (!yon_char_is_empty(config_user)){
+ char *user_command = yon_config_parameter_prepare_command(dull_parameter_get_command,NULL,"users",USERADD(target));
+ yon_config_register(USERADD(target),user_command,config_user);
+ }
+ if (!yon_char_is_empty(config_shadow)){
+ char *shadow_command = yon_config_parameter_prepare_command(dull_parameter_get_command,NULL,"users",USERSHADOW(target));
+ yon_config_register(USERSHADOW(target),shadow_command,config_shadow);
+ }
+ yon_interface_update(widgets);
+ }
+ yon_interface_update((main_window*)widgets);
+ }break;
+ case 3:{
+ GtkTreeModel *model = GTK_TREE_MODEL(widgets->liststore1);
+ GtkTreeIter iter;
+ if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->SystemGroupsTree)),&model,&iter)){
+
+ char *target;
+ gtk_tree_model_get(model,&iter,1,&target,-1);
+ dialog_confirmation_data data;
+ if (config(GROUPADD(target))){
+ data.action_text = SYSTEM_GROUP_ADD_CONFIRMATION_LABEL(target);
+ data.data=NULL;
+ data.function=NULL;
+ } else {
+ 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;
+ }
+ 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(yon_char_return_if_exist(parsed[3],""),
+ ":",yon_char_return_if_exist(parsed[2],""),
+ "::",yon_char_return_if_exist(parsed_shadow[2],""),
+ ":",strcmp(parsed[1],"x")?yon_char_return_if_exist(parsed[1],""):yon_char_return_if_exist(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;
+ }
+}
\ No newline at end of file
diff --git a/source/ubl-settings-usergroups.c b/source/ubl-settings-usergroups.c
index 167591a..68a9a09 100644
--- a/source/ubl-settings-usergroups.c
+++ b/source/ubl-settings-usergroups.c
@@ -5,7 +5,9 @@ config main_config;
//functions
int yon_load_proceed(YON_CONFIG_TYPE type){
- yon_config_clean();
+ if (type!=YON_CONFIG_CUSTOM){
+ yon_config_clean();
+ }
yon_config_load_config(YON_CONFIG_DEFAULT,config_get_default_command,NULL);
if (type==YON_CONFIG_GLOBAL){
yon_debug_output("%s\n",yon_char_unite(config_get_command("global"),NULL));
@@ -51,9 +53,14 @@ int yon_load_proceed(YON_CONFIG_TYPE type){
return 1;
}
else if (type==YON_CONFIG_CUSTOM){
- char *path=NULL;;
- GtkWidget *dialog = gtk_file_chooser_dialog_new(template_app_information.app_title,NULL,GTK_FILE_CHOOSER_ACTION_SAVE,CANCEL_LABEL,GTK_RESPONSE_CANCEL,OPEN_LABEL,GTK_RESPONSE_ACCEPT,NULL);
+ char *path=NULL;
+ textdomain(template_ui_LocaleName);
+ char *open_string = OPEN_LABEL;
+ textdomain(LocaleName);
+ GtkWidget *dialog = gtk_file_chooser_dialog_new(template_app_information.app_title,NULL,GTK_FILE_CHOOSER_ACTION_SAVE,CANCEL_LABEL,GTK_RESPONSE_CANCEL,open_string,GTK_RESPONSE_ACCEPT,NULL);
+ yon_gtk_window_setup(GTK_WINDOW(dialog),NULL,CHOOSE_CUSTOM_CONFIG_LABEL,icon_path,"config-open-window");
GtkFileFilter *filter = gtk_file_filter_new();
+ gtk_file_filter_set_name(filter,FILTER_NAME_CONFIG_LABEL);
gtk_file_filter_add_pattern(filter,"*.ini");
gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(dialog),filter);
gtk_widget_show(dialog);
@@ -63,12 +70,13 @@ int yon_load_proceed(YON_CONFIG_TYPE type){
if (!yon_char_is_empty(file)){
path=file;
}
+ yon_config_clean();
+ yon_config_load_config(type,config_get_command(path),NULL);
gtk_widget_destroy(dialog);
} else {
gtk_widget_destroy(dialog);
return 0;
}
- yon_config_load_config(type,config_get_command(path),NULL);
}
return 1;
}
@@ -127,7 +135,7 @@ void yon_interface_update(main_window *widgets){
}
free(users);
}
- config_str groups = yon_config_get_all_by_key(GROUPADD_parameter,&size);
+ config_str groups = yon_config_get_all_by_key(GROUPADD_SEARCH_macro,&size);
if (groups){
for (int i=0;iGroupsList,&iter);
@@ -150,6 +158,8 @@ void yon_interface_update(main_window *widgets){
if (parameters_size>4&&strcmp(parameters[4],"x")&&strcmp(parameters[4],"")){
if (!check_is_password_hash(parameters[4])&¶meters[4][0]!='%'&¶meters[4][1]!='%'){
pars = ENCRYPTED_LABEL;
+ } else if (!strcmp(parameters[4],"!*")||!strcmp(parameters[4],"*")||!strcmp(parameters[4],"!")){
+ pars = NO_PASSWORD_LABEL;
} else {
pars = UNENCRYPTED_LABEL;
@@ -160,8 +170,8 @@ void yon_interface_update(main_window *widgets){
}
gtk_list_store_set(widgets->GroupsList,&iter,
1,login,
- 0,parameters_size>2?parameters[2]:"",
- 2,parameters_size>1?parameters[1]:"",
+ 0,parameters_size>2?parameters[1]:"",
+ 2,parameters_size>1?parameters[0]:"",
3,parameters_size>3?parameters[3]:"",
4,pars,
-1);
@@ -170,14 +180,45 @@ void yon_interface_update(main_window *widgets){
}
}
- if (main_config.groups_size>0){
- yon_char_parsed_free(main_config.groups,main_config.groups_size);
- main_config.groups = yon_file_open(groups_path,&main_config.groups_size);
- }
- if (main_config.users_size>0){
- yon_char_parsed_free(main_config.users,main_config.users_size);
- main_config.users = yon_file_open(users_path,&main_config.users_size);
- }
+
+ yon_system_load(widgets);
+
+
+ if (!yon_window_config_check_exist("window","UserColumn1")){
+ yon_gtk_tree_view_set_fixed_size(GTK_TREE_VIEW(widgets->UsersTree), 1,-1);
+
+ }
+ if (!yon_window_config_check_exist("window","UserColumn2")){
+ yon_gtk_tree_view_set_fixed_size(GTK_TREE_VIEW(widgets->UsersTree), 2,-1);
+ }
+ if (!yon_window_config_check_exist("window","UserColumn3")){
+ yon_gtk_tree_view_set_fixed_size(GTK_TREE_VIEW(widgets->UsersTree), 3,-1);
+ }
+
+ if (!yon_window_config_check_exist("window","GroupColumn1")){
+ yon_gtk_tree_view_set_fixed_size(GTK_TREE_VIEW(widgets->GroupsTree),1,-1);
+ }
+ if (!yon_window_config_check_exist("window","GroupColumn2")){
+ yon_gtk_tree_view_set_fixed_size(GTK_TREE_VIEW(widgets->GroupsTree),2,-1);
+ }
+
+ if (!yon_window_config_check_exist("window","SystemUserColumn1")){
+ yon_gtk_tree_view_set_fixed_size(GTK_TREE_VIEW(widgets->SystemTree),1,-1);
+ }
+ if (!yon_window_config_check_exist("window","SystemUserColumn2")){
+ yon_gtk_tree_view_set_fixed_size(GTK_TREE_VIEW(widgets->SystemTree),2,-1);
+ }
+ if (!yon_window_config_check_exist("window","SystemUserColumn3")){
+ yon_gtk_tree_view_set_fixed_size(GTK_TREE_VIEW(widgets->SystemTree),3,-1);
+ }
+
+ if (!yon_window_config_check_exist("window","SystemGroupColumn2")){
+ yon_gtk_tree_view_set_fixed_size(GTK_TREE_VIEW(widgets->SystemGroupsTree),1,-1);
+ }
+ if (!yon_window_config_check_exist("window","SystemGroupColumn2")){
+ yon_gtk_tree_view_set_fixed_size(GTK_TREE_VIEW(widgets->SystemGroupsTree),2,-1);
+ }
+
}
void on_config_local_load(GtkWidget *, main_window *widgets){
@@ -226,13 +267,33 @@ if (main_config.sync_users){
}
void yon_accept_changes(){
- char *remove_homes = "";
- for (int i=0;i0){
+ char *final = NULL;
+ char *temp;
+ for (int i=0;i5&&!yon_char_is_empty(parsed[5])&&strcmp(parsed[5],"x")) {
free(new_value);
free(yon_char_divide(parsed[5],1));
- new_value = yon_char_parsed_to_string(parsed,size,":");
+ new_value = yon_char_parsed_to_string_include_empty(parsed,size,":");
}
if (parsed){
yon_char_parsed_free(parsed,size);
@@ -268,15 +329,14 @@ void yon_hide_passwords(template_saving_window *window){
if(!yon_char_is_empty(old_value)){
config_str parsed = NULL;
parsed = yon_char_parse(old_value,&size,":");
- if (size>5&&!yon_char_is_empty(parsed[5])&&strcmp(parsed[5],"x")&&parsed[5][0]!='%'&&parsed[5][1]!='%'){
+ if (size>5&&!yon_char_is_empty(parsed[5])&&!check_is_password_hash(parsed[5])){
free(old_value);
free(parsed[5]);
parsed[5]=yon_char_new("*******");
- old_value = yon_char_parsed_to_string(parsed,size,":");
+ old_value = yon_char_parsed_to_string_include_empty(parsed,size,":");
} else if (size>5&&!yon_char_is_empty(parsed[5])&&strcmp(parsed[5],"x")) {
free(old_value);
- free(yon_char_divide(parsed[5],1));
- old_value = yon_char_parsed_to_string(parsed,size,":");
+ old_value = yon_char_parsed_to_string_include_empty(parsed,size,":");
}
if (parsed){
yon_char_parsed_free(parsed,size);
@@ -301,7 +361,7 @@ void yon_hide_passwords(template_saving_window *window){
free(parsed[4]);
parsed[4]=yon_char_new("*******");
}
- new_value = yon_char_parsed_to_string(parsed,size,":");
+ new_value = yon_char_parsed_to_string_include_empty(parsed,size,":");
}
if(!yon_char_is_empty(old_value)){
config_str parsed = NULL;
@@ -310,11 +370,11 @@ void yon_hide_passwords(template_saving_window *window){
free(old_value);
free(parsed[4]);
parsed[4]=yon_char_new("*******");
- old_value = yon_char_parsed_to_string(parsed,size,":");
+ old_value = yon_char_parsed_to_string_include_empty(parsed,size,":");
} else if (size>4&&!yon_char_is_empty(parsed[4])&&strcmp(parsed[4],"x")) {
free(old_value);
free(yon_char_divide(parsed[4],1));
- old_value = yon_char_parsed_to_string(parsed,size,":");
+ old_value = yon_char_parsed_to_string_include_empty(parsed,size,":");
}
if (parsed){
yon_char_parsed_free(parsed,size);
@@ -406,6 +466,9 @@ void on_save_done(main_window *widgets, config_str output, int size){
case 2:
yon_ubl_status_box_render(GLOBAL_LOCAL_SAVE_SUCCESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE);
break;
+ case 3:
+ yon_ubl_status_box_render(SAVE_SUCCESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE);
+
}
textdomain(LocaleName);
@@ -419,57 +482,6 @@ void on_config_save(GtkWidget *, main_window *){
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){
- GtkTreeIter iter;
- int valid = gtk_tree_model_get_iter_first(GTK_TREE_MODEL(window->list),&iter);
- for(;valid;valid = gtk_tree_model_iter_next(GTK_TREE_MODEL(window->list),&iter)){
- char *parameter,*old_value, *new_value;
- gtk_tree_model_get(GTK_TREE_MODEL(window->list),&iter,1,¶meter,2,&old_value,3,&new_value,-1);
- int old_size, new_size;
- config_str old_parsed = yon_char_parse(old_value,&old_size,":");
- config_str new_parsed = yon_char_parse(new_value,&new_size,":");
- if (old_parsed&&new_parsed){
- char *parameter_type = yon_char_divide_search(parameter,"[",-1);
- if (!strcmp(parameter_type,USERADD_parameter)){
- if (old_size>5){
- old_parsed = yon_char_parsed_rip(old_parsed,&old_size,5);
-
- }
- if (new_size>5){
- new_parsed = yon_char_parsed_rip(new_parsed,&new_size,5);
- }
- char *old_final = yon_char_parsed_to_string(old_parsed,old_size,":");
- char *new_final = yon_char_parsed_to_string(new_parsed,new_size,":");
- if (old_final&&new_final&&!strcmp(old_final,new_final)){
- gtk_list_store_set(window->list,&iter,5,0,-1);
- }
- free(old_final);
- free(new_final);
- yon_char_parsed_free(old_parsed,old_size);
- yon_char_parsed_free(new_parsed,new_size);
-
- } else if (!strcmp(parameter_type,GROUPADD_parameter)){
- if (old_size>3){
- old_parsed = yon_char_parsed_rip(old_parsed,&old_size,3);
-
- }
- if (new_size>3){
- new_parsed = yon_char_parsed_rip(new_parsed,&new_size,3);
- }
- char *old_final = yon_char_parsed_to_string(old_parsed,old_size,":");
- char *new_final = yon_char_parsed_to_string(new_parsed,new_size,":");
- if (!strcmp(old_final,new_final)){
- gtk_list_store_set(window->list,&iter,5,0,-1);
- }
- free(old_final);
- free(new_final);
- yon_char_parsed_free(old_parsed,old_size);
- yon_char_parsed_free(new_parsed,new_size);
-
- }
- }
- }
- }
yon_hide_passwords(window);
}
}
@@ -496,7 +508,7 @@ void on_config_local_save(GtkWidget *, main_window *){
if (parsed_size>5&&!yon_char_is_empty(parsed[5])){
yon_char_parsed_add_or_create_if_exists(passwords,&passw_size,yon_char_new(parsed[5]));
parsed = yon_char_parsed_rip(parsed,&parsed_size,5);
- char *final_string = yon_char_parsed_to_string(parsed,parsed_size,":");
+ char *final_string = yon_char_parsed_to_string_include_empty(parsed,parsed_size,":");
char *temp = yon_char_append(final_string,":");
free(final_string);
final_string=temp;
@@ -517,7 +529,7 @@ void on_config_local_save(GtkWidget *, main_window *){
}
void on_config_custom_save(GtkWidget *, main_window *){
- main_config.save_config=1;
+ main_config.save_config=3;
template_saving_window *window = yon_save_proceed(NULL,YON_CONFIG_CUSTOM,config_get_command("system"),NULL);
if (window){
yon_hide_passwords(window);
@@ -574,9 +586,10 @@ void on_delete_confirmation_delete_home_check(GtkCellRenderer *, char *path, yon
void on_delete_confirmation_delete_check(GtkCellRenderer *, char *path, yon_confirmation_window *window){
GtkTreeIter iter;
gboolean status;
+ char *homedir;
gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(window->list),&iter,path);
- gtk_tree_model_get(GTK_TREE_MODEL(window->list),&iter,0,&status,-1);
- gtk_list_store_set(window->list,&iter,0,!status,-1);
+ gtk_tree_model_get(GTK_TREE_MODEL(window->list),&iter,0,&status,2,&homedir,-1);
+ gtk_list_store_set(window->list,&iter,0,!status,4,!status&&!yon_char_is_empty(homedir),-1);
}
@@ -597,6 +610,9 @@ void yon_delete_confirmation_save(GtkWidget *self, dictionary *dict){
gtk_list_store_remove(widgets->UsersList,&iter);
yon_config_remove_by_key(USERADD(name));
yon_config_remove_by_key(USERSHADOW(name));
+ yon_config_register(USERADD_SYNC(name),USERADD_SYNC_command(name),"");
+ yon_config_remove_by_key(USERADD_SYNC(name));
+ yon_config_remove_by_key(USERSHADOW_SYNC(name));
gtk_tree_model_get_iter_first(GTK_TREE_MODEL(widgets->UsersList),&iter);
if (status){
if (yon_char_parsed_check_exist(main_config.remove_homes,main_config.homes_size,name)==-1){
@@ -630,68 +646,6 @@ void yon_delete_confirmation_save(GtkWidget *self, dictionary *dict){
on_subwindow_close(self);
}
-void yon_group_delete_confirmation_save(GtkWidget *self, dictionary *dict){
- GtkTreeIter iter,itar;
- main_window *widgets = yon_dictionary_get_data(dict->first,main_window*);
- yon_confirmation_window *window = yon_dictionary_get_data(dict->first->next,yon_confirmation_window*);
- int valid = gtk_tree_model_get_iter_first(GTK_TREE_MODEL(widgets->GroupsList),&iter);
- for (;valid;valid = gtk_tree_model_iter_next(GTK_TREE_MODEL(widgets->GroupsList),&iter)){
- char *name;
- gtk_tree_model_get(GTK_TREE_MODEL(widgets->GroupsList),&iter,1,&name,-1);
- 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)){
- char *name_check;
- int delete;
- gtk_tree_model_get(GTK_TREE_MODEL(window->list),&itar,0,&delete,1,&name_check,-1);
- if (!strcmp(name,name_check)&&delete){
- gtk_list_store_remove(widgets->GroupsList,&iter);
- yon_config_remove_by_key(GROUPADD(name));
- gtk_tree_model_get_iter_first(GTK_TREE_MODEL(widgets->GroupsList),&iter);
- }
- }
- }
- char *name;
- if (gtk_tree_model_get_iter_first(GTK_TREE_MODEL(widgets->GroupsList),&iter)){
- gtk_tree_model_get(GTK_TREE_MODEL(widgets->GroupsList),&iter,1,&name,-1);
- 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)){
- char *name_check;
- int status,delete;
- gtk_tree_model_get(GTK_TREE_MODEL(window->list),&itar,0,&delete,1,&name_check,3,&status,-1);
- if (!strcmp(name,name_check)&&delete){
- gtk_list_store_remove(widgets->GroupsList,&iter);
- yon_config_remove_by_key(GROUPADD(name));
- gtk_tree_model_get_iter_first(GTK_TREE_MODEL(widgets->GroupsList),&iter);
- 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);
- }
- }
- }
- }
- }
- 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;
- }
- }
- return 0;
-}
yon_confirmation_window *yon_delete_confirmation_new(){
yon_confirmation_window *window = malloc(sizeof(yon_confirmation_window));
@@ -716,17 +670,46 @@ yon_confirmation_window *yon_delete_confirmation_new(){
}
void yon_system_delete_confirmation_open(main_window *widgets){
- yon_confirmation_window *window = yon_delete_confirmation_new();
- gtk_window_set_transient_for(GTK_WINDOW(window->Window),GTK_WINDOW(widgets->Window));
- GtkTreeIter iter;
- dictionary *dict = NULL;
- yon_dictionary_add_or_create_if_exists_with_data(dict,"widgets",widgets);
- yon_dictionary_add_or_create_if_exists_with_data(dict,"window",window);
- g_signal_connect(G_OBJECT(window->AcceptButton),"clicked",G_CALLBACK(yon_delete_confirmation_save),dict);
- GtkTreeModel *model = GTK_TREE_MODEL(widgets->liststore1);
- if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->SystemTree)),&model,&iter)){
- // gtk_tree_model_get(model,&iter,1,,2,,)
- }
+ yon_confirmation_window *dialog = yon_delete_confirmation_new();
+ dictionary *dact = NULL;
+ yon_dictionary_add_or_create_if_exists_with_data(dact,"widgets",widgets);
+ yon_dictionary_add_or_create_if_exists_with_data(dact,"dialog",dialog);
+ if (gtk_notebook_get_current_page(GTK_NOTEBOOK(widgets->MainNotebook))==2){
+ g_signal_connect(G_OBJECT(dialog->AcceptButton),"clicked",G_CALLBACK(on_delete_system_user),dact);
+ gtk_label_set_text(GTK_LABEL(dialog->TitleLabel),DELETE_CONFIRMATION_CONFIRM_LABEL);
+ gtk_label_set_text(GTK_LABEL(dialog->HatLabel),DELETE_CONFIRMATION_TITLE_LABEL);
+ yon_gtk_window_setup(GTK_WINDOW(dialog->Window),GTK_WINDOW(widgets->Window),DELETE_CONFIRMATION_TITLE_LABEL,icon_path,"system-user-deletion-window");
+ GtkTreeModel *model = gtk_tree_view_get_model(GTK_TREE_VIEW(widgets->SystemTree));
+ GtkTreeIter iter;
+ if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->SystemTree)),&model,&iter)){
+ char *name,*username,*homedir=NULL;
+ gtk_tree_model_get(model,&iter,2,&name,3,&username,6,&homedir,-1);
+ gtk_list_store_append(dialog->list,&iter);
+ gtk_list_store_set(dialog->list,&iter,0,1,1,name,2,homedir,4,!yon_char_is_empty(homedir),5,username,-1);
+ gtk_widget_show(dialog->Window);
+ }
+
+ } else {
+ g_signal_connect(G_OBJECT(dialog->AcceptButton),"clicked",G_CALLBACK(on_delete_system_group),dact);
+ gtk_label_set_text(GTK_LABEL(dialog->TitleLabel),DELETE_GROUP_CONFIRMATION_CONFIRM_LABEL);
+ gtk_label_set_text(GTK_LABEL(dialog->HatLabel),DELETE_GROUP_CONFIRMATION_TITLE_LABEL);
+ yon_gtk_window_setup(GTK_WINDOW(dialog->Window),GTK_WINDOW(widgets->Window),DELETE_GROUP_CONFIRMATION_TITLE_LABEL,icon_path,"system-group-deletion-window");
+ GtkTreeModel *model = gtk_tree_view_get_model(GTK_TREE_VIEW(widgets->SystemGroupsTree));
+ GtkTreeIter iter;
+ if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->SystemGroupsTree)),&model,&iter)){
+ g_signal_connect(G_OBJECT(dialog->AcceptButton),"clicked",G_CALLBACK(on_delete_system_group),dialog);
+ char *name;
+ gtk_tree_view_column_set_title(dialog->UserCell,GROUP_LABEL);
+ gtk_tree_view_column_set_visible(gtk_tree_view_get_column(GTK_TREE_VIEW(dialog->DeletionTree),2),0);
+ gtk_tree_view_column_set_visible(gtk_tree_view_get_column(GTK_TREE_VIEW(dialog->DeletionTree),3),0);
+ gtk_tree_view_column_set_visible(gtk_tree_view_get_column(GTK_TREE_VIEW(dialog->DeletionTree),4),0);
+
+ gtk_tree_model_get(model,&iter,1,&name,-1);
+ gtk_list_store_append(dialog->list,&iter);
+ gtk_list_store_set(dialog->list,&iter,0,1,1,name,-1);
+ gtk_widget_show(dialog->Window);
+ }
+ }
}
void yon_delete_confirmation_open(main_window *widgets){
@@ -763,7 +746,7 @@ void yon_delete_confirmation_open(main_window *widgets){
int status=0;
if (homedir) status=1;
gtk_list_store_append(window->list,&itar);
- gtk_list_store_set(window->list,&itar,0,yon_char_parsed_check_exist(chosen,chosen_size,name)>-1?1:0,1,name,2,homedir,3,0,4,status,5,username,-1);
+ gtk_list_store_set(window->list,&itar,0,yon_char_parsed_check_exist(chosen,chosen_size,name)>-1?1:0,1,name,2,homedir,3,0,4,yon_char_parsed_check_exist(chosen,chosen_size,name)>-1&&status?1:0,5,username,-1);
free(name);
free(username);
free(parameters);
@@ -772,41 +755,6 @@ void yon_delete_confirmation_open(main_window *widgets){
gtk_widget_show(window->Window);
}
-void yon_group_delete_confirmation_open(main_window *widgets){
- yon_confirmation_window *window = yon_delete_confirmation_new();
- gtk_window_set_transient_for(GTK_WINDOW(window->Window),GTK_WINDOW(widgets->Window));
- GtkTreeIter iter,itar;
- dictionary *dict = NULL;
- gtk_label_set_text(GTK_LABEL(window->TitleLabel),DELETE_GROUP_CONFIRMATION_CONFIRM_LABEL);
- gtk_tree_view_column_set_title(window->UserCell,GROUP_LABEL);
- gtk_label_set_text(GTK_LABEL(window->HatLabel),DELETE_GROUP_CONFIRMATION_TITLE_LABEL);
- gtk_tree_view_column_set_visible(gtk_tree_view_get_column(GTK_TREE_VIEW(window->DeletionTree),2),0);
- gtk_tree_view_column_set_visible(gtk_tree_view_get_column(GTK_TREE_VIEW(window->DeletionTree),3),0);
- gtk_tree_view_column_set_visible(gtk_tree_view_get_column(GTK_TREE_VIEW(window->DeletionTree),4),0);
- yon_dictionary_add_or_create_if_exists_with_data(dict,"widgets",widgets);
- yon_dictionary_add_or_create_if_exists_with_data(dict,"window",window);
- g_signal_connect(G_OBJECT(window->AcceptButton),"clicked",G_CALLBACK(yon_group_delete_confirmation_save),dict);
- GtkTreeModel *model = GTK_TREE_MODEL(widgets->GroupsList);
- GList *list = gtk_tree_selection_get_selected_rows(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->GroupsTree)),&model);
- int chosen_size=0;
- config_str chosen = NULL;
- for (guint i=0;iGroupsList),&iter);
- for (;valid;valid=gtk_tree_model_iter_next(GTK_TREE_MODEL(widgets->GroupsList),&iter)){
- char *name;
- gtk_tree_model_get(GTK_TREE_MODEL(widgets->GroupsList),&iter,1,&name,-1);
- gtk_list_store_append(window->list,&itar);
- gtk_list_store_set(window->list,&itar,0,yon_char_parsed_check_exist(chosen,chosen_size,name)>-1?1:0,1,name,-1);
- free(name);
- }
- gtk_widget_show(window->Window);
-}
-
yon_savasettings_window *yon_saving_settings_new(){
GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_ubl_settings_usergroups_savesettings);
yon_savasettings_window *window = malloc(sizeof(yon_savasettings_window));
@@ -851,19 +799,24 @@ void on_filechooser_open(GtkWidget *, GtkEntry *output_target){
void on_groups_save(GtkWidget *self, dictionary *dict){
ubl_settings_usergroups_group_window *window = yon_dictionary_get_data(dict->first,ubl_settings_usergroups_group_window*);
- GtkEntry *output = yon_dictionary_get_data(dict->first->next,GtkEntry*);
- GtkTreeIter iter;
- GtkTreeModel *model = GTK_TREE_MODEL(window->list);
- if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(window->GroupsTree)),&model,&iter)){
- char *name;
- gtk_tree_model_get(model,&iter,1,&name,-1);
- gtk_entry_set_text(output,name);
- free(name);
+ struct target_struct *output = yon_dictionary_get_data(dict->first->next,struct target_struct *);
+ if (!gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->DefaultCheck))){
+ GtkTreeIter iter;
+ GtkTreeModel *model = GTK_TREE_MODEL(window->list);
+ if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(window->GroupsTree)),&model,&iter)){
+ char *name;
+ gtk_tree_model_get(model,&iter,1,&name,-1);
+ gtk_entry_set_text(output->target,name);
+ free(name);
+ }
+ } else {
+ gtk_entry_set_text(output->target,"");
+ gtk_toggle_button_set_active(output->defaut_toggle,1);
}
on_subwindow_close(self);
}
-void on_groups_clicked(GtkWidget *, GtkEntry *output_target){
+void on_groups_clicked(GtkWidget *, struct target_struct *output_target){
ubl_settings_usergroups_group_window *window = yon_ubl_settings_usergroups_group_new(0);
gtk_window_set_title(GTK_WINDOW(window->GroupsWindow),MAIN_GROUP_TITLE_LABEL);
gtk_label_set_text(GTK_LABEL(window->HeaderLabel),MAIN_GROUP_TITLE_LABEL);
@@ -889,7 +842,7 @@ void on_groups_clicked(GtkWidget *, GtkEntry *output_target){
gtk_tree_view_column_set_title(gtk_tree_view_get_column(GTK_TREE_VIEW(window->GroupsTree),1),GID_LABEL);
gtk_tree_view_column_set_visible(gtk_tree_view_get_column(GTK_TREE_VIEW(window->GroupsTree),0),0);
gtk_tree_selection_set_mode(gtk_tree_view_get_selection(GTK_TREE_VIEW(window->GroupsTree)),GTK_SELECTION_SINGLE);
- const char *current_group=gtk_entry_get_text(output_target);
+ const char *current_group=gtk_entry_get_text(output_target->target);
size_t digits=0;
for (guint k=0;kfirst,ubl_settings_usergroups_group_window*);
GtkEntry *output = yon_dictionary_get_data(dict->first->next,GtkEntry*);
+ if (!gtk_widget_get_visible(window->DefaultCheck)||!gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->DefaultCheck))){
GtkTreeIter iter;
int valid = gtk_tree_model_get_iter_first(GTK_TREE_MODEL(window->list),&iter);
char *full_groups="";
@@ -948,12 +902,28 @@ void on_groups_multiple_save(GtkWidget *self, dictionary *dict){
full_groups=extend_groups;
}
}
+ if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->AddNewCheck))){
+ char *custom_groups = (char*)gtk_entry_get_text(GTK_ENTRY(window->AddNewEntry));
+ if (!yon_char_is_empty(custom_groups)){
+ char *temp = yon_char_unite(full_groups,",",custom_groups,NULL);
+ if (!yon_char_is_empty(full_groups)) free(full_groups);
+ full_groups=temp;
+ } else {
+ yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
+ yon_ubl_status_highlight_incorrect(window->AddNewEntry);
+ return;
+ }
+ }
gtk_entry_set_text(output,full_groups);
+ } else {
+ gtk_entry_set_text(output,config(USERGROUPS_parameter));
+ }
on_subwindow_close(self);
}
void on_groups_multiple_clicked(GtkWidget *, GtkEntry *output_target){
ubl_settings_usergroups_group_window *window = yon_ubl_settings_usergroups_group_new(0);
+ gtk_widget_show(window->AddNewBox);
gtk_tree_view_column_set_title(gtk_tree_view_get_column(GTK_TREE_VIEW(window->GroupsTree),1),GID_LABEL);
gtk_window_set_title(GTK_WINDOW(window->GroupsWindow),ADDITIONAL_GROUPS_TITLE_LABEL);
gtk_label_set_text(GTK_LABEL(window->HeaderLabel),ADDITIONAL_GROUPS_TITLE_LABEL);
@@ -1000,285 +970,15 @@ void on_groups_multiple_clicked(GtkWidget *, GtkEntry *output_target){
}
-void on_passwords_encrypt(){
- int pid = fork();
- if (!pid){
- exit(system(encrypt_passwords_command));
- }
-}
-
-void on_password_change(GtkWidget *, dictionary *entry_dict){
- GtkEntry *output_target = yon_dictionary_get_data(entry_dict->first->next,GtkEntry*);
- ubl_settings_usergroups_password_window *window = yon_ubl_settings_usergroups_password_new();
- dictionary *dict = NULL;
- char *password = (char*)gtk_entry_get_text(output_target);
- if (!yon_char_is_empty(password)){
- if (main_config.load_mode==0){
- password = yon_char_new(password);
- if (!check_is_password_hash(password)){
- gtk_entry_set_text(GTK_ENTRY(window->PasswordHashEntry),password);
- } else {
- if (password[0]=='%'&&password[1]=='%'){
- free(yon_char_divide(password,1));
- gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->NoEncriptionCheck),1);
- }
- gtk_entry_set_text(GTK_ENTRY(window->PasswordEntry),password);
- }
- }
- }
- yon_dictionary_add_or_create_if_exists_with_data(dict,"window",window);
- yon_dictionary_add_or_create_if_exists_with_data(dict,"target",output_target);
- g_signal_connect(G_OBJECT(window->UserOkButton),"clicked",G_CALLBACK(on_password_accept),dict);
- g_signal_connect(G_OBJECT(window->UserCancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
- gtk_window_set_transient_for(GTK_WINDOW(window->CreateGroupWindow),GTK_WINDOW(gtk_widget_get_toplevel(GTK_WIDGET(output_target))));
- gtk_widget_show(window->CreateGroupWindow);
-
-}
-
-void on_additional_settings_clicked(GtkWidget *, GtkEntry *){
- ubl_settings_usergroups_additional_settings_window *window = yon_ubl_settings_usergroups_additional_settings_new();
- g_signal_connect(G_OBJECT(window->AcceptButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
- gtk_widget_show(window->Window);
-
-}
-
void on_expiration_clicked(GtkWidget *, ubl_settings_usergroups_user_window *window){
gtk_popover_popup(GTK_POPOVER(window->CalendarPopup));
}
// standard functions
-
- void on_additional_settings_save(GtkWidget *, ubl_settings_usergroups_additional_settings_window *window){
- const char *default_user = (char*)gtk_entry_get_text(GTK_ENTRY(window->DefaultUserNameEntry));
- if (!yon_char_is_empty(default_user)){
- yon_config_register(DEFAULTUSER_parameter,DEFAULTUSER_parameter_command,yon_char_new((char*)default_user));
- } else {
- yon_config_remove_by_key(DEFAULTUSER_parameter);
- }
- char *default_password = gtk_combo_box_get_active(GTK_COMBO_BOX(window->DefaultPasswordCombo))>1? (char*)gtk_entry_get_text(GTK_ENTRY(window->DefaultPasswordEntry)):NULL;
- if (!yon_char_is_empty(default_password)){
- yon_config_register(DEFAULTPASSWD_parameter,DEFAULTPASSWD_parameter_command,default_password);
- } else {
- yon_config_remove_by_key(DEFAULTPASSWD_parameter);
- }
- char *root_password = gtk_combo_box_get_active(GTK_COMBO_BOX(window->RootPasswordCombo)) > 1 ? (char*)gtk_entry_get_text(GTK_ENTRY(window->RootPasswordEntry)) : NULL;
- if (!yon_char_is_empty(root_password)){
- yon_config_register(DEFAULTROOTPASSWD_parameter,DEFAULTROOTPASSWD_parameter_command,root_password);
- } else {
- yon_config_remove_by_key(DEFAULTROOTPASSWD_parameter);
- }
- int user_k_admin = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->DefaultUserAdministratorCheck));
- if (!yon_config_check_ignore(ADDADM_parameter)){
- if (user_k_admin){
- yon_config_register(ADDADM_parameter,ADDADM_parameter_command,"yes");
- } else {
- yon_config_register(ADDADM_parameter,ADDADM_parameter_command,"no");
- }
- } else {
- char *user_k = config(ADDADM_parameter);
- if (strcmp(user_k,user_k_admin?"yes":"no")){
- if (user_k_admin){
- yon_config_register(ADDADM_parameter,ADDADM_parameter_command,"yes");
- } else {
- yon_config_register(ADDADM_parameter,ADDADM_parameter_command,"no");
- }
- }
- }
- if (gtk_combo_box_get_active(GTK_COMBO_BOX(window->PasswordHashCombo))!=0){
- char *hash = (char*)gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->PasswordHashCombo));
- if (!yon_char_is_empty(hash)){
- yon_config_register(HASHPASSWD_parameter,HASHPASSWD_parameter_command,hash);
- }
- }else {
- yon_config_remove_by_key(HASHPASSWD_parameter);
- }
- char *sync = "";
- int boot_active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->UsersBootCheck));
- int shutdown_active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->UsersShutdownCheck));
- if (!boot_active&&!shutdown_active){
- yon_config_remove_by_key(USERADD_SYNC_parameter);
- } else {
- if (boot_active){
- sync = "boot";
- }
- if (shutdown_active){
- sync = yon_char_unite(sync,yon_char_is_empty(sync)?"":",","shutdown",NULL);
- }
- yon_config_register(USERADD_SYNC_parameter,USERADD_SYNC_parameter_command,sync);
- }
- }
-
- void on_hash_changed(GtkWidget *, ubl_settings_usergroups_additional_settings_window *window){
-
- int hash_size=0;
- config_str hash_algos = yon_file_open(hash_list_path,&hash_size);
- for (int i=1;iPasswordHashCombo,parsed[1]);
- yon_char_parsed_free(parsed,parsed_size);
- }
- yon_char_parsed_free(hash_algos,hash_size);
- }
-
-// void on_users_boot_toggled(GtkToggleButton *self){
-// if (gtk_toggle_button_get_active(self)){
-// char *parameter = yon_config_get_by_key(USERADD_SYNC_parameter);
-// if (!parameter){
-// yon_config_register(USERADD_SYNC_parameter,USERADD_SYNC_parameter_command,"boot");
-// } else {
-// yon_config_append(USERADD_SYNC_parameter,"boot",",");
-// }
-// } else {
-// yon_config_remove_element(USERADD_SYNC_parameter,"boot",",");
-// }
-// }
-
-// void on_users_shutdown_toggled(GtkToggleButton *self){
-// if (gtk_toggle_button_get_active(self)){
-// char *parameter = yon_config_get_by_key(USERADD_SYNC_parameter);
-// if (!parameter){
-// yon_config_register(USERADD_SYNC_parameter,USERADD_SYNC_parameter_command,"shutdown");
-// } else {
-// yon_config_append(USERADD_SYNC_parameter,"shutdown",",");
-// }
-// } else {
-// yon_config_remove_element(USERADD_SYNC_parameter,"shutdown",",");
-// }
-// }
-
-ubl_settings_usergroups_additional_settings_window *yon_ubl_settings_usergroups_additional_settings_new(){
- ubl_settings_usergroups_additional_settings_window *window = malloc(sizeof(ubl_settings_usergroups_additional_settings_window));
- GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_ubl_settings_usergroups_additional_settings);
- window->Window=yon_gtk_builder_get_widget(builder,"Window");
- window->StatusBox=yon_gtk_builder_get_widget(builder,"StatusBox");
- window->DefaultUserNameEntry=yon_gtk_builder_get_widget(builder,"DefaultUserNameEntry");
- window->DefaultUserAdministratorCheck=yon_gtk_builder_get_widget(builder,"DefaultUserAdministratorCheck");
- window->DefaultPasswordCombo=yon_gtk_builder_get_widget(builder,"DefaultPasswordCombo");
- window->DefaultPasswordEntry=yon_gtk_builder_get_widget(builder,"DefaultPasswordEntry");
- window->DefaultPasswordButton=yon_gtk_builder_get_widget(builder,"DefaultPasswordButton");
- window->RootPasswordCombo=yon_gtk_builder_get_widget(builder,"RootPasswordCombo");
- window->RootPasswordEntry=yon_gtk_builder_get_widget(builder,"RootPasswordEntry");
- window->RootPasswordButton=yon_gtk_builder_get_widget(builder,"RootPasswordButton");
- window->PasswordHashCombo=yon_gtk_builder_get_widget(builder,"PasswordHashCombo");
- window->EncryptAllPasswordsButton=yon_gtk_builder_get_widget(builder,"EncryptAllPasswordsButton");
- window->CancelButton=yon_gtk_builder_get_widget(builder,"CancelButton");
- window->AcceptButton=yon_gtk_builder_get_widget(builder,"AcceptButton");
- window->UsersBootCheck=yon_gtk_builder_get_widget(builder,"UsersBootCheck");
- window->UsersShutdownCheck=yon_gtk_builder_get_widget(builder,"UsersShutdownCheck");
-
- yon_window_config_custom_window_setup(GTK_WINDOW(window->Window),"AdditionalSettingsWindow");
- gtk_window_set_title(GTK_WINDOW(window->Window),ADDITIONAL_SETTINGS_TITLE_LABEL);
- char *sync_parameters = yon_config_get_by_key(USERADD_SYNC_parameter);
- if (sync_parameters){
- if (strstr(sync_parameters,"boot")){
- gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->UsersBootCheck),1);
- }
- if (strstr(sync_parameters,"shutdown")){
- gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->UsersShutdownCheck),1);
- }
- }
-
- int hash_size=0;
- config_str hash_algos = yon_file_open(hash_list_path,&hash_size);
- if (main_config.hash_default_id==-1){
- int size;
- config_str ret = yon_config_load(get_default_hash_command,&size);
- if (size>0){
- char *hash = ret[0];
- if (hash[strlen(hash)-1]=='\n') hash[strlen(hash)-1]='\0';
- for (int i=0;iPasswordHashCombo),yon_char_unite(DEFAULT_USER_LABEL," (",def,")",NULL));
- }
- }
- }
- }
- }
- for (int i=1;iPasswordHashCombo),parsed[0],_(parsed[1]));
- gtk_widget_set_tooltip_text(window->PasswordHashCombo,parsed[1]);
- yon_char_parsed_free(parsed,parsed_size);
- }
- }
- yon_char_parsed_free(hash_algos,hash_size);
- gtk_combo_box_set_active(GTK_COMBO_BOX(window->PasswordHashCombo),0);
- char *default_user = yon_config_get_by_key(DEFAULTUSER_parameter);
- if (!yon_char_is_empty(default_user))
- gtk_entry_set_text(GTK_ENTRY(window->DefaultUserNameEntry),default_user);
-
-
- g_signal_connect(G_OBJECT(window->RootPasswordCombo),"changed",G_CALLBACK(on_password_combo_changed),window->RootPasswordButton);
- g_signal_connect(G_OBJECT(window->DefaultPasswordCombo),"changed",G_CALLBACK(on_password_combo_changed),window->DefaultPasswordButton);
- char *default_password = yon_config_get_by_key(DEFAULTPASSWD_parameter);
- if (!yon_char_is_empty(default_password)){
- gtk_entry_set_text(GTK_ENTRY(window->DefaultPasswordEntry),default_password);
- if(!yon_config_check_ignore(DEFAULTPASSWD_parameter))
- gtk_combo_box_set_active(GTK_COMBO_BOX(window->DefaultPasswordCombo),2);
- }
- char *root_password = yon_config_get_by_key(DEFAULTROOTPASSWD_parameter);
- if (!yon_char_is_empty(root_password)){
- gtk_entry_set_text(GTK_ENTRY(window->RootPasswordEntry),root_password);
- if(!yon_config_check_ignore(DEFAULTROOTPASSWD_parameter))
- gtk_combo_box_set_active(GTK_COMBO_BOX(window->RootPasswordCombo),2);
- }
- char *is_k_admin = yon_config_get_by_key(ADDADM_parameter);
- if (!yon_char_is_empty(is_k_admin))
- if (!strcmp(is_k_admin,"yes"))
- gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->DefaultUserAdministratorCheck),1);
- char *hash = yon_config_get_by_key(HASHPASSWD_parameter);
- if (!yon_char_is_empty(hash)){
- gtk_combo_box_set_active_id(GTK_COMBO_BOX(window->PasswordHashCombo),hash);
- }
-
- g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
- g_signal_connect(G_OBJECT(window->AcceptButton),"clicked",G_CALLBACK(on_additional_settings_save),window);
- dictionary *default_dict=NULL;
- yon_dictionary_add_or_create_if_exists_with_data(default_dict,"combo",window->DefaultPasswordCombo);
- yon_dictionary_add_or_create_if_exists_with_data(default_dict,"entry",window->DefaultPasswordEntry);
-
- dictionary *root_dict=NULL;
- yon_dictionary_add_or_create_if_exists_with_data(root_dict,"combo",window->RootPasswordCombo);
- yon_dictionary_add_or_create_if_exists_with_data(root_dict,"entry",window->RootPasswordEntry);
- g_signal_connect(G_OBJECT(window->DefaultPasswordButton),"clicked",G_CALLBACK(on_password_change),default_dict);
- g_signal_connect(G_OBJECT(window->RootPasswordButton),"clicked",G_CALLBACK(on_password_change),root_dict);
- dialog_confirmation_data *data=malloc(sizeof(dialog_confirmation_data));
- data->function=on_passwords_encrypt;
- data->action_text = ENCRYPT_SURE_LABEL;
- data->data=NULL;
- g_signal_connect(G_OBJECT(window->EncryptAllPasswordsButton),"clicked",G_CALLBACK(yon_confirmation_dialog_call),data);
-
- g_signal_connect(G_OBJECT(window->PasswordHashCombo),"changed",G_CALLBACK(on_hash_changed),window);
-
- // g_signal_connect(G_OBJECT(window->UsersBootCheck),"toggled",G_CALLBACK(on_users_boot_toggled),NULL);
- // g_signal_connect(G_OBJECT(window->UsersShutdownCheck),"toggled",G_CALLBACK(on_users_shutdown_toggled),NULL);
-
-return window;
-}
-
-void on_ubl_settings_usergroups_additional_settings_open(GtkWidget *, main_window *widgets){
- ubl_settings_usergroups_additional_settings_window *window = yon_ubl_settings_usergroups_additional_settings_new();
- g_signal_connect(G_OBJECT(window->AcceptButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
-
- gtk_window_set_transient_for(GTK_WINDOW(window->Window),GTK_WINDOW(widgets->Window));
- gtk_widget_show(window->Window);
-
-}
void on_user_choose(GtkWidget *, GtkEntry *target){
ubl_settings_usergroups_group_window *window = yon_ubl_settings_usergroups_group_new(1);
+ gtk_widget_hide(window->DefaultCheck);
gtk_label_set_text(GTK_LABEL(window->HeaderLabel),GROUP_USERS_TITLE_LABEL);
gtk_label_set_text(GTK_LABEL(window->HeaderLabel),GROUP_USERS_TITLE_LABEL);
gtk_tree_view_column_set_title(gtk_tree_view_get_column(GTK_TREE_VIEW(window->GroupsTree),1),UID_LABEL);
@@ -1326,178 +1026,16 @@ void on_user_choose(GtkWidget *, GtkEntry *target){
gtk_widget_show(window->GroupsWindow);
}
-void on_GID_update(GtkWidget *, ubl_settings_usergroups_group_creation_window *window){
- if (!gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->userUIDAutoCheck))){
- if (window->last_gid){
- gtk_entry_set_text(GTK_ENTRY(window->userUIDEntry),window->last_gid);
- } else {
- int config_size=0;
- int final_size=0;
- config_str config_groups = yon_config_get_all_by_key(GROUPADD_parameter,&config_size);
- yon_char_parsed_prepend_strings(config_groups,config_size,":");
- config_str final = yon_char_parsed_merge(main_config.groups,main_config.groups_size,config_groups,config_size,&final_size);
- long prev_busy=gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->SystemGroupCheck))?0:main_config.MINGID;
-
- int minimum = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->SystemGroupCheck))?0:main_config.MINGID;
- int maximum = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->SystemGroupCheck))?68000:main_config.MAXGID;
- for (int i=0;i2&&minimumprev_busy){
- prev_busy=atol(parsed[2]);
- }
- }
- yon_char_parsed_free(parsed, parsed_size);
- }
- gtk_entry_set_text(GTK_ENTRY(window->userUIDEntry),yon_char_from_long(prev_busy+1));
- }
- } else {
- gtk_entry_set_text(GTK_ENTRY(window->userUIDEntry),"");
- }
-}
+void on_system_parameter_changed(GtkWidget *, ubl_settings_usergroups_group_creation_window *window){
-void on_group_save(GtkWidget *self, dictionary *dict){
- main_window *widgets = yon_dictionary_get_data(dict->first,main_window*);
- ubl_settings_usergroups_group_creation_window *window = yon_dictionary_get_data(dict->first->next,ubl_settings_usergroups_group_creation_window*);
- char *final_string = NULL;
- char *group_name = NULL;
- char *group_users = NULL;
- char *gid = NULL;
char *non_unique = NULL;
char *gsystem = NULL;
- char *admins = NULL;
- char *password = NULL;
- int gid_active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->userUIDAutoCheck));
- if (gid_active){
- gid="x";
- } else {
- gid = (char*)gtk_entry_get_text(GTK_ENTRY(window->userUIDEntry));
- if (yon_char_is_empty(gid)){
- yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
- yon_ubl_status_highlight_incorrect(window->userUIDEntry);
- return;
- }
-
- if (strcmp(gid,window->last_gid)){
- int config_size=0;
- int final_size=0;
- config_str config_users = yon_config_get_all_by_key(GROUPADD_SEARCH_macro,&config_size);
- config_str final = yon_char_parsed_merge(main_config.groups,main_config.groups_size,config_users,config_size,&final_size);
- if (!gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->UnuniqueGIDCheck))){
- int found=0;
- char *uid_string = (char*)gtk_entry_get_text(GTK_ENTRY(window->userUIDEntry));
- for (int i=0;i2&&!strcmp(parsed[2],uid_string)){
- if (yon_char_is_empty(window->last_gid)||(!yon_char_is_empty(window->last_gid)&&strcmp(parsed[2],window->last_gid))){
- found = yon_char_parsed_check_exist(config_users,config_size,final[i])>-1?1:2;
- break;
- }
- }
- if (parsed_size) yon_char_parsed_free(parsed,parsed_size);
- }
- if (found){
- yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),found==1?GID_ALREADY_EXIST_CONFIG_LABEL:GID_ALREADY_EXIST_SYSTEM_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
- yon_ubl_status_highlight_incorrect(window->userUIDEntry);
- return;
- }
- }
- }
- }
-
- group_name = (char*)gtk_entry_get_text(GTK_ENTRY(window->userLoginEntry));
- if (group_name[0]>'0'&&group_name[0]<'9'){
- yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),GROUP_BEGINS_WITH_DIGIT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
- yon_ubl_status_highlight_incorrect(window->userLoginEntry);
- return;
- }
- if (yon_char_is_empty(group_name)){
- yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
- yon_ubl_status_highlight_incorrect(window->userLoginEntry);
- return;
- }
-
- group_users = (char*)gtk_entry_get_text(GTK_ENTRY(window->userGroupsEntry));
- if (yon_char_is_empty(group_users)){
- yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
- yon_ubl_status_highlight_incorrect(window->userGroupsEntry);
- return;
- }
-
- admins = (char*)gtk_entry_get_text(GTK_ENTRY(window->AdminGroupsEntry));
int non_unique_active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->UnuniqueGIDCheck));
if(non_unique_active){
non_unique="--non-unique";
} else non_unique="";
-
- int gsystem_active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->SystemGroupCheck));
- if(gsystem_active){
- gsystem="--system";
- } else gsystem="";
-
- int shutdown_sync_active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->GroupaddShutdownCheck));
- if (shutdown_sync_active){
- char *final_command = yon_config_parameter_prepare_command(dull_parameter_get_command,NULL,"users",GROUPADD_SYNC(group_name));
- yon_config_register(GROUPADD_SYNC(group_name),final_command,"shutdown");
- } else {
- yon_config_remove_by_key(GROUPADD_SYNC(group_name));
- }
-
-
- int password_active = gtk_combo_box_get_active(GTK_COMBO_BOX(window->PasswordCombo));
- if (password_active > 1){
- password = (char*)gtk_entry_get_text(GTK_ENTRY(window->PasswordEntry));
- if (yon_char_is_empty(password)){
- yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
- yon_ubl_status_highlight_incorrect(window->PasswordEntry);
- return;
- }
- } else {
- password="";
- }
- final_string = yon_char_unite(yon_char_return_if_exist(group_users,"x"),
- ":",yon_char_return_if_exist(gid,"x"),
- ":",yon_char_return_if_exist(non_unique,""),
- yon_char_return_if_exist(gsystem,""),
- ":",yon_char_return_if_exist(admins,"x"),
- ":",yon_char_return_if_exist(password,"x"),
- NULL);
- char *final_command = yon_config_parameter_prepare_command(dull_parameter_get_command,NULL,"users",GROUPADD_SYNC(group_name));
- yon_config_register(GROUPADD(group_name),final_command,final_string);
- GtkTreeIter iter;
- GtkTreeModel *model = GTK_TREE_MODEL(widgets->GroupsList);
- if (!gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->GroupsTree)),&model,&iter))
- gtk_list_store_append(widgets->GroupsList,&iter);
- char *passwor = (char*)gtk_entry_get_text(GTK_ENTRY(window->PasswordEntry));
- char *password_status=NULL;
- if (password_active==0)
- password_status=DEFAULT_USER_LABEL;
- else if (password_active==1)
- password_status = NO_PASSWORD_LABEL;
- else if (password_active == 2){
- if (check_is_password_hash(passwor)){
- password_status=UNENCRYPTED_LABEL;
- } else {
- password_status=UNENCRYPTED_LABEL;
- }
- }
- gtk_list_store_set(widgets->GroupsList,&iter,0,strcmp(gid,"x")?gid:"",1,group_name,2,group_users,3,yon_char_append(non_unique,gsystem),4,password_status,-1);
- on_subwindow_close(self);
-}
-
-void on_system_parameter_changed(GtkWidget *, ubl_settings_usergroups_group_creation_window *window){
-
- char *non_unique = NULL;
- char *gsystem = NULL;
-
- int non_unique_active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->UnuniqueGIDCheck));
- if(non_unique_active){
- non_unique="--non-unique";
- } else non_unique="";
-
+
int gsystem_active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->SystemGroupCheck));
if(gsystem_active){
gsystem="--system";
@@ -1511,57 +1049,6 @@ void on_system_parameter_changed(GtkWidget *, ubl_settings_usergroups_group_crea
gtk_entry_set_text(GTK_ENTRY(window->groupExtraOptionsEntry),final_str);
free(final_str);
}
-
-ubl_settings_usergroups_group_creation_window *yon_ubl_settings_usergroups_group_creation_new(){
- ubl_settings_usergroups_group_creation_window *window = malloc(sizeof(ubl_settings_usergroups_group_creation_window));
- GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_ubl_settings_usergroups_group_creation);
- window->CreateGroupWindow=yon_gtk_builder_get_widget(builder,"CreateGroupWindow");
- window->StatusBox=yon_gtk_builder_get_widget(builder,"StatusBox");
- window->userUIDAutoCheck=yon_gtk_builder_get_widget(builder,"GIDAutoCheck");
- window->userUIDEntry=yon_gtk_builder_get_widget(builder,"userUIDEntry");
- window->userLoginEntry=yon_gtk_builder_get_widget(builder,"userLoginEntry");
- window->userGroupsEntry=yon_gtk_builder_get_widget(builder,"userGroupsEntry");
- window->UserAdditionalGroupsButton=yon_gtk_builder_get_widget(builder,"AdditionalGroupsButton");
- window->UserCancelButton=yon_gtk_builder_get_widget(builder,"UserCancelButton");
- window->UserOkButton=yon_gtk_builder_get_widget(builder,"UserOkButton");
- window->AdditionalGroupsButton=yon_gtk_builder_get_widget(builder,"AdditionalGroupsButton");
- window->UnuniqueGIDCheck=yon_gtk_builder_get_widget(builder,"UnuniqueGIDCheck");
- window->SystemGroupCheck=yon_gtk_builder_get_widget(builder,"SystemGroupCheck");
- window->PasswordCombo=yon_gtk_builder_get_widget(builder,"PasswordCombo");
- window->PasswordEntry=yon_gtk_builder_get_widget(builder,"PasswordEntry");
- window->ChangePasswordButton=yon_gtk_builder_get_widget(builder,"ChangePasswordButton");
- window->userTitleNameLabel=yon_gtk_builder_get_widget(builder,"userTitleNameLabel");
- window->AdminGroupsEntry=yon_gtk_builder_get_widget(builder,"AdminGroupsEntry");
- window->AdminGroupsButton=yon_gtk_builder_get_widget(builder,"AdminGroupsButton");
- window->GroupaddShutdownCheck=yon_gtk_builder_get_widget(builder,"GroupaddShutdownCheck");
- window->groupExtraOptionsEntry=yon_gtk_builder_get_widget(builder,"groupExtraOptionsEntry");
- window->last_gid=NULL;
-
- gtk_window_set_title(GTK_WINDOW(window->CreateGroupWindow),GROUPS_TITLE_LABEL);
-
- on_GID_update(NULL,window);
- dictionary *entry_dict=NULL;
- yon_dictionary_add_or_create_if_exists_with_data(entry_dict,"combo",window->PasswordCombo);
- yon_dictionary_add_or_create_if_exists_with_data(entry_dict,"entry",window->PasswordEntry);
- yon_window_config_custom_window_setup(GTK_WINDOW(window->CreateGroupWindow),"GroupAddWindow");
- g_signal_connect(G_OBJECT(window->userUIDAutoCheck),"clicked",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button_inversed),window->userUIDEntry);
- g_signal_connect(G_OBJECT(window->ChangePasswordButton),"clicked",G_CALLBACK(on_password_change),entry_dict);
- g_signal_connect(G_OBJECT(window->PasswordCombo),"changed",G_CALLBACK(on_password_combo_changed),window->ChangePasswordButton);
- g_signal_connect(G_OBJECT(window->UserCancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
- g_signal_connect(G_OBJECT(window->UserAdditionalGroupsButton),"clicked",G_CALLBACK(on_user_choose),window->userGroupsEntry);
- g_signal_connect(G_OBJECT(window->AdminGroupsButton),"clicked",G_CALLBACK(on_user_choose),window->AdminGroupsEntry);
- g_signal_connect(G_OBJECT(window->userUIDAutoCheck),"toggled",G_CALLBACK(on_GID_update),window);
- g_signal_connect(G_OBJECT(window->SystemGroupCheck),"toggled",G_CALLBACK(on_GID_update),window);
- g_signal_connect(G_OBJECT(window->userUIDAutoCheck),"toggled",G_CALLBACK(yon_gtk_toggle_button_set_inactive_from_toggle_button),window->SystemGroupCheck);
- g_signal_connect(G_OBJECT(window->userUIDAutoCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button),window->SystemGroupCheck);
- g_signal_connect(G_OBJECT(window->userUIDAutoCheck),"toggled",G_CALLBACK(yon_gtk_toggle_button_set_inactive_from_toggle_button_inversed),window->UnuniqueGIDCheck);
- g_signal_connect(G_OBJECT(window->userUIDAutoCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button_inversed),window->UnuniqueGIDCheck);
- g_signal_connect(G_OBJECT(window->UnuniqueGIDCheck),"toggled",G_CALLBACK(on_system_parameter_changed),window);
- g_signal_connect(G_OBJECT(window->SystemGroupCheck),"toggled",G_CALLBACK(on_system_parameter_changed),window);
- g_signal_connect(G_OBJECT(window->userUIDEntry),"insert-text",G_CALLBACK(yon_on_text_insert_only_digits),NULL);
-return window;
-}
-
void on_group_clicked(GtkCellRenderer *, char *path, ubl_settings_usergroups_group_window *window){
GtkTreeIter iter;
gboolean status;
@@ -1580,11 +1067,19 @@ ubl_settings_usergroups_group_window *yon_ubl_settings_usergroups_group_new(int
window->HeaderLabel=yon_gtk_builder_get_widget(builder,"HeaderLabel");
window->StatusCell = GTK_CELL_RENDERER(gtk_builder_get_object(builder,"StatusCell"));
window->GroupColumn = GTK_TREE_VIEW_COLUMN(gtk_builder_get_object(builder,"GroupColumn"));
+ window->DefaultCheck=yon_gtk_builder_get_widget(builder,"DefaultCheck");
+ window->AddNewCheck=yon_gtk_builder_get_widget(builder,"AddNewCheck");
+ window->AddNewEntry=yon_gtk_builder_get_widget(builder,"AddNewEntry");
+ window->AddNewBox=yon_gtk_builder_get_widget(builder,"AddNewBox");
+ window->StatusBox=yon_gtk_builder_get_widget(builder,"StatusBox");
window->list = gtk_list_store_new(3,G_TYPE_BOOLEAN,G_TYPE_STRING,G_TYPE_INT);
gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(window->list),2,GTK_SORT_ASCENDING);
+ yon_gtk_entry_block_symbols(GTK_ENTRY(window->AddNewEntry),";.'\"*%$#!-=+\\|/_@^&()№:?<>");
yon_window_config_custom_window_setup(GTK_WINDOW(window->GroupsWindow),"GroupWindow");
gtk_window_set_title(GTK_WINDOW(window->GroupsWindow),GROUPS_TITLE_LABEL);
+ g_signal_connect(G_OBJECT(window->AddNewCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button),window->AddNewEntry);
+ g_signal_connect(G_OBJECT(window->DefaultCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button_inversed),window->GroupsTree);
g_signal_connect(G_OBJECT(window->StatusCell),"toggled",G_CALLBACK(on_group_clicked),window);
GtkTreeIter iter;
config_str current;
@@ -1613,6 +1108,7 @@ return window;
}
void on_standard_groups_accept(GtkWidget *self, ubl_settings_usergroups_group_window *window){
+ if (!gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->DefaultCheck))){
GtkTreeIter iter;
GtkTreeModel *model = GTK_TREE_MODEL(window->list);
int valid = gtk_tree_model_get_iter_first(model,&iter);
@@ -1629,11 +1125,17 @@ void on_standard_groups_accept(GtkWidget *self, ubl_settings_usergroups_group_wi
}
}
yon_config_register(USERGROUPS_parameter,USERGROUPS_get_command,standard_groups);
+ } else {
+ yon_config_remove_by_key(USERGROUPS_parameter);
+ }
on_subwindow_close(self);
}
void on_standard_groups_open(GtkWidget *, main_window *widgets){
ubl_settings_usergroups_group_window *window = yon_ubl_settings_usergroups_group_new(0);
+ if (yon_config_check_ignore(USERGROUPS_parameter)){
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->DefaultCheck),1);
+ }
gtk_window_set_title(GTK_WINDOW(window->GroupsWindow),DEFAULT_GROUPS_TITLE_LABEL);
gtk_label_set_text(GTK_LABEL(window->HeaderLabel),DEFAULT_GROUPS_TITLE_LABEL);
gtk_tree_view_column_set_title(gtk_tree_view_get_column(GTK_TREE_VIEW(window->GroupsTree),1),GID_LABEL);
@@ -1678,121 +1180,51 @@ void on_standard_groups_open(GtkWidget *, main_window *widgets){
gtk_widget_show(window->GroupsWindow);
}
-void on_password_show_hide(GtkEntry *self, GtkEntryIconPosition icon_pos, GdkEvent*){
- if (icon_pos == GTK_ENTRY_ICON_SECONDARY){
- int visible = gtk_entry_get_visibility(self);
- if (!visible){
- gtk_entry_set_visibility(self,1);
- } else {
- gtk_entry_set_visibility(self,0);
- gtk_entry_set_invisible_char(self,'*');
- }
- }
-}
+void yon_system_load(main_window *window){
+ gtk_list_store_clear(window->liststore1);
+ gtk_list_store_clear(window->liststore2);
-void on_password_changed(GtkEntry *, ubl_settings_usergroups_password_window *window){
- char *self_text = (char*)gtk_entry_get_text(GTK_ENTRY(window->PasswordEntry));
- char *pair_text = (char*)gtk_entry_get_text(GTK_ENTRY(window->RepeatPasswordEntry));
- if ((!yon_char_is_empty(self_text)&&!yon_char_is_empty(pair_text))&&strcmp(self_text,pair_text)){
- yon_ubl_status_box_spawn_infinite(GTK_CONTAINER(window->StatusBox),"password_mismatch",PASSWORD_MISMATCH_LABEL,BACKGROUND_IMAGE_FAIL_TYPE);
- } else if (strlen(self_text)StatusBox),"password_short",PASSWORD_SHORT_LABEL(yon_char_from_int(main_config.password_min_length)),BACKGROUND_IMAGE_FAIL_TYPE);
- } else {
- yon_ubl_status_box_despawn_infinite(GTK_CONTAINER(window->StatusBox));
+ if (main_config.groups_size>0){
+ yon_char_parsed_free(main_config.groups,main_config.groups_size);
+ main_config.groups = yon_file_open(groups_path,&main_config.groups_size);
}
-}
-
-void on_password_accept(GtkWidget *self, dictionary *dict){
- ubl_settings_usergroups_password_window *window = yon_dictionary_get_data(dict->first,ubl_settings_usergroups_password_window*);
- GtkEntry *entry = yon_dictionary_get_data(dict->first->next,GtkEntry*);
- char *password = (char*)gtk_entry_get_text(GTK_ENTRY(window->PasswordEntry));
- if (yon_char_is_empty(password)){
- 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 {
-
- if (yon_char_is_empty(password)){
- yon_ubl_status_box_spawn_infinite(GTK_CONTAINER(window->StatusBox),"password_empty",EMPTY_IMPORTANT_LABEL,BACKGROUND_IMAGE_FAIL_TYPE);
- return;
- } else if (password[0]=='%'&&password[1]=='%'){
- yon_ubl_status_box_spawn_infinite(GTK_CONTAINER(window->StatusBox),"password_wrong",EMPTY_IMPORTANT_LABEL,BACKGROUND_IMAGE_FAIL_TYPE);
- return;
- }
- if (strlen(password)StatusBox),PASSWORD_SHORT_LABEL(yon_char_from_int(main_config.password_min_length)),5,BACKGROUND_IMAGE_FAIL_TYPE);
- return;
- }
- char *password_check = (char*)gtk_entry_get_text(GTK_ENTRY(window->RepeatPasswordEntry));
- if (!strcmp(password,password_check)){
- if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->NoEncriptionCheck))){
- char *pasw=yon_char_append("%%",password);
- password=pasw;
- }
- gtk_entry_set_text(GTK_ENTRY(entry),password);
- } else {
- yon_ubl_status_box_spawn_infinite(GTK_CONTAINER(window->StatusBox),"password_mismatch",PASSWORD_MISMATCH_LABEL,BACKGROUND_IMAGE_FAIL_TYPE);
- return;
- }
+ if (main_config.users_size>0){
+ yon_char_parsed_free(main_config.users,main_config.users_size);
+ main_config.users = yon_file_open(users_path,&main_config.users_size);
+ }
+ if (main_config.shadow_size>0){
+ yon_char_parsed_free(main_config.shadow,main_config.shadow_size);
+ main_config.shadow = yon_file_open(shadow_path,&main_config.shadow_size);
+ }
+ if (main_config.group_shadow_size>0){
+ yon_char_parsed_free(main_config.group_shadow,main_config.group_shadow_size);
+ main_config.group_shadow = yon_file_open(group_shadow_path,&main_config.group_shadow_size);
}
- on_subwindow_close(self);
-}
-
-ubl_settings_usergroups_password_window *yon_ubl_settings_usergroups_password_new(){
- ubl_settings_usergroups_password_window *window = malloc(sizeof(ubl_settings_usergroups_password_window));
- GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_ubl_settings_usergroups_password);
- window->CreateGroupWindow=yon_gtk_builder_get_widget(builder,"CreateGroupWindow");
- window->StatusBox=yon_gtk_builder_get_widget(builder,"StatusBox");
- window->PasswordEntry=yon_gtk_builder_get_widget(builder,"PasswordEntry");
- window->RepeatPasswordEntry=yon_gtk_builder_get_widget(builder,"RepeatPasswordEntry");
- window->PasswordHashEntry=yon_gtk_builder_get_widget(builder,"PasswordHashEntry");
- window->HashBox=yon_gtk_builder_get_widget(builder,"HashBox");
- window->PasswordBox=yon_gtk_builder_get_widget(builder,"PasswordBox");
- window->NoEncriptionCheck=yon_gtk_builder_get_widget(builder,"NoEncriptionCheck");
-
- window->UserCancelButton=yon_gtk_builder_get_widget(builder,"UserCancelButton");
- window->UserOkButton=yon_gtk_builder_get_widget(builder,"UserOkButton");
-
- yon_window_config_custom_window_setup(GTK_WINDOW(window->CreateGroupWindow),"PasswordWindow");
- g_signal_connect(G_OBJECT(window->UserCancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
- g_signal_connect(G_OBJECT(window->PasswordEntry),"icon-press",G_CALLBACK(on_password_show_hide),NULL);
- g_signal_connect(G_OBJECT(window->RepeatPasswordEntry),"icon-press",G_CALLBACK(on_password_show_hide),NULL);
- g_signal_connect(G_OBJECT(window->PasswordHashEntry),"icon-press",G_CALLBACK(on_password_show_hide),NULL);
- g_signal_connect(G_OBJECT(window->PasswordEntry),"changed",G_CALLBACK(on_password_changed),window);
- g_signal_connect(G_OBJECT(window->RepeatPasswordEntry),"changed",G_CALLBACK(on_password_changed),window);
- gtk_window_set_title(GTK_WINDOW(window->CreateGroupWindow),PASSWORD_TITLE_LABEL);
-
-return window;
-}
-void yon_system_load(main_window *window){
- gtk_list_store_clear(window->liststore1);
- gtk_list_store_clear(window->liststore2);
GtkTreeIter iter;
for (int i=0;iliststore2,&iter);
gtk_list_store_set(window->liststore2,&iter,0,atol(parsed[2]),1,parsed[0],2,parsed[3],-1);
+ }
}
for (int i=0;iliststore1=GTK_LIST_STORE(gtk_builder_get_object(builder,"liststore1"));
- window->liststore2=GTK_LIST_STORE(gtk_builder_get_object(builder,"liststore2"));
- window->MonitorWindow=yon_gtk_builder_get_widget(builder,"MonitorWindow");
- window->ToggleAllButton=yon_gtk_builder_get_widget(builder,"ToggleAllButton");
- window->UpdateButton=yon_gtk_builder_get_widget(builder,"UpdateButton");
- window->SystemTree = yon_gtk_builder_get_widget(builder,"SystemTree");
- window->show_all=0;
- yon_window_config_custom_window_setup(GTK_WINDOW(window->MonitorWindow),"InspectorWindow");
- yon_gtk_tree_view_minimal_fixed_size_set_full(GTK_TREE_VIEW(window->SystemTree));
- GList *list = gtk_tree_view_get_columns(GTK_TREE_VIEW(window->SystemTree));
- for (guint i=0;iMonitorWindow),INSPECTOR_TITLE_LABEL);
-
- // g_signal_connect(G_OBJECT(window->ToggleAllButton),"clicked",G_CALLBACK(on_mode_changed),window);
- g_signal_connect(G_OBJECT(window->UpdateButton),"clicked",G_CALLBACK(on_system_update),window);
-return window;
-}
-
-void on_settings_usergroups_system_open(GtkWidget *, main_window *){
- ubl_settings_usergroups_system_window *window = yon_ubl_settings_usergroups_system_new();
- gtk_widget_show(window->MonitorWindow);
-}
-
-
-
-
-
-
-
-void on_user_shell_changed(GtkWidget *, ubl_settings_usergroups_user_window *window){
- const char *current = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(window->userShellCombo));
- if (!yon_char_is_empty(current)&&!strcmp(current,SET_LABEL)){
- if(gtk_combo_box_get_active(GTK_COMBO_BOX(window->userShellCombo))>1){
- gtk_widget_set_sensitive(window->userShellEntry,1);
- } else {
- gtk_widget_set_sensitive(window->userShellEntry,0);
- }
- } else {
- gtk_widget_set_sensitive(window->userShellEntry,0);
- }
-}
-
-void on_UID_update(GtkWidget *, ubl_settings_usergroups_user_window *window){
- if (!gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->userUIDAutoCheck))){
- if (window->last_uid){
- gtk_entry_set_text(GTK_ENTRY(window->userUIDEntry),window->last_uid);
- } else {
- int config_size=0;
- int final_size=0;
- config_str config_users = yon_config_get_all_by_key(USERADD_SEARCH_macro,&config_size);
- yon_char_parsed_prepend_strings(config_users,config_size,":");
- config_str final = yon_char_parsed_merge(main_config.users,main_config.users_size,config_users,config_size,&final_size);
- long prev_busy=gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->userCreateSystemCheck))?0:main_config.MINGID;
- for (int i=0;iuserCreateUnuniqueCheck))?0:main_config.MINGID;
- int maximum = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->userCreateUnuniqueCheck))?68000:main_config.MAXGID;
- for (int i=0;iprev_busy){
- prev_busy=atol(parsed[2]);
- }
- }
- }
- yon_char_parsed_free(parsed, parsed_size);
- }
- gtk_entry_set_text(GTK_ENTRY(window->userUIDEntry),yon_char_from_long(prev_busy+1));
- }
- } else {
- gtk_entry_set_text(GTK_ENTRY(window->userUIDEntry),"");
- }
-}
-
-void on_user_login_update(GtkWidget *, ubl_settings_usergroups_user_window *window){
- if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->userGroupsCheck))){
- gtk_entry_set_text(GTK_ENTRY(window->userGroupsEntry),gtk_entry_get_text(GTK_ENTRY(window->userLoginEntry)));
- } else {
- gtk_entry_set_text(GTK_ENTRY(window->userGroupsEntry),"");
- }
-}
-
-void on_user_save(GtkWidget *self, dictionary *dict){
- main_window *widgets = yon_dictionary_get_data(dict->first,main_window*);
- ubl_settings_usergroups_user_window *window = yon_dictionary_get_data(dict->first->next,ubl_settings_usergroups_user_window*);
- char *final_user="";
- char *uid_string = NULL;
- char *password = NULL;
- char *login = NULL;
- char *username = NULL;
- char *main_group = NULL;
- char *additional_groups = NULL;
- char *password_changed_date = NULL;
- char *password_expiration_date = NULL;
- char *password_change_interval_minimum = NULL;
- char *password_change_interval_maximum = NULL;
- char *warning_days = NULL;
- char *no_activity_days = NULL;
- // char *force_at_next_login = NULL;
- char *user_shell = NULL;
- char *user_home = NULL;
- char *create_system_user = NULL;
- char *create_ununique = NULL;
- char *do_not_check = NULL;
- int samba_sync = 0;
- int samba_password_sync = 0;
- int deactivate = 0;
- char *extra_options = NULL;
- char *useradd_boot = "";
- char *useradd_shutdown = "";
- char *usershadow_boot = "";
- char *usershadow_shutdown = "";
-
-
- int uid_auto_active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->userUIDAutoCheck));
- if (uid_auto_active){
- uid_string="";
- } else {
- int config_size=0;
- int final_size=0;
- config_str config_users = yon_config_get_all_by_key(USERADD_SEARCH_macro,&config_size);
- yon_char_parsed_prepend_strings(config_users,config_size,":");
- config_str final = yon_char_parsed_merge(main_config.users,main_config.users_size,config_users,config_size,&final_size);
-
- uid_string = (char*)gtk_entry_get_text(GTK_ENTRY(window->userUIDEntry));
- if (strcmp(uid_string,window->last_uid)){
- if (!gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->userCreateUnuniqueCheck))){
- int found=0;
- for (int i=0;i2&&!strcmp(parsed[2],uid_string)){
- if (yon_char_is_empty(window->last_uid)||(!yon_char_is_empty(window->last_uid)&&strcmp(parsed[2],window->last_uid))){
- found = yon_char_parsed_check_exist(config_users,config_size,final[i])>-1?1:2;
- break;
- }
- }
-
- if (parsed_size) yon_char_parsed_free(parsed,parsed_size);
- }
- if (found){
- yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),found==1?UID_ALREADY_EXIST_CONFIG_LABEL:UID_ALREADY_EXIST_SYSTEM_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
- yon_ubl_status_highlight_incorrect(window->userUIDEntry);
- return;
- }
- }
- }
-
- if (yon_char_is_empty(uid_string)){
- yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
- yon_ubl_status_highlight_incorrect(window->userUIDEntry);
- return;
- }
- }
-
- int do_not_check_actve = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->userDontCheckCheck));
- if (do_not_check_actve)
- do_not_check = "--badnames";
-
- login = (char*)gtk_entry_get_text(GTK_ENTRY(window->userLoginEntry));
- if (login[0]>'0'&&login[0]<'9'&&!do_not_check_actve){
- yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),USER_BEGINS_WITH_DIGIT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
- yon_ubl_status_highlight_incorrect(window->userLoginEntry);
- return;
- }
- if (yon_char_is_empty(login)){
- yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
- yon_ubl_status_highlight_incorrect(window->userLoginEntry);
- return;
- }
-
- int password_active = gtk_combo_box_get_active(GTK_COMBO_BOX(window->userPasswordCombo));
- if (password_active > 1){
- password = (char*)gtk_entry_get_text(GTK_ENTRY(window->userPasswordEntry));
- if (yon_char_is_empty(password)){
- yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
- yon_ubl_status_highlight_incorrect(window->userPasswordEntry);
- return;
- }
- } else if (password_active==1){
- password = "!*";
- } else {
- password="";
- }
-
- char *old_password = NULL;
- if (window->old_password){
- old_password = window->old_password;
- yon_check_password_blocked(old_password);
- }
- if (!old_password||(old_password&&strcmp(old_password,password))){
- time_t t = time(NULL);
- struct tm tm = *localtime(&t);
- char *month = yon_char_from_int(tm.tm_mon+1);
- if (strlen(month)==1){
- month=yon_char_append("0",month);
- }
- char *day = yon_char_from_int(tm.tm_mday);
- if (strlen(day)<2){
- day=yon_char_append("0",day);
- }
- password_changed_date = yon_char_unite(yon_char_from_int(1900+tm.tm_year),"-",month,"-",day,NULL);
- } else {
- password_changed_date = (char*)gtk_entry_get_text(GTK_ENTRY(window->userPasswordChangedEntry));
- }
-
- deactivate = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->userDeactivatedCheck));
- if (deactivate){
- if (strlen(password)>1&&password[0]=='%'&&password[1]=='%'){
- char *temp = yon_char_replace(password,"%%","!!");
- password = yon_char_replace(temp,"!!","%%!");
- } else {
- password = yon_char_append("!",password);
- }
- }
-
- username = (char*)gtk_entry_get_text(GTK_ENTRY(window->userUserNameEntry));
- if (yon_char_is_empty(username)){
- username="";
- }
-
- int main_group_active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->userGroupsCheck));
- if (!main_group_active){
- main_group = (char*)gtk_entry_get_text(GTK_ENTRY(window->userGroupsEntry));
- } else {
- main_group = "";
- }
-
- additional_groups = (char*)gtk_entry_get_text(GTK_ENTRY(window->userAdditionalGroupsEntry));
- char *default_groups = yon_config_get_by_key(USERGROUPS_parameter);
- if (!yon_char_is_empty(default_groups)&&!strcmp(default_groups,additional_groups)){
- additional_groups="";
- }
- long password_change_interval_minimum_active = gtk_spin_button_get_value(GTK_SPIN_BUTTON(window->userPasswordChangeDelayMinimumSpin));
- if (password_change_interval_minimum_active>0){
- password_change_interval_minimum = yon_char_from_long(password_change_interval_minimum_active);
- } else password_change_interval_minimum = 0;
-
- long password_change_interval_maximum_active = gtk_spin_button_get_value(GTK_SPIN_BUTTON(window->userPasswordChangeDelayMaximumSpin));
- if (password_change_interval_minimum_active>0){
- password_change_interval_maximum = yon_char_from_long(password_change_interval_maximum_active);
- } else password_change_interval_maximum = 0;
-
- password_expiration_date = (char*)gtk_entry_get_text(GTK_ENTRY(window->userPasswordExpirationEntry));
- if (yon_char_is_empty(password_expiration_date)){
- password_expiration_date="-1";
- }
-
- long warning_days_active = gtk_spin_button_get_value(GTK_SPIN_BUTTON(window->userWarningSpin));
- if (warning_days_active>0)
- warning_days = yon_char_from_long(warning_days_active);
-
- int no_activity_days_active = gtk_spin_button_get_value(GTK_SPIN_BUTTON(window->userActivitySpin));
- if (no_activity_days_active>0){
- no_activity_days = yon_char_from_long(no_activity_days_active);
- }
-
- int user_shell_active = gtk_combo_box_get_active(GTK_COMBO_BOX(window->userShellCombo));
- if (user_shell_active>0){
- char *shell_string = (char*)gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(window->userShellCombo));
- if (strcmp(shell_string,SET_LABEL)){
- user_shell = yon_char_unite("--shell ",shell_string," ",NULL);
- } else {
- user_shell = yon_char_unite("--shell ",(char*)gtk_entry_get_text(GTK_ENTRY(window->userShellEntry)),NULL);
- }
- } else user_shell="";
-
- int user_home_active = gtk_combo_box_get_active(GTK_COMBO_BOX(window->userHomeCombo));
- if (user_home_active==2){
- user_home=yon_char_unite("--home-dir ",(char*)gtk_entry_get_text(GTK_ENTRY(window->userHomeEntry)),NULL);
- } else if (user_home_active==1){
- user_home="--no-create-home";
- } else user_home = "";
-
- int system_user_active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->userCreateSystemCheck));
- if (system_user_active)
- create_system_user = "--system";
-
- int create_ununique_active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->userCreateUnuniqueCheck));
- if (create_ununique_active)
- create_ununique = "--non-unique";
-
- samba_sync = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->userSyncSAMBACheck));
- samba_password_sync = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->userSyncSAMBAPasswordCheck));
- if (samba_sync){
- if (yon_samba_sync_get(login)==2)
- yon_samba_sync_remove(login);
- yon_samba_sync_add(login,NULL);
- } else if (samba_password_sync){
- if (yon_samba_sync_get(login)==1)
- yon_samba_sync_remove(login);
- yon_samba_sync_add(login,password);
- } else {
- yon_samba_sync_remove(login);
- }
-
- extra_options=(char*)gtk_entry_get_text(GTK_ENTRY(window->userExtraOptionsEntry));
-
- int force_at_next_login_active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->userForceChangeCheck));
- if (force_at_next_login_active){
- password_changed_date = "0";
- }
-
- int useradd_boot_active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->UseraddBootCheck));
- if (useradd_boot_active){
- useradd_boot = "boot";
- }
-
- int useradd_shutdown_active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->UseraddShutdownCheck));
- if (useradd_shutdown_active){
- useradd_shutdown = "shutdown";
- }
-
- int usershadow_boot_active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->UsershadowBootCheck));
- if (usershadow_boot_active){
- usershadow_boot = "boot";
- }
-
- int usershadow_shutdown_active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->UsershadowShutdownCheck));
- if (usershadow_shutdown_active){
- usershadow_shutdown = "shutdown";
- }
-
-
- char *useradd_sync_string = NULL;
- useradd_sync_string = yon_char_unite(useradd_boot,!yon_char_is_empty(useradd_boot)?",":"",useradd_shutdown,NULL);
- char *usershadow_sync_string = NULL;
- usershadow_sync_string = yon_char_unite(usershadow_boot,!yon_char_is_empty(usershadow_boot)?",":"",usershadow_shutdown,NULL);
- char *shadow_string = NULL;
- shadow_string = yon_char_unite(yon_char_return_if_exist(password_changed_date,""),
- ":",yon_char_return_if_exist(password_change_interval_minimum,""),
- ":",yon_char_return_if_exist(password_change_interval_maximum,""),
- ":",yon_char_return_if_exist(warning_days,""),
- ":",yon_char_return_if_exist(no_activity_days,""),
- ":",yon_char_return_if_exist(password_expiration_date,""),
- NULL);
-
- final_user = yon_char_unite(yon_char_return_if_exist(username,"x"),
- ":",yon_char_return_if_exist(uid_string,"x"),
- ":",yon_char_return_if_exist(main_group,"x"),
- ":",yon_char_return_if_exist(additional_groups,"x"),
- ":",yon_char_return_if_exist(extra_options,""),
- ":",yon_char_return_if_exist(password,""),
- NULL);
-
- char *final_command = yon_config_parameter_prepare_command(dull_parameter_get_command,NULL,"users",USERADD(login));
- yon_config_register(USERADD(login),final_command,final_user);
- if (!yon_char_is_empty(window->old_username)&&strcmp(window->old_username,login)){
- yon_config_remove_by_key(USERADD(window->old_username));
- }
- final_command = yon_config_parameter_prepare_command(dull_parameter_get_command,NULL,"users",USERSHADOW(login));
- yon_config_register(USERSHADOW(login),final_command,shadow_string);
- if (!yon_char_is_empty(window->old_username)&&strcmp(window->old_username,login)){
- yon_config_remove_by_key(USERSHADOW(window->old_username));
- }
- 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)){
- final_command = yon_config_parameter_prepare_command(dull_parameter_get_command,NULL,"users",USERADD_SYNC(login));
- yon_config_register(USERADD_SYNC(login),final_command,useradd_sync_string);
- if (!yon_char_is_empty(window->old_username)&&strcmp(window->old_username,login)){
- yon_config_remove_by_key(USERADD_SYNC(window->old_username));
- }
- } else {
- yon_config_remove_by_key(USERADD_SYNC(window->old_username));
- }
-
- if (!yon_char_is_empty(usershadow_sync_string)){
- final_command = yon_config_parameter_prepare_command(dull_parameter_get_command,NULL,"users",USERSHADOW_SYNC(login));
- yon_config_register(USERSHADOW_SYNC(login),final_command,usershadow_sync_string);
- if (!yon_char_is_empty(window->old_username)&&strcmp(window->old_username,login)){
- yon_config_remove_by_key(USERSHADOW_SYNC(window->old_username));
- }
- } else {
- yon_config_remove_by_key(USERSHADOW_SYNC(window->old_username));
- }
- GtkTreeIter iter;
- GtkTreeModel *model = GTK_TREE_MODEL(widgets->UsersList);
- char *password_status=NULL;
- if (password_active==0) password_status = DEFAULT_USER_LABEL;
- else if (password_active==1) password_status = NO_PASSWORD_LABEL;
- else if (password[0]=='%'&&password[1]=='%') password_status = UNENCRYPTED_LABEL;
- else password_status = ENCRYPTED_LABEL;
- if (!gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->UsersTree)),&model,&iter))
- gtk_list_store_append(widgets->UsersList,&iter);
- gtk_list_store_set(widgets->UsersList,&iter,
- 0,deactivate,
- 1,yon_char_return_if_exist(uid_string,""),
- 2,yon_char_return_if_exist(login,""),
- 3,yon_char_return_if_exist(username,""),
- 4,yon_char_return_if_exist(main_group,login),
- 5,yon_char_return_if_exist(additional_groups,yon_config_get_by_key(USERGROUPS_parameter)),
- 6,yon_char_unite(yon_char_return_if_exist(user_home,""),yon_char_return_if_exist(user_shell,""),yon_char_return_if_exist(create_system_user,""),yon_char_return_if_exist(create_ununique,""),yon_char_return_if_exist(do_not_check,""),NULL),
- 7,password_status,
- -1);
- on_subwindow_close(self);
-}
-
void on_toggle_button_set_active_from_combo_box(GtkComboBox *self,ubl_settings_usergroups_user_window *window){
char *passw = (char*)gtk_entry_get_text(GTK_ENTRY(window->userPasswordEntry));
if (gtk_combo_box_get_active(self)<=1||(passw[0]=='$')){
@@ -2303,21 +1325,6 @@ void on_toggle_button_set_active_from_combo_box(GtkComboBox *self,ubl_settings_u
}
}
-void on_password_user_changed(GtkComboBox *,ubl_settings_usergroups_user_window *window){
- char *passw = (char*)gtk_entry_get_text(GTK_ENTRY(window->userPasswordEntry));
- if ((passw[0]=='$')){
- gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->userSyncSAMBACheck),0);
- gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->userSyncSAMBAPasswordCheck),0);
- gtk_widget_set_sensitive(GTK_WIDGET(window->userSyncSAMBAPasswordCheck),0);
- } else {
- gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->userSyncSAMBACheck),0);
- gtk_widget_set_sensitive(GTK_WIDGET(window->userSyncSAMBACheck),1);
- gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->userSyncSAMBAPasswordCheck),0);
- gtk_widget_set_sensitive(GTK_WIDGET(window->userSyncSAMBAPasswordCheck),1);
-
- }
-}
-
void on_toggle_button_set_active_from_toggle_button_inversed(GtkToggleButton *, ubl_settings_usergroups_user_window *window){
char *passw = (char*)gtk_entry_get_text(GTK_ENTRY(window->userPasswordEntry));
if ((passw[0]!='$')&>k_combo_box_get_active(GTK_COMBO_BOX(window->userPasswordCombo))>1){
@@ -2360,210 +1367,12 @@ void on_date_selected(GtkWidget *, ubl_settings_usergroups_user_window *window){
free(yr);
}
-void on_parameter_changed(GtkWidget *,ubl_settings_usergroups_user_window *window){
- char *user_shell=NULL;
- char *user_home=NULL;
- char *login=NULL;
- char *create_system_user=NULL;
- char *create_ununique=NULL;
- char *do_not_check=NULL;
- char *main_group=NULL;
- char *no_user_group=NULL;
-
- int do_not_check_actve = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->userDontCheckCheck));
- if (do_not_check_actve)
- do_not_check = "--badnames";
-
- login = (char*)gtk_entry_get_text(GTK_ENTRY(window->userLoginEntry));
- if (login[0]>'0'&&login[0]<'9'&&!do_not_check_actve){
- yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),USER_BEGINS_WITH_DIGIT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
- yon_ubl_status_highlight_incorrect(window->userLoginEntry);
- return;
- }
- if (yon_char_is_empty(login)){
- yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
- yon_ubl_status_highlight_incorrect(window->userLoginEntry);
- return;
- }
-
- int user_shell_active = gtk_combo_box_get_active(GTK_COMBO_BOX(window->userShellCombo));
- if (user_shell_active>0){
- user_shell = yon_char_unite("--shell ",!strcmp(gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->userShellCombo)),"Set")?(char*)gtk_entry_get_text(GTK_ENTRY(window->userShellEntry)):(char*)gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(window->userShellCombo)),NULL);
-
- } else user_shell="";
-
- int user_home_active = gtk_combo_box_get_active(GTK_COMBO_BOX(window->userHomeCombo));
- if (user_home_active==2){
- char *path = (char*)gtk_entry_get_text(GTK_ENTRY(window->userHomeEntry));
- if (!yon_char_is_empty(path))
- user_home=yon_char_unite("--home-dir ",path,NULL);
- else user_home = "";
- } else if (user_home_active==1){
- user_home="--no-create-home";
- } else user_home = "";
-
- int system_user_active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->userCreateSystemCheck));
- if (system_user_active)
- create_system_user = "--system";
-
- int create_ununique_active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->userCreateUnuniqueCheck));
- if (create_ununique_active)
- create_ununique = "--non-unique";
- int main_group_active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->userGroupsCheck));
- if (!main_group_active){
- main_group = (char*)gtk_entry_get_text(GTK_ENTRY(window->userGroupsEntry));
- if (yon_char_is_empty(main_group)){
- no_user_group="--no-user-group";
- }
- } else {
- main_group = "";
- }
- char *final_string = user_home;
- final_string = yon_char_unite(final_string,!yon_char_is_empty(final_string)?" ":"",
- yon_char_return_if_exist(user_shell,""),
- !yon_char_is_empty(user_shell)?" ":"",
- yon_char_return_if_exist(create_system_user,""),
- !yon_char_is_empty(create_system_user)?" ":"",
- yon_char_return_if_exist(create_ununique,""),
- !yon_char_is_empty(create_ununique)?" ":"",
- yon_char_return_if_exist(do_not_check,""),
- !yon_char_is_empty(do_not_check)?" ":"",
- yon_char_return_if_exist(no_user_group,""),
- NULL);
- if (final_string&&strlen(final_string)){
- if (final_string[strlen(final_string)-1]==' ') final_string[strlen(final_string)-1]='\0';
- gtk_entry_set_text(GTK_ENTRY(window->userExtraOptionsEntry),final_string);
- free(final_string);
- } else {
- gtk_entry_set_text(GTK_ENTRY(window->userExtraOptionsEntry),"");
- }
-}
-
void on_remove_expired(GtkWidget *, GtkEntryIconPosition icon_pos, GdkEvent *, GtkEntry *target){
if (icon_pos == GTK_ENTRY_ICON_SECONDARY){
gtk_entry_set_text(target,"");
}
}
-ubl_settings_usergroups_user_window *yon_ubl_settings_usergroups_user_new(){
- ubl_settings_usergroups_user_window *window = malloc(sizeof(ubl_settings_usergroups_user_window));
- GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_ubl_settings_usergroups_user);
- window->CreateUserWindow=yon_gtk_builder_get_widget(builder,"CreateUserWindow");
- window->StatusBox=yon_gtk_builder_get_widget(builder,"StatusBox");
- window->userUIDAutoCheck=yon_gtk_builder_get_widget(builder,"userUIDAutoCheck");
- window->userUIDEntry=yon_gtk_builder_get_widget(builder,"userUIDEntry");
- window->userLoginEntry=yon_gtk_builder_get_widget(builder,"userLoginEntry");
- window->userPasswordCombo=yon_gtk_builder_get_widget(builder,"userPasswordCombo");
- window->userPasswordEntry=yon_gtk_builder_get_widget(builder,"userPasswordEntry");
- window->userPasswordButton=yon_gtk_builder_get_widget(builder,"userPasswordButton");
- window->userUserNameEntry=yon_gtk_builder_get_widget(builder,"userUserNameEntry");
- window->userGroupsCheck=yon_gtk_builder_get_widget(builder,"userGroupsCheck");
- window->userGroupsEntry=yon_gtk_builder_get_widget(builder,"userGroupsEntry");
- window->UserGroupsButton=yon_gtk_builder_get_widget(builder,"UserGroupsButton");
- window->userAdditionalGroupsEntry=yon_gtk_builder_get_widget(builder,"userAdditionalGroupsEntry");
- window->userAdditionalGroupsButton=yon_gtk_builder_get_widget(builder,"userAdditionalGroupsButton");
- window->userPasswordChangedEntry=yon_gtk_builder_get_widget(builder,"userPasswordChangedEntry");
- window->userPasswordExpirationEntry=yon_gtk_builder_get_widget(builder,"userPasswordExpirationEntry");
- window->userPasswordExpirationButton=yon_gtk_builder_get_widget(builder,"userPasswordExpirationButton");
- window->userPasswordChangeDelayMinimumSpin=yon_gtk_builder_get_widget(builder,"userPasswordChangeDelayMinimumSpin");
- window->userPasswordChangeDelayMaximumSpin=yon_gtk_builder_get_widget(builder,"userPasswordChangeDelayMaximumSpin");
- window->userWarningSpin=yon_gtk_builder_get_widget(builder,"userWarningSpin");
- window->userActivitySpin=yon_gtk_builder_get_widget(builder,"userActivitySpin");
- window->userForceChangeCheck=yon_gtk_builder_get_widget(builder,"userForceChangeCheck");
- window->userShellCombo=yon_gtk_builder_get_widget(builder,"userShellCombo");
- window->userShellEntry=yon_gtk_builder_get_widget(builder,"userShellEntry");
- window->userHomeCombo=yon_gtk_builder_get_widget(builder,"userHomeCombo");
- window->userHomeEntry=yon_gtk_builder_get_widget(builder,"userHomeEntry");
- window->userHomeButton=yon_gtk_builder_get_widget(builder,"userHomeButton");
- window->userCreateSystemCheck=yon_gtk_builder_get_widget(builder,"userCreateSystemCheck");
- window->userCreateUnuniqueCheck=yon_gtk_builder_get_widget(builder,"userCreateUnuniqueCheck");
- window->userDontCheckCheck=yon_gtk_builder_get_widget(builder,"userDontCheckCheck");
- window->userSyncSAMBACheck=yon_gtk_builder_get_widget(builder,"userSyncSAMBACheck");
- window->userSyncSAMBAPasswordCheck=yon_gtk_builder_get_widget(builder,"userSyncSAMBAPasswordCheck");
- window->userDeactivatedCheck=yon_gtk_builder_get_widget(builder,"userDeactivatedCheck");
- window->userExtraOptionsEntry=yon_gtk_builder_get_widget(builder,"userExtraOptionsEntry");
- window->UserCancelButton=yon_gtk_builder_get_widget(builder,"UserCancelButton");
- window->UserOkButton=yon_gtk_builder_get_widget(builder,"UserOkButton");
- window->CalendarPopup=yon_gtk_builder_get_widget(builder,"CalendarPopover");
- window->UseraddBootCheck=yon_gtk_builder_get_widget(builder,"UseraddBootCheck");
- window->ExpirationCalendar=yon_gtk_builder_get_widget(builder,"ExpirationCalendar");
- window->UseraddShutdownCheck=yon_gtk_builder_get_widget(builder,"UseraddShutdownCheck");
- window->UsershadowBootCheck=yon_gtk_builder_get_widget(builder,"UsershadowBootCheck");
- window->UsershadowShutdownCheck=yon_gtk_builder_get_widget(builder,"UsershadowShutdownCheck");
- window->userTitleNameLabel=yon_gtk_builder_get_widget(builder,"userTitleNameLabel");
- window->expiration_unix=NULL;
- window->last_uid=NULL;
-
- time_t t = time(NULL);
- struct tm tm = *localtime(&t);
- gtk_calendar_select_day(GTK_CALENDAR(window->ExpirationCalendar),tm.tm_mday);
- gtk_calendar_select_month(GTK_CALENDAR(window->ExpirationCalendar),tm.tm_mon,1900+tm.tm_year);
-
- on_UID_update(NULL,window);
- int shell_size=0;
- config_str shells = yon_file_open(shell_list_path,&shell_size);
- for (int i=1;iuserShellCombo),parsed[0],parsed[0]);
- yon_char_parsed_free(parsed,parsed_size);
- }
- }
- gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(window->userShellCombo),"Set",SET_LABEL);
- yon_char_parsed_free(shells,shell_size);
- gtk_combo_box_set_active(GTK_COMBO_BOX(window->userShellCombo),0);
- window->old_password=NULL;
- window->old_username=NULL;
- dictionary *entry_dict = NULL;
- yon_window_config_custom_window_setup(GTK_WINDOW(window->CreateUserWindow),"UserWindow");
- yon_dictionary_add_or_create_if_exists_with_data(entry_dict,"combo",window->userPasswordCombo);
- yon_dictionary_add_or_create_if_exists_with_data(entry_dict,"entry",window->userPasswordEntry);
- // char *password = yon_config_get_by_key(USERADD((char*)gtk_entry_get_text(GTK_ENTRY(window->userLoginEntry))));
- g_signal_connect(G_OBJECT(window->UserCancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
- g_signal_connect(G_OBJECT(window->userUIDAutoCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button_inversed),window->userUIDEntry);
- g_signal_connect(G_OBJECT(window->userHomeButton),"clicked",G_CALLBACK(on_filechooser_open),window->userHomeEntry);
- g_signal_connect(G_OBJECT(window->UserGroupsButton),"clicked",G_CALLBACK(on_groups_clicked),window->userGroupsEntry);
- g_signal_connect(G_OBJECT(window->userPasswordButton),"clicked",G_CALLBACK(on_password_change),entry_dict);
- g_signal_connect(G_OBJECT(window->userAdditionalGroupsButton),"clicked",G_CALLBACK(on_groups_multiple_clicked),window->userAdditionalGroupsEntry);
- g_signal_connect(G_OBJECT(window->userPasswordExpirationButton),"clicked",G_CALLBACK(on_expiration_clicked),window);
- g_signal_connect(G_OBJECT(window->userUIDAutoCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button_inversed),window->userUIDEntry);
- g_signal_connect(G_OBJECT(window->userHomeCombo),"changed",G_CALLBACK(on_password_combo_changed),window->userHomeEntry);
- g_signal_connect(G_OBJECT(window->userHomeCombo),"changed",G_CALLBACK(on_password_combo_changed),window->userHomeButton);
- g_signal_connect(G_OBJECT(window->userPasswordCombo),"changed",G_CALLBACK(on_password_combo_changed),window->userPasswordButton);
- g_signal_connect(G_OBJECT(window->userGroupsCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button_inversed),window->userGroupsEntry);
- g_signal_connect(G_OBJECT(window->userGroupsCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button_inversed),window->UserGroupsButton);
- g_signal_connect(G_OBJECT(window->userShellCombo),"changed",G_CALLBACK(on_user_shell_changed),window);
- g_signal_connect(G_OBJECT(window->ExpirationCalendar),"day-selected",G_CALLBACK(on_date_selected),window);
- g_signal_connect(G_OBJECT(window->userUIDAutoCheck),"toggled",G_CALLBACK(on_UID_update),window);
- g_signal_connect(G_OBJECT(window->userCreateSystemCheck),"toggled",G_CALLBACK(on_UID_update),window);
- g_signal_connect(G_OBJECT(window->userGroupsCheck),"toggled",G_CALLBACK(on_user_login_update),window);
- g_signal_connect(G_OBJECT(window->userLoginEntry),"changed",G_CALLBACK(on_user_login_update),window);
- g_signal_connect(G_OBJECT(window->userUIDAutoCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button),window->userCreateSystemCheck);
- g_signal_connect(G_OBJECT(window->userUIDAutoCheck),"toggled",G_CALLBACK(yon_gtk_toggle_button_set_inactive_from_toggle_button),window->userCreateSystemCheck);
- g_signal_connect(G_OBJECT(window->userUIDAutoCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button_inversed),window->userCreateUnuniqueCheck);
- g_signal_connect(G_OBJECT(window->userUIDAutoCheck),"toggled",G_CALLBACK(yon_gtk_toggle_button_set_inactive_from_toggle_button_inversed),window->userCreateUnuniqueCheck);
- g_signal_connect(G_OBJECT(window->userSyncSAMBACheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button_inversed),window->userSyncSAMBAPasswordCheck);
- g_signal_connect(G_OBJECT(window->userSyncSAMBAPasswordCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button_inversed),window->userSyncSAMBACheck);
- g_signal_connect(G_OBJECT(window->userSyncSAMBACheck),"toggled",G_CALLBACK(on_toggle_button_set_active_from_toggle_button_inversed),window);
- g_signal_connect(G_OBJECT(window->userSyncSAMBAPasswordCheck),"toggled",G_CALLBACK(on_toggle_button_set_active_from_toggle_button_inversed),window);
- g_signal_connect(G_OBJECT(window->userPasswordCombo),"changed",G_CALLBACK(on_toggle_button_set_active_from_combo_box),window);
- g_signal_connect(G_OBJECT(window->userPasswordCombo),"changed",G_CALLBACK(on_toggle_button_set_active_from_combo_box),window);
- g_signal_connect(G_OBJECT(window->userPasswordEntry),"changed",G_CALLBACK(on_password_user_changed),window);
- g_signal_connect(G_OBJECT(window->userHomeEntry),"changed",G_CALLBACK(on_parameter_changed),window);
- g_signal_connect(G_OBJECT(window->userHomeCombo),"changed",G_CALLBACK(on_parameter_changed),window);
- g_signal_connect(G_OBJECT(window->userShellCombo),"changed",G_CALLBACK(on_parameter_changed),window);
- g_signal_connect(G_OBJECT(window->userShellEntry),"changed",G_CALLBACK(on_parameter_changed),window);
- g_signal_connect(G_OBJECT(window->userCreateSystemCheck),"toggled",G_CALLBACK(on_parameter_changed),window);
- g_signal_connect(G_OBJECT(window->userCreateUnuniqueCheck),"toggled",G_CALLBACK(on_parameter_changed),window);
- g_signal_connect(G_OBJECT(window->userDontCheckCheck),"toggled",G_CALLBACK(on_parameter_changed),window);
- g_signal_connect(G_OBJECT(window->userGroupsCheck),"toggled",G_CALLBACK(on_parameter_changed),window);
- g_signal_connect(G_OBJECT(window->userGroupsEntry),"changed",G_CALLBACK(on_parameter_changed),window);
- g_signal_connect(G_OBJECT(window->userPasswordExpirationEntry),"icon-press",G_CALLBACK(on_remove_expired),window->userPasswordExpirationEntry);
- g_signal_connect(G_OBJECT(window->userUIDEntry),"insert-text",G_CALLBACK(yon_on_text_insert_only_digits),NULL);
-return window;
-}
void on_main_add(GtkWidget *, main_window *widgets){
if (gtk_notebook_get_current_page(GTK_NOTEBOOK(widgets->MainNotebook))==0){
@@ -2612,6 +1421,14 @@ void on_main_edit(GtkWidget *, main_window *widgets){
char *name;
gtk_tree_model_get(GTK_TREE_MODEL(widgets->UsersList),&iter,2,&name,-1);
char *parameter_string = yon_config_get_by_key(USERADD(name));
+ char *sync = config(USERADD_SYNC(name));
+ if (!yon_char_is_empty(sync)){
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->UseraddBootCheck),!!strstr(sync,"boot"));
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->UseraddShutdownCheck),!!strstr(sync,"shutdown"));
+ } else {
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->UseraddBootCheck),0);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->UseraddShutdownCheck),0);
+ }
int parsed_size=0;
if (parameter_string){
if (parameter_string[0]=='\"') yon_char_divide(parameter_string,0);
@@ -2632,7 +1449,7 @@ void on_main_edit(GtkWidget *, main_window *widgets){
window->last_uid=yon_char_new(parameters[1]);
}
if (parsed_size>2){
- if (!strcmp(parameters[2],"x"))
+ if (!strcmp(parameters[2],"x")||!strcmp(parameters[2],""))
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->userGroupsCheck),1);
else {
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->userGroupsCheck),0);
@@ -2640,13 +1457,16 @@ void on_main_edit(GtkWidget *, main_window *widgets){
}
}
if (parsed_size>3){
- if (strcmp(parameters[3],"x")){
+ if (!yon_char_is_empty(parameters[3])&&strcmp(parameters[3],"x")){
gtk_entry_set_text(GTK_ENTRY(window->userAdditionalGroupsEntry), parameters[3]);
} else {
char *default_groups = yon_config_get_by_key(USERGROUPS_parameter);
gtk_entry_set_text(GTK_ENTRY(window->userAdditionalGroupsEntry), default_groups);
}
+ } else {
+ char *default_groups = yon_config_get_by_key(USERGROUPS_parameter);
+ gtk_entry_set_text(GTK_ENTRY(window->userAdditionalGroupsEntry), default_groups);
}
if (parsed_size>4&&!yon_char_is_empty(parameters[4])&&strcmp(parameters[4],"")&&strcmp(parameters[4],"x")){
int params_size;
@@ -2767,6 +1587,7 @@ void on_main_edit(GtkWidget *, main_window *widgets){
char *name;
gtk_tree_model_get(model,&iter,1,&name,-1);
char *config_string = yon_config_get_by_key(GROUPADD(name));
+ char *sync_string = config(GROUPADD_SYNC(name));
if (!yon_char_is_empty(config_string)){
if (config_string[0]=='\"') yon_char_divide(config_string,0);
if (config_string[strlen(config_string)-1]=='\"') config_string[strlen(config_string)-1]='\0';
@@ -2804,12 +1625,18 @@ void on_main_edit(GtkWidget *, main_window *widgets){
}
}
if (size>4){
- if (strcmp(parsed[4],"")&&strcmp(parsed[4],"x")){
- gtk_entry_set_text(GTK_ENTRY(window->PasswordEntry),parsed[4]);
- gtk_combo_box_set_active(GTK_COMBO_BOX(window->PasswordCombo),2);
- } else {
- gtk_combo_box_set_active(GTK_COMBO_BOX(window->PasswordCombo),0);
+ if (!yon_char_is_empty(parsed[4])){
+ if (!strcmp(parsed[4],"!*")||!strcmp(parsed[4],"!")||!strcmp(parsed[4],"*")){
+ gtk_combo_box_set_active(GTK_COMBO_BOX(window->PasswordCombo),1);
+ gtk_entry_set_text(GTK_ENTRY(window->PasswordEntry),"");
+ } else if (strcmp(parsed[4],"x")){
+ gtk_entry_set_text(GTK_ENTRY(window->PasswordEntry),parsed[4]);
+ gtk_combo_box_set_active(GTK_COMBO_BOX(window->PasswordCombo),2);
+
+ }
}
+ } else {
+ gtk_combo_box_set_active(GTK_COMBO_BOX(window->PasswordCombo),0);
}
char *sync = yon_config_get_by_key(GROUPADD_SYNC(name));
if (sync){
@@ -2818,7 +1645,11 @@ void on_main_edit(GtkWidget *, main_window *widgets){
} else {
yon_ubl_status_box_render(LOADING_FAILED_LABEL,BACKGROUND_IMAGE_FAIL_TYPE);
}
-
+ if (!yon_char_is_empty(sync_string)){
+ if (!strcmp(sync_string,"shutdown")){
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->GroupaddShutdownCheck),1);
+ }
+ }
gtk_window_set_transient_for(GTK_WINDOW(window->CreateGroupWindow),GTK_WINDOW(widgets->Window));
gtk_widget_show(window->CreateGroupWindow);
}
@@ -2831,9 +1662,6 @@ void on_main_edit_activate(GtkWidget *self, GtkTreePath *, GtkTreeViewColumn *,
}
void on_main_delete(GtkWidget *, main_window *widgets){
- dialog_confirmation_data *data=malloc(sizeof(dialog_confirmation_data));
- data->function=NULL;
- data->data=NULL;
int active = gtk_notebook_get_current_page(GTK_NOTEBOOK(widgets->MainNotebook));
switch(active){
case 0:
@@ -2849,30 +1677,52 @@ void on_main_delete(GtkWidget *, main_window *widgets){
if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->SystemTree)),&model,&iter)){
char *target;
gtk_tree_model_get(model,&iter,2,&target,-1);
- dialog_confirmation_data data;
- int found = !!config(USERADD(target));
- if (found){
- data.action_text = SYSTEM_USER_CONFIG_REMOVE_CONFIRMATION_LABEL(target);
- data.function=NULL;
- data.data=NULL;
+ system_remove_confirmation_window *window = yon_system_remove_confirmation_window_new();
+ dictionary *dict = NULL;
+ yon_dictionary_add_or_create_if_exists_with_data(dict,"widgets",widgets);
+ yon_dictionary_add_or_create_if_exists_with_data(dict,"window",window);
+ if (config(USERADD(target))){
+ yon_gtk_window_setup(GTK_WINDOW(window->Window),GTK_WINDOW(widgets->Window),DELETE_CONFIRMATION_TITLE_LABEL,icon_path,"user-deletion-window");
+ gtk_label_set_markup(GTK_LABEL(window->HeaderLabel),DELETE_CONFIRMATION_TITLE_LABEL);
+ gtk_label_set_markup(GTK_LABEL(window->TitleLabel),SYSTEM_USER_CONFIG_REMOVE_CONFIRMATION_LABEL(target));
+ g_signal_connect(G_OBJECT(window->ConfigAcceptButton),"clicked",G_CALLBACK(yon_remove_confirmation_window_accept_clicked),dict);
+ g_signal_connect(G_OBJECT(window->SystemAcceptButton),"clicked",G_CALLBACK(yon_remove_confirmation_window_accept_clicked),dict);
} else {
- data.action_text = SYSTEM_USER_SYSTEM_REMOVE_CONFIRMATION_LABEL(target);
- data.function=NULL;
- data.data=NULL;
-
- }
- if (yon_confirmation_dialog_call(widgets->Window,&data)!=GTK_RESPONSE_ACCEPT){
- return;
- }
- if (found){
- yon_delete_confirmation_open(widgets);
- } else {
- yon_system_delete_confirmation_open(widgets);
+ gtk_label_set_markup(GTK_LABEL(window->HeaderLabel),DELETE_CONFIRMATION_TITLE_LABEL);
+ gtk_label_set_markup(GTK_LABEL(window->TitleLabel),SYSTEM_USER_SYSTEM_REMOVE_CONFIRMATION_LABEL(target));
+ gtk_widget_show(window->AcceptButton);
+ gtk_widget_hide(window->ConfigAcceptButton);
+ gtk_widget_hide(window->SystemAcceptButton);
+ g_signal_connect(G_OBJECT(window->AcceptButton),"clicked",G_CALLBACK(yon_remove_confirmation_window_accept_clicked),dict);
}
+ gtk_widget_show(window->Window);
}
}break;
case 3:{
-
+ GtkTreeModel *model = GTK_TREE_MODEL(widgets->liststore2);
+ GtkTreeIter iter;
+ if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->SystemGroupsTree)),&model,&iter)){
+ char *target;
+ gtk_tree_model_get(model,&iter,1,&target,-1);
+ system_remove_confirmation_window *window = yon_system_remove_confirmation_window_new();
+ dictionary *dict = NULL;
+ yon_dictionary_add_or_create_if_exists_with_data(dict,"widgets",widgets);
+ yon_dictionary_add_or_create_if_exists_with_data(dict,"window",window);
+ gtk_label_set_markup(GTK_LABEL(window->HeaderLabel),DELETE_GROUP_CONFIRMATION_TITLE_LABEL);
+ if (config(GROUPADD(target))){
+ yon_gtk_window_setup(GTK_WINDOW(window->Window),GTK_WINDOW(widgets->Window),DELETE_GROUP_CONFIRMATION_TITLE_LABEL,icon_path,"user-deletion-window");
+ gtk_label_set_markup(GTK_LABEL(window->TitleLabel),SYSTEM_GROUP_CONFIG_REMOVE_CONFIRMATION_LABEL(target));
+ g_signal_connect(G_OBJECT(window->ConfigAcceptButton),"clicked",G_CALLBACK(yon_remove_confirmation_window_accept_clicked),dict);
+ g_signal_connect(G_OBJECT(window->SystemAcceptButton),"clicked",G_CALLBACK(yon_remove_confirmation_window_accept_clicked),dict);
+ } else {
+ gtk_label_set_markup(GTK_LABEL(window->TitleLabel),SYSTEM_GROUP_SYSTEM_REMOVE_CONFIRMATION_LABEL(target));
+ gtk_widget_show(window->AcceptButton);
+ gtk_widget_hide(window->ConfigAcceptButton);
+ gtk_widget_hide(window->SystemAcceptButton);
+ g_signal_connect(G_OBJECT(window->AcceptButton),"clicked",G_CALLBACK(yon_remove_confirmation_window_accept_clicked),dict);
+ }
+ gtk_widget_show(window->Window);
+ }
}break;
}
}
@@ -2887,103 +1737,6 @@ void on_config_update(GtkWidget *, main_window *widgets){
}
-void on_user_sync_with_config(GtkWidget *,main_window *widgets){
- int active = gtk_notebook_get_current_page(GTK_NOTEBOOK(widgets->MainNotebook));
- switch (active){
- case 2:{
- GtkTreeModel *model = GTK_TREE_MODEL(widgets->liststore1);
- GtkTreeIter iter;
- if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->SystemTree)),&model,&iter)){
- char *target;
- gtk_tree_model_get(model,&iter,2,&target,-1);
- dialog_confirmation_data data;
- if (config(USERADD(target))){
- data.action_text = SYSTEM_USER_SYNC_CONFIRMATION_LABEL(target);
- data.data=NULL;
- data.function=NULL;
- } else {
- data.action_text = SYSTEM_USER_ADD_CONFIRMATION_LABEL(target);
- data.data=NULL;
- data.function=NULL;
- }
- if (yon_confirmation_dialog_call(widgets->Window,&data)!=GTK_RESPONSE_ACCEPT){
- return;
- }
-
- char *user = yon_char_parsed_check_exist_begins_with(main_config.groups,main_config.groups_size,target);
- char *shadow = yon_char_parsed_check_exist_begins_with(main_config.group_shadow,main_config.group_shadow_size,target);
- yon_char_remove_last_symbol(user,'\n');
- yon_char_remove_last_symbol(shadow,'\n');
- int user_size=0;
- int shadow_size=0;
- config_str parsed = yon_char_parse(user,&user_size,":");
- config_str parsed_shadow = yon_char_parse(shadow,&shadow_size,":");
-
- char *optionals = yon_char_unite(user_size>5? parsed[5]:"",user_size>5?" ":"",user_size>6?parsed[6]:"",NULL);
- char *config_user = yon_char_unite(parsed[0],":",
- user_size>4?parsed[4]:"",":",
- user_size>2?parsed[2]:"",":",
- user_size>3?parsed[3]:"",":",
- !yon_char_is_empty(optionals)?optionals:"",":",
- user_size>1&&strcmp(parsed[1],"x")?yon_char_return_if_exist(parsed[1],""):yon_char_return_if_exist(parsed_shadow[1],""),NULL);
- char *config_shadow = yon_char_unite(yon_char_return_if_exist(parsed[2],""),":",
- user_size>3?parsed[3]:"",":",
- user_size>4?parsed[4]:"",":",
- user_size>5?parsed[5]:"",":",
- user_size>6?parsed[6]:"",":",
- user_size>7?parsed[7]:"",":",NULL);
-
- if (!yon_char_is_empty(config_user)){
- char *user_command = yon_config_parameter_prepare_command(dull_parameter_get_command,NULL,"users",USERADD(target));
- yon_config_register(USERADD(target),user_command,config_user);
- }
- if (!yon_char_is_empty(config_shadow)){
- char *shadow_command = yon_config_parameter_prepare_command(dull_parameter_get_command,NULL,"users",USERSHADOW(target));
- yon_config_register(USERSHADOW(target),shadow_command,config_shadow);
- }
- yon_interface_update(widgets);
- }
- yon_interface_update((main_window*)widgets);
- }break;
- case 3:{
- GtkTreeModel *model = GTK_TREE_MODEL(widgets->liststore1);
- GtkTreeIter iter;
- if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->SystemGroupsTree)),&model,&iter)){
-
- char *target;
- gtk_tree_model_get(model,&iter,1,&target,-1);
- dialog_confirmation_data data;
- if (config(GROUPADD(target))){
- data.action_text = SYSTEM_GROUP_ADD_CONFIRMATION_LABEL(target);
- data.data=NULL;
- data.function=NULL;
- } else {
- 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;
- }
- 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;
- }
-}
int yon_element_chosen(GtkWidget *){
return (int)1;
@@ -3073,20 +1826,45 @@ void config_init(){
void on_selection_changed(GtkWidget *, main_window *widgets){
GtkTreeIter iter;
- if (gtk_notebook_get_current_page(GTK_NOTEBOOK(widgets->MainNotebook))==0){
+ int page = gtk_notebook_get_current_page(GTK_NOTEBOOK(widgets->MainNotebook));
+ if (page==0){
GtkTreeModel *model = GTK_TREE_MODEL(widgets->UsersList);
if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->UsersTree)),&model,&iter)){
gtk_widget_set_sensitive(widgets->EditButton,1);
+ gtk_widget_set_sensitive(widgets->DeleteButton,1);
} else {
gtk_widget_set_sensitive(widgets->EditButton,0);
+ gtk_widget_set_sensitive(widgets->DeleteButton,0);
}
- } else {
+ } else if (page==1){
GtkTreeModel *model = GTK_TREE_MODEL(widgets->GroupsList);
if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->GroupsTree)),&model,&iter)){
gtk_widget_set_sensitive(widgets->EditButton,1);
+ gtk_widget_set_sensitive(widgets->DeleteButton,1);
} else {
gtk_widget_set_sensitive(widgets->EditButton,0);
+ gtk_widget_set_sensitive(widgets->DeleteButton,0);
+ }
+ } else if (page == 2){
+ GtkTreeModel *model = GTK_TREE_MODEL(widgets->liststore1);
+ if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->SystemTree)),&model,&iter)){
+ gtk_widget_set_sensitive(widgets->UserAddToConfigButton,1);
+ gtk_widget_set_sensitive(widgets->DeleteButton,1);
+ } else {
+ gtk_widget_set_sensitive(widgets->UserAddToConfigButton,0);
+ gtk_widget_set_sensitive(widgets->DeleteButton,0);
}
+
+ } else if (page == 3){
+ GtkTreeModel *model = GTK_TREE_MODEL(widgets->liststore2);
+ if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->SystemGroupsTree)),&model,&iter)){
+ gtk_widget_set_sensitive(widgets->UserAddToConfigButton,1);
+ gtk_widget_set_sensitive(widgets->DeleteButton,1);
+ } else {
+ gtk_widget_set_sensitive(widgets->UserAddToConfigButton,0);
+ gtk_widget_set_sensitive(widgets->DeleteButton,0);
+ }
+
}
}
@@ -3100,8 +1878,10 @@ void on_notebook_page_changed(GtkWidget *, GtkWidget *, int num, main_window *wi
GtkTreeModel *model = GTK_TREE_MODEL(widgets->UsersList);
if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->UsersTree)),&model,&iter)){
gtk_widget_set_sensitive(widgets->EditButton,1);
+ gtk_widget_set_sensitive(widgets->DeleteButton,1);
} else {
gtk_widget_set_sensitive(widgets->EditButton,0);
+ gtk_widget_set_sensitive(widgets->DeleteButton,0);
}
} else if (num==1){
gtk_widget_show(widgets->AddButton);
@@ -3111,13 +1891,36 @@ void on_notebook_page_changed(GtkWidget *, GtkWidget *, int num, main_window *wi
GtkTreeModel *model = GTK_TREE_MODEL(widgets->GroupsList);
if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->GroupsTree)),&model,&iter)){
gtk_widget_set_sensitive(widgets->EditButton,1);
+ gtk_widget_set_sensitive(widgets->DeleteButton,0);
} else {
gtk_widget_set_sensitive(widgets->EditButton,0);
+ gtk_widget_set_sensitive(widgets->DeleteButton,0);
}
- } else if (num==2||num==3){
+ } else if (num==2){
gtk_widget_hide(widgets->AddButton);
gtk_widget_hide(widgets->EditButton);
gtk_widget_show(widgets->UserAddToConfigButton);
+ GtkTreeModel *model = GTK_TREE_MODEL(widgets->liststore1);
+ if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->SystemTree)),&model,&iter)){
+ gtk_widget_set_sensitive(widgets->UserAddToConfigButton,1);
+ gtk_widget_set_sensitive(widgets->DeleteButton,1);
+ } else {
+ gtk_widget_set_sensitive(widgets->UserAddToConfigButton,0);
+ gtk_widget_set_sensitive(widgets->DeleteButton,0);
+ }
+ } else if (num==3){
+
+ gtk_widget_hide(widgets->AddButton);
+ gtk_widget_hide(widgets->EditButton);
+ gtk_widget_show(widgets->UserAddToConfigButton);
+ GtkTreeModel *model = GTK_TREE_MODEL(widgets->liststore2);
+ if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->SystemGroupsTree)),&model,&iter)){
+ gtk_widget_set_sensitive(widgets->UserAddToConfigButton,1);
+ gtk_widget_set_sensitive(widgets->DeleteButton,1);
+ } else {
+ gtk_widget_set_sensitive(widgets->UserAddToConfigButton,0);
+ gtk_widget_set_sensitive(widgets->DeleteButton,0);
+ }
}
}
@@ -3138,6 +1941,22 @@ gboolean on_menu_open(GtkWidget *self,GdkEventButton *event, rmb_menu_window *wi
return 0;
}
+gboolean on_system_menu_open(GtkWidget *self,GdkEventButton *event, rmb_menu_window *window){
+ if (event->button==3){
+ GtkTreeModel *model = gtk_tree_view_get_model(GTK_TREE_VIEW(self));
+ GtkTreeIter iter;
+ int chosen = gtk_tree_model_get_iter_first(model,&iter)&>k_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(self)),&model,&iter);
+ if (chosen){
+ gtk_widget_set_sensitive(GTK_WIDGET(window->buttons->first->data),1);
+ gtk_widget_set_sensitive(GTK_WIDGET(window->buttons->first->next->data),1);
+ } else {
+ gtk_widget_set_sensitive(GTK_WIDGET(window->buttons->first->data),0);
+ gtk_widget_set_sensitive(GTK_WIDGET(window->buttons->first->next->data),0);
+ }
+ }
+ return 0;
+}
+
/**yon_main_window_complete(main_window *widgets)
* [EN]
*
@@ -3187,6 +2006,8 @@ main_window *yon_main_window_complete(main_window *widgets){
g_signal_connect(G_OBJECT(widgets->UsersTree),"cursor-changed",G_CALLBACK(on_selection_changed),widgets);
g_signal_connect(G_OBJECT(widgets->UsersTree),"row-activated",G_CALLBACK(on_main_edit_activate),widgets);
g_signal_connect(G_OBJECT(widgets->GroupsTree),"cursor-changed",G_CALLBACK(on_selection_changed),widgets);
+ g_signal_connect(G_OBJECT(widgets->SystemTree),"cursor-changed",G_CALLBACK(on_selection_changed),widgets);
+ g_signal_connect(G_OBJECT(widgets->SystemGroupsTree),"cursor-changed",G_CALLBACK(on_selection_changed),widgets);
g_signal_connect(G_OBJECT(widgets->GroupsTree),"row-activated",G_CALLBACK(on_main_edit_activate),widgets);
g_signal_connect(G_OBJECT(widgets->MainNotebook),"switch-page",G_CALLBACK(on_notebook_page_changed),widgets);
g_signal_connect(G_OBJECT(widgets->SaveGlobalMenuItem),"activate",G_CALLBACK(on_config_global_save),widgets);
@@ -3196,11 +2017,15 @@ main_window *yon_main_window_complete(main_window *widgets){
g_signal_connect(G_OBJECT(widgets->LoadGlobalMenuItem),"activate",G_CALLBACK(on_config_global_load),widgets);
g_signal_connect(G_OBJECT(widgets->LoadLocalMenuItem),"activate",G_CALLBACK(on_config_local_load),widgets);
g_signal_connect(G_OBJECT(widgets->LoadCustomMenuItem),"activate",G_CALLBACK(on_config_custom_load),widgets);
- widgets->UsersMenu = yon_rmb_menu_setup(widgets->UsersTree,(RmbCheck)yon_element_chosen,widgets->UsersTree,CREATE_NEW_LABEL,add_icon_name,G_CALLBACK(on_main_add),widgets,EDIT_LABEL,edit_icon_name,G_CALLBACK(on_main_edit),widgets, REMOVE_LABEL,delete_icon_name,G_CALLBACK(on_main_delete),widgets,NULL);
- widgets->GroupsMenu = yon_rmb_menu_setup(widgets->GroupsTree,(RmbCheck)yon_element_chosen,widgets->GroupsTree,CREATE_NEW_LABEL,add_icon_name,G_CALLBACK(on_main_add),widgets,EDIT_LABEL,edit_icon_name,G_CALLBACK(on_main_edit),widgets,REMOVE_LABEL,delete_icon_name,G_CALLBACK(on_main_delete),widgets,NULL);
+ widgets->UsersMenu = yon_rmb_menu_setup(widgets->UsersTree,(RmbCheck)yon_element_chosen,widgets->UsersTree,CREATE_NEW_LABEL,add_icon_name,G_CALLBACK(on_main_add),widgets,EDIT_LABEL,edit_icon_name,G_CALLBACK(on_main_edit),widgets, REMOVE_LABEL,delete_icon_name,G_CALLBACK(on_main_delete),widgets,UPDATE_LABEL,update_icon_name,G_CALLBACK(on_config_update),widgets,NULL);
+ widgets->GroupsMenu = yon_rmb_menu_setup(widgets->GroupsTree,(RmbCheck)yon_element_chosen,widgets->GroupsTree,CREATE_NEW_LABEL,add_icon_name,G_CALLBACK(on_main_add),widgets,EDIT_LABEL,edit_icon_name,G_CALLBACK(on_main_edit),widgets,REMOVE_LABEL,delete_icon_name,G_CALLBACK(on_main_delete),widgets,UPDATE_LABEL,update_icon_name,G_CALLBACK(on_config_update),widgets,NULL);
+ widgets->SystemUsersMenu = yon_rmb_menu_setup(widgets->SystemTree,(RmbCheck)yon_element_chosen,widgets->GroupsTree,SYNC_TOOLTIP_LABEL,sync_icon_name,G_CALLBACK(on_user_sync_with_config),widgets,REMOVE_LABEL,delete_icon_name,G_CALLBACK(on_main_delete),widgets,UPDATE_LABEL,update_icon_name,G_CALLBACK(on_config_update),widgets,NULL);
+ widgets->SystemGroupsMenu = yon_rmb_menu_setup(widgets->SystemGroupsTree,(RmbCheck)yon_element_chosen,widgets->GroupsTree,SYNC_TOOLTIP_LABEL,sync_icon_name,G_CALLBACK(on_user_sync_with_config),widgets,REMOVE_LABEL,delete_icon_name,G_CALLBACK(on_main_delete),widgets,UPDATE_LABEL,update_icon_name,G_CALLBACK(on_config_update),widgets,NULL);
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);
+ g_signal_connect(G_OBJECT(widgets->SystemTree),"button-press-event",G_CALLBACK(on_system_menu_open),widgets->UsersMenu);
+ g_signal_connect(G_OBJECT(widgets->SystemGroupsTree),"button-press-event",G_CALLBACK(on_system_menu_open),widgets->GroupsMenu);
yon_system_load(widgets);
// on_system_update(NULL,widgets);
@@ -3213,31 +2038,39 @@ main_window *yon_main_window_complete(main_window *widgets){
gtk_widget_realize(GTK_WIDGET(widgets->GroupsTree));
GList *list = gtk_tree_view_get_columns(GTK_TREE_VIEW(widgets->UsersTree));
- gtk_tree_view_column_set_min_width(GTK_TREE_VIEW_COLUMN(g_list_nth_data(list,1)),50);
- gtk_tree_view_column_set_min_width(GTK_TREE_VIEW_COLUMN(g_list_nth_data(list,2)),175);
- gtk_tree_view_column_set_min_width(GTK_TREE_VIEW_COLUMN(g_list_nth_data(list,3)),175);
for (guint i=0;iGroupsTree));
- gtk_tree_view_column_set_min_width(GTK_TREE_VIEW_COLUMN(g_list_nth_data(list,0)),50);
- gtk_tree_view_column_set_min_width(GTK_TREE_VIEW_COLUMN(g_list_nth_data(list,1)),175);
for (guint i=0;iSystemTree));
+ for (guint i=0;iSystemGroupsTree));
+ for (guint i=0;i
#include
#include
@@ -30,10 +32,13 @@
#define glade_path_ubl_settings_usergroups_user "/com/ublinux/ui/ubl-settings-usergroups-user.glade"
#define glade_path_ubl_settings_usergroups_savesettings "/com/ublinux/ui/ubl-settings-usergroups-savesettings.glade"
#define glade_path_ubl_settings_usergroups_confirmation "/com/ublinux/ui/ubl-settings-usergroups-confirmation.glade"
+#define glade_path_ubl_settings_usergroups_system_deletion_confirmation "/com/ublinux/ui/ubl-settings-usergroups-system-deletion-confirmation.glade"
#define banner_path "/com/ublinux/images/ubl-settings-usergroups-banner.png"
#define CssPath "/com/ublinux/css/ubl-settings-usergroups.css"
#define config_path yon_char_unite(yon_ubl_user_get_home_directory(),"/.config/",LocaleName,"/",LocaleName,".conf",NULL)
+#define icon_path "com.ublinux.ubl-settings-usergroups"
+#define sync_parameters_path "resource:///com/ublinux/csv/sync_parameters.csv"
#define LocalePath "/usr/share/locale"
#define LocaleName "ubl-settings-usergroups"
@@ -52,8 +57,8 @@
#define get_system_group_command(target) yon_char_unite("/usr/lib/ublinux/functions get_conf_groupadd_from_system ",target,NULL)
#define remove_user_from_system_command(target) yon_char_append("userdel ",target)
-#define remove_user_and_homedir_from_system_command yon_char_append("userdel -r ",target)
-#define remove_group_from_system_command yon_char_append("groupdel ",target)
+#define remove_user_and_homedir_from_system_command(target) yon_char_append("userdel -r ",target)
+#define remove_group_from_system_command(target) yon_char_append("groupdel ",target)
#define groups_path "/etc/group"
#define users_path "/etc/passwd"
@@ -74,16 +79,22 @@
#define GROUPADD(group) yon_char_unite("GROUPADD[",group,"]",NULL)
#define USERSHADOW(user) yon_char_unite("USERSHADOW[",user,"]",NULL)
#define USERADD_SYNC(user) yon_char_unite("USERADD_SYNC[",user,"]",NULL)
+
+#define USERADD_SYNC_command(target) yon_char_unite("ubconfig --source system get users USERADD_SYNC[",target,"]",NULL)
#define USERSHADOW_SYNC(user) yon_char_unite("USERSHADOW_SYNC[",user,"]",NULL)
#define GROUPADD_SYNC(user) yon_char_unite("GROUPADD_SYNC[",user,"]",NULL)
+#define GROUPADD_SYNC_parameter "GROUPADD_SYNC"
+#define GROUPADD_SYNC_parameter_command "ubconfig --source system get users USERADD_SYNC"
#define add_icon_name "com.ublinux.ubl-settings-usergroups.increase-symbolic"
#define edit_icon_name "com.ublinux.ubl-settings-usergroups.edit-symbolic"
#define delete_icon_name "com.ublinux.ubl-settings-usergroups.trash-symbolic"
+#define sync_icon_name "com.ublinux.ubl-settings-usergroups.user-add-symbolic"
+#define update_icon_name "com.ublinux.ubl-settings-usergroups.sync-symbolic"
#define password_hash_get_command(passwd) yon_char_append("mkpasswd2 ",passwd)
-#define config_get_command(source) yon_char_unite("ubconfig --source ",source," get users DEFAULTPASSWD DEFAULTROOTPASSWD DEFAULTUSER HASHPASSWD USERGROUPS ADDADM USERADD[*] USERADD_SYNC USERADD_SYNC[*] USERSHADOW[*] GROUPADD[*]",NULL),yon_char_unite("ubconfig --source ",source," get [system] SYSTEMBOOT_STATEMODE",NULL),yon_char_unite("ubconfig --source ",source," get [save] SAVE_ROOTCOPY_CHANGES",NULL)
+#define config_get_command(source) yon_char_unite("ubconfig --source ",source," get users DEFAULTPASSWD DEFAULTROOTPASSWD DEFAULTUSER HASHPASSWD USERGROUPS ADDADM USERADD[*] USERADD_SYNC USERADD_SYNC[*] USERSHADOW[*] USERSHADOW_SYNC[*] GROUPADD[*] GROUPADD_SYNC[*] GROUPADD_SYNC",NULL),yon_char_unite("ubconfig --source ",source," get [system] SYSTEMBOOT_STATEMODE",NULL),yon_char_unite("ubconfig --source ",source," get [save] SAVE_ROOTCOPY_CHANGES",NULL)
#define config_get_default_command "ubconfig --source default get users DEFAULTPASSWD DEFAULTROOTPASSWD USERGROUPS DEFAULTUSER HASHPASSWD ADDADM"
#define config_get_global_only_parameters "ubconfig --source global get users DEFAULTPASSWD DEFAULTROOTPASSWD"
@@ -142,10 +153,10 @@
#define GROUPADD_parameter_command yon_char_unite("GROUPADD[",target,"]",NULL)
typedef char* string;
+
+__attribute__((unused)) static \
string version_application;
-
-char *local;
-
+
typedef struct {
template_config_fields
@@ -179,6 +190,7 @@ typedef struct {
int launch_size;
config_str launch_arguments;
} config;
+extern config main_config;
typedef struct {
template_window_fields
@@ -201,6 +213,8 @@ typedef struct {
rmb_menu_window *UsersMenu;
rmb_menu_window *GroupsMenu;
+ rmb_menu_window *SystemUsersMenu;
+ rmb_menu_window *SystemGroupsMenu;
GtkListStore *liststore1;
GtkListStore *liststore2;
@@ -233,6 +247,36 @@ typedef struct{
GtkWidget *EncryptAllPasswordsButton;
GtkWidget *UsersBootCheck;
GtkWidget *UsersShutdownCheck;
+ GtkWidget *UsersShutdownExpander;
+ GtkWidget *UserShutdownRevealer;
+ GtkWidget *UsersTree;
+ GtkWidget *UserAddButton;
+ GtkWidget *UserRemoveButton;
+
+ GtkWidget *GroupsBootCheck;
+ GtkWidget *GroupsShutdownCheck;
+ GtkWidget *GroupsShutdownExpander;
+ GtkWidget *GroupShutdownRevealer;
+ GtkWidget *GroupsTree;
+ GtkWidget *GroupAddButton;
+ GtkWidget *GroupRemoveButton;
+ GtkListStore *UsersShutdownList;
+ GtkListStore *GroupsShutdownList;
+ GtkCellRenderer *UserActiveCell;
+ GtkCellRenderer *UserMinCell;
+ GtkCellRenderer *UserMaxCell;
+ GtkCellRenderer *GroupActiveCell;
+ GtkCellRenderer *GroupMinCell;
+ GtkCellRenderer *GroupMaxCell;
+
+ const char *default_user_name;
+ const char *default_password;
+ const char *default_root_password;
+ const char *password_hash;
+ int user_1000_admin;
+ int user_boot;
+ int user_shutdown;
+
} ubl_settings_usergroups_additional_settings_window;
typedef struct{
@@ -256,17 +300,23 @@ typedef struct{
GtkWidget *AdminGroupsButton;
GtkWidget *GroupaddShutdownCheck;
GtkWidget *groupExtraOptionsEntry;
+ GtkWidget *MainNotebook;
char *last_gid;
} ubl_settings_usergroups_group_creation_window;
typedef struct{
GtkWidget *GroupsWindow;
+ GtkWidget *StatusBox;
GtkWidget *GroupsTree;
GtkListStore *list;
GtkWidget *GroupsCancelButton;
GtkWidget *GroupsOkButton;
GtkWidget *HeaderLabel;
+ GtkWidget *DefaultCheck;
+ GtkWidget *AddNewCheck;
+ GtkWidget *AddNewEntry;
+ GtkWidget *AddNewBox;
GtkCellRenderer *StatusCell;
GtkTreeViewColumn *GroupColumn;
} ubl_settings_usergroups_group_window;
@@ -338,6 +388,7 @@ typedef struct{
GtkWidget *UsershadowShutdownCheck;
GtkWidget *userTitleNameLabel;
GtkWidget *userSyncSAMBAPasswordCheck;
+ GtkWidget *MainNotebook;
char *expiration_unix;
@@ -368,6 +419,23 @@ typedef struct{
GtkTreeViewColumn *UserCell;
} yon_confirmation_window;
+ typedef struct {
+ GtkWidget *Window;
+ GtkWidget *HeaderLabel;
+ GtkWidget *CancelButton;
+ GtkWidget *StatusBox;
+ GtkWidget *TitleLabel;
+ GtkWidget *AcceptButton;
+ GtkWidget *ConfigAcceptButton;
+ GtkWidget *SystemAcceptButton;
+
+ } system_remove_confirmation_window;
+
+ struct target_struct{
+ GtkEntry *target;
+ GtkToggleButton *defaut_toggle;
+ };
+
ubl_settings_usergroups_additional_settings_window *yon_ubl_settings_usergroups_additional_settings_new();
void on_ubl_settings_usergroups_additional_settings_open(GtkWidget *self, main_window *widgets);
@@ -428,13 +496,15 @@ void on_saving_settings_open(GtkWidget *self, main_window *widgets);
void on_password_combo_changed(GtkComboBox *self, GtkWidget *target);
void on_filechooser_open(GtkWidget *self, GtkEntry *output_target);
void on_groups_save(GtkWidget *self, dictionary *dict);
-void on_groups_clicked(GtkWidget *self, GtkEntry *output_target);
+void on_groups_clicked(GtkWidget *self, struct target_struct *output_target);
void on_groups_multiple_save(GtkWidget *self, dictionary *dict);
void on_groups_multiple_clicked(GtkWidget *self, GtkEntry *output_target);
void on_passwords_encrypt();
void on_password_change(GtkWidget *self, dictionary *entry_dict);
void on_additional_settings_clicked(GtkWidget *self, GtkEntry *output_target);
void on_expiration_clicked(GtkWidget *self, ubl_settings_usergroups_user_window *window);
+
+void on_additional_settings_changed(GtkWidget *self, ubl_settings_usergroups_additional_settings_window *window);
void on_additional_settings_save(GtkWidget *self, ubl_settings_usergroups_additional_settings_window *window);
void on_hash_changed(GtkWidget *self, ubl_settings_usergroups_additional_settings_window *window);
ubl_settings_usergroups_additional_settings_window *yon_ubl_settings_usergroups_additional_settings_new();
@@ -449,7 +519,6 @@ ubl_settings_usergroups_group_window *yon_ubl_settings_usergroups_group_new(int
void on_standard_groups_accept(GtkWidget *self, ubl_settings_usergroups_group_window *window);
void on_standard_groups_open(GtkWidget *self, main_window *widgets);
void on_password_show_hide(GtkEntry *self, GtkEntryIconPosition icon_pos, GdkEvent* event);
-void on_password_changed(GtkEntry *self, ubl_settings_usergroups_password_window *window);
void on_password_accept(GtkWidget *self, dictionary *dict);
ubl_settings_usergroups_password_window *yon_ubl_settings_usergroups_password_new();
void yon_system_load(main_window *window);
@@ -476,4 +545,21 @@ void config_init();
void on_selection_changed(GtkWidget *self, main_window *widgets);
void on_notebook_page_changed(GtkWidget *self, GtkWidget *page, int num, main_window *widgets);
gboolean on_menu_open(GtkWidget *self,GdkEventButton *event, rmb_menu_window *window);
-main_window *yon_main_window_complete(main_window *widgets);
\ No newline at end of file
+gboolean on_system_menu_open(GtkWidget *self,GdkEventButton *event, rmb_menu_window *window);
+main_window *yon_main_window_complete(main_window *widgets);
+void yon_remove_confirmation_window_accept_clicked(GtkWidget *self,dictionary *dict);
+system_remove_confirmation_window *yon_system_remove_confirmation_window_new();
+void on_delete_system_user(GtkWidget *, dictionary *dict);
+void on_delete_system_group(GtkWidget *, dictionary *dict);
+char *yon_char_parsed_to_string_include_empty(config_str parsed, int parsed_size, char *divider);
+config_str yon_parameter_parse(char *parameter, int *size);
+int yon_parameter_check_tag(char *tag,char *string);
+config_str yon_parameter_get_by_template(char *parameter, char *pattern, int *size);
+ void on_additional_settings_group_sync_remove(GtkWidget *, ubl_settings_usergroups_additional_settings_window *window);
+ void on_additional_settings_user_sync_remove(GtkWidget *, ubl_settings_usergroups_additional_settings_window *window);
+ void on_additional_settings_user_sync_add(GtkWidget *, ubl_settings_usergroups_additional_settings_window *window);
+void on_additional_settings_cell_toggled(GtkCellRenderer *self, char *path, ubl_settings_usergroups_additional_settings_window *window);
+void on_additional_settings_cell_edited(GtkCellRenderer *self, char *path, char *new_text, ubl_settings_usergroups_additional_settings_window *window);
+void on_adiitional_settings_tree_selection_changed(GtkWidget *self, ubl_settings_usergroups_additional_settings_window *window);
+void on_useradd_sync_changed(ubl_settings_usergroups_additional_settings_window *window);
+#endif
\ No newline at end of file
diff --git a/source/ubl-strings.h b/source/ubl-strings.h
index e2f969f..6db4ae7 100644
--- a/source/ubl-strings.h
+++ b/source/ubl-strings.h
@@ -51,16 +51,20 @@
#define UPDATE_LABEL _("Update users and groups")
#define SAVING_CONFIGURATION_LABEL _("Additional saving configuration")
+#define FILTER_NAME_CONFIG_LABEL yon_char_append(_("Configuration file")," *.ini")
+#define CHOOSE_CUSTOM_CONFIG_LABEL _("Choose custom configuration file")
+
#define SYSTEM_USER_ADD_CONFIRMATION_LABEL(target) yon_char_unite(_("This user doesn't exist in configuration. Are you sure want to add user")," ",target," ", _("to configuration?"),NULL)
#define SYSTEM_USER_SYNC_CONFIRMATION_LABEL(target) yon_char_unite(_("This user exists in configuration. Are you sure want to update user")," ",target," ", _("data at configuration?"),NULL)
#define SYSTEM_GROUP_SYNC_CONFIRMATION_LABEL(target) yon_char_unite(_("This group doesn't exist in configuration. Are you sure want to add group")," ",target," ", _("to configuration?"),NULL)
#define SYSTEM_GROUP_ADD_CONFIRMATION_LABEL(target) yon_char_unite(_("This group exists in configuration. Are you sure want to update group")," ",target," ", _("data at configuration?"),NULL)
-#define SYSTEM_USER_SYSTEM_REMOVE_CONFIRMATION_LABEL(target) yon_char_unite(_("This user doesn't exist in configuration and will be removed from the system. Are you sure want to remove user")," ",target," ", _("from the system??"),NULL)
-#define SYSTEM_USER_CONFIG_REMOVE_CONFIRMATION_LABEL(target) yon_char_unite(_("This user exists in configuration. Are you sure want to remove user")," ",target," ", _("?"),NULL)
-#define SYSTEM_GROUP_SYSTEM_REMOVE_CONFIRMATION_LABEL(target) yon_char_unite(_("This group doesn't exist in configuration and will be removed from the system. Are you sure want to remove group")," ",target," ", _("from the system?"),NULL)
-#define SYSTEM_GROUP_CONFIG_REMOVE_CONFIRMATION_LABEL(target) yon_char_unite(_("This group exists in configuration. Are you sure want to remove group")," ",target,"", _("?"),NULL)
+#define SYSTEM_USER_SYSTEM_REMOVE_CONFIRMATION_LABEL(target) yon_char_unite(_("This user doesn't exist in configuration. Are you sure want to remove user")," ",target," ", _("from the system?"),NULL)
+#define SYSTEM_USER_CONFIG_REMOVE_CONFIRMATION_LABEL(target) yon_char_unite(_("This user exists in configuration and system. Are you sure want to remove user")," ",target,"", "?",NULL)
+#define SYSTEM_GROUP_SYSTEM_REMOVE_CONFIRMATION_LABEL(target) yon_char_unite(_("This group doesn't exist in configuration. Are you sure want to remove group")," ",target," ", _("from the system?"),NULL)
+#define SYSTEM_GROUP_CONFIG_REMOVE_CONFIRMATION_LABEL(target) yon_char_unite(_("This group exists in configuration and system. Are you sure want to remove group")," ",target,"", "?",NULL)
+#define SYNC_TOOLTIP_LABEL _("Syncronize with configuration")
//ubl-settings-usergroups-additional-settings.glade
#define ADDITIONAL_SETTINGS_TITLE_LABEL _("Additional settings")
@@ -99,8 +103,10 @@
#define DESCRYPT_DESCRIPTION_LABEL _("descrypt (Hash function from the DES family of algorithms)")
#define NTHASH_DESCRIPTION_LABEL _("NTHash (Hash function from the NT Windows family of algorithms)")
-#define ADDITIONAL_BOOT_LABEL _("While booting the operating system, apply the settings of all users from the configuration")
-#define ADDITIONAL_SHUTDOWN_LABEL _("While shutdown, save the settings of all users with UID>=1000 to the configuration")
+#define ADDITIONAL_USER_BOOT_LABEL _("While booting the operating system, apply the settings of all users from the configuration")
+#define ADDITIONAL_USER_SHUTDOWN_LABEL _("While shutdown, save the settings of all users with UID>=1000 to the configuration")
+#define ADDITIONAL_GROUP_BOOT_LABEL _("While booting the operating system, apply the settings of all groups from the configuration")
+#define ADDITIONAL_GROUP_SHUTDOWN_LABEL _("While shutdown, save the settings of all groups with GID>=1000 to the configuration")
//ubl-settings-usergroups-group-creation.glade
#define CONFIGURE_GROUP_TITLE_LABEL _("Configure group")
@@ -110,6 +116,7 @@
#define GROUP_USERS_LABEL _("Group users:")
#define AUTOMATICALLY_LABEL _("Automatically")
#define LOGIN_GROUP_LABEL _("Login")
+#define GROUP_EXIST_LABEL _("Group already exists in configuration")
#define CREATE_GROUP_UNUNIQUE_LABEL _("Create group with ununique GID")
#define CREATE_SYSTEM_GROUP_LABEL _("Create system group")
#define ENCRYPTED_PASSWORD_LABEL _("Encrypted")
@@ -125,6 +132,7 @@
#define ADDITIONAL_GROUPS_TITLE_LABEL _("Additional groups")
#define GROUPS_TITLE_LABEL _("Choose groups")
#define GROUP_USERS_TITLE_LABEL _("Choose users")
+#define ADD_TO_NEW _("Add to new:")
//ubl-settings-usergroups-system.glade
#define INSPECTOR_TITLE_LABEL _("System users and groups")
@@ -162,6 +170,7 @@
#define PASSWORD_MIN_INTERVAL_LABEL _("Password change interval: minimum")
#define PASSWORD_MAX_INTERVAL_LABEL _("days, maximum")
#define DAYS_LABEL _("days")
+#define USER_EXIST_LABEL _("User already exists in configuration")
#define DAYS_WARNING_LABEL _("Days until warning:")
#define DAYS_ACTIVITY_LABEL _("Days without activity:")
#define FORCE_CONFIGURE_LABEL _("Force change at next login")
@@ -203,6 +212,7 @@
#define PASSWORD_REPEAT_LABEL _("Repeat password:")
#define PASSWORD_HASH_LABEL _("Password hash:")
#define PASSWORD_NO_ENCRYPT_LABEL _("Do not encrypt password")
+#define RESTRICTED_SYMBOLS_LABEL _("Password contain special symbols")
//ubl-settings-usergroups-savesettings.glade
#define SAVESETTINGS_TITLE_LABEL _("Additional configuration of service parameter saving")
@@ -223,4 +233,38 @@
#define CONFIG_USERS_TAB_LABEL _("Configuration users")
#define CONFIG_GROUPS_TAB_LABEL _("Configuration groups")
#define SYSTEM_USERS_TAB_LABEL _("System users")
-#define SYSTEM_GROUPS_TAB_LABEL _("System groups")
\ No newline at end of file
+#define SYSTEM_GROUPS_TAB_LABEL _("System groups")
+#define SYSTEM_REMOVE_FROM_CONFIG_LABEL _("Remove from system")
+#define SYSTEM_REMOVE_FROM_SYSTEM_LABEL _("Remove from configuration")
+
+#define GROUP_REMOVE_ERROR _("Group deletion has failed")
+#define USER_REMOVE_ERROR _("User deletion has failed")
+
+#define ADD_TO_CONFIGURATION_TITLE_LABEL _("Add to configuration")
+#define REMOVE_FROM_CONFIGURATION_TITLE_LABEL _("Remove from configuration")
+#define ADD_TO_SYSTEM_TITLE_LABEL _("Add to system")
+#define REMOVE_FROM_SYSTEM_TITLE_LABEL _("Remove from system")
+
+#define SHUTDOWN_ALL_SYSTEM_USERS_LABEL _("All system users")
+#define SHUTDOWN_USERS_LABEL _("Users")
+#define SHUTDOWN_SYSTEM_USER_LABEL _("System users")
+#define SHUTDOWN_UID_RANGE_LABEL _("Users UID range")
+#define SHUTDOWN_UID_LABEL _("User UID in system")
+#define SHUTDOWN_GID_RANGE_LABEL _("Users GID range")
+#define SHUTDOWN_GID_LABEL _("User GID in system")
+
+#define SHUTDOWN_SAVE_USERS_LABEL _("While shutdown, save the settings of all users to configuration")
+#define SHUTDOWN_SAVE_GROUPS_LABEL _("While shutdown, save the settings of all groups to the configuration")
+#define SHUTDOWN_ALL_USERS_LABEL _("All groups in system")
+#define SHUTDOWN_SYSTEM_GROUPS_USERS_LABEL _("System groups")
+#define SHUTDOWN_GROUP_GID_RANGE_LABEL _("Group GID range")
+#define SHUTDOWN_GID_IN_SYSTEM_LABEL _("Group GID in system")
+#define SHUTDOWNALL_SYSTEM_USERS_LABEL _("All system users")
+#define SHUTDOWN_SYSTEM_USERS_LABEL _("System users")
+#define SHUTDOWN_UID_USERS_LABEL _("Users UID range")
+#define SHUTDOWN_SYSTEM_ID_USERS_LABEL _("User UID in system")
+#define SHUTDOWN_SYNC_TYPE_LABEL _("Syncronization type")
+#define SHUTDOWN_MINIMUM_UID_LABEL _("Minimum UID")
+#define SHUTDOWN_MAXIMUM_UID_LABEL _("Maximum UID")
+#define SHUTDOWN_MINIMUM_GID_LABEL _("Minimum GID")
+#define SHUTDOWN_MAXIMUM_GID_LABEL _("Maximum GID")
diff --git a/sync_parameters.csv b/sync_parameters.csv
new file mode 100644
index 0000000..6663e78
--- /dev/null
+++ b/sync_parameters.csv
@@ -0,0 +1,6 @@
+PARAMETER:DESCRIPTION:PARAMETER_NAME
+shutdown@all:When the system is shut down, synchronize all users in the system with the global configuration
+shutdown@users:On system shutdown, synchronize users 1000<=UID<=6000 in the system with the global configuration
+shutdown@systems:On system shutdown, synchronize system users 500<=UID<=999 in the system with the global configuration
+shutdown@-:When the system is shut down, synchronize the range of UIDs of users in the system with the global configuration
+shutdown@:When the system is shut down, synchronize the user UID in the system with the global configuration
\ No newline at end of file
diff --git a/ubl-settings-usergroups-additional-settings.glade b/ubl-settings-usergroups-additional-settings.glade
index 7618860..6772a79 100644
--- a/ubl-settings-usergroups-additional-settings.glade
+++ b/ubl-settings-usergroups-additional-settings.glade
@@ -3,6 +3,206 @@
+
+
+
+
+
+
@@ -425,7 +1088,7 @@
- False
+ True
True
1
@@ -484,4 +1147,8 @@
+
diff --git a/ubl-settings-usergroups-group-creation.glade b/ubl-settings-usergroups-group-creation.glade
index 78c8766..49b403b 100644
--- a/ubl-settings-usergroups-group-creation.glade
+++ b/ubl-settings-usergroups-group-creation.glade
@@ -1,5 +1,5 @@
-
+
@@ -56,7 +56,7 @@
-
+
True
True
5
diff --git a/ubl-settings-usergroups-group.glade b/ubl-settings-usergroups-group.glade
index 06819cc..47cc29a 100644
--- a/ubl-settings-usergroups-group.glade
+++ b/ubl-settings-usergroups-group.glade
@@ -23,83 +23,36 @@
True
False
- 5
- 5
- 5
- 5
- 5
- 5
vertical
- 5
-
+
True
- True
- in
+ False
-
- True
- True
- 2
- vertical
-
-
- none
-
-
-
-
- Chosen
-
-
-
- 0
-
-
-
-
-
-
- ID
- True
- 2
-
-
-
- 2
-
-
-
-
-
-
- Group
- descending
- 1
-
-
-
- 1
-
-
-
-
-
+
- True
+ False
True
0
-
+
+ True
False
+ 5
+ 5
+ 5
+ 5
+ 5
+ 5
+ vertical
5
-
- Add to new:
+
+ Default
True
True
False
@@ -112,19 +65,102 @@
-
+
True
True
+ in
+
+
+ True
+ True
+ 2
+ vertical
+
+
+ Chosen
+
+
+
+ 0
+
+
+
+
+
+
+ ID
+ True
+ 2
+
+
+
+ 2
+
+
+
+
+
+
+ Group
+ descending
+ 1
+
+
+
+ 1
+
+
+
+
+
+
- False
+ True
True
1
+
+
+ False
+ 5
+
+
+ Add to new:
+ True
+ True
+ False
+ True
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ False
+ True
+
+
+ True
+ True
+ 1
+
+
+
+
+ False
+ True
+ 2
+
+
- False
+ True
True
1
diff --git a/ubl-settings-usergroups-system-deletion-confirmation.glade b/ubl-settings-usergroups-system-deletion-confirmation.glade
new file mode 100644
index 0000000..b3b12d3
--- /dev/null
+++ b/ubl-settings-usergroups-system-deletion-confirmation.glade
@@ -0,0 +1,226 @@
+
+
+
+
+
+
+ True
+ False
+ com.ublinux.ubl-settings-usergroups.accept-symbolic
+
+
+ True
+ False
+ com.ublinux.ubl-settings-usergroups.accept-symbolic
+
+
+ True
+ False
+ com.ublinux.ubl-settings-usergroups.cancel-symbolic
+
+
+ True
+ False
+ com.ublinux.ubl-settings-usergroups.accept-symbolic
+
+
+ 650
+ 200
+ False
+ True
+ 450
+ com.ublinux.ubl-settings-usergroups
+
+
+ True
+ False
+ vertical
+
+
+ True
+ False
+ vertical
+
+
+
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ False
+ vertical
+ 5
+
+
+ True
+ False
+ 5
+
+
+ True
+ False
+ 20
+ 20
+ 10
+ 10
+ 50
+ dialog-information-symbolic
+ 6
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ False
+ True
+ True
+ 0
+
+
+ True
+ True
+ 1
+
+
+
+
+ True
+ True
+ 0
+
+
+
+
+ True
+ False
+ end
+ 5
+ 5
+ 5
+ 5
+
+
+ Remove from configuration
+ True
+ True
+ True
+ image1
+
+
+
+ False
+ True
+ 0
+
+
+
+
+ Remove from system
+ True
+ True
+ True
+ image5
+
+
+
+ False
+ True
+ 1
+
+
+
+
+ False
+ True
+ 1
+
+
+
+
+ True
+ True
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ubl-settings-usergroups-user.glade b/ubl-settings-usergroups-user.glade
index 8e0cda4..8ecc1cc 100644
--- a/ubl-settings-usergroups-user.glade
+++ b/ubl-settings-usergroups-user.glade
@@ -1,5 +1,5 @@
-
+
@@ -86,7 +86,7 @@
-
+
True
True
diff --git a/ubl-settings-usergroups.css b/ubl-settings-usergroups.css
index a98861a..4c6fa9a 100644
--- a/ubl-settings-usergroups.css
+++ b/ubl-settings-usergroups.css
@@ -16,6 +16,14 @@ background:transparent;
color: @theme_text_color;
}
+.bggrey{
+ border-radius:5px;
+ border-color:@theme_text_color;
+ border-style:solid;
+ border-width:0.3px;
+ box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.15);
+}
+
.inherited>* {
border:none;
background:inherit;
diff --git a/ubl-settings-usergroups.glade b/ubl-settings-usergroups.glade
index c5eabe9..4ec95c8 100644
--- a/ubl-settings-usergroups.glade
+++ b/ubl-settings-usergroups.glade
@@ -209,7 +209,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
True
True
- Additional saving configuration
+ Syncronize with configuration
image5