attempting to pass off the socket
This commit is contained in:
parent
c2f796de1e
commit
a024c9ece1
3
Makefile
3
Makefile
|
@ -4,7 +4,8 @@ VERSION = $(shell git describe --tags)
|
||||||
BUILDTIME = $(shell date +%Y.%m.%d_%H%M)
|
BUILDTIME = $(shell date +%Y.%m.%d_%H%M)
|
||||||
|
|
||||||
all: proto build
|
all: proto build
|
||||||
./gus --config /etc/gus/gus.text
|
@#./gus --config /etc/gus/gus.text
|
||||||
|
./gus --me
|
||||||
|
|
||||||
gocui: build
|
gocui: build
|
||||||
./gus --gui gocui --config /etc/gus/gus.text >/tmp/gocui.log 2>&1
|
./gus --gui gocui --config /etc/gus/gus.text >/tmp/gocui.log 2>&1
|
||||||
|
|
5
argv.go
5
argv.go
|
@ -17,6 +17,7 @@ var argv args
|
||||||
type args struct {
|
type args struct {
|
||||||
Verbose bool `arg:"--verbose" help:"talk more"`
|
Verbose bool `arg:"--verbose" help:"talk more"`
|
||||||
Daemon bool `arg:"--daemon" default:"false" help:"run in daemon mode"`
|
Daemon bool `arg:"--daemon" default:"false" help:"run in daemon mode"`
|
||||||
|
UseME bool `arg:"--me" help:"use /me to connect"`
|
||||||
Port int `arg:"--port" default:"2522" help:"port to run on"`
|
Port int `arg:"--port" default:"2522" help:"port to run on"`
|
||||||
URL string `arg:"--url" help:"url to use"`
|
URL string `arg:"--url" help:"url to use"`
|
||||||
Config string `arg:"--config" help:"config file (default is ~/.config/cloud/gus.text"`
|
Config string `arg:"--config" help:"config file (default is ~/.config/cloud/gus.text"`
|
||||||
|
@ -28,7 +29,9 @@ func (args) Version() string {
|
||||||
|
|
||||||
func (a args) Description() string {
|
func (a args) Description() string {
|
||||||
return `
|
return `
|
||||||
this daemon talks to zookeeper
|
"Phantastic Gus" your network squirrel
|
||||||
|
|
||||||
|
* Meet [the Phantastic squirrel Gus](https://www.youtube.com/watch?v=hFZFjoX2cGg)
|
||||||
`
|
`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,24 @@
|
||||||
|
// Copyright 2017-2025 WIT.COM Inc. All rights reserved.
|
||||||
|
// Use of this source code is governed by the GPL 3.0
|
||||||
|
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"os"
|
||||||
|
|
||||||
|
"go.wit.com/log"
|
||||||
|
)
|
||||||
|
|
||||||
|
func okExit(note string) {
|
||||||
|
if note != "" {
|
||||||
|
log.Info("gus exit:", note, "ok")
|
||||||
|
}
|
||||||
|
me.myGui.Close()
|
||||||
|
os.Exit(0)
|
||||||
|
}
|
||||||
|
|
||||||
|
func badExit(err error) {
|
||||||
|
log.Info("gus failed: ", err)
|
||||||
|
me.myGui.Close()
|
||||||
|
os.Exit(-1)
|
||||||
|
}
|
90
main.go
90
main.go
|
@ -40,6 +40,12 @@ func main() {
|
||||||
|
|
||||||
me = new(gusconf)
|
me = new(gusconf)
|
||||||
me.pollDelay = 10 * time.Second
|
me.pollDelay = 10 * time.Second
|
||||||
|
|
||||||
|
if argv.UseME {
|
||||||
|
connectME()
|
||||||
|
okExit("")
|
||||||
|
}
|
||||||
|
|
||||||
me.portmaps = ConfigLoad()
|
me.portmaps = ConfigLoad()
|
||||||
me.events = EventLoad()
|
me.events = EventLoad()
|
||||||
|
|
||||||
|
@ -252,3 +258,87 @@ func ioCopy(clientConn, targetConn net.Conn) {
|
||||||
|
|
||||||
wg.Wait() // Wait for both copies to complete
|
wg.Wait() // Wait for both copies to complete
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func connectME() {
|
||||||
|
hostname, err := os.Hostname()
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println("Error:", err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
log.Println("Hostname:", hostname)
|
||||||
|
if fqdn, err := getFQDN(hostname); err == nil {
|
||||||
|
hostname = fqdn
|
||||||
|
} else {
|
||||||
|
log.Printf("Your hostname (%s) is not in DNS correctly: %v\n", hostname, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
localport := "25910"
|
||||||
|
// where := "104.48.38.253:25910"
|
||||||
|
where := "104.48.38.253:8081"
|
||||||
|
dest, err := net.Dial("tcp", where)
|
||||||
|
if err != nil {
|
||||||
|
log.Printf("Failed to connect to %s %v\n", where, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
defer dest.Close()
|
||||||
|
|
||||||
|
// make a new event from this new connection
|
||||||
|
log.Printf("Connected on port %s from client: %s to where = %s\n", localport, "tbd", where)
|
||||||
|
|
||||||
|
reader := bufio.NewReader(dest)
|
||||||
|
|
||||||
|
// Read one line
|
||||||
|
line, err := reader.ReadString('\n')
|
||||||
|
if err != nil {
|
||||||
|
log.Info("Error reading line:", err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
log.Info("gus Received:", line)
|
||||||
|
|
||||||
|
fmt.Fprintf(dest, "/me hostname %s\n", hostname)
|
||||||
|
|
||||||
|
// Read one line
|
||||||
|
line, err = reader.ReadString('\n')
|
||||||
|
if err != nil {
|
||||||
|
log.Info("Error reading line:", err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
log.Info("gus Received:", line)
|
||||||
|
|
||||||
|
// Listen on local port
|
||||||
|
s := fmt.Sprintf("0.0.0.0:%s", localport)
|
||||||
|
listener, err := net.Listen("tcp", s)
|
||||||
|
if err != nil {
|
||||||
|
log.Fatalf("Failed to listen on %s: %v", s, err)
|
||||||
|
}
|
||||||
|
defer listener.Close()
|
||||||
|
log.Info("Listening on ", s)
|
||||||
|
log.Printf("Try: remmina -c spice://localhost:%s\n", localport)
|
||||||
|
|
||||||
|
// Accept incoming connection
|
||||||
|
src, err := listener.Accept()
|
||||||
|
if err != nil {
|
||||||
|
log.Printf("Failed to accept client connection: %v", err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
log.Printf("Client connected: %s\n", src.RemoteAddr())
|
||||||
|
ioCopy(src, dest)
|
||||||
|
}
|
||||||
|
|
||||||
|
func getFQDN(hostname string) (string, error) {
|
||||||
|
// Perform a reverse lookup to get the FQDN
|
||||||
|
addrs, err := net.LookupAddr(hostname)
|
||||||
|
if err != nil {
|
||||||
|
return "", fmt.Errorf("failed to resolve FQDN: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Choose the first valid result
|
||||||
|
for _, addr := range addrs {
|
||||||
|
if strings.HasSuffix(addr, ".") { // FQDNs often end with a dot
|
||||||
|
return strings.TrimSuffix(addr, "."), nil
|
||||||
|
}
|
||||||
|
return addr, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
return "", fmt.Errorf("no FQDN found for hostname: %s", hostname)
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue