Pull request: all: add string set
Merge in DNS/adguard-home from add-strset to master Squashed commit of the following: commit 2500df1805dee425eafd0503983ec631de02af0b Author: Ainar Garipov <A.Garipov@AdGuard.COM> Date: Tue Apr 20 15:09:59 2021 +0300 all: add string set
This commit is contained in:
@@ -83,7 +83,7 @@ type clientsContainer struct {
|
||||
ipToRC map[string]*RuntimeClient // IP -> runtime client
|
||||
lock sync.Mutex
|
||||
|
||||
allTags map[string]bool
|
||||
allTags *aghstrings.Set
|
||||
|
||||
// dhcpServer is used for looking up clients IP addresses by MAC addresses
|
||||
dhcpServer *dhcpd.Server
|
||||
@@ -111,10 +111,7 @@ func (clients *clientsContainer) Init(
|
||||
clients.idIndex = make(map[string]*Client)
|
||||
clients.ipToRC = make(map[string]*RuntimeClient)
|
||||
|
||||
clients.allTags = make(map[string]bool)
|
||||
for _, t := range clientTags {
|
||||
clients.allTags[t] = false
|
||||
}
|
||||
clients.allTags = aghstrings.NewSet(clientTags...)
|
||||
|
||||
clients.dhcpServer = dhcpServer
|
||||
clients.etcHosts = etcHosts
|
||||
@@ -163,9 +160,8 @@ type clientObject struct {
|
||||
Upstreams []string `yaml:"upstreams"`
|
||||
}
|
||||
|
||||
func (clients *clientsContainer) tagKnown(tag string) bool {
|
||||
_, ok := clients.allTags[tag]
|
||||
return ok
|
||||
func (clients *clientsContainer) tagKnown(tag string) (ok bool) {
|
||||
return clients.allTags.Has(tag)
|
||||
}
|
||||
|
||||
func (clients *clientsContainer) addFromConfig(objects []clientObject) {
|
||||
|
||||
@@ -6,52 +6,46 @@ import (
|
||||
"net/http"
|
||||
"strings"
|
||||
|
||||
"github.com/AdguardTeam/AdGuardHome/internal/aghstrings"
|
||||
"github.com/AdguardTeam/golibs/log"
|
||||
)
|
||||
|
||||
// --------------------
|
||||
// internationalization
|
||||
// --------------------
|
||||
var allowedLanguages = map[string]bool{
|
||||
"be": true,
|
||||
"bg": true,
|
||||
"cs": true,
|
||||
"da": true,
|
||||
"de": true,
|
||||
"en": true,
|
||||
"es": true,
|
||||
"fa": true,
|
||||
"fr": true,
|
||||
"hr": true,
|
||||
"hu": true,
|
||||
"id": true,
|
||||
"it": true,
|
||||
"ja": true,
|
||||
"ko": true,
|
||||
"nl": true,
|
||||
"no": true,
|
||||
"pl": true,
|
||||
"pt-br": true,
|
||||
"pt-pt": true,
|
||||
"ro": true,
|
||||
"ru": true,
|
||||
"si-lk": true,
|
||||
"sk": true,
|
||||
"sl": true,
|
||||
"sr-cs": true,
|
||||
"sv": true,
|
||||
"th": true,
|
||||
"tr": true,
|
||||
"vi": true,
|
||||
"zh-cn": true,
|
||||
"zh-hk": true,
|
||||
"zh-tw": true,
|
||||
}
|
||||
|
||||
func isLanguageAllowed(language string) bool {
|
||||
l := strings.ToLower(language)
|
||||
return allowedLanguages[l]
|
||||
}
|
||||
// TODO(a.garipov): Get rid of a global variable?
|
||||
var allowedLanguages = aghstrings.NewSet(
|
||||
"be",
|
||||
"bg",
|
||||
"cs",
|
||||
"da",
|
||||
"de",
|
||||
"en",
|
||||
"es",
|
||||
"fa",
|
||||
"fr",
|
||||
"hr",
|
||||
"hu",
|
||||
"id",
|
||||
"it",
|
||||
"ja",
|
||||
"ko",
|
||||
"nl",
|
||||
"no",
|
||||
"pl",
|
||||
"pt-br",
|
||||
"pt-pt",
|
||||
"ro",
|
||||
"ru",
|
||||
"si-lk",
|
||||
"sk",
|
||||
"sl",
|
||||
"sr-cs",
|
||||
"sv",
|
||||
"th",
|
||||
"tr",
|
||||
"vi",
|
||||
"zh-cn",
|
||||
"zh-hk",
|
||||
"zh-tw",
|
||||
)
|
||||
|
||||
func handleI18nCurrentLanguage(w http.ResponseWriter, r *http.Request) {
|
||||
w.Header().Set("Content-Type", "text/plain")
|
||||
@@ -80,12 +74,15 @@ func handleI18nChangeLanguage(w http.ResponseWriter, r *http.Request) {
|
||||
msg := "empty language specified"
|
||||
log.Println(msg)
|
||||
http.Error(w, msg, http.StatusBadRequest)
|
||||
|
||||
return
|
||||
}
|
||||
if !isLanguageAllowed(language) {
|
||||
|
||||
if !allowedLanguages.Has(language) {
|
||||
msg := fmt.Sprintf("unknown language specified: %s", language)
|
||||
log.Println(msg)
|
||||
http.Error(w, msg, http.StatusBadRequest)
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
|
||||
@@ -9,6 +9,7 @@ import (
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"github.com/AdguardTeam/AdGuardHome/internal/aghstrings"
|
||||
"github.com/AdguardTeam/AdGuardHome/internal/aghtest"
|
||||
"github.com/AdguardTeam/dnsproxy/upstream"
|
||||
"github.com/AdguardTeam/golibs/cache"
|
||||
@@ -82,7 +83,7 @@ func TestRDNS_Begin(t *testing.T) {
|
||||
list: map[string]*Client{},
|
||||
idIndex: tc.cliIDIndex,
|
||||
ipToRC: map[string]*RuntimeClient{},
|
||||
allTags: map[string]bool{},
|
||||
allTags: aghstrings.NewSet(),
|
||||
},
|
||||
}
|
||||
ipCache.Clear()
|
||||
@@ -172,7 +173,7 @@ func TestRDNS_WorkerLoop(t *testing.T) {
|
||||
list: map[string]*Client{},
|
||||
idIndex: map[string]*Client{},
|
||||
ipToRC: map[string]*RuntimeClient{},
|
||||
allTags: map[string]bool{},
|
||||
allTags: aghstrings.NewSet(),
|
||||
}
|
||||
ch := make(chan net.IP)
|
||||
rdns := &RDNS{
|
||||
|
||||
Reference in New Issue
Block a user