Files
MeowBox-Core/internal/service/struct.go
2025-11-22 22:57:54 +08:00

55 lines
1.6 KiB
Go

package service
// Config represents the full configuration structure
type Config struct {
Server struct {
Host string `json:"host"`
Port int `json:"port"`
Tls struct {
Enabled bool `json:"enabled"`
Cert string `json:"cert_file"`
Key string `json:"key_file"`
} `json:"tls"`
Advanced struct {
Readtimeout int `json:"read_timeout"`
Writetimeout int `json:"write_timeout"`
Idletimeout int `json:"idle_timeout"`
Maxheaderbytes int `json:"max_header_bytes"`
} `json:"advanced"`
} `json:"server"`
Password struct {
Memory uint32 `json:"memory"`
Iterations uint32 `json:"iterations"`
Parallelism uint8 `json:"parallelism"`
SaltLength uint32 `json:"salt_length"`
KeyLength uint32 `json:"key_length"`
} `json:"password"`
Database struct {
Driver string `json:"driver"`
Host string `json:"host"`
Port int `json:"port"`
Username string `json:"username"`
Password string `json:"password"`
Database string `json:"database"`
Prefix string `json:"prefix"`
} `json:"database"`
}
// Argon2Params defines the parameters for Argon2id (adjustable based on server performance)
type Argon2Params struct {
Memory uint32 // Memory usage (KiB), recommended 64*1024 = 64MB
Iterations uint32 // Time cost, recommended 1-3
Parallelism uint8 // Number of parallel threads, recommended 2-4
SaltLength uint32 // Salt length, recommended 16 bytes
KeyLength uint32 // Output hash length, recommended 32 bytes
}
// hashParts Used to parse stored hash strings
type HashParts struct {
Memory uint32
Iterations uint32
Parallelism uint8
SaltBase64 string
HashBase64 string
}