mirror of
https://github.com/lwch/natpass.git
synced 2024-04-21 12:41:54 +00:00
38 lines
758 B
Go
38 lines
758 B
Go
//go:build !windows
|
|
// +build !windows
|
|
|
|
package process
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
"os/exec"
|
|
|
|
"github.com/lwch/natpass/code/client/rule/vnc/vncnetwork"
|
|
)
|
|
|
|
// CreateWorker create worker process
|
|
func CreateWorker(name, confDir string, showCursor bool) (*Process, error) {
|
|
dir, err := os.Executable()
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
var p Process
|
|
p.chWrite = make(chan *vncnetwork.VncMsg)
|
|
p.chImage = make(chan *vncnetwork.ImageData)
|
|
p.chClipboard = make(chan *vncnetwork.ClipboardData)
|
|
port, err := p.listenAndServe()
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
cmd := exec.Command(dir, "vnc", "--conf", confDir,
|
|
"--name", name,
|
|
"--port", fmt.Sprintf("%d", port))
|
|
err = cmd.Start()
|
|
if err != nil {
|
|
p.Close()
|
|
return nil, err
|
|
}
|
|
return &p, nil
|
|
}
|