From 4f1b4c132db50b9b6469ba8aadc80347a6bc522e Mon Sep 17 00:00:00 2001 From: Michael Kuc Date: Sun, 4 Feb 2024 22:16:49 +0000 Subject: [PATCH 1/3] fix: use relative DB path Uses a relative DB path, to enable building and running outside the container. --- main.go | 2 +- src/sshwordle/results.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/main.go b/main.go index 48d6af8..4474fde 100644 --- a/main.go +++ b/main.go @@ -27,7 +27,7 @@ func main() { } func migrateDb() { - m, err := migrate.New("file://./migrations/", "sqlite:///app/db.sqlite") + m, err := migrate.New("file://./migrations/", "sqlite://db.sqlite") if err != nil { log.Fatal(err) } diff --git a/src/sshwordle/results.go b/src/sshwordle/results.go index 30aa2b8..56c2ba4 100644 --- a/src/sshwordle/results.go +++ b/src/sshwordle/results.go @@ -8,7 +8,7 @@ import ( ) func openDb() *sql.DB { - db, err := sql.Open("sqlite", "file:///app/db.sqlite") + db, err := sql.Open("sqlite", "file:db.sqlite") if err != nil { log.Panic(err) } From 31b781328b9397f5a9e842cc1187d9405ced7146 Mon Sep 17 00:00:00 2001 From: Michael Kuc Date: Sun, 4 Feb 2024 22:17:26 +0000 Subject: [PATCH 2/3] feat: add password authentication Allows password authentication for if no default public key authentication has been configured. --- src/sshwordle/game.go | 7 ++++--- src/sshwordle/results.go | 3 ++- src/sshwordle/server.go | 5 +++++ src/sshwordle/utils.go | 11 +++++++++-- 4 files changed, 20 insertions(+), 6 deletions(-) diff --git a/src/sshwordle/game.go b/src/sshwordle/game.go index 1eaed0b..de25e98 100644 --- a/src/sshwordle/game.go +++ b/src/sshwordle/game.go @@ -3,13 +3,14 @@ package sshwordle import ( "database/sql" "fmt" - "github.com/charmbracelet/bubbles/progress" - "github.com/charmbracelet/ssh" "log" - _ "modernc.org/sqlite" "strings" "time" + "github.com/charmbracelet/bubbles/progress" + "github.com/charmbracelet/ssh" + _ "modernc.org/sqlite" + "github.com/charmbracelet/bubbles/stopwatch" "github.com/charmbracelet/bubbles/viewport" tea "github.com/charmbracelet/bubbletea" diff --git a/src/sshwordle/results.go b/src/sshwordle/results.go index 56c2ba4..c092dbe 100644 --- a/src/sshwordle/results.go +++ b/src/sshwordle/results.go @@ -2,9 +2,10 @@ package sshwordle import ( "database/sql" - tea "github.com/charmbracelet/bubbletea" "log" "time" + + tea "github.com/charmbracelet/bubbletea" ) func openDb() *sql.DB { diff --git a/src/sshwordle/server.go b/src/sshwordle/server.go index cb27ec5..cc28380 100644 --- a/src/sshwordle/server.go +++ b/src/sshwordle/server.go @@ -22,6 +22,7 @@ func StartServer(host string, port int, useApi bool) { s, err := wish.NewServer( wish.WithAddress(fmt.Sprintf("%s:%d", host, port)), wish.WithPublicKeyAuth(publicKeyHandler), + wish.WithPasswordAuth(passwordHandler), wish.WithHostKeyPath(".ssh/term_info_ed25519"), wish.WithMiddleware( teaMiddleware.Middleware(sshwordleTeaHandler(useApi)), @@ -55,6 +56,10 @@ func publicKeyHandler(_ctx ssh.Context, _key ssh.PublicKey) bool { return true } +func passwordHandler(_ ssh.Context, _ string) bool { + return true +} + func sshwordleTeaHandler(useApi bool) teaMiddleware.Handler { return func(session ssh.Session) (tea.Model, []tea.ProgramOption) { pty, _, active := session.Pty() diff --git a/src/sshwordle/utils.go b/src/sshwordle/utils.go index b70dea4..c4fa34d 100644 --- a/src/sshwordle/utils.go +++ b/src/sshwordle/utils.go @@ -3,8 +3,9 @@ package sshwordle import ( "crypto/sha256" "fmt" - "github.com/charmbracelet/ssh" "regexp" + + "github.com/charmbracelet/ssh" ) var keys = []string{ @@ -39,7 +40,13 @@ func makeGuessesSlice() [][]*Guess { func makeIdentifier(session ssh.Session) string { h := sha256.New() - h.Write(session.PublicKey().Marshal()) + + if key := session.PublicKey(); key != nil { + h.Write(key.Marshal()) + } else { + h.Write([]byte(session.User())) + } + return fmt.Sprintf("%x", h.Sum(nil)) } From 22d55a6f7c6bcb2a37bd0ad65c5f4ae5b57d72ed Mon Sep 17 00:00:00 2001 From: Michael Kuc Date: Sun, 4 Feb 2024 22:18:02 +0000 Subject: [PATCH 3/3] chore: cleanup missing newline --- docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-compose.yml b/docker-compose.yml index feda168..326f4bd 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -5,4 +5,4 @@ services: - "1337:1337" working_dir: /app volumes: - - ./.ssh:/app/.ssh/ \ No newline at end of file + - ./.ssh:/app/.ssh/