fix mysql drvier and add test case
This commit is contained in:
parent
32efae24d6
commit
7a3512f282
6 changed files with 66 additions and 16 deletions
|
|
@ -68,7 +68,7 @@ steps:
|
|||
- task: DockerCompose@0
|
||||
inputs:
|
||||
dockerComposeFile: '$(modulePath)/sshpiperd/e2e/docker-compose.yml'
|
||||
dockerComposeCommand: 'up --build --abort-on-container-exit --exit-code-from client'
|
||||
dockerComposeCommand: 'up --build --abort-on-container-exit'
|
||||
currentWorkingDirectory: '$(modulePath)'
|
||||
displayName: E2E
|
||||
|
||||
|
|
|
|||
|
|
@ -11,9 +11,22 @@ services:
|
|||
- ./test.sh:/test.sh
|
||||
links:
|
||||
- "piper:piper"
|
||||
- "piper_mysql:piper_mysql"
|
||||
command:
|
||||
- "/bin/bash"
|
||||
- "/test.sh"
|
||||
depends_on:
|
||||
- piper
|
||||
- piper_mysql
|
||||
host1:
|
||||
image: rastasheep/ubuntu-sshd
|
||||
volumes:
|
||||
- host1ssh:/root/.ssh
|
||||
- names:/names
|
||||
host2:
|
||||
image: rastasheep/ubuntu-sshd
|
||||
volumes:
|
||||
- names:/names
|
||||
piper:
|
||||
environment:
|
||||
- "SSHPIPERD_UPSTREAM_WORKINGDIR_NOCHECKPERM=true"
|
||||
|
|
@ -29,15 +42,38 @@ services:
|
|||
command:
|
||||
- "/bin/sh"
|
||||
- "/piper.sh"
|
||||
host1:
|
||||
image: rastasheep/ubuntu-sshd
|
||||
depends_on:
|
||||
- host1
|
||||
- host2
|
||||
piper_mysql:
|
||||
environment:
|
||||
- "SSHPIPERD_UPSTREAM_DRIVER=mysql"
|
||||
- "SSHPIPERD_UPSTREAM_MYSQL_HOST=mysql"
|
||||
- "SSHPIPERD_AUDITOR=typescript-logger"
|
||||
- "SSHPIPERD_BANNERTEXT=hellopiper"
|
||||
build: ../..
|
||||
links:
|
||||
- "host1:host1"
|
||||
- "host2:host2"
|
||||
- "mysql:mysql"
|
||||
volumes:
|
||||
- host1ssh:/root/.ssh
|
||||
- names:/names
|
||||
host2:
|
||||
image: rastasheep/ubuntu-sshd
|
||||
volumes:
|
||||
- names:/names
|
||||
- ./piper.sh:/piper.sh
|
||||
- workingdir:/var/sshpiper
|
||||
command:
|
||||
- "/bin/sh"
|
||||
- "/piper.sh"
|
||||
depends_on:
|
||||
- mysql
|
||||
- host1
|
||||
- host2
|
||||
mysql:
|
||||
image: mysql
|
||||
environment:
|
||||
- "MYSQL_ALLOW_EMPTY_PASSWORD=true"
|
||||
- "MYSQL_DATABASE=sshpiper"
|
||||
tmpfs:
|
||||
- /var/lib/mysql
|
||||
|
||||
|
||||
volumes:
|
||||
workingdir:
|
||||
|
|
|
|||
|
|
@ -1,5 +1,9 @@
|
|||
#!/bin/sh
|
||||
|
||||
echo 1
|
||||
sleep 10 # TODO remove ulgy workaround
|
||||
echo 2
|
||||
|
||||
/sshpiperd pipe add -n host1 -u host1 --upstream-username root
|
||||
/sshpiperd pipe add -n host2 -u host2 --upstream-username root
|
||||
/sshpiperd pipe list
|
||||
|
|
|
|||
|
|
@ -2,6 +2,8 @@
|
|||
|
||||
# TODO to python
|
||||
|
||||
sleep 12 # TODO remove ulgy workaround
|
||||
|
||||
mkdir -p /local
|
||||
mkdir -p /workingdir/host{1,2}
|
||||
|
||||
|
|
@ -48,3 +50,5 @@ runtest(){
|
|||
runtest "host1 with public key:" "host1" "ssh host1@piper -p 2222 -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -i /local/id_rsa cat /names/host1"
|
||||
runtest "host2 with password:" "host2" "sshpass -p root ssh host2@piper -p 2222 -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null cat /names/host2"
|
||||
|
||||
runtest "mysql host2 with password:" "host2" "sshpass -p root ssh host2@piper_mysql -p 2222 -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null cat /names/host2"
|
||||
|
||||
|
|
|
|||
|
|
@ -18,8 +18,13 @@ func (p *plugin) findUpstream(conn ssh.ConnMetadata, challengeContext ssh.Additi
|
|||
}
|
||||
|
||||
addr := d.Upstream.Server.Address
|
||||
upuser := d.Upstream.Username
|
||||
|
||||
logger.Printf("mapping user [%v] to [%v@%v]", user, d.Username, addr)
|
||||
if upuser == "" {
|
||||
upuser = d.Username
|
||||
}
|
||||
|
||||
logger.Printf("mapping user [%v] to [%v@%v]", user, upuser, addr)
|
||||
|
||||
c, err := dial(addr)
|
||||
|
||||
|
|
@ -40,7 +45,7 @@ func (p *plugin) findUpstream(conn ssh.ConnMetadata, challengeContext ssh.Additi
|
|||
}
|
||||
|
||||
pipe := ssh.AuthPipe{
|
||||
User: d.Upstream.Username,
|
||||
User: upuser,
|
||||
|
||||
PublicKeyCallback: func(conn ssh.ConnMetadata, key ssh.PublicKey) (ssh.AuthPipeType, ssh.AuthMethod, error) {
|
||||
|
||||
|
|
|
|||
|
|
@ -25,11 +25,12 @@ type mysqlplugin struct {
|
|||
func (p *mysqlplugin) create() (*gorm.DB, error) {
|
||||
|
||||
config := mysqldriver.Config{
|
||||
User: p.Config.User,
|
||||
Passwd: p.Config.Password,
|
||||
Net: "tcp",
|
||||
Addr: fmt.Sprintf("%v:%v", p.Config.Host, p.Config.Port),
|
||||
DBName: p.Config.Dbname,
|
||||
User: p.Config.User,
|
||||
Passwd: p.Config.Password,
|
||||
Net: "tcp",
|
||||
Addr: fmt.Sprintf("%v:%v", p.Config.Host, p.Config.Port),
|
||||
DBName: p.Config.Dbname,
|
||||
ParseTime: true,
|
||||
}
|
||||
|
||||
db, err := gorm.Open("mysql", config.FormatDSN())
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue