gommunicator/cmd/app/main.go

53 lines
1.3 KiB
Go

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
}