nps/server/common/common_inet_proxy_handle.go
2019-10-16 18:28:36 +08:00

40 lines
864 B
Go

package common
import (
"context"
"github.com/cnlh/nps/core"
"net"
)
type Proxy struct {
core.NpsPlugin
clientConn net.Conn
ctx context.Context
}
func (proxy *Proxy) GetConfigName() *core.NpsConfigs {
return core.NewNpsConfigs("socks5_proxy", "proxy to inet", core.CONFIG_LEVEL_PLUGIN)
}
func (proxy *Proxy) Run(ctx context.Context) (context.Context, error) {
proxy.ctx = ctx
proxy.clientConn = proxy.GetClientConn(ctx)
clientId := proxy.GetClientId(ctx)
brg := proxy.GetBridge(ctx)
severConn, err := brg.GetConnByClientId(clientId)
if err != nil {
return ctx, err
}
// send connection information to the npc
if _, err := core.SendInfo(severConn, nil); err != nil {
return ctx, err
}
// data exchange
go core.CopyBuffer(severConn, proxy.clientConn)
core.CopyBuffer(proxy.clientConn, severConn)
return ctx, core.REQUEST_EOF
}