Skip to content
This repository has been archived by the owner on Oct 2, 2022. It is now read-only.

Commit

Permalink
First draft for the v2 API
Browse files Browse the repository at this point in the history
  • Loading branch information
Janos Pasztor committed Apr 15, 2021
1 parent 7781d4d commit 1765db2
Show file tree
Hide file tree
Showing 70 changed files with 159 additions and 159 deletions.
2 changes: 1 addition & 1 deletion AbstractHandler.go
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package sshserver
package v2

import (
"context"
Expand Down
15 changes: 8 additions & 7 deletions AbstractNetworkConnectionHandler.go
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package sshserver
package v2

import (
"context"
Expand All @@ -11,15 +11,15 @@ type AbstractNetworkConnectionHandler struct {

// OnAuthPassword is called when a user attempts a password authentication. The implementation must always supply
// AuthResponse and may supply error as a reason description.
func (a *AbstractNetworkConnectionHandler) OnAuthPassword(_ string, _ []byte) (response AuthResponse, reason error) {
return AuthResponseUnavailable, nil
func (a *AbstractNetworkConnectionHandler) OnAuthPassword(_ string, _ []byte, _ string) (response AuthResponse, metadata map[string]string, reason error) {
return AuthResponseUnavailable, nil, nil
}

// OnAuthPassword is called when a user attempts a pubkey authentication. The implementation must always supply
// AuthResponse and may supply error as a reason description. The pubKey parameter is an SSH key in
// the form of "ssh-rsa KEY HERE".
func (a *AbstractNetworkConnectionHandler) OnAuthPubKey(_ string, _ string) (response AuthResponse, reason error) {
return AuthResponseUnavailable, nil
func (a *AbstractNetworkConnectionHandler) OnAuthPubKey(_ string, _ string, _ string) (response AuthResponse, metadata map[string]string, reason error) {
return AuthResponseUnavailable, nil, nil
}

// OnAuthKeyboardInteractive is a callback for interactive authentication. The implementer will be passed a callback
Expand All @@ -31,8 +31,9 @@ func (a *AbstractNetworkConnectionHandler) OnAuthKeyboardInteractive(
instruction string,
questions KeyboardInteractiveQuestions,
) (answers KeyboardInteractiveAnswers, err error),
) (response AuthResponse, reason error) {
return AuthResponseUnavailable, nil
_ string,
) (response AuthResponse, metadata map[string]string, reason error) {
return AuthResponseUnavailable, nil, nil
}

// OnHandshakeFailed is called when the SSH handshake failed. This method is also called after an authentication
Expand Down
2 changes: 1 addition & 1 deletion AbstractSSHConnectionHandler.go
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package sshserver
package v2

import (
"context"
Expand Down
2 changes: 1 addition & 1 deletion AbstractSessionChannelHandler.go
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package sshserver
package v2

import (
"context"
Expand Down
2 changes: 1 addition & 1 deletion Cipher.go
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package sshserver
package v2

import (
"fmt"
Expand Down
2 changes: 1 addition & 1 deletion CipherList.go
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package sshserver
package v2

// CipherList is a list of supported ciphers
type CipherList []Cipher
Expand Down
2 changes: 1 addition & 1 deletion Config.go
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package sshserver
package v2

import (
"bytes"
Expand Down
2 changes: 1 addition & 1 deletion ConformanceTestBackendFactory.go
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package sshserver
package v2

import (
"github.com/containerssh/log"
Expand Down
2 changes: 1 addition & 1 deletion Kex.go
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package sshserver
package v2

import (
"fmt"
Expand Down
2 changes: 1 addition & 1 deletion KexList.go
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package sshserver
package v2

import (
"fmt"
Expand Down
2 changes: 1 addition & 1 deletion KeyAlgo.go
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package sshserver
package v2

import (
"fmt"
Expand Down
2 changes: 1 addition & 1 deletion KeyAlgoList.go
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package sshserver
package v2

import (
"fmt"
Expand Down
2 changes: 1 addition & 1 deletion MAC.go
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package sshserver
package v2

import (
"fmt"
Expand Down
2 changes: 1 addition & 1 deletion MACList.go
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package sshserver
package v2

import (
"fmt"
Expand Down
2 changes: 1 addition & 1 deletion New.go
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package sshserver
package v2

import (
"sync"
Expand Down
2 changes: 1 addition & 1 deletion NewTestAuthenticationHandler.go
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package sshserver
package v2

// NewTestAuthenticationHandler creates a new backend that authenticates a user based on the users variable and passes
// all further calls to the backend.
Expand Down
2 changes: 1 addition & 1 deletion NewTestClient.go
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package sshserver
package v2

import (
"github.com/containerssh/log"
Expand Down
2 changes: 1 addition & 1 deletion NewTestHandler.go
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package sshserver
package v2

// NewTestHandler creates a conformanceTestHandler that can be used for testing purposes. It does not authenticate, that can be done
// using the NewTestAuthenticationHandler
Expand Down
2 changes: 1 addition & 1 deletion NewTestServer.go
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package sshserver
package v2

import (
"fmt"
Expand Down
2 changes: 1 addition & 1 deletion NewTestUser.go
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package sshserver
package v2

// NewTestUser creates a user that can be used with NewTestHandler and NewTestClient.
func NewTestUser(username string) *TestUser {
Expand Down
2 changes: 1 addition & 1 deletion RunConformanceTests.go
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package sshserver
package v2

import (
"testing"
Expand Down
2 changes: 1 addition & 1 deletion Server.go
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package sshserver
package v2

import (
"github.com/containerssh/service"
Expand Down
2 changes: 1 addition & 1 deletion ServerVersion.go
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package sshserver
package v2

import (
"fmt"
Expand Down
19 changes: 10 additions & 9 deletions Server_test.go
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package sshserver_test
package v2_test

import (
"bytes"
Expand All @@ -18,7 +18,7 @@ import (
"github.com/stretchr/testify/assert"
"golang.org/x/crypto/ssh"

"github.com/containerssh/sshserver"
sshserver "github.com/containerssh/sshserver/v2"
)

//region Tests
Expand Down Expand Up @@ -497,21 +497,22 @@ type fullNetworkConnectionHandler struct {
func (f *fullNetworkConnectionHandler) OnAuthPassword(
username string,
password []byte,
) (response sshserver.AuthResponse, reason error) {
_ string,
) (response sshserver.AuthResponse, metadata map[string]string, reason error) {
if storedPassword, ok := f.handler.passwords[username]; ok && bytes.Equal(storedPassword, password) {
return sshserver.AuthResponseSuccess, nil
return sshserver.AuthResponseSuccess, nil, nil
}
return sshserver.AuthResponseFailure, fmt.Errorf("authentication failed")
return sshserver.AuthResponseFailure, nil, fmt.Errorf("authentication failed")
}

func (f *fullNetworkConnectionHandler) OnAuthPubKey(username string, pubKey string) (response sshserver.AuthResponse, reason error) {
func (f *fullNetworkConnectionHandler) OnAuthPubKey(username string, pubKey string, _ string,) (response sshserver.AuthResponse, metadata map[string]string, reason error) {
if storedPubKey, ok := f.handler.pubKeys[username]; ok && storedPubKey == pubKey {
return sshserver.AuthResponseSuccess, nil
return sshserver.AuthResponseSuccess, nil, nil
}
return sshserver.AuthResponseFailure, fmt.Errorf("authentication failed")
return sshserver.AuthResponseFailure, nil, fmt.Errorf("authentication failed")
}

func (f *fullNetworkConnectionHandler) OnHandshakeSuccess(_ string) (connection sshserver.SSHConnectionHandler, failureReason error) {
func (f *fullNetworkConnectionHandler) OnHandshakeSuccess(_ string, _ string, _ map[string]string) (connection sshserver.SSHConnectionHandler, failureReason error) {
return &fullSSHConnectionHandler{
handler: f.handler,
}, nil
Expand Down
2 changes: 1 addition & 1 deletion TestClient.go
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package sshserver
package v2

import (
"errors"
Expand Down
2 changes: 1 addition & 1 deletion TestClientConnection.go
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package sshserver
package v2

// TestClientConnection is an individual established connection to the server
type TestClientConnection interface {
Expand Down
2 changes: 1 addition & 1 deletion TestClientSession.go
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package sshserver
package v2

import (
"context"
Expand Down
2 changes: 1 addition & 1 deletion TestServer.go
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package sshserver
package v2

import (
"time"
Expand Down
2 changes: 1 addition & 1 deletion TestUser.go
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package sshserver
package v2

import (
"bytes"
Expand Down
2 changes: 1 addition & 1 deletion channelWrapper.go
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package sshserver
package v2

import (
"errors"
Expand Down
2 changes: 1 addition & 1 deletion codes.go
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package sshserver
package v2

// A user has connected over SSH.
const MConnected = "SSH_CONNECTED"
Expand Down
2 changes: 1 addition & 1 deletion codes_doc.go
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
package sshserver
package v2

//go:generate containerssh-generate-codes
2 changes: 1 addition & 1 deletion conformanceShellCommand.go
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package sshserver
package v2

import (
"context"
Expand Down
2 changes: 1 addition & 1 deletion conformanceTestHandler.go
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package sshserver
package v2

import (
"net"
Expand Down
2 changes: 1 addition & 1 deletion conformanceTestSuite.go
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package sshserver
package v2

import (
"context"
Expand Down
2 changes: 1 addition & 1 deletion connectionid.go
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package sshserver
package v2

import (
"encoding/hex"
Expand Down
2 changes: 1 addition & 1 deletion envRequestPayload.go
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package sshserver
package v2

type envRequestPayload struct {
Name string
Expand Down
2 changes: 1 addition & 1 deletion execRequestPayload.go
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package sshserver
package v2

type execRequestPayload struct {
Exec string
Expand Down
2 changes: 1 addition & 1 deletion exitSignalPayload.go
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package sshserver
package v2

type exitSignalPayload struct {
Signal string
Expand Down
2 changes: 1 addition & 1 deletion exitStatusPayload.go
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package sshserver
package v2

type exitStatusPayload struct {
ExitStatus uint32
Expand Down
6 changes: 2 additions & 4 deletions go.mod
Original file line number Diff line number Diff line change
@@ -1,15 +1,13 @@
module github.com/containerssh/sshserver
module github.com/containerssh/sshserver/v2

go 1.14
go 1.16

require (
github.com/containerssh/log v1.0.0
github.com/containerssh/service v1.0.0
github.com/containerssh/structutils v1.0.0
github.com/containerssh/unixutils v1.0.0
github.com/google/uuid v1.2.0
github.com/imdario/mergo v0.3.12 // indirect
github.com/mattn/go-shellwords v1.0.11 // indirect
github.com/stretchr/testify v1.7.0
golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad
golang.org/x/sys v0.0.0-20210331175145-43e1dd70ce54 // indirect
Expand Down
25 changes: 0 additions & 25 deletions go.sum
Original file line number Diff line number Diff line change
@@ -1,22 +1,9 @@
github.com/containerssh/log v0.9.10/go.mod h1:NBMzkhOLZ4z45ShSBKQ/Ij6Hqqg15DgOKy6HlSITx0s=
github.com/containerssh/log v0.9.11 h1:CLpl9mhxBg4giLZjcZB+FjddYypm2f2x1bCY3iissdA=
github.com/containerssh/log v0.9.11/go.mod h1:uVuUPoZsJYi2KoV9+lgPeB/gWuXeUTD3AoVxc4y+tKY=
github.com/containerssh/log v0.9.13 h1:jBSrFaxZNGwkjHU6y/efYI8lyG8KIFR5aOIeOnNzquE=
github.com/containerssh/log v0.9.13/go.mod h1:uVuUPoZsJYi2KoV9+lgPeB/gWuXeUTD3AoVxc4y+tKY=
github.com/containerssh/log v1.0.0 h1:nOSqNqh7cXIa+Iy+Lx2CA+wpkrqDqcQh4EVoEvSaxU8=
github.com/containerssh/log v1.0.0/go.mod h1:7Gy+sx0H1UDtjYBySvK0CnXRRHPHZPXMsa9MYmLBI0I=
github.com/containerssh/service v0.9.2 h1:+EZ7s7sxSme+IosYBR24oNhVlPTz3GJTXBZ0HaSD9rU=
github.com/containerssh/service v0.9.2/go.mod h1:nbA2I+GL0vU7ls0JEQKI+QOJfbUjlIDmmUSQqx/G7ro=
github.com/containerssh/service v0.9.3 h1:mYpvZ9zxUrKL8OpBen86heXfGtdUGdtfZ3Y7P605zvQ=
github.com/containerssh/service v0.9.3/go.mod h1:Yeq3hwfM6js9TfpkrQAQhv5IRfurrGEkM+AbFEC9KCE=
github.com/containerssh/service v1.0.0 h1:+AcBsmeaR0iMDnemXJ6OgeTEYB3C0YJF3h03MNIo1Ak=
github.com/containerssh/service v1.0.0/go.mod h1:FmYg3jc56WBvxyx5rvXCkJbIsmweNTeYSr/9z2n2qsI=
github.com/containerssh/structutils v0.9.0 h1:pz4xl5ZrPnpdSx7B/ru8Fj3oU3vOtx1jprIuSkm5s7o=
github.com/containerssh/structutils v0.9.0/go.mod h1:zirdwNXan3kuTpsJp9Gl3W6VQz0fexqMySqxmfviSjw=
github.com/containerssh/structutils v1.0.0 h1:XwNSnjmoJpMP8hxX5YbDJRGcU66znRWP5jKUYI2Kh4s=
github.com/containerssh/structutils v1.0.0/go.mod h1:Dp5tCtnkT19A9BFNP4+flL5R+THvBgp95eO640fR+ow=
github.com/containerssh/unixutils v0.9.0 h1:9Bh2UiQW6DIuVW6upc1uUU38tKK1IUn2hxZqi9w3cQc=
github.com/containerssh/unixutils v0.9.0/go.mod h1:k1Z/lsIUK95UzrlqRw2JWDDi6LGeL7wG+V+N+TWkCbU=
github.com/containerssh/unixutils v1.0.0 h1:V6zwRxOycwpXY3hjjzFVfgV/4vOsqPVJ63rR2V7EYM8=
github.com/containerssh/unixutils v1.0.0/go.mod h1:UK2dMXp9Iy2ILHrcrzOU5jWZDgPkuChyg75wrdcIZjU=
github.com/creasty/defaults v1.5.1 h1:j8WexcS3d/t4ZmllX4GEkl4wIB/trOr035ajcLHCISM=
Expand All @@ -26,15 +13,11 @@ github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/google/uuid v1.2.0 h1:qJYtXnJRWmpe7m/3XlyhrsLrEURqHRM2kxzoxXqyUDs=
github.com/google/uuid v1.2.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/imdario/mergo v0.3.11 h1:3tnifQM4i+fbajXKBHXWEH+KvNHqojZ778UH75j3bGA=
github.com/imdario/mergo v0.3.11/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA=
github.com/imdario/mergo v0.3.12 h1:b6R2BslTbIEToALKP7LxUvijTsNI9TAe80pLWN2g/HU=
github.com/imdario/mergo v0.3.12/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA=
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE=
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
github.com/mattn/go-shellwords v1.0.10 h1:Y7Xqm8piKOO3v10Thp7Z36h4FYFjt5xB//6XvOrs2Gw=
github.com/mattn/go-shellwords v1.0.10/go.mod h1:EZzvwXDESEeg03EKmM+RmDnNOPKG4lLtQsUlTZDWQ8Y=
github.com/mattn/go-shellwords v1.0.11 h1:vCoR9VPpsk/TZFW2JwK5I9S0xdrtUq2bph6/YjEPnaw=
github.com/mattn/go-shellwords v1.0.11/go.mod h1:EZzvwXDESEeg03EKmM+RmDnNOPKG4lLtQsUlTZDWQ8Y=
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs=
Expand All @@ -45,20 +28,13 @@ github.com/qdm12/reprint v0.0.0-20200326205758-722754a53494 h1:wSmWgpuccqS2IOfmY
github.com/qdm12/reprint v0.0.0-20200326205758-722754a53494/go.mod h1:yipyliwI08eQ6XwDm1fEwKPdF/xdbkiHtrU+1Hg+vc4=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY=
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad h1:DN0cp81fZ3njFcrLCytUHRSUkqBjfTo4Tx9RJTWs0EY=
golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I=
golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I=
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f h1:+Nyd8tzPX9R7BWHguqsrbFdRx3WQ/1ib8I44HXV5yTA=
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4 h1:EZ2mChiOa8udjfp6rRmswTbtZN/QzUQp4ptM4rnjHvc=
golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210331175145-43e1dd70ce54 h1:rF3Ohx8DRyl8h2zw9qojyLHLhrJpEMgyPOImREEryf0=
golang.org/x/sys v0.0.0-20210331175145-43e1dd70ce54/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/term v0.0.0-20201117132131-f5c789dd3221 h1:/ZHdbVpdR/jk3g30/d4yUL0JU9kksj8+F/bnQUVLGDM=
Expand All @@ -68,7 +44,6 @@ golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGm
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f h1:BLraFXnmrev5lT+xlilqcH8XK9/i0At2xKjWk4p6zsU=
gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.3.0 h1:clyUAQHOM3G0M3f5vQj7LuJrETvjVot3Z5el9nffUtU=
gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
Expand Down
Loading

0 comments on commit 1765db2

Please sign in to comment.