initial commit
This commit is contained in:
commit
8d76c480e8
|
@ -0,0 +1,12 @@
|
||||||
|
FROM xena/go:1.13.3 AS build
|
||||||
|
ENV PORT 2222
|
||||||
|
ENV TARGET 127.0.0.1:22
|
||||||
|
ENV GOPROXY https://cache.greedo.xeserv.us
|
||||||
|
ENV CGO_ENABLED 0
|
||||||
|
WORKDIR /within/proxystrip
|
||||||
|
COPY . .
|
||||||
|
RUN GOBIN=/usr/local/bin go install
|
||||||
|
|
||||||
|
FROM gitea/gitea:1.10.0
|
||||||
|
COPY --from=build /usr/local/bin/proxystrip /usr/local/bin/proxystrip
|
||||||
|
COPY run.sh /etc/s6/proxystrip/run
|
|
@ -0,0 +1,12 @@
|
||||||
|
Copyright (c) 2019 Christine Dodrill <me@christine.website>
|
||||||
|
|
||||||
|
Permission to use, copy, modify, and/or distribute this software for any
|
||||||
|
purpose with or without fee is hereby granted.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
||||||
|
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
||||||
|
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
||||||
|
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
||||||
|
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
||||||
|
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||||||
|
PERFORMANCE OF THIS SOFTWARE.
|
|
@ -0,0 +1,3 @@
|
||||||
|
# proxystrip
|
||||||
|
|
||||||
|
A hack to make my gitea instance work over SSH+PROXY protocol.
|
|
@ -0,0 +1,12 @@
|
||||||
|
module tulpa.dev/within/proxystrip
|
||||||
|
|
||||||
|
go 1.13
|
||||||
|
|
||||||
|
require (
|
||||||
|
github.com/armon/go-proxyproto v0.0.0-20190211145416-68259f75880e
|
||||||
|
github.com/davecgh/go-spew v1.1.1 // indirect
|
||||||
|
github.com/facebookgo/ensure v0.0.0-20160127193407-b4ab57deab51 // indirect
|
||||||
|
github.com/facebookgo/flagenv v0.0.0-20160425205200-fcd59fca7456
|
||||||
|
github.com/facebookgo/stack v0.0.0-20160209184415-751773369052 // indirect
|
||||||
|
github.com/facebookgo/subset v0.0.0-20150612182917-8dac2c3c4870 // indirect
|
||||||
|
)
|
|
@ -0,0 +1,12 @@
|
||||||
|
github.com/armon/go-proxyproto v0.0.0-20190211145416-68259f75880e h1:h0gP0hBU6DsA5IQduhLWGOEfIUKzJS5hhXQBSgHuF/g=
|
||||||
|
github.com/armon/go-proxyproto v0.0.0-20190211145416-68259f75880e/go.mod h1:QmP9hvJ91BbJmGVGSbutW19IC0Q9phDCLGaomwTJbgU=
|
||||||
|
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
||||||
|
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||||
|
github.com/facebookgo/ensure v0.0.0-20160127193407-b4ab57deab51 h1:0JZ+dUmQeA8IIVUMzysrX4/AKuQwWhV2dYQuPZdvdSQ=
|
||||||
|
github.com/facebookgo/ensure v0.0.0-20160127193407-b4ab57deab51/go.mod h1:Yg+htXGokKKdzcwhuNDwVvN+uBxDGXJ7G/VN1d8fa64=
|
||||||
|
github.com/facebookgo/flagenv v0.0.0-20160425205200-fcd59fca7456 h1:CkmB2l68uhvRlwOTPrwnuitSxi/S3Cg4L5QYOcL9MBc=
|
||||||
|
github.com/facebookgo/flagenv v0.0.0-20160425205200-fcd59fca7456/go.mod h1:zFhibDvPDWmtk4dAQ05sRobtyoffEHygEt3wSNuAzz8=
|
||||||
|
github.com/facebookgo/stack v0.0.0-20160209184415-751773369052 h1:JWuenKqqX8nojtoVVWjGfOF9635RETekkoH6Cc9SX0A=
|
||||||
|
github.com/facebookgo/stack v0.0.0-20160209184415-751773369052/go.mod h1:UbMTZqLaRiH3MsBH8va0n7s1pQYcu3uTb8G4tygF4Zg=
|
||||||
|
github.com/facebookgo/subset v0.0.0-20150612182917-8dac2c3c4870 h1:E2s37DuLxFhQDg5gKsWoLBOB0n+ZW8s599zru8FJ2/Y=
|
||||||
|
github.com/facebookgo/subset v0.0.0-20150612182917-8dac2c3c4870/go.mod h1:5tD+neXqOorC30/tWg0LCSkrqj/AR6gu8yY8/fpw1q0=
|
|
@ -0,0 +1,51 @@
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"flag"
|
||||||
|
"io"
|
||||||
|
"log"
|
||||||
|
"net"
|
||||||
|
|
||||||
|
"github.com/armon/go-proxyproto"
|
||||||
|
"github.com/facebookgo/flagenv"
|
||||||
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
target = flag.String("target-host", "127.0.0.1:22", "target TCP host:port")
|
||||||
|
port = flag.String("port", "2222", "TCP port to listen on")
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
flagenv.Parse()
|
||||||
|
flag.Parse()
|
||||||
|
|
||||||
|
list, err := net.Listen("tcp", ":"+*port)
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
log.Printf("now listening on port %s, forwarding traffic to %s", *port, *target)
|
||||||
|
|
||||||
|
proxyList := &proxyproto.Listener{Listener: list}
|
||||||
|
|
||||||
|
for {
|
||||||
|
conn, err := proxyList.Accept()
|
||||||
|
if err != nil {
|
||||||
|
log.Println(err)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
go dataTo(conn)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func dataTo(conn net.Conn) {
|
||||||
|
defer conn.Close()
|
||||||
|
peer, err := net.Dial("tcp", *target)
|
||||||
|
if err != nil {
|
||||||
|
log.Println(*target, err)
|
||||||
|
}
|
||||||
|
defer peer.Close()
|
||||||
|
|
||||||
|
go io.Copy(conn, peer)
|
||||||
|
io.Copy(peer, conn)
|
||||||
|
}
|
Loading…
Reference in New Issue