package main import ( "context" "errors" "log" "os" "os/signal" "syscall" "time" "teachat/internal" "github.com/charmbracelet/ssh" ) const ( port = 23234 host = "0.0.0.0" ) func main() { internal.InitDB() srv, err := internal.NewServer(host, port) if err != nil { log.Fatalln(err) } done := make(chan os.Signal, 1) signal.Notify(done, os.Interrupt, syscall.SIGINT, syscall.SIGTERM) log.Printf("Starting SSH server on %s:%d", host, port) go func() { if err = srv.ListenAndServe(); err != nil && !errors.Is(err, ssh.ErrServerClosed) { log.Fatalln(err) } }() <-done log.Println("Stopping server...") ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second) defer cancel() if err := srv.Shutdown(ctx); err != nil { log.Fatalln(err) } }