github.com/polarismesh/polaris@v1.17.8/plugin/whitelist.go (about) 1 /** 2 * Tencent is pleased to support the open source community by making Polaris available. 3 * 4 * Copyright (C) 2019 THL A29 Limited, a Tencent company. All rights reserved. 5 * 6 * Licensed under the BSD 3-Clause License (the "License"); 7 * you may not use this file except in compliance with the License. 8 * You may obtain a copy of the License at 9 * 10 * https://opensource.org/licenses/BSD-3-Clause 11 * 12 * Unless required by applicable law or agreed to in writing, software distributed 13 * under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR 14 * CONDITIONS OF ANY KIND, either express or implied. See the License for the 15 * specific language governing permissions and limitations under the License. 16 */ 17 18 package plugin 19 20 import ( 21 "os" 22 "sync" 23 ) 24 25 var ( 26 whitelistOnce sync.Once 27 ) 28 29 // Whitelist White list interface 30 type Whitelist interface { 31 Plugin 32 33 Contain(entry interface{}) bool 34 } 35 36 // GetWhitelist Get the whitelist plugin 37 func GetWhitelist() Whitelist { 38 c := &config.Whitelist 39 plugin, exist := pluginSet[c.Name] 40 if !exist { 41 return nil 42 } 43 whitelistOnce.Do(func() { 44 if err := plugin.Initialize(c); err != nil { 45 log.Errorf("Whitelist plugin init err: %s", err.Error()) 46 os.Exit(-1) 47 } 48 }) 49 return plugin.(Whitelist) 50 }