Files
go-ssh-tunnel/main.go
2023-04-12 16:39:10 +08:00

45 lines
829 B
Go

package main
import (
"encoding/json"
"io/ioutil"
"log"
"os"
"os/signal"
"prot/sshtunnel"
"syscall"
)
func main() {
var sts []*sshtunnel.Config
p := "config.json"
if len(os.Args) == 2 {
p = os.Args[1]
}
f, err := ioutil.ReadFile(p)
if err != nil {
log.Printf("载入配置文件出错, 错误: %v", err)
os.Exit(-1)
}
err = json.Unmarshal(f, &sts)
if nil != err {
log.Printf("解析配置文件内容出错, 错误: %v", err)
os.Exit(-1)
}
var tunnels []*sshtunnel.SSHTunnel
for _, st := range sts {
tunnel := sshtunnel.NewSSHTunnel(st)
tunnel.Start()
tunnels = append(tunnels, tunnel)
}
signalChan := make(chan os.Signal)
signal.Notify(signalChan, syscall.SIGHUP, syscall.SIGINT, syscall.SIGTERM, syscall.SIGQUIT)
<-signalChan
for _, t := range tunnels {
t.Close()
}
os.Exit(0)
}