// Build . func (builder *ProxyBuilder) Build(name string) Context { proxy := &_Proxy{ Log: gslogger.Get("gsproxy"), proxy: builder.proxy, clients: make(map[string]*_Client), name: name, tunnels: make(map[byte]byte), } proxy.frontend = gorpc.NewAcceptor( fmt.Sprintf("%s.frontend", name), gorpc.BuildPipeline(time.Millisecond*10).Handler( "gsproxy-profile", gorpc.ProfileHandler, ).Handler( "gsproxy-hb", func() gorpc.Handler { return handler.NewHeartbeatHandler(builder.timeout) }, ).Handler( "gsproxy-dh", func() gorpc.Handler { return handler.NewCryptoServer(builder.dhkeyResolver) }, ).Handler( transProxyHandler, proxy.newTransProxyHandler, ).Handler( "gsproxy-client", proxy.newClientHandler, ), ) proxy.backend = gorpc.NewAcceptor( fmt.Sprintf("%s.backend", name), gorpc.BuildPipeline(time.Millisecond*10).Handler( tunnelHandler, proxy.newTunnelServer, ), ) go func() { if err := gorpc.TCPListen(proxy.backend, builder.laddrE); err != nil { proxy.E("start agent backend error :%s", err) } }() go func() { if err := gorpc.TCPListen(proxy.frontend, builder.laddrF); err != nil { proxy.E("start agent frontend error :%s", err) } }() return proxy }
func init() { gslogger.NewFlags(gslogger.ERROR | gslogger.INFO) go gorpc.TCPListen(acceptpor, ":13512") http.HandleFunc("/api", api) go http.ListenAndServe(":13513", nil) }