mosers
/
eaas-vde-proxy
Archiviert
1
0
Fork 0
Du kannst nicht mehr als 25 Themen auswählen Themen müssen entweder mit einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.
Dieses Repo ist archiviert. Du kannst Dateien sehen und es klonen, kannst aber nicht pushen oder Issues/Pull-Requests öffnen.

48 Zeilen
1.2 KiB
Go

vor 3 Jahren
package main
import (
"fmt"
"io"
"os"
vor 3 Jahren
"proxy/cmd"
"unicode"
vor 3 Jahren
)
// Start the two plugs and run two concurrent forward methods
vor 3 Jahren
func main() {
c1 := cmd.New("vde_plug", "/run/vde/sw_main.sock")
vor 3 Jahren
c2 := cmd.New("vde_plug", "/run/vde/sw_proxy.sock")
c1.Execute()
vor 3 Jahren
c2.Execute()
go pipeForward(c1.OutReader, c2.InWriter, cmd.In)
go pipeForward(c2.OutReader, c1.InWriter, cmd.Out)
c1.WaitH()
vor 3 Jahren
c2.WaitH()
}
vor 3 Jahren
// Reads from an input and writes to and output,
// do things to the content in between.
// For now only output it in xxd format.
// Is meant to be run concurrently with "go pipeForward(...)"
func pipeForward(reader io.Reader, writer io.Writer, prefix string) {
i := 0
for {
bytes := make([]byte, 16)
bytesReadable := make([]byte, 16)
_, err := reader.Read(bytes)
if err == io.EOF {
break
}
for i, ch := range bytes {
if ch > unicode.MaxASCII || ch < '\u0020' {
bytesReadable[i] = '\u002E'
} else {
bytesReadable[i] = ch
}
}
xxdString := fmt.Sprintf("%s%08x: %04x %04x %04x %04x %04x %04x %04x %04x %s\n", prefix, i, bytes[0:1], bytes[2:3], bytes[4:5], bytes[6:7], bytes[8:9], bytes[10:11], bytes[12:13], bytes[14:15], bytesReadable)
os.Stdout.WriteString(xxdString)
writer.Write(bytes)
i += 16
}
vor 3 Jahren
}