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 (Адаптивная криптографическая функция формирования ключа)
bf;Blowfish (Алгоритм блочного симметричного шифрования)
bcrypt;bcrypt (Адаптивная хеш-функция из семейства алгоритмов Blowfish)
bcrypt-a;Адаптивная хеш-функция из семейства алгоритмов Blowfish)
bcrypt-a;bcrypt-a (Адаптивная хеш-функция из семейства алгоритмов Blowfish)
sha512crypt;SHA512 (Хеш-функция из семейства алгоритмов SHA-2)
sha256crypt;SHA256 (Хеш-функция из семейства алгоритмов SHA-2)
!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"
id="Symbol"
inkscape:label="#path2424"
class="error"
inkscape:connector-curvature="0" />
</g>
</svg>

Before

Width:  |  Height:  |  Size: 2.0 KiB

After

Width:  |  Height:  |  Size: 2.0 KiB

@ -5,7 +5,8 @@ config main_config;
//functions
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 0;
@ -41,7 +42,7 @@ void yon_interface_update(main_window *widgets){
4,parameters_size>2?parameters[2]:"",
5,parameters_size>3?parameters[3]:"",
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);
if(parameters)
free(parameters);
@ -98,7 +99,6 @@ void on_config_global_load(GtkWidget *self, main_window *widgets){
void on_config_save(){
yon_save_proceed(NULL,YON_CONFIG_BOTH,"users", "DEFAULTPASSWD DEFAULTROOTPASSWD DEFAULTUSER HASHPASSWD USERGROUPS ADDADM USERADD[*] USERSHADOW[*] GROUPADD[*]",NULL);
}
void on_config_global_save(){
@ -248,13 +248,13 @@ void on_expiration_clicked(GtkWidget *self, ubl_settings_usergroups_user_window
} else {
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)){
yon_config_register("DEFAULTPASSWD","users",default_password);
} else {
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)){
yon_config_register("DEFAULTROOTPASSWD","users",root_password);
} else {
@ -266,12 +266,26 @@ void on_expiration_clicked(GtkWidget *self, ubl_settings_usergroups_user_window
} else {
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)){
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 *window = malloc(sizeof(ubl_settings_usergroups_additional_settings_window));
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';
int 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);
}
}
@ -308,18 +323,24 @@ ubl_settings_usergroups_additional_settings_window *yon_ubl_settings_usergroups_
if (!yon_char_is_empty(default_user))
gtk_entry_set_text(GTK_ENTRY(window->DefaultUserNameEntry),default_user);
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);
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");
if (!yon_char_is_empty(root_password))
if (!yon_char_is_empty(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");
if (!yon_char_is_empty(is_k_admin))
if (!strcmp(is_k_admin,"yes"))
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->DefaultUserAdministratorCheck),1);
char *hash = yon_config_get_by_key("HASHPASSWD");
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->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);
return window;
@ -683,7 +705,7 @@ void yon_system_load(ubl_settings_usergroups_system_window *window){
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';
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_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){
if (window->show_all==0){
window->show_all=1;
gtk_style_context_add_class(gtk_widget_get_style_context(window->ToggleAllButton),"chosenOutline");
} else {
window->show_all=0;
gtk_style_context_remove_class(gtk_widget_get_style_context(window->ToggleAllButton),"chosenOutline");
}
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->userCreateSystemCheck),"toggled",G_CALLBACK(on_UID_update),window);
g_signal_connect(G_OBJECT(window->userGroupsCheck),"toggled",G_CALLBACK(on_user_login_update),window);
g_signal_connect(G_OBJECT(window->userLoginEntry),"changed",G_CALLBACK(on_user_login_update),window);
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->userUserNameEntry), parsed_size>0?parameters[0]:"");
if (parsed_size>1){
if (!strcmp(parameters[1],"x"))
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->userUIDAutoCheck),1);
else
if (strcmp(parameters[1],"x")){
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->userUIDAutoCheck),0);
gtk_entry_set_text(GTK_ENTRY(window->userUIDEntry), parsed_size>1?parameters[1]:"");
}
}
if (parsed_size>2){
if (!strcmp(parameters[2],"x"))
@ -1238,7 +1263,11 @@ void on_main_edit(GtkWidget *self, main_window *widgets){
else
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])){
int 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]:"");
}
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);
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]:"");
@ -1374,25 +1409,35 @@ void on_main_delete(GtkWidget *self, main_window *widgets){
GtkTreeModel *model;
GtkWidget *cur_tree;
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){
model = GTK_TREE_MODEL(widgets->UsersList);
cur_tree=widgets->UsersTree;
if(gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(cur_tree)),&model,&iter)){
char *name;
gtk_tree_model_get(model,&iter,2,&name,-1);
yon_config_remove_by_key(USERADD(name));
yon_config_remove_by_key(USERADD_SYNC(name));
yon_config_remove_by_key(USERSHADOW(name));
gtk_list_store_remove(GTK_LIST_STORE(model),&iter);
}
data->action_text=DELETE_CONFIRMATION_LABEL("user",name);
if (yon_confirmation_dialog_call(self,data)==GTK_RESPONSE_ACCEPT){
yon_config_remove_by_key(USERADD(name));
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 {
model = GTK_TREE_MODEL(widgets->GroupsList);
cur_tree=widgets->GroupsTree;
if(gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(cur_tree)),&model,&iter)){
char *name;
gtk_tree_model_get(model,&iter,1,&name,-1);
yon_config_remove_by_key(GROUPADD(name));
gtk_list_store_remove(GTK_LIST_STORE(model),&iter);
data->action_text=DELETE_CONFIRMATION_LABEL("group",name);
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->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){
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();
textdomain (LocaleName);
yon_main_window_complete((main_window*)widgets);
yon_config_set_ignore("DEFAULTPASSWD");
yon_config_set_ignore("DEFAULTROOTPASSWD");
yon_window_config_load(config_path);
gtk_main();
}

@ -14,7 +14,7 @@
#define UID_LABEL _("UID")
#define LOGIN_LABEL _("Login")
#define PASSWORD_LABEL _("Password")
#define USER_NAME_LABEL _("User name")
#define USER_NAME_LABEL _("User\nname")
#define UID_USER_LABEL _("User UID:")
#define USERNAME_USER_LABEL _("User name (description):")
@ -22,7 +22,7 @@
#define PASSWORD_USER_LABEL _("Password:")
#define DEFAULT_USER_LABEL _("Default")
#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 SYNC_SAMBA_USER_LABEL _("Sync with SAMBA user")
#define EXTRA_OPTIONS_USER_LABEL _("Extra options:")
@ -30,13 +30,13 @@
#define OK_LABEL _("Ok")
#define BLOCK_LABEL _("Block")
#define MAIN_GROUP_LABEL _("Main group")
#define ADDITIONAL_PARAMETERS_LABEL _("Additional parameters")
#define PASSWORD_STATUS_LABEL _("Password status")
#define MAIN_GROUP_LABEL _("Main\ngroup")
#define ADDITIONAL_PARAMETERS_LABEL _("Additional\nparameters")
#define PASSWORD_STATUS_LABEL _("Password\nstatus")
#define USERS_LABEL _("Users")
#define GID_LABEL _("GID")
#define GROUP_NAME_LABEL _("Group name")
#define GROUPS_USERS_LABEL _("Group users")
#define GROUP_NAME_LABEL _("Group\nname")
#define GROUPS_USERS_LABEL _("Group\nusers")
#define GROUPS_LABEL _("Groups")
#define PASSWORD_TITLE_LABEL _("Password input")
@ -50,6 +50,8 @@
#define REMOVE_LABEL _("Remove")
#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
#define ADDITIONAL_SETTINGS_TITLE_LABEL _("Additional settings")
#define NO_PASSWORD_LABEL _("No password required")
@ -93,8 +95,8 @@
#define INSPECTOR_TITLE_LABEL _("System users and groups")
#define BLOCKED_LABEL _("Blocked")
#define USERNAME_LABEL _("Username")
#define PRIMARY_GROUP_LABEL _("Primary group")
#define HOME_DIRECTORY_LABEL _("Home directory")
#define PRIMARY_GROUP_LABEL _("Primary\ngroup")
#define HOME_DIRECTORY_LABEL _("Home\ndirectory")
#define GROUP_LABEL _("Group")
#define UPDATE_SYSTEM_LABEL _("Update the system users and groups list")
#define TOGGLE_SYSTEM_LABEL _("Toggle system groups and users")
@ -102,13 +104,13 @@
#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 GROUP_LABEL _("Group")
#define DAYS_WARNING_TABLE_LABEL _("Days until warning")
#define DAYS_ACTIVITY_TABLE_LABEL _("Days without activity")
#define SHALL_TABLE_LABEL _("Shell path")
#define PASSWORD_CHANGED_TABLE_LABEL _("Password has been changed")
#define EXPIRATION_TABLE_LABEL _("Expiration date")
#define INTERVAL_MIN_TABLE_LABEL _("Password change interval (min)")
#define INTERVAL_MAX_TABLE_LABEL _("Password change interval (max)")
#define DAYS_WARNING_TABLE_LABEL _("Days until\nwarning")
#define DAYS_ACTIVITY_TABLE_LABEL _("Days\nwithout activity")
#define SHALL_TABLE_LABEL _("Shell\npath")
#define PASSWORD_CHANGED_TABLE_LABEL _("Password has\nbeen changed")
#define EXPIRATION_TABLE_LABEL _("Expiration\ndate")
#define INTERVAL_MIN_TABLE_LABEL _("Password change\ninterval (min)")
#define INTERVAL_MAX_TABLE_LABEL _("Password change\ninterval (max)")
//ubl-settings-usergroups-user.glade
#define ADD_USER_TITLE_LABEL _("Add user")
@ -137,14 +139,19 @@
#define SAVE_LABEL _("Save")
#define LOGIN_TOOLTIP_NAME_LABEL _("login_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_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_BOOT_LABEL _("When the system boots up, load the user's settings from the configuration")
#define USERSHADOW_SHUTDOWN_LABEL _("When shutting down the system, save the user's settings into the configuration")
#define USERSHADOW_SYNC_LABEL _("User password configuration syncronization")
#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 parameters into the configuration")
#define MAIN_NAME_LABEL _("Main")
#define ADDITIONAL_NAME_LABEL _("Additional")
#define SYNCRONIZATION_NAME_LABEL _("Syncronization")
//ubl-settings-usergroups-password.glade
#define PASSWORD_REPEAT_LABEL _("Repeat password:")

@ -25,7 +25,6 @@
</object>
<object class="GtkWindow" id="Window">
<property name="width-request">600</property>
<property name="height-request">350</property>
<property name="can-focus">False</property>
<property name="modal">True</property>
<property name="icon-name">com.ublinux.ubl-settings-usergroups</property>
@ -330,56 +329,12 @@
<property name="position">1</property>
</packing>
</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>
</child>
<child type="titlebar">
<object class="GtkHeaderBar">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="show-close-button">True</property>
<child type="title">
<object class="GtkLabel">
<property name="visible">True</property>
@ -390,6 +345,34 @@
</attributes>
</object>
</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>
</child>
</object>

@ -208,57 +208,6 @@
<property name="position">1</property>
</packing>
</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>
<object class="GtkFrame">
<property name="visible">True</property>
@ -444,7 +393,6 @@
<object class="GtkHeaderBar">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="show-close-button">True</property>
<child type="title">
<object class="GtkLabel" id="userTitleNameLabel">
<property name="visible">True</property>
@ -455,6 +403,36 @@
</attributes>
</object>
</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>
</child>
</object>

@ -112,61 +112,12 @@
<property name="position">1</property>
</packing>
</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>
</child>
<child type="titlebar">
<object class="GtkHeaderBar">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="show-close-button">True</property>
<child type="title">
<object class="GtkLabel" id="HeaderLabel">
<property name="visible">True</property>
@ -177,6 +128,36 @@
</attributes>
</object>
</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>
</child>
</object>

@ -41,58 +41,6 @@
<property name="position">0</property>
</packing>
</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>
<object class="GtkBox">
<property name="visible">True</property>
@ -274,7 +222,6 @@
<object class="GtkHeaderBar">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="show-close-button">True</property>
<child type="title">
<object class="GtkLabel" id="userTitleNameLabel">
<property name="visible">True</property>
@ -285,6 +232,36 @@
</attributes>
</object>
</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>
</child>
</object>

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

File diff suppressed because it is too large Load Diff

@ -39,6 +39,10 @@ background:transparent;
border-right-width:inherit;
}
.menuitemmiddlemargin{
margin-top: 6px;
}
.menuitemtop{
margin-bottom:0px;
border-color:inherit;
@ -47,8 +51,8 @@ background:transparent;
border-right-width:inherit;
}
.menuitemtop *{
margin:2px 2px 0 2px;
padding: 5px 10px 3px 5px;
margin:4px 2px 0 2px;
padding: 3px 10px 3px 5px;
border:transparent;
}
.menuitemmiddle *{
@ -58,7 +62,7 @@ background:transparent;
}
.menuitembottom *{
margin:0 2px 2px 2px;
padding: 3px 10px 5px 5px;
padding: 3px 10px 3px 5px;
}
.menuitemtop:hover {
background:@theme_bg_color;
@ -82,8 +86,8 @@ background:transparent;
}
.menuitemtop:hover* {
margin:2px 2px 0 2px;
padding: 5px 10px 3px 5px;
margin:4px 2px 0 2px;
padding: 3px 10px 3px 5px;
background:@theme_selected_bg_color;
border-radius:2px;
}
@ -95,7 +99,7 @@ background:transparent;
}
.menuitembottom:hover* {
margin:0 2px 2px 2px;
padding: 3px 10px 5px 5px;
padding: 3px 10px 3px 5px;
background:@theme_selected_bg_color;
border-radius:2px;
}
@ -106,9 +110,25 @@ background:transparent;
.boxInfoMessOK{
background-color: #f3f0ac;
}
.errorBox {
border-width: 2px;
border-color: #ea9999;
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">
<property name="visible">True</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="vexpand">True</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">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-top">2</property>
<property name="orientation">vertical</property>
<property name="spacing">5</property>
<child>
@ -340,7 +335,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
<property name="resizable">True</property>
<property name="sizing">fixed</property>
<property name="fixed-width">10</property>
<property name="title" translatable="yes">User name</property>
<property name="title" translatable="yes">User
name</property>
<child>
<object class="GtkCellRendererText"/>
<attributes>
@ -354,7 +350,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
<property name="resizable">True</property>
<property name="sizing">fixed</property>
<property name="fixed-width">10</property>
<property name="title" translatable="yes">Main group</property>
<property name="title" translatable="yes">Main
group</property>
<child>
<object class="GtkCellRendererText"/>
<attributes>
@ -368,7 +365,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
<property name="resizable">True</property>
<property name="sizing">fixed</property>
<property name="fixed-width">10</property>
<property name="title" translatable="yes">Additional groups</property>
<property name="title" translatable="yes">Additional
groups</property>
<child>
<object class="GtkCellRendererText">
<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="sizing">fixed</property>
<property name="fixed-width">10</property>
<property name="title" translatable="yes">Additional parameters</property>
<property name="title" translatable="yes">Additional
parameters</property>
<child>
<object class="GtkCellRendererText">
<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">
<property name="sizing">autosize</property>
<property name="fixed-width">10</property>
<property name="title" translatable="yes">Password status</property>
<property name="title" translatable="yes">Password
status</property>
<child>
<object class="GtkCellRendererText"/>
<attributes>
@ -473,7 +473,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
<property name="resizable">True</property>
<property name="sizing">fixed</property>
<property name="fixed-width">10</property>
<property name="title" translatable="yes">Group name</property>
<property name="title" translatable="yes">Group
name</property>
<child>
<object class="GtkCellRendererText"/>
<attributes>
@ -487,7 +488,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
<property name="resizable">True</property>
<property name="sizing">fixed</property>
<property name="fixed-width">10</property>
<property name="title" translatable="yes">Group users</property>
<property name="title" translatable="yes">Group
users</property>
<child>
<object class="GtkCellRendererText"/>
<attributes>
@ -501,7 +503,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
<property name="resizable">True</property>
<property name="sizing">fixed</property>
<property name="fixed-width">10</property>
<property name="title" translatable="yes">Additional parameters</property>
<property name="title" translatable="yes">Additional
parameters</property>
<child>
<object class="GtkCellRendererText"/>
<attributes>
@ -514,7 +517,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
<object class="GtkTreeViewColumn">
<property name="sizing">autosize</property>
<property name="fixed-width">10</property>
<property name="title" translatable="yes">Password status</property>
<property name="title" translatable="yes">Password
status</property>
<child>
<object class="GtkCellRendererText"/>
<attributes>

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

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

Loading…
Cancel
Save