master #47

Merged
asmeron merged 3 commits from YanTheKaller/ubl-settings-usergroups:master into master 2 years ago

@ -1,16 +1,16 @@
hash_algoritm;hash_description hash_algoritm;hash_description
des des;DES (Алгоритм для симметричного шифрования)
md5 md5;MD5 (128-битный алгоритм хеширования)
yescrypt yescrypt;yescrypt (Криптографическая хэш-функция)
gost-yescrypt;GOST-YESCRYPT (Конструкция согласно ГОСТ Р 34.11─2012) gost-yescrypt;GOST-YESCRYPT (Конструкция согласно ГОСТ Р 34.11─2012)
scrypt scrypt;scrypt (Адаптивная криптографическая функция формирования ключа)
bf bf;Blowfish (Алгоритм блочного симметричного шифрования)
bcrypt bcrypt;bcrypt (Адаптивная хеш-функция из семейства алгоритмов Blowfish)
bcrypt-a bcrypt-a;Адаптивная хеш-функция из семейства алгоритмов Blowfish)
sha512crypt;SHA512 (Хеш-функция из семейства алгоритмов SHA-2) sha512crypt;SHA512 (Хеш-функция из семейства алгоритмов SHA-2)
sha256crypt sha256crypt;SHA256 (Хеш-функция из семейства алгоритмов SHA-2)
!sunmd5 !sunmd5;Sun MD5 (Хеш-алгоритм от Sun Microsystems)
md5crypt md5crypt;MD5 Unix (Хэш-алгоритм вызывает тысячу раз стандартный MD5)
!bsdicrypt !bsdicrypt;Extended DES Crypt (Хеш-функция из семейства алгоритмов DES от BSDi)
descrypt descrypt;descrypt (Хеш-функция из семейства алгоритмов DES)
!nt !nt;NTHash (Хеш-функция из семейства алгоритмов NT Windows)
1 hash_algoritm;hash_description hash_algoritm hash_description
2 des des DES (Алгоритм для симметричного шифрования)
3 md5 md5 MD5 (128-битный алгоритм хеширования)
4 yescrypt yescrypt yescrypt (Криптографическая хэш-функция)
5 gost-yescrypt;GOST-YESCRYPT (Конструкция согласно ГОСТ Р 34.11─2012) gost-yescrypt GOST-YESCRYPT (Конструкция согласно ГОСТ Р 34.11─2012)
6 scrypt scrypt scrypt (Адаптивная криптографическая функция формирования ключа)
7 bf bf Blowfish (Алгоритм блочного симметричного шифрования)
8 bcrypt bcrypt bcrypt (Адаптивная хеш-функция из семейства алгоритмов Blowfish)
9 bcrypt-a bcrypt-a Адаптивная хеш-функция из семейства алгоритмов Blowfish)
10 sha512crypt;SHA512 (Хеш-функция из семейства алгоритмов SHA-2) sha512crypt SHA512 (Хеш-функция из семейства алгоритмов SHA-2)
11 sha256crypt sha256crypt SHA256 (Хеш-функция из семейства алгоритмов SHA-2)
12 !sunmd5 !sunmd5 Sun MD5 (Хеш-алгоритм от Sun Microsystems)
13 md5crypt md5crypt MD5 Unix (Хэш-алгоритм вызывает тысячу раз стандартный MD5)
14 !bsdicrypt !bsdicrypt Extended DES Crypt (Хеш-функция из семейства алгоритмов DES от BSDi)
15 descrypt descrypt descrypt (Хеш-функция из семейства алгоритмов DES)
16 !nt !nt NTHash (Хеш-функция из семейства алгоритмов NT Windows)

@ -1,4 +1,4 @@
shell Shell
/bin/bash /bin/bash
/bin/sh /bin/sh
/bin/ksh /bin/ksh

1 shell Shell
2 /bin/bash
3 /bin/sh
4 /bin/ksh

@ -63,7 +63,6 @@ void yon_interface_update(main_window *widgets){
login = yon_char_divide_search(parameters[0],"=",-1); login = yon_char_divide_search(parameters[0],"=",-1);
login[strlen(login)-1]='\0'; login[strlen(login)-1]='\0';
} }
login[strlen(login)-2]='\0';
if (!strcmp(parameters[1],"x")) parameters[1]=AUTOMATICALLY_LABEL; if (!strcmp(parameters[1],"x")) parameters[1]=AUTOMATICALLY_LABEL;
gtk_list_store_set(widgets->GroupsList,&iter, gtk_list_store_set(widgets->GroupsList,&iter,
1,login, 1,login,
@ -372,6 +371,36 @@ void on_user_choose(GtkWidget *self, GtkEntry *target){
gtk_widget_show(window->GroupsWindow); gtk_widget_show(window->GroupsWindow);
} }
void on_GID_update(GtkWidget *self, ubl_settings_usergroups_group_creation_window *window){
if (!gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->userUIDAutoCheck))){
int config_size=0;
int final_size=0;
config_str config_groups = yon_config_get_all_by_key("GROUPADD",&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;
for (int i=0;i<final_size;i++){
int parsed_size;
config_str parsed = yon_char_parse(final[i],&parsed_size,":");
if (atol(parsed[2])>=main_config.MINGID||gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->SystemGroupCheck))){
if (atol(parsed[2])>main_config.MAXGID||gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->SystemGroupCheck)))
break;
if (atol(parsed[2])==prev_busy+1)
prev_busy=atol(parsed[2]);
else {
yon_char_parsed_free(parsed, parsed_size);
break;
}
}
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){ void on_group_save(GtkWidget *self, dictionary *dict){
main_window *widgets = yon_dictionary_get_data(dict->first,main_window*); 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*); ubl_settings_usergroups_group_creation_window *window = yon_dictionary_get_data(dict->first->next,ubl_settings_usergroups_group_creation_window*);
@ -456,29 +485,7 @@ ubl_settings_usergroups_group_creation_window *yon_ubl_settings_usergroups_group
gtk_window_set_title(GTK_WINDOW(window->CreateGroupWindow),GROUPS_TITLE_LABEL); gtk_window_set_title(GTK_WINDOW(window->CreateGroupWindow),GROUPS_TITLE_LABEL);
int config_size=0; on_GID_update(NULL,window);
int final_size=0;
config_str config_groups = yon_config_get_all_by_key("GROUPADD",&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=main_config.MINUID;
for (int i=0;i<final_size;i++){
int parsed_size;
config_str parsed = yon_char_parse(final[i],&parsed_size,":");
if (atol(parsed[2])>=main_config.MINUID){
if (atol(parsed[2])>main_config.MAXUID)
break;
if (atol(parsed[2])==prev_busy+1)
prev_busy=atol(parsed[2]);
else {
yon_char_parsed_free(parsed, parsed_size);
break;
}
}
yon_char_parsed_free(parsed, parsed_size);
}
gtk_entry_set_text(GTK_ENTRY(window->userUIDEntry),yon_char_from_long(prev_busy+1));
dictionary *entry_dict=NULL; 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,"combo",window->PasswordCombo);
yon_dictionary_add_or_create_if_exists_with_data(entry_dict,"entry",window->PasswordEntry); yon_dictionary_add_or_create_if_exists_with_data(entry_dict,"entry",window->PasswordEntry);
@ -488,6 +495,8 @@ ubl_settings_usergroups_group_creation_window *yon_ubl_settings_usergroups_group
g_signal_connect(G_OBJECT(window->PasswordCombo),"changed",G_CALLBACK(on_password_combo_changed),window->ChangePasswordButton); 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->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->UserAdditionalGroupsButton),"clicked",G_CALLBACK(on_user_choose),window->userGroupsEntry);
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);
return window; return window;
} }
@ -806,6 +815,44 @@ void on_user_shell_changed(GtkWidget *self, ubl_settings_usergroups_user_window
} }
} }
void on_UID_update(GtkWidget *self, ubl_settings_usergroups_user_window *window){
if (!gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->userUIDAutoCheck))){
int config_size=0;
int final_size=0;
config_str config_users = yon_config_get_all_by_key("USERADD",&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;i<final_size;i++){
int parsed_size;
config_str parsed = yon_char_parse(final[i],&parsed_size,":");
if (atol(parsed[2])>=main_config.MINUID||gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->userCreateSystemCheck))){
if (atol(parsed[2])>main_config.MAXUID||gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->userCreateSystemCheck)))
break;
if (atol(parsed[2])==prev_busy+1)
prev_busy=atol(parsed[2]);
else {
yon_char_parsed_free(parsed, parsed_size);
break;
}
}
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 *self, 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){ void on_user_save(GtkWidget *self, dictionary *dict){
main_window *widgets = yon_dictionary_get_data(dict->first,main_window*); 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*); ubl_settings_usergroups_user_window *window = yon_dictionary_get_data(dict->first->next,ubl_settings_usergroups_user_window*);
@ -1080,29 +1127,7 @@ ubl_settings_usergroups_user_window *yon_ubl_settings_usergroups_user_new(){
window->UsershadowShutdownCheck=yon_gtk_builder_get_widget(builder,"UsershadowShutdownCheck"); window->UsershadowShutdownCheck=yon_gtk_builder_get_widget(builder,"UsershadowShutdownCheck");
window->userTitleNameLabel=yon_gtk_builder_get_widget(builder,"userTitleNameLabel"); window->userTitleNameLabel=yon_gtk_builder_get_widget(builder,"userTitleNameLabel");
int config_size=0; on_UID_update(NULL,window);
int final_size=0;
config_str config_users = yon_config_get_all_by_key("USERADD",&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=main_config.MINUID;
for (int i=0;i<final_size;i++){
int parsed_size;
config_str parsed = yon_char_parse(final[i],&parsed_size,":");
if (atol(parsed[2])>=main_config.MINUID){
if (atol(parsed[2])>main_config.MAXUID)
break;
if (atol(parsed[2])==prev_busy+1)
prev_busy=atol(parsed[2]);
else {
yon_char_parsed_free(parsed, parsed_size);
break;
}
}
yon_char_parsed_free(parsed, parsed_size);
}
gtk_entry_set_text(GTK_ENTRY(window->userUIDEntry),yon_char_from_long(prev_busy+1));
int shell_size=0; int shell_size=0;
config_str shells = yon_file_open(shell_list_path,&shell_size); config_str shells = yon_file_open(shell_list_path,&shell_size);
for (int i=1;i<shell_size;i++){ for (int i=1;i<shell_size;i++){
@ -1137,6 +1162,9 @@ ubl_settings_usergroups_user_window *yon_ubl_settings_usergroups_user_new(){
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->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->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->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);
return window; return window;
} }
@ -1196,6 +1224,7 @@ void on_main_edit(GtkWidget *self, main_window *widgets){
if (parameter_string[strlen(parameter_string)-1]=='\"') parameter_string[strlen(parameter_string)-1]='\0'; if (parameter_string[strlen(parameter_string)-1]=='\"') parameter_string[strlen(parameter_string)-1]='\0';
config_str parameters = yon_char_parse(parameter_string,&parsed_size,":"); config_str parameters = yon_char_parse(parameter_string,&parsed_size,":");
gtk_entry_set_text(GTK_ENTRY(window->userLoginEntry), name); gtk_entry_set_text(GTK_ENTRY(window->userLoginEntry), name);
gtk_entry_set_text(GTK_ENTRY(window->userGroupsEntry), name);
gtk_entry_set_text(GTK_ENTRY(window->userUserNameEntry), parsed_size>0?parameters[0]:""); gtk_entry_set_text(GTK_ENTRY(window->userUserNameEntry), parsed_size>0?parameters[0]:"");
if (parsed_size>1){ if (parsed_size>1){
if (!strcmp(parameters[1],"x")) if (!strcmp(parameters[1],"x"))
@ -1279,6 +1308,7 @@ void on_main_edit(GtkWidget *self, main_window *widgets){
} }
free(usershadow_sync); free(usershadow_sync);
} }
} }
} else { } else {
model = GTK_TREE_MODEL(widgets->GroupsList); model = GTK_TREE_MODEL(widgets->GroupsList);

@ -96,7 +96,6 @@
<property name="visible">True</property> <property name="visible">True</property>
<property name="sensitive">False</property> <property name="sensitive">False</property>
<property name="can-focus">True</property> <property name="can-focus">True</property>
<property name="placeholder-text" translatable="yes">1007</property>
<property name="input-purpose">number</property> <property name="input-purpose">number</property>
</object> </object>
<packing> <packing>

@ -144,7 +144,6 @@
<property name="sensitive">False</property> <property name="sensitive">False</property>
<property name="can-focus">True</property> <property name="can-focus">True</property>
<property name="max-length">5</property> <property name="max-length">5</property>
<property name="placeholder-text" translatable="yes">1001</property>
<property name="input-purpose">number</property> <property name="input-purpose">number</property>
</object> </object>
<packing> <packing>

Loading…
Cancel
Save