This commit is contained in:
2023-02-22 11:51:20 +08:00
parent 764a8a3911
commit de93291a88
4 changed files with 37 additions and 19 deletions

Binary file not shown.

View File

@@ -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";

View File

@@ -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, "退出!")

View File

@@ -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]