Skip to content

Commit

Permalink
remove transport for now (#170)
Browse files Browse the repository at this point in the history
  • Loading branch information
michaelquigley committed Apr 21, 2023
1 parent e19186c commit 25b1469
Show file tree
Hide file tree
Showing 4 changed files with 48 additions and 53 deletions.
2 changes: 1 addition & 1 deletion cmd/zrok/accessPrivateTunnel.go
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ func newAccessPrivateTunnelCommand() *accessPrivateTunnelCommand {
Args: cobra.ExactArgs(1),
}
command := &accessPrivateTunnelCommand{cmd: cmd}
cmd.Flags().StringVarP(&command.bindAddress, "bind", "b", "tcp:127.0.0.1:9191", "The address to bind the private tunnel")
cmd.Flags().StringVarP(&command.bindAddress, "bind", "b", "127.0.0.1:9191", "The address to bind the private tunnel")
cmd.Flags().BoolVar(&command.udp, "udp", false, "Use UDP")
cmd.Run = command.run
return command
Expand Down
19 changes: 11 additions & 8 deletions endpoints/tcpTunnel/backend.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ import (
"github.com/openziti/sdk-golang/ziti"
"github.com/openziti/sdk-golang/ziti/config"
"github.com/openziti/sdk-golang/ziti/edge"
"github.com/openziti/transport/v2/tcp"
"github.com/openziti/zrok/endpoints"
"github.com/pkg/errors"
"github.com/sirupsen/logrus"
Expand Down Expand Up @@ -58,12 +57,16 @@ func (b *Backend) Run() error {

func (b *Backend) handle(conn net.Conn) {
logrus.Infof("handling '%v'", conn.RemoteAddr())
rConn, err := tcp.Dial(b.cfg.EndpointAddress, "tcp", 30*time.Second)
if err != nil {
logrus.Errorf("error dialing '%v': %v", b.cfg.EndpointAddress, err)
_ = conn.Close()
return
if rAddr, err := net.ResolveTCPAddr("tcp", b.cfg.EndpointAddress); err == nil {
if rConn, err := net.DialTCP("tcp", nil, rAddr); err == nil {
go endpoints.TXer(conn, rConn)
go endpoints.TXer(rConn, conn)
} else {
logrus.Errorf("error dialing '%v': %v", b.cfg.EndpointAddress, err)
_ = conn.Close()
return
}
} else {
logrus.Errorf("error resolving '%v': %v", b.cfg.EndpointAddress, err)
}
go endpoints.TXer(conn, rConn)
go endpoints.TXer(rConn, conn)
}
40 changes: 19 additions & 21 deletions endpoints/tcpTunnel/frontend.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,12 @@ package tcpTunnel
import (
"github.com/openziti/sdk-golang/ziti"
"github.com/openziti/sdk-golang/ziti/config"
"github.com/openziti/transport/v2"
"github.com/openziti/zrok/endpoints"
"github.com/openziti/zrok/model"
"github.com/openziti/zrok/zrokdir"
"github.com/pkg/errors"
"github.com/sirupsen/logrus"
"io"
"net"
)

type FrontendConfig struct {
Expand All @@ -19,16 +18,15 @@ type FrontendConfig struct {
}

type Frontend struct {
cfg *FrontendConfig
zCtx ziti.Context
listener transport.Address
closer io.Closer
cfg *FrontendConfig
zCtx ziti.Context
lAddr *net.TCPAddr
}

func NewFrontend(cfg *FrontendConfig) (*Frontend, error) {
addr, err := transport.ParseAddress(cfg.BindAddress)
lAddr, err := net.ResolveTCPAddr("tcp", cfg.BindAddress)
if err != nil {
return nil, errors.Wrapf(err, "error parsing '%v'", cfg.BindAddress)
return nil, errors.Wrapf(err, "error resolving tcp address '%v'", cfg.BindAddress)
}
zCfgPath, err := zrokdir.ZitiIdentityFile(cfg.IdentityName)
if err != nil {
Expand All @@ -41,28 +39,28 @@ func NewFrontend(cfg *FrontendConfig) (*Frontend, error) {
zCfg.ConfigTypes = []string{model.ZrokProxyConfig}
zCtx := ziti.NewContextWithConfig(zCfg)
return &Frontend{
cfg: cfg,
zCtx: zCtx,
listener: addr,
cfg: cfg,
zCtx: zCtx,
lAddr: lAddr,
}, nil
}

func (f *Frontend) Run() error {
closer, err := f.listener.Listen(f.cfg.ShrToken, nil, f.accept, nil)
l, err := net.ListenTCP("tcp", f.lAddr)
if err != nil {
return err
return errors.Wrapf(err, "error listening at '%v'", f.lAddr)
}
f.closer = closer
return nil
}

func (f *Frontend) Stop() {
if f.closer != nil {
_ = f.closer.Close()
for {
if conn, err := l.Accept(); err == nil {
go f.accept(conn)
logrus.Infof("accepted tcp connection from '%v'", conn.RemoteAddr())
} else {
return err
}
}
}

func (f *Frontend) accept(conn transport.Conn) {
func (f *Frontend) accept(conn net.Conn) {
if zConn, err := f.zCtx.Dial(f.cfg.ShrToken); err == nil {
go endpoints.TXer(conn, zConn)
go endpoints.TXer(zConn, conn)
Expand Down
40 changes: 17 additions & 23 deletions endpoints/udpTunnel/frontend.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,12 @@ package udpTunnel
import (
"github.com/openziti/sdk-golang/ziti"
"github.com/openziti/sdk-golang/ziti/config"
"github.com/openziti/transport/v2"
"github.com/openziti/zrok/endpoints"
"github.com/openziti/zrok/model"
"github.com/openziti/zrok/zrokdir"
"github.com/pkg/errors"
"github.com/sirupsen/logrus"
"io"
"net"
)

type FrontendConfig struct {
Expand All @@ -19,16 +18,15 @@ type FrontendConfig struct {
}

type Frontend struct {
cfg *FrontendConfig
zCtx ziti.Context
listener transport.Address
closer io.Closer
cfg *FrontendConfig
zCtx ziti.Context
lAddr *net.UDPAddr
}

func NewFrontend(cfg *FrontendConfig) (*Frontend, error) {
addr, err := transport.ParseAddress(cfg.BindAddress)
lAddr, err := net.ResolveUDPAddr("udp", cfg.BindAddress)
if err != nil {
return nil, errors.Wrapf(err, "error parsing '%v'", cfg.BindAddress)
return nil, errors.Wrapf(err, "error resolving udp address '%v'", cfg.BindAddress)
}
zCfgPath, err := zrokdir.ZitiIdentityFile(cfg.IdentityName)
if err != nil {
Expand All @@ -41,28 +39,24 @@ func NewFrontend(cfg *FrontendConfig) (*Frontend, error) {
zCfg.ConfigTypes = []string{model.ZrokProxyConfig}
zCtx := ziti.NewContextWithConfig(zCfg)
return &Frontend{
cfg: cfg,
zCtx: zCtx,
listener: addr,
cfg: cfg,
zCtx: zCtx,
lAddr: lAddr,
}, nil
}

func (f *Frontend) Run() error {
closer, err := f.listener.Listen(f.cfg.ShrToken, nil, f.accept, nil)
if err != nil {
return err
}
f.closer = closer
return nil
}

func (f *Frontend) Stop() {
if f.closer != nil {
_ = f.closer.Close()
for {
if conn, err := net.ListenUDP("udp", f.lAddr); err == nil {
go f.accept(conn)
logrus.Infof("accepted udp connection from '%v'", conn.RemoteAddr())
} else {
return err
}
}
}

func (f *Frontend) accept(conn transport.Conn) {
func (f *Frontend) accept(conn *net.UDPConn) {
if zConn, err := f.zCtx.Dial(f.cfg.ShrToken); err == nil {
go endpoints.TXer(conn, zConn)
go endpoints.TXer(zConn, conn)
Expand Down

0 comments on commit 25b1469

Please sign in to comment.