diff --git a/README.md b/README.md index 7055ab1..524394e 100644 --- a/README.md +++ b/README.md @@ -6,6 +6,9 @@ In order to build ubl-settings-manager you will need: - CMake - C compiler - GTK+ 3 & dependencies +- [libublsettings](https://gitea.ublinux.ru/Applications/libublsettings) +- [libublsettings-gtk3](https://gitea.ublinux.ru/Applications/libublsettings-gtk3) +- [libublsettingsui-gtk3](https://gitea.ublinux.ru/Applications/libublsettingsui-gtk3) Once you have all the necessary dependencies, you can use: ```sh diff --git a/screenshot/screenshot.png b/screenshot/screenshot.png index 485ce22..5e893b8 100644 Binary files a/screenshot/screenshot.png and b/screenshot/screenshot.png differ diff --git a/source/CMakeLists.txt b/source/CMakeLists.txt index 330c856..dab8897 100644 --- a/source/CMakeLists.txt +++ b/source/CMakeLists.txt @@ -94,10 +94,14 @@ set(LIBRARIES ublsettingsui-gtk3 ) +set (TARGET_DIRS /usr/include/libublsettingsui-gtk3) + add_executable(${PROJECT_NAME} ${SOURCE_FILES} ${CMAKE_CURRENT_BINARY_DIR}/${GRESOURCE_C}) target_link_libraries(${PROJECT_NAME} PUBLIC ${LIBRARIES}) target_include_directories(${PROJECT_NAME} PUBLIC ${PROJECT_BINARY_DIR}) +target_include_directories(${PROJECT_NAME} PUBLIC /usr/include/libublsettingsui-gtk3) + set_source_files_properties( ${CMAKE_CURRENT_BINARY_DIR}/${GRESOURCE_C} PROPERTIES GENERATED TRUE diff --git a/source/ubl-settings-update.c b/source/ubl-settings-update.c index e3546e8..15490b2 100644 --- a/source/ubl-settings-update.c +++ b/source/ubl-settings-update.c @@ -24,6 +24,7 @@ void on_save_done(main_window *, config_str output, int size){ break; } textdomain(LocaleName); + yon_config_set_ignore(REPOSITORY_parameter); } @@ -33,7 +34,7 @@ void on_toggle_button_toggled(GtkWidget *self, main_window *widgets){ if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->AutoUpdateCheck))){ yon_config_register(AUTOUPDATE,AUTOUPDATE_command,"enable"); } else { - yon_config_register(AUTOUPDATE,AUTOUPDATE_command,"disable"); + yon_config_remove_by_key(AUTOUPDATE); } } else if (self == widgets->UpdateModeCombo){ @@ -63,11 +64,11 @@ void on_toggle_button_toggled(GtkWidget *self, main_window *widgets){ switch(gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->UpdateIntervalCombo))){ case 0: interval = yon_char_unite(!yon_char_is_empty(interval)?interval:"",!yon_char_is_empty(interval)?",":"",int_str,"min",NULL); break; - case 1: interval = yon_char_unite(int_str,"h",NULL); + case 1: interval = yon_char_unite(!yon_char_is_empty(interval)?interval:"",!yon_char_is_empty(interval)?",":"",int_str,"h",NULL); break; - case 2: interval = yon_char_unite(int_str,"d",NULL); + case 2: interval = yon_char_unite(!yon_char_is_empty(interval)?interval:"",!yon_char_is_empty(interval)?",":"",int_str,"d",NULL); break; - case 3: interval = yon_char_unite(int_str,"M",NULL); + case 3: interval = yon_char_unite(!yon_char_is_empty(interval)?interval:"",!yon_char_is_empty(interval)?",":"",int_str,"M",NULL); break; } yon_config_register(AUTOUPDATE_interval,AUTOUPDATE_interval_command,interval); @@ -159,7 +160,8 @@ void on_toggle_button_toggled(GtkWidget *self, main_window *widgets){ void yon_load_proceed(YON_CONFIG_TYPE type){ yon_config_clean(); - if (!yon_char_is_empty(config_get_default_command)) + char *default_command = yon_char_unite(config_get_default_command,NULL); + if (!yon_char_is_empty(default_command)) yon_config_load_config(YON_CONFIG_DEFAULT,config_get_default_command,NULL); if (type==YON_CONFIG_GLOBAL){ yon_config_load_config(type,config_get_global_command,NULL); @@ -246,7 +248,7 @@ void yon_interface_update(main_window *widgets){ gtk_list_store_append(widgets->ReposList,&iter); char *temp = strstr(parsed[0],",")?yon_char_replace(parsed[0],",","\n"):parsed[0]; parsed[0] = temp; - gtk_list_store_set(widgets->ReposList,&iter,0,cur_size>3&&!strcmp(parsed[3],"")?1:0,1,key,2,parsed[0],3,cur_size>1?parsed[1]:"",4,cur_size>2?parsed[2]:"",-1); + gtk_list_store_set(widgets->ReposList,&iter,0,(cur_size>3&&!strcmp(parsed[3],""))||cur_size<3?1:0,1,key,2,parsed[0],3,cur_size>1?parsed[1]:"",4,cur_size>2?parsed[2]:"",-1); } free(key); @@ -289,7 +291,12 @@ void yon_interface_update(main_window *widgets){ yon_char_parsed_free(parsed,cur_size); } } else { - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets->PublicationCheck),1); + for (int i=0;iPublicationList,&iter); + gtk_list_store_set(widgets->PublicationList,&iter,1,publish_repos[i],0,1,-1); + } + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets->PublicationCheck),0); } } { @@ -305,6 +312,15 @@ void yon_interface_update(main_window *widgets){ config_str mirror_list = yon_config_get_all_by_key(REPOPUBLIC_CACHE_search,&size); if (size){ for (int i=0;iUpdateIntervalDefaultCheck),0); - if (strstr(autoupdate_config,"min")){ + int parsed_size; + config_str parsed = yon_char_parse(autoupdate_config,&parsed_size,","); + if (yon_char_parsed_check_exist(parsed,parsed_size,"boot")!=-1){ + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets->BootCheck),1); + } + if (strstr(parsed[parsed_size-1],"min")){ gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->UpdateIntervalCombo),0); - } else if (autoupdate_config[strlen(autoupdate_config)-1]=='h'){ + } else if (parsed[parsed_size-1][strlen(parsed[parsed_size-1])-1]=='h'){ gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->UpdateIntervalCombo),1); - } else if (autoupdate_config[strlen(autoupdate_config)-1]=='d'){ + } else if (parsed[parsed_size-1][strlen(parsed[parsed_size-1])-1]=='d'){ gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->UpdateIntervalCombo),2); - } else if (autoupdate_config[strlen(autoupdate_config)-1]=='M'){ + } else if (parsed[parsed_size-1][strlen(parsed[parsed_size-1])-1]=='M'){ gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->UpdateIntervalCombo),3); } - gtk_spin_button_set_value(GTK_SPIN_BUTTON(widgets->UpdateIntervalSpin),atol(autoupdate_config)); + gtk_spin_button_set_value(GTK_SPIN_BUTTON(widgets->UpdateIntervalSpin),atol(parsed[parsed_size-1])); } else { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets->UpdateIntervalDefaultCheck),1); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets->BootCheck),0); + gtk_spin_button_set_value(GTK_SPIN_BUTTON(widgets->UpdateIntervalSpin),0); + gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->UpdateIntervalCombo),0); + } } @@ -396,7 +421,27 @@ void yon_interface_update(main_window *widgets){ int repos_size; config_str repos = yon_char_parse(key,&repos_size,","); - gtk_list_store_set(widgets->WebPublicationList,&iter,1,path,2,yon_char_parsed_to_string(repos,repos_size,"\n"),-1); + char *repos_paths = yon_char_parsed_to_string(repos,repos_size,","); + char *full_path = yon_char_unite(path,!yon_char_is_empty(repos_paths)?":":"",!yon_char_is_empty(repos_paths)?repos_paths:"",NULL); + if (!yon_char_is_empty(repos_paths)) free(repos_paths); + if (!repos_size){ + int temp_size; + config_str contents = yon_dir_get_contents(path,&temp_size); + for (int k=0;kWebPublicationList,&iter,1,path,2,repos_paths,8,full_path,-1); + free(repos_paths); + free(full_path); int cur_size; config_str parsed = yon_char_parse(cur,&cur_size,":"); if (cur_size){ @@ -415,11 +460,12 @@ void yon_interface_update(main_window *widgets){ gtk_list_store_set(widgets->WebPublicationList,&iter,5,parsed[3],-1); } if (cur_size>4&&!yon_char_is_empty(parsed[4])){ - if (!strcmp(parsed[4],"sha256")||!strcmp(parsed[4],"sha512")){ - gtk_list_store_set(widgets->WebPublicationList,&iter,7,parsed[5],-1); - gtk_list_store_set(widgets->WebPublicationList,&iter,6,parsed[4],-1); + char *hash = yon_char_divide_search(parsed[4],"|",-1); + if (!strcmp(hash,"sha256")||!strcmp(hash,"sha512")){ + gtk_list_store_set(widgets->WebPublicationList,&iter,7,"******",-1); + gtk_list_store_set(widgets->WebPublicationList,&iter,6,hash,-1); } else { - gtk_list_store_set(widgets->WebPublicationList,&iter,6,parsed[4],-1); + gtk_list_store_set(widgets->WebPublicationList,&iter,6,"******",-1); if (cur_size>5&&!yon_char_is_empty(parsed[5])){ gtk_list_store_set(widgets->WebPublicationList,&iter,7,parsed[5],-1); } @@ -629,7 +675,6 @@ void on_scrolled_window_size_allocate(GtkWidget *, GdkRectangle *allocation, rep void on_repo_add(GtkWidget *, main_window *widgets){ gtk_tree_selection_unselect_all(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->MirrorTree))); repo_add_window *window = yon_repo_add_window_new(); - g_signal_connect(G_OBJECT(window->RepoSourceCombo),"changed",G_CALLBACK(yon_gtk_widget_set_sensitive_from_combo_box),window->RepoSourceButton); yon_gtk_window_setup(GTK_WINDOW(window->Window),GTK_WINDOW(widgets->Window),ADD_REPO_LABEL,icon_path,"add_repo_window"); dictionary *dict = NULL; @@ -651,6 +696,13 @@ void on_mirror_add(GtkWidget *,main_window *widgets){ } +void on_password_encryption_changed(GtkComboBox *self, password_window *dialog){ + int active = gtk_combo_box_get_active(self); + gtk_widget_set_sensitive(dialog->NoEncriptionCheck,!!active); + if (!active) + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(dialog->NoEncriptionCheck),0); +} + void on_password_open(GtkWidget *, web_publication_add_window *window){ password_window *dialog = yon_password_window_new(); yon_gtk_entry_set_password_visibility_icon(GTK_ENTRY(dialog->PasswordEntry)); @@ -660,6 +712,8 @@ void on_password_open(GtkWidget *, web_publication_add_window *window){ yon_dictionary_add_or_create_if_exists_with_data(dict,"window",dialog); yon_dictionary_add_or_create_if_exists_with_data(dict,"target",window->UserPasswordEntry); g_signal_connect(G_OBJECT(dialog->AcceptButton),"clicked",G_CALLBACK(on_password_accept),dict); + g_signal_connect(G_OBJECT(dialog->NoEncriptionCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button),dialog->PasswordHashEntry); + g_signal_connect(G_OBJECT(dialog->EncryptionCombo),"changed",G_CALLBACK(on_password_encryption_changed),dialog); } void on_web_publish_remove(GtkWidget *self,main_window *widgets){ @@ -693,19 +747,9 @@ void on_web_publish_remove_accept(GtkWidget *, main_window *widgets){ if (!gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->WebPublicationTree)),&model,&iter)) { return; } - char *storage; - char *repositories; - gtk_tree_model_get(model,&iter,1,&storage,2,&repositories,-1); char *full_name = NULL; - if (!yon_char_is_empty(repositories)){ - int size; - config_str parsed = yon_char_parse(repositories,&size,"\n"); - char *temp = yon_char_parsed_to_string(parsed,size,","); - full_name=yon_char_unite(storage,":",temp); - free(temp); - yon_char_parsed_free(parsed,size); - } else full_name = storage; - yon_config_remove_by_key(full_name); + gtk_tree_model_get(model,&iter,8,&full_name,-1); + yon_config_remove_by_key(REPOPUBLIC_WEB_full(full_name)); yon_interface_update(widgets); } @@ -717,7 +761,7 @@ void on_mirror_remove_accept(GtkWidget *, main_window *widgets){ } char *repo; gtk_tree_model_get(model,&iter,0,&repo,-1); - yon_config_remove_by_key(repo); + yon_config_remove_by_key(REPOPUBLIC_CACHE_full(repo)); yon_interface_update(widgets); } @@ -764,66 +808,65 @@ void on_repo_edit(GtkWidget *,main_window *widgets){ section->TypeCombo = yon_gtk_builder_get_widget(builder,"TypeCombo"); section->edits=0; - if (strstr(repos[i],"@")){ - char *type = yon_char_divide_search(repos[i],"@",-1); - gtk_combo_box_set_active_id(GTK_COMBO_BOX(section->TypeCombo),type); - free(type); + char *path = yon_char_new(repos[i]); + if (strstr(repos[i],"file://")){ + gtk_combo_box_set_active(GTK_COMBO_BOX(section->TypeCombo),0); + free(yon_char_divide(path,6)); + + } else if (strstr(repos[i],"ftp://")){ + gtk_combo_box_set_active(GTK_COMBO_BOX(section->TypeCombo),1); + free(yon_char_divide(path,5)); + + } else if (strstr(repos[i],"http://")){ + gtk_combo_box_set_active(GTK_COMBO_BOX(section->TypeCombo),2); + free(yon_char_divide(path,6)); + + } else if (strstr(repos[i],"https://")){ + gtk_combo_box_set_active(GTK_COMBO_BOX(section->TypeCombo),3); + free(yon_char_divide(path,7)); - } else + } else { gtk_combo_box_set_active(GTK_COMBO_BOX(section->TypeCombo),4); + + } + gtk_entry_set_text(GTK_ENTRY(section->PathEntry),path); + free(path); yon_dictionary_add_or_create_if_exists_with_data(window->sections,(char*)target,section); - gtk_entry_set_text(GTK_ENTRY(section->PathEntry),repos[i]); - gtk_box_pack_start(GTK_BOX(window->SourceBox),section->PathRemovalBox,0,0,2); + gtk_box_pack_start(GTK_BOX(window->SourceBox),section->PathRemovalBox,0,0,0); g_signal_connect(gtk_builder_get_object(builder,"PathEditButton"),"clicked",G_CALLBACK(on_mirror_path_edit),window); g_signal_connect(gtk_builder_get_object(builder,"PathRemoveButton"),"clicked",G_CALLBACK(on_mirror_path_removed),window); } + gtk_widget_show(window->SourceListBox); yon_char_parsed_free(repos,cur_size); } if (size>1&&!yon_char_is_empty(parsed[1])){ //siglevel gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->SignDefaultCheck),0); int cur_size; config_str siglevel = yon_char_parse(parsed[1],&cur_size,","); - if (!strcmp(siglevel[0],"Never")){ - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->NeverRadio),1); - } else if (!strcmp(siglevel[0],"Optional")){ - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->OptionalRadio),1); - } else if (!strcmp(siglevel[0],"Required")){ - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->RequiredRadio),1); - } else if (!strcmp(siglevel[0],"TrustedOnly")){ - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->TrustedOnlyRadio),1); - } else if (!strcmp(siglevel[0],"TrustAll")){ - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->TrustAllRadio),1); - } - if (!strcmp(siglevel[1],"PackageNever")){ - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->PackageNeverRadio),1); - } else if (!strcmp(siglevel[1],"DatabaseNever")){ - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->DatabaseNeverRadio),1); - } else if (!strcmp(siglevel[1],"PackageOptional")){ - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->PackageOptionalRadio),1); - } else if (!strcmp(siglevel[1],"DatabaseOptional")){ - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->DatabaseOptionalRadio),1); - } else if (!strcmp(siglevel[1],"PackageRequired")){ - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->PackageRequiredRadio),1); - } else if (!strcmp(siglevel[1],"DatabaseRequired")){ - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->DatabaseRequiredRadio),1); - } else if (!strcmp(siglevel[1],"PackageTrustedOnly")){ - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->PackageTrustedOnlyRadio),1); - } else if (!strcmp(siglevel[1],"DatabaseTrustedOnly")){ - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->DatabaseTrustedOnlyRadio),1); - } else if (!strcmp(siglevel[1],"PackageTrustAll")){ - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->PackageTrustAllRadio),1); - } else if (!strcmp(siglevel[1],"DatabaseTrustAll")){ - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->DatabaseTrustAllRadio),1); + + GtkTreeModel *model = GTK_TREE_MODEL(window->SignList); + GtkTreeIter iter; + for_iter (model,&iter){ + char *target; + gtk_tree_model_get(model,&iter,1,&target,-1); + if (yon_char_parsed_check_exist(siglevel,cur_size,target)>-1){ + gtk_list_store_set(window->SignList,&iter,0,1,-1); + } else { + gtk_list_store_set(window->SignList,&iter,0,0,-1); + + } } + gtk_entry_set_text(GTK_ENTRY(window->SignLevelCheckEntry),parsed[1]); } - if (size>2&&!yon_char_is_empty(parsed[2])){ + if (size>2&&!yon_char_is_empty(parsed[2])){ //usage int usage_size; config_str usage = yon_char_parse(parsed[2],&usage_size,","); for (int i=0;iUsageDefaultCheck),1); } else { + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->UsageDefaultCheck),0); if (!strcmp(usage[i],"Sync")){ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->UsageEnableUpdateCheck),1); } @@ -839,7 +882,7 @@ void on_repo_edit(GtkWidget *,main_window *widgets){ } } if (usage_size) yon_char_parsed_free(usage,usage_size); - } //usage + } if (size<3||yon_char_is_empty(parsed[3])||strcmp(parsed[3],"disable")){ //disable gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->EnabledCheck),1); } @@ -860,14 +903,13 @@ void on_web_publish_edit(GtkWidget *,main_window *widgets){ if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->WebPublicationTree)),NULL,&iter)){ char *storage; char *repos; - gtk_tree_model_get(GTK_TREE_MODEL(widgets->WebPublicationList),&iter,1,&storage,2,&repos,-1); + char *full; + gtk_tree_model_get(GTK_TREE_MODEL(widgets->WebPublicationList),&iter,1,&storage,2,&repos,8,&full,-1); gtk_entry_set_text(GTK_ENTRY(window->PathEntry),storage); while(gtk_events_pending()) gtk_main_iteration(); - char *full_name = storage; if(!yon_char_is_empty(repos)){ int size; config_str parsed = yon_char_parse(repos,&size,"\n"); - full_name = yon_char_unite(storage,":",yon_char_replace(repos,"\n",","),NULL); if (size){ GtkTreeIter itar; for_iter(GTK_TREE_MODEL(window->list),&itar){ @@ -879,8 +921,8 @@ void on_web_publish_edit(GtkWidget *,main_window *widgets){ } } } - window->name = full_name; - char *parameter = config(REPOPUBLIC_WEB_full(full_name)); + window->name = full; + char *parameter = config(REPOPUBLIC_WEB_full(full)); int size; config_str parsed = yon_char_parse(parameter,&size,":"); if (size){ @@ -891,7 +933,7 @@ void on_web_publish_edit(GtkWidget *,main_window *widgets){ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->EnableWebFileBrowserCheck),1); } if (size>2&&!yon_char_is_empty(parsed[2])){ - gtk_entry_set_text(GTK_ENTRY(window->PortEntry),parsed[2]); + gtk_spin_button_set_value(GTK_SPIN_BUTTON(window->PortEntry),atol(parsed[2])); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->PortCheck),1); } if (size>3&&!yon_char_is_empty(parsed[3])){ @@ -899,6 +941,7 @@ void on_web_publish_edit(GtkWidget *,main_window *widgets){ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->UsernameCheck),1); } if (size>4&&!yon_char_is_empty(parsed[4])){ + gtk_combo_box_set_active(GTK_COMBO_BOX(window->UserPasswordCombo),1); if (!strcmp(parsed[4],"sha256")||!strcmp(parsed[4],"sha512")){ gtk_combo_box_set_active_id(GTK_COMBO_BOX(window->UserPasswordCombo),parsed[4]); gtk_entry_set_text(GTK_ENTRY(window->UserPasswordEntry),parsed[5]); @@ -952,7 +995,7 @@ void on_mirror_edit(GtkWidget *,main_window *widgets){ yon_dictionary_add_or_create_if_exists_with_data(window->sections,(char*)target,section); gtk_entry_set_text(GTK_ENTRY(section->PathEntry),parsed[i]); - gtk_box_pack_start(GTK_BOX(window->PathBox),section->PathRemovalBox,0,0,2); + gtk_box_pack_start(GTK_BOX(window->PathBox),section->PathRemovalBox,0,0,0); g_signal_connect(gtk_builder_get_object(builder,"PathEditButton"),"clicked",G_CALLBACK(on_mirror_path_edit),window); g_signal_connect(gtk_builder_get_object(builder,"PathRemoveButton"),"clicked",G_CALLBACK(on_mirror_path_removed),window); @@ -1024,6 +1067,11 @@ void on_repo_accept_clicked(GtkWidget *, dictionary *dict){ main_window *widgets = yon_dictionary_get_data(dict->first,main_window*); repo_add_window *window = yon_dictionary_get_data(dict->first->next,repo_add_window*); + if (!window->sections&&yon_char_is_empty(gtk_entry_get_text(GTK_ENTRY(window->RepoSourceEntry)))) { + yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE); + yon_ubl_status_highlight_incorrect(window->RepoSourceEntry); + return; + } const char *repo_name = gtk_entry_get_text(GTK_ENTRY(window->RepoNameEntry)); if (yon_char_is_empty(repo_name)){ yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE); @@ -1033,10 +1081,20 @@ void on_repo_accept_clicked(GtkWidget *, dictionary *dict){ int enabled = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->EnabledCheck)); char *sources = ""; dictionary *dact = NULL; - for_dictionaries (dact, window->sections){ - char *type = (char*)gtk_combo_box_get_active_id(GTK_COMBO_BOX(((path_section*)dact->data)->TypeCombo)); - char *cur = yon_char_unite(type?type:"",type?"@":"",(char*)gtk_entry_get_text(GTK_ENTRY(((path_section*)dact->data)->PathEntry)),NULL); - char *temp = yon_char_unite(sources,!yon_char_is_empty(sources)?",":"",cur,NULL); + if (window->sections){ + for_dictionaries (dact, window->sections){ + char *type = (char*)gtk_combo_box_get_active_id(GTK_COMBO_BOX(((path_section*)dact->data)->TypeCombo)); + char *cur = yon_char_unite(type?type:"",(char*)gtk_entry_get_text(GTK_ENTRY(((path_section*)dact->data)->PathEntry)),NULL); + char *temp = yon_char_unite(sources,!yon_char_is_empty(sources)?",":"",cur,NULL); + if (!yon_char_is_empty(sources)) free(sources); + sources = temp; + } + } + char *source_main = (char*)gtk_entry_get_text(GTK_ENTRY(window->RepoSourceEntry)); + if (!yon_char_is_empty(source_main)) { + char *type = (char*)gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->RepoSourceCombo)); + source_main = yon_char_unite(type?type:"",source_main,NULL); + char *temp = yon_char_unite(sources,!yon_char_is_empty(sources)?",":"",source_main,NULL); if (!yon_char_is_empty(sources)) free(sources); sources = temp; } @@ -1046,40 +1104,9 @@ void on_repo_accept_clicked(GtkWidget *, dictionary *dict){ return; } - char *sign_level_package = ""; - char *sign_level_condiition = ""; - if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->NeverRadio))){ - sign_level_package="Never"; - } else if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->OptionalRadio))){ - sign_level_package="Optional"; - } else if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->RequiredRadio))){ - sign_level_package="Required"; - } else if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->TrustedOnlyRadio))){ - sign_level_package="TrustedOnly"; - } else if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->TrustAllRadio))){ - sign_level_package="TrustAll"; - } - - if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->PackageNeverRadio))){ - sign_level_condiition="PackageNever"; - } else if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->DatabaseNeverRadio))){ - sign_level_condiition="DatabaseNever"; - } else if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->PackageOptionalRadio))){ - sign_level_condiition="PackageOptional"; - } else if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->DatabaseOptionalRadio))){ - sign_level_condiition="DatabaseOptional"; - } else if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->PackageRequiredRadio))){ - sign_level_condiition="PackageRequired"; - } else if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->DatabaseRequiredRadio))){ - sign_level_condiition="DatabaseRequired"; - } else if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->PackageTrustedOnlyRadio))){ - sign_level_condiition="PackageTrustedOnly"; - } else if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->DatabaseTrustedOnlyRadio))){ - sign_level_condiition="DatabaseTrustedOnly"; - } else if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->PackageTrustAllRadio))){ - sign_level_condiition="PackageTrustAll"; - } else if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->DatabaseTrustAllRadio))){ - sign_level_condiition="DatabaseTrustAll"; + char *sign_level= ""; + if (!gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->SignDefaultCheck))){ + sign_level = (char*)gtk_entry_get_text(GTK_ENTRY(window->SignLevelCheckEntry)); } char *usage = ""; if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->UsageDefaultCheck))){ @@ -1105,10 +1132,10 @@ void on_repo_accept_clicked(GtkWidget *, dictionary *dict){ } } - char *final = yon_char_unite(sources,";",sign_level_package,",",sign_level_condiition,";",usage,";",enabled?"":"disable",NULL); + char *final = yon_char_unite(sources,";",sign_level,";",usage,";",enabled?"":"disable",NULL); if (!yon_char_is_empty(window->name)&&strcmp(repo_name,window->name)){ - yon_config_remove_by_key(REOSITORY_command(window->name)); + yon_config_remove_by_key(REPOSITORY(window->name)); } yon_config_register(REPOSITORY(repo_name),REOSITORY_command(repo_name),final); yon_interface_update(widgets); @@ -1123,13 +1150,24 @@ void on_web_publish_accept(GtkWidget *, dictionary *dict){ int enabled = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->EnablePublishCheck)); int port_enabled = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->PortCheck)); - char *port = (char*)gtk_entry_get_text(GTK_ENTRY(window->PortEntry)); + char *port = yon_char_from_long(gtk_spin_button_get_value(GTK_SPIN_BUTTON(window->PortEntry))); int enable_browser = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->EnableWebFileBrowserCheck)); int username_check = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->UsernameCheck)); char *username = (char*)gtk_entry_get_text(GTK_ENTRY(window->UsernameEntry)); char *user_password = yon_char_new((char*)gtk_entry_get_text(GTK_ENTRY(window->UserPasswordEntry))); - char *encryption = user_password[5]=='|'?yon_char_divide(user_password,6):NULL; + char *encryption = user_password[6]=='|'?yon_char_divide(user_password,6):NULL; + + if (strpbrk(username,"!@#%^&*\'")){ + yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),ENTRY_RESTRICTED_SYMBOL_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE); + yon_ubl_status_highlight_incorrect(window->UsernameEntry); + return; + } + if (strpbrk(user_password,"!@#%^&*\'")){ + yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),PASSWORD_RESTRICTED_SYMBOL_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE); + yon_ubl_status_highlight_incorrect(window->UserPasswordEntry); + return; + } if (username_check&&yon_char_is_empty(username)){ yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE); yon_ubl_status_highlight_incorrect(window->UsernameEntry); @@ -1165,12 +1203,17 @@ void on_web_publish_accept(GtkWidget *, dictionary *dict){ return; } char *final_name = yon_char_is_empty(full_name)||!disabled ? name : yon_char_unite(name,":",full_name,NULL); - char *final = yon_char_unite(enabled?"enable":"disable",":",enable_browser?"listing":"",":",port_enabled?port:"",":",username_check?username:"",":",username_check?yon_char_is_empty(encryption)? user_password:encryption:"",":",username_check?!yon_char_is_empty(encryption)?user_password:"":"",NULL); + char *final = yon_char_unite(enabled?"enable":"disable",":", + enable_browser?"listing":"",":", + port_enabled?port:"",":", + username_check?username:"",":", + username_check?yon_char_is_empty(encryption)? user_password:encryption:"",":", + username_check?!yon_char_is_empty(encryption)?user_password:"":"", + NULL); if (!yon_char_is_empty(window->name)&&strcmp(final_name,window->name)){ - yon_config_remove_by_key(REPOPUBLIC_WEB_command(window->name)); - } else { - yon_config_register(REPOPUBLIC_WEB_full(final_name),REPOPUBLIC_WEB_command(final_name),final); + yon_config_remove_by_key(REPOPUBLIC_WEB_full(window->name)); } + yon_config_register(REPOPUBLIC_WEB_full(final_name),REPOPUBLIC_WEB_command(final_name),final); yon_interface_update(widgets); gtk_widget_destroy(window->Window); } @@ -1178,13 +1221,32 @@ void on_web_publish_accept(GtkWidget *, dictionary *dict){ void on_mirror_accept(GtkWidget *,dictionary *dict){ main_window *widgets = yon_dictionary_get_data(dict->first,main_window*); mirror_add_window *window = yon_dictionary_get_data(dict->first->next,mirror_add_window*); + if (yon_char_is_empty(gtk_entry_get_text(GTK_ENTRY(window->NameEntry)))){ + yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE); + yon_ubl_status_highlight_incorrect(window->NameEntry); + return; + } + if (!window->sections&&yon_char_is_empty(gtk_entry_get_text(GTK_ENTRY(window->TypeEntry)))) { + yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE); + yon_ubl_status_highlight_incorrect(window->TypeEntry); + return; + } char *name = (char*)gtk_entry_get_text(GTK_ENTRY(window->NameEntry)); char *paths = ""; - dictionary *dact = NULL; - for_dictionaries (dact, window->sections){ - - char *cur = yon_char_unite(gtk_combo_box_get_active_id(GTK_COMBO_BOX(((path_section*)dact->data)->TypeCombo)),"@",(char*)gtk_entry_get_text(GTK_ENTRY(((path_section*)dact->data)->PathEntry)),NULL); - char *temp = yon_char_unite(paths,!yon_char_is_empty(paths)?",":"",cur,NULL); + if (window->sections){ + dictionary *dact = NULL; + for_dictionaries (dact, window->sections){ + char *cur = yon_char_unite(gtk_combo_box_get_active_id(GTK_COMBO_BOX(((path_section*)dact->data)->TypeCombo)),"@",(char*)gtk_entry_get_text(GTK_ENTRY(((path_section*)dact->data)->PathEntry)),NULL); + char *temp = yon_char_unite(paths,!yon_char_is_empty(paths)?",":"",cur,NULL); + if (!yon_char_is_empty(paths)) free(paths); + paths = temp; + } + } + char *source_main = (char*)gtk_entry_get_text(GTK_ENTRY(window->TypeEntry)); + if (!yon_char_is_empty(source_main)) { + char *type = (char*)gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->TypeCombo)); + source_main = yon_char_unite(type?type:"",type?"@":"",source_main,NULL); + char *temp = yon_char_unite(paths,!yon_char_is_empty(paths)?",":"",source_main,NULL); if (!yon_char_is_empty(paths)) free(paths); paths = temp; } @@ -1280,6 +1342,11 @@ void on_password_accept(GtkWidget *,dictionary *dict){ } else { char *password = (char*)gtk_entry_get_text(GTK_ENTRY(window->PasswordEntry)); char *password_check = (char*)gtk_entry_get_text(GTK_ENTRY(window->RepeatPasswordEntry)); + if (strpbrk(password,"!@#%^&*\'")){ + yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),PASSWORD_RESTRICTED_SYMBOL_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE); + yon_ubl_status_highlight_incorrect(window->PasswordEntry); + return; + } if (strcmp(password,password_check)){ yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),PASSWORD_MISMATCH_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE); yon_ubl_status_highlight_incorrect(window->PasswordEntry); @@ -1287,8 +1354,15 @@ void on_password_accept(GtkWidget *,dictionary *dict){ return; } char *encryption = (char*)gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->EncryptionCombo)); - char *final_text = yon_char_unite(encryption,"|",password,NULL); - gtk_entry_set_text(GTK_ENTRY(target),final_text); + if (yon_char_is_empty(encryption)){ + gtk_entry_set_text(GTK_ENTRY(target),password); + + } else { + int size; + config_str hash = yon_config_load(yon_debug_output("%s\n",!strcmp(encryption,"sha512")?sha512_encrypt_command(password):sha256_encrypt_command(password)),&size); + yon_char_remove_last_symbol(hash[0],'\n'); + gtk_entry_set_text(GTK_ENTRY(target),hash[0]); + } } gtk_widget_destroy(window->Window); @@ -1364,7 +1438,7 @@ void on_mirror_path_add(GtkWidget *, mirror_add_window *window){ gtk_entry_set_text(GTK_ENTRY(section->PathEntry),target); gtk_entry_set_text(GTK_ENTRY(window->TypeEntry),""); - gtk_box_pack_start(GTK_BOX(window->PathBox),section->PathRemovalBox,0,0,2); + gtk_box_pack_start(GTK_BOX(window->PathBox),section->PathRemovalBox,0,0,0); g_signal_connect(gtk_builder_get_object(builder,"PathEditButton"),"clicked",G_CALLBACK(on_mirror_path_edit),window); g_signal_connect(gtk_builder_get_object(builder,"PathRemoveButton"),"clicked",G_CALLBACK(on_mirror_path_removed),window); @@ -1389,12 +1463,17 @@ void on_repo_source_add(GtkWidget *, repo_add_window *window){ section->TypeCombo = yon_gtk_builder_get_widget(builder,"TypeCombo"); section->edits=0; - gtk_combo_box_set_active_id(GTK_COMBO_BOX(section->TypeCombo),gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->RepoSourceCombo))); + const char *id = gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->RepoSourceCombo)); + if (!yon_char_is_empty(id)) + gtk_combo_box_set_active_id(GTK_COMBO_BOX(section->TypeCombo),id); + else + gtk_combo_box_set_active(GTK_COMBO_BOX(section->TypeCombo),4); yon_dictionary_add_or_create_if_exists_with_data(window->sections,(char*)target,section); gtk_entry_set_text(GTK_ENTRY(section->PathEntry),target); gtk_entry_set_text(GTK_ENTRY(window->RepoSourceEntry),""); - gtk_box_pack_start(GTK_BOX(window->SourceBox),section->PathRemovalBox,0,0,2); + gtk_box_pack_start(GTK_BOX(window->SourceBox),section->PathRemovalBox,0,0,0); + gtk_widget_show(window->SourceListBox); g_signal_connect(gtk_builder_get_object(builder,"PathEditButton"),"clicked",G_CALLBACK(on_mirror_path_edit),window); g_signal_connect(gtk_builder_get_object(builder,"PathRemoveButton"),"clicked",G_CALLBACK(on_mirror_path_removed),window); } @@ -1430,23 +1509,46 @@ password_window *yon_password_window_new(){ return window; } +void on_sign_cell_toggled(GtkWidget *, char *path, repo_add_window *window){ + GtkTreeModel *model = GTK_TREE_MODEL(window->SignList); + GtkTreeIter check_iter; + if (gtk_tree_model_get_iter_from_string(model,&check_iter,path)){ + int check_status; + char *target; + gtk_tree_model_get(model,&check_iter,0,&check_status,1,&target,-1); + gtk_list_store_set(window->SignList,&check_iter,0,!check_status,-1); + char *active_signs = yon_char_new((char*)gtk_entry_get_text(GTK_ENTRY(window->SignLevelCheckEntry))); + if (!check_status){ + char *temp = yon_char_unite(active_signs,!yon_char_is_empty(active_signs)?",":"",target,NULL); + gtk_entry_set_text(GTK_ENTRY(window->SignLevelCheckEntry),temp); + } else { + int parsed_size; + config_str parsed = yon_char_parse(active_signs,&parsed_size,","); + if (parsed_size){ + int found = yon_char_parsed_check_exist(parsed,parsed_size,target); + if (found>-1){ + parsed = yon_char_parsed_rip(parsed,&parsed_size,found); + } + char *temp = yon_char_parsed_to_string(parsed,parsed_size,","); + gtk_entry_set_text(GTK_ENTRY(window->SignLevelCheckEntry),temp); + } + } + } +} + void on_sign_check_toggled(GtkToggleButton *self, repo_add_window *window){ int status = gtk_toggle_button_get_active(self); - gtk_widget_set_sensitive(window->NeverRadio,!status); - gtk_widget_set_sensitive(window->OptionalRadio,!status); - gtk_widget_set_sensitive(window->RequiredRadio,!status); - gtk_widget_set_sensitive(window->TrustedOnlyRadio,!status); - gtk_widget_set_sensitive(window->TrustAllRadio,!status); - gtk_widget_set_sensitive(window->PackageNeverRadio,!status); - gtk_widget_set_sensitive(window->DatabaseNeverRadio,!status); - gtk_widget_set_sensitive(window->PackageOptionalRadio,!status); - gtk_widget_set_sensitive(window->DatabaseOptionalRadio,!status); - gtk_widget_set_sensitive(window->PackageRequiredRadio,!status); - gtk_widget_set_sensitive(window->DatabaseRequiredRadio,!status); - gtk_widget_set_sensitive(window->PackageTrustedOnlyRadio,!status); - gtk_widget_set_sensitive(window->DatabaseTrustedOnlyRadio,!status); - gtk_widget_set_sensitive(window->PackageTrustAllRadio,!status); - gtk_widget_set_sensitive(window->DatabaseTrustAllRadio,!status); + gtk_widget_set_sensitive(window->SignTree,!status); + +} + +void on_repo_source_changed(GtkComboBox *self, repo_add_window *window){ + int active = gtk_combo_box_get_active(self); + if (active ==0 || active == 4){ + gtk_widget_set_sensitive(window->RepoSourceButton,1); + } else { + gtk_widget_set_sensitive(window->RepoSourceButton,0); + } } repo_add_window *yon_repo_add_window_new(){ @@ -1474,21 +1576,10 @@ repo_add_window *yon_repo_add_window_new(){ window->SourceListBox = yon_gtk_builder_get_widget(builder,"SourceListBox"); window->RepoSourceAddButton = yon_gtk_builder_get_widget(builder,"RepoSourceAddButton"); window->SignDefaultCheck = yon_gtk_builder_get_widget(builder,"SignDefaultCheck"); - window->NeverRadio = yon_gtk_builder_get_widget(builder,"NeverRadio"); - window->OptionalRadio = yon_gtk_builder_get_widget(builder,"OptionalRadio"); - window->RequiredRadio = yon_gtk_builder_get_widget(builder,"RequiredRadio"); - window->TrustedOnlyRadio = yon_gtk_builder_get_widget(builder,"TrustedOnlyRadio"); - window->TrustAllRadio = yon_gtk_builder_get_widget(builder,"TrustAllRadio"); - window->PackageNeverRadio = yon_gtk_builder_get_widget(builder,"PackageNeverRadio"); - window->DatabaseNeverRadio = yon_gtk_builder_get_widget(builder,"DatabaseNeverRadio"); - window->PackageOptionalRadio = yon_gtk_builder_get_widget(builder,"PackageOptionalRadio"); - window->DatabaseOptionalRadio = yon_gtk_builder_get_widget(builder,"DatabaseOptionalRadio"); - window->PackageRequiredRadio = yon_gtk_builder_get_widget(builder,"PackageRequiredRadio"); - window->DatabaseRequiredRadio = yon_gtk_builder_get_widget(builder,"DatabaseRequiredRadio"); - window->PackageTrustedOnlyRadio = yon_gtk_builder_get_widget(builder,"PackageTrustedOnlyRadio"); - window->DatabaseTrustedOnlyRadio = yon_gtk_builder_get_widget(builder,"DatabaseTrustedOnlyRadio"); - window->PackageTrustAllRadio = yon_gtk_builder_get_widget(builder,"PackageTrustAllRadio"); - window->DatabaseTrustAllRadio = yon_gtk_builder_get_widget(builder,"DatabaseTrustAllRadio"); + window->SignTree = yon_gtk_builder_get_widget(builder,"SignTree"); + window->SignLevelCheckEntry = yon_gtk_builder_get_widget(builder,"SignLevelCheckEntry"); + window->SignCell = GTK_CELL_RENDERER(gtk_builder_get_object(builder,"SignCell")); + window->SignList = GTK_LIST_STORE(gtk_builder_get_object(builder,"liststore1")); window->sections = NULL; window->name=NULL; @@ -1499,11 +1590,13 @@ repo_add_window *yon_repo_add_window_new(){ g_signal_connect(G_OBJECT(window->UsageDefaultCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button_inversed),window->UsageEnableSearchCheck); g_signal_connect(G_OBJECT(window->UsageDefaultCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button_inversed),window->UsageEnableUpdateCheck); g_signal_connect(G_OBJECT(window->UsageDefaultCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button_inversed),window->UsageSysupgradeCheck); - + yon_gtk_entry_block_restricted_symbols(GTK_ENTRY(window->RepoNameEntry)); + yon_gtk_entry_block_restricted_symbols(GTK_ENTRY(window->RepoSourceEntry)); g_signal_connect(G_OBJECT(window->SignDefaultCheck),"toggled",G_CALLBACK(on_sign_check_toggled),window); + g_signal_connect(G_OBJECT(window->SignCell),"toggled",G_CALLBACK(on_sign_cell_toggled),window); + g_signal_connect(G_OBJECT(window->RepoSourceCombo),"changed",G_CALLBACK(on_repo_source_changed),window); // g_signal_connect(G_OBJECT(window->SourceListBox),"size-allocate",G_CALLBACK(on_scrolled_window_size_allocate),window); gtk_widget_show(window->Window); - gtk_label_set_text(GTK_LABEL(window->SignLevelLabel),SIGN_LEVEL_LABEL); return window; } @@ -1533,6 +1626,8 @@ web_publication_add_window *yon_web_publication_add_window_new(){ window->SelectionCellRenderer = GTK_CELL_RENDERER(gtk_builder_get_object(builder,"SelectionCellRenderer")); yon_gtk_entry_set_password_visibility_icon(GTK_ENTRY(window->UserPasswordEntry)); + yon_gtk_entry_block_restricted_symbols(GTK_ENTRY(window->PathEntry)); + yon_gtk_entry_block_restricted_symbols(GTK_ENTRY(window->UsernameEntry)); window->name=NULL; g_signal_connect(G_OBJECT(window->SelectionCellRenderer),"toggled",G_CALLBACK(on_cell_renderer_toggle_toggled),window->RepositoriesTree); g_signal_connect(G_OBJECT(window->PathButton),"clicked",G_CALLBACK(on_file_chooser_open),window->PathEntry); @@ -1540,8 +1635,10 @@ web_publication_add_window *yon_web_publication_add_window_new(){ g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL); g_signal_connect(G_OBJECT(window->PasswordButton),"clicked",G_CALLBACK(on_password_open),window); g_signal_connect(G_OBJECT(window->UsernameCheck),"toggled",G_CALLBACK(on_web_user_check),window); + g_signal_connect(G_OBJECT(window->PortCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button),window->PortEntry); g_signal_connect(G_OBJECT(window->UserPasswordCombo),"changed",G_CALLBACK(yon_gtk_widget_set_sensitive_from_combo_box_inversed),window->PasswordButton); g_signal_connect(G_OBJECT(window->UserPasswordCombo),"changed",G_CALLBACK(yon_gtk_widget_set_sensitive_from_combo_box_inversed),window->UserPasswordEntry); + g_signal_connect(G_OBJECT(window->PortEntry),"insert-text",G_CALLBACK(yon_on_text_insert_only_digits),NULL); gtk_widget_show(window->Window); return window; @@ -1575,20 +1672,30 @@ mirror_configure_window *yon_mirror_configure_window_new(){ window->UpdatesRequestDelaySpin = yon_gtk_builder_get_widget(builder,"UpdatesRequestDelaySpin"); g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL); - g_signal_connect(G_OBJECT(window->PortDefaultCheck),"clicked",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button_inversed),window->PortSpin); - g_signal_connect(G_OBJECT(window->CacheDefaultCheck),"clicked",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button_inversed),window->CacheEntry); - g_signal_connect(G_OBJECT(window->CacheDefaultCheck),"clicked",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button_inversed),window->CacheButton); - g_signal_connect(G_OBJECT(window->InactivityDurationDefaultCheck),"clicked",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button_inversed),window->InactivityDurationSpin); - g_signal_connect(G_OBJECT(window->CacheTimeoutDefaultCheck),"clicked",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button_inversed),window->CacheTimeoutSpin); - g_signal_connect(G_OBJECT(window->ProxyCheck),"clicked",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button),window->ProxyEntry); - g_signal_connect(G_OBJECT(window->AgentDefaultCheck),"clicked",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button_inversed),window->AgentEntry); - g_signal_connect(G_OBJECT(window->UpdatesDelayDefaultCheck),"clicked",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button_inversed),window->UpdatesDelaySpin); - g_signal_connect(G_OBJECT(window->UpdatesRequestDelayDefaultCheck),"clicked",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button_inversed),window->UpdatesRequestDelaySpin); + g_signal_connect(G_OBJECT(window->PortDefaultCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button_inversed),window->PortSpin); + g_signal_connect(G_OBJECT(window->CacheDefaultCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button_inversed),window->CacheEntry); + g_signal_connect(G_OBJECT(window->CacheDefaultCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button_inversed),window->CacheButton); + g_signal_connect(G_OBJECT(window->CacheButton),"clicked",G_CALLBACK(on_file_chooser_open),window->CacheEntry); + g_signal_connect(G_OBJECT(window->InactivityDurationDefaultCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button_inversed),window->InactivityDurationSpin); + g_signal_connect(G_OBJECT(window->CacheTimeoutDefaultCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button_inversed),window->CacheTimeoutSpin); + g_signal_connect(G_OBJECT(window->ProxyCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button),window->ProxyEntry); + g_signal_connect(G_OBJECT(window->AgentDefaultCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button_inversed),window->AgentEntry); + g_signal_connect(G_OBJECT(window->UpdatesDelayDefaultCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button_inversed),window->UpdatesDelaySpin); + g_signal_connect(G_OBJECT(window->UpdatesRequestDelayDefaultCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button_inversed),window->UpdatesRequestDelaySpin); gtk_widget_show(window->Window); return window; } +void on_mirror_type_changed(GtkComboBox *self, mirror_add_window *window){ + int active = gtk_combo_box_get_active(self); + if (active == 2){ + gtk_widget_set_sensitive(window->TypeButton,1); + } else { + gtk_widget_set_sensitive(window->TypeButton,0); + } +} + mirror_add_window *yon_mirror_add_window_new(){ GtkBuilder *builder = gtk_builder_new_from_resource(glade_mirror_add_path); mirror_add_window *window = malloc(sizeof(mirror_add_window)); @@ -1603,6 +1710,8 @@ mirror_add_window *yon_mirror_add_window_new(){ window->CancelButton = yon_gtk_builder_get_widget(builder,"CancelButton"); window->HeadLabel = yon_gtk_builder_get_widget(builder,"HeadLabel"); window->PathBox = yon_gtk_builder_get_widget(builder,"PathBox"); + yon_gtk_entry_block_restricted_symbols(GTK_ENTRY(window->NameEntry)); + yon_gtk_entry_block_restricted_symbols(GTK_ENTRY(window->TypeEntry)); window->sections = NULL; window->name=NULL; @@ -1610,6 +1719,7 @@ mirror_add_window *yon_mirror_add_window_new(){ g_signal_connect(G_OBJECT(window->TypeButton),"clicked",G_CALLBACK(on_file_chooser_open),window->TypeEntry); g_signal_connect(G_OBJECT(window->AddButton),"clicked",G_CALLBACK(on_mirror_path_add),window); g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL); + g_signal_connect(G_OBJECT(window->TypeCombo),"changed",G_CALLBACK(on_mirror_type_changed),window); gtk_widget_show(window->Window); return window; @@ -1733,7 +1843,61 @@ void yon_main_window_complete(main_window *widgets){ g_signal_connect(G_OBJECT(widgets->UpdateIntervalDefaultCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button_inversed),widgets->UpdateIntervalSpin); g_signal_connect(G_OBJECT(widgets->UpdateIntervalDefaultCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button_inversed),widgets->BootCheck); - + GList *list = gtk_tree_view_get_columns(GTK_TREE_VIEW(widgets->WebPublicationTree)); + for (unsigned int i=0;iMirrorTree)); + for (guint i=0;iPublicationTree)); + for (guint i=0;iWebPublicationTree)); + for (guint i=0;iRepositoriesTree)); + for (guint i=0;iUpdateRepoTree)); + for (guint i=0;iUpdateModeCombo),0); + gtk_combo_box_text_prepend_text(GTK_COMBO_BOX_TEXT(widgets->UpdateModeCombo),mode); + gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->UpdateModeCombo),0); + } + } + yon_interface_update(widgets); + g_signal_connect(G_OBJECT(widgets->BootCheck),"toggled",G_CALLBACK(on_toggle_button_toggled),widgets); g_signal_connect(G_OBJECT(widgets->UpdateIntervalSpin),"changed",G_CALLBACK(on_toggle_button_toggled),widgets); g_signal_connect(G_OBJECT(widgets->UpdateIntervalCombo),"changed",G_CALLBACK(on_toggle_button_toggled),widgets); @@ -1747,12 +1911,6 @@ void yon_main_window_complete(main_window *widgets){ g_signal_connect(G_OBJECT(widgets->RecieveDBFromNetCheck),"toggled",G_CALLBACK(on_toggle_button_toggled),widgets); g_signal_connect(G_OBJECT(widgets->MirrorPublicCheck),"toggled",G_CALLBACK(on_toggle_button_toggled),widgets); - GList *list = gtk_tree_view_get_columns(GTK_TREE_VIEW(widgets->WebPublicationTree)); - for (unsigned int i=0;iMirrorTree)); yon_gtk_tree_view_minimal_fixed_size_set_full(GTK_TREE_VIEW(widgets->UpdateRepoTree)); @@ -1761,8 +1919,6 @@ void yon_main_window_complete(main_window *widgets){ yon_gtk_tree_view_minimal_fixed_size_set_full(GTK_TREE_VIEW(widgets->WebPublicationTree)); } yon_root_button_setup((template_main_window*)widgets,main_config.launch_arguments,main_config.launch_size); - yon_load_proceed(YON_CONFIG_LOCAL); - yon_interface_update(widgets); yon_save_window_set_postsave_function(on_save_done,widgets); } diff --git a/source/ubl-settings-update.h b/source/ubl-settings-update.h index 9082b1d..e3e409f 100644 --- a/source/ubl-settings-update.h +++ b/source/ubl-settings-update.h @@ -41,11 +41,14 @@ #define LocaleName "ubl-settings-update" #define icon_path "com.ublinux.ubl-settings-update" -#define yon_config_get_custom_command(target) yon_char_unite("ubconfig --source ",target," get update REPOPUBLIC_NET REPOPUBLIC_WEB REPOSITORY[*] REPOPUBLIC_WEB REPOPUBLIC_WEB[*] REPOPUBLIC_CACHE REPOPUBLIC_CACHE[*] AUTOUPDATE AUTOUPDATE[mode] AUTOUPDATE[interval] AUTOUPDATE[repos] AUTOUPDATE[timestamp]",NULL) -#define config_get_local_command "ubconfig --source system get update REPOPUBLIC_NET REPOPUBLIC_WEB REPOSITORY[*] REPOPUBLIC_WEB REPOPUBLIC_WEB[*] REPOPUBLIC_CACHE REPOPUBLIC_CACHE[*] AUTOUPDATE AUTOUPDATE[mode] AUTOUPDATE[interval] AUTOUPDATE[repos] AUTOUPDATE[timestamp]" -#define config_get_global_command "ubconfig --source global get update REPOPUBLIC_NET REPOPUBLIC_WEB REPOSITORY[*] REPOPUBLIC_WEB REPOPUBLIC_WEB[*] REPOPUBLIC_CACHE REPOPUBLIC_CACHE[*] AUTOUPDATE AUTOUPDATE[mode] AUTOUPDATE[interval] AUTOUPDATE[repos] AUTOUPDATE[timestamp]" -#define config_get_default_command "ubconfig --source global get update AUTOUPDATE[repos]" -#define config_get_command_no_repos(config,target) yon_char_unite("ubconfig --source ",config," get update ",target,NULL) +#define sha256_encrypt_command(target) yon_char_unite("echo -n \"",target,"\" | sha256sum | cut -f 1 -d ' '",NULL) +#define sha512_encrypt_command(target) yon_char_unite("echo -n \"",target,"\" | sha512sum | cut -f 1 -d ' '",NULL) + +#define yon_config_get_custom_command(target) yon_char_unite("ubconfig --source ",target," get [update] REPOPUBLIC_NET REPOPUBLIC_WEB REPOSITORY REPOSITORY[*] REPOPUBLIC_WEB REPOPUBLIC_WEB[*] REPOPUBLIC_CACHE REPOPUBLIC_CACHE[*] AUTOUPDATE AUTOUPDATE[mode] AUTOUPDATE[interval] AUTOUPDATE[repos] AUTOUPDATE[timestamp]",NULL) +#define config_get_local_command "ubconfig --source system get [update] REPOPUBLIC_NET REPOPUBLIC_WEB REPOSITORY REPOSITORY[*] REPOPUBLIC_WEB REPOPUBLIC_WEB[*] REPOPUBLIC_CACHE REPOPUBLIC_CACHE[*] AUTOUPDATE AUTOUPDATE[mode] AUTOUPDATE[interval] AUTOUPDATE[repos] AUTOUPDATE[timestamp]",NULL +#define config_get_global_command "ubconfig --source global get [update] REPOPUBLIC_NET REPOPUBLIC_WEB REPOSITORY REPOSITORY[*] REPOPUBLIC_WEB REPOPUBLIC_WEB[*] REPOPUBLIC_CACHE REPOPUBLIC_CACHE[*] AUTOUPDATE AUTOUPDATE[mode] AUTOUPDATE[interval] AUTOUPDATE[repos] AUTOUPDATE[timestamp]",NULL +#define config_get_default_command "ubconfig --source default get [update] AUTOUPDATE[repos] AUTOUPDATE[interval] AUTOUPDATE[mode] AUTOUPDATE REPOSITORY REPOSITORY[*]",NULL +#define config_get_command_no_repos(config,target) yon_char_unite("ubconfig --source ",config," get update",target,NULL) #define config_get_global_only_parameters "" #define config_get_local_only_parameters "" @@ -69,6 +72,16 @@ #define REPOPUBLIC_CACHE_search "REPOPUBLIC_CACHE[" #define REPOPUBLIC_CACHE_full(target) yon_char_unite("REPOPUBLIC_CACHE[",target,"]",NULL) #define REPOPUBLIC_CACHE_full_command(target) yon_char_unite("ubconfig --source global get [update] REPOPUBLIC_CACHE[",target,"]",NULL) +#define REPOPUBLIC_CACHE_port "REPOPUBLIC_CACHE[port]" +#define REPOPUBLIC_CACHE_cache_dir "REPOPUBLIC_CACHE[cache_dir]" +#define REPOPUBLIC_CACHE_purge_files_after "REPOPUBLIC_CACHE[purge_files_after]" +#define REPOPUBLIC_CACHE_download_timeout "REPOPUBLIC_CACHE[download_timeout]" +#define REPOPUBLIC_CACHE_http_proxy "REPOPUBLIC_CACHE[http_proxy]" +#define REPOPUBLIC_CACHE_user_agent "REPOPUBLIC_CACHE[user_agent]" +#define REPOPUBLIC_CACHE_cron "REPOPUBLIC_CACHE[prefetch.cron]" +#define REPOPUBLIC_CACHE_ttl_unaccessed_in_days "REPOPUBLIC_CACHE[prefetch.ttl_unaccessed_in_days]" +#define REPOPUBLIC_CACHE_ttl_unupdated_in_days "REPOPUBLIC_CACHE[prefetch.ttl_unupdated_in_days]" + #define AUTOUPDATE "AUTOUPDATE" #define AUTOUPDATE_command "ubconfig --source global get [update] AUTOUPDATE" #define AUTOUPDATE_mode "AUTOUPDATE[mode]" @@ -80,6 +93,9 @@ #define AUTOUPDATE_timestamp "AUTOUPDATE[timestamp]" #define AUTOUPDATE_timestamp_command "ubconfig --source global get [update] AUTOUPDATE[timestamp]" + +extern template_app_info template_app_information; + typedef char* string; string version_application; @@ -169,21 +185,11 @@ typedef struct { GtkWidget *SignLevelLabel; GtkWidget *SignDefaultCheck; - GtkWidget *NeverRadio; - GtkWidget *OptionalRadio; - GtkWidget *RequiredRadio; - GtkWidget *TrustedOnlyRadio; - GtkWidget *TrustAllRadio; - GtkWidget *PackageNeverRadio; - GtkWidget *DatabaseNeverRadio; - GtkWidget *PackageOptionalRadio; - GtkWidget *DatabaseOptionalRadio; - GtkWidget *PackageRequiredRadio; - GtkWidget *DatabaseRequiredRadio; - GtkWidget *PackageTrustedOnlyRadio; - GtkWidget *DatabaseTrustedOnlyRadio; - GtkWidget *PackageTrustAllRadio; - GtkWidget *DatabaseTrustAllRadio; + GtkWidget *SignTree; + GtkWidget *SignLevelCheckEntry; + GtkCellRenderer *SignCell; + + GtkListStore *SignList; char *name; } repo_add_window; @@ -328,8 +334,14 @@ void on_password_open(GtkWidget *, web_publication_add_window *window); void on_scrolled_window_size_allocate(GtkWidget *, GdkRectangle *allocation, repo_add_window *window); +void on_sign_cell_toggled(GtkWidget *, char *path, repo_add_window *window); + void on_sign_check_toggled(GtkToggleButton *self, repo_add_window *window); +void on_password_encryption_changed(GtkComboBox *self, password_window *dialog); + +void on_mirror_type_changed(GtkComboBox *self, mirror_add_window *window); +void on_repo_source_changed(GtkComboBox *self, repo_add_window *window); password_window *yon_password_window_new(); repo_add_window *yon_repo_add_window_new(); web_publication_add_window *yon_web_publication_add_window_new(); diff --git a/source/ubl-strings.h b/source/ubl-strings.h index 8b70319..9a63636 100644 --- a/source/ubl-strings.h +++ b/source/ubl-strings.h @@ -13,7 +13,14 @@ #define ADD_WEB_LABEL _("Add repository for publication") #define EDIT_WEB_LABEL _("Edit repository for publication") - #define PASSWORD_MISMATCH_LABEL _("passwords do not match") + #define PASSWORD_MISMATCH_LABEL _("Passwords do not match") + #define PASSWORD_RESTRICTED_SYMBOL_LABEL _("Password contains restricted symbols") + #define ENTRY_RESTRICTED_SYMBOL_LABEL _("Entry contains restricted symbols") + + + #define MODSYS_UPDATE_MODE_LABEL _("First update all modules and then the system") + #define MODULES_UPDATE_MODE_LABEL _("Update only modules") + #define SYSTEM_UPDATE_MODE_LABEL _("Update everything in the order of the specified repositories") #define REPO_TOOLTIP_LABEL _("file://\t\t- Directory URL prefix for repository\n\ ftp://\t\t- FTP URL prefix for repository\n\ @@ -23,22 +30,16 @@ Configuration - configuration path") #define MIRROR_TOOLTIP_LABEL _("url - web-link for repository. It is allowed to write multiple, separating with comma (,)\n\ http_proxy - proxy-server for repository, replaces 'http_proxy'. Single parameter per repository\n\ mirrorlist - mirrors file, make sure server URL is NOT included in this file! Single parameter per repository") -#define SIGN_LEVEL_LABEL _("• Never - Signature verification will not be performed\n\ -• Optional - Signatures will be verified if present, but unsigned databases and packages will also be accepted\n\ -• Required - Signatures will be required for all packages and databases\n\ -• TrustedOnly - If signature is verified for packages and database, it must be in the keyring and fully trusted; marginal trust not applicable\n\ -• TrustAll - If signature is verified, it must be in keyring, but does not need to have a trust level assigned (e.g. unknown or marginal trust)\n\ -• PackageNever - Packages only\n\ -• DatabaseNever - Database only\n\ -• PackageOptional - Packages only\n\ -• DatabaseOptional - Database only\n\ -• PackageRequired - Packages only\n\ -• DatabaseRequired - Database only\n\ -• PackageTrustedOnly - If signature is verified only for packages\n\ -• DatabaseTrustedOnly - If signature is verified only for database\n\ -• PackageTrustAll - If signature is verified only for packages\n\ -• DatabaseTrustAll - If signature is verified only for database\n") /* +#define _LABEL _("Signature verification will not be performed") +#define _LABEL _("Signatures will be verified if present, but unsigned databases and packages will also be accepted") +#define _LABEL _("Signatures will be required for all packages and databases") +#define _LABEL _("If signature is verified for packages and database, it must be in the keyring and fully trusted; marginal trust not applicable") +#define _LABEL _("If signature is verified, it must be in keyring, but does not need to have a trust level assigned (e.g. unknown or marginal trust)") +#define _LABEL _("Packages only") +#define _LABEL _("Database only") +#define _LABEL _("If signature is verified only for packages") +#define _LABEL _("If signature is verified only for database") #define _LABEL _("every") #define _LABEL _("Resource link of file path") #define _LABEL _("Open file explorer") @@ -48,6 +49,7 @@ mirrorlist - mirrors file, make sure server URL is NOT included in this file! Si #define _LABEL _("Storage path to publish") #define _LABEL _("The full URL of where to find the database, packages, and signatures (if available) for this repository. Multiple can be specified, separated by commas (,)") #define _LABEL _("Update") + #define _LABEL _("System update") #define _LABEL _("Repositories") #define _LABEL _("Publication") #define _LABEL _("WEB-publication") @@ -55,9 +57,6 @@ mirrorlist - mirrors file, make sure server URL is NOT included in this file! Si #define _LABEL _("Date of last automatic update:") #define _LABEL _("Date of last automatic update") #define _LABEL _("Automatic update") - #define _LABEL _("First update all modules and then the system") - #define _LABEL _("Update only modules") - #define _LABEL _("Update everything in the order of the specified repositories") #define _LABEL _("Update mode:") #define _LABEL _("Update interval:") @@ -152,12 +151,16 @@ mirrorlist - mirrors file, make sure server URL is NOT included in this file! Si #define _LABEL _("Days") #define _LABEL _("Months") #define _LABEL _("Sign level") + #define _LABEL _("Description") #define _LABEL _("Password input") #define _LABEL _("Password:") #define _LABEL _("Repeat password:") #define _LABEL _("Entryption:") #define _LABEL _("Do not encrypt password") #define _LABEL _("Password hash:") + #define _LABEL _("Default (None)") + #define _LABEL _("Encryption:") + #define _LABEL _("Encryption") */ #endif \ No newline at end of file diff --git a/ubl-settings-update-mirror-add.glade b/ubl-settings-update-mirror-add.glade index 46f836b..77ac8ea 100644 --- a/ubl-settings-update-mirror-add.glade +++ b/ubl-settings-update-mirror-add.glade @@ -17,7 +17,9 @@ 500 False True - com.ublinux.ubl-settings-repomanager + 800 + 600 + com.ublinux.ubl-settings-update True @@ -40,6 +42,7 @@ + 800 True False 5 @@ -171,6 +174,7 @@ mirrorlist - mirrors file, make sure server URL is NOT included in this file! Si 28 28 True + False True True Open file explorer @@ -236,6 +240,7 @@ mirrorlist - mirrors file, make sure server URL is NOT included in this file! Si True False vertical + 5 @@ -251,6 +256,7 @@ mirrorlist - mirrors file, make sure server URL is NOT included in this file! Si True False vertical + 5 @@ -324,7 +330,7 @@ mirrorlist - mirrors file, make sure server URL is NOT included in this file! Si True False 32 - com.ublinux.ubl-settings-repomanager + com.ublinux.ubl-settings-update diff --git a/ubl-settings-update-mirror-configure.glade b/ubl-settings-update-mirror-configure.glade index 8a1d477..8ed890f 100644 --- a/ubl-settings-update-mirror-configure.glade +++ b/ubl-settings-update-mirror-configure.glade @@ -35,10 +35,12 @@ com.ublinux.libublsettingsui-gtk3.zoom-symbolic - 500 + 800 False True - com.ublinux.ubl-settings-repomanager + 800 + 600 + com.ublinux.ubl-settings-update True @@ -110,7 +112,7 @@ adjustment1 - False + True True 2 @@ -235,7 +237,7 @@ adjustment2 - False + True True 2 @@ -288,7 +290,7 @@ adjustment3 - False + True True 2 @@ -467,7 +469,7 @@ adjustment4 - False + True True 2 @@ -520,7 +522,7 @@ adjustment5 - False + True True 2 @@ -560,7 +562,7 @@ True False 32 - com.ublinux.ubl-settings-repomanager + com.ublinux.ubl-settings-update diff --git a/ubl-settings-update-mirror-path-add.glade b/ubl-settings-update-mirror-path-add.glade index 167bd1a..e121a6a 100644 --- a/ubl-settings-update-mirror-path-add.glade +++ b/ubl-settings-update-mirror-path-add.glade @@ -27,8 +27,7 @@ Remove image2 @@ -81,8 +80,7 @@ Edit image1 diff --git a/ubl-settings-update-password.glade b/ubl-settings-update-password.glade index 79105de..aceb9ba 100644 --- a/ubl-settings-update-password.glade +++ b/ubl-settings-update-password.glade @@ -18,7 +18,7 @@ False True 450 - com.ublinux.ubl-settings-usergroups + com.ublinux.ubl-settings-update True @@ -173,7 +173,7 @@ Encryption 0 - Default + Default (None) SHA-512 SHA-256 @@ -212,6 +212,7 @@ Do not encrypt password True + False True False True diff --git a/ubl-settings-update-repo-add.glade b/ubl-settings-update-repo-add.glade index caa9db1..50f3c2b 100644 --- a/ubl-settings-update-repo-add.glade +++ b/ubl-settings-update-repo-add.glade @@ -13,12 +13,99 @@ False com.ublinux.libublsettingsui-gtk3.increase-symbolic + + + + + + + + + + + + False + Never + Signature verification will not be performed + + + False + Optional + Signatures will be verified if present, but unsigned databases and packages will also be accepted + + + True + Required + Signatures will be required for all packages and databases + + + False + TrustedOnly + If signature is verified for packages and database, it must be in the keyring and fully trusted; marginal trust not applicable + + + False + TrustAll + If signature is verified, it must be in keyring, but does not need to have a trust level assigned (e.g. unknown or marginal trust) + + + False + PackageNever + Packages only + + + False + DatabaseNever + Database only + + + False + PackageOptional + Packages only + + + True + DatabaseOptional + Database only + + + False + PackageRequired + Packages only + + + False + DatabaseRequired + Database only + + + False + PackageTrustedOnly + If signature is verified only for packages + + + False + DatabaseTrustedOnly + If signature is verified only for database + + + False + PackageTrustAll + If signature is verified only for packages + + + False + DatabaseTrustAll + If signature is verified only for database + + + - 500 - 300 + 800 False True - com.ublinux.ubl-settings-repomanager + 600 + com.ublinux.ubl-settings-update True @@ -77,7 +164,6 @@ True False - 3 5 @@ -121,10 +207,6 @@ True False - 5 - 5 - 5 - 5 True @@ -135,7 +217,6 @@ True False - 3 5 @@ -232,7 +313,6 @@ Configuration - configuration path - True False 5 @@ -304,559 +384,119 @@ Configuration - configuration path True False + vertical 5 - + + Default True - False - vertical - 5 + True + False + True + True + + + False + True + 0 + + + + + True + True + 3 + 3 + in + 200 - - Default + True + False True - False - True - True - - - False - True - 0 - - - - - True - False - 5 - - - Never - True - False - True - False - Signature verification will not be performed - True - True - RequiredRadio - - - False - True - 0 - - - - - PackageNever - True - False - True - False - For packages only - True - True - DatabaseOptionalRadio - - - False - True - 1 - - - - - False - True - 1 - - - - - True - False - 5 - - - Optional - True - False - True - False - Signatures will be checked if present, but unsigned databases and packages will also be accepted - True - True - RequiredRadio - - - False - True - 0 - + liststore1 + 0 + both + + - - DatabaseNever - True - False - True - False - For database only - True - True - DatabaseOptionalRadio - - - False - True - 1 - - - - - False - True - 2 - - - - - True - False - 5 - - - Required - True - False - True - False - Signatures will be required for all packages and databases - True - True - - - False - True - 0 - - - - - PackageOptional - True - False - True - False - For packages only - True - True - DatabaseOptionalRadio - - - False - True - 1 - - - - - False - True - 3 - - - - - True - False - 5 - - - TrustedOnly - True - False - True - False - Signatures will be required for all packages and databases - True - True - RequiredRadio - - - False - True - 0 - - - - - DatabaseOptional - True - False - True - False - For database only - True - True - - - False - True - 1 - - - - - False - True - 4 - - - - - True - False - 5 - - - TrustAll - True - False - True - False - If the signature is verified for packages and the database, it must be in the keyring and be fully trusted - True - True - RequiredRadio - - - False - True - 0 - - - - - PackageRequired - True - False - True - False - For packages only - True - True - DatabaseOptionalRadio - - - False - True - 1 - - - - - False - True - 5 - - - - - True - False - 5 - - - True - False + - + + + 0 + - - False - True - 0 - - - DatabaseRequired - True - False - True - False - For database only - True - True - DatabaseOptionalRadio - - - False - True - 1 - - - - - False - True - 6 - - - - - True - False - 5 - - - True - False + + Sign level - + + + 1 + - - False - True - 0 - - - - - PackageTrustedOnly - True - False - True - False - For packages only - True - True - DatabaseOptionalRadio - - - False - True - 1 - - - - False - True - 7 - - - - - True - False - 5 - - True - False + + Description - + + 350 + + + 2 + - - False - True - 0 - - - - - DatabaseTrustedOnly - True - False - True - False - For database only - True - True - DatabaseOptionalRadio - - - False - True - 1 - - - False - True - 8 - + + + True + True + 1 + + + + + True + False + 5 - + True False - 5 - - - True - False - - - - - - False - True - 0 - - - - - PackageTrustAll - True - False - True - False - If the signature is verified only for packets - True - True - DatabaseOptionalRadio - - - False - True - 1 - - + Sign level: False True - 9 + 0 - + True False - 5 - - - True - False - - - - - - False - True - 0 - - - - - DatabaseTrustAll - True - False - True - False - If the signature is verified only for the database - True - True - DatabaseOptionalRadio - - - False - True - 1 - - + Required,DatabaseOptional - False + True True - 10 + 1 False True - 0 - - - - - True - False - 0 - in - - - True - False - 5 - 5 - 5 - 5 - - - True - True - never - - - True - False - - - True - False - 5 - 5 - - Never - Signature verification will not be performed. Primary -\t- PackageNever - Packages only. Secondary -\t- DatabaseNever - Database only. Secondary -- Optional - Signatures will be verified if present, but unsigned databases and packages will also be accepted. Primary -\t- PackageOptional - Packages only. Secondary -\t- DatabaseOptional - Database only. -- Required - Signatures will be required for all packages and databases. Primary -\t- PackageRequired - Packages only. Secondary -\t- DatabaseRequired - Database only. Secondary -- TrustedOnly - If signature is verified for packages and database, it must be in the keyring and fully trusted; marginal trust not applicable -\t- PackageTrustedOnly - If signature is verified only for packages -\t- DatabaseTrustedOnly - If signature is verified only for database -- TrustAll - If signature is verified, it must be in keyring, but does not need to have a trust level assigned (e.g. unknown or marginal trust) -\t- PackageTrustAll - If signature is verified only for packages -\t- DatabaseTrustAll - If signature is verified only for database - True - 0 - 0 - - - - - - - - - - - - - - - - - True - True - 1 + 2 @@ -872,7 +512,7 @@ Configuration - configuration path - False + True True 3 @@ -901,6 +541,7 @@ Configuration - configuration path True True False + True True @@ -920,6 +561,7 @@ Configuration - configuration path True + False True False True @@ -942,6 +584,7 @@ Configuration - configuration path True + False True False True @@ -964,6 +607,7 @@ Configuration - configuration path True + False True False True @@ -989,6 +633,7 @@ Configuration - configuration path True + False True False True @@ -1024,7 +669,7 @@ Configuration - configuration path - True + False True 5 @@ -1061,7 +706,7 @@ Configuration - configuration path True False 32 - com.ublinux.ubl-settings-repomanager + com.ublinux.ubl-settings-update @@ -1096,18 +741,4 @@ Configuration - configuration path - - - - - - - - - - - - - - diff --git a/ubl-settings-update-repo-path-add.glade b/ubl-settings-update-repo-path-add.glade index 04856c9..07ad7ba 100644 --- a/ubl-settings-update-repo-path-add.glade +++ b/ubl-settings-update-repo-path-add.glade @@ -27,8 +27,7 @@ Remove image2 @@ -83,8 +82,7 @@ Edit image1 diff --git a/ubl-settings-update-web-publication-add.glade b/ubl-settings-update-web-publication-add.glade index 6f0966e..4729aae 100644 --- a/ubl-settings-update-web-publication-add.glade +++ b/ubl-settings-update-web-publication-add.glade @@ -3,6 +3,11 @@ + + 65535 + 1 + 10 + True False @@ -22,10 +27,12 @@ - 500 + 800 False True - com.ublinux.ubl-settings-repomanager + 800 + 600 + com.ublinux.ubl-settings-update True @@ -62,6 +69,7 @@ True True False + 3 True @@ -74,7 +82,6 @@ True False - 3 5 @@ -130,7 +137,6 @@ True True - 3 in @@ -177,7 +183,6 @@ True False - 3 5 @@ -208,14 +213,15 @@ - + True + False True - Port - 8080 + adjustment1 + 8080 - True + False True 2 @@ -374,7 +380,7 @@ True False - True + False User password False * @@ -459,7 +465,7 @@ True False 32 - com.ublinux.ubl-settings-repomanager + com.ublinux.ubl-settings-update diff --git a/ubl-settings-update.glade b/ubl-settings-update.glade index 476d005..5c4160d 100644 --- a/ubl-settings-update.glade +++ b/ubl-settings-update.glade @@ -83,6 +83,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + + @@ -608,6 +610,17 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 0 + + + True + False + + + False + True + 1 + + 26 @@ -641,7 +654,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. False True - 1 + 2 @@ -676,7 +689,18 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. False True - 2 + 3 + + + + + True + False + + + False + True + 4 @@ -695,7 +719,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. False True - 3 + 5 @@ -715,7 +739,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. False True - 4 + 6 @@ -735,7 +759,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. False True - 5 + 7 @@ -1115,6 +1139,17 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 0 + + + True + False + + + False + True + 1 + + 26 @@ -1131,7 +1166,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. False True - 1 + 2 @@ -1151,7 +1186,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. False True - 2 + 3 @@ -1171,7 +1206,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. False True - 3 + 4 @@ -1438,6 +1473,17 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 0 + + + True + False + + + False + True + 1 + + 26 @@ -1454,7 +1500,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. False True - 1 + 2 @@ -1474,7 +1520,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. False True - 2 + 3 @@ -1494,7 +1540,18 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. False True - 3 + 4 + + + + + True + False + + + False + True + 5 @@ -1513,7 +1570,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. False True - 4 + 6 diff --git a/ubl-settings-update.pot b/ubl-settings-update.pot index 3a5dd3f..f1173df 100644 --- a/ubl-settings-update.pot +++ b/ubl-settings-update.pot @@ -17,7 +17,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: source/ubl-strings.h:4 +#: source/ubl-strings.h:4 source/ubl-strings.h:45 msgid "System update" msgstr "" @@ -58,7 +58,15 @@ msgid "Edit repository for publication" msgstr "" #: source/ubl-strings.h:16 -msgid "passwords do not match" +msgid "Passwords do not match" +msgstr "" + +#: source/ubl-strings.h:17 +msgid "Password contains restricted symbols" +msgstr "" + +#: source/ubl-strings.h:17 +msgid "Entry contains restricted symbols" msgstr "" #: source/ubl-strings.h:18 @@ -80,477 +88,513 @@ msgid "" "file! Single parameter per repository" msgstr "" -#: source/ubl-strings.h:26 +#: source/ubl-strings.h:27 +msgid "Signature verification will not be performed" +msgstr "" + +#: source/ubl-strings.h:28 msgid "" -"• Never - Signature verification will not be performed\n" -"• Optional - Signatures will be verified if present, but unsigned databases " -"and packages will also be accepted\n" -"• Required - Signatures will be required for all packages and databases\n" -"• TrustedOnly - If signature is verified for packages and database, it must " -"be in the keyring and fully trusted; marginal trust not applicable\n" -"• TrustAll - If signature is verified, it must be in keyring, but does not " -"need to have a trust level assigned (e.g. unknown or marginal trust)\n" -"• PackageNever - Packages only\n" -"• DatabaseNever - Database only\n" -"• PackageOptional - Packages only\n" -"• DatabaseOptional - Database only\n" -"• PackageRequired - Packages only\n" -"• DatabaseRequired - Database only\n" -"• PackageTrustedOnly - If signature is verified only for packages\n" -"• DatabaseTrustedOnly - If signature is verified only for database\n" -"• PackageTrustAll - If signature is verified only for packages\n" -"• DatabaseTrustAll - If signature is verified only for database\n" +"Signatures will be verified if present, but unsigned databases and packages " +"will also be accepted" msgstr "" -#: source/ubl-strings.h:42 +#: source/ubl-strings.h:29 +msgid "Signatures will be required for all packages and databases" +msgstr "" + +#: source/ubl-strings.h:30 +msgid "" +"If signature is verified for packages and database, it must be in the " +"keyring and fully trusted; marginal trust not applicable" +msgstr "" + +#: source/ubl-strings.h:31 +msgid "" +"If signature is verified, it must be in keyring, but does not need to have a " +"trust level assigned (e.g. unknown or marginal trust)" +msgstr "" + +#: source/ubl-strings.h:32 +msgid "Packages only" +msgstr "" + +#: source/ubl-strings.h:33 +msgid "Database only" +msgstr "" + +#: source/ubl-strings.h:34 +msgid "If signature is verified only for packages" +msgstr "" + +#: source/ubl-strings.h:35 +msgid "If signature is verified only for database" +msgstr "" + +#: source/ubl-strings.h:36 msgid "every" msgstr "" -#: source/ubl-strings.h:43 +#: source/ubl-strings.h:37 msgid "Resource link of file path" msgstr "" -#: source/ubl-strings.h:44 +#: source/ubl-strings.h:38 msgid "Open file explorer" msgstr "" -#: source/ubl-strings.h:45 +#: source/ubl-strings.h:39 msgid "Add source" msgstr "" -#: source/ubl-strings.h:46 +#: source/ubl-strings.h:40 msgid "Username" msgstr "" -#: source/ubl-strings.h:47 +#: source/ubl-strings.h:41 msgid "User password" msgstr "" -#: source/ubl-strings.h:48 +#: source/ubl-strings.h:42 msgid "Storage path to publish" msgstr "" -#: source/ubl-strings.h:49 +#: source/ubl-strings.h:43 msgid "" "The full URL of where to find the database, packages, and signatures (if " "available) for this repository. Multiple can be specified, separated by " "commas (,)" msgstr "" -#: source/ubl-strings.h:50 source/ubl-strings.h:80 +#: source/ubl-strings.h:44 source/ubl-strings.h:75 msgid "Update" msgstr "" -#: source/ubl-strings.h:51 +#: source/ubl-strings.h:46 msgid "Repositories" msgstr "" -#: source/ubl-strings.h:52 +#: source/ubl-strings.h:47 msgid "Publication" msgstr "" -#: source/ubl-strings.h:53 +#: source/ubl-strings.h:48 msgid "WEB-publication" msgstr "" -#: source/ubl-strings.h:54 +#: source/ubl-strings.h:49 msgid "Mirror publication" msgstr "" -#: source/ubl-strings.h:55 +#: source/ubl-strings.h:50 msgid "Date of last automatic update:" msgstr "" -#: source/ubl-strings.h:56 +#: source/ubl-strings.h:51 msgid "Date of last automatic update" msgstr "" -#: source/ubl-strings.h:57 +#: source/ubl-strings.h:52 msgid "Automatic update" msgstr "" -#: source/ubl-strings.h:58 +#: source/ubl-strings.h:53 msgid "First update all modules and then the system" msgstr "" -#: source/ubl-strings.h:59 +#: source/ubl-strings.h:54 msgid "Update only modules" msgstr "" -#: source/ubl-strings.h:60 +#: source/ubl-strings.h:55 msgid "Update everything in the order of the specified repositories" msgstr "" -#: source/ubl-strings.h:61 +#: source/ubl-strings.h:56 msgid "Update mode:" msgstr "" -#: source/ubl-strings.h:62 +#: source/ubl-strings.h:57 msgid "Update interval:" msgstr "" -#: source/ubl-strings.h:64 +#: source/ubl-strings.h:59 msgid "Update mode" msgstr "" -#: source/ubl-strings.h:65 +#: source/ubl-strings.h:60 msgid "Update interval" msgstr "" -#: source/ubl-strings.h:66 +#: source/ubl-strings.h:61 msgid "Boot" msgstr "" -#: source/ubl-strings.h:67 source/ubl-strings.h:150 +#: source/ubl-strings.h:62 source/ubl-strings.h:145 msgid "Minutes" msgstr "" -#: source/ubl-strings.h:68 source/ubl-strings.h:151 +#: source/ubl-strings.h:63 source/ubl-strings.h:146 msgid "Hours" msgstr "" -#: source/ubl-strings.h:69 source/ubl-strings.h:152 +#: source/ubl-strings.h:64 source/ubl-strings.h:147 msgid "Days" msgstr "" -#: source/ubl-strings.h:70 source/ubl-strings.h:153 +#: source/ubl-strings.h:65 source/ubl-strings.h:148 msgid "Months" msgstr "" -#: source/ubl-strings.h:71 +#: source/ubl-strings.h:66 msgid "Repositories from which the update will occur" msgstr "" -#: source/ubl-strings.h:72 source/ubl-strings.h:95 +#: source/ubl-strings.h:67 source/ubl-strings.h:90 msgid "Repositories list:" msgstr "" -#: source/ubl-strings.h:73 +#: source/ubl-strings.h:68 msgid "Repositories list" msgstr "" -#: source/ubl-strings.h:74 +#: source/ubl-strings.h:69 msgid "Default" msgstr "" -#: source/ubl-strings.h:75 source/ubl-strings.h:97 +#: source/ubl-strings.h:70 source/ubl-strings.h:92 msgid "Choose" msgstr "" -#: source/ubl-strings.h:76 +#: source/ubl-strings.h:71 msgid "Chosen" msgstr "" -#: source/ubl-strings.h:77 +#: source/ubl-strings.h:72 msgid "Repository" msgstr "" -#: source/ubl-strings.h:78 +#: source/ubl-strings.h:73 msgid "Manage repository list" msgstr "" -#: source/ubl-strings.h:79 +#: source/ubl-strings.h:74 msgid "Disable system repositories" msgstr "" -#: source/ubl-strings.h:81 +#: source/ubl-strings.h:76 msgid "Move up" msgstr "" -#: source/ubl-strings.h:82 +#: source/ubl-strings.h:77 msgid "Move down" msgstr "" -#: source/ubl-strings.h:83 +#: source/ubl-strings.h:78 msgid "Add" msgstr "" -#: source/ubl-strings.h:84 +#: source/ubl-strings.h:79 msgid "Edit" msgstr "" -#: source/ubl-strings.h:85 +#: source/ubl-strings.h:80 msgid "Remove" msgstr "" -#: source/ubl-strings.h:86 +#: source/ubl-strings.h:81 msgid "Enabled" msgstr "" -#: source/ubl-strings.h:87 +#: source/ubl-strings.h:82 msgid "Source" msgstr "" -#: source/ubl-strings.h:88 +#: source/ubl-strings.h:83 msgid "Signature level" msgstr "" -#: source/ubl-strings.h:89 +#: source/ubl-strings.h:84 msgid "Usage level" msgstr "" -#: source/ubl-strings.h:90 +#: source/ubl-strings.h:85 msgid "Repository connection configuration" msgstr "" -#: source/ubl-strings.h:91 +#: source/ubl-strings.h:86 msgid "" "Setting up a connection to a distributed repository network and publishing " "your repositories" msgstr "" -#: source/ubl-strings.h:92 +#: source/ubl-strings.h:87 msgid "Connect and publish" msgstr "" -#: source/ubl-strings.h:93 +#: source/ubl-strings.h:88 msgid "Recieve DB packages from shared network" msgstr "" -#: source/ubl-strings.h:94 +#: source/ubl-strings.h:89 msgid "Repositories for publishing" msgstr "" -#: source/ubl-strings.h:96 +#: source/ubl-strings.h:91 msgid "All repositories" msgstr "" -#: source/ubl-strings.h:98 +#: source/ubl-strings.h:93 msgid "Accept" msgstr "" -#: source/ubl-strings.h:99 +#: source/ubl-strings.h:94 msgid "Repository name" msgstr "" -#: source/ubl-strings.h:100 +#: source/ubl-strings.h:95 msgid "" "Setting up publication of storage and/or repositories as a local WEB resource" msgstr "" -#: source/ubl-strings.h:101 source/ubl-strings.h:142 +#: source/ubl-strings.h:96 source/ubl-strings.h:137 msgid "Authorization parameters" msgstr "" -#: source/ubl-strings.h:102 +#: source/ubl-strings.h:97 msgid "Storage" msgstr "" -#: source/ubl-strings.h:103 +#: source/ubl-strings.h:98 msgid "Chosen repositories" msgstr "" -#: source/ubl-strings.h:104 +#: source/ubl-strings.h:99 msgid "Reviewer" msgstr "" -#: source/ubl-strings.h:105 +#: source/ubl-strings.h:100 msgid "Port" msgstr "" -#: source/ubl-strings.h:106 +#: source/ubl-strings.h:101 msgid "Name" msgstr "" -#: source/ubl-strings.h:107 +#: source/ubl-strings.h:102 msgid "Password/Hash type" msgstr "" -#: source/ubl-strings.h:108 +#: source/ubl-strings.h:103 msgid "Password/Password hash" msgstr "" -#: source/ubl-strings.h:109 +#: source/ubl-strings.h:104 msgid "" "Setting up publication of a lazy mirror of connected repositories as a local " "WEB resource" msgstr "" -#: source/ubl-strings.h:110 +#: source/ubl-strings.h:105 msgid "Publish lazy mirror" msgstr "" -#: source/ubl-strings.h:111 +#: source/ubl-strings.h:106 msgid "Type" msgstr "" -#: source/ubl-strings.h:112 +#: source/ubl-strings.h:107 msgid "Resource URL" msgstr "" -#: source/ubl-strings.h:113 +#: source/ubl-strings.h:108 msgid "Configure" msgstr "" -#: source/ubl-strings.h:114 +#: source/ubl-strings.h:109 msgid "Mirror publish configuration" msgstr "" -#: source/ubl-strings.h:115 +#: source/ubl-strings.h:110 msgid "Service port:" msgstr "" -#: source/ubl-strings.h:116 +#: source/ubl-strings.h:111 msgid "Cache directory:" msgstr "" -#: source/ubl-strings.h:117 +#: source/ubl-strings.h:112 msgid "Duration of inactivity (in seconds):" msgstr "" -#: source/ubl-strings.h:118 +#: source/ubl-strings.h:113 msgid "Timeout (in seconds) for loading internel cache:" msgstr "" -#: source/ubl-strings.h:119 +#: source/ubl-strings.h:114 msgid "Work through proxy:" msgstr "" -#: source/ubl-strings.h:120 +#: source/ubl-strings.h:115 msgid "User agent:" msgstr "" -#: source/ubl-strings.h:121 +#: source/ubl-strings.h:116 msgid "Standard expression for cron:" msgstr "" -#: source/ubl-strings.h:122 +#: source/ubl-strings.h:117 msgid "" "The number of consecutie days that systems on the network have not been " "updated:" msgstr "" -#: source/ubl-strings.h:123 +#: source/ubl-strings.h:118 msgid "The number of consecutive days wthout an update requested:" msgstr "" -#: source/ubl-strings.h:124 +#: source/ubl-strings.h:119 msgid "Add mirror" msgstr "" -#: source/ubl-strings.h:125 +#: source/ubl-strings.h:120 msgid "Repository name:" msgstr "" -#: source/ubl-strings.h:126 +#: source/ubl-strings.h:121 msgid "Repository type:" msgstr "" -#: source/ubl-strings.h:127 +#: source/ubl-strings.h:122 msgid "WEB link" msgstr "" -#: source/ubl-strings.h:128 +#: source/ubl-strings.h:123 msgid "Proxy server" msgstr "" -#: source/ubl-strings.h:129 +#: source/ubl-strings.h:124 msgid "Mirrors file" msgstr "" -#: source/ubl-strings.h:130 +#: source/ubl-strings.h:125 msgid "Source:" msgstr "" -#: source/ubl-strings.h:131 +#: source/ubl-strings.h:126 msgid "Configuration" msgstr "" -#: source/ubl-strings.h:132 +#: source/ubl-strings.h:127 msgid "Sign level:" msgstr "" -#: source/ubl-strings.h:133 +#: source/ubl-strings.h:128 msgid "Enable repository update" msgstr "" -#: source/ubl-strings.h:134 +#: source/ubl-strings.h:129 msgid "Enable repository search" msgstr "" -#: source/ubl-strings.h:135 +#: source/ubl-strings.h:130 msgid "" "Enable installation of packages from this repository during --sync operation" msgstr "" -#: source/ubl-strings.h:136 +#: source/ubl-strings.h:131 msgid "" "Allow this repository to be a valid source of packages when running --" "sysupgrade" msgstr "" -#: source/ubl-strings.h:137 +#: source/ubl-strings.h:132 msgid "Enable publishing of local repository as WEB resource" msgstr "" -#: source/ubl-strings.h:138 +#: source/ubl-strings.h:133 msgid "Path to publication directory:" msgstr "" -#: source/ubl-strings.h:139 +#: source/ubl-strings.h:134 msgid "Port:" msgstr "" -#: source/ubl-strings.h:140 +#: source/ubl-strings.h:135 msgid "Publishing parameters" msgstr "" -#: source/ubl-strings.h:141 +#: source/ubl-strings.h:136 msgid "Enable WEB file browser" msgstr "" -#: source/ubl-strings.h:143 +#: source/ubl-strings.h:138 msgid "Set" msgstr "" -#: source/ubl-strings.h:144 +#: source/ubl-strings.h:139 msgid "Username:" msgstr "" -#: source/ubl-strings.h:145 +#: source/ubl-strings.h:140 msgid "User password:" msgstr "" -#: source/ubl-strings.h:146 +#: source/ubl-strings.h:141 msgid "Not encrypted" msgstr "" -#: source/ubl-strings.h:147 +#: source/ubl-strings.h:142 msgid "Encrypted with SHA256" msgstr "" -#: source/ubl-strings.h:148 +#: source/ubl-strings.h:143 msgid "Encrypted with SHA512" msgstr "" -#: source/ubl-strings.h:149 +#: source/ubl-strings.h:144 msgid "System" msgstr "" -#: source/ubl-strings.h:154 +#: source/ubl-strings.h:149 msgid "Sign level" msgstr "" -#: source/ubl-strings.h:155 +#: source/ubl-strings.h:150 +msgid "Description" +msgstr "" + +#: source/ubl-strings.h:151 msgid "Password input" msgstr "" -#: source/ubl-strings.h:156 +#: source/ubl-strings.h:152 msgid "Password:" msgstr "" -#: source/ubl-strings.h:157 +#: source/ubl-strings.h:153 msgid "Repeat password:" msgstr "" -#: source/ubl-strings.h:158 +#: source/ubl-strings.h:154 msgid "Entryption:" msgstr "" -#: source/ubl-strings.h:159 +#: source/ubl-strings.h:155 msgid "Do not encrypt password" msgstr "" -#: source/ubl-strings.h:160 +#: source/ubl-strings.h:156 msgid "Password hash:" msgstr "" + +#: source/ubl-strings.h:157 +msgid "Default (None)" +msgstr "" + +#: source/ubl-strings.h:158 +msgid "Encryption:" +msgstr "" + +#: source/ubl-strings.h:159 +msgid "Encryption" +msgstr "" diff --git a/ubl-settings-update_ru.po b/ubl-settings-update_ru.po index b061d71..51a670b 100644 --- a/ubl-settings-update_ru.po +++ b/ubl-settings-update_ru.po @@ -17,7 +17,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: source/ubl-strings.h:4 +#: source/ubl-strings.h:4 source/ubl-strings.h:45 msgid "System update" msgstr "Обновление системы" @@ -58,9 +58,17 @@ msgid "Edit repository for publication" msgstr "Редактирование репозитория для публикации" #: source/ubl-strings.h:16 -msgid "passwords do not match" +msgid "Passwords do not match" msgstr "Пароли не совпадают" +#: source/ubl-strings.h:17 +msgid "Password contains restricted symbols" +msgstr "Пароль содержит запрещённые символы" + +#: source/ubl-strings.h:17 +msgid "Entry contains restricted symbols" +msgstr "Поле содержит запрещённые символы" + #: source/ubl-strings.h:18 msgid "" "file://\t\t- Directory URL prefix for repository\n" @@ -90,78 +98,84 @@ msgstr "" "mirrorlist - файл зерка, убедитесь что URL текущего сервера НЕ включен в " "этот файл! Допускается только один параметр на репозиторий" -#: source/ubl-strings.h:26 -#, fuzzy +#: source/ubl-strings.h:27 +msgid "Signature verification will not be performed" +msgstr "Проверка подписи выполняться не будет" + +#: source/ubl-strings.h:28 msgid "" -"• Never - Signature verification will not be performed\n" -"• Optional - Signatures will be verified if present, but unsigned databases " -"and packages will also be accepted\n" -"• Required - Signatures will be required for all packages and databases\n" -"• TrustedOnly - If signature is verified for packages and database, it must " -"be in the keyring and fully trusted; marginal trust not applicable\n" -"• TrustAll - If signature is verified, it must be in keyring, but does not " -"need to have a trust level assigned (e.g. unknown or marginal trust)\n" -"• PackageNever - Packages only\n" -"• DatabaseNever - Database only\n" -"• PackageOptional - Packages only\n" -"• DatabaseOptional - Database only\n" -"• PackageRequired - Packages only\n" -"• DatabaseRequired - Database only\n" -"• PackageTrustedOnly - If signature is verified only for packages\n" -"• DatabaseTrustedOnly - If signature is verified only for database\n" -"• PackageTrustAll - If signature is verified only for packages\n" -"• DatabaseTrustAll - If signature is verified only for database\n" +"Signatures will be verified if present, but unsigned databases and packages " +"will also be accepted" msgstr "" -"• Never - Проверка подписи выполняться не будет\n" -"• Optional - Подписи будут проверяться при их наличии, но неподписанные " -"базы данных и пакеты также будут приниматься\n" -"• Required - Подписи будут необходимы для всех пакетов и баз данных.\n" -"• TrustedOnly - Если подпись проверяется для пакетов и базы, она должна " -"находиться в связке ключей и быть полностью доверенной; маргинальное доверие " -"не применимо\n" -"• TrustAll - Если подпись проверена, она должна находиться в связке ключей, " -"но ей не требуется назначать уровень доверия (например, неизвестное или " -"предельное доверие)\n" -"• PackageNever - Только для пакетов\n" -"• DatabaseNever - Только для базы данных\n" -"• PackageOptional - Только для пакетов\n" -"• DatabaseOptional - Только для базы данных\n" -"• PackageRequired - Только для пакетов\n" -"• DatabaseRequired - Только для базы данных\n" -"• PackageTrustedOnly - Если подпись проверяется только для пакетов\n" -"• DatabaseTrustedOnly - Если подпись проверяется только для базы данных\n" -"• PackageTrustAll - Если подпись проверена только для пакетов\n" -"• DatabaseTrustAll - Если подпись проверена только для базы данных\n" +"Подписи будут проверяться при их наличии, но неподписанные базы данных и " +"пакеты также будут приниматься" -#: source/ubl-strings.h:42 +#: source/ubl-strings.h:29 +msgid "Signatures will be required for all packages and databases" +msgstr "Подписи будут необходимы для всех пакетов и баз данных" + +#: source/ubl-strings.h:30 +msgid "" +"If signature is verified for packages and database, it must be in the " +"keyring and fully trusted; marginal trust not applicable" +msgstr "" +"Если подпись проверяется для пакетов и базы, она должна находиться в связке " +"ключей и быть полностью доверенной" + +#: source/ubl-strings.h:31 +msgid "" +"If signature is verified, it must be in keyring, but does not need to have a " +"trust level assigned (e.g. unknown or marginal trust)" +msgstr "" +"Если подпись проверена, она должна находиться в связке ключей, но ей не " +"требуется назначать уровень доверия (например, неизвестное или предельное " +"доверие)" + +#: source/ubl-strings.h:32 +msgid "Packages only" +msgstr "Только для пакетов" + +#: source/ubl-strings.h:33 +msgid "Database only" +msgstr "Только для базы данных" + +#: source/ubl-strings.h:34 +msgid "If signature is verified only for packages" +msgstr "Если подпись проверяется только для пакетов" + +#: source/ubl-strings.h:35 +msgid "If signature is verified only for database" +msgstr "Если подпись проверяется только для базы данных" + +#: source/ubl-strings.h:36 msgid "every" msgstr "каждые" -#: source/ubl-strings.h:43 +#: source/ubl-strings.h:37 msgid "Resource link of file path" msgstr "Ссылка на ресурс или путь до файла" -#: source/ubl-strings.h:44 +#: source/ubl-strings.h:38 msgid "Open file explorer" msgstr "Открыть в файловом менеджере" -#: source/ubl-strings.h:45 +#: source/ubl-strings.h:39 msgid "Add source" msgstr "Добавить источник" -#: source/ubl-strings.h:46 +#: source/ubl-strings.h:40 msgid "Username" msgstr "Имя пользователя" -#: source/ubl-strings.h:47 +#: source/ubl-strings.h:41 msgid "User password" msgstr "Пароль" -#: source/ubl-strings.h:48 +#: source/ubl-strings.h:42 msgid "Storage path to publish" msgstr "Путь до каталога хранилища, который будет опубликован" -#: source/ubl-strings.h:49 +#: source/ubl-strings.h:43 msgid "" "The full URL of where to find the database, packages, and signatures (if " "available) for this repository. Multiple can be specified, separated by " @@ -170,163 +184,163 @@ msgstr "" "Полный адрес места, где можно найти базу данных, пакеты и подписа (если " "доступны) для этого репозитория. Возможно указать несколько через запятую (,)" -#: source/ubl-strings.h:50 source/ubl-strings.h:80 +#: source/ubl-strings.h:44 source/ubl-strings.h:75 msgid "Update" -msgstr "Обновить" +msgstr "Обновление" -#: source/ubl-strings.h:51 +#: source/ubl-strings.h:46 msgid "Repositories" msgstr "Репозитории" -#: source/ubl-strings.h:52 +#: source/ubl-strings.h:47 msgid "Publication" msgstr "Публикация" -#: source/ubl-strings.h:53 +#: source/ubl-strings.h:48 msgid "WEB-publication" msgstr "WEB-публикация" -#: source/ubl-strings.h:54 +#: source/ubl-strings.h:49 msgid "Mirror publication" msgstr "Публикация зеркала" -#: source/ubl-strings.h:55 +#: source/ubl-strings.h:50 msgid "Date of last automatic update:" msgstr "Дата последнего автообновления:" -#: source/ubl-strings.h:56 +#: source/ubl-strings.h:51 msgid "Date of last automatic update" msgstr "Дата последнего автообновления" -#: source/ubl-strings.h:57 +#: source/ubl-strings.h:52 msgid "Automatic update" msgstr "Автоматическое обновление" -#: source/ubl-strings.h:58 +#: source/ubl-strings.h:53 msgid "First update all modules and then the system" msgstr "Вначале обновлять все модули и после систему" -#: source/ubl-strings.h:59 +#: source/ubl-strings.h:54 msgid "Update only modules" msgstr "Обновлять только модули" -#: source/ubl-strings.h:60 +#: source/ubl-strings.h:55 msgid "Update everything in the order of the specified repositories" msgstr "Обновлять всё в порядке указанных репозиториев" -#: source/ubl-strings.h:61 +#: source/ubl-strings.h:56 msgid "Update mode:" msgstr "Режим обновления:" -#: source/ubl-strings.h:62 +#: source/ubl-strings.h:57 msgid "Update interval:" msgstr "Интервал обновлений:" -#: source/ubl-strings.h:64 +#: source/ubl-strings.h:59 msgid "Update mode" msgstr "Режим обновления" -#: source/ubl-strings.h:65 +#: source/ubl-strings.h:60 msgid "Update interval" msgstr "Интервал обновлений" -#: source/ubl-strings.h:66 +#: source/ubl-strings.h:61 msgid "Boot" msgstr "Запуск" -#: source/ubl-strings.h:67 source/ubl-strings.h:150 +#: source/ubl-strings.h:62 source/ubl-strings.h:145 msgid "Minutes" msgstr "минут" -#: source/ubl-strings.h:68 source/ubl-strings.h:151 +#: source/ubl-strings.h:63 source/ubl-strings.h:146 msgid "Hours" msgstr "часов" -#: source/ubl-strings.h:69 source/ubl-strings.h:152 +#: source/ubl-strings.h:64 source/ubl-strings.h:147 msgid "Days" msgstr "дней" -#: source/ubl-strings.h:70 source/ubl-strings.h:153 +#: source/ubl-strings.h:65 source/ubl-strings.h:148 msgid "Months" msgstr "месяцев" -#: source/ubl-strings.h:71 +#: source/ubl-strings.h:66 msgid "Repositories from which the update will occur" msgstr "Репозитории с которых будет происходить обновление" -#: source/ubl-strings.h:72 source/ubl-strings.h:95 +#: source/ubl-strings.h:67 source/ubl-strings.h:90 msgid "Repositories list:" msgstr "Список репозиториев:" -#: source/ubl-strings.h:73 +#: source/ubl-strings.h:68 msgid "Repositories list" msgstr "Список репозиториев" -#: source/ubl-strings.h:74 +#: source/ubl-strings.h:69 msgid "Default" msgstr "По умолчанию" -#: source/ubl-strings.h:75 source/ubl-strings.h:97 +#: source/ubl-strings.h:70 source/ubl-strings.h:92 msgid "Choose" msgstr "Выбрать" -#: source/ubl-strings.h:76 +#: source/ubl-strings.h:71 msgid "Chosen" msgstr "Выбран" -#: source/ubl-strings.h:77 +#: source/ubl-strings.h:72 msgid "Repository" msgstr "Репозиторий" -#: source/ubl-strings.h:78 +#: source/ubl-strings.h:73 msgid "Manage repository list" msgstr "Управление списком репозиториев" -#: source/ubl-strings.h:79 +#: source/ubl-strings.h:74 msgid "Disable system repositories" msgstr "Отключить системные репозитории" -#: source/ubl-strings.h:81 +#: source/ubl-strings.h:76 msgid "Move up" msgstr "Переместить выше" -#: source/ubl-strings.h:82 +#: source/ubl-strings.h:77 msgid "Move down" msgstr "Переместить ниже" -#: source/ubl-strings.h:83 +#: source/ubl-strings.h:78 msgid "Add" msgstr "Добавить" -#: source/ubl-strings.h:84 +#: source/ubl-strings.h:79 msgid "Edit" msgstr "Изменить" -#: source/ubl-strings.h:85 +#: source/ubl-strings.h:80 msgid "Remove" msgstr "Удалить" -#: source/ubl-strings.h:86 +#: source/ubl-strings.h:81 msgid "Enabled" msgstr "Включен" -#: source/ubl-strings.h:87 +#: source/ubl-strings.h:82 msgid "Source" msgstr "Источник" -#: source/ubl-strings.h:88 +#: source/ubl-strings.h:83 msgid "Signature level" msgstr "Уровень подписи" -#: source/ubl-strings.h:89 +#: source/ubl-strings.h:84 msgid "Usage level" msgstr "Уровень использования" -#: source/ubl-strings.h:90 +#: source/ubl-strings.h:85 msgid "Repository connection configuration" msgstr "Настройки подключения репозитория" -#: source/ubl-strings.h:91 +#: source/ubl-strings.h:86 msgid "" "Setting up a connection to a distributed repository network and publishing " "your repositories" @@ -334,70 +348,70 @@ msgstr "" "Настройки подключения к распределённой сети репозиториев и публикация своих " "репозиториев" -#: source/ubl-strings.h:92 +#: source/ubl-strings.h:87 msgid "Connect and publish" msgstr "Подключиться и опубликовать" -#: source/ubl-strings.h:93 +#: source/ubl-strings.h:88 msgid "Recieve DB packages from shared network" msgstr "Получать БД пакетов из распределённой сети" -#: source/ubl-strings.h:94 +#: source/ubl-strings.h:89 msgid "Repositories for publishing" msgstr "Репозитории для публикации" -#: source/ubl-strings.h:96 +#: source/ubl-strings.h:91 msgid "All repositories" msgstr "Все репозитории" -#: source/ubl-strings.h:98 +#: source/ubl-strings.h:93 msgid "Accept" msgstr "Принять" -#: source/ubl-strings.h:99 +#: source/ubl-strings.h:94 msgid "Repository name" msgstr "Имя репозитория" -#: source/ubl-strings.h:100 +#: source/ubl-strings.h:95 msgid "" "Setting up publication of storage and/or repositories as a local WEB resource" msgstr "" "Настройка публикации хранилища и/или репозиториев в виде локального WEB " "ресурса" -#: source/ubl-strings.h:101 source/ubl-strings.h:142 +#: source/ubl-strings.h:96 source/ubl-strings.h:137 msgid "Authorization parameters" msgstr "Параметры авторизации" -#: source/ubl-strings.h:102 +#: source/ubl-strings.h:97 msgid "Storage" msgstr "Хранилище" -#: source/ubl-strings.h:103 +#: source/ubl-strings.h:98 msgid "Chosen repositories" msgstr "Выбранные репозитории" -#: source/ubl-strings.h:104 +#: source/ubl-strings.h:99 msgid "Reviewer" msgstr "Обозреватель" -#: source/ubl-strings.h:105 +#: source/ubl-strings.h:100 msgid "Port" msgstr "Порт" -#: source/ubl-strings.h:106 +#: source/ubl-strings.h:101 msgid "Name" msgstr "Имя пользователя" -#: source/ubl-strings.h:107 +#: source/ubl-strings.h:102 msgid "Password/Hash type" msgstr "Пароль/Тип хэша" -#: source/ubl-strings.h:108 +#: source/ubl-strings.h:103 msgid "Password/Password hash" msgstr "Пароль/Хэш пароля" -#: source/ubl-strings.h:109 +#: source/ubl-strings.h:104 msgid "" "Setting up publication of a lazy mirror of connected repositories as a local " "WEB resource" @@ -405,117 +419,117 @@ msgstr "" "Настройка публикации ленивого зеркала подключенных репозиториев в виде " "локального WEB ресурса" -#: source/ubl-strings.h:110 +#: source/ubl-strings.h:105 msgid "Publish lazy mirror" msgstr "Опубликовать ленивое зеркало" -#: source/ubl-strings.h:111 +#: source/ubl-strings.h:106 msgid "Type" msgstr "Тип" -#: source/ubl-strings.h:112 +#: source/ubl-strings.h:107 msgid "Resource URL" msgstr "Ресурс URL" -#: source/ubl-strings.h:113 +#: source/ubl-strings.h:108 msgid "Configure" msgstr "Настроить" -#: source/ubl-strings.h:114 +#: source/ubl-strings.h:109 msgid "Mirror publish configuration" msgstr "Параметры публикации зеркала" -#: source/ubl-strings.h:115 +#: source/ubl-strings.h:110 msgid "Service port:" msgstr "Порт сервиса:" -#: source/ubl-strings.h:116 +#: source/ubl-strings.h:111 msgid "Cache directory:" msgstr "Каталог кеша:" -#: source/ubl-strings.h:117 +#: source/ubl-strings.h:112 msgid "Duration of inactivity (in seconds):" msgstr "Продолжительность бездействия (в секундах):" -#: source/ubl-strings.h:118 +#: source/ubl-strings.h:113 msgid "Timeout (in seconds) for loading internel cache:" msgstr "Таймаут (в секундах) для загрузки интернет-кэша:" -#: source/ubl-strings.h:119 +#: source/ubl-strings.h:114 msgid "Work through proxy:" msgstr "Работать через прокси:" -#: source/ubl-strings.h:120 +#: source/ubl-strings.h:115 msgid "User agent:" msgstr "Пользовательский агент:" -#: source/ubl-strings.h:121 +#: source/ubl-strings.h:116 msgid "Standard expression for cron:" msgstr "Стандартное выражение cron:" -#: source/ubl-strings.h:122 +#: source/ubl-strings.h:117 msgid "" "The number of consecutie days that systems on the network have not been " "updated:" msgstr "" "Количество дней подряд, в течение которых не обновляются системы в сети:" -#: source/ubl-strings.h:123 +#: source/ubl-strings.h:118 msgid "The number of consecutive days wthout an update requested:" msgstr "" "Количество дней подряд, в течение которых не было запрошено обновление:" -#: source/ubl-strings.h:124 +#: source/ubl-strings.h:119 msgid "Add mirror" msgstr "Добавить зеркало" -#: source/ubl-strings.h:125 +#: source/ubl-strings.h:120 msgid "Repository name:" msgstr "Имя репозитория:" -#: source/ubl-strings.h:126 +#: source/ubl-strings.h:121 msgid "Repository type:" msgstr "Тип репозитория:" -#: source/ubl-strings.h:127 +#: source/ubl-strings.h:122 msgid "WEB link" msgstr "Вэб ссылка" -#: source/ubl-strings.h:128 +#: source/ubl-strings.h:123 msgid "Proxy server" msgstr "Прокси-сервер" -#: source/ubl-strings.h:129 +#: source/ubl-strings.h:124 msgid "Mirrors file" msgstr "Файл зеркал" -#: source/ubl-strings.h:130 +#: source/ubl-strings.h:125 msgid "Source:" msgstr "Источник:" -#: source/ubl-strings.h:131 +#: source/ubl-strings.h:126 msgid "Configuration" msgstr "Конфигурация" -#: source/ubl-strings.h:132 +#: source/ubl-strings.h:127 msgid "Sign level:" msgstr "Уровень подписи:" -#: source/ubl-strings.h:133 +#: source/ubl-strings.h:128 msgid "Enable repository update" msgstr "Включать обновления для этого репозитория" -#: source/ubl-strings.h:134 +#: source/ubl-strings.h:129 msgid "Enable repository search" msgstr "Включать поиск этого репозитория" -#: source/ubl-strings.h:135 +#: source/ubl-strings.h:130 msgid "" "Enable installation of packages from this repository during --sync operation" msgstr "" "Включать установку пакетов из этого репозитория во время операции --sync" -#: source/ubl-strings.h:136 +#: source/ubl-strings.h:131 msgid "" "Allow this repository to be a valid source of packages when running --" "sysupgrade" @@ -523,82 +537,98 @@ msgstr "" "Позволить этому репозиторию быть действительным источником пакетов при " "выполнении --sysupgrade" -#: source/ubl-strings.h:137 +#: source/ubl-strings.h:132 msgid "Enable publishing of local repository as WEB resource" msgstr "Включить публикацию локального репозитория в виде WEB ресурса" -#: source/ubl-strings.h:138 +#: source/ubl-strings.h:133 msgid "Path to publication directory:" msgstr "Хранилище:" -#: source/ubl-strings.h:139 +#: source/ubl-strings.h:134 msgid "Port:" msgstr "Порт:" -#: source/ubl-strings.h:140 +#: source/ubl-strings.h:135 msgid "Publishing parameters" msgstr "Параметры публикации" -#: source/ubl-strings.h:141 +#: source/ubl-strings.h:136 msgid "Enable WEB file browser" msgstr "Включить WEB обозреватель файлов" -#: source/ubl-strings.h:143 +#: source/ubl-strings.h:138 msgid "Set" msgstr "Задать" -#: source/ubl-strings.h:144 +#: source/ubl-strings.h:139 msgid "Username:" msgstr "Имя пользователя:" -#: source/ubl-strings.h:145 +#: source/ubl-strings.h:140 msgid "User password:" msgstr "Пароль:" -#: source/ubl-strings.h:146 +#: source/ubl-strings.h:141 msgid "Not encrypted" msgstr "Пароль не требуется" -#: source/ubl-strings.h:147 +#: source/ubl-strings.h:142 msgid "Encrypted with SHA256" msgstr "Шфировать с SHA256" -#: source/ubl-strings.h:148 +#: source/ubl-strings.h:143 msgid "Encrypted with SHA512" msgstr "Шифровать с SHA512" -#: source/ubl-strings.h:149 +#: source/ubl-strings.h:144 msgid "System" msgstr "Система" -#: source/ubl-strings.h:154 +#: source/ubl-strings.h:149 msgid "Sign level" -msgstr "Уровень подписи:" +msgstr "Уровень подписи" -#: source/ubl-strings.h:155 +#: source/ubl-strings.h:150 +msgid "Description" +msgstr "Описание" + +#: source/ubl-strings.h:151 msgid "Password input" msgstr "Ввод пароля" -#: source/ubl-strings.h:156 +#: source/ubl-strings.h:152 msgid "Password:" msgstr "Пароль:" -#: source/ubl-strings.h:157 +#: source/ubl-strings.h:153 msgid "Repeat password:" msgstr "Подтвердите ввод пароля:" -#: source/ubl-strings.h:158 +#: source/ubl-strings.h:154 msgid "Entryption:" msgstr "Алгоритм шифрования пароля:" -#: source/ubl-strings.h:159 +#: source/ubl-strings.h:155 msgid "Do not encrypt password" msgstr "Не шифровать пароль" -#: source/ubl-strings.h:160 +#: source/ubl-strings.h:156 msgid "Password hash:" msgstr "Пароль/Хэш пароля" +#: source/ubl-strings.h:157 +msgid "Default (None)" +msgstr "По умолчанию (Отсутствует)" + +#: source/ubl-strings.h:158 +msgid "Encryption:" +msgstr "Алгоритм шифрования пароля:" + +#: source/ubl-strings.h:159 +msgid "Encryption" +msgstr "Алгоритм шифрования пароля" + msgid "Check system updates at system startup" msgstr "Проверять обновления при загрузке системы" @@ -607,35 +637,3 @@ msgstr "дней" msgid "Cancel" msgstr "Отмена" - -msgid "Signature verification will not be performed" -msgstr "Проверка подписи выполняться не будет" - -msgid "For packages only" -msgstr "Только для пакетов" - -msgid "For database only" -msgstr "Только для базы данных" - -msgid "" -"Signatures will be checked if present, but unsigned databases and " -"packages will also be accepted" -msgstr "" -"Подписи будут проверяться при их наличии, но неподписанные базы данных и " -"пакеты также будут приниматься" - -msgid "Signatures will be required for all packages and databases" -msgstr "Подписи будут необходимы для всех пакетов и баз данных" - -msgid "" -"If the signature is verified for packages and the database, it must be in " -"the keyring and be fully trusted" -msgstr "" -"Если подпись проверяется для пакетов и базы, она должна находиться в " -"связке ключей и быть полностью доверенной" - -msgid "If the signature is verified only for packets" -msgstr "Если подпись проверяется только для пакетов" - -msgid "If the signature is verified only for the database" -msgstr "Если подпись проверяется только для базы данных"