Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion admin/handlers/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,6 @@ replace github.com/jmpsec/osctrl/utils => ../../utils

require (
github.com/gorilla/mux v1.8.0
github.com/jinzhu/gorm v1.9.16
github.com/jmpsec/osctrl/admin/sessions v0.0.0-20220120232002-31ecf3b9f264
github.com/jmpsec/osctrl/backend v0.0.0-20220120232002-31ecf3b9f264 // indirect
github.com/jmpsec/osctrl/carves v0.0.0-20220120232002-31ecf3b9f264
Expand Down
8 changes: 4 additions & 4 deletions admin/handlers/templates.go
Original file line number Diff line number Diff line change
Expand Up @@ -854,10 +854,10 @@ func (h *HandlersAdmin) EnrollGETHandler(w http.ResponseWriter, r *http.Request)
return
}
// Prepare template data
shellQuickAdd, _ := environments.QuickAddOneLinerShell(env)
powershellQuickAdd, _ := environments.QuickAddOneLinerPowershell(env)
shellQuickRemove, _ := environments.QuickRemoveOneLinerShell(env)
powershellQuickRemove, _ := environments.QuickRemoveOneLinerPowershell(env)
shellQuickAdd, _ := environments.QuickAddOneLinerShell((env.Certificate != ""), env)
powershellQuickAdd, _ := environments.QuickAddOneLinerPowershell((env.Certificate != ""), env)
shellQuickRemove, _ := environments.QuickRemoveOneLinerShell((env.Certificate != ""), env)
powershellQuickRemove, _ := environments.QuickRemoveOneLinerPowershell((env.Certificate != ""), env)
templateData := EnrollTemplateData{
Title: env.Name + " Enroll",
Metadata: h.TemplateMetadata(ctx, h.ServiceVersion),
Expand Down
5 changes: 3 additions & 2 deletions cli/environment.go
Original file line number Diff line number Diff line change
Expand Up @@ -246,12 +246,13 @@ func quickAddEnvironment(c *cli.Context) error {
if err != nil {
return err
}
insecure := c.Bool("insecure")
var oneLiner string
switch c.String("target") {
case targetShell:
oneLiner, _ = environments.QuickAddOneLinerShell(env)
oneLiner, _ = environments.QuickAddOneLinerShell(insecure, env)
case targetPowershell:
oneLiner, _ = environments.QuickAddOneLinerPowershell(env)
oneLiner, _ = environments.QuickAddOneLinerPowershell(insecure, env)
default:
fmt.Printf("Invalid target! It can be %s or %s\n", targetShell, targetPowershell)
os.Exit(1)
Expand Down
6 changes: 6 additions & 0 deletions cli/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -642,6 +642,12 @@ func init() {
Value: "sh",
Usage: "Type of one-liner",
},
&cli.BoolFlag{
Name: "insecure",
Aliases: []string{"i"},
Value: false,
Usage: "Generate insecure one-liner",
},
},
Action: cliWrapper(quickAddEnvironment),
},
Expand Down
3 changes: 2 additions & 1 deletion environments/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,15 @@ go 1.17

require (
github.com/google/uuid v1.3.0
github.com/jinzhu/gorm v1.9.16
github.com/segmentio/ksuid v1.0.4
github.com/stretchr/testify v1.7.0
gorm.io/gorm v1.23.3
)

require (
github.com/davecgh/go-spew v1.1.1 // indirect
github.com/jinzhu/inflection v1.0.0 // indirect
github.com/jinzhu/now v1.1.4 // indirect
github.com/pmezard/go-difflib v1.0.0 // indirect
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b // indirect
)
36 changes: 22 additions & 14 deletions environments/oneliners.go
Original file line number Diff line number Diff line change
Expand Up @@ -30,13 +30,21 @@ const (
EnrollPowershell = EnrollTarget + PowershellTarget
// RemovePowershell for remove powershell
RemovePowershell = RemoveTarget + PowershellTarget
// TemplateAddShell for template name
TemplateAddShell = "quick-add.sh"
// TemplateRemoveShell for template name
TemplateRemoveShell = "quick-remove.sh"
// TemplateAddPowershell for template name
TemplateAddPowershell = "quick-add.ps1"
// TemplateRemovePowershell for template name
TemplateRemovePowershell = "quick-remove.ps1"
)

// PrepareOneLiner generic to generate one-liners
func PrepareOneLiner(oneliner string, environment TLSEnvironment, target string) (string, error) {
func PrepareOneLiner(oneliner string, insecure bool, environment TLSEnvironment, target string) (string, error) {
// Determine if insecure TLS is on
insecureTLS := ""
if environment.Certificate != "" {
if insecure {
if strings.HasSuffix(target, ShellTarget) {
insecureTLS = InsecureShellTLS
} else if strings.HasSuffix(target, PowershellTarget) {
Expand Down Expand Up @@ -72,31 +80,31 @@ func PrepareOneLiner(oneliner string, environment TLSEnvironment, target string)
}

// QuickAddOneLinerShell to get the quick add one-liner for Linux/OSX nodes
func QuickAddOneLinerShell(environment TLSEnvironment) (string, error) {
func QuickAddOneLinerShell(insecure bool, environment TLSEnvironment) (string, error) {
s := `curl -s{{ .InsecureTLS }} https://{{ .TLSHost }}/{{ .Environment }}/{{ .SecretPath }}/enroll.sh | sh`
return PrepareOneLiner(s, environment, EnrollShell)
return PrepareOneLiner(s, insecure, environment, EnrollShell)
}

// QuickRemoveOneLinerShell to get the quick remove one-liner for Linux/OSX nodes
func QuickRemoveOneLinerShell(environment TLSEnvironment) (string, error) {
func QuickRemoveOneLinerShell(insecure bool, environment TLSEnvironment) (string, error) {
s := `curl -s{{ .InsecureTLS }} https://{{ .TLSHost }}/{{ .Environment }}/{{ .SecretPath }}/remove.sh | sh`
return PrepareOneLiner(s, environment, RemoveShell)
return PrepareOneLiner(s, insecure, environment, RemoveShell)
}

// QuickAddOneLinerPowershell to get the quick add one-liner for Windows nodes
func QuickAddOneLinerPowershell(environment TLSEnvironment) (string, error) {
func QuickAddOneLinerPowershell(insecure bool, environment TLSEnvironment) (string, error) {
s := `Set-ExecutionPolicy Bypass -Scope Process -Force;
{{ .InsecureTLS }}
iex ((New-Object System.Net.WebClient).DownloadString('https://{{ .TLSHost }}/{{ .Environment }}/{{ .SecretPath }}/enroll.ps1'))`
return PrepareOneLiner(s, environment, EnrollPowershell)
return PrepareOneLiner(s, insecure, environment, EnrollPowershell)
}

// QuickRemoveOneLinerPowershell to get the quick remove one-liner for Windows nodes
func QuickRemoveOneLinerPowershell(environment TLSEnvironment) (string, error) {
func QuickRemoveOneLinerPowershell(insecure bool, environment TLSEnvironment) (string, error) {
s := `Set-ExecutionPolicy Bypass -Scope Process -Force;
{{ .InsecureTLS }}
iex ((New-Object System.Net.WebClient).DownloadString('https://{{ .TLSHost }}/{{ .Environment }}/{{ .SecretPath }}/remove.ps1'))`
return PrepareOneLiner(s, environment, RemovePowershell)
return PrepareOneLiner(s, insecure, environment, RemovePowershell)
}

// QuickAddScript to get a quick add script for a environment
Expand All @@ -105,16 +113,16 @@ func QuickAddScript(project, script string, environment TLSEnvironment) (string,
// What script is it?
switch script {
case EnrollShell:
templateName = "quick-add.sh"
templateName = TemplateAddShell
templateScript = QuickAddScriptShell
case EnrollPowershell:
templateName = "quick-add.ps1"
templateName = TemplateAddPowershell
templateScript = QuickAddScriptPowershell
case RemoveShell:
templateName = "quick-remove.sh"
templateName = TemplateRemoveShell
templateScript = QuickRemoveScriptShell
case RemovePowershell:
templateName = "quick-remove.ps1"
templateName = TemplateRemovePowershell
templateScript = QuickRemoveScriptPowershell
}
// Prepare template
Expand Down
20 changes: 10 additions & 10 deletions environments/oneliners_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,47 +10,47 @@ func TestPrepareOneLiner(t *testing.T) {
envTest := TLSEnvironment{
Certificate: "certificate",
Hostname: "hostname",
Name: "name",
UUID: "name",
RemoveSecretPath: "rPath",
EnrollSecretPath: "ePath",
}
tmpl := "oneliner {{ .InsecureTLS }} 1 {{ .TLSHost }} 2 {{ .Environment }} 3 {{ .SecretPath }}"
t.Run("empty", func(t *testing.T) {
oneliner, _ := PrepareOneLiner("", TLSEnvironment{}, "")
oneliner, _ := PrepareOneLiner("", true, TLSEnvironment{}, "")
assert.Equal(t, oneliner, "")
})
t.Run("not empty insecure enroll.sh", func(t *testing.T) {
oneliner, _ := PrepareOneLiner(tmpl, envTest, "enroll.sh")
oneliner, _ := PrepareOneLiner(tmpl, true, envTest, "enroll.sh")
assert.Equal(t, oneliner, "oneliner k 1 hostname 2 name 3 ePath")
})
t.Run("not empty insecure remove.sh", func(t *testing.T) {
oneliner, _ := PrepareOneLiner(tmpl, envTest, "remove.sh")
oneliner, _ := PrepareOneLiner(tmpl, true, envTest, "remove.sh")
assert.Equal(t, oneliner, "oneliner k 1 hostname 2 name 3 rPath")
})
t.Run("not empty insecure enroll.ps1", func(t *testing.T) {
oneliner, _ := PrepareOneLiner(tmpl, envTest, "enroll.ps1")
oneliner, _ := PrepareOneLiner(tmpl, true, envTest, "enroll.ps1")
assert.Equal(t, oneliner, "oneliner [System.Net.ServicePointManager]::ServerCertificateValidationCallback = {$true}; 1 hostname 2 name 3 ePath")
})
t.Run("not empty insecure remove.ps1", func(t *testing.T) {
oneliner, _ := PrepareOneLiner(tmpl, envTest, "remove.ps1")
oneliner, _ := PrepareOneLiner(tmpl, true, envTest, "remove.ps1")
assert.Equal(t, oneliner, "oneliner [System.Net.ServicePointManager]::ServerCertificateValidationCallback = {$true}; 1 hostname 2 name 3 rPath")
})
// Empty certificate means secure TLS
envTest.Certificate = ""
t.Run("not empty secure enroll.sh", func(t *testing.T) {
oneliner, _ := PrepareOneLiner(tmpl, envTest, "enroll.sh")
oneliner, _ := PrepareOneLiner(tmpl, false, envTest, "enroll.sh")
assert.Equal(t, oneliner, "oneliner 1 hostname 2 name 3 ePath")
})
t.Run("not empty secure remove.sh", func(t *testing.T) {
oneliner, _ := PrepareOneLiner(tmpl, envTest, "remove.sh")
oneliner, _ := PrepareOneLiner(tmpl, false, envTest, "remove.sh")
assert.Equal(t, oneliner, "oneliner 1 hostname 2 name 3 rPath")
})
t.Run("not empty secure enroll.ps1", func(t *testing.T) {
oneliner, _ := PrepareOneLiner(tmpl, envTest, "enroll.ps1")
oneliner, _ := PrepareOneLiner(tmpl, false, envTest, "enroll.ps1")
assert.Equal(t, oneliner, "oneliner 1 hostname 2 name 3 ePath")
})
t.Run("not empty secure remove.ps1", func(t *testing.T) {
oneliner, _ := PrepareOneLiner(tmpl, envTest, "remove.ps1")
oneliner, _ := PrepareOneLiner(tmpl, false, envTest, "remove.ps1")
assert.Equal(t, oneliner, "oneliner 1 hostname 2 name 3 rPath")
})
}
11 changes: 5 additions & 6 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ require (
github.com/olekukonko/tablewriter v0.0.5
github.com/spf13/viper v1.10.1
github.com/urfave/cli/v2 v2.3.0
gorm.io/gorm v1.22.5
gorm.io/gorm v1.23.3
)

require (
Expand All @@ -86,14 +86,12 @@ require (
github.com/jackc/pgpassfile v1.0.0 // indirect
github.com/jackc/pgproto3/v2 v2.2.0 // indirect
github.com/jackc/pgservicefile v0.0.0-20200714003250-2b9c44734f2b // indirect
github.com/jackc/pgtype v1.9.0 // indirect
github.com/jackc/pgx/v4 v4.14.0 // indirect
github.com/jinzhu/gorm v1.9.16 // indirect
github.com/jackc/pgtype v1.9.1 // indirect
github.com/jackc/pgx/v4 v4.14.1 // indirect
github.com/jinzhu/inflection v1.0.0 // indirect
github.com/jinzhu/now v1.1.4 // indirect
github.com/jmespath/go-jmespath v0.4.0 // indirect
github.com/jonboulle/clockwork v0.2.2 // indirect
github.com/lib/pq v1.10.4 // indirect
github.com/magiconair/properties v1.8.5 // indirect
github.com/mattermost/xml-roundtrip-validator v0.1.0 // indirect
github.com/mattn/go-runewidth v0.0.13 // indirect
Expand All @@ -116,5 +114,6 @@ require (
gopkg.in/ini.v1 v1.66.3 // indirect
gopkg.in/natefinch/lumberjack.v2 v2.0.0 // indirect
gopkg.in/yaml.v2 v2.4.0 // indirect
gorm.io/driver/postgres v1.2.3 // indirect
gorm.io/driver/mysql v1.2.3
gorm.io/driver/postgres v1.3.1 // indirect
)
20 changes: 18 additions & 2 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,7 @@ github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6r
github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs=
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
github.com/census-instrumentation/opencensus-proto v0.3.0/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko=
github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc=
github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
github.com/cespare/xxhash/v2 v2.1.2 h1:YRXhKfTDauu4ajMg1TPgFO5jnlC2HCbmLXMcTG5cbYE=
Expand Down Expand Up @@ -151,6 +152,7 @@ github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG
github.com/go-redis/redis/v8 v8.11.4 h1:kHoYkfZP6+pe04aFTnhDH6GDROa5yJdHJVNxV3F46Tg=
github.com/go-redis/redis/v8 v8.11.4/go.mod h1:2Z2wHZXdQpCDXEGzqMockDpNyYvi2l4Pxt6RJr792+w=
github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg=
github.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg=
github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE=
github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
Expand Down Expand Up @@ -316,22 +318,26 @@ github.com/jackc/pgtype v0.0.0-20190828014616-a8802b16cc59/go.mod h1:MWlu30kVJrU
github.com/jackc/pgtype v1.8.1-0.20210724151600-32e20a603178/go.mod h1:C516IlIV9NKqfsMCXTdChteoXmwgUceqaLfjg2e3NlM=
github.com/jackc/pgtype v1.9.0 h1:/SH1RxEtltvJgsDqp3TbiTFApD3mey3iygpuEGeuBXk=
github.com/jackc/pgtype v1.9.0/go.mod h1:LUMuVrfsFfdKGLw+AFFVv6KtHOFMwRgDDzBt76IqCA4=
github.com/jackc/pgtype v1.9.1 h1:MJc2s0MFS8C3ok1wQTdQxWuXQcB6+HwAm5x1CzW7mf0=
github.com/jackc/pgtype v1.9.1/go.mod h1:LUMuVrfsFfdKGLw+AFFVv6KtHOFMwRgDDzBt76IqCA4=
github.com/jackc/pgx/v4 v4.0.0-20190420224344-cc3461e65d96/go.mod h1:mdxmSJJuR08CZQyj1PVQBHy9XOp5p8/SHH6a0psbY9Y=
github.com/jackc/pgx/v4 v4.0.0-20190421002000-1b8f0016e912/go.mod h1:no/Y67Jkk/9WuGR0JG/JseM9irFbnEPbuWV2EELPNuM=
github.com/jackc/pgx/v4 v4.0.0-pre1.0.20190824185557-6972a5742186/go.mod h1:X+GQnOEnf1dqHGpw7JmHqHc1NxDoalibchSk9/RWuDc=
github.com/jackc/pgx/v4 v4.12.1-0.20210724153913-640aa07df17c/go.mod h1:1QD0+tgSXP7iUjYm9C1NxKhny7lq6ee99u/z+IHFcgs=
github.com/jackc/pgx/v4 v4.14.0 h1:TgdrmgnM7VY72EuSQzBbBd4JA1RLqJolrw9nQVZABVc=
github.com/jackc/pgx/v4 v4.14.0/go.mod h1:jT3ibf/A0ZVCp89rtCIN0zCJxcE74ypROmHEZYsG/j8=
github.com/jackc/pgx/v4 v4.14.1 h1:71oo1KAGI6mXhLiTMn6iDFcp3e7+zon/capWjl2OEFU=
github.com/jackc/pgx/v4 v4.14.1/go.mod h1:RgDuE4Z34o7XE92RpLsvFiOEfrAUT0Xt2KxvX73W06M=
github.com/jackc/puddle v0.0.0-20190413234325-e4ced69a3a2b/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk=
github.com/jackc/puddle v0.0.0-20190608224051-11cab39313c9/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk=
github.com/jackc/puddle v1.1.3/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk=
github.com/jackc/puddle v1.2.0/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk=
github.com/jinzhu/gorm v1.9.16 h1:+IyIjPEABKRpsu/F8OvDPy9fyQlgsg2luMV2ZIH5i5o=
github.com/jinzhu/gorm v1.9.16/go.mod h1:G3LB3wezTOWM2ITLzPxEXgSkOXAntiLHS7UdBefADcs=
github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E=
github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc=
github.com/jinzhu/now v1.0.1/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8=
github.com/jinzhu/now v1.1.2/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8=
github.com/jinzhu/now v1.1.3/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8=
github.com/jinzhu/now v1.1.4 h1:tHnRBy1i5F2Dh8BAFxqFzxKqqvezXrL2OW1TnX+Mlas=
github.com/jinzhu/now v1.1.4/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8=
github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg=
Expand Down Expand Up @@ -410,14 +416,17 @@ github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3Rllmb
github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A=
github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE=
github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU=
github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec=
github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY=
github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk=
github.com/onsi/ginkgo v1.16.4 h1:29JGrr5oVBm5ulCWet69zQkzWipVXIol6ygQUe/EzNc=
github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0=
github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY=
github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo=
github.com/onsi/gomega v1.16.0 h1:6gjqkI8iiRHMvdccRJM8rVKjCWk6ZIm6FTm3ddIe4/c=
github.com/onsi/gomega v1.16.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY=
github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc=
github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc=
Expand Down Expand Up @@ -990,6 +999,7 @@ gopkg.in/ini.v1 v1.66.3 h1:jRskFVxYaMGAMUbN0UZ7niA9gzL9B49DOqE78vg0k3w=
gopkg.in/ini.v1 v1.66.3/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
gopkg.in/natefinch/lumberjack.v2 v2.0.0 h1:1Lc07Kr7qY4U2YPouBjpCLxpiyxIVoxqXgkXLknAOE8=
gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k=
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ=
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw=
gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
Expand All @@ -1003,11 +1013,17 @@ gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo=
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gorm.io/driver/mysql v1.2.3/go.mod h1:qsiz+XcAyMrS6QY+X3M9R6b/lKM1imKmcuK9kac5LTo=
gorm.io/driver/postgres v1.2.3 h1:f4t0TmNMy9gh3TU2PX+EppoA6YsgFnyq8Ojtddb42To=
gorm.io/driver/postgres v1.2.3/go.mod h1:pJV6RgYQPG47aM1f0QeOzFH9HxQc8JcmAgjRCgS0wjs=
gorm.io/driver/postgres v1.3.1 h1:Pyv+gg1Gq1IgsLYytj/S2k7ebII3CzEdpqQkPOdH24g=
gorm.io/driver/postgres v1.3.1/go.mod h1:WwvWOuR9unCLpGWCL6Y3JOeBWvbKi6JLhayiVclSZZU=
gorm.io/gorm v1.22.3/go.mod h1:F+OptMscr0P2F2qU97WT1WimdH9GaQPoDW7AYd5i2Y0=
gorm.io/gorm v1.22.5 h1:lYREBgc02Be/5lSCTuysZZDb6ffL2qrat6fg9CFbvXU=
gorm.io/gorm v1.22.4/go.mod h1:1aeVC+pe9ZmvKZban/gW4QPra7PRoTEssyc922qCAkk=
gorm.io/gorm v1.22.5/go.mod h1:l2lP/RyAtc1ynaTjFksBde/O8v9oOGIApu2/xRitmZk=
gorm.io/gorm v1.23.1/go.mod h1:l2lP/RyAtc1ynaTjFksBde/O8v9oOGIApu2/xRitmZk=
gorm.io/gorm v1.23.3 h1:jYh3nm7uLZkrMVfA8WVNjDZryKfr7W+HTlInVgKFJAg=
gorm.io/gorm v1.23.3/go.mod h1:l2lP/RyAtc1ynaTjFksBde/O8v9oOGIApu2/xRitmZk=
gotest.tools v2.2.0+incompatible h1:VsBPFP1AI068pPrMxtb/S8Zkgf9xEmTLJjfM+P5UIEo=
gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw=
honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
Expand Down
Loading