1
0
Fork 0

Fix missing bypass and update README
continuous-integration/drone/push Build is passing Details

master v0.3.0
Ambrose Chua 2019-09-04 15:16:02 +08:00
parent 089bc9c6e4
commit eefbd63e5a
Signed by: ambrose
GPG Key ID: B34FBE029276BA5D
2 changed files with 53 additions and 31 deletions

View File

@ -9,11 +9,17 @@ A simple TCP proxy. Currently used in [AppVenture](https://appventure.nushigh.ed
$ ./forward -help
Usage of ./forward:
-connect string
forward to ip and port (default ":8080")
forward to address
-listen string
listen on ip and port (default ":8081")
listen on address (default ":8000")
-ssh string
if set, will do basic introspection to forward SSH traffic to this address
```
### Usage with SSH
You can use `forward` to do multiplexing of SSH and HTTP in a quick and dirty way, using very simple protocol introspection. A more robust solution would be [sshttp](https://github.com/stealth/sshttp)
## Usage on Windows
`forward` is wrapped with [go-svc](https://github.com/judwhite/go-svc), enabling it to be run as a Windows service. To add with PowerShell:

View File

@ -70,6 +70,8 @@ var magic = []byte{'S', 'S', 'H', '-'}
var magicLen = len(magic)
func handle(c net.Conn, count int) {
if connSSH != nil {
// read first four characters
readMagic := make([]byte, magicLen, magicLen)
n, err := c.Read(readMagic)
@ -101,6 +103,20 @@ func handle(c net.Conn, count int) {
go pipe(c, cn, count)
go pipe(cn, c, count)
} else {
cn, err := net.DialTCP("tcp", nil, conn)
if err != nil {
c.Close()
log.Print(err)
return
}
go pipe(c, cn, count)
go pipe(cn, c, count)
}
}
func pipe(w io.WriteCloser, r io.ReadCloser, count int) {