41 lines
925 B
Go
41 lines
925 B
Go
package sslh
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
"path/filepath"
|
|
|
|
"sslh-multiplex-lab/internal/services"
|
|
)
|
|
|
|
func GenerateConfigFile(services []services.Service, serverIP, domain, outputPath string) error {
|
|
config, err := GenerateConfig(services, serverIP, domain)
|
|
if err != nil {
|
|
return fmt.Errorf("failed to generate config: %w", err)
|
|
}
|
|
|
|
configContent := config.ToLibConfig()
|
|
|
|
if err := os.MkdirAll(filepath.Dir(outputPath), 0755); err != nil {
|
|
return fmt.Errorf("failed to create config directory: %w", err)
|
|
}
|
|
|
|
if err := os.WriteFile(outputPath, []byte(configContent), 0644); err != nil {
|
|
return fmt.Errorf("failed to write config file: %w", err)
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
func ValidateConfig(config *Config) error {
|
|
if len(config.Listen) == 0 {
|
|
return fmt.Errorf("at least one listen address is required")
|
|
}
|
|
|
|
if len(config.Protocols) == 0 {
|
|
return fmt.Errorf("at least one protocol route is required")
|
|
}
|
|
|
|
return nil
|
|
}
|