package main import ( "fmt" "os" "gommunicator/internal/communicator" "gommunicator/internal/config" "gommunicator/internal/input" "gommunicator/internal/logger" "gommunicator/internal/memory" "gommunicator/internal/ssh" "gommunicator/internal/usecase" ) const key = `-----BEGIN OPENSSH PRIVATE KEY----- b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW QyNTUxOQAAACC2W7jqv+IrEDb6dg2vR81uoUHnpCUueBZB0ajetr13hAAAAJjLUSTky1Ek 5AAAAAtzc2gtZWQyNTUxOQAAACC2W7jqv+IrEDb6dg2vR81uoUHnpCUueBZB0ajetr13hA AAAEA1C1fC0k8MZ5S5vjcg43y2//ikwDvRbOp6GsLLAn/ZzrZbuOq/4isQNvp2Da9HzW6h QeekJS54FkHRqN62vXeEAAAADnlhc2hAeWFzaC1hc3VzAQIDBAUGBw== -----END OPENSSH PRIVATE KEY-----` func main() { log := logger.SetupLogger("prod") cfg := config.MustParse() mem := memory.New() communicator := communicator.New().WithDefaultServerClient() uc := usecase.New(log, mem, communicator) go input.New(uc, log).Run() readServerPrivateKey(cfg.KeyFile) srv, err := ssh.New(log, uc, []byte(key)) if err != nil { panic(err) } if err := srv.Start(cfg.ServerAddr); err != nil { panic(err) } } func readServerPrivateKey(filename string) (string, error) { file, err := os.ReadFile(filename) if err != nil { return "", fmt.Errorf("failed to read private key in '%s': %w", filename, err) } return string(file), nil }