public void Connect(VpnChannel channel) { try { var b = goTestFunction(1); //var vpnCustomPromptTextInput = new VpnCustomPromptTextInput() { DisplayName = "Give me some input" }; ////this call is NOT asynchronous. awaiting the result will halt the program //channel.RequestCustomPromptAsync(new IVpnCustomPromptElement[] //{ // new VpnCustomPromptText() {DisplayName = "This is a test", Text = "Message"}, // vpnCustomPromptTextInput //}); //var inputWas = vpnCustomPromptTextInput.Text; var transport = new DatagramSocket(); transport.MessageReceived += Transport_MessageReceived; //var streamSocket = new StreamSocket(); channel.AssociateTransport(transport, null); //channel.LogDiagnosticMessage("this is from the wireguard plugin");// supposedly under Event Viewer, under Application and Services Logs\Microsoft\Windows\Vpn Plugin Platform. but can't find //transport.BindServiceNameAsync("50000").AsTask().Wait(); //transport.BindEndpointAsync(new HostName("192.168.1.100"), "50000").AsTask().Wait(); transport.ConnectAsync(new HostName(channel.Configuration.ServerUris[0].Scheme), channel.Configuration.ServerUris[0].LocalPath).AsTask().Wait(); var vpnRouteAssignment = new VpnRouteAssignment { ExcludeLocalSubnets = false }; vpnRouteAssignment.Ipv4InclusionRoutes.Add(new VpnRoute(new HostName("10.189.129.1"), 32)); channel.StartExistingTransports( new[] { new HostName("10.189.129.2"), //this is our network interface address }, null, null, vpnRouteAssignment, null, VPN_MTU, VPN_MAX_FRAME, false ); } catch (Exception e) { Console.WriteLine(e); } }
internal void ConfigureAndConnect(VpnChannel vpnChannel, string parameters) { parameters = parameters.TrimEnd(); uint mtuSize = 68; var assignedClientIPv4list = new List <HostName>(); var dnsServerList = new List <HostName>(); VpnRouteAssignment assignedRoutes = new VpnRouteAssignment(); VpnDomainNameAssignment assignedDomainName = new VpnDomainNameAssignment(); var ipv4InclusionRoutes = assignedRoutes.Ipv4InclusionRoutes; foreach (var parameter in parameters.Split(null)) { var fields = parameter.Split(","); switch (fields[0]) { case "m": mtuSize = uint.Parse(fields[1]); break; case "a": assignedClientIPv4list.Add(new HostName(fields[1])); break; case "r": ipv4InclusionRoutes.Add(new VpnRoute(new HostName(fields[1]), (byte)(int.Parse(fields[2])))); break; case "d": dnsServerList.Add(new HostName(fields[1])); break; default: break; } } assignedRoutes.Ipv4InclusionRoutes = ipv4InclusionRoutes; assignedDomainName.DomainNameList.Add(new VpnDomainNameInfo(".", VpnDomainNameType.Suffix, dnsServerList, null)); try { vpnChannel.StartExistingTransports(assignedClientIPv4list, null, null, assignedRoutes, assignedDomainName, mtuSize, ushort.MaxValue, false); } catch (Exception e) { vpnChannel.TerminateConnection(e.Message); } }
private string user = "******"; // expected username for the VPN credentials public void Connect(VpnChannel channel) { Debug.WriteLine("VPNDEMO: Entering plugin Connect"); try { var prompt = new VpnCustomPromptTextInput { Compulsory = true, DisplayName = "Username", Emphasized = false, IsTextHidden = false, }; var promptList = new[] { prompt }; // Prompt user for credential info _ = channel.RequestCustomPromptAsync(promptList); if (prompt.Text.Equals(user)) { Debug.WriteLine("VPNDEMO: user verified with success"); socket?.Dispose(); socket = new StreamSocket(); channel.AssociateTransport(this.socket, null); Debug.WriteLine("VPNDEMO: calling ConnectAsync"); this.socket.ConnectAsync(new HostName("www.microsoft.com"), "443", SocketProtectionLevel.Tls12).AsTask().GetAwaiter().GetResult(); Debug.WriteLine("VPNDEMO: ConnectAsync returned"); var myRoute = new VpnRouteAssignment(); myRoute.Ipv4InclusionRoutes.Add(new VpnRoute(new HostName("192.168.80.0"), 24)); var myAddress = new List <HostName> { new HostName("192.168.80.100") }; Debug.WriteLine("VPNDEMO: Calling channel.StartExistingTransports()"); channel.StartExistingTransports(myAddress, null, null, myRoute, new VpnDomainNameAssignment(), 1472, 1500, false); Debug.WriteLine("VPNDEMO: Connected"); } else { Debug.WriteLine("VPNDEMO: user verification failed"); channel.TerminateConnection("Failed credentials"); } } catch (Exception e) { Debug.WriteLine("VPNDEMO: EXCEPTION in plugin connect: " + e.ToString()); //throw; } }