-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathexample_config_test.go
More file actions
67 lines (62 loc) · 2.08 KB
/
example_config_test.go
File metadata and controls
67 lines (62 loc) · 2.08 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
//Copyright 2021 James Cote
// All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package sshdb_test
import (
"fmt"
"log"
"github.com/jfcote87/sshdb"
"gopkg.in/yaml.v3"
_ "github.com/jfcote87/sshdb/mssql"
_ "github.com/jfcote87/sshdb/mysql"
)
// ExampleConfig demonstrates how to create tunnels and database
// connections via the Config/TunnelConfig structs
func ExampleConfig() {
var cfg_yaml00 = `
# tunnel with a single connecton and key authentication
hostport: firewall.example.com:22
user_id: jfcote87
client_key: |
-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAArAAAABNlY2RzYS
1zaGEyLW5pc3RwNTIxAAAACG5pc3RwNTIxAAAAhQQB98RdfbLOuKmtf874FnMEuVJhPF5c
r8NdVV+4U4oeA42OgIb0SfnTTpmAVjE64MWsT96hRrb9ZTzDbk/7W5NGKNEAO+usYZ1X2f
/E/a86vG11lZRx9HZXuVccJJCzqQlX0UQMzdYtk4pGuQojGXkei+WGpLfFBIVpjKZ+0A6g
VKJ+2ogAAAEQagV3GWoFdxkAAAATZWNkc2Etc2hhMi1uaXN0cDUyMQAAAAhuaXN0cDUyMQ
AAAIUEAffEXX2yzriprX/O+BZzBLlSYTxeXK/DXVVfuFOKHgONjoCG9En5006ZgFYxOuDF
rE/eoUa2/WU8w25P+1uTRijRADvrrGGdV9n/xP2vOrxtdZWUcfR2V7lXHCSQs6kJV9FEDM
3WLZOKRrkKIxl5HovlhqS3xQSFaYymftAOoFSiftqIAAAAQgCuV4B+Cak9BWL3vLW1Knb0
R69k2oaTNn8ipqaI/X9MNbKwFb+O5a51nhRFsCzP3pd2awmGdx7hPkXH10YnlRDrvAAAAA
1qY290ZUBKRkMtU01HAQIDBAU=
-----END OPENSSH PRIVATE KEY-----
public_server_key: cfg/pubkey.pub
datasources:
localsock:
driver_name: "mysql"
dsn: login:passwd@unix(/tmp/my.sock)/dbname?parseTime=true
local:
driver_name: "mssql"
dsn: uid=me;password=xpwd;server=localhost;database=crm
exampledb:
driver_name: "mysql"
dsn: admin:goodpwd@tcp(db.example.com:3601)/contacts?parseTime=true
`
var config sshdb.TunnelConfig
if err := yaml.Unmarshal([]byte(cfg_yaml00), &config); err != nil {
log.Fatalf("yaml decode failed: %v", err)
}
for nm := range config.Datasources {
db, err := config.DB(nm)
if err != nil {
log.Fatalf("opendbs fail: %v", err)
}
defer db.Close()
msg := "ping success"
if err := db.Ping(); err != nil {
msg = fmt.Sprintf("%v", err)
}
log.Printf("%s %s", nm, msg)
}
}