diff --git a/CHANGELOG.md b/CHANGELOG.md
index 0cf6e4c3..3d7e7927 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -25,6 +25,12 @@ See also the [v0.107.20 GitHub milestone][ms-v0.107.20].
[ms-v0.107.20]: https://github.com/AdguardTeam/AdGuardHome/milestone/56?closed=1
-->
+### Security
+
+- Go version has been updated to prevent the possibility of exploiting the
+ CVE-2022-41717 and CVE-2022-41720 Go vulnerability fixed in [Go
+ 1.18.9][go-1.18.9].
+
### Added
- The ability to clear the DNS cache ([#5190]).
@@ -49,6 +55,8 @@ See also the [v0.107.20 GitHub milestone][ms-v0.107.20].
[#5193]: https://github.com/AdguardTeam/AdGuardHome/issues/5193
[#5208]: https://github.com/AdguardTeam/AdGuardHome/issues/5208
+[go-1.18.9]: https://groups.google.com/g/golang-announce/c/L_3rmdT0BMU
+
## [v0.107.19] - 2022-11-23
diff --git a/bamboo-specs/release.yaml b/bamboo-specs/release.yaml
index 86cc16ec..a43dca2b 100644
--- a/bamboo-specs/release.yaml
+++ b/bamboo-specs/release.yaml
@@ -7,7 +7,7 @@
# Make sure to sync any changes with the branch overrides below.
'variables':
'channel': 'edge'
- 'dockerGo': 'adguard/golang-ubuntu:5.3'
+ 'dockerGo': 'adguard/golang-ubuntu:5.4'
'stages':
- 'Build frontend':
@@ -322,7 +322,7 @@
# need to build a few of these.
'variables':
'channel': 'beta'
- 'dockerGo': 'adguard/golang-ubuntu:5.3'
+ 'dockerGo': 'adguard/golang-ubuntu:5.4'
# release-vX.Y.Z branches are the branches from which the actual final release
# is built.
- '^release-v[0-9]+\.[0-9]+\.[0-9]+':
@@ -337,4 +337,4 @@
# are the ones that actually get released.
'variables':
'channel': 'release'
- 'dockerGo': 'adguard/golang-ubuntu:5.3'
+ 'dockerGo': 'adguard/golang-ubuntu:5.4'
diff --git a/bamboo-specs/test.yaml b/bamboo-specs/test.yaml
index ac8c67fd..0ea2df9c 100644
--- a/bamboo-specs/test.yaml
+++ b/bamboo-specs/test.yaml
@@ -5,7 +5,7 @@
'key': 'AHBRTSPECS'
'name': 'AdGuard Home - Build and run tests'
'variables':
- 'dockerGo': 'adguard/golang-ubuntu:5.3'
+ 'dockerGo': 'adguard/golang-ubuntu:5.4'
'stages':
- 'Tests':
diff --git a/client/src/__locales/be.json b/client/src/__locales/be.json
index 19e45a4b..ca92d807 100644
--- a/client/src/__locales/be.json
+++ b/client/src/__locales/be.json
@@ -393,7 +393,7 @@
"encryption_issuer": "Выдавец",
"encryption_hostnames": "Імёны хастоў",
"encryption_reset": "Вы ўпэўнены, што хочаце скінуць налады шыфравання?",
- "encryption_warning": "Увага",
+ "encryption_warning": "Папярэджанне",
"topline_expiring_certificate": "Ваш SSL-сертыфікат хутка мінае. Абновіце <0>Налады шыфравання0>.",
"topline_expired_certificate": "Ваш SSL-сертыфікат мінуў. Абновіце <0>Налады шыфравання0>.",
"form_error_port_range": "Увядзіце нумар порта з інтэрвалу 80-65535",
@@ -638,5 +638,8 @@
"safe_browsing": "Бяспечны інтэрнэт",
"served_from_cache": "{{value}} (атрымана з кэша)",
"form_error_password_length": "Пароль павінен быць не менш за {{value}} сімвалаў",
- "anonymizer_notification": "<0>Заўвага:0> Ананімізацыя IP уключана. Вы можаце адключыць яго ў <1>Агульных наладах1> ."
+ "anonymizer_notification": "<0>Заўвага:0> Ананімізацыя IP уключана. Вы можаце адключыць яго ў <1>Агульных наладах1> .",
+ "confirm_dns_cache_clear": "Вы ўпэўнены, што хочаце ачысціць кэш DNS?",
+ "cache_cleared": "Кэш DNS паспяхова ачышчаны",
+ "clear_cache": "Ачысціць кэш"
}
diff --git a/client/src/__locales/cs.json b/client/src/__locales/cs.json
index 15f79692..ccb3033b 100644
--- a/client/src/__locales/cs.json
+++ b/client/src/__locales/cs.json
@@ -638,5 +638,8 @@
"safe_browsing": "Bezpečné prohlížení",
"served_from_cache": "{{value}} (převzato z mezipaměti)",
"form_error_password_length": "Heslo musí být alespoň {{value}} znaků dlouhé",
- "anonymizer_notification": "<0>Poznámka:0> Anonymizace IP je zapnuta. Můžete ji vypnout v <1>Obecných nastaveních1>."
+ "anonymizer_notification": "<0>Poznámka:0> Anonymizace IP je zapnuta. Můžete ji vypnout v <1>Obecných nastaveních1>.",
+ "confirm_dns_cache_clear": "Opravdu chcete vymazat mezipaměť DNS?",
+ "cache_cleared": "Mezipaměť DNS úspěšně vymazána",
+ "clear_cache": "Vymazat mezipaměť"
}
diff --git a/client/src/__locales/da.json b/client/src/__locales/da.json
index 7a999346..ae074b89 100644
--- a/client/src/__locales/da.json
+++ b/client/src/__locales/da.json
@@ -638,5 +638,8 @@
"safe_browsing": "Sikker Browsing",
"served_from_cache": "{{value}} (leveret fra cache)",
"form_error_password_length": "Adgangskoden skal udgøre mindst {{value}} tegn.",
- "anonymizer_notification": "<0>Bemærk:0> IP-anonymisering er aktiveret. Det kan deaktiveres via <1>Generelle indstillinger1>."
+ "anonymizer_notification": "<0>Bemærk:0> IP-anonymisering er aktiveret. Det kan deaktiveres via <1>Generelle indstillinger1>.",
+ "confirm_dns_cache_clear": "Sikker på, at DNS-cache skal ryddes?",
+ "cache_cleared": "DNS-cache hermed ryddet",
+ "clear_cache": "Ryd cache"
}
diff --git a/client/src/__locales/de.json b/client/src/__locales/de.json
index d1d45e6b..34cdfb09 100644
--- a/client/src/__locales/de.json
+++ b/client/src/__locales/de.json
@@ -638,5 +638,8 @@
"safe_browsing": "Internetsicherheit",
"served_from_cache": "{{value}} (aus dem Cache abgerufen)",
"form_error_password_length": "Das Passwort muss mindestens {{value}} Zeichen enthalten",
- "anonymizer_notification": "<0>Hinweis:0> Die IP-Anonymisierung ist aktiviert. Sie können sie in den <1>Allgemeinen Einstellungen1> deaktivieren."
+ "anonymizer_notification": "<0>Hinweis:0> Die IP-Anonymisierung ist aktiviert. Sie können sie in den <1>Allgemeinen Einstellungen1> deaktivieren.",
+ "confirm_dns_cache_clear": "Möchten Sie den DNS-Cache wirklich leeren?",
+ "cache_cleared": "DNS-Cache erfolgreich geleert",
+ "clear_cache": "Cache leeren"
}
diff --git a/client/src/__locales/es.json b/client/src/__locales/es.json
index dc881214..5e3aedd3 100644
--- a/client/src/__locales/es.json
+++ b/client/src/__locales/es.json
@@ -638,5 +638,8 @@
"safe_browsing": "Navegación segura",
"served_from_cache": "{{value}} (servido desde la caché)",
"form_error_password_length": "La contraseña debe tener al menos {{value}} caracteres",
- "anonymizer_notification": "<0>Nota:0> La anonimización de IP está habilitada. Puedes deshabilitarla en <1>Configuración general1>."
+ "anonymizer_notification": "<0>Nota:0> La anonimización de IP está habilitada. Puedes deshabilitarla en <1>Configuración general1>.",
+ "confirm_dns_cache_clear": "¿Estás seguro de que deseas borrar la caché de DNS?",
+ "cache_cleared": "Caché DNS borrado con éxito",
+ "clear_cache": "Borrar caché"
}
diff --git a/client/src/__locales/fi.json b/client/src/__locales/fi.json
index fd02be0e..f0d4e8cf 100644
--- a/client/src/__locales/fi.json
+++ b/client/src/__locales/fi.json
@@ -638,5 +638,8 @@
"safe_browsing": "Turvallinen selaus",
"served_from_cache": "{{value}} (jaettu välimuistista)",
"form_error_password_length": "Salasanan on oltava ainakin {{value}} merkkiä",
- "anonymizer_notification": "<0>Huomioi:0> IP-osoitteen anonymisointi on käytössä. Voit poistaa sen käytöstä <1>Yleisistä asetuksista1>."
+ "anonymizer_notification": "<0>Huomioi:0> IP-osoitteen anonymisointi on käytössä. Voit poistaa sen käytöstä <1>Yleisistä asetuksista1>.",
+ "confirm_dns_cache_clear": "Haluatko varmasti tyhjentää DNS-välimuistin?",
+ "cache_cleared": "DNS-välimuistin tyhjennys onnistui",
+ "clear_cache": "Tyhjennä välimuisti"
}
diff --git a/client/src/__locales/fr.json b/client/src/__locales/fr.json
index 310f429b..ff4aed42 100644
--- a/client/src/__locales/fr.json
+++ b/client/src/__locales/fr.json
@@ -638,5 +638,8 @@
"safe_browsing": "Navigation sécurisée",
"served_from_cache": "{{value}} (depuis le cache)",
"form_error_password_length": "Le mot de passe doit comporter au moins {{value}} caractères",
- "anonymizer_notification": "<0>Note :0> L'anonymisation IP est activée. Vous pouvez la désactiver dans les <1>paramètres généraux1>."
+ "anonymizer_notification": "<0>Note :0> L'anonymisation IP est activée. Vous pouvez la désactiver dans les <1>paramètres généraux1>.",
+ "confirm_dns_cache_clear": "Voulez-vous vraiment vider le cache DNS ?",
+ "cache_cleared": "Le cache DNS a été vidé",
+ "clear_cache": "Vider le cache"
}
diff --git a/client/src/__locales/hr.json b/client/src/__locales/hr.json
index 24f9376a..b9477551 100644
--- a/client/src/__locales/hr.json
+++ b/client/src/__locales/hr.json
@@ -638,5 +638,8 @@
"safe_browsing": "Sigurno surfanje",
"served_from_cache": "{{value}} (dohvaćeno iz predmemorije)",
"form_error_password_length": "Lozinka mora imati najmanje {{value}} znakova",
- "anonymizer_notification": "<0>Napomena:0>IP anonimizacija je omogućena. Možete ju onemogućiti u <1>općim postavkama1>."
+ "anonymizer_notification": "<0>Napomena:0>IP anonimizacija je omogućena. Možete ju onemogućiti u <1>općim postavkama1>.",
+ "confirm_dns_cache_clear": "Jeste li sigurni da želite očistiti DNS predmemoriju?",
+ "cache_cleared": "DNS predmemorija je uspješno izbrisana",
+ "clear_cache": "Očisti predmemoriju"
}
diff --git a/client/src/__locales/hu.json b/client/src/__locales/hu.json
index bf408b34..534fd69e 100644
--- a/client/src/__locales/hu.json
+++ b/client/src/__locales/hu.json
@@ -638,5 +638,8 @@
"safe_browsing": "Biztonságos böngészés",
"served_from_cache": "{{value}} (gyorsítótárból kiszolgálva)",
"form_error_password_length": "A jelszó legalább {{value}} karakter hosszú kell, hogy legyen",
- "anonymizer_notification": "<0>Megjegyzés:0> Az IP anonimizálás engedélyezve van. Az <1>Általános beállításoknál letilthatja1> ."
+ "anonymizer_notification": "<0>Megjegyzés:0> Az IP anonimizálás engedélyezve van. Az <1>Általános beállításoknál letilthatja1> .",
+ "confirm_dns_cache_clear": "Biztos benne, hogy törölni szeretné a DNS-gyorsítótárat?",
+ "cache_cleared": "A DNS gyorsítótár sikeresen törlődött",
+ "clear_cache": "Gyorsítótár törlése"
}
diff --git a/client/src/__locales/id.json b/client/src/__locales/id.json
index f285d669..97530100 100644
--- a/client/src/__locales/id.json
+++ b/client/src/__locales/id.json
@@ -638,5 +638,8 @@
"safe_browsing": "Penjelajahan Aman",
"served_from_cache": "{{value}} (disajikan dari cache)",
"form_error_password_length": "Kata sandi harus minimal {{value}} karakter",
- "anonymizer_notification": "<0>Catatan:0> Anonimisasi IP diaktifkan. Anda dapat menonaktifkannya di <1>Pengaturan umum1> ."
+ "anonymizer_notification": "<0>Catatan:0> Anonimisasi IP diaktifkan. Anda dapat menonaktifkannya di <1>Pengaturan umum1> .",
+ "confirm_dns_cache_clear": "Apakah Anda yakin ingin menghapus cache DNS?",
+ "cache_cleared": "Cache DNS berhasil dibersihkan",
+ "clear_cache": "Hapus cache"
}
diff --git a/client/src/__locales/it.json b/client/src/__locales/it.json
index f71f8a40..128fe91b 100644
--- a/client/src/__locales/it.json
+++ b/client/src/__locales/it.json
@@ -638,5 +638,8 @@
"safe_browsing": "Navigazione Sicura",
"served_from_cache": "{{value}} (fornito dalla cache)",
"form_error_password_length": "La password deve contenere almeno {{value}} caratteri",
- "anonymizer_notification": "<0>Attenzione:0> L'anonimizzazione dell'IP è abilitata. Puoi disabilitarla in <1>Impostazioni generali1>."
+ "anonymizer_notification": "<0>Attenzione:0> L'anonimizzazione dell'IP è abilitata. Puoi disabilitarla in <1>Impostazioni generali1>.",
+ "confirm_dns_cache_clear": "Sei sicuro di voler cancellare la cache DNS?",
+ "cache_cleared": "Cache DNS è stata cancellata correttamente",
+ "clear_cache": "Cancella cache"
}
diff --git a/client/src/__locales/ja.json b/client/src/__locales/ja.json
index 398b11e8..2215358d 100644
--- a/client/src/__locales/ja.json
+++ b/client/src/__locales/ja.json
@@ -638,5 +638,8 @@
"safe_browsing": "セーフブラウジング",
"served_from_cache": "{{value}} (キャッシュから応答)",
"form_error_password_length": "パスワードは{{value}}文字以上にしてください",
- "anonymizer_notification": "【<0>注意0>】IPの匿名化が有効になっています。 <1>一般設定1>で無効にできます。"
+ "anonymizer_notification": "【<0>注意0>】IPの匿名化が有効になっています。 <1>一般設定1>で無効にできます。",
+ "confirm_dns_cache_clear": "DNS キャッシュをクリアしてもよろしいですか?",
+ "cache_cleared": "DNSキャッシュのクリア完了です。",
+ "clear_cache": "キャッシュをクリアする"
}
diff --git a/client/src/__locales/ko.json b/client/src/__locales/ko.json
index de317c8a..aff7452e 100644
--- a/client/src/__locales/ko.json
+++ b/client/src/__locales/ko.json
@@ -638,5 +638,8 @@
"safe_browsing": "세이프 브라우징",
"served_from_cache": "{{value}} (캐시에서 제공)",
"form_error_password_length": "비밀번호는 {{value}}자 이상이어야 합니다",
- "anonymizer_notification": "<0>참고:0> IP 익명화가 활성화되었습니다. <1>일반 설정1>에서 비활성화할 수 있습니다."
+ "anonymizer_notification": "<0>참고:0> IP 익명화가 활성화되었습니다. <1>일반 설정1>에서 비활성화할 수 있습니다.",
+ "confirm_dns_cache_clear": "정말로 DNS 캐시를 지우시겠습니까?",
+ "cache_cleared": "DNS 캐시를 성공적으로 지웠습니다",
+ "clear_cache": "캐시 지우기"
}
diff --git a/client/src/__locales/nl.json b/client/src/__locales/nl.json
index a7722884..93566aa8 100644
--- a/client/src/__locales/nl.json
+++ b/client/src/__locales/nl.json
@@ -638,5 +638,8 @@
"safe_browsing": "Veilig browsen",
"served_from_cache": "{{value}} (geleverd vanuit cache)",
"form_error_password_length": "Wachtwoord moet minimaal {{value}} tekens lang zijn",
- "anonymizer_notification": "<0>Opmerking:0> IP-anonimisering is ingeschakeld. Je kunt het uitschakelen in <1>Algemene instellingen1>."
+ "anonymizer_notification": "<0>Opmerking:0> IP-anonimisering is ingeschakeld. Je kunt het uitschakelen in <1>Algemene instellingen1>.",
+ "confirm_dns_cache_clear": "Weet je zeker dat je de DNS-cache wilt wissen?",
+ "cache_cleared": "DNS-cache succesvol gewist",
+ "clear_cache": "Cache wissen"
}
diff --git a/client/src/__locales/pl.json b/client/src/__locales/pl.json
index d175b408..508ed9c4 100644
--- a/client/src/__locales/pl.json
+++ b/client/src/__locales/pl.json
@@ -638,5 +638,8 @@
"safe_browsing": "Bezpieczne przeglądanie",
"served_from_cache": "{{value}} (podawane z pamięci podręcznej)",
"form_error_password_length": "Hasło musi mieć co najmniej {{value}} znaków",
- "anonymizer_notification": "<0>Uwaga:0> Anonimizacja IP jest włączona. Możesz ją wyłączyć w <1>Ustawieniach ogólnych1>."
+ "anonymizer_notification": "<0>Uwaga:0> Anonimizacja IP jest włączona. Możesz ją wyłączyć w <1>Ustawieniach ogólnych1>.",
+ "confirm_dns_cache_clear": "Czy na pewno chcesz wyczyścić pamięć podręczną DNS?",
+ "cache_cleared": "Pamięć podręczna DNS została pomyślnie wyczyszczona",
+ "clear_cache": "Wyczyść pamięć podręczną"
}
diff --git a/client/src/__locales/pt-br.json b/client/src/__locales/pt-br.json
index ea2da002..cd7428ee 100644
--- a/client/src/__locales/pt-br.json
+++ b/client/src/__locales/pt-br.json
@@ -638,5 +638,8 @@
"safe_browsing": "Navegação segura",
"served_from_cache": "{{value}} (servido do cache)",
"form_error_password_length": "A senha deve ter pelo menos {{value}} caracteres",
- "anonymizer_notification": "<0>Observação:0> A anonimização de IP está ativada. Você pode desativá-lo em <1>Configurações gerais1>."
+ "anonymizer_notification": "<0>Observação:0> A anonimização de IP está ativada. Você pode desativá-lo em <1>Configurações gerais1>.",
+ "confirm_dns_cache_clear": "Tem certeza de que deseja limpar o cache DNS?",
+ "cache_cleared": "Cache DNS limpo com sucesso",
+ "clear_cache": "Limpar cache"
}
diff --git a/client/src/__locales/pt-pt.json b/client/src/__locales/pt-pt.json
index 81c92867..9905392f 100644
--- a/client/src/__locales/pt-pt.json
+++ b/client/src/__locales/pt-pt.json
@@ -638,5 +638,8 @@
"safe_browsing": "Navegação segura",
"served_from_cache": "{{value}} (servido do cache)",
"form_error_password_length": "A palavra-passe deve ter pelo menos {{value}} caracteres",
- "anonymizer_notification": "<0>Observação:0> A anonimização de IP está ativada. Você pode desativá-la em <1>Definições gerais1>."
+ "anonymizer_notification": "<0>Observação:0> A anonimização de IP está ativada. Você pode desativá-la em <1>Definições gerais1>.",
+ "confirm_dns_cache_clear": "Tem certeza de que quer limpar a cache DNS?",
+ "cache_cleared": "O cache DNS foi apagado com sucesso",
+ "clear_cache": "Limpar cache"
}
diff --git a/client/src/__locales/ro.json b/client/src/__locales/ro.json
index 82c86901..195d3f5e 100644
--- a/client/src/__locales/ro.json
+++ b/client/src/__locales/ro.json
@@ -638,5 +638,8 @@
"safe_browsing": "Navigare în siguranță",
"served_from_cache": "{{value}} (furnizat din cache)",
"form_error_password_length": "Parola trebuie să aibă cel puțin {{value}} caractere",
- "anonymizer_notification": "<0>Nota:0> Anonimizarea IP este activată. Puteți să o dezactivați în <1>Setări generale1>."
+ "anonymizer_notification": "<0>Nota:0> Anonimizarea IP este activată. Puteți să o dezactivați în <1>Setări generale1>.",
+ "confirm_dns_cache_clear": "Sunteți sigur că doriți să ștergeți memoria cache DNS?",
+ "cache_cleared": "Cache-ul DNS a fost golit cu succes",
+ "clear_cache": "Goliți memoria cache"
}
diff --git a/client/src/__locales/ru.json b/client/src/__locales/ru.json
index c1a5119b..f712bd75 100644
--- a/client/src/__locales/ru.json
+++ b/client/src/__locales/ru.json
@@ -638,5 +638,8 @@
"safe_browsing": "Безопасный интернет",
"served_from_cache": "{{value}} (получено из кеша)",
"form_error_password_length": "Пароль должен быть длиной не меньше {{value}} символов",
- "anonymizer_notification": "<0>Внимание:0> включена анонимизация IP-адресов. Вы можете отключить её в разделе <1>Основные настройки1>."
+ "anonymizer_notification": "<0>Внимание:0> включена анонимизация IP-адресов. Вы можете отключить её в разделе <1>Основные настройки1>.",
+ "confirm_dns_cache_clear": "Вы уверены, что хотите очистить кеш DNS?",
+ "cache_cleared": "Кеш DNS успешно очищен",
+ "clear_cache": "Очистить кеш"
}
diff --git a/client/src/__locales/sk.json b/client/src/__locales/sk.json
index 473557c4..b44501e6 100644
--- a/client/src/__locales/sk.json
+++ b/client/src/__locales/sk.json
@@ -638,5 +638,8 @@
"safe_browsing": "Bezpečné prehliadanie",
"served_from_cache": "{{value}} (prevzatá z cache pamäte)",
"form_error_password_length": "Heslo musí mať dĺžku aspoň {{value}} znakov",
- "anonymizer_notification": "<0>Poznámka:0> Anonymizácia IP je zapnutá. Môžete ju vypnúť vo <1>Všeobecných nastaveniach1>."
+ "anonymizer_notification": "<0>Poznámka:0> Anonymizácia IP je zapnutá. Môžete ju vypnúť vo <1>Všeobecných nastaveniach1>.",
+ "confirm_dns_cache_clear": "Naozaj chcete vymazať vyrovnávaciu pamäť DNS?",
+ "cache_cleared": "Vyrovnávacia pamäť DNS bola úspešne vymazaná",
+ "clear_cache": "Vymazať vyrovnávaciu pamäť"
}
diff --git a/client/src/__locales/sl.json b/client/src/__locales/sl.json
index 7f854f0a..bb6a60c6 100644
--- a/client/src/__locales/sl.json
+++ b/client/src/__locales/sl.json
@@ -638,5 +638,8 @@
"safe_browsing": "Varno brskanje",
"served_from_cache": "{{value}} (postreženo iz predpomnilnika)",
"form_error_password_length": "Geslo mora vsebovati najmanj {{value}} znakov",
- "anonymizer_notification": "<0>Opomba:0> Anonimizacija IP je omogočena. Onemogočite ga lahko v <1>Splošnih nastavitvah1>."
+ "anonymizer_notification": "<0>Opomba:0> Anonimizacija IP je omogočena. Onemogočite ga lahko v <1>Splošnih nastavitvah1>.",
+ "confirm_dns_cache_clear": "Ali ste prepričani, da želite počistiti predpomnilnik DNS?",
+ "cache_cleared": "Predpomnilnik DNS je bil uspešno počiščen",
+ "clear_cache": "Počisti predpomnilnik"
}
diff --git a/client/src/__locales/sr-cs.json b/client/src/__locales/sr-cs.json
index 9b676752..53b0c3e5 100644
--- a/client/src/__locales/sr-cs.json
+++ b/client/src/__locales/sr-cs.json
@@ -638,5 +638,8 @@
"safe_browsing": "Sigurno pregledanje",
"served_from_cache": "{{value}} (posluženo iz predmemorije)",
"form_error_password_length": "Lozinka mora imati najmanje {{value}} znakova",
- "anonymizer_notification": "<0>Nota:0> IP prepoznavanje je omogućeno. Možete ga onemogućiti u opštim <1>postavkama1>."
+ "anonymizer_notification": "<0>Nota:0> IP prepoznavanje je omogućeno. Možete ga onemogućiti u opštim <1>postavkama1>.",
+ "confirm_dns_cache_clear": "Želite li zaista da obrišite DNS keš?",
+ "cache_cleared": "DNS keš je uspešno očišćen",
+ "clear_cache": "Obriši keš memoriju"
}
diff --git a/client/src/__locales/sv.json b/client/src/__locales/sv.json
index 50c12d07..7715211f 100644
--- a/client/src/__locales/sv.json
+++ b/client/src/__locales/sv.json
@@ -638,5 +638,8 @@
"safe_browsing": "Säker surfning",
"served_from_cache": "{{value}} (levereras från cache)",
"form_error_password_length": "Lösenordet måste vara minst {{value}} tecken långt",
- "anonymizer_notification": "<0>Observera:0> IP-anonymisering är aktiverad. Du kan inaktivera den i <1>Allmänna inställningar1>."
+ "anonymizer_notification": "<0>Observera:0> IP-anonymisering är aktiverad. Du kan inaktivera den i <1>Allmänna inställningar1>.",
+ "confirm_dns_cache_clear": "Är du säker på att du vill rensa DNS-cache?",
+ "cache_cleared": "DNS-cacheminnet har rensats",
+ "clear_cache": "Rensa cache"
}
diff --git a/client/src/__locales/tr.json b/client/src/__locales/tr.json
index a24028f1..5396eb52 100644
--- a/client/src/__locales/tr.json
+++ b/client/src/__locales/tr.json
@@ -638,5 +638,8 @@
"safe_browsing": "Güvenli Gezinti",
"served_from_cache": "{{value}} (önbellekten kullanıldı)",
"form_error_password_length": "Parola en az {{value}} karakter uzunluğunda olmalıdır",
- "anonymizer_notification": "<0>Not:0> IP anonimleştirme etkinleştirildi. Bunu <1>Genel ayarlardan1> devre dışı bırakabilirsiniz."
+ "anonymizer_notification": "<0>Not:0> IP anonimleştirme etkinleştirildi. Bunu <1>Genel ayarlardan1> devre dışı bırakabilirsiniz.",
+ "confirm_dns_cache_clear": "DNS önbelleğini temizlemek istediğinizden emin misiniz?",
+ "cache_cleared": "DNS önbelleği başarıyla temizlendi",
+ "clear_cache": "Önbelleği temizle"
}
diff --git a/client/src/__locales/uk.json b/client/src/__locales/uk.json
index 1041ae8d..797c769b 100644
--- a/client/src/__locales/uk.json
+++ b/client/src/__locales/uk.json
@@ -393,7 +393,7 @@
"encryption_issuer": "Видавець",
"encryption_hostnames": "Назви вузлів",
"encryption_reset": "Ви впевнені, що хочете скинути налаштування шифрування?",
- "encryption_warning": "Увага",
+ "encryption_warning": "Попередження",
"topline_expiring_certificate": "Ваш сертифікат SSL скоро закінчиться. Оновіть <0>Налаштування шифрування0>.",
"topline_expired_certificate": "Термін дії вашого сертифіката SSL закінчився. Оновіть <0>Налаштування шифрування0>.",
"form_error_port_range": "Введіть значення порту в діапазоні 80−65535",
@@ -638,5 +638,8 @@
"safe_browsing": "Безпечний перегляд",
"served_from_cache": "{{value}} (отримано з кешу)",
"form_error_password_length": "Пароль мусить мати принаймні {{value}} символів",
- "anonymizer_notification": "<0>Примітка:0> IP-анонімізацію ввімкнено. Ви можете вимкнути його в <1>Загальні налаштування1> ."
+ "anonymizer_notification": "<0>Примітка:0> IP-анонімізацію ввімкнено. Ви можете вимкнути його в <1>Загальні налаштування1> .",
+ "confirm_dns_cache_clear": "Ви впевнені, що бажаєте очистити кеш DNS?",
+ "cache_cleared": "Кеш DNS успішно очищено",
+ "clear_cache": "Очистити кеш"
}
diff --git a/client/src/__locales/vi.json b/client/src/__locales/vi.json
index 7674d372..174c57b2 100644
--- a/client/src/__locales/vi.json
+++ b/client/src/__locales/vi.json
@@ -638,5 +638,8 @@
"safe_browsing": "Duyệt web an toàn",
"served_from_cache": "{{value}} (được phục vụ từ bộ nhớ cache)",
"form_error_password_length": "Mật khẩu phải có ít nhất {{value}} ký tự",
- "anonymizer_notification": "<0> Lưu ý:0> Tính năng ẩn danh IP được bật. Bạn có thể tắt nó trong <1> Cài đặt chung1>."
+ "anonymizer_notification": "<0> Lưu ý:0> Tính năng ẩn danh IP được bật. Bạn có thể tắt nó trong <1> Cài đặt chung1>.",
+ "confirm_dns_cache_clear": "Bạn có chắc chắn muốn xóa bộ đệm ẩn DNS không?",
+ "cache_cleared": "Đã xóa thành công bộ đệm DNS",
+ "clear_cache": "Xóa bộ nhớ cache"
}
diff --git a/client/src/__locales/zh-cn.json b/client/src/__locales/zh-cn.json
index 5a19d904..65ddd0cc 100644
--- a/client/src/__locales/zh-cn.json
+++ b/client/src/__locales/zh-cn.json
@@ -638,5 +638,8 @@
"safe_browsing": "安全浏览",
"served_from_cache": "{{value}}(由缓存提供)",
"form_error_password_length": "密码必须至少有 {{value}} 个字符",
- "anonymizer_notification": "<0>注意:0> IP 匿名化已启用。您可以在<1>常规设置1>中禁用它。"
+ "anonymizer_notification": "<0>注意:0> IP 匿名化已启用。您可以在<1>常规设置1>中禁用它。",
+ "confirm_dns_cache_clear": "您确定要清除 DNS 缓存吗?",
+ "cache_cleared": "已成功清除 DNS 缓存",
+ "clear_cache": "清除缓存"
}
diff --git a/client/src/__locales/zh-tw.json b/client/src/__locales/zh-tw.json
index e1ae9b0a..da8f815f 100644
--- a/client/src/__locales/zh-tw.json
+++ b/client/src/__locales/zh-tw.json
@@ -638,5 +638,8 @@
"safe_browsing": "安全瀏覽",
"served_from_cache": "{{value}} (由快取提供)",
"form_error_password_length": "密碼必須為至少長 {{value}} 個字元",
- "anonymizer_notification": "<0>注意:0>IP 匿名化被啟用。您可在<1>一般設定1>中禁用它。"
+ "anonymizer_notification": "<0>注意:0>IP 匿名化被啟用。您可在<1>一般設定1>中禁用它。",
+ "confirm_dns_cache_clear": "您確定您想要清除 DNS 快取嗎?",
+ "cache_cleared": "DNS 快取被成功地清除",
+ "clear_cache": "清除快取"
}
diff --git a/internal/aghnet/hostscontainer_windows.go b/internal/aghnet/hostscontainer_windows.go
index 819ba5bb..7bbf7ac0 100644
--- a/internal/aghnet/hostscontainer_windows.go
+++ b/internal/aghnet/hostscontainer_windows.go
@@ -15,7 +15,7 @@ import (
func defaultHostsPaths() (paths []string) {
sysDir, err := windows.GetSystemDirectory()
if err != nil {
- log.Error("getting system directory: %s", err)
+ log.Error("aghnet: getting system directory: %s", err)
return []string{}
}
diff --git a/internal/aghos/os.go b/internal/aghos/os.go
index 26201df2..67496c78 100644
--- a/internal/aghos/os.go
+++ b/internal/aghos/os.go
@@ -168,11 +168,11 @@ func IsOpenWrt() (ok bool) {
return isOpenWrt()
}
-// RootDirFS returns the fs.FS rooted at the operating system's root.
+// RootDirFS returns the [fs.FS] rooted at the operating system's root. On
+// Windows it returns the fs.FS rooted at the volume of the system directory
+// (usually, C:).
func RootDirFS() (fsys fs.FS) {
- // Use empty string since os.DirFS implicitly prepends a slash to it. This
- // behavior is undocumented but it currently works.
- return os.DirFS("")
+ return rootDirFS()
}
// NotifyReconfigureSignal notifies c on receiving reconfigure signals.
diff --git a/internal/aghos/os_unix.go b/internal/aghos/os_unix.go
index 7e04f0c0..6dcc5717 100644
--- a/internal/aghos/os_unix.go
+++ b/internal/aghos/os_unix.go
@@ -3,12 +3,17 @@
package aghos
import (
+ "io/fs"
"os"
"os/signal"
"golang.org/x/sys/unix"
)
+func rootDirFS() (fsys fs.FS) {
+ return os.DirFS("/")
+}
+
func notifyReconfigureSignal(c chan<- os.Signal) {
signal.Notify(c, unix.SIGHUP)
}
diff --git a/internal/aghos/os_windows.go b/internal/aghos/os_windows.go
index 616fcf46..5568ef4c 100644
--- a/internal/aghos/os_windows.go
+++ b/internal/aghos/os_windows.go
@@ -3,13 +3,29 @@
package aghos
import (
+ "io/fs"
"os"
"os/signal"
+ "path/filepath"
"syscall"
+ "github.com/AdguardTeam/golibs/log"
"golang.org/x/sys/windows"
)
+func rootDirFS() (fsys fs.FS) {
+ // TODO(a.garipov): Use a better way if golang/go#44279 is ever resolved.
+ sysDir, err := windows.GetSystemDirectory()
+ if err != nil {
+ log.Error("aghos: getting root filesystem: %s; using C:", err)
+
+ // Assume that C: is the safe default.
+ return os.DirFS("C:")
+ }
+
+ return os.DirFS(filepath.VolumeName(sysDir))
+}
+
func setRlimit(val uint64) (err error) {
return Unsupported("setrlimit")
}
diff --git a/internal/filtering/servicelist.go b/internal/filtering/servicelist.go
index f640097e..232976e8 100644
--- a/internal/filtering/servicelist.go
+++ b/internal/filtering/servicelist.go
@@ -251,14 +251,12 @@ var blockedServices = []blockedService{{
Name: "Mastodon",
IconSVG: []byte(""),
Rules: []string{
+ "||aus.social^",
"||awscommunity.social^",
- "||colorid.es^",
- "||dizl.de^",
"||dju.social^",
"||dresden.network^",
"||fedibird.com^",
"||fosstodon.org^",
- "||freiburg.social^",
"||glasgow.social^",
"||h4.io^",
"||hachyderm.io^",
@@ -269,32 +267,30 @@ var blockedServices = []blockedService{{
"||ieji.de^",
"||indieweb.social^",
"||ioc.exchange^",
- "||kfem.cat^",
"||kolektiva.social^",
- "||kurry.social^",
- "||libretooth.gr^",
"||livellosegreto.it^",
"||lor.sh^",
"||m.cmx.im^",
- "||mast.dragon-fly.club^",
+ "||mas.to^",
"||masto.ai^",
"||masto.es^",
"||masto.nobigtech.es^",
"||masto.pt^",
- "||mastodon-belgium.be^",
"||mastodon.au^",
"||mastodon.bida.im^",
+ "||mastodon.com.tr^",
"||mastodon.eus^",
"||mastodon.ie^",
"||mastodon.iriseden.eu^",
+ "||mastodon.lol^",
"||mastodon.nl^",
"||mastodon.nu^",
"||mastodon.nz^",
"||mastodon.online^",
"||mastodon.scot^",
"||mastodon.sdf.org^",
- "||mastodon.se^",
"||mastodon.social^",
+ "||mastodon.top^",
"||mastodon.uno^",
"||mastodon.world^",
"||mastodon.zaclys.com^",
@@ -304,6 +300,8 @@ var blockedServices = []blockedService{{
"||mastodontti.fi^",
"||mastouille.fr^",
"||mathstodon.xyz^",
+ "||meow.social^",
+ "||metalhead.club^",
"||mindly.social^",
"||mstdn.ca^",
"||mstdn.jp^",
@@ -311,14 +309,13 @@ var blockedServices = []blockedService{{
"||mstdn.social^",
"||muenchen.social^",
"||muenster.im^",
+ "||nerdculture.de^",
"||newsie.social^",
"||noc.social^",
"||norden.social^",
"||nrw.social^",
"||o3o.ca^",
"||ohai.social^",
- "||oslo.town^",
- "||pettingzoo.co^",
"||pewtix.com^",
"||phpc.social^",
"||piaille.fr^",
@@ -329,18 +326,20 @@ var blockedServices = []blockedService{{
"||ruby.social^",
"||ruhr.social^",
"||sfba.social^",
- "||snabelen.no^",
+ "||socel.net^",
"||social.anoxinon.de^",
"||social.cologne^",
"||social.dev-wiki.de^",
+ "||social.linux.pizza^",
"||social.politicaconciencia.org^",
"||social.vivaldi.net^",
- "||sociale.network^",
+ "||sself.co^",
"||sueden.social^",
"||techhub.social^",
"||theblower.au^",
"||tkz.one^",
"||toot.aquilenet.fr^",
+ "||toot.community^",
"||toot.funami.tech^",
"||toot.wales^",
"||troet.cafe^",
@@ -350,6 +349,7 @@ var blockedServices = []blockedService{{
"||urbanists.social^",
"||vocalodon.net^",
"||wxw.moe^",
+ "||xarxa.cloud^",
},
}, {
ID: "minecraft",