public async Task <ExitReason> Run(SessionContext context)
        {
            context.RemoveHost();

            context.AddHost(await Connect(context.Header));

            context.CurrentHostAddress = context.Header.Host;

            return(ExitReason.NewHostConnected);
        }
示例#2
0
        public async Task <LastPipeState> Run(ProxyMediatorHandler handler, SessionContext context)
        {
            context.RemoveHost();
            if (context.StageFunc?.OnBeforeConnect != null)
            {
                context.CurrentExternalProxy = await context.StageFunc.OnBeforeConnect(context, handler);
            }
            if (context.CurrentExternalProxy == null)
            {
                context.AddHost(await Connect(context.Header.Host.Hostname, context.Header.Host.Port));
            }
            else
            {
                context.AddHost(await Connect(context.CurrentExternalProxy.Address, context.CurrentExternalProxy.Port));
            }

            context.CurrentHostAddress = context.Header.Host;

            return(LastPipeState.NewHostConnected);
        }