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

Reviewed-on: #59
pull/83/head
Dmitry Razumov 2 years ago
commit e080a8c27c

@ -6,7 +6,7 @@ gost-yescrypt;GOST-YESCRYPT (Конструкция согласно ГОСТ Р
scrypt;scrypt (Адаптивная криптографическая функция формирования ключа) scrypt;scrypt (Адаптивная криптографическая функция формирования ключа)
bf;Blowfish (Алгоритм блочного симметричного шифрования) bf;Blowfish (Алгоритм блочного симметричного шифрования)
bcrypt;bcrypt (Адаптивная хеш-функция из семейства алгоритмов Blowfish) bcrypt;bcrypt (Адаптивная хеш-функция из семейства алгоритмов Blowfish)
bcrypt-a;Адаптивная хеш-функция из семейства алгоритмов Blowfish) bcrypt-a;bcrypt-a (Адаптивная хеш-функция из семейства алгоритмов Blowfish)
sha512crypt;SHA512 (Хеш-функция из семейства алгоритмов SHA-2) sha512crypt;SHA512 (Хеш-функция из семейства алгоритмов SHA-2)
sha256crypt;SHA256 (Хеш-функция из семейства алгоритмов SHA-2) sha256crypt;SHA256 (Хеш-функция из семейства алгоритмов SHA-2)
!sunmd5;Sun MD5 (Хеш-алгоритм от Sun Microsystems) !sunmd5;Sun MD5 (Хеш-алгоритм от Sun Microsystems)

1 hash_algoritm hash_description
6 scrypt scrypt (Адаптивная криптографическая функция формирования ключа)
7 bf Blowfish (Алгоритм блочного симметричного шифрования)
8 bcrypt bcrypt (Адаптивная хеш-функция из семейства алгоритмов Blowfish)
9 bcrypt-a Адаптивная хеш-функция из семейства алгоритмов Blowfish) bcrypt-a (Адаптивная хеш-функция из семейства алгоритмов Blowfish)
10 sha512crypt SHA512 (Хеш-функция из семейства алгоритмов SHA-2)
11 sha256crypt SHA256 (Хеш-функция из семейства алгоритмов SHA-2)
12 !sunmd5 Sun MD5 (Хеш-алгоритм от Sun Microsystems)

@ -44,7 +44,6 @@
d="m 77.21183,104.22131 c -0.8763,0 -1.5875,0.7112 -1.5875,1.5875 0,0.8763 0.7112,1.5875 1.5875,1.5875 0.8763,0 1.5875,-0.7112 1.5875,-1.5875 0,-0.8763 -0.7112,-1.5875 -1.5875,-1.5875 z m 0,0.56696 c 0.563335,0 1.020535,0.4572 1.020535,1.02054 0,0.15224 -0.03405,0.2963 -0.0939,0.42611 l -1.353627,-1.35275 c 0.129997,-0.0601 0.274468,-0.0939 0.426995,-0.0939 z m -0.91423,0.56874 1.366915,1.36603 c -0.136513,0.0678 -0.290022,0.1063 -0.452685,0.1063 -0.563336,0 -1.020536,-0.4572 -1.020536,-1.02053 0,-0.16238 0.03874,-0.31547 0.106306,-0.4518 z" d="m 77.21183,104.22131 c -0.8763,0 -1.5875,0.7112 -1.5875,1.5875 0,0.8763 0.7112,1.5875 1.5875,1.5875 0.8763,0 1.5875,-0.7112 1.5875,-1.5875 0,-0.8763 -0.7112,-1.5875 -1.5875,-1.5875 z m 0,0.56696 c 0.563335,0 1.020535,0.4572 1.020535,1.02054 0,0.15224 -0.03405,0.2963 -0.0939,0.42611 l -1.353627,-1.35275 c 0.129997,-0.0601 0.274468,-0.0939 0.426995,-0.0939 z m -0.91423,0.56874 1.366915,1.36603 c -0.136513,0.0678 -0.290022,0.1063 -0.452685,0.1063 -0.563336,0 -1.020536,-0.4572 -1.020536,-1.02053 0,-0.16238 0.03874,-0.31547 0.106306,-0.4518 z"
id="Symbol" id="Symbol"
inkscape:label="#path2424" inkscape:label="#path2424"
class="error"
inkscape:connector-curvature="0" /> inkscape:connector-curvature="0" />
</g> </g>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 2.0 KiB

After

Width:  |  Height:  |  Size: 2.0 KiB

@ -5,7 +5,8 @@ config main_config;
//functions //functions
int yon_load_proceed(YON_CONFIG_TYPE type){ int yon_load_proceed(YON_CONFIG_TYPE type){
if (yon_config_load_register(type,"users","DEFAULTPASSWD DEFAULTROOTPASSWD DEFAULTUSER HASHPASSWD USERGROUPS ADDADM USERADD[*] USERSHADOW[*] GROUPADD[*]",NULL)){ yon_config_load_register(YON_CONFIG_DEFAULT,"users","DEFAULTPASSWD DEFAULTROOTPASSWD USERGROUPS DEFAULTUSER HASHPASSWD ADDADM",NULL);
if (yon_config_load_register_no_cleaning(type,"users","DEFAULTPASSWD DEFAULTROOTPASSWD DEFAULTUSER HASHPASSWD USERGROUPS ADDADM USERADD[*] USERSHADOW[*] GROUPADD[*]",NULL)){
return 1; return 1;
} }
return 0; return 0;
@ -41,7 +42,7 @@ void yon_interface_update(main_window *widgets){
4,parameters_size>2?parameters[2]:"", 4,parameters_size>2?parameters[2]:"",
5,parameters_size>3?parameters[3]:"", 5,parameters_size>3?parameters[3]:"",
6,parameters_size>4?parameters[4]:"", 6,parameters_size>4?parameters[4]:"",
7,parameters_size>5?ENDRYPTED_LABEL:DEFAULT_USER_LABEL, 7,parameters_size>5?strcmp(parameters[5],"x")? ENDRYPTED_LABEL : DEFAULT_USER_LABEL : DEFAULT_USER_LABEL,
-1); -1);
if(parameters) if(parameters)
free(parameters); free(parameters);
@ -98,7 +99,6 @@ void on_config_global_load(GtkWidget *self, main_window *widgets){
void on_config_save(){ void on_config_save(){
yon_save_proceed(NULL,YON_CONFIG_BOTH,"users", "DEFAULTPASSWD DEFAULTROOTPASSWD DEFAULTUSER HASHPASSWD USERGROUPS ADDADM USERADD[*] USERSHADOW[*] GROUPADD[*]",NULL); yon_save_proceed(NULL,YON_CONFIG_BOTH,"users", "DEFAULTPASSWD DEFAULTROOTPASSWD DEFAULTUSER HASHPASSWD USERGROUPS ADDADM USERADD[*] USERSHADOW[*] GROUPADD[*]",NULL);
} }
void on_config_global_save(){ void on_config_global_save(){
@ -248,13 +248,13 @@ void on_expiration_clicked(GtkWidget *self, ubl_settings_usergroups_user_window
} else { } else {
yon_config_remove_by_key("DEFAULTUSER"); yon_config_remove_by_key("DEFAULTUSER");
} }
char *default_password = (char*)gtk_entry_get_text(GTK_ENTRY(window->DefaultPasswordEntry)); 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 (!yon_char_is_empty(default_password)){
yon_config_register("DEFAULTPASSWD","users",default_password); yon_config_register("DEFAULTPASSWD","users",default_password);
} else { } else {
yon_config_remove_by_key("DEFAULTPASSWD"); yon_config_remove_by_key("DEFAULTPASSWD");
} }
char *root_password = (char*)gtk_entry_get_text(GTK_ENTRY(window->RootPasswordEntry)); 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 (!yon_char_is_empty(root_password)){
yon_config_register("DEFAULTROOTPASSWD","users",root_password); yon_config_register("DEFAULTROOTPASSWD","users",root_password);
} else { } else {
@ -266,12 +266,26 @@ void on_expiration_clicked(GtkWidget *self, ubl_settings_usergroups_user_window
} else { } else {
yon_config_register("ADDADM","users","no"); yon_config_register("ADDADM","users","no");
} }
char *hash = (char*)gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(window->PasswordHashCombo)); char *hash = (char*)gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->PasswordHashCombo));
if (!yon_char_is_empty(hash)){ if (!yon_char_is_empty(hash)){
yon_config_register("HASHPASSWD","users",hash); yon_config_register("HASHPASSWD","users",hash);
} }
} }
void on_hash_changed(GtkWidget *self, 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;i<hash_size;i++){
if (hash_algos[i][strlen(hash_algos[i])-1]=='\n') hash_algos[i][strlen(hash_algos[i])-1]='\0';
int parsed_size;
config_str parsed = yon_char_parse(hash_algos[i],&parsed_size,";");
gtk_widget_set_tooltip_text(window->PasswordHashCombo,parsed[1]);
yon_char_parsed_free(parsed,parsed_size);
}
yon_char_parsed_free(hash_algos,hash_size);
}
ubl_settings_usergroups_additional_settings_window *yon_ubl_settings_usergroups_additional_settings_new(){ 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)); 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); GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_ubl_settings_usergroups_additional_settings);
@ -298,7 +312,8 @@ ubl_settings_usergroups_additional_settings_window *yon_ubl_settings_usergroups_
if (hash_algos[i][strlen(hash_algos[i])-1]=='\n') hash_algos[i][strlen(hash_algos[i])-1]='\0'; if (hash_algos[i][strlen(hash_algos[i])-1]=='\n') hash_algos[i][strlen(hash_algos[i])-1]='\0';
int parsed_size; int parsed_size;
config_str parsed = yon_char_parse(hash_algos[i],&parsed_size,";"); config_str parsed = yon_char_parse(hash_algos[i],&parsed_size,";");
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(window->PasswordHashCombo),parsed[0]); gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(window->PasswordHashCombo),parsed[0],parsed[1]);
gtk_widget_set_tooltip_text(window->PasswordHashCombo,parsed[1]);
yon_char_parsed_free(parsed,parsed_size); yon_char_parsed_free(parsed,parsed_size);
} }
} }
@ -308,18 +323,24 @@ ubl_settings_usergroups_additional_settings_window *yon_ubl_settings_usergroups_
if (!yon_char_is_empty(default_user)) if (!yon_char_is_empty(default_user))
gtk_entry_set_text(GTK_ENTRY(window->DefaultUserNameEntry),default_user); gtk_entry_set_text(GTK_ENTRY(window->DefaultUserNameEntry),default_user);
char *default_password = yon_config_get_by_key("DEFAULTPASSWD"); char *default_password = yon_config_get_by_key("DEFAULTPASSWD");
if (!yon_char_is_empty(default_password)) if (!yon_char_is_empty(default_password)){
gtk_entry_set_text(GTK_ENTRY(window->DefaultPasswordEntry),default_password); gtk_entry_set_text(GTK_ENTRY(window->DefaultPasswordEntry),default_password);
if(!yon_config_check_ignore("DEFAULTPASSWD"))
gtk_combo_box_set_active(GTK_COMBO_BOX(window->DefaultPasswordCombo),3);
}
char *root_password = yon_config_get_by_key("DEFAULTROOTPASSWD"); char *root_password = yon_config_get_by_key("DEFAULTROOTPASSWD");
if (!yon_char_is_empty(root_password)) if (!yon_char_is_empty(root_password)){
gtk_entry_set_text(GTK_ENTRY(window->RootPasswordEntry),root_password); gtk_entry_set_text(GTK_ENTRY(window->RootPasswordEntry),root_password);
if(!yon_config_check_ignore("DEFAULTROOTPASSWD"))
gtk_combo_box_set_active(GTK_COMBO_BOX(window->RootPasswordCombo),3);
}
char *is_k_admin = yon_config_get_by_key("ADDADM"); char *is_k_admin = yon_config_get_by_key("ADDADM");
if (!yon_char_is_empty(is_k_admin)) if (!yon_char_is_empty(is_k_admin))
if (!strcmp(is_k_admin,"yes")) if (!strcmp(is_k_admin,"yes"))
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->DefaultUserAdministratorCheck),1); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->DefaultUserAdministratorCheck),1);
char *hash = yon_config_get_by_key("HASHPASSWD"); char *hash = yon_config_get_by_key("HASHPASSWD");
if (!yon_char_is_empty(hash)){ if (!yon_char_is_empty(hash)){
gtk_combo_box_set_active(GTK_COMBO_BOX(window->PasswordHashCombo),yon_gtk_combo_box_text_find(window->PasswordHashCombo,hash)); gtk_combo_box_set_active_id(GTK_COMBO_BOX(window->PasswordHashCombo),hash);
} }
@ -336,6 +357,7 @@ ubl_settings_usergroups_additional_settings_window *yon_ubl_settings_usergroups_
g_signal_connect(G_OBJECT(window->RootPasswordButton),"clicked",G_CALLBACK(on_password_change),root_dict); g_signal_connect(G_OBJECT(window->RootPasswordButton),"clicked",G_CALLBACK(on_password_change),root_dict);
g_signal_connect(G_OBJECT(window->RootPasswordCombo),"changed",G_CALLBACK(on_password_combo_changed),window->RootPasswordButton); g_signal_connect(G_OBJECT(window->RootPasswordCombo),"changed",G_CALLBACK(on_password_combo_changed),window->RootPasswordButton);
g_signal_connect(G_OBJECT(window->PasswordHashCombo),"changed",G_CALLBACK(on_hash_changed),window);
g_signal_connect(G_OBJECT(window->DefaultPasswordCombo),"changed",G_CALLBACK(on_password_combo_changed),window->DefaultPasswordButton); g_signal_connect(G_OBJECT(window->DefaultPasswordCombo),"changed",G_CALLBACK(on_password_combo_changed),window->DefaultPasswordButton);
return window; return window;
@ -683,7 +705,7 @@ void yon_system_load(ubl_settings_usergroups_system_window *window){
int parsed_size; int parsed_size;
if (main_config.groups[i][strlen(main_config.groups[i])-1]=='\n') main_config.groups[i][strlen(main_config.groups[i])-1]='\0'; if (main_config.groups[i][strlen(main_config.groups[i])-1]=='\n') main_config.groups[i][strlen(main_config.groups[i])-1]='\0';
config_str parsed = yon_char_parse(main_config.groups[i],&parsed_size,":"); config_str parsed = yon_char_parse(main_config.groups[i],&parsed_size,":");
if (atoi(parsed[2])>=main_config.MINGID&&atoi(parsed[2])<=main_config.MAXGID){ if (atoi(parsed[2])>=main_config.MINGID&&atoi(parsed[2])<=main_config.MAXGID||window->show_all==1){
gtk_list_store_append(window->liststore2,&iter); gtk_list_store_append(window->liststore2,&iter);
gtk_list_store_set(window->liststore2,&iter,0,atol(parsed[2]),1,parsed[0],2,parsed[3],-1); gtk_list_store_set(window->liststore2,&iter,0,atol(parsed[2]),1,parsed[0],2,parsed[3],-1);
} }
@ -729,8 +751,10 @@ void yon_system_load(ubl_settings_usergroups_system_window *window){
void on_mode_changed(GtkWidget *self, ubl_settings_usergroups_system_window *window){ void on_mode_changed(GtkWidget *self, ubl_settings_usergroups_system_window *window){
if (window->show_all==0){ if (window->show_all==0){
window->show_all=1; window->show_all=1;
gtk_style_context_add_class(gtk_widget_get_style_context(window->ToggleAllButton),"chosenOutline");
} else { } else {
window->show_all=0; window->show_all=0;
gtk_style_context_remove_class(gtk_widget_get_style_context(window->ToggleAllButton),"chosenOutline");
} }
yon_system_load(window); yon_system_load(window);
} }
@ -1165,6 +1189,7 @@ ubl_settings_usergroups_user_window *yon_ubl_settings_usergroups_user_new(){
g_signal_connect(G_OBJECT(window->userUIDAutoCheck),"toggled",G_CALLBACK(on_UID_update),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->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->userGroupsCheck),"toggled",G_CALLBACK(on_user_login_update),window);
g_signal_connect(G_OBJECT(window->userLoginEntry),"changed",G_CALLBACK(on_user_login_update),window);
return window; return window;
} }
@ -1227,10 +1252,10 @@ void on_main_edit(GtkWidget *self, main_window *widgets){
gtk_entry_set_text(GTK_ENTRY(window->userGroupsEntry), 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")){
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->userUIDAutoCheck),1); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->userUIDAutoCheck),0);
else
gtk_entry_set_text(GTK_ENTRY(window->userUIDEntry), parsed_size>1?parameters[1]:""); gtk_entry_set_text(GTK_ENTRY(window->userUIDEntry), parsed_size>1?parameters[1]:"");
}
} }
if (parsed_size>2){ if (parsed_size>2){
if (!strcmp(parameters[2],"x")) if (!strcmp(parameters[2],"x"))
@ -1238,7 +1263,11 @@ void on_main_edit(GtkWidget *self, main_window *widgets){
else else
gtk_entry_set_text(GTK_ENTRY(window->userGroupsEntry), parsed_size>2?parameters[2]:""); gtk_entry_set_text(GTK_ENTRY(window->userGroupsEntry), parsed_size>2?parameters[2]:"");
} }
gtk_entry_set_text(GTK_ENTRY(window->userAdditionalGroupsEntry), parsed_size>3?parameters[3]:""); if (parsed_size>3){
if (strcmp(parameters[3],"x"))
gtk_entry_set_text(GTK_ENTRY(window->userAdditionalGroupsEntry), parsed_size>3?parameters[3]:"");
}
if (parsed_size>4&&!yon_char_is_empty(parameters[4])){ if (parsed_size>4&&!yon_char_is_empty(parameters[4])){
int params_size; int params_size;
config_str parameters_substring = yon_char_parse(parameters[4],&params_size," "); config_str parameters_substring = yon_char_parse(parameters[4],&params_size," ");
@ -1272,7 +1301,13 @@ void on_main_edit(GtkWidget *self, main_window *widgets){
// gtk_entry_set_text(GTK_ENTRY(window->), parsed_size>4?parameters[4]:""); // gtk_entry_set_text(GTK_ENTRY(window->), parsed_size>4?parameters[4]:"");
} }
window->old_password=parameters[5]; window->old_password=parameters[5];
gtk_entry_set_text(GTK_ENTRY(window->userPasswordEntry), parsed_size>5?parameters[5]:""); if(parsed_size>5){
if (strcmp(parameters[5],"x")){
gtk_entry_set_text(GTK_ENTRY(window->userPasswordEntry), parsed_size>5?parameters[5]:"");
gtk_combo_box_set_active(GTK_COMBO_BOX(window->userPasswordCombo),3);
}
}
free(parameters); free(parameters);
parameters=yon_char_parse(yon_config_get_by_key(USERSHADOW(name)),&parsed_size,":"); parameters=yon_char_parse(yon_config_get_by_key(USERSHADOW(name)),&parsed_size,":");
gtk_entry_set_text(GTK_ENTRY(window->userPasswordChangedEntry),parsed_size>0?parameters[0]:""); gtk_entry_set_text(GTK_ENTRY(window->userPasswordChangedEntry),parsed_size>0?parameters[0]:"");
@ -1374,25 +1409,35 @@ void on_main_delete(GtkWidget *self, main_window *widgets){
GtkTreeModel *model; GtkTreeModel *model;
GtkWidget *cur_tree; GtkWidget *cur_tree;
GtkTreeIter iter; GtkTreeIter iter;
dialog_confirmation_data *data=malloc(sizeof(dialog_confirmation_data));
data->function=NULL;
data->data=NULL;
if (gtk_notebook_get_current_page(GTK_NOTEBOOK(widgets->MainNotebook))==0){ if (gtk_notebook_get_current_page(GTK_NOTEBOOK(widgets->MainNotebook))==0){
model = GTK_TREE_MODEL(widgets->UsersList); model = GTK_TREE_MODEL(widgets->UsersList);
cur_tree=widgets->UsersTree; cur_tree=widgets->UsersTree;
if(gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(cur_tree)),&model,&iter)){ if(gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(cur_tree)),&model,&iter)){
char *name; char *name;
gtk_tree_model_get(model,&iter,2,&name,-1); gtk_tree_model_get(model,&iter,2,&name,-1);
yon_config_remove_by_key(USERADD(name)); data->action_text=DELETE_CONFIRMATION_LABEL("user",name);
yon_config_remove_by_key(USERADD_SYNC(name)); if (yon_confirmation_dialog_call(self,data)==GTK_RESPONSE_ACCEPT){
yon_config_remove_by_key(USERSHADOW(name)); yon_config_remove_by_key(USERADD(name));
gtk_list_store_remove(GTK_LIST_STORE(model),&iter); yon_config_remove_by_key(USERADD_SYNC(name));
} yon_config_remove_by_key(USERSHADOW(name));
gtk_list_store_remove(GTK_LIST_STORE(model),&iter);
}
}
} else { } else {
model = GTK_TREE_MODEL(widgets->GroupsList); model = GTK_TREE_MODEL(widgets->GroupsList);
cur_tree=widgets->GroupsTree; cur_tree=widgets->GroupsTree;
if(gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(cur_tree)),&model,&iter)){ if(gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(cur_tree)),&model,&iter)){
char *name; char *name;
gtk_tree_model_get(model,&iter,1,&name,-1); gtk_tree_model_get(model,&iter,1,&name,-1);
yon_config_remove_by_key(GROUPADD(name)); data->action_text=DELETE_CONFIRMATION_LABEL("group",name);
gtk_list_store_remove(GTK_LIST_STORE(model),&iter); if (yon_confirmation_dialog_call(self,data)==GTK_RESPONSE_ACCEPT){
yon_config_remove_by_key(GROUPADD(name));
gtk_list_store_remove(GTK_LIST_STORE(model),&iter);
}
} }
} }
} }
@ -1539,6 +1584,7 @@ main_window *yon_main_window_complete(main_window *widgets){
widgets->GroupsTree=yon_gtk_builder_get_widget(builder,"GroupsTree"); widgets->GroupsTree=yon_gtk_builder_get_widget(builder,"GroupsTree");
widgets->MainNotebook=yon_gtk_builder_get_widget(builder,"MainNotebook"); widgets->MainNotebook=yon_gtk_builder_get_widget(builder,"MainNotebook");
gtk_style_context_add_class(gtk_widget_get_style_context(widgets->DocumentationMenuItem),"menuitemmiddlemargin");
if (main_config.lock_load_global == 1){ if (main_config.lock_load_global == 1){
gtk_widget_set_sensitive(widgets->LoadGlobalMenuItem,0); gtk_widget_set_sensitive(widgets->LoadGlobalMenuItem,0);
@ -1672,8 +1718,6 @@ int main(int argc, char *argv[]){
template_main_window *widgets = yon_ubl_window_setup(); template_main_window *widgets = yon_ubl_window_setup();
textdomain (LocaleName); textdomain (LocaleName);
yon_main_window_complete((main_window*)widgets); yon_main_window_complete((main_window*)widgets);
yon_config_set_ignore("DEFAULTPASSWD");
yon_config_set_ignore("DEFAULTROOTPASSWD");
yon_window_config_load(config_path); yon_window_config_load(config_path);
gtk_main(); gtk_main();
} }

@ -14,7 +14,7 @@
#define UID_LABEL _("UID") #define UID_LABEL _("UID")
#define LOGIN_LABEL _("Login") #define LOGIN_LABEL _("Login")
#define PASSWORD_LABEL _("Password") #define PASSWORD_LABEL _("Password")
#define USER_NAME_LABEL _("User name") #define USER_NAME_LABEL _("User\nname")
#define UID_USER_LABEL _("User UID:") #define UID_USER_LABEL _("User UID:")
#define USERNAME_USER_LABEL _("User name (description):") #define USERNAME_USER_LABEL _("User name (description):")
@ -22,7 +22,7 @@
#define PASSWORD_USER_LABEL _("Password:") #define PASSWORD_USER_LABEL _("Password:")
#define DEFAULT_USER_LABEL _("Default") #define DEFAULT_USER_LABEL _("Default")
#define MAIN_GROUP_USER_LABEL _("Main group:") #define MAIN_GROUP_USER_LABEL _("Main group:")
#define ADDITIONAL_GROUPS_USER_LABEL _("Additional groups") #define ADDITIONAL_GROUPS_USER_LABEL _("Additional\ngroups")
#define PASSWORD_HASH_USER_LABEL _("Password hash algorythm:") #define PASSWORD_HASH_USER_LABEL _("Password hash algorythm:")
#define SYNC_SAMBA_USER_LABEL _("Sync with SAMBA user") #define SYNC_SAMBA_USER_LABEL _("Sync with SAMBA user")
#define EXTRA_OPTIONS_USER_LABEL _("Extra options:") #define EXTRA_OPTIONS_USER_LABEL _("Extra options:")
@ -30,13 +30,13 @@
#define OK_LABEL _("Ok") #define OK_LABEL _("Ok")
#define BLOCK_LABEL _("Block") #define BLOCK_LABEL _("Block")
#define MAIN_GROUP_LABEL _("Main group") #define MAIN_GROUP_LABEL _("Main\ngroup")
#define ADDITIONAL_PARAMETERS_LABEL _("Additional parameters") #define ADDITIONAL_PARAMETERS_LABEL _("Additional\nparameters")
#define PASSWORD_STATUS_LABEL _("Password status") #define PASSWORD_STATUS_LABEL _("Password\nstatus")
#define USERS_LABEL _("Users") #define USERS_LABEL _("Users")
#define GID_LABEL _("GID") #define GID_LABEL _("GID")
#define GROUP_NAME_LABEL _("Group name") #define GROUP_NAME_LABEL _("Group\nname")
#define GROUPS_USERS_LABEL _("Group users") #define GROUPS_USERS_LABEL _("Group\nusers")
#define GROUPS_LABEL _("Groups") #define GROUPS_LABEL _("Groups")
#define PASSWORD_TITLE_LABEL _("Password input") #define PASSWORD_TITLE_LABEL _("Password input")
@ -50,6 +50,8 @@
#define REMOVE_LABEL _("Remove") #define REMOVE_LABEL _("Remove")
#define UPDATE_LABEL _("Update users and groups") #define UPDATE_LABEL _("Update users and groups")
#define DELETE_CONFIRMATION_LABEL(type,target) yon_char_unite(_(yon_char_append("Are you sure want to delete ",type)), " '",target,"'?",NULL)
//ubl-settings-usergroups-additional-settings.glade //ubl-settings-usergroups-additional-settings.glade
#define ADDITIONAL_SETTINGS_TITLE_LABEL _("Additional settings") #define ADDITIONAL_SETTINGS_TITLE_LABEL _("Additional settings")
#define NO_PASSWORD_LABEL _("No password required") #define NO_PASSWORD_LABEL _("No password required")
@ -93,8 +95,8 @@
#define INSPECTOR_TITLE_LABEL _("System users and groups") #define INSPECTOR_TITLE_LABEL _("System users and groups")
#define BLOCKED_LABEL _("Blocked") #define BLOCKED_LABEL _("Blocked")
#define USERNAME_LABEL _("Username") #define USERNAME_LABEL _("Username")
#define PRIMARY_GROUP_LABEL _("Primary group") #define PRIMARY_GROUP_LABEL _("Primary\ngroup")
#define HOME_DIRECTORY_LABEL _("Home directory") #define HOME_DIRECTORY_LABEL _("Home\ndirectory")
#define GROUP_LABEL _("Group") #define GROUP_LABEL _("Group")
#define UPDATE_SYSTEM_LABEL _("Update the system users and groups list") #define UPDATE_SYSTEM_LABEL _("Update the system users and groups list")
#define TOGGLE_SYSTEM_LABEL _("Toggle system groups and users") #define TOGGLE_SYSTEM_LABEL _("Toggle system groups and users")
@ -102,13 +104,13 @@
#define PASSWORD_MISMATCH_LABEL _("Password mismatch") #define PASSWORD_MISMATCH_LABEL _("Password mismatch")
#define PASSWORD_SHORT_LABEL(min_size_char) yon_char_unite(_("Password must be at least")," ", min_size_char," ",_("characters")) #define PASSWORD_SHORT_LABEL(min_size_char) yon_char_unite(_("Password must be at least")," ", min_size_char," ",_("characters"))
#define GROUP_LABEL _("Group") #define GROUP_LABEL _("Group")
#define DAYS_WARNING_TABLE_LABEL _("Days until warning") #define DAYS_WARNING_TABLE_LABEL _("Days until\nwarning")
#define DAYS_ACTIVITY_TABLE_LABEL _("Days without activity") #define DAYS_ACTIVITY_TABLE_LABEL _("Days\nwithout activity")
#define SHALL_TABLE_LABEL _("Shell path") #define SHALL_TABLE_LABEL _("Shell\npath")
#define PASSWORD_CHANGED_TABLE_LABEL _("Password has been changed") #define PASSWORD_CHANGED_TABLE_LABEL _("Password has\nbeen changed")
#define EXPIRATION_TABLE_LABEL _("Expiration date") #define EXPIRATION_TABLE_LABEL _("Expiration\ndate")
#define INTERVAL_MIN_TABLE_LABEL _("Password change interval (min)") #define INTERVAL_MIN_TABLE_LABEL _("Password change\ninterval (min)")
#define INTERVAL_MAX_TABLE_LABEL _("Password change interval (max)") #define INTERVAL_MAX_TABLE_LABEL _("Password change\ninterval (max)")
//ubl-settings-usergroups-user.glade //ubl-settings-usergroups-user.glade
#define ADD_USER_TITLE_LABEL _("Add user") #define ADD_USER_TITLE_LABEL _("Add user")
@ -137,14 +139,19 @@
#define SAVE_LABEL _("Save") #define SAVE_LABEL _("Save")
#define LOGIN_TOOLTIP_NAME_LABEL _("login_name") #define LOGIN_TOOLTIP_NAME_LABEL _("login_name")
#define GROUP_TOOLTIP_NAME_LABEL _("group_name") #define GROUP_TOOLTIP_NAME_LABEL _("group_name")
#define USER_NAME_LABEL _("User name") #define USER__NAME_LABEL _("User name")
#define USERADD_SYNC_LABEL _("System user synchronization mode with configuration") #define USER_CONFIIGURATION_LABEL _("User configuration")
#define USERADD_SYNC_LABEL _("User configuration synchronization")
#define USERADD_BOOT_LABEL _("During system startup, load the user from the configuration") #define USERADD_BOOT_LABEL _("During system startup, load the user from the configuration")
#define USERADD_SHUTDOWN_LABEL _("When shutting down the system, save the user into the configuration") #define USERADD_SHUTDOWN_LABEL _("When shutting down the system, save the user into the configuration")
#define USERSHADOW_SYNC_LABEL _("The mode of synchronizing system user settings with the configuration") #define USERSHADOW_SYNC_LABEL _("User password configuration syncronization")
#define USERSHADOW_BOOT_LABEL _("When the system boots up, load the user's settings from the configuration") #define USERSHADOW_BOOT_LABEL _("During system startup, load the user's parameters from the configuration")
#define USERSHADOW_SHUTDOWN_LABEL _("When shutting down the system, save the user's settings into the configuration") #define USERSHADOW_SHUTDOWN_LABEL _("When shutting down the system, save the user's parameters into the configuration")
#define MAIN_NAME_LABEL _("Main")
#define ADDITIONAL_NAME_LABEL _("Additional")
#define SYNCRONIZATION_NAME_LABEL _("Syncronization")
//ubl-settings-usergroups-password.glade //ubl-settings-usergroups-password.glade
#define PASSWORD_REPEAT_LABEL _("Repeat password:") #define PASSWORD_REPEAT_LABEL _("Repeat password:")

@ -25,7 +25,6 @@
</object> </object>
<object class="GtkWindow" id="Window"> <object class="GtkWindow" id="Window">
<property name="width-request">600</property> <property name="width-request">600</property>
<property name="height-request">350</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="modal">True</property> <property name="modal">True</property>
<property name="icon-name">com.ublinux.ubl-settings-usergroups</property> <property name="icon-name">com.ublinux.ubl-settings-usergroups</property>
@ -330,56 +329,12 @@
<property name="position">1</property> <property name="position">1</property>
</packing> </packing>
</child> </child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="halign">end</property>
<property name="spacing">5</property>
<property name="homogeneous">True</property>
<child>
<object class="GtkButton" id="CancelButton">
<property name="label" translatable="yes">Cancel</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="image">image1</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkButton" id="AcceptButton">
<property name="label" translatable="yes">Ok</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="image">image2</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="pack-type">end</property>
<property name="position">2</property>
</packing>
</child>
</object> </object>
</child> </child>
<child type="titlebar"> <child type="titlebar">
<object class="GtkHeaderBar"> <object class="GtkHeaderBar">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="show-close-button">True</property>
<child type="title"> <child type="title">
<object class="GtkLabel"> <object class="GtkLabel">
<property name="visible">True</property> <property name="visible">True</property>
@ -390,6 +345,34 @@
</attributes> </attributes>
</object> </object>
</child> </child>
<child>
<object class="GtkButton" id="CancelButton">
<property name="label" translatable="yes">Cancel</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="image">image1</property>
<style>
<class name="marginright"/>
</style>
</object>
</child>
<child>
<object class="GtkButton" id="AcceptButton">
<property name="label" translatable="yes">Ok</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="image">image2</property>
<style>
<class name="marginright"/>
</style>
</object>
<packing>
<property name="pack-type">end</property>
<property name="position">1</property>
</packing>
</child>
</object> </object>
</child> </child>
</object> </object>

@ -208,57 +208,6 @@
<property name="position">1</property> <property name="position">1</property>
</packing> </packing>
</child> </child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="halign">end</property>
<property name="margin-start">5</property>
<property name="margin-end">5</property>
<property name="spacing">5</property>
<property name="homogeneous">True</property>
<child>
<object class="GtkButton" id="UserCancelButton">
<property name="label" translatable="yes">Cancel</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="image">image4</property>
<style>
<class name="button"/>
</style>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkButton" id="UserOkButton">
<property name="label" translatable="yes">Accept</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="image">image5</property>
<style>
<class name="button"/>
</style>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="pack-type">end</property>
<property name="position">1</property>
</packing>
</child>
<child> <child>
<object class="GtkFrame"> <object class="GtkFrame">
<property name="visible">True</property> <property name="visible">True</property>
@ -444,7 +393,6 @@
<object class="GtkHeaderBar"> <object class="GtkHeaderBar">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="show-close-button">True</property>
<child type="title"> <child type="title">
<object class="GtkLabel" id="userTitleNameLabel"> <object class="GtkLabel" id="userTitleNameLabel">
<property name="visible">True</property> <property name="visible">True</property>
@ -455,6 +403,36 @@
</attributes> </attributes>
</object> </object>
</child> </child>
<child>
<object class="GtkButton" id="UserCancelButton">
<property name="label" translatable="yes">Cancel</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="image">image4</property>
<style>
<class name="button"/>
<class name="marginright"/>
</style>
</object>
</child>
<child>
<object class="GtkButton" id="UserOkButton">
<property name="label" translatable="yes">Accept</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="image">image5</property>
<style>
<class name="button"/>
<class name="marginright"/>
</style>
</object>
<packing>
<property name="pack-type">end</property>
<property name="position">1</property>
</packing>
</child>
</object> </object>
</child> </child>
</object> </object>

@ -112,61 +112,12 @@
<property name="position">1</property> <property name="position">1</property>
</packing> </packing>
</child> </child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="halign">end</property>
<property name="spacing">5</property>
<property name="homogeneous">True</property>
<child>
<object class="GtkButton" id="GroupsCancelButton">
<property name="label" translatable="yes">Cancel</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="image">image5</property>
<style>
<class name="button"/>
</style>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkButton" id="GroupsOkButton">
<property name="label" translatable="yes">Ok</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="image">image6</property>
<style>
<class name="button"/>
</style>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
</object> </object>
</child> </child>
<child type="titlebar"> <child type="titlebar">
<object class="GtkHeaderBar"> <object class="GtkHeaderBar">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="show-close-button">True</property>
<child type="title"> <child type="title">
<object class="GtkLabel" id="HeaderLabel"> <object class="GtkLabel" id="HeaderLabel">
<property name="visible">True</property> <property name="visible">True</property>
@ -177,6 +128,36 @@
</attributes> </attributes>
</object> </object>
</child> </child>
<child>
<object class="GtkButton" id="GroupsCancelButton">
<property name="label" translatable="yes">Cancel</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="image">image5</property>
<style>
<class name="button"/>
<class name="marginright"/>
</style>
</object>
</child>
<child>
<object class="GtkButton" id="GroupsOkButton">
<property name="label" translatable="yes">Ok</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="image">image6</property>
<style>
<class name="button"/>
<class name="marginright"/>
</style>
</object>
<packing>
<property name="pack-type">end</property>
<property name="position">1</property>
</packing>
</child>
</object> </object>
</child> </child>
</object> </object>

@ -41,58 +41,6 @@
<property name="position">0</property> <property name="position">0</property>
</packing> </packing>
</child> </child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="halign">end</property>
<property name="margin-left">5</property>
<property name="margin-right">5</property>
<property name="margin-end">5</property>
<property name="spacing">5</property>
<property name="homogeneous">True</property>
<child>
<object class="GtkButton" id="UserCancelButton">
<property name="label" translatable="yes">Cancel</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="image">image4</property>
<style>
<class name="button"/>
</style>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkButton" id="UserOkButton">
<property name="label" translatable="yes">Accept</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="image">image5</property>
<style>
<class name="button"/>
</style>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="pack-type">end</property>
<property name="position">1</property>
</packing>
</child>
<child> <child>
<object class="GtkBox"> <object class="GtkBox">
<property name="visible">True</property> <property name="visible">True</property>
@ -274,7 +222,6 @@
<object class="GtkHeaderBar"> <object class="GtkHeaderBar">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="show-close-button">True</property>
<child type="title"> <child type="title">
<object class="GtkLabel" id="userTitleNameLabel"> <object class="GtkLabel" id="userTitleNameLabel">
<property name="visible">True</property> <property name="visible">True</property>
@ -285,6 +232,36 @@
</attributes> </attributes>
</object> </object>
</child> </child>
<child>
<object class="GtkButton" id="UserCancelButton">
<property name="label" translatable="yes">Cancel</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="image">image4</property>
<style>
<class name="button"/>
<class name="marginright"/>
</style>
</object>
</child>
<child>
<object class="GtkButton" id="UserOkButton">
<property name="label" translatable="yes">Accept</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="image">image5</property>
<style>
<class name="button"/>
<class name="marginright"/>
</style>
</object>
<packing>
<property name="pack-type">end</property>
<property name="position">1</property>
</packing>
</child>
</object> </object>
</child> </child>
</object> </object>

@ -195,7 +195,8 @@
<property name="resizable">True</property> <property name="resizable">True</property>
<property name="sizing">fixed</property> <property name="sizing">fixed</property>
<property name="min-width">50</property> <property name="min-width">50</property>
<property name="title" translatable="yes">Primary group</property> <property name="title" translatable="yes">Primary
group</property>
<child> <child>
<object class="GtkCellRendererText"/> <object class="GtkCellRendererText"/>
<attributes> <attributes>
@ -209,7 +210,8 @@
<property name="resizable">True</property> <property name="resizable">True</property>
<property name="sizing">fixed</property> <property name="sizing">fixed</property>
<property name="min-width">50</property> <property name="min-width">50</property>
<property name="title" translatable="yes">Additional groups</property> <property name="title" translatable="yes">Additional
groups</property>
<child> <child>
<object class="GtkCellRendererText"> <object class="GtkCellRendererText">
<property name="wrap-width">150</property> <property name="wrap-width">150</property>
@ -223,7 +225,8 @@
<child> <child>
<object class="GtkTreeViewColumn"> <object class="GtkTreeViewColumn">
<property name="min-width">50</property> <property name="min-width">50</property>
<property name="title" translatable="yes">Home directory</property> <property name="title" translatable="yes">Home
directory</property>
<child> <child>
<object class="GtkCellRendererText"/> <object class="GtkCellRendererText"/>
<attributes> <attributes>
@ -234,7 +237,8 @@
</child> </child>
<child> <child>
<object class="GtkTreeViewColumn"> <object class="GtkTreeViewColumn">
<property name="title" translatable="yes">Shell path</property> <property name="title" translatable="yes">Shell
path</property>
<child> <child>
<object class="GtkCellRendererText"/> <object class="GtkCellRendererText"/>
<attributes> <attributes>
@ -245,7 +249,8 @@
</child> </child>
<child> <child>
<object class="GtkTreeViewColumn"> <object class="GtkTreeViewColumn">
<property name="title" translatable="yes">Password has been changed</property> <property name="title" translatable="yes">Password has
been changed</property>
<child> <child>
<object class="GtkCellRendererText"/> <object class="GtkCellRendererText"/>
<attributes> <attributes>
@ -256,7 +261,8 @@
</child> </child>
<child> <child>
<object class="GtkTreeViewColumn"> <object class="GtkTreeViewColumn">
<property name="title" translatable="yes">Expiration date</property> <property name="title" translatable="yes">Expiration
date</property>
<child> <child>
<object class="GtkCellRendererText"/> <object class="GtkCellRendererText"/>
<attributes> <attributes>
@ -267,7 +273,8 @@
</child> </child>
<child> <child>
<object class="GtkTreeViewColumn"> <object class="GtkTreeViewColumn">
<property name="title" translatable="yes">Password change interval (min)</property> <property name="title" translatable="yes">Password change
interval (min)</property>
<child> <child>
<object class="GtkCellRendererText"/> <object class="GtkCellRendererText"/>
<attributes> <attributes>
@ -278,7 +285,8 @@
</child> </child>
<child> <child>
<object class="GtkTreeViewColumn"> <object class="GtkTreeViewColumn">
<property name="title" translatable="yes">Password change interval (max)</property> <property name="title" translatable="yes">Password change
interval (max)</property>
<child> <child>
<object class="GtkCellRendererText"/> <object class="GtkCellRendererText"/>
<attributes> <attributes>
@ -289,7 +297,8 @@
</child> </child>
<child> <child>
<object class="GtkTreeViewColumn"> <object class="GtkTreeViewColumn">
<property name="title" translatable="yes">Days until warning</property> <property name="title" translatable="yes">Days until
warning</property>
<child> <child>
<object class="GtkCellRendererText"/> <object class="GtkCellRendererText"/>
<attributes> <attributes>
@ -300,7 +309,8 @@
</child> </child>
<child> <child>
<object class="GtkTreeViewColumn"> <object class="GtkTreeViewColumn">
<property name="title" translatable="yes">Days without activity</property> <property name="title" translatable="yes">Days
without activity</property>
<child> <child>
<object class="GtkCellRendererText"/> <object class="GtkCellRendererText"/>
<attributes> <attributes>
@ -372,7 +382,8 @@
<child> <child>
<object class="GtkTreeViewColumn"> <object class="GtkTreeViewColumn">
<property name="min-width">50</property> <property name="min-width">50</property>
<property name="title" translatable="yes">Group users</property> <property name="title" translatable="yes">Group
users</property>
<child> <child>
<object class="GtkCellRendererText"/> <object class="GtkCellRendererText"/>
<attributes> <attributes>

File diff suppressed because it is too large Load Diff

@ -39,6 +39,10 @@ background:transparent;
border-right-width:inherit; border-right-width:inherit;
} }
.menuitemmiddlemargin{
margin-top: 6px;
}
.menuitemtop{ .menuitemtop{
margin-bottom:0px; margin-bottom:0px;
border-color:inherit; border-color:inherit;
@ -47,8 +51,8 @@ background:transparent;
border-right-width:inherit; border-right-width:inherit;
} }
.menuitemtop *{ .menuitemtop *{
margin:2px 2px 0 2px; margin:4px 2px 0 2px;
padding: 5px 10px 3px 5px; padding: 3px 10px 3px 5px;
border:transparent; border:transparent;
} }
.menuitemmiddle *{ .menuitemmiddle *{
@ -58,7 +62,7 @@ background:transparent;
} }
.menuitembottom *{ .menuitembottom *{
margin:0 2px 2px 2px; margin:0 2px 2px 2px;
padding: 3px 10px 5px 5px; padding: 3px 10px 3px 5px;
} }
.menuitemtop:hover { .menuitemtop:hover {
background:@theme_bg_color; background:@theme_bg_color;
@ -82,8 +86,8 @@ background:transparent;
} }
.menuitemtop:hover* { .menuitemtop:hover* {
margin:2px 2px 0 2px; margin:4px 2px 0 2px;
padding: 5px 10px 3px 5px; padding: 3px 10px 3px 5px;
background:@theme_selected_bg_color; background:@theme_selected_bg_color;
border-radius:2px; border-radius:2px;
} }
@ -95,7 +99,7 @@ background:transparent;
} }
.menuitembottom:hover* { .menuitembottom:hover* {
margin:0 2px 2px 2px; margin:0 2px 2px 2px;
padding: 3px 10px 5px 5px; padding: 3px 10px 3px 5px;
background:@theme_selected_bg_color; background:@theme_selected_bg_color;
border-radius:2px; border-radius:2px;
} }
@ -106,9 +110,25 @@ background:transparent;
.boxInfoMessOK{ .boxInfoMessOK{
background-color: #f3f0ac; background-color: #f3f0ac;
} }
.errorBox { .errorBox {
border-width: 2px; border-width: 2px;
border-color: #ea9999; border-color: #ea9999;
border-style:solid; border-style:solid;
} }
.chosenOutline{
transition: 0ms;
border-width: 1px;
border-color: #f3f0ac;
border-style:solid;
}
.debugborders *{
border-width: 2px;
border-color: #000000;
border-style: solid;
}
.marginright image{
margin-right: 2px;
}

@ -103,12 +103,6 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
<object class="GtkBox" id="PlugBox"> <object class="GtkBox" id="PlugBox">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="margin-left">5</property>
<property name="margin-right">5</property>
<property name="margin-start">5</property>
<property name="margin-end">5</property>
<property name="margin-top">5</property>
<property name="margin-bottom">5</property>
<property name="hexpand">True</property> <property name="hexpand">True</property>
<property name="vexpand">True</property> <property name="vexpand">True</property>
<property name="spacing">5</property> <property name="spacing">5</property>
@ -116,6 +110,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
<object class="GtkBox"> <object class="GtkBox">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="margin-top">2</property>
<property name="orientation">vertical</property> <property name="orientation">vertical</property>
<property name="spacing">5</property> <property name="spacing">5</property>
<child> <child>
@ -340,7 +335,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
<property name="resizable">True</property> <property name="resizable">True</property>
<property name="sizing">fixed</property> <property name="sizing">fixed</property>
<property name="fixed-width">10</property> <property name="fixed-width">10</property>
<property name="title" translatable="yes">User name</property> <property name="title" translatable="yes">User
name</property>
<child> <child>
<object class="GtkCellRendererText"/> <object class="GtkCellRendererText"/>
<attributes> <attributes>
@ -354,7 +350,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
<property name="resizable">True</property> <property name="resizable">True</property>
<property name="sizing">fixed</property> <property name="sizing">fixed</property>
<property name="fixed-width">10</property> <property name="fixed-width">10</property>
<property name="title" translatable="yes">Main group</property> <property name="title" translatable="yes">Main
group</property>
<child> <child>
<object class="GtkCellRendererText"/> <object class="GtkCellRendererText"/>
<attributes> <attributes>
@ -368,7 +365,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
<property name="resizable">True</property> <property name="resizable">True</property>
<property name="sizing">fixed</property> <property name="sizing">fixed</property>
<property name="fixed-width">10</property> <property name="fixed-width">10</property>
<property name="title" translatable="yes">Additional groups</property> <property name="title" translatable="yes">Additional
groups</property>
<child> <child>
<object class="GtkCellRendererText"> <object class="GtkCellRendererText">
<property name="wrap-mode">word</property> <property name="wrap-mode">word</property>
@ -385,7 +383,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
<property name="resizable">True</property> <property name="resizable">True</property>
<property name="sizing">fixed</property> <property name="sizing">fixed</property>
<property name="fixed-width">10</property> <property name="fixed-width">10</property>
<property name="title" translatable="yes">Additional parameters</property> <property name="title" translatable="yes">Additional
parameters</property>
<child> <child>
<object class="GtkCellRendererText"> <object class="GtkCellRendererText">
<property name="wrap-mode">word</property> <property name="wrap-mode">word</property>
@ -401,7 +400,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
<object class="GtkTreeViewColumn"> <object class="GtkTreeViewColumn">
<property name="sizing">autosize</property> <property name="sizing">autosize</property>
<property name="fixed-width">10</property> <property name="fixed-width">10</property>
<property name="title" translatable="yes">Password status</property> <property name="title" translatable="yes">Password
status</property>
<child> <child>
<object class="GtkCellRendererText"/> <object class="GtkCellRendererText"/>
<attributes> <attributes>
@ -473,7 +473,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
<property name="resizable">True</property> <property name="resizable">True</property>
<property name="sizing">fixed</property> <property name="sizing">fixed</property>
<property name="fixed-width">10</property> <property name="fixed-width">10</property>
<property name="title" translatable="yes">Group name</property> <property name="title" translatable="yes">Group
name</property>
<child> <child>
<object class="GtkCellRendererText"/> <object class="GtkCellRendererText"/>
<attributes> <attributes>
@ -487,7 +488,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
<property name="resizable">True</property> <property name="resizable">True</property>
<property name="sizing">fixed</property> <property name="sizing">fixed</property>
<property name="fixed-width">10</property> <property name="fixed-width">10</property>
<property name="title" translatable="yes">Group users</property> <property name="title" translatable="yes">Group
users</property>
<child> <child>
<object class="GtkCellRendererText"/> <object class="GtkCellRendererText"/>
<attributes> <attributes>
@ -501,7 +503,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
<property name="resizable">True</property> <property name="resizable">True</property>
<property name="sizing">fixed</property> <property name="sizing">fixed</property>
<property name="fixed-width">10</property> <property name="fixed-width">10</property>
<property name="title" translatable="yes">Additional parameters</property> <property name="title" translatable="yes">Additional
parameters</property>
<child> <child>
<object class="GtkCellRendererText"/> <object class="GtkCellRendererText"/>
<attributes> <attributes>
@ -514,7 +517,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
<object class="GtkTreeViewColumn"> <object class="GtkTreeViewColumn">
<property name="sizing">autosize</property> <property name="sizing">autosize</property>
<property name="fixed-width">10</property> <property name="fixed-width">10</property>
<property name="title" translatable="yes">Password status</property> <property name="title" translatable="yes">Password
status</property>
<child> <child>
<object class="GtkCellRendererText"/> <object class="GtkCellRendererText"/>
<attributes> <attributes>

@ -105,7 +105,7 @@ msgstr ""
msgid "UID" msgid "UID"
msgstr "" msgstr ""
#: source/ubl-strings.h:15 source/ubl-strings.h:79 #: source/ubl-strings.h:15 source/ubl-strings.h:81
msgid "Login" msgid "Login"
msgstr "" msgstr ""
@ -113,8 +113,10 @@ msgstr ""
msgid "Password" msgid "Password"
msgstr "" msgstr ""
#: source/ubl-strings.h:17 source/ubl-strings.h:140 #: source/ubl-strings.h:17
msgid "User name" msgid ""
"User\n"
"name"
msgstr "" msgstr ""
#: source/ubl-strings.h:19 #: source/ubl-strings.h:19
@ -141,8 +143,10 @@ msgstr ""
msgid "Main group:" msgid "Main group:"
msgstr "" msgstr ""
#: source/ubl-strings.h:25 source/ubl-strings.h:88 #: source/ubl-strings.h:25
msgid "Additional groups" msgid ""
"Additional\n"
"groups"
msgstr "" msgstr ""
#: source/ubl-strings.h:27 #: source/ubl-strings.h:27
@ -165,16 +169,22 @@ msgstr ""
msgid "Block" msgid "Block"
msgstr "" msgstr ""
#: source/ubl-strings.h:33 source/ubl-strings.h:87 #: source/ubl-strings.h:33
msgid "Main group" msgid ""
"Main\n"
"group"
msgstr "" msgstr ""
#: source/ubl-strings.h:34 #: source/ubl-strings.h:34
msgid "Additional parameters" msgid ""
"Additional\n"
"parameters"
msgstr "" msgstr ""
#: source/ubl-strings.h:35 #: source/ubl-strings.h:35
msgid "Password status" msgid ""
"Password\n"
"status"
msgstr "" msgstr ""
#: source/ubl-strings.h:36 #: source/ubl-strings.h:36
@ -186,11 +196,15 @@ msgid "GID"
msgstr "" msgstr ""
#: source/ubl-strings.h:38 #: source/ubl-strings.h:38
msgid "Group name" msgid ""
"Group\n"
"name"
msgstr "" msgstr ""
#: source/ubl-strings.h:39 #: source/ubl-strings.h:39
msgid "Group users" msgid ""
"Group\n"
"users"
msgstr "" msgstr ""
#: source/ubl-strings.h:40 #: source/ubl-strings.h:40
@ -209,7 +223,7 @@ msgstr ""
msgid "Inspect users and groups in system" msgid "Inspect users and groups in system"
msgstr "" msgstr ""
#: source/ubl-strings.h:46 source/ubl-strings.h:54 #: source/ubl-strings.h:46 source/ubl-strings.h:56
msgid "Additional settings" msgid "Additional settings"
msgstr "" msgstr ""
@ -233,281 +247,335 @@ msgstr ""
msgid "Update users and groups" msgid "Update users and groups"
msgstr "" msgstr ""
#: source/ubl-strings.h:55 #: source/ubl-strings.h:53
msgid "Are you sure want to delete group"
msgstr ""
#: source/ubl-strings.h:53
msgid "Are you sure want to delete user"
msgstr ""
#: source/ubl-strings.h:57
msgid "No password required" msgid "No password required"
msgstr "" msgstr ""
#: source/ubl-strings.h:56 #: source/ubl-strings.h:58
msgid "Set a password" msgid "Set a password"
msgstr "" msgstr ""
#: source/ubl-strings.h:57 #: source/ubl-strings.h:59
msgid "Endrypted password" msgid "Endrypted password"
msgstr "" msgstr ""
#: source/ubl-strings.h:70 #: source/ubl-strings.h:72
msgid "Accept" msgid "Accept"
msgstr "" msgstr ""
#: source/ubl-strings.h:73 #: source/ubl-strings.h:75
msgid "Configure group" msgid "Configure group"
msgstr "" msgstr ""
#: source/ubl-strings.h:74 #: source/ubl-strings.h:76
msgid "Add group" msgid "Add group"
msgstr "" msgstr ""
#: source/ubl-strings.h:75 #: source/ubl-strings.h:77
msgid "Group id:" msgid "Group id:"
msgstr "" msgstr ""
#: source/ubl-strings.h:76 #: source/ubl-strings.h:78
msgid "Group name:" msgid "Group name:"
msgstr "" msgstr ""
#: source/ubl-strings.h:77 #: source/ubl-strings.h:79
msgid "Group users:" msgid "Group users:"
msgstr "" msgstr ""
#: source/ubl-strings.h:78 #: source/ubl-strings.h:80
msgid "Automatically" msgid "Automatically"
msgstr "" msgstr ""
#: source/ubl-strings.h:80 #: source/ubl-strings.h:82
msgid "Create group with ununique GID" msgid "Create group with ununique GID"
msgstr "" msgstr ""
#: source/ubl-strings.h:81 #: source/ubl-strings.h:83
msgid "Create system group" msgid "Create system group"
msgstr "" msgstr ""
#: source/ubl-strings.h:82 #: source/ubl-strings.h:84
msgid "Encrypted password" msgid "Encrypted password"
msgstr "" msgstr ""
#: source/ubl-strings.h:83 #: source/ubl-strings.h:85
msgid "Additional configuration" msgid "Additional configuration"
msgstr "" msgstr ""
#: source/ubl-strings.h:86 #: source/ubl-strings.h:88
msgid "Default groups" msgid "Default groups"
msgstr "" msgstr ""
#: source/ubl-strings.h:89 #: source/ubl-strings.h:89
msgid "Choose groups" msgid "Main group"
msgstr "" msgstr ""
#: source/ubl-strings.h:90 #: source/ubl-strings.h:90
msgid "Additional groups"
msgstr ""
#: source/ubl-strings.h:91
msgid "Choose groups"
msgstr ""
#: source/ubl-strings.h:92
msgid "Choose users" msgid "Choose users"
msgstr "" msgstr ""
#: source/ubl-strings.h:93 #: source/ubl-strings.h:95
msgid "System users and groups" msgid "System users and groups"
msgstr "" msgstr ""
#: source/ubl-strings.h:94 #: source/ubl-strings.h:96
msgid "Blocked" msgid "Blocked"
msgstr "" msgstr ""
#: source/ubl-strings.h:95 #: source/ubl-strings.h:97
msgid "Username" msgid "Username"
msgstr "" msgstr ""
#: source/ubl-strings.h:96 #: source/ubl-strings.h:98
msgid "Primary group" msgid ""
"Primary\n"
"group"
msgstr "" msgstr ""
#: source/ubl-strings.h:97 #: source/ubl-strings.h:99
msgid "Home directory" msgid ""
"Home\n"
"directory"
msgstr "" msgstr ""
#: source/ubl-strings.h:98 source/ubl-strings.h:104 #: source/ubl-strings.h:100 source/ubl-strings.h:106
msgid "Group" msgid "Group"
msgstr "" msgstr ""
#: source/ubl-strings.h:99 #: source/ubl-strings.h:101
msgid "Update the system users and groups list" msgid "Update the system users and groups list"
msgstr "" msgstr ""
#: source/ubl-strings.h:100 #: source/ubl-strings.h:102
msgid "Toggle system groups and users" msgid "Toggle system groups and users"
msgstr "" msgstr ""
#: source/ubl-strings.h:102 #: source/ubl-strings.h:104
msgid "Password mismatch" msgid "Password mismatch"
msgstr "" msgstr ""
#: source/ubl-strings.h:103 #: source/ubl-strings.h:105
msgid "Password must be at least" msgid "Password must be at least"
msgstr "" msgstr ""
#: source/ubl-strings.h:103
msgid "characters"
msgstr ""
#: source/ubl-strings.h:105 #: source/ubl-strings.h:105
msgid "Days until warning" msgid "characters"
msgstr ""
#: source/ubl-strings.h:106
msgid "Days without activity"
msgstr "" msgstr ""
#: source/ubl-strings.h:107 #: source/ubl-strings.h:107
msgid "Shell path" msgid ""
"Days until\n"
"warning"
msgstr "" msgstr ""
#: source/ubl-strings.h:108 #: source/ubl-strings.h:108
msgid "Password has been changed" msgid ""
"Days\n"
"without activity"
msgstr "" msgstr ""
#: source/ubl-strings.h:109 #: source/ubl-strings.h:109
msgid "Expiration date" msgid ""
"Shell\n"
"path"
msgstr "" msgstr ""
#: source/ubl-strings.h:110 #: source/ubl-strings.h:110
msgid "Password change interval (min)" msgid ""
"Password has\n"
"been changed"
msgstr "" msgstr ""
#: source/ubl-strings.h:111 #: source/ubl-strings.h:111
msgid "Password change interval (max)" msgid ""
"Expiration\n"
"date"
msgstr ""
#: source/ubl-strings.h:112
msgid ""
"Password change\n"
"interval (min)"
msgstr "" msgstr ""
#: source/ubl-strings.h:114 #: source/ubl-strings.h:113
msgid ""
"Password change\n"
"interval (max)"
msgstr ""
#: source/ubl-strings.h:116
msgid "Add user" msgid "Add user"
msgstr "" msgstr ""
#: source/ubl-strings.h:115 #: source/ubl-strings.h:117
msgid "Configure user" msgid "Configure user"
msgstr "" msgstr ""
#: source/ubl-strings.h:116 #: source/ubl-strings.h:118
msgid "Set" msgid "Set"
msgstr "" msgstr ""
#: source/ubl-strings.h:117 #: source/ubl-strings.h:119
msgid "Empty important field" msgid "Empty important field"
msgstr "" msgstr ""
#: source/ubl-strings.h:118 #: source/ubl-strings.h:120
msgid "Loading has failed" msgid "Loading has failed"
msgstr "" msgstr ""
#: source/ubl-strings.h:119 #: source/ubl-strings.h:121
msgid "Login name" msgid "Login name"
msgstr "" msgstr ""
#: source/ubl-strings.h:120 #: source/ubl-strings.h:122
msgid "Additional groups:" msgid "Additional groups:"
msgstr "" msgstr ""
#: source/ubl-strings.h:121 #: source/ubl-strings.h:123
msgid "Password configuration" msgid "Password configuration"
msgstr "" msgstr ""
#: source/ubl-strings.h:122 #: source/ubl-strings.h:124
msgid "Password has been changed:" msgid "Password has been changed:"
msgstr "" msgstr ""
#: source/ubl-strings.h:123 #: source/ubl-strings.h:125
msgid "expiration date:" msgid "expiration date:"
msgstr "" msgstr ""
#: source/ubl-strings.h:124 #: source/ubl-strings.h:126
msgid "Password change interval: minimum" msgid "Password change interval: minimum"
msgstr "" msgstr ""
#: source/ubl-strings.h:125 #: source/ubl-strings.h:127
msgid "days, maximum" msgid "days, maximum"
msgstr "" msgstr ""
#: source/ubl-strings.h:126 #: source/ubl-strings.h:128
msgid "days" msgid "days"
msgstr "" msgstr ""
#: source/ubl-strings.h:127 #: source/ubl-strings.h:129
msgid "Days until warning:" msgid "Days until warning:"
msgstr "" msgstr ""
#: source/ubl-strings.h:128 #: source/ubl-strings.h:130
msgid "Days without activity:" msgid "Days without activity:"
msgstr "" msgstr ""
#: source/ubl-strings.h:129 #: source/ubl-strings.h:131
msgid "Force change at next login" msgid "Force change at next login"
msgstr "" msgstr ""
#: source/ubl-strings.h:130 #: source/ubl-strings.h:132
msgid "User shell:" msgid "User shell:"
msgstr "" msgstr ""
#: source/ubl-strings.h:131 #: source/ubl-strings.h:133
msgid "Home directory:" msgid "Home directory:"
msgstr "" msgstr ""
#: source/ubl-strings.h:132 #: source/ubl-strings.h:134
msgid "Don't set" msgid "Don't set"
msgstr "" msgstr ""
#: source/ubl-strings.h:133 #: source/ubl-strings.h:135
msgid "Create system user" msgid "Create system user"
msgstr "" msgstr ""
#: source/ubl-strings.h:134 #: source/ubl-strings.h:136
msgid "Create user with ununique (repeating) UID" msgid "Create user with ununique (repeating) UID"
msgstr "" msgstr ""
#: source/ubl-strings.h:135 #: source/ubl-strings.h:137
msgid "Do not check login for compliance with character rules" msgid "Do not check login for compliance with character rules"
msgstr "" msgstr ""
#: source/ubl-strings.h:136 #: source/ubl-strings.h:138
msgid "Temporary deactivation" msgid "Temporary deactivation"
msgstr "" msgstr ""
#: source/ubl-strings.h:137 #: source/ubl-strings.h:139
msgid "Save" msgid "Save"
msgstr "" msgstr ""
#: source/ubl-strings.h:138 #: source/ubl-strings.h:140
msgid "login_name" msgid "login_name"
msgstr "" msgstr ""
#: source/ubl-strings.h:139 #: source/ubl-strings.h:141
msgid "group_name" msgid "group_name"
msgstr "" msgstr ""
#: source/ubl-strings.h:142 #: source/ubl-strings.h:142
msgid "System user synchronization mode with configuration" msgid "User name"
msgstr ""
#: source/ubl-strings.h:144
msgid "User configuration"
msgstr "" msgstr ""
#: source/ubl-strings.h:143 #: source/ubl-strings.h:145
msgid "User configuration synchronization"
msgstr ""
#: source/ubl-strings.h:146
msgid "During system startup, load the user from the configuration" msgid "During system startup, load the user from the configuration"
msgstr "" msgstr ""
#: source/ubl-strings.h:144 #: source/ubl-strings.h:147
msgid "When shutting down the system, save the user into the configuration" msgid "When shutting down the system, save the user into the configuration"
msgstr "" msgstr ""
#: source/ubl-strings.h:145 #: source/ubl-strings.h:148
msgid "The mode of synchronizing system user settings with the configuration" msgid "User password configuration syncronization"
msgstr "" msgstr ""
#: source/ubl-strings.h:146 #: source/ubl-strings.h:149
msgid "" msgid ""
"When the system boots up, load the user's settings from the configuration" "During system startup, load the user's parameters from the configuration"
msgstr "" msgstr ""
#: source/ubl-strings.h:147 #: source/ubl-strings.h:150
msgid "" msgid ""
"When shutting down the system, save the user's settings into the " "When shutting down the system, save the user's parameters into the "
"configuration" "configuration"
msgstr "" msgstr ""
#: source/ubl-strings.h:150 #: source/ubl-strings.h:152
msgid "Main"
msgstr ""
#: source/ubl-strings.h:153
msgid "Additional"
msgstr ""
#: source/ubl-strings.h:154
msgid "Syncronization"
msgstr ""
#: source/ubl-strings.h:157
msgid "Repeat password:" msgid "Repeat password:"
msgstr "" msgstr ""
#: source/ubl-strings.h:151 #: source/ubl-strings.h:158
msgid "Password hash:" msgid "Password hash:"
msgstr "" msgstr ""

@ -22,7 +22,6 @@ msgid "Version:"
msgstr "Версия:" msgstr "Версия:"
#: source/ubl-strings.h:2 #: source/ubl-strings.h:2
#, fuzzy
msgid "ubl-settings-usergroups version:" msgid "ubl-settings-usergroups version:"
msgstr "Версия ubl-ubl-settings-usergroups: " msgstr "Версия ubl-ubl-settings-usergroups: "
@ -108,7 +107,7 @@ msgstr "Алгоритм хэширования пароля:"
msgid "UID" msgid "UID"
msgstr "UID" msgstr "UID"
#: source/ubl-strings.h:15 source/ubl-strings.h:79 #: source/ubl-strings.h:15 source/ubl-strings.h:81
msgid "Login" msgid "Login"
msgstr "Логин" msgstr "Логин"
@ -116,9 +115,13 @@ msgstr "Логин"
msgid "Password" msgid "Password"
msgstr "Пароль" msgstr "Пароль"
#: source/ubl-strings.h:17 source/ubl-strings.h:140 #: source/ubl-strings.h:17
msgid "User name" msgid ""
msgstr "Имя пользователя" "User\n"
"name"
msgstr ""
"Имя\n"
"пользователя"
#: source/ubl-strings.h:19 #: source/ubl-strings.h:19
msgid "User UID:" msgid "User UID:"
@ -144,9 +147,13 @@ msgstr "По умолчанию"
msgid "Main group:" msgid "Main group:"
msgstr "Основная группа:" msgstr "Основная группа:"
#: source/ubl-strings.h:25 source/ubl-strings.h:88 #: source/ubl-strings.h:25
msgid "Additional groups" msgid ""
msgstr "Дополнительные группы" "Additional\n"
"groups"
msgstr ""
"Дополнительные\n"
"группы"
#: source/ubl-strings.h:27 #: source/ubl-strings.h:27
msgid "Sync with SAMBA user" msgid "Sync with SAMBA user"
@ -162,23 +169,35 @@ msgstr "Отменить"
#: source/ubl-strings.h:30 #: source/ubl-strings.h:30
msgid "Ok" msgid "Ok"
msgstr "Ок" msgstr "Применить"
#: source/ubl-strings.h:32 #: source/ubl-strings.h:32
msgid "Block" msgid "Block"
msgstr "Заблокировано" msgstr "Заблокировано"
#: source/ubl-strings.h:33 source/ubl-strings.h:87 #: source/ubl-strings.h:33
msgid "Main group" msgid ""
msgstr "Основная группа" "Main\n"
"group"
msgstr ""
"Основная\n"
"группа"
#: source/ubl-strings.h:34 #: source/ubl-strings.h:34
msgid "Additional parameters" msgid ""
msgstr "Дополнительные параметры" "Additional\n"
"parameters"
msgstr ""
"Дополнительные\n"
"параметры"
#: source/ubl-strings.h:35 #: source/ubl-strings.h:35
msgid "Password status" msgid ""
msgstr "Статус пароля" "Password\n"
"status"
msgstr ""
"Статус\n"
"пароля"
#: source/ubl-strings.h:36 #: source/ubl-strings.h:36
msgid "Users" msgid "Users"
@ -189,12 +208,20 @@ msgid "GID"
msgstr "GID" msgstr "GID"
#: source/ubl-strings.h:38 #: source/ubl-strings.h:38
msgid "Group name" msgid ""
msgstr "Имя группы" "Group\n"
"name"
msgstr ""
"Имя\n"
"группы"
#: source/ubl-strings.h:39 #: source/ubl-strings.h:39
msgid "Group users" msgid ""
msgstr "Пользователи группы" "Group\n"
"users"
msgstr ""
"Пользователи\n"
"группы"
#: source/ubl-strings.h:40 #: source/ubl-strings.h:40
msgid "Groups" msgid "Groups"
@ -212,7 +239,7 @@ msgstr "Обзор файлов"
msgid "Inspect users and groups in system" msgid "Inspect users and groups in system"
msgstr "Просмотр пользователей и групп в системе" msgstr "Просмотр пользователей и групп в системе"
#: source/ubl-strings.h:46 source/ubl-strings.h:54 #: source/ubl-strings.h:46 source/ubl-strings.h:56
msgid "Additional settings" msgid "Additional settings"
msgstr "Дополнительные настройки" msgstr "Дополнительные настройки"
@ -236,284 +263,354 @@ msgstr "Удалить"
msgid "Update users and groups" msgid "Update users and groups"
msgstr "Обновить список пользователей и групп" msgstr "Обновить список пользователей и групп"
#: source/ubl-strings.h:55 #: source/ubl-strings.h:53
msgid "Are you sure want to delete group"
msgstr "Вы уверены, что хотите удалить группу"
#: source/ubl-strings.h:53
msgid "Are you sure want to delete user"
msgstr "Вы уверены, что хотите удалить пользователя"
#: source/ubl-strings.h:57
msgid "No password required" msgid "No password required"
msgstr "Пароль не требуется" msgstr "Пароль не требуется"
#: source/ubl-strings.h:56 #: source/ubl-strings.h:58
msgid "Set a password" msgid "Set a password"
msgstr "Задать пароль" msgstr "Задать пароль"
#: source/ubl-strings.h:57 #: source/ubl-strings.h:59
msgid "Endrypted password" msgid "Endrypted password"
msgstr "Зашифрованный пароль" msgstr "Зашифрованный пароль"
#: source/ubl-strings.h:70 #: source/ubl-strings.h:72
msgid "Accept" msgid "Accept"
msgstr "Принять" msgstr "Принять"
#: source/ubl-strings.h:73 #: source/ubl-strings.h:75
msgid "Configure group" msgid "Configure group"
msgstr "Редактировать группу" msgstr "Редактировать группу"
#: source/ubl-strings.h:74 #: source/ubl-strings.h:76
msgid "Add group" msgid "Add group"
msgstr "Добавить группу" msgstr "Добавить группу"
#: source/ubl-strings.h:75 #: source/ubl-strings.h:77
msgid "Group id:" msgid "Group id:"
msgstr "ID Группы:" msgstr "ID Группы:"
#: source/ubl-strings.h:76 #: source/ubl-strings.h:78
msgid "Group name:" msgid "Group name:"
msgstr "Имя группы:" msgstr "Имя группы:"
#: source/ubl-strings.h:77 #: source/ubl-strings.h:79
msgid "Group users:" msgid "Group users:"
msgstr "Пользователи группы:" msgstr "Пользователи группы:"
#: source/ubl-strings.h:78 #: source/ubl-strings.h:80
msgid "Automatically" msgid "Automatically"
msgstr "Автоматически" msgstr "Автоматически"
#: source/ubl-strings.h:80 #: source/ubl-strings.h:82
msgid "Create group with ununique GID" msgid "Create group with ununique GID"
msgstr "Создать группу с повторяющимися (не уникальными) GID" msgstr "Создать группу с повторяющимися (не уникальными) GID"
#: source/ubl-strings.h:81 #: source/ubl-strings.h:83
msgid "Create system group" msgid "Create system group"
msgstr "Создать системную группу" msgstr "Создать системную группу"
#: source/ubl-strings.h:82 #: source/ubl-strings.h:84
msgid "Encrypted password" msgid "Encrypted password"
msgstr "Зашифрованный пароль" msgstr "Зашифрованный пароль"
#: source/ubl-strings.h:83 #: source/ubl-strings.h:85
msgid "Additional configuration" msgid "Additional configuration"
msgstr "Загрузить локальную конфигурацию" msgstr "Дополнительные настройки"
#: source/ubl-strings.h:86 #: source/ubl-strings.h:88
#, fuzzy
msgid "Default groups" msgid "Default groups"
msgstr "Группы пользователей по умолчанию" msgstr "Группы пользователей по умолчанию"
#: source/ubl-strings.h:89 #: source/ubl-strings.h:89
msgid "Main group"
msgstr "Основная группа"
#: source/ubl-strings.h:90
msgid "Additional groups"
msgstr "Дополнительные группы"
#: source/ubl-strings.h:91
msgid "Choose groups" msgid "Choose groups"
msgstr "Выбрать группы" msgstr "Выбрать группы"
#: source/ubl-strings.h:90 #: source/ubl-strings.h:92
msgid "Choose users" msgid "Choose users"
msgstr "Выбрать пользователей" msgstr "Выбрать пользователей"
#: source/ubl-strings.h:93 #: source/ubl-strings.h:95
msgid "System users and groups" msgid "System users and groups"
msgstr "Пользователи и группы в системе" msgstr "Пользователи и группы в системе"
#: source/ubl-strings.h:94 #: source/ubl-strings.h:96
msgid "Blocked" msgid "Blocked"
msgstr "Заблокировано" msgstr "Заблокировано"
#: source/ubl-strings.h:95 #: source/ubl-strings.h:97
msgid "Username" msgid "Username"
msgstr "Имя пользователя" msgstr "Имя пользователя"
#: source/ubl-strings.h:96 #: source/ubl-strings.h:98
msgid "Primary group" msgid ""
msgstr "Основная группа" "Primary\n"
"group"
msgstr ""
"Основная\n"
"группа"
#: source/ubl-strings.h:97 #: source/ubl-strings.h:99
msgid "Home directory" msgid ""
msgstr "Домашний каталог" "Home\n"
"directory"
msgstr ""
"Домашний\n"
"каталог"
#: source/ubl-strings.h:98 source/ubl-strings.h:104 #: source/ubl-strings.h:100 source/ubl-strings.h:106
msgid "Group" msgid "Group"
msgstr "Группа" msgstr "Группа"
#: source/ubl-strings.h:99 #: source/ubl-strings.h:101
msgid "Update the system users and groups list" msgid "Update the system users and groups list"
msgstr "Обновить список пользователей и групп системы" msgstr "Обновить список пользователей и групп системы"
#: source/ubl-strings.h:100 #: source/ubl-strings.h:102
msgid "Toggle system groups and users" msgid "Toggle system groups and users"
msgstr "Переключить видимость системных пользователей и групп" msgstr "Переключить видимость системных пользователей и групп"
#: source/ubl-strings.h:102 #: source/ubl-strings.h:104
msgid "Password mismatch" msgid "Password mismatch"
msgstr "Несовпадение паролей" msgstr "Несовпадение паролей"
#: source/ubl-strings.h:103 #: source/ubl-strings.h:105
msgid "Password must be at least" msgid "Password must be at least"
msgstr "Пароль должен состоять из как минимум" msgstr "Пароль должен состоять из как минимум"
#: source/ubl-strings.h:103 #: source/ubl-strings.h:105
msgid "characters" msgid "characters"
msgstr "символов" msgstr "символов"
#: source/ubl-strings.h:105
msgid "Days until warning"
msgstr "Дней до предупреждения"
#: source/ubl-strings.h:106
msgid "Days without activity"
msgstr "Дней без активности"
#: source/ubl-strings.h:107 #: source/ubl-strings.h:107
msgid "Shell path" msgid ""
msgstr "Путь до оболочки" "Days until\n"
"warning"
msgstr ""
"Дней до\n"
"предупреждения"
#: source/ubl-strings.h:108 #: source/ubl-strings.h:108
msgid "Password has been changed" msgid ""
msgstr "Пароль изменён" "Days\n"
"without activity"
msgstr ""
"Дней без\n"
"активности"
#: source/ubl-strings.h:109 #: source/ubl-strings.h:109
msgid "Expiration date" msgid ""
msgstr "Дата устаревания" "Shell\n"
"path"
msgstr ""
"Путь до\n"
"оболочки"
#: source/ubl-strings.h:110 #: source/ubl-strings.h:110
msgid "Password change interval (min)" msgid ""
msgstr "Интервал смены пароля (мин.)" "Password has\n"
"been changed"
msgstr ""
"Пароль\n"
"изменён"
#: source/ubl-strings.h:111 #: source/ubl-strings.h:111
msgid "Password change interval (max)" msgid ""
msgstr "Интервал смены пароля (макс.)" "Expiration\n"
"date"
msgstr ""
"Дата\n"
"устаревания"
#: source/ubl-strings.h:112
msgid ""
"Password change\n"
"interval (min)"
msgstr ""
"Интервал смены\n"
"пароля (мин.)"
#: source/ubl-strings.h:114 #: source/ubl-strings.h:113
msgid ""
"Password change\n"
"interval (max)"
msgstr ""
"Интервал смены\n"
"пароля (макс.)"
#: source/ubl-strings.h:116
msgid "Add user" msgid "Add user"
msgstr "Добавить пользователя" msgstr "Добавить пользователя"
#: source/ubl-strings.h:115 #: source/ubl-strings.h:117
msgid "Configure user" msgid "Configure user"
msgstr "Редактировать пользователя" msgstr "Редактировать пользователя"
#: source/ubl-strings.h:116 #: source/ubl-strings.h:118
msgid "Set" msgid "Set"
msgstr "Задать" msgstr "Задать"
#: source/ubl-strings.h:117 #: source/ubl-strings.h:119
msgid "Empty important field" msgid "Empty important field"
msgstr "Пустое важное поле" msgstr "Пустое важное поле"
#: source/ubl-strings.h:118 #: source/ubl-strings.h:120
msgid "Loading has failed" msgid "Loading has failed"
msgstr "Ошибка загрузки" msgstr "Ошибка загрузки"
#: source/ubl-strings.h:119 #: source/ubl-strings.h:121
msgid "Login name" msgid "Login name"
msgstr "Имя логина" msgstr "Имя логина"
#: source/ubl-strings.h:120 #: source/ubl-strings.h:122
msgid "Additional groups:" msgid "Additional groups:"
msgstr "Дополнительные группы:" msgstr "Дополнительные группы:"
#: source/ubl-strings.h:121 #: source/ubl-strings.h:123
msgid "Password configuration" msgid "Password configuration"
msgstr "Конфигурация пароля" msgstr "Конфигурация пароля"
#: source/ubl-strings.h:122 #: source/ubl-strings.h:124
msgid "Password has been changed:" msgid "Password has been changed:"
msgstr "Пароль изменён:" msgstr "Пароль изменён:"
#: source/ubl-strings.h:123 #: source/ubl-strings.h:125
msgid "expiration date:" msgid "expiration date:"
msgstr "Дата устаревания:" msgstr "Дата устаревания:"
#: source/ubl-strings.h:124 #: source/ubl-strings.h:126
msgid "Password change interval: minimum" msgid "Password change interval: minimum"
msgstr "Интервал смены пароля: минимум" msgstr "Интервал смены пароля: минимум"
#: source/ubl-strings.h:125 #: source/ubl-strings.h:127
msgid "days, maximum" msgid "days, maximum"
msgstr "дней, максимум" msgstr "дней, максимум"
#: source/ubl-strings.h:126 #: source/ubl-strings.h:128
msgid "days" msgid "days"
msgstr "дней" msgstr "дней"
#: source/ubl-strings.h:127 #: source/ubl-strings.h:129
msgid "Days until warning:" msgid "Days until warning:"
msgstr "Дней до предупреждения:" msgstr "Дней до предупреждения:"
#: source/ubl-strings.h:128 #: source/ubl-strings.h:130
#, fuzzy
msgid "Days without activity:" msgid "Days without activity:"
msgstr "Дней без активности:" msgstr "Дней без активности:"
#: source/ubl-strings.h:129 #: source/ubl-strings.h:131
msgid "Force change at next login" msgid "Force change at next login"
msgstr "Принудительно сменить при следующем входе в систему" msgstr "Принудительно сменить при следующем входе в систему"
#: source/ubl-strings.h:130 #: source/ubl-strings.h:132
#, fuzzy
msgid "User shell:" msgid "User shell:"
msgstr "Оболочка пользователя:" msgstr "Оболочка пользователя:"
#: source/ubl-strings.h:131 #: source/ubl-strings.h:133
msgid "Home directory:" msgid "Home directory:"
msgstr "Домашний каталог:" msgstr "Домашний каталог:"
#: source/ubl-strings.h:132 #: source/ubl-strings.h:134
msgid "Don't set" msgid "Don't set"
msgstr "Не создавать" msgstr "Не создавать"
#: source/ubl-strings.h:133 #: source/ubl-strings.h:135
msgid "Create system user" msgid "Create system user"
msgstr "Создать системного пользователя" msgstr "Создать системного пользователя"
#: source/ubl-strings.h:134 #: source/ubl-strings.h:136
msgid "Create user with ununique (repeating) UID" msgid "Create user with ununique (repeating) UID"
msgstr "Создать пользователя с повторяющимися (не уникальными) UID" msgstr "Создать пользователя с повторяющимися (не уникальными) UID"
#: source/ubl-strings.h:135 #: source/ubl-strings.h:137
msgid "Do not check login for compliance with character rules" msgid "Do not check login for compliance with character rules"
msgstr "Не проверять логин на несоответствие правилам использования символов" msgstr "Не проверять логин на несоответствие правилам использования символов"
#: source/ubl-strings.h:136 #: source/ubl-strings.h:138
msgid "Temporary deactivation" msgid "Temporary deactivation"
msgstr "Временное отключение учётной записи" msgstr "Временное отключение учётной записи"
#: source/ubl-strings.h:137 #: source/ubl-strings.h:139
msgid "Save" msgid "Save"
msgstr "Сохранить" msgstr "Сохранить"
#: source/ubl-strings.h:138 #: source/ubl-strings.h:140
msgid "login_name" msgid "login_name"
msgstr "Имя_логина" msgstr "Имя_логина"
#: source/ubl-strings.h:139 #: source/ubl-strings.h:141
msgid "group_name" msgid "group_name"
msgstr "Имя_группы" msgstr "Имя_группы"
#: source/ubl-strings.h:142 #: source/ubl-strings.h:142
msgid "System user synchronization mode with configuration" msgid "User name"
msgstr "Режим синхронизации пользователя системы с конфигурацией" msgstr "Имя пользователя"
#: source/ubl-strings.h:144
msgid "User configuration"
msgstr "Настройка пользователя"
#: source/ubl-strings.h:145
msgid "User configuration synchronization"
msgstr "Синхронизация настроек пользователя"
#: source/ubl-strings.h:143 #: source/ubl-strings.h:146
msgid "During system startup, load the user from the configuration" msgid "During system startup, load the user from the configuration"
msgstr "При загрузке системы загрузить пользователя из конфигурации" msgstr "При загрузке системы загрузить пользователя из конфигурации"
#: source/ubl-strings.h:144 #: source/ubl-strings.h:147
msgid "When shutting down the system, save the user into the configuration" msgid "When shutting down the system, save the user into the configuration"
msgstr "При завершении работы системы сохранить пользователя в конфигурацию" msgstr "При завершении работы системы сохранить пользователя в конфигурацию"
#: source/ubl-strings.h:145 #: source/ubl-strings.h:148
msgid "The mode of synchronizing system user settings with the configuration" msgid "User password configuration syncronization"
msgstr "Режим синхронизации параметров пользователя системы с конфигурацией" msgstr "Синхронизация настроек пароля пользователя"
#: source/ubl-strings.h:146 #: source/ubl-strings.h:149
msgid "" msgid ""
"When the system boots up, load the user's settings from the configuration" "During system startup, load the user's parameters from the configuration"
msgstr "При загрузке системы загрузить параметры пользователя из конфигурации" msgstr "При загрузке системы загрузить параметры пользователя из конфигурации"
#: source/ubl-strings.h:147 #: source/ubl-strings.h:150
msgid "" msgid ""
"When shutting down the system, save the user's settings into the " "When shutting down the system, save the user's parameters into the "
"configuration" "configuration"
msgstr "При завершении работы системы сохранить пользователя в конфигурацию" msgstr ""
"При завершении работы системы сохранить параметры пользователя в конфигурацию"
#: source/ubl-strings.h:150 #: source/ubl-strings.h:152
msgid "Main"
msgstr "Основные"
#: source/ubl-strings.h:153
msgid "Additional"
msgstr "Дополнительные"
#: source/ubl-strings.h:154
msgid "Syncronization"
msgstr "Синхронизация"
#: source/ubl-strings.h:157
msgid "Repeat password:" msgid "Repeat password:"
msgstr "Подтверждение пароля:" msgstr "Подтверждение пароля:"
#: source/ubl-strings.h:151 #: source/ubl-strings.h:158
msgid "Password hash:" msgid "Password hash:"
msgstr "Хэш пароля:" msgstr "Хэш пароля:"

Loading…
Cancel
Save