Exemplo n.º 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))))))));
        }
Exemplo n.º 2
0
        internal OpenVpnProcess(
            ILogger logger,
            IOsProcesses processes,
            OpenVpnExitEvent processExitEvent,
            OpenVpnConfig config)
        {
            _logger           = logger;
            _processes        = processes;
            _processExitEvent = processExitEvent;
            _config           = config;

            _process = _nullProcess = new NullOsProcess();
        }
Exemplo n.º 3
0
        private ISingleVpnConnection GetOpenVpnConnection(IComponentContext c)
        {
            ILogger       logger = c.Resolve <ILogger>();
            OpenVpnConfig config = c.Resolve <OpenVpnConfig>();

            return(new OpenVpnConnection(
                       logger,
                       c.Resolve <INetworkInterfaceLoader>(),
                       c.Resolve <OpenVpnProcess>(),
                       new ManagementClient(
                           logger,
                           new ConcurrentManagementChannel(
                               new TcpManagementChannel(
                                   logger,
                                   config.ManagementHost)))));
        }
Exemplo n.º 4
0
        public void Load(ContainerBuilder builder)
        {
            builder.RegisterType <VpnEndpointScanner>().SingleInstance();
            builder.RegisterType <TcpPortScanner>().SingleInstance();
            builder.RegisterType <NetworkInterfaceLoader>().As <INetworkInterfaceLoader>().SingleInstance();
            builder.RegisterType <SplitTunnelRouting>().SingleInstance();
            builder.RegisterType <UdpPingClient>().SingleInstance();
            builder.Register(c =>
            {
                ILogger logger       = c.Resolve <ILogger>();
                OpenVpnConfig config = c.Resolve <OpenVpnConfig>();

                return(new OpenVpnProcess(
                           logger,
                           c.Resolve <IOsProcesses>(),
                           new OpenVpnExitEvent(logger,
                                                new SystemSynchronizationEvents(logger),
                                                config.ExitEventName),
                           config));
            }
                             ).SingleInstance();
        }
Exemplo n.º 5
0
        public OpenVpnConfig Parse(string file)
        {
            OpenVpnConfig result;

            using (StreamReader streamReader = File.OpenText(file))
            {
                string text  = "";
                string text2 = "";
                string text3;
                while ((text3 = streamReader.ReadLine()) != null)
                {
                    text3 = text3.Trim();
                    if (OpenVpnConfigsParser.StartsWithName(text3, "proto"))
                    {
                        text = OpenVpnConfigsParser.ParseLine(text3).Skip(1).FirstOrDefault <string>();
                    }
                    if (OpenVpnConfigsParser.StartsWithName(text3, "remote"))
                    {
                        text2 = OpenVpnConfigsParser.ParseLine(text3).Skip(1).FirstOrDefault <string>();
                    }
                    if (!string.IsNullOrEmpty(text) && !string.IsNullOrEmpty(text2))
                    {
                        break;
                    }
                }
                if (string.IsNullOrEmpty(text))
                {
                    throw new InvalidOpenVpnConfigException("OpenVPN config is invalid. Protocol value is missing");
                }
                if (string.IsNullOrEmpty(text2))
                {
                    throw new InvalidOpenVpnConfigException("OpenVPN config is invalid. Remote value is missing");
                }
                result = new OpenVpnConfig(file, text2, text);
            }
            return(result);
        }
Exemplo n.º 6
0
 public void TestInitialize()
 {
     _config = Substitute.For <OpenVpnConfig>();
 }
Exemplo n.º 7
0
 public BasicArguments(OpenVpnConfig config)
 {
     _config = config;
 }
Exemplo n.º 8
0
 public ManagementArguments(OpenVpnConfig config, int managementPort)
 {
     _config         = config;
     _managementPort = managementPort;
 }
Exemplo n.º 9
0
 public TlsVerifyArguments(OpenVpnConfig config, string serverName)
 {
     _config     = config;
     _serverName = serverName;
 }