Page MenuHomePhabricator

app.go
No OneTemporary

package sshtunnel
import (
"flag"
"golang.org/x/crypto/ssh"
"io"
"log"
"os"
"os/exec"
"sync"
)
func (c *Client) Start() {
var wg sync.WaitGroup
//The intermediary server for port binding
serverHostname := flag.String("server", "ubuntu.cse.unr.edu", "a string")
execPath := flag.String("exec", "", "a binary to execute after connecting.")
logFile := flag.String("log", "log.txt", "logfile location")
lf, err := os.OpenFile(*logFile, os.O_RDWR|os.O_CREATE|os.O_APPEND, 0666)
if err != nil {
log.Fatalf("error opening file: %v", err)
}
defer lf.Close()
mw := io.MultiWriter(os.Stdout, lf)
log.SetOutput(mw)
var endpoints EndpointsFlag
flag.Var(&endpoints, "endpoints", "Local and remote endpoints")
flag.Parse()
if len(endpoints) < 1 {
log.Printf("No endpoints defined: %d\n", len(endpoints))
endpoints = make(EndpointsFlag, 0)
endpoints = append(endpoints, "5555:172.28.128.230:5555") // MATLAB
endpoints = append(endpoints, "25734:172.28.128.230:25734") // SolidWorks
endpoints = append(endpoints, "25735:172.28.128.230:25735") // SolidWorks
endpoints = append(endpoints, "7788:134.197.20.21:7788") // MATHCAD
endpoints = append(endpoints, "7789:134.197.20.21:7789") // MATHCAD
endpoints = append(endpoints, "2080:172.28.128.230:2080") // AutoCAD
endpoints = append(endpoints, "27000:172.28.128.230:27000") // AutoCAD
endpoints = append(endpoints, "1055:172.28.128.230:1055") // ANSYS
endpoints = append(endpoints, "2325:172.28.128.230:2325") // ANSYS
endpoints = append(endpoints, "27004:134.197.20.21:27004") // ABAQUS
endpoints = append(endpoints, "4085:134.197.20.21:4085") // ABAQUS
endpoints = append(endpoints, "9001:134.197.20.21:9001") // ADS
endpoints = append(endpoints, "27005:134.197.20.21:27005") // CST
endpoints = append(endpoints, "5001:134.197.20.21:5001") // CST
endpoints = append(endpoints, "5280:134.197.20.21:5280") // OrCAD
endpoints = append(endpoints, "5281:134.197.20.21:5281") // OrCAD
endpoints = append(endpoints, "1718:134.197.20.96:1718") // COMSOL
endpoints = append(endpoints, "1719:134.197.20.96:1719") // COMSOL
}
localE, remoteE := ParseEndpointsFromArray(endpoints)
log.Printf("localE: %v remoteE: %v", localE, remoteE)
// 27013
serverEndpoint := &Endpoint{
Host: *serverHostname,
Port: 22,
}
log.Printf("Endpoints: %v serverEndpoint: %v\n", endpoints, serverEndpoint)
var passwordForm = NewPasswordForm()
passwordForm.Show()
credentials := passwordForm.Credentials
log.Printf("Connecting to %s, User: %s ", *serverHostname, credentials.Username)
sshConfig := &ssh.ClientConfig{
User: credentials.Username,
HostKeyCallback: KeyPrint,
Auth: []ssh.AuthMethod{
ssh.Password(credentials.Password),
},
}
tunnel := &SSHtunnel{
Config: sshConfig,
Local: localE,
Server: serverEndpoint,
Remote: remoteE,
}
wg.Add(1)
go func() {
defer wg.Done()
tunnel.Start()
}()
if len(*execPath) > 0 {
cmd := exec.Command(*execPath)
err := cmd.Start()
if err != nil {
log.Fatal(err)
}
}
wg.Wait()
}

File Metadata

Mime Type
text/plain
Expires
Mon, Feb 24, 4:09 PM (1 d, 1 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
15205
Default Alt Text
app.go (3 KB)

Event Timeline