public void TestConfigListener2() { TunnelConfig config = null; using (XmlReader rdr = new XmlTextReader(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "SslTunnel.Test.Sample.config"))) config = TunnelConfig.Load(rdr); Assert.IsNotNull(config); Assert.AreEqual(4, config.Listeners.Length); //<listener ip="127.0.0.1" port="11443" serverCertFile="server.localhost.nunit.cer" serverCertPassword="******"> Assert.AreEqual(typeof(TunnelListener), config.Listeners[3].GetType()); Assert.AreEqual("127.0.0.1", ((TunnelListener)config.Listeners[3]).IpEndpoint); Assert.AreEqual(11443, ((TunnelListener)config.Listeners[3]).Port); Assert.AreEqual("server.localhost.nunit.cer", ((TunnelListener)config.Listeners[3]).ServerCertificate); Assert.AreEqual("password", ((TunnelListener)config.Listeners[3]).ServerCertPassword); // <!--only allow name/hash/publicKey = client.localhost.nunit.cer--> // <accept issuedTo="client.localhost.nunit" Assert.AreEqual(1, ((TunnelListener)config.Listeners[3]).AllowedClients.Length); Assert.AreEqual("client.localhost.nunit", ((TunnelListener)config.Listeners[3]).AllowedClients[0].IssuedTo); // hash="68D757B929A1A91806C098C9BF89297EAB16675D" Assert.AreEqual("68D757B929A1A91806C098C9BF89297EAB16675D", ((TunnelListener)config.Listeners[3]).AllowedClients[0].Hash); // publicKey="30818902818100CF2B2CCF01956ADE2725104674FE107173446061A694BEFF31FDCAC134EA69125E1704CD0BBFBE1806F29909C60416FFEF811A03C8A3A248CD7086F7BDE959BC29DE4999A8A44191BCE8102DDC56E245476B91F773C2E7A47C32BC3935AF8766082F391E165976A46D6A57B609540B92E4BE681EC4E2EFB8C3F1C12B5709DFE90203010001" Assert.AreEqual("30818902818100CF2B2CCF01956ADE2725104674FE107173446061A694BEFF31FDCAC134EA69125E1704CD0BBFBE1806F29909C60416FFEF811A03C8A3A248CD7086F7BDE959BC29DE4999A8A44191BCE8102DDC56E245476B91F773C2E7A47C32BC3935AF8766082F391E165976A46D6A57B609540B92E4BE681EC4E2EFB8C3F1C12B5709DFE90203010001", ((TunnelListener)config.Listeners[3]).AllowedClients[0].PublicKey); // ignoreErrors="All" /> Assert.AreEqual(IgnorePolicyErrors.All, ((TunnelListener)config.Listeners[3]).AllowedClients[0].IgnoredErrors); // <target ip="google.com" port="443" ssl="true" /> Assert.AreEqual("google.com", ((TunnelListener)config.Listeners[3]).Target.IpEndpoint); Assert.AreEqual(443, ((TunnelListener)config.Listeners[3]).Target.Port); Assert.AreEqual(true, ((TunnelListener)config.Listeners[3]).Target.UseSsl); //</listener> }
public void TestConfigMultiplexer() { TunnelConfig config = null; using (XmlReader rdr = new XmlTextReader(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "SslTunnel.Test.Sample.config"))) config = TunnelConfig.Load(rdr); Assert.IsNotNull(config); Assert.AreEqual(4, config.Listeners.Length); //<multiplexer ip="127.0.0.1"> Assert.AreEqual(typeof(TunnelMultiplexer), config.Listeners[0].GetType()); Assert.AreEqual("127.0.0.1", ((TunnelMultiplexer)config.Listeners[0]).IpEndpoint); // <accept ? Assert.IsNull(((TunnelMultiplexer)config.Listeners[0]).AllowedClients); // <add port="10080"/> Assert.AreEqual(10080, ((TunnelMultiplexer)config.Listeners[0]).Ports[0].Port); // <add port="10081"/> Assert.AreEqual(10081, ((TunnelMultiplexer)config.Listeners[0]).Ports[1].Port); // <target ip="127.0.0.1" port="10443" clientCertFile="client.localhost.nunit.cer" clientCertPassword="******"> Assert.AreEqual("127.0.0.1", ((TunnelMultiplexer)config.Listeners[0]).Target.IpEndpoint); Assert.AreEqual(10443, ((TunnelMultiplexer)config.Listeners[0]).Target.Port); Assert.AreEqual("client.localhost.nunit.cer", ((TunnelMultiplexer)config.Listeners[0]).Target.ClientCertificate); Assert.AreEqual("password", ((TunnelMultiplexer)config.Listeners[0]).Target.ClientCertPassword); // <!--expect publicKey = server.localhost.nunit.cer--> // <expect ignoreErrors="All" publicKey="30818902818100A3F81009F73AC50EDA186F8EDBB846C63A8BB8F0E8C25179DEA8FA376372E9394D470B071A76AA0F8D6250B98B8665FF2C03097D7055080AD237F1038404C99F44F2235BC319FFEBF70505225DAD4D47A1868FC92B4E9DEECA06F7BC5171CD96603B35AA6F7816DE294885E0AEF5B62EA981983822174CFDF2C46F392276DA8F0203010001" /> Assert.AreEqual("30818902818100A3F81009F73AC50EDA186F8EDBB846C63A8BB8F0E8C25179DEA8FA376372E9394D470B071A76AA0F8D6250B98B8665FF2C03097D7055080AD237F1038404C99F44F2235BC319FFEBF70505225DAD4D47A1868FC92B4E9DEECA06F7BC5171CD96603B35AA6F7816DE294885E0AEF5B62EA981983822174CFDF2C46F392276DA8F0203010001", ((TunnelMultiplexer)config.Listeners[0]).Target.ExpectedCert.PublicKey); Assert.AreEqual(IgnorePolicyErrors.All, ((TunnelMultiplexer)config.Listeners[0]).Target.ExpectedCert.IgnoredErrors); // </target> //</multiplexer> }
protected override void OnStart(string[] args) { Log.Write("Service starting: {0}", Environment.CommandLine); TunnelConfig config = TunnelConfig.Load(); _running = config.Start(); Log.Verbose("Service running."); }