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))))))));
        }
Example #2
0
 public VpnEndpointScanner(
     ILogger logger,
     ITaskQueue taskQueue,
     TcpPortScanner tcpPortScanner,
     UdpPingClient udpPingClient)
 {
     _logger         = logger;
     _taskQueue      = taskQueue;
     _tcpPortScanner = tcpPortScanner;
     _udpPingClient  = udpPingClient;
 }