From 289b1e51e63e81da16c3334addb1ec29c6f28dc2 Mon Sep 17 00:00:00 2001 From: Boshi Lian Date: Sun, 3 Oct 2021 21:36:05 +0000 Subject: [PATCH] add grpc e2e test --- sshpiperd/e2e/Dockerfile-grpcremote | 8 +++ sshpiperd/e2e/docker-compose.yml | 67 ++++++++++++++++++- sshpiperd/e2e/test.sh | 7 ++ .../grpcupstream/simpleserver/main.go | 2 +- 4 files changed, 80 insertions(+), 4 deletions(-) create mode 100644 sshpiperd/e2e/Dockerfile-grpcremote diff --git a/sshpiperd/e2e/Dockerfile-grpcremote b/sshpiperd/e2e/Dockerfile-grpcremote new file mode 100644 index 00000000..6b7e1d08 --- /dev/null +++ b/sshpiperd/e2e/Dockerfile-grpcremote @@ -0,0 +1,8 @@ +FROM golang + +ADD . /go/src/github.com/tg123/sshpiper/ +WORKDIR /go/src/github.com/tg123/sshpiper/sshpiperd/upstream/grpcupstream/simpleserver + +RUN go build -o /simpleserver + + diff --git a/sshpiperd/e2e/docker-compose.yml b/sshpiperd/e2e/docker-compose.yml index f9ce9c70..967f7ad7 100644 --- a/sshpiperd/e2e/docker-compose.yml +++ b/sshpiperd/e2e/docker-compose.yml @@ -29,6 +29,9 @@ services: - piper_pg - piper_mssql # - piper_sqlite + - piper_grpc_privatekey_host1 + - piper_grpc_remotesigner_host1 + - piper_grpc_host2 piper: environment: - "SSHPIPERD_UPSTREAM_WORKINGDIR_NOCHECKPERM=true" @@ -160,9 +163,67 @@ services: - "ACCEPT_EULA=y" - "SA_PASSWORD=yourStrong(!)Password" - "MSSQL_PID=Developer" - - #tmpfs: - # - /var/opt/mssql/data + grpc_remotesigner_host1: + build: + context: ../.. + dockerfile: sshpiperd/e2e/Dockerfile-grpcremote + command: ["/simpleserver", "--toaddr", "host1", "--totype", "REMOTESIGNER", "--mappeduser", "root", "--privatekey", "/workingdir/host1/id_rsa"] + volumes: + - workingdir:/workingdir + depends_on: + - host1 + piper_grpc_remotesigner_host1: + environment: + - "SSHPIPERD_UPSTREAM_DRIVER=grpc" + - "SSHPIPERD_UPSTREAM_GRPC_INSECURE=true" + - "SSHPIPERD_UPSTREAM_GRPC_ENDPOINT=grpc_remotesigner_host1:2233" + - "SSHPIPERD_AUDITOR=typescript-logger" + - "SSHPIPERD_BANNERTEXT=hellopiper" + build: ../.. + volumes: + - workingdir:/var/sshpiper + depends_on: + - grpc_remotesigner_host1 + grpc_privatekey_host1: + build: + context: ../.. + dockerfile: sshpiperd/e2e/Dockerfile-grpcremote + command: ["/simpleserver", "--toaddr", "host1", "--totype", "REMOTESIGNER", "--mappeduser", "root", "--privatekey", "/workingdir/host1/id_rsa"] + volumes: + - workingdir:/workingdir + depends_on: + - host1 + piper_grpc_privatekey_host1: + environment: + - "SSHPIPERD_UPSTREAM_DRIVER=grpc" + - "SSHPIPERD_UPSTREAM_GRPC_INSECURE=true" + - "SSHPIPERD_UPSTREAM_GRPC_ENDPOINT=grpc_privatekey_host1:2233" + - "SSHPIPERD_AUDITOR=typescript-logger" + - "SSHPIPERD_BANNERTEXT=hellopiper" + build: ../.. + volumes: + - workingdir:/var/sshpiper + depends_on: + - grpc_privatekey_host1 + grpc_remotepass_host2: + build: + context: ../.. + dockerfile: sshpiperd/e2e/Dockerfile-grpcremote + command: ["/simpleserver", "--toaddr", "host2", "--totype", "PASSWORD", "--mappeduser", "root", "--password", "root"] + depends_on: + - host2 + piper_grpc_host2: + environment: + - "SSHPIPERD_UPSTREAM_DRIVER=grpc" + - "SSHPIPERD_UPSTREAM_GRPC_INSECURE=true" + - "SSHPIPERD_UPSTREAM_GRPC_ENDPOINT=grpc_remotepass_host2:2233" + - "SSHPIPERD_AUDITOR=typescript-logger" + - "SSHPIPERD_BANNERTEXT=hellopiper" + build: ../.. + depends_on: + - grpc_remotepass_host2 + volumes: + - workingdir:/var/sshpiper volumes: diff --git a/sshpiperd/e2e/test.sh b/sshpiperd/e2e/test.sh index 1b067315..325a52cc 100755 --- a/sshpiperd/e2e/test.sh +++ b/sshpiperd/e2e/test.sh @@ -7,6 +7,9 @@ /wait.sh piper_mysql 2222 /wait.sh piper_pg 2222 /wait.sh piper_mssql 2222 +/wait.sh piper_grpc_remotesigner_host1 2222 +/wait.sh piper_grpc_privatekey_host1 2222 +/wait.sh piper_grpc_host2 2222 # TODO to python @@ -76,3 +79,7 @@ runtest "yaml host2 with key mapkeykey:" "host1" "mapkeykey" "ssh mapkeykey@pipe runtest "yaml host2 with key mapkeykey2:" "host1" "mapkeykey2" "ssh mapkeykey2@piper_yaml -p 2222 -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -i /local/id_rsa2 cat /names/host1" runtest "yaml host2 with password regex:" "host2" "regex000" "sshpass -p root ssh regex000@piper_yaml -p 2222 -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null cat /names/host2" runtest "yaml host1 with none host1:" "host1" "host1" "ssh host1@piper_yaml -p 2222 -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null cat /names/host1" + +runtest "grpc host1 with remotesigner:" "host1" "host1" "ssh host1@piper_grpc_remotesigner_host1 -p 2222 -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o PubkeyAuthentication=no -o PasswordAuthentication=no cat /names/host1" +runtest "grpc host1 with privatekey:" "host1" "host1" "ssh host1@piper_grpc_privatekey_host1 -p 2222 -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o PubkeyAuthentication=no -o PasswordAuthentication=no cat /names/host1" +runtest "grpc host2 with password:" "host2" "host2" "sshpass -p wrongpassword ssh host2@piper_grpc_host2 -p 2222 -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null cat /names/host2" \ No newline at end of file diff --git a/sshpiperd/upstream/grpcupstream/simpleserver/main.go b/sshpiperd/upstream/grpcupstream/simpleserver/main.go index bf0cfc5f..c1e55549 100644 --- a/sshpiperd/upstream/grpcupstream/simpleserver/main.go +++ b/sshpiperd/upstream/grpcupstream/simpleserver/main.go @@ -17,7 +17,7 @@ import ( ) type args struct { - ListenAddr string `short:"l" long:"listen" default:"127.0.0.1"` + ListenAddr string `short:"l" long:"listen" default:"0.0.0.0"` Port uint `short:"p" long:"port" default:"2233"` server }