Example #1
0
        public IVpnConnection GetVpnConnection(IComponentContext c)
        {
            ILogger        logger         = c.Resolve <ILogger>();
            OpenVpnConfig  config         = c.Resolve <OpenVpnConfig>();
            ITaskQueue     taskQueue      = c.Resolve <ITaskQueue>();
            TcpPortScanner tcpPortScanner = c.Resolve <TcpPortScanner>();

            tcpPortScanner.Config(config.OpenVpnStaticKey);
            IEndpointScanner      endpointScanner = c.Resolve <VpnEndpointScanner>();
            VpnEndpointCandidates candidates      = new();

            return(new LoggingWrapper(
                       logger,
                       new ReconnectingWrapper(
                           logger,
                           candidates,
                           endpointScanner,
                           new HandlingRequestsWrapper(
                               logger,
                               taskQueue,
                               new BestPortWrapper(
                                   logger,
                                   taskQueue,
                                   endpointScanner,
                                   new QueueingEventsWrapper(
                                       taskQueue,
                                       new VpnProtocolWrapper(GetOpenVpnConnection(c), GetWireguardConnection(c))))))));
        }