mirror of
https://github.com/DeBrosOfficial/network.git
synced 2026-01-30 16:03:02 +00:00
60 lines
2.6 KiB
Go
60 lines
2.6 KiB
Go
package config
|
|
|
|
import "time"
|
|
|
|
// DatabaseConfig contains database-related configuration
|
|
type DatabaseConfig struct {
|
|
DataDir string `yaml:"data_dir"`
|
|
ReplicationFactor int `yaml:"replication_factor"`
|
|
ShardCount int `yaml:"shard_count"`
|
|
MaxDatabaseSize int64 `yaml:"max_database_size"` // In bytes
|
|
BackupInterval time.Duration `yaml:"backup_interval"`
|
|
|
|
// RQLite-specific configuration
|
|
RQLitePort int `yaml:"rqlite_port"` // RQLite HTTP API port
|
|
RQLiteRaftPort int `yaml:"rqlite_raft_port"` // RQLite Raft consensus port
|
|
RQLiteJoinAddress string `yaml:"rqlite_join_address"` // Address to join RQLite cluster
|
|
|
|
// RQLite node-to-node TLS encryption (for inter-node Raft communication)
|
|
// See: https://rqlite.io/docs/guides/security/#encrypting-node-to-node-communication
|
|
NodeCert string `yaml:"node_cert"` // Path to X.509 certificate for node-to-node communication
|
|
NodeKey string `yaml:"node_key"` // Path to X.509 private key for node-to-node communication
|
|
NodeCACert string `yaml:"node_ca_cert"` // Path to CA certificate (optional, uses system CA if not set)
|
|
NodeNoVerify bool `yaml:"node_no_verify"` // Skip certificate verification (for testing/self-signed certs)
|
|
|
|
// Dynamic discovery configuration (always enabled)
|
|
ClusterSyncInterval time.Duration `yaml:"cluster_sync_interval"` // default: 30s
|
|
PeerInactivityLimit time.Duration `yaml:"peer_inactivity_limit"` // default: 24h
|
|
MinClusterSize int `yaml:"min_cluster_size"` // default: 1
|
|
|
|
// Olric cache configuration
|
|
OlricHTTPPort int `yaml:"olric_http_port"` // Olric HTTP API port (default: 3320)
|
|
OlricMemberlistPort int `yaml:"olric_memberlist_port"` // Olric memberlist port (default: 3322)
|
|
|
|
// IPFS storage configuration
|
|
IPFS IPFSConfig `yaml:"ipfs"`
|
|
}
|
|
|
|
// IPFSConfig contains IPFS storage configuration
|
|
type IPFSConfig struct {
|
|
// ClusterAPIURL is the IPFS Cluster HTTP API URL (e.g., "http://localhost:9094")
|
|
// If empty, IPFS storage is disabled for this node
|
|
ClusterAPIURL string `yaml:"cluster_api_url"`
|
|
|
|
// APIURL is the IPFS HTTP API URL for content retrieval (e.g., "http://localhost:5001")
|
|
// If empty, defaults to "http://localhost:5001"
|
|
APIURL string `yaml:"api_url"`
|
|
|
|
// Timeout for IPFS operations
|
|
// If zero, defaults to 60 seconds
|
|
Timeout time.Duration `yaml:"timeout"`
|
|
|
|
// ReplicationFactor is the replication factor for pinned content
|
|
// If zero, defaults to 3
|
|
ReplicationFactor int `yaml:"replication_factor"`
|
|
|
|
// EnableEncryption enables client-side encryption before upload
|
|
// Defaults to true
|
|
EnableEncryption bool `yaml:"enable_encryption"`
|
|
}
|