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)))))))); }
internal OpenVpnProcess( ILogger logger, IOsProcesses processes, OpenVpnExitEvent processExitEvent, OpenVpnConfig config) { _logger = logger; _processes = processes; _processExitEvent = processExitEvent; _config = config; _process = _nullProcess = new NullOsProcess(); }
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))))); }
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(); }
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); }
public void TestInitialize() { _config = Substitute.For <OpenVpnConfig>(); }
public BasicArguments(OpenVpnConfig config) { _config = config; }
public ManagementArguments(OpenVpnConfig config, int managementPort) { _config = config; _managementPort = managementPort; }
public TlsVerifyArguments(OpenVpnConfig config, string serverName) { _config = config; _serverName = serverName; }