diff --git a/bin/db_tunnel b/bin/db_tunnel index 8126766..bd6550e 100644 Binary files a/bin/db_tunnel and b/bin/db_tunnel differ diff --git a/etc/tunnel.ini b/etc/tunnel.ini index 912f9b1..8bc62f3 100644 --- a/etc/tunnel.ini +++ b/etc/tunnel.ini @@ -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"; diff --git a/src/main.go b/src/main.go index c7416b8..27ce799 100644 --- a/src/main.go +++ b/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) } } @@ -142,11 +151,11 @@ func ssh_tunnel(host_ip string, host_port string, host_name string, remote_ip st fmt.Println(host_ip, host_name, host_port) - //"用户名:密码@[连接方式](主机名:端口号)/数据库名" + // "用户名:密码@[连接方式](主机名:端口号)/数据库名" var db *sql.DB db, _ = sql.Open("mysql", mysql_info) // 设置连接数据库的参数 - defer db.Close() //关闭数据库 - err := db.Ping() //连接数据库 + defer db.Close() // 关闭数据库 + err := db.Ping() // 连接数据库 if err != nil { fmt.Println("数据库连接失败") // 退出 @@ -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) { @@ -251,11 +250,11 @@ func Check(port int) (status bool, err error) { } func GetCurrentDirectory() string { - dir, err := filepath.Abs(filepath.Dir(os.Args[0])) //返回绝对路径 filepath.Dir(os.Args[0])去除最后一个元素的路径 + dir, err := filepath.Abs(filepath.Dir(os.Args[0])) // 返回绝对路径 filepath.Dir(os.Args[0])去除最后一个元素的路径 if err != nil { log.Fatal(err) } - return strings.Replace(dir, "\\", "/", -1) //将\替换成/ + return strings.Replace(dir, "\\", "/", -1) // 将\替换成/ } func PathExists(path string) (bool, 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, "退出!") diff --git a/tp_decrypt/tp_decrypt.py b/tp_decrypt/tp_decrypt.py index 58b9e6a..7b18bbc 100644 --- a/tp_decrypt/tp_decrypt.py +++ b/tp_decrypt/tp_decrypt.py @@ -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]