Interface edits, localisation for chenged interface

pull/72/head
parent a7f81a1d5b
commit 4e2a3ea9d0

@ -97,6 +97,19 @@ void on_config_global_load(GtkWidget *self, main_window *widgets){
yon_interface_update(widgets); yon_interface_update(widgets);
} }
void yon_samba_sync_proceed(){
if (main_config.sync_users){
for (int i=0;i<main_config.sync_size;i++){
int size;
config_str parsed = yon_char_parse(main_config.sync_users[i],&size,":");
system (yon_char_is_empty(parsed[1])? samba_sync_command(parsed[0]) : samba_sync_password_command(parsed[0],parsed[1]));
yon_char_parsed_free(parsed,size);
}
}
}
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);
} }
@ -120,6 +133,34 @@ void on_saving_settings_save(GtkWidget *self, yon_savasettings_window *window){
on_subwindow_close(self); on_subwindow_close(self);
} }
void yon_samba_sync_add(char *user, char*password){
int sync_place = yon_char_parsed_check_exist(main_config.sync_users,main_config.sync_size,yon_char_append(user,":"));
if (sync_place==-1){
yon_char_parsed_add_or_create_if_exists(main_config.sync_users,&main_config.sync_size,yon_char_unite(user,":",password,NULL));
}
}
void yon_samba_sync_remove(char *user){
int sync_place = yon_char_parsed_check_exist(main_config.sync_users,main_config.sync_size,yon_char_append(user,":"));
if (sync_place>-1){
config_str temp = yon_char_parsed_rip(main_config.sync_users,&main_config.sync_size,sync_place);
free(main_config.sync_users);
main_config.sync_users = temp;
}
}
int yon_samba_sync_get(char *user){
int sync_place = yon_char_parsed_check_exist(main_config.sync_users,main_config.sync_size,yon_char_append(user,":"));
if (sync_place>-1){
if (!main_config.sync_users)
return 0;
int active = main_config.sync_users[sync_place][strlen(main_config.sync_users[sync_place])-1]==':'? 1:2;
return active;
}
return 0;
}
void on_delete_confirmation_delete_home_check(GtkCellRenderer *self, char *path, yon_confirmation_window *window){ void on_delete_confirmation_delete_home_check(GtkCellRenderer *self, char *path, yon_confirmation_window *window){
GtkTreeIter iter; GtkTreeIter iter;
gboolean status; gboolean status;
@ -229,11 +270,12 @@ yon_savasettings_window *yon_saving_settings_new(){
window->StatusBox = yon_gtk_builder_get_widget(builder,"StatusBox"); window->StatusBox = yon_gtk_builder_get_widget(builder,"StatusBox");
g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL); g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
gtk_widget_show(window->Window); gtk_widget_show(window->Window);
yon_window_config_custom_window_setup(GTK_WINDOW(window->Window),"savingSettingsWindow");
char *string = yon_config_get_by_key("SAVE_ROOTCOPY_CHANGES"); char *string = yon_config_get_by_key("SAVE_ROOTCOPY_CHANGES");
if (!yon_char_is_empty(string)&&strstr(string,"/var/lib/samba")){ if (!yon_char_is_empty(string)&&strstr(string,"/var/lib/samba")){
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->SambaCheck),1); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->SambaCheck),1);
} }
yon_ubl_status_box_spawn_infinite(GTK_CONTAINER(window->StatusBox),SYSTEM_SAVEMODE_LABEL,BACKGROUND_IMAGE_INFO_TYPE); yon_ubl_status_box_spawn_infinite(GTK_CONTAINER(window->StatusBox),"savemode",SYSTEM_SAVEMODE_LABEL,BACKGROUND_IMAGE_INFO_TYPE);
return window; return window;
} }
@ -354,11 +396,6 @@ void on_password_change(GtkWidget *self, dictionary *entry_dict){
GtkComboBox *combo = yon_dictionary_get_data(entry_dict->first,GtkComboBox*); GtkComboBox *combo = yon_dictionary_get_data(entry_dict->first,GtkComboBox*);
GtkEntry *output_target = yon_dictionary_get_data(entry_dict->first->next,GtkEntry*); GtkEntry *output_target = yon_dictionary_get_data(entry_dict->first->next,GtkEntry*);
ubl_settings_usergroups_password_window *window = yon_ubl_settings_usergroups_password_new(); ubl_settings_usergroups_password_window *window = yon_ubl_settings_usergroups_password_new();
int active = gtk_combo_box_get_active(combo);
if (active == 2)
gtk_widget_hide(window->HashBox);
else if (active==3)
gtk_widget_hide(window->PasswordBox);
dictionary *dict = NULL; dictionary *dict = NULL;
yon_dictionary_add_or_create_if_exists_with_data(dict,"window",window); yon_dictionary_add_or_create_if_exists_with_data(dict,"window",window);
yon_dictionary_add_or_create_if_exists_with_data(dict,"target",output_target); yon_dictionary_add_or_create_if_exists_with_data(dict,"target",output_target);
@ -796,7 +833,9 @@ void on_password_changed(GtkEntry *self, ubl_settings_usergroups_password_window
char *self_text = (char*)gtk_entry_get_text(GTK_ENTRY(window->PasswordEntry)); char *self_text = (char*)gtk_entry_get_text(GTK_ENTRY(window->PasswordEntry));
char *pair_text = (char*)gtk_entry_get_text(GTK_ENTRY(window->RepeatPasswordEntry)); char *pair_text = (char*)gtk_entry_get_text(GTK_ENTRY(window->RepeatPasswordEntry));
if ((!yon_char_is_empty(self_text)&&!yon_char_is_empty(pair_text))&&strcmp(self_text,pair_text)){ if ((!yon_char_is_empty(self_text)&&!yon_char_is_empty(pair_text))&&strcmp(self_text,pair_text)){
yon_ubl_status_box_spawn_infinite(GTK_CONTAINER(window->StatusBox),PASSWORD_MISMATCH_LABEL,BACKGROUND_IMAGE_FAIL_TYPE); yon_ubl_status_box_spawn_infinite(GTK_CONTAINER(window->StatusBox),"password_mismatch",PASSWORD_MISMATCH_LABEL,BACKGROUND_IMAGE_FAIL_TYPE);
} else if (strlen(self_text)<main_config.password_min_length){
yon_ubl_status_box_spawn_infinite(GTK_CONTAINER(window->StatusBox),"password_short",PASSWORD_SHORT_LABEL(yon_char_from_int(main_config.password_min_length)),BACKGROUND_IMAGE_FAIL_TYPE);
} else { } else {
yon_ubl_status_box_despawn_infinite(GTK_CONTAINER(window->StatusBox)); yon_ubl_status_box_despawn_infinite(GTK_CONTAINER(window->StatusBox));
} }
@ -805,18 +844,16 @@ void on_password_changed(GtkEntry *self, ubl_settings_usergroups_password_window
void on_password_accept(GtkWidget *self, dictionary *dict){ void on_password_accept(GtkWidget *self, dictionary *dict){
ubl_settings_usergroups_password_window *window = yon_dictionary_get_data(dict->first,ubl_settings_usergroups_password_window*); ubl_settings_usergroups_password_window *window = yon_dictionary_get_data(dict->first,ubl_settings_usergroups_password_window*);
GtkEntry *entry = yon_dictionary_get_data(dict->first->next,GtkEntry*); GtkEntry *entry = yon_dictionary_get_data(dict->first->next,GtkEntry*);
if (gtk_widget_get_visible(window->HashBox)){ char *pasted_hash = (char*)gtk_entry_get_text(GTK_ENTRY(window->PasswordHashEntry));
char *pasted_hash = (char*)gtk_entry_get_text(GTK_ENTRY(window->PasswordHashEntry)); if (!yon_char_is_empty(pasted_hash)){
if (yon_char_is_empty(pasted_hash)){
yon_ubl_status_box_spawn_infinite(GTK_CONTAINER(window->StatusBox),EMPTY_IMPORTANT_LABEL,BACKGROUND_IMAGE_FAIL_TYPE);
return;
} else {
gtk_entry_set_text(entry,pasted_hash); gtk_entry_set_text(entry,pasted_hash);
}
} else { } else {
char *password = yon_char_new((char*)gtk_entry_get_text(GTK_ENTRY(window->PasswordEntry))); char *password = yon_char_new((char*)gtk_entry_get_text(GTK_ENTRY(window->PasswordEntry)));
if (yon_char_is_empty(password)){ if (yon_char_is_empty(password)){
yon_ubl_status_box_spawn_infinite(GTK_CONTAINER(window->StatusBox),EMPTY_IMPORTANT_LABEL,BACKGROUND_IMAGE_FAIL_TYPE); yon_ubl_status_box_spawn_infinite(GTK_CONTAINER(window->StatusBox),"password_empty",EMPTY_IMPORTANT_LABEL,BACKGROUND_IMAGE_FAIL_TYPE);
return;
} else if (password[0]=='%'&&password[1]=='%'){
yon_ubl_status_box_spawn_infinite(GTK_CONTAINER(window->StatusBox),"password_wrong",EMPTY_IMPORTANT_LABEL,BACKGROUND_IMAGE_FAIL_TYPE);
return; return;
} }
if (strlen(password)<main_config.password_min_length){ if (strlen(password)<main_config.password_min_length){
@ -825,13 +862,14 @@ void on_password_accept(GtkWidget *self, dictionary *dict){
} }
char *password_check = (char*)gtk_entry_get_text(GTK_ENTRY(window->RepeatPasswordEntry)); char *password_check = (char*)gtk_entry_get_text(GTK_ENTRY(window->RepeatPasswordEntry));
if (!strcmp(password,password_check)){ if (!strcmp(password,password_check)){
char *passwd_hash = g_malloc0(101); if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->NoEncriptionCheck))){
FILE *fl = popen(password_hash_get_command(password),"r"); char *pasw=yon_char_append("%%",password);
fgets(passwd_hash,100,fl); free(password);
if (passwd_hash[strlen(passwd_hash)-1]=='\n') passwd_hash[strlen(passwd_hash)-1]='\0'; password=pasw;
gtk_entry_set_text(entry,passwd_hash); }
gtk_entry_set_text(GTK_ENTRY(entry),password);
} else { } else {
yon_ubl_status_box_spawn_infinite(GTK_CONTAINER(window->StatusBox),PASSWORD_MISMATCH_LABEL,BACKGROUND_IMAGE_FAIL_TYPE); yon_ubl_status_box_spawn_infinite(GTK_CONTAINER(window->StatusBox),"password_mismatch",PASSWORD_MISMATCH_LABEL,BACKGROUND_IMAGE_FAIL_TYPE);
return; return;
} }
} }
@ -848,6 +886,7 @@ ubl_settings_usergroups_password_window *yon_ubl_settings_usergroups_password_ne
window->PasswordHashEntry=yon_gtk_builder_get_widget(builder,"PasswordHashEntry"); window->PasswordHashEntry=yon_gtk_builder_get_widget(builder,"PasswordHashEntry");
window->HashBox=yon_gtk_builder_get_widget(builder,"HashBox"); window->HashBox=yon_gtk_builder_get_widget(builder,"HashBox");
window->PasswordBox=yon_gtk_builder_get_widget(builder,"PasswordBox"); window->PasswordBox=yon_gtk_builder_get_widget(builder,"PasswordBox");
window->NoEncriptionCheck=yon_gtk_builder_get_widget(builder,"NoEncriptionCheck");
window->UserCancelButton=yon_gtk_builder_get_widget(builder,"UserCancelButton"); window->UserCancelButton=yon_gtk_builder_get_widget(builder,"UserCancelButton");
window->UserOkButton=yon_gtk_builder_get_widget(builder,"UserOkButton"); window->UserOkButton=yon_gtk_builder_get_widget(builder,"UserOkButton");
@ -1010,7 +1049,7 @@ void on_UID_update(GtkWidget *self, ubl_settings_usergroups_user_window *window)
if (!gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->userUIDAutoCheck))){ if (!gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->userUIDAutoCheck))){
int config_size=0; int config_size=0;
int final_size=0; int final_size=0;
config_str config_users = yon_config_get_all_by_key("USERADD",&config_size); config_str config_users = yon_config_get_all_by_key("USERADD[",&config_size);
yon_char_parsed_prepend_strings(config_users,config_size,":"); yon_char_parsed_prepend_strings(config_users,config_size,":");
config_str final = yon_char_parsed_merge(main_config.users,main_config.users_size,config_users,config_size,&final_size); config_str final = yon_char_parsed_merge(main_config.users,main_config.users_size,config_users,config_size,&final_size);
long prev_busy=gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->userCreateSystemCheck))?0:main_config.MINGID; long prev_busy=gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->userCreateSystemCheck))?0:main_config.MINGID;
@ -1066,7 +1105,8 @@ void on_user_save(GtkWidget *self, dictionary *dict){
char *create_system_user = NULL; char *create_system_user = NULL;
char *create_ununique = NULL; char *create_ununique = NULL;
char *do_not_check = NULL; char *do_not_check = NULL;
char *samba_sync = NULL; int samba_sync = 0;
int samba_password_sync = 0;
char *deactivate = NULL; char *deactivate = NULL;
char *extra_options = NULL; char *extra_options = NULL;
char *useradd_boot = ""; char *useradd_boot = "";
@ -1074,6 +1114,7 @@ void on_user_save(GtkWidget *self, dictionary *dict){
char *usershadow_boot = ""; char *usershadow_boot = "";
char *usershadow_shutdown = ""; char *usershadow_shutdown = "";
int uid_auto_active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->userUIDAutoCheck)); int uid_auto_active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->userUIDAutoCheck));
if (uid_auto_active){ if (uid_auto_active){
uid_string=""; uid_string="";
@ -1181,8 +1222,19 @@ void on_user_save(GtkWidget *self, dictionary *dict){
if (do_not_check_actve) if (do_not_check_actve)
do_not_check = " --badnames"; do_not_check = " --badnames";
int samba_sync_active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->userSyncSAMBACheck)); samba_sync = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->userSyncSAMBACheck));
if (samba_sync_active); samba_password_sync = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->userSyncSAMBAPasswordCheck));
if (samba_sync){
if (yon_samba_sync_get(login)==2)
yon_samba_sync_remove(login);
yon_samba_sync_add(login,NULL);
} else if (samba_password_sync){
if (yon_samba_sync_get(login)==1)
yon_samba_sync_remove(login);
yon_samba_sync_add(login,password);
} else {
yon_samba_sync_remove(login);
}
int deactivate_active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->userDeactivatedCheck)); int deactivate_active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->userDeactivatedCheck));
if (deactivate_active); if (deactivate_active);
@ -1215,6 +1267,7 @@ void on_user_save(GtkWidget *self, dictionary *dict){
usershadow_shutdown = "shutdown"; usershadow_shutdown = "shutdown";
} }
char *useradd_sync_string = NULL; char *useradd_sync_string = NULL;
useradd_sync_string = yon_char_unite(useradd_boot,!yon_char_is_empty(useradd_boot)?",":"",useradd_shutdown,NULL); useradd_sync_string = yon_char_unite(useradd_boot,!yon_char_is_empty(useradd_boot)?",":"",useradd_shutdown,NULL);
char *usershadow_sync_string = NULL; char *usershadow_sync_string = NULL;
@ -1306,6 +1359,7 @@ ubl_settings_usergroups_user_window *yon_ubl_settings_usergroups_user_new(){
window->userCreateUnuniqueCheck=yon_gtk_builder_get_widget(builder,"userCreateUnuniqueCheck"); window->userCreateUnuniqueCheck=yon_gtk_builder_get_widget(builder,"userCreateUnuniqueCheck");
window->userDontCheckCheck=yon_gtk_builder_get_widget(builder,"userDontCheckCheck"); window->userDontCheckCheck=yon_gtk_builder_get_widget(builder,"userDontCheckCheck");
window->userSyncSAMBACheck=yon_gtk_builder_get_widget(builder,"userSyncSAMBACheck"); window->userSyncSAMBACheck=yon_gtk_builder_get_widget(builder,"userSyncSAMBACheck");
window->userSyncSAMBAPasswordCheck=yon_gtk_builder_get_widget(builder,"userSyncSAMBAPasswordCheck");
window->userDeactivatedCheck=yon_gtk_builder_get_widget(builder,"userDeactivatedCheck"); window->userDeactivatedCheck=yon_gtk_builder_get_widget(builder,"userDeactivatedCheck");
window->userExtraOptionsEntry=yon_gtk_builder_get_widget(builder,"userExtraOptionsEntry"); window->userExtraOptionsEntry=yon_gtk_builder_get_widget(builder,"userExtraOptionsEntry");
window->UserCancelButton=yon_gtk_builder_get_widget(builder,"UserCancelButton"); window->UserCancelButton=yon_gtk_builder_get_widget(builder,"UserCancelButton");
@ -1480,6 +1534,12 @@ void on_main_edit(GtkWidget *self, main_window *widgets){
} }
} }
int samba_sync = yon_samba_sync_get(name);
if (samba_sync==1){
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->userSyncSAMBACheck),1);
} else if (samba_sync==2){
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->userSyncSAMBAPasswordCheck),1);
}
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]:"");
@ -1637,6 +1697,8 @@ void config_init(){
main_config.users_list=NULL; main_config.users_list=NULL;
main_config.groups_list=NULL; main_config.groups_list=NULL;
main_config.password_min_length=6; main_config.password_min_length=6;
main_config.sync_users = NULL;
main_config.sync_size=0;
int login_size; int login_size;
config_str login_defs = yon_file_open(uid_path,&login_size); config_str login_defs = yon_file_open(uid_path,&login_size);
for (int i=0;i<login_size;i++){ for (int i=0;i<login_size;i++){
@ -1842,7 +1904,7 @@ int main(int argc, char *argv[]){
if(optarg) if(optarg)
main_config.load_socket_id=atoi(optarg); main_config.load_socket_id=atoi(optarg);
break; break;
case 'c': system(yon_char_unite("rm -rfd ", yon_ubl_user_get_home_directory(),"/.config/",LocaleName,"/",NULL)); case 'c': system(remove_config_dir_command);
break; break;
case 1: case 1:
main_config.lock_help=1; main_config.lock_help=1;

@ -41,6 +41,9 @@
#define get_default_hash_command "ubconfig --raw --source default get [users] HASHPASSWD" #define get_default_hash_command "ubconfig --raw --source default get [users] HASHPASSWD"
#define clear_config_global_command "ubconfig --target global remove TEMP_SECTION TEMP_PATAMETER" #define clear_config_global_command "ubconfig --target global remove TEMP_SECTION TEMP_PATAMETER"
#define clear_config_local_command "ubconfig --target system remove TEMP_SECTION TEMP_PATAMETER" #define clear_config_local_command "ubconfig --target system remove TEMP_SECTION TEMP_PATAMETER"
#define remove_config_dir_command yon_char_unite("rm -rfd ", yon_ubl_user_get_home_directory(),"/.config/",LocaleName,"/",NULL)
#define samba_sync_command(user) yon_char_unite("sudo smbpasswd -Las ",user,NULL)
#define samba_sync_password_command(user, password) yon_char_unite("(echo \"",password,"\"; echo \"",password,"\") | sudo smbpasswd -Las ",user,NULL)
#define groups_path "/etc/group" #define groups_path "/etc/group"
#define users_path "/etc/passwd" #define users_path "/etc/passwd"
@ -96,6 +99,8 @@ typedef struct {
int password_min_length; int password_min_length;
int hash_default_id; int hash_default_id;
config_str sync_users;
int sync_size;
} config; } config;
typedef struct { typedef struct {
@ -214,6 +219,7 @@ typedef struct{
GtkWidget *PasswordHashEntry; GtkWidget *PasswordHashEntry;
GtkWidget *HashBox; GtkWidget *HashBox;
GtkWidget *PasswordBox; GtkWidget *PasswordBox;
GtkWidget *NoEncriptionCheck;
} ubl_settings_usergroups_password_window; } ubl_settings_usergroups_password_window;
typedef struct{ typedef struct{
@ -269,6 +275,7 @@ typedef struct{
GtkWidget *UsershadowBootCheck; GtkWidget *UsershadowBootCheck;
GtkWidget *UsershadowShutdownCheck; GtkWidget *UsershadowShutdownCheck;
GtkWidget *userTitleNameLabel; GtkWidget *userTitleNameLabel;
GtkWidget *userSyncSAMBAPasswordCheck;
long expiration_unix; long expiration_unix;

@ -141,6 +141,9 @@
#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 SAMBA_SYNC_USER_LABEL _("Sync user")
#define SAMBA_SYNC_USER_PASSWORD_LABEL _("Sync user with password")
#define ENCRYPT_PASSWORDS_LABEL _("Encrypt all passwords")
#define USER_CONFIIGURATION_LABEL _("User configuration") #define USER_CONFIIGURATION_LABEL _("User configuration")
#define USERADD_SYNC_LABEL _("User configuration synchronization") #define USERADD_SYNC_LABEL _("User configuration synchronization")

@ -340,7 +340,7 @@
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">True</property> <property name="can-focus">True</property>
<property name="receives-default">True</property> <property name="receives-default">True</property>
<property name="halign">start</property> <property name="halign">end</property>
<property name="image">image5</property> <property name="image">image5</property>
</object> </object>
<packing> <packing>

@ -163,6 +163,20 @@
<property name="position">0</property> <property name="position">0</property>
</packing> </packing>
</child> </child>
<child>
<object class="GtkCheckButton" id="NoEncriptionCheck">
<property name="label" translatable="yes">Do not encrypt password</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">False</property>
<property name="draw-indicator">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</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>
@ -199,7 +213,7 @@
<packing> <packing>
<property name="expand">True</property> <property name="expand">True</property>
<property name="fill">True</property> <property name="fill">True</property>
<property name="position">1</property> <property name="position">2</property>
</packing> </packing>
</child> </child>
</object> </object>

@ -323,7 +323,7 @@
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
<property name="fill">True</property> <property name="fill">True</property>
<property name="position">3</property> <property name="position">4</property>
</packing> </packing>
</child> </child>
<child> <child>
@ -392,7 +392,7 @@
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
<property name="fill">True</property> <property name="fill">True</property>
<property name="position">4</property> <property name="position">5</property>
</packing> </packing>
</child> </child>
<child> <child>
@ -443,7 +443,7 @@
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
<property name="fill">True</property> <property name="fill">True</property>
<property name="position">5</property> <property name="position">6</property>
</packing> </packing>
</child> </child>
</object> </object>
@ -469,14 +469,67 @@
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="orientation">vertical</property> <property name="orientation">vertical</property>
<property name="spacing">5</property>
<child> <child>
<object class="GtkCheckButton" id="userSyncSAMBACheck"> <object class="GtkFrame">
<property name="label" translatable="yes">Sync with SAMBA user</property>
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">True</property> <property name="can-focus">False</property>
<property name="receives-default">False</property> <property name="label-xalign">0.019999999552965164</property>
<property name="halign">start</property> <property name="shadow-type">in</property>
<property name="draw-indicator">True</property> <child>
<object class="GtkAlignment">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="bottom-padding">5</property>
<property name="left-padding">5</property>
<property name="right-padding">5</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="orientation">vertical</property>
<property name="spacing">5</property>
<child>
<object class="GtkCheckButton" id="userSyncSAMBACheck">
<property name="label" translatable="yes">Sync user</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">False</property>
<property name="halign">start</property>
<property name="draw-indicator">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkCheckButton" id="userSyncSAMBAPasswordCheck">
<property name="label" translatable="yes">Sync user with password</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">False</property>
<property name="halign">start</property>
<property name="draw-indicator">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
</child>
</object>
</child>
<child type="label">
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Samba</property>
</object>
</child>
</object> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>

@ -276,7 +276,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">True</property> <property name="can-focus">True</property>
<property name="receives-default">True</property> <property name="receives-default">True</property>
<property name="tooltip-text" translatable="yes">Update users and groups</property> <property name="tooltip-text" translatable="yes">Additional saving configuration</property>
<property name="image">image4</property> <property name="image">image4</property>
<style> <style>
<class name="thin"/> <class name="thin"/>

@ -1,20 +1,20 @@
# Language translations for ubl-settings-usergroups package. # SOME DESCRIPTIVE TITLE.
# Copyright (C) 2022, UBTech LLC # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the ubl-settings-usergroups package. # This file is distributed under the same license as the PACKAGE package.
# UBLinux Team <info@ublinux.com>, 2022 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
# #
#, fuzzy #, fuzzy
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: ubl-settings-usergroups 1.0\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-12-20 16:12+0600\n" "POT-Creation-Date: 2024-01-24 18:10+0600\n"
"PO-Revision-Date: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: \n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: \n" "Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n" "Language: \n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
#: source/ubl-strings.h:1 #: source/ubl-strings.h:1
@ -259,7 +259,7 @@ msgstr ""
msgid "Are you sure want to delete user" msgid "Are you sure want to delete user"
msgstr "" msgstr ""
#: source/ubl-strings.h:57 #: source/ubl-strings.h:58
msgid "No password required" msgid "No password required"
msgstr "" msgstr ""
@ -533,91 +533,103 @@ msgstr ""
msgid "User name" msgid "User name"
msgstr "" msgstr ""
#: source/ubl-strings.h:144
msgid "Sync user"
msgstr ""
#: source/ubl-strings.h:145 #: source/ubl-strings.h:145
msgid "User configuration" msgid "Sync user with password"
msgstr "" msgstr ""
#: source/ubl-strings.h:146 #: source/ubl-strings.h:146
msgid "Encrypt all passwords"
msgstr ""
#: source/ubl-strings.h:148
msgid "User configuration"
msgstr ""
#: source/ubl-strings.h:149
msgid "User configuration synchronization" msgid "User configuration synchronization"
msgstr "" msgstr ""
#: source/ubl-strings.h:147 #: source/ubl-strings.h:150
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:148 #: source/ubl-strings.h:151
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:149 #: source/ubl-strings.h:152
msgid "User password configuration syncronization" msgid "User password configuration syncronization"
msgstr "" msgstr ""
#: source/ubl-strings.h:150 #: source/ubl-strings.h:153
msgid "" msgid ""
"During system startup, load the user's parameters from the configuration" "During system startup, load the user's parameters from the configuration"
msgstr "" msgstr ""
#: source/ubl-strings.h:151 #: source/ubl-strings.h:154
msgid "" msgid ""
"When shutting down the system, save the user's parameters into the " "When shutting down the system, save the user's parameters into the "
"configuration" "configuration"
msgstr "" msgstr ""
#: source/ubl-strings.h:153 #: source/ubl-strings.h:156
msgid "Main" msgid "Main"
msgstr "" msgstr ""
#: source/ubl-strings.h:154 #: source/ubl-strings.h:157
msgid "Additional" msgid "Additional"
msgstr "" msgstr ""
#: source/ubl-strings.h:155 #: source/ubl-strings.h:158
msgid "Syncronization" msgid "Syncronization"
msgstr "" msgstr ""
#: source/ubl-strings.h:158 #: source/ubl-strings.h:161
msgid "Repeat password:" msgid "Repeat password:"
msgstr "" msgstr ""
#: source/ubl-strings.h:159 #: source/ubl-strings.h:162
msgid "Password hash:" msgid "Password hash:"
msgstr "" msgstr ""
#: source/ubl-strings.h:162 #: source/ubl-strings.h:165
msgid "Additional configuration of service parameter saving" msgid "Additional configuration of service parameter saving"
msgstr "" msgstr ""
#: source/ubl-strings.h:163 #: source/ubl-strings.h:166
msgid "" msgid ""
"At every system shutdown save changes of (root)/var/lib/samba\n" "At every system shutdown save changes of (root)/var/lib/samba\n"
"into (hd)/ublinux-data/rootcopy" "into (hd)/ublinux-data/rootcopy"
msgstr "" msgstr ""
#: source/ubl-strings.h:164 #: source/ubl-strings.h:167
msgid "For system save mode \"Sandbox\"" msgid "For system save mode \"Sandbox\""
msgstr "" msgstr ""
#: source/ubl-strings.h:167 #: source/ubl-strings.h:170
msgid "User deletion" msgid "User deletion"
msgstr "" msgstr ""
#: source/ubl-strings.h:168 #: source/ubl-strings.h:171
msgid "Confirm user(-s) deletion:" msgid "Confirm user(-s) deletion:"
msgstr "" msgstr ""
#: source/ubl-strings.h:169 #: source/ubl-strings.h:172
msgid "Chosen" msgid "Chosen"
msgstr "" msgstr ""
#: source/ubl-strings.h:170 #: source/ubl-strings.h:173
msgid "User" msgid "User"
msgstr "" msgstr ""
#: source/ubl-strings.h:171 #: source/ubl-strings.h:174
msgid "Home directory" msgid "Home directory"
msgstr "" msgstr ""
#: source/ubl-strings.h:172 #: source/ubl-strings.h:175
msgid "Delete home directory" msgid "Delete home directory"
msgstr "" msgstr ""

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: ubl-ubl-settings-usergroups 1.0\n" "Project-Id-Version: ubl-ubl-settings-usergroups 1.0\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-12-20 16:12+0600\n" "POT-Creation-Date: 2024-01-24 18:10+0600\n"
"PO-Revision-Date: 2023-01-01 00:00+0600\n" "PO-Revision-Date: 2023-01-01 00:00+0600\n"
"Last-Translator: UBLinux Team <info@ublinux.com>\n" "Last-Translator: UBLinux Team <info@ublinux.com>\n"
"Language-Team: Russian - UBLinux Team <info@ublinux.com>\n" "Language-Team: Russian - UBLinux Team <info@ublinux.com>\n"
@ -275,7 +275,7 @@ msgstr "Вы уверены, что хотите удалить группу"
msgid "Are you sure want to delete user" msgid "Are you sure want to delete user"
msgstr "Вы уверены, что хотите удалить пользователя" msgstr "Вы уверены, что хотите удалить пользователя"
#: source/ubl-strings.h:57 #: source/ubl-strings.h:58
msgid "No password required" msgid "No password required"
msgstr "Пароль не требуется" msgstr "Пароль не требуется"
@ -567,63 +567,75 @@ msgstr "Имя_группы"
msgid "User name" msgid "User name"
msgstr "Имя пользователя" msgstr "Имя пользователя"
#: source/ubl-strings.h:144
msgid "Sync user"
msgstr "Синхронизировать пользователя"
#: source/ubl-strings.h:145 #: source/ubl-strings.h:145
msgid "Sync user with password"
msgstr "Синхронизировать пользователя с паролем"
#: source/ubl-strings.h:146
msgid "Encrypt all passwords"
msgstr "Зашифровать все пароли"
#: source/ubl-strings.h:148
msgid "User configuration" msgid "User configuration"
msgstr "Настройка пользователя" msgstr "Настройка пользователя"
#: source/ubl-strings.h:146 #: source/ubl-strings.h:149
msgid "User configuration synchronization" msgid "User configuration synchronization"
msgstr "Синхронизация настроек пользователя" msgstr "Синхронизация настроек пользователя"
#: source/ubl-strings.h:147 #: source/ubl-strings.h:150
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:148 #: source/ubl-strings.h:151
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:149 #: source/ubl-strings.h:152
msgid "User password configuration syncronization" msgid "User password configuration syncronization"
msgstr "Синхронизация настроек пароля пользователя" msgstr "Синхронизация настроек пароля пользователя"
#: source/ubl-strings.h:150 #: source/ubl-strings.h:153
msgid "" msgid ""
"During system startup, load the user's parameters from the configuration" "During system startup, load the user's parameters from the configuration"
msgstr "При загрузке системы загрузить параметры пользователя из конфигурации" msgstr "При загрузке системы загрузить параметры пользователя из конфигурации"
#: source/ubl-strings.h:151 #: source/ubl-strings.h:154
msgid "" msgid ""
"When shutting down the system, save the user's parameters into the " "When shutting down the system, save the user's parameters into the "
"configuration" "configuration"
msgstr "" msgstr ""
"При завершении работы системы сохранить параметры пользователя в конфигурацию" "При завершении работы системы сохранить параметры пользователя в конфигурацию"
#: source/ubl-strings.h:153 #: source/ubl-strings.h:156
msgid "Main" msgid "Main"
msgstr "Основные" msgstr "Основные"
#: source/ubl-strings.h:154 #: source/ubl-strings.h:157
msgid "Additional" msgid "Additional"
msgstr "Дополнительные" msgstr "Дополнительные"
#: source/ubl-strings.h:155 #: source/ubl-strings.h:158
msgid "Syncronization" msgid "Syncronization"
msgstr "Синхронизация" msgstr "Синхронизация"
#: source/ubl-strings.h:158 #: source/ubl-strings.h:161
msgid "Repeat password:" msgid "Repeat password:"
msgstr "Подтверждение пароля:" msgstr "Подтверждение пароля:"
#: source/ubl-strings.h:159 #: source/ubl-strings.h:162
msgid "Password hash:" msgid "Password hash:"
msgstr "Хэш пароля:" msgstr "Хэш пароля:"
#: source/ubl-strings.h:162 #: source/ubl-strings.h:165
msgid "Additional configuration of service parameter saving" msgid "Additional configuration of service parameter saving"
msgstr "Дополнительные настройки сохранения параметров сервисов" msgstr "Дополнительные настройки сохранения параметров сервисов"
#: source/ubl-strings.h:163 #: source/ubl-strings.h:166
msgid "" msgid ""
"At every system shutdown save changes of (root)/var/lib/samba\n" "At every system shutdown save changes of (root)/var/lib/samba\n"
"into (hd)/ublinux-data/rootcopy" "into (hd)/ublinux-data/rootcopy"
@ -631,30 +643,30 @@ msgstr ""
"При каждом завершении работы ОС сохранять изменения (root)/var/lib/samba\n" "При каждом завершении работы ОС сохранять изменения (root)/var/lib/samba\n"
"в (hd)/ublinux-data/rootcopy/" "в (hd)/ublinux-data/rootcopy/"
#: source/ubl-strings.h:164 #: source/ubl-strings.h:167
msgid "For system save mode \"Sandbox\"" msgid "For system save mode \"Sandbox\""
msgstr "Для режима сохранения системы \"Песочница\"" msgstr "Для режима сохранения системы \"Песочница\""
#: source/ubl-strings.h:167 #: source/ubl-strings.h:170
msgid "User deletion" msgid "User deletion"
msgstr "Удаление пользователя(-лей)" msgstr "Удаление пользователя(-лей)"
#: source/ubl-strings.h:168 #: source/ubl-strings.h:171
msgid "Confirm user(-s) deletion:" msgid "Confirm user(-s) deletion:"
msgstr "Подтвердите удаление пользователя (-ей):" msgstr "Подтвердите удаление пользователя (-ей):"
#: source/ubl-strings.h:169 #: source/ubl-strings.h:172
msgid "Chosen" msgid "Chosen"
msgstr "Выбран" msgstr "Выбран"
#: source/ubl-strings.h:170 #: source/ubl-strings.h:173
msgid "User" msgid "User"
msgstr "Пользователь" msgstr "Пользователь"
#: source/ubl-strings.h:171 #: source/ubl-strings.h:174
msgid "Home directory" msgid "Home directory"
msgstr "Домашний каталог" msgstr "Домашний каталог"
#: source/ubl-strings.h:172 #: source/ubl-strings.h:175
msgid "Delete home directory" msgid "Delete home directory"
msgstr "Удалить домашний каталог" msgstr "Удалить домашний каталог"

Loading…
Cancel
Save