From 75dc1c154885c4d3a19586e6e1e300dafefa4189 Mon Sep 17 00:00:00 2001 From: Dan Sosedoff Date: Mon, 5 Jun 2017 21:29:09 -0500 Subject: [PATCH] Fall back to sslmode=disable if ssl mode is not set or invalid in bookmarks --- data/bookmark_invalid_ssl.toml | 5 +++++ pkg/bookmarks/bookmarks.go | 17 +++++++++++++++++ pkg/bookmarks/bookmarks_test.go | 9 ++++++--- 3 files changed, 28 insertions(+), 3 deletions(-) create mode 100644 data/bookmark_invalid_ssl.toml diff --git a/data/bookmark_invalid_ssl.toml b/data/bookmark_invalid_ssl.toml new file mode 100644 index 0000000..4dddcda --- /dev/null +++ b/data/bookmark_invalid_ssl.toml @@ -0,0 +1,5 @@ +host = "localhost" +port = 5432 +user = "postgres" +database = "mydatabase" +ssl = "disabled" diff --git a/pkg/bookmarks/bookmarks.go b/pkg/bookmarks/bookmarks.go index 2b7d26c..0a16c1f 100644 --- a/pkg/bookmarks/bookmarks.go +++ b/pkg/bookmarks/bookmarks.go @@ -54,6 +54,23 @@ func readServerConfig(path string) (Bookmark, error) { bookmark.Port = 5432 } + // List of all supported by portgres modes + modes := []string{"disable", "allow", "prefer", "required", "verify-ca", "verify-full"} + valid := false + + for _, mode := range modes { + if bookmark.Ssl == mode { + valid = true + break + } + } + + // Fall back to a default mode if mode is not set or invalid + // Typical typo: ssl mode set to "disabled" + if bookmark.Ssl == "" || !valid { + bookmark.Ssl = "disable" + } + return bookmark, err } diff --git a/pkg/bookmarks/bookmarks_test.go b/pkg/bookmarks/bookmarks_test.go index 7ad71fd..ae1189b 100644 --- a/pkg/bookmarks/bookmarks_test.go +++ b/pkg/bookmarks/bookmarks_test.go @@ -19,7 +19,6 @@ func Test_Invalid_Bookmark_Files(t *testing.T) { func Test_Bookmark(t *testing.T) { bookmark, err := readServerConfig("../../data/bookmark.toml") - assert.Equal(t, nil, err) assert.Equal(t, "localhost", bookmark.Host) assert.Equal(t, 5432, bookmark.Port) @@ -28,6 +27,10 @@ func Test_Bookmark(t *testing.T) { assert.Equal(t, "disable", bookmark.Ssl) assert.Equal(t, "", bookmark.Password) assert.Equal(t, "", bookmark.Url) + + bookmark, err = readServerConfig("../../data/bookmark_invalid_ssl.toml") + assert.Equal(t, nil, err) + assert.Equal(t, "disable", bookmark.Ssl) } func Test_Bookmark_URL(t *testing.T) { @@ -39,7 +42,7 @@ func Test_Bookmark_URL(t *testing.T) { assert.Equal(t, 5432, bookmark.Port) assert.Equal(t, "", bookmark.User) assert.Equal(t, "", bookmark.Database) - assert.Equal(t, "", bookmark.Ssl) + assert.Equal(t, "disable", bookmark.Ssl) assert.Equal(t, "", bookmark.Password) } @@ -65,7 +68,7 @@ func Test_ReadBookmarks(t *testing.T) { bookmarks, err := ReadAll("../../data") assert.Equal(t, nil, err) - assert.Equal(t, 2, len(bookmarks)) + assert.Equal(t, 3, len(bookmarks)) } func Test_GetBookmark(t *testing.T) {