代码整理
This commit is contained in:
123
config/hook.go
Normal file
123
config/hook.go
Normal file
@@ -0,0 +1,123 @@
|
||||
package config
|
||||
|
||||
import (
|
||||
"testmqtt/hooks/auth"
|
||||
"testmqtt/hooks/debug"
|
||||
"testmqtt/hooks/storage/badger"
|
||||
"testmqtt/hooks/storage/bolt"
|
||||
"testmqtt/hooks/storage/pebble"
|
||||
"testmqtt/hooks/storage/redis"
|
||||
"testmqtt/mqtt"
|
||||
)
|
||||
|
||||
// HookConfigs 全部Hook的配置
|
||||
// HookConfigs contains configurations to enable individual hooks.
|
||||
type HookConfigs struct {
|
||||
Auth *HookAuthConfig `yaml:"auth" json:"auth"` // Auth AuthHook配置
|
||||
Storage *HookStorageConfig `yaml:"storage" json:"storage"` // Storage StorageHook配置
|
||||
Debug *debug.Options `yaml:"debug" json:"debug"` // Debug DebugHook配置
|
||||
}
|
||||
|
||||
// HookAuthConfig AuthHook的配置
|
||||
// HookAuthConfig contains configurations for the auth hook.
|
||||
type HookAuthConfig struct {
|
||||
Ledger auth.Ledger `yaml:"ledger" json:"ledger"`
|
||||
AllowAll bool `yaml:"allow_all" json:"allow_all"`
|
||||
}
|
||||
|
||||
// HookStorageConfig StorageHook的配置
|
||||
// HookStorageConfig contains configurations for the different storage hooks.
|
||||
type HookStorageConfig struct {
|
||||
Badger *badger.Options `yaml:"badger" json:"badger"`
|
||||
Bolt *bolt.Options `yaml:"bolt" json:"bolt"`
|
||||
Pebble *pebble.Options `yaml:"pebble" json:"pebble"`
|
||||
Redis *redis.Options `yaml:"redis" json:"redis"`
|
||||
}
|
||||
|
||||
// HookDebugConfig DebugHook的配置
|
||||
// HookDebugConfig contains configuration settings for the debug output.
|
||||
type HookDebugConfig struct {
|
||||
Enable bool `yaml:"enable" json:"enable"` // non-zero field for enabling hook using file-based config
|
||||
ShowPacketData bool `yaml:"show_packet_data" json:"show_packet_data"` // include decoded packet data (default false)
|
||||
ShowPings bool `yaml:"show_pings" json:"show_pings"` // show ping requests and responses (default false)
|
||||
ShowPasswords bool `yaml:"show_passwords" json:"show_passwords"` // show connecting user passwords (default false)
|
||||
}
|
||||
|
||||
// ToHooks converts Hook file configurations into Hooks to be added to the server.
|
||||
func (hc HookConfigs) ToHooks() []mqtt.HookLoadConfig {
|
||||
var hlc []mqtt.HookLoadConfig
|
||||
|
||||
if hc.Auth != nil {
|
||||
hlc = append(hlc, hc.toHooksAuth()...)
|
||||
}
|
||||
|
||||
if hc.Storage != nil {
|
||||
hlc = append(hlc, hc.toHooksStorage()...)
|
||||
}
|
||||
|
||||
if hc.Debug != nil {
|
||||
hlc = append(hlc, mqtt.HookLoadConfig{
|
||||
Hook: new(debug.Hook),
|
||||
Config: hc.Debug,
|
||||
})
|
||||
}
|
||||
|
||||
return hlc
|
||||
}
|
||||
|
||||
// toHooksAuth converts auth hook configurations into auth hooks.
|
||||
func (hc HookConfigs) toHooksAuth() []mqtt.HookLoadConfig {
|
||||
var hlc []mqtt.HookLoadConfig
|
||||
if hc.Auth.AllowAll {
|
||||
hlc = append(hlc, mqtt.HookLoadConfig{
|
||||
Hook: new(auth.AllowHook),
|
||||
})
|
||||
} else {
|
||||
hlc = append(hlc, mqtt.HookLoadConfig{
|
||||
Hook: new(auth.Hook),
|
||||
Config: &auth.Options{
|
||||
Ledger: &auth.Ledger{ // avoid copying sync.Locker
|
||||
Users: hc.Auth.Ledger.Users,
|
||||
Auth: hc.Auth.Ledger.Auth,
|
||||
ACL: hc.Auth.Ledger.ACL,
|
||||
},
|
||||
},
|
||||
})
|
||||
}
|
||||
return hlc
|
||||
}
|
||||
|
||||
// toHooksAuth converts storage hook configurations into storage hooks.
|
||||
func (hc HookConfigs) toHooksStorage() []mqtt.HookLoadConfig {
|
||||
|
||||
var hlc []mqtt.HookLoadConfig
|
||||
|
||||
if hc.Storage.Badger != nil {
|
||||
hlc = append(hlc, mqtt.HookLoadConfig{
|
||||
Hook: new(badger.Hook),
|
||||
Config: hc.Storage.Badger,
|
||||
})
|
||||
}
|
||||
|
||||
if hc.Storage.Bolt != nil {
|
||||
hlc = append(hlc, mqtt.HookLoadConfig{
|
||||
Hook: new(bolt.Hook),
|
||||
Config: hc.Storage.Bolt,
|
||||
})
|
||||
}
|
||||
|
||||
if hc.Storage.Redis != nil {
|
||||
hlc = append(hlc, mqtt.HookLoadConfig{
|
||||
Hook: new(redis.Hook),
|
||||
Config: hc.Storage.Redis,
|
||||
})
|
||||
}
|
||||
|
||||
if hc.Storage.Pebble != nil {
|
||||
hlc = append(hlc, mqtt.HookLoadConfig{
|
||||
Hook: new(pebble.Hook),
|
||||
Config: hc.Storage.Pebble,
|
||||
})
|
||||
}
|
||||
return hlc
|
||||
}
|
||||
Reference in New Issue
Block a user