diff --git a/gresource.xml b/gresource.xml
index 4a731e5..f5e3ee7 100644
--- a/gresource.xml
+++ b/gresource.xml
@@ -15,6 +15,9 @@
ubl-settings-usergroups.css
+
+ sync_parameters.csv
+
ubl-settings-usergroups-banner.png
diff --git a/source/CMakeLists.txt b/source/CMakeLists.txt
index 125f652..24cb0e2 100644
--- a/source/CMakeLists.txt
+++ b/source/CMakeLists.txt
@@ -39,6 +39,7 @@ set(DEPENDFILES
../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
@@ -83,6 +84,9 @@ set(SOURCE_FILES
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..52e367e
--- /dev/null
+++ b/source/ubl-settings-usergroups-group.c
@@ -0,0 +1,283 @@
+#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");
+ yon_config_compare_ignore_set(GROUPADD_SYNC(group_name),1);
+ } 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,"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);
+ 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
index dad7996..9a64078 100644
--- a/source/ubl-settings-usergroups-settings.c
+++ b/source/ubl-settings-usergroups-settings.c
@@ -200,6 +200,29 @@ ubl_settings_usergroups_additional_settings_window *yon_ubl_settings_usergroups_
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;iCancelButton),"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;
@@ -246,4 +269,90 @@ void on_ubl_settings_usergroups_additional_settings_open(GtkWidget *, main_windo
g_signal_connect(G_OBJECT(window->UsersShutdownSwitch),"activate",G_CALLBACK(on_additional_settings_changed),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 = "<([^>]+)>";
+ 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)){
+ return 1;
+ }
+ }
+
+
+ return 0;
+}
+
+config_str yon_parameter_get_by_template(char *parameter, char *pattern, int *size){
+ config_str final = NULL;
+ char *tag_template = "<([^>]+)>";
+ 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 {
+ yon_char_append_c(converted,*current);
+ current++;
+ }
+ }
+ GRegex *regex = g_regex_new(converted,G_REGEX_EXTENDED,0,NULL);
+ if (regex){
+ GMatchInfo *match;
+ if (g_regex_match(regex,parameter,0,&match)){
+ int match_count = g_match_info_get_match_count(match);
+ for (int i=0;iuserDontCheckCheck));
+ 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));
@@ -194,12 +274,6 @@ void on_user_save(GtkWidget *self, dictionary *dict){
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;
@@ -254,9 +328,6 @@ void on_user_save(GtkWidget *self, dictionary *dict){
}
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);
@@ -368,31 +439,6 @@ void on_user_save(GtkWidget *self, dictionary *dict){
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){
@@ -491,25 +537,8 @@ void on_user_save(GtkWidget *self, dictionary *dict){
} 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);
+ yon_interface_update(widgets);
+
on_subwindow_close(self);
}
diff --git a/source/ubl-settings-usergroups.c b/source/ubl-settings-usergroups.c
index b20d96d..5f9c672 100644
--- a/source/ubl-settings-usergroups.c
+++ b/source/ubl-settings-usergroups.c
@@ -182,6 +182,43 @@ void yon_interface_update(main_window *widgets){
}
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){
@@ -606,51 +643,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){
- 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);
-}
-
-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));
@@ -760,41 +752,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));
@@ -1005,67 +962,11 @@ 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_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_user_choose(GtkWidget *, GtkEntry *target){
ubl_settings_usergroups_group_window *window = yon_ubl_settings_usergroups_group_new(1);
@@ -1117,187 +1018,6 @@ 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_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");
- yon_config_compare_ignore_set(GROUPADD_SYNC(group_name),1);
- } 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,"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;
@@ -1321,58 +1041,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->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_group_clicked(GtkCellRenderer *, char *path, ubl_settings_usergroups_group_window *window){
GtkTreeIter iter;
gboolean status;
@@ -1504,89 +1172,6 @@ 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 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;
-}
-
void yon_system_load(main_window *window){
gtk_list_store_clear(window->liststore1);
gtk_list_store_clear(window->liststore2);
@@ -1707,13 +1292,6 @@ void on_system_update(GtkWidget *, main_window *window){
yon_system_load(window);
}
-
-
-
-
-
-
-
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]=='$')){
@@ -1729,21 +1307,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){
@@ -1786,87 +1349,6 @@ 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);
- 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),"");
- }
-}
-
void on_remove_expired(GtkWidget *, GtkEntryIconPosition icon_pos, GdkEvent *, GtkEntry *target){
if (icon_pos == GTK_ENTRY_ICON_SECONDARY){
gtk_entry_set_text(target,"");
@@ -2548,12 +2030,19 @@ main_window *yon_main_window_complete(main_window *widgets){
yon_window_config_add_listener((GtkWidget*)g_list_nth_data(list,i),yon_char_append("GroupColumn",yon_char_from_int(i)),"fixed-width",YON_TYPE_INT);
}
g_list_free(list);
+ list = gtk_tree_view_get_columns(GTK_TREE_VIEW(widgets->SystemTree));
+ for (guint i=0;iSystemGroupsTree));
+ for (guint i=0;iUsersTree),1,-1);
- // yon_gtk_tree_view_set_fixed_size(GTK_TREE_VIEW(widgets->GroupsTree),1,2,-1);
-
- // yon_gtk_tree_view_set_fixed_size(GTK_TREE_VIEW(widgets->SystemTree),1,2,3,-1);
- // yon_gtk_tree_view_set_fixed_size(GTK_TREE_VIEW(widgets->SystemGroupsTree),1,2,-1);
yon_window_config_load(config_path);
yon_save_window_set_postsave_function(on_save_done,widgets);
diff --git a/source/ubl-settings-usergroups.h b/source/ubl-settings-usergroups.h
index 7f9098e..2b94d1f 100644
--- a/source/ubl-settings-usergroups.h
+++ b/source/ubl-settings-usergroups.h
@@ -38,6 +38,7 @@
#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"
@@ -534,4 +535,7 @@ 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);
#endif
\ No newline at end of file
diff --git a/sync_parameters.csv b/sync_parameters.csv
new file mode 100644
index 0000000..915b239
--- /dev/null
+++ b/sync_parameters.csv
@@ -0,0 +1,6 @@
+PARAMETER:DESCRIPTION
+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