20230222
This commit is contained in:
BIN
bin/db_tunnel
BIN
bin/db_tunnel
Binary file not shown.
@@ -1,3 +1,3 @@
|
||||
[global]
|
||||
# "用户名:密码@[连接方式](主机名:端口号)/数据库名"
|
||||
MYSQL_INFO="root:1234@(43.142.66.71:3306)/teleport";
|
||||
MYSQL_INFO="root:19891009@(43.142.66.71:3306)/teleport";
|
||||
|
||||
35
src/main.go
35
src/main.go
@@ -85,15 +85,24 @@ func Tunnel(username string, password string, serverAddr string, remoteAddr stri
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
var connect int // 连接数
|
||||
|
||||
for {
|
||||
|
||||
connect++
|
||||
|
||||
// 设置本地
|
||||
localConn, err := localListener.Accept()
|
||||
if err != nil {
|
||||
fmt.Printf("localListener.Accept failed: %v\n", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
if connect == 3 {
|
||||
fmt.Printf("连接数达到上线,重启进程!%d\n", connect)
|
||||
syscall.Kill(os.Getpid(), syscall.SIGKILL)
|
||||
}
|
||||
|
||||
go sForward(serverAddr, remoteAddr, localConn, config)
|
||||
sForward(serverAddr, remoteAddr, localConn, config)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -217,16 +226,6 @@ func SubProcess(args []string) *exec.Cmd {
|
||||
return cmd
|
||||
}
|
||||
|
||||
const (
|
||||
DAEMON = "d"
|
||||
FOREVER = "f"
|
||||
HOST_IP = "h"
|
||||
HOST_PORT = "p"
|
||||
HOST_USER = "u"
|
||||
HOST_REMOTE = "r"
|
||||
HOST_LOCAL = "l"
|
||||
)
|
||||
|
||||
// Check if a port is available
|
||||
func Check(port int) (status bool, err error) {
|
||||
|
||||
@@ -271,6 +270,16 @@ func PathExists(path string) (bool, error) {
|
||||
return false, err
|
||||
}
|
||||
|
||||
const (
|
||||
DAEMON = "d"
|
||||
FOREVER = "f"
|
||||
HOST_IP = "h"
|
||||
HOST_PORT = "p"
|
||||
HOST_USER = "u"
|
||||
HOST_REMOTE = "r"
|
||||
HOST_LOCAL = "l"
|
||||
)
|
||||
|
||||
func main() {
|
||||
|
||||
// 判断配置文件是否存在
|
||||
@@ -289,6 +298,9 @@ func main() {
|
||||
}
|
||||
// 读取数据库连接信息
|
||||
MYSQL_INFO := cfg.Section("global").Key("MYSQL_INFO").String()
|
||||
if MYSQL_INFO == "" {
|
||||
os.Exit(0)
|
||||
}
|
||||
|
||||
daemon := flag.Bool(DAEMON, false, "run in daemon")
|
||||
forever := flag.Bool(FOREVER, false, "run forever")
|
||||
@@ -323,6 +335,7 @@ func main() {
|
||||
r, _ := Check(local_port_)
|
||||
//fmt.Println(r)
|
||||
if r {
|
||||
|
||||
ssh_tunnel(*host_ip, *host_port, *host_user, *remote_port, *local_port, MYSQL_INFO)
|
||||
} else {
|
||||
fmt.Println(local_port_, "端口不可用!", r, "退出!")
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
#!/usr/bin/python3
|
||||
# cython: language_level=3
|
||||
#!env python3
|
||||
import base64
|
||||
import sys
|
||||
|
||||
@@ -7,6 +6,12 @@ from Crypto.Cipher import AES
|
||||
|
||||
|
||||
def main():
|
||||
if len(sys.argv) != 2:
|
||||
print('Error: command parameters missed.')
|
||||
print('Usage:')
|
||||
print('{} ENCRYPTED_PASSWORD'.format(sys.argv[0]))
|
||||
print(' ENCRYPTED_PASSWORD encrypted password in base64 format, read from database.')
|
||||
return
|
||||
|
||||
enc_password = sys.argv[1]
|
||||
|
||||
|
||||
Reference in New Issue
Block a user