private static void Main() { Assembly.Load("OpenBus.Legacy.Idl"); string hostName = DemoConfig.Default.busHostName; ushort hostPort = DemoConfig.Default.busHostPort; string loginFile = DemoConfig.Default.loginFile; bool useSSL = DemoConfig.Default.useSSL; string clientUser = DemoConfig.Default.clientUser; string clientThumbprint = DemoConfig.Default.clientThumbprint; string serverUser = DemoConfig.Default.serverUser; string serverThumbprint = DemoConfig.Default.serverThumbprint; ushort serverSSLPort = DemoConfig.Default.serverSSLPort; ushort serverOpenPort = DemoConfig.Default.serverOpenPort; string busIORFile = DemoConfig.Default.busIORFile; if (useSSL) { Utils.InitSSLORB(clientUser, clientThumbprint, serverUser, serverThumbprint, serverSSLPort, serverOpenPort, true, true, "required", false, false); } else { ORBInitializer.InitORB(); } /* * ConsoleAppender appender = new ConsoleAppender { * Threshold = Level.Off, * Layout = * new SimpleLayout(), * }; * BasicConfigurator.Configure(appender); */ ConnectionProperties props = new ConnectionPropertiesImpl(); OpenBusContext context = ORBInitializer.Context; Connection conn; if (useSSL) { string ior = File.ReadAllText(busIORFile); conn = context.ConnectByReference((MarshalByRefObject)OrbServices.CreateProxy(typeof(MarshalByRefObject), ior), props); } else { conn = context.ConnectByAddress(hostName, hostPort, props); } context.SetDefaultConnection(conn); byte[] encoded = File.ReadAllBytes(loginFile); SharedAuthSecret secret = context.DecodeSharedAuth(encoded); conn.LoginBySharedAuth(secret); Assert.IsNotNull(conn.Login); Assert.IsNotNull(conn.Login.Value.id); Assert.IsNotNull(conn.Login.Value.entity); conn.Logout(); Logger.Info("Fim."); }
public Connection ConnectByAddress(string host, ushort port, ConnectionProperties props) { if (host == null || host.Equals(string.Empty)) { throw new ArgumentException("Endereço inválido."); } if (port <= 0) { throw new ArgumentException("Porta inválida."); } IgnoreCurrentThread(); try { String corbaloc = "corbaloc::1.0@" + host + ":" + port + "/" + BusObjectKey.ConstVal; // RemotingServices.Connect não faz nenhuma chamada remota. IComponent busIC = (IComponent)OrbServices.CreateProxy(typeof(IComponent), corbaloc); return(new ConnectionImpl(busIC, this, !GetLegacyDisableFromProps(props), GetPrivateKeyFromProps(props))); } finally { UnignoreCurrentThread(); } }
private void InvalidateLogin(Connection conn) { IComponent busIC; if (_useSSL) { busIC = (IComponent)OrbServices.CreateProxy(typeof(IComponent), _busIOR); } else { busIC = OrbServices.CreateProxy( typeof(IComponent), "corbaloc::1.0@" + _hostName + ":" + _hostPort + "/" + BusObjectKey.ConstVal) as IComponent; } Assert.IsNotNull(busIC); string lrId = Repository.GetRepositoryID(typeof(LoginRegistry)); LoginRegistry lr = busIC.getFacet(lrId) as LoginRegistry; Assert.IsNotNull(lr); lr.invalidateLogin(conn.Login.Value.id); }
private static void Main() { string hostName = DemoConfig.Default.busHostName; ushort hostPort = DemoConfig.Default.busHostPort; ushort hostPort2 = DemoConfig.Default.bus2HostPort; ASCIIEncoding encoding = new ASCIIEncoding(); object[] buses; bool useSSL = DemoConfig.Default.useSSL; string clientUser = DemoConfig.Default.clientUser; string clientThumbprint = DemoConfig.Default.clientThumbprint; string serverUser = DemoConfig.Default.serverUser; string serverThumbprint = DemoConfig.Default.serverThumbprint; ushort serverSSLPort = DemoConfig.Default.serverSSLPort; ushort serverOpenPort = DemoConfig.Default.serverOpenPort; string busIORFile = DemoConfig.Default.busIORFile; string bus2IORFile = DemoConfig.Default.bus2IORFile; if (useSSL) { Utils.InitSSLORB(clientUser, clientThumbprint, serverUser, serverThumbprint, serverSSLPort, serverOpenPort, true, true, "required", false, false); buses = new object[] { busIORFile, bus2IORFile }; } else { ORBInitializer.InitORB(); buses = new object[] { hostPort, hostPort2 }; } ConnectionProperties props = new ConnectionPropertiesImpl(); OpenBusContext context = ORBInitializer.Context; for (int i = 0; i < buses.Length; i++) { Connection conn; if (useSSL) { string ior = File.ReadAllText((string)buses[i]); conn = context.ConnectByReference((MarshalByRefObject)OrbServices.CreateProxy(typeof(MarshalByRefObject), ior), props); } else { conn = context.ConnectByAddress(hostName, (ushort)buses[i], props); } context.SetDefaultConnection(conn); const string login = "******"; conn.LoginByPassword(login, encoding.GetBytes(login), "testing"); ServiceProperty[] properties = new ServiceProperty[2]; properties[0] = new ServiceProperty("openbus.component.interface", Repository.GetRepositoryID(typeof(Hello))); properties[1] = new ServiceProperty("offer.domain", "Interoperability Tests"); List <ServiceOfferDesc> offers = Utils.FindOffer(ORBInitializer.Context.OfferRegistry, properties, 1, 10, 1); foreach (ServiceOfferDesc offer in offers) { string entity = Utils.GetProperty(offer.properties, "openbus.offer.entity"); if (entity != null) { Logger.Info("found offer from " + entity + " on bus " + i); } try { MarshalByRefObject obj = offer.service_ref.getFacet( Repository.GetRepositoryID(typeof(Hello))); if (obj == null) { Logger.Info( "Não foi possível encontrar uma faceta com esse nome."); continue; } Hello hello = obj as Hello; if (hello == null) { Logger.Info("Faceta encontrada não implementa Hello."); continue; } string expected = String.Format("Hello {0}@{1}!", login, conn.BusId); string ret = hello.sayHello(); Assert.AreEqual(expected, ret); } catch (TRANSIENT) { Logger.Info( "Uma das ofertas obtidas é de um cliente inativo. Tentando a próxima."); } } conn.Logout(); } }
private static void Main() { string hostName = DemoConfig.Default.busHostName; ushort hostPort = DemoConfig.Default.busHostPort; bool useSSL = DemoConfig.Default.useSSL; string clientUser = DemoConfig.Default.clientUser; string clientThumbprint = DemoConfig.Default.clientThumbprint; string serverUser = DemoConfig.Default.serverUser; string serverThumbprint = DemoConfig.Default.serverThumbprint; ushort serverSSLPort = DemoConfig.Default.serverSSLPort; ushort serverOpenPort = DemoConfig.Default.serverOpenPort; string busIORFile = DemoConfig.Default.busIORFile; if (useSSL) { Utils.InitSSLORB(clientUser, clientThumbprint, serverUser, serverThumbprint, serverSSLPort, serverOpenPort, true, true, "required", false, false); } else { ORBInitializer.InitORB(); } /* * ConsoleAppender appender = new ConsoleAppender { * Threshold = Level.Off, * Layout = * new SimpleLayout(), * }; * BasicConfigurator.Configure(appender); */ ConnectionProperties props = new ConnectionPropertiesImpl(); OpenBusContext context = ORBInitializer.Context; Connection conn; if (useSSL) { string ior = File.ReadAllText(busIORFile); conn = context.ConnectByReference((MarshalByRefObject)OrbServices.CreateProxy(typeof(MarshalByRefObject), ior), props); } else { conn = context.ConnectByAddress(hostName, hostPort, props); } context.SetDefaultConnection(conn); const string userLogin = "******"; byte[] userPassword = new ASCIIEncoding().GetBytes(userLogin); conn.LoginByPassword(userLogin, userPassword, "testing"); // propriedades geradas automaticamente ServiceProperty prop1 = new ServiceProperty("reloggedjoin.role", "proxy"); // propriedade definida pelo servidor hello ServiceProperty prop2 = new ServiceProperty("offer.domain", "Interoperability Tests"); ServiceProperty[] properties = { prop1, prop2 }; List <ServiceOfferDesc> offers = Utils.FindOffer(ORBInitializer.Context.OfferRegistry, properties, 1, 10, 1); bool foundOne = false; foreach (ServiceOfferDesc serviceOfferDesc in offers) { try { string found = Utils.GetProperty(serviceOfferDesc.properties, "openbus.offer.entity"); Logger.Info("Entidade encontrada: " + found); MarshalByRefObject helloObj = serviceOfferDesc.service_ref.getFacet( Repository.GetRepositoryID(typeof(Hello))); if (helloObj == null) { Logger.Info( "Não foi possível encontrar uma faceta com esse nome."); continue; } Hello hello = helloObj as Hello; if (hello == null) { Logger.Info("Faceta encontrada não implementa Hello."); continue; } foundOne = true; Assert.AreEqual("" + hello.sayHello(), "Hello " + userLogin + "!"); } catch (TRANSIENT) { Logger.Info( "Uma das ofertas obtidas é de um cliente inativo. Tentando a próxima."); } } conn.Logout(); Assert.IsTrue(foundOne); Logger.Info("Fim."); }
private static void Main() { //TextWriterTraceListener writer = new TextWriterTraceListener(Console.Out); //Debug.Listeners.Add(writer); //Trace.Listeners.Add(writer); AppDomain.CurrentDomain.ProcessExit += CurrentDomainProcessExit; string hostName = DemoConfig.Default.busHostName; ushort hostPort = DemoConfig.Default.busHostPort; _privateKey = Crypto.ReadKeyFile(DemoConfig.Default.privateKey); bool useSSL = DemoConfig.Default.useSSL; string clientUser = DemoConfig.Default.clientUser; string clientThumbprint = DemoConfig.Default.clientThumbprint; string serverUser = DemoConfig.Default.serverUser; string serverThumbprint = DemoConfig.Default.serverThumbprint; ushort serverSSLPort = DemoConfig.Default.serverSSLPort; ushort serverOpenPort = DemoConfig.Default.serverOpenPort; string busIORFile = DemoConfig.Default.busIORFile; if (useSSL) { Utils.InitSSLORB(clientUser, clientThumbprint, serverUser, serverThumbprint, serverSSLPort, serverOpenPort, true, true, "required", false, false); } else { ORBInitializer.InitORB(); } /* * ConsoleAppender appender = new ConsoleAppender { * Threshold = Level.Off, * Layout = * new SimpleLayout(), * }; * BasicConfigurator.Configure(appender); */ //FileInfo logFileInfo = new FileInfo(DemoConfig.Default.openbusLogFile); //XmlConfigurator.ConfigureAndWatch(logFileInfo); ConnectionProperties props = new ConnectionPropertiesImpl(); props.AccessKey = _privateKey; OpenBusContext context = ORBInitializer.Context; if (useSSL) { string ior = File.ReadAllText(busIORFile); _conn = context.ConnectByReference((MarshalByRefObject)OrbServices.CreateProxy(typeof(MarshalByRefObject), ior), props); } else { _conn = context.ConnectByAddress(hostName, hostPort, props); } context.SetDefaultConnection(_conn); ComponentContext component = new DefaultComponentContext(new ComponentId("hello", 1, 0, 0, ".net")); component.AddFacet("Hello", Repository.GetRepositoryID(typeof(Hello)), new HelloImpl()); _conn.LoginByCertificate(Entity, _privateKey); _ic = component.GetIComponent(); _properties = new[] { new ServiceProperty("offer.domain", "Interoperability Tests") }; _offer = context.OfferRegistry.registerService(_ic, _properties); _conn.OnInvalidLogin = InvalidLogin; Logger.Fatal("Servidor no ar."); Thread.Sleep(Timeout.Infinite); }
private static void Main(String[] args) { // Obtém dados através dos argumentos string busIOR = File.ReadAllText(args[0]); string domain = args[1]; string entity = args[2]; byte[] password = new ASCIIEncoding().GetBytes(args[3]); SSLUtils.InitORBWithSSL(args[4], args[5], args[6], args[7], Convert.ToUInt16(args[9]), Convert.ToUInt16(args[8]), Convert.ToBoolean(args[10]), Convert.ToBoolean(args[11]), args[12], Convert.ToBoolean(args[13]), Convert.ToBoolean(args[14])); // Cria conexão e a define como conexão padrão tanto para entrada como saída. // O uso exclusivo da conexão padrão (sem uso de current e callback de despacho) só é recomendado para aplicações que criem apenas uma conexão e desejem utilizá-la em todos os casos. Para situações diferentes, consulte o manual do SDK OpenBus e/ou outras demos. OpenBusContext context = ORBInitializer.Context; Connection conn = context.ConnectByReference((MarshalByRefObject)OrbServices.CreateProxy(typeof(MarshalByRefObject), busIOR)); context.SetDefaultConnection(conn); string helloIDLType = Repository.GetRepositoryID(typeof(Hello)); ServiceOfferDesc[] offers = null; try { // Faz o login conn.LoginByPassword(entity, password, domain); // Faz busca utilizando propriedades geradas automaticamente e propriedades definidas pelo serviço específico // propriedade gerada automaticamente ServiceProperty autoProp = new ServiceProperty("openbus.component.interface", helloIDLType); // propriedade definida pelo serviço hello ServiceProperty prop = new ServiceProperty("offer.domain", "Demo Hello"); ServiceProperty[] properties = { prop, autoProp }; offers = context.OfferRegistry.findServices(properties); } catch (AccessDenied) { Console.WriteLine(Resources.ClientAccessDenied + entity + "."); } catch (ServiceFailure e) { Console.WriteLine(Resources.BusServiceFailureErrorMsg); Console.WriteLine(e); } catch (TRANSIENT) { Console.WriteLine(Resources.BusTransientErrorMsg); } catch (COMM_FAILURE) { Console.WriteLine(Resources.BusCommFailureErrorMsg); } catch (Exception e) { NO_PERMISSION npe = null; if (e is TargetInvocationException) { // caso seja uma exceção lançada pelo SDK, será uma NO_PERMISSION npe = e.InnerException as NO_PERMISSION; } if ((npe == null) && (!(e is NO_PERMISSION))) { // caso não seja uma NO_PERMISSION não é uma exceção esperada então deixamos passar. throw; } npe = npe ?? (NO_PERMISSION)e; if (npe.Minor == NoLoginCode.ConstVal) { Console.WriteLine(Resources.NoLoginCodeErrorMsg); } else { throw; } } // analiza as ofertas encontradas bool failed = true; if (offers != null) { if (offers.Length < 1) { Console.WriteLine(Resources.ServiceNotFound); } else { if (offers.Length > 1) { Console.WriteLine(Resources.ServiceFoundMoreThanExpected); } foreach (ServiceOfferDesc serviceOfferDesc in offers) { Console.WriteLine(Resources.ServiceFoundTesting); try { MarshalByRefObject helloObj = serviceOfferDesc.service_ref.getFacet(helloIDLType); if (helloObj == null) { Console.WriteLine(Resources.FacetNotFoundInOffer); continue; } Hello hello = helloObj as Hello; if (hello == null) { Console.WriteLine(Resources.FacetFoundWrongType); continue; } Console.WriteLine(Resources.OfferFound); // utiliza o serviço hello.sayHello(); failed = false; break; } catch (TRANSIENT) { Console.WriteLine(Resources.ServiceTransientErrorMsg); } catch (COMM_FAILURE) { Console.WriteLine(Resources.ServiceCommFailureErrorMsg); } catch (Exception e) { NO_PERMISSION npe = null; if (e is TargetInvocationException) { // caso seja uma exceção lançada pelo SDK, será uma NO_PERMISSION npe = e.InnerException as NO_PERMISSION; } if ((npe == null) && (!(e is NO_PERMISSION))) { // caso não seja uma NO_PERMISSION não é uma exceção esperada então deixamos passar. throw; } npe = npe ?? (NO_PERMISSION)e; bool found = false; string message = String.Empty; switch (npe.Minor) { case NoLoginCode.ConstVal: message = Resources.NoLoginCodeErrorMsg; found = true; break; case UnknownBusCode.ConstVal: message = Resources.UnknownBusCodeErrorMsg; found = true; break; case UnverifiedLoginCode.ConstVal: message = Resources.UnverifiedLoginCodeErrorMsg; found = true; break; case InvalidRemoteCode.ConstVal: message = Resources.InvalidRemoteCodeErrorMsg; found = true; break; } if (found) { Console.WriteLine(message); } else { throw; } } } if (failed) { Console.WriteLine(Resources.OfferFunctionalNotFound); } } } try { conn.Logout(); } catch (ServiceFailure e) { Console.WriteLine(Resources.BusServiceFailureErrorMsg); Console.WriteLine(e); } catch (TRANSIENT) { Console.WriteLine(Resources.BusTransientErrorMsg); } catch (COMM_FAILURE) { Console.WriteLine(Resources.BusCommFailureErrorMsg); } if (!failed) { Console.WriteLine(Resources.ClientOK); } Console.ReadKey(); }
private static void Main() { string hostName = DemoConfig.Default.busHostName; ushort hostPort = DemoConfig.Default.busHostPort; bool useSSL = DemoConfig.Default.useSSL; string clientUser = DemoConfig.Default.clientUser; string clientThumbprint = DemoConfig.Default.clientThumbprint; string serverUser = DemoConfig.Default.serverUser; string serverThumbprint = DemoConfig.Default.serverThumbprint; ushort serverSSLPort = DemoConfig.Default.serverSSLPort; ushort serverOpenPort = DemoConfig.Default.serverOpenPort; string busIORFile = DemoConfig.Default.busIORFile; if (useSSL) { Utils.InitSSLORB(clientUser, clientThumbprint, serverUser, serverThumbprint, serverSSLPort, serverOpenPort, true, true, "required", false, false); } else { ORBInitializer.InitORB(); } /* * ConsoleAppender appender = new ConsoleAppender { * Threshold = Level.Fatal, * Layout = * new SimpleLayout(), * }; * BasicConfigurator.Configure(appender); */ ConnectionProperties props = new ConnectionPropertiesImpl(); OpenBusContext context = ORBInitializer.Context; Connection conn; if (useSSL) { string ior = File.ReadAllText(busIORFile); conn = context.ConnectByReference((MarshalByRefObject)OrbServices.CreateProxy(typeof(MarshalByRefObject), ior), props); } else { conn = context.ConnectByAddress(hostName, hostPort, props); } context.SetDefaultConnection(conn); const string userLogin = "******"; const string userPassword = userLogin; ASCIIEncoding encoding = new ASCIIEncoding(); conn.LoginByPassword(userLogin, encoding.GetBytes(userPassword), "testing"); GetService(typeof(Messenger)); GetService(typeof(Forwarder)); GetService(typeof(Broadcaster)); conn.Logout(); conn.LoginByPassword(Bill, encoding.GetBytes(Bill), "testing"); _forwarder.setForward(William); _broadcaster.subscribe(); conn.Logout(); conn.LoginByPassword(Paul, encoding.GetBytes(Paul), "testing"); _broadcaster.subscribe(); conn.Logout(); conn.LoginByPassword(Mary, encoding.GetBytes(Mary), "testing"); _broadcaster.subscribe(); conn.Logout(); conn.LoginByPassword(Steve, encoding.GetBytes(Steve), "testing"); _broadcaster.subscribe(); _broadcaster.post(TestMessage); conn.Logout(); Logger.Fatal("Esperando as mensagens propagarem."); Thread.Sleep(10000); Logger.Fatal("Pronto!"); FillExpected(); string[] names = { William, Bill, Paul, Mary, Steve }; foreach (string name in names) { conn.LoginByPassword(name, encoding.GetBytes(name), "testing"); PostDesc[] descs = _messenger.receivePosts(); Actual.Add(name, descs.Length > 0 ? descs : null); _broadcaster.unsubscribe(); conn.Logout(); } conn.LoginByPassword(Bill, encoding.GetBytes(Bill), "testing"); _forwarder.cancelForward(William); conn.Logout(); CheckOutput(); Logger.Fatal( "Teste de interoperabilidade Delegation executado com êxito."); }
private static void Main() { AppDomain.CurrentDomain.ProcessExit += CurrentDomainProcessExit; string hostName = DemoConfig.Default.busHostName; ushort hostPort = DemoConfig.Default.busHostPort; _privateKey = Crypto.ReadKeyFile(DemoConfig.Default.privateKey); bool useSSL = DemoConfig.Default.useSSL; string clientUser = DemoConfig.Default.clientUser; string clientThumbprint = DemoConfig.Default.clientThumbprint; string serverUser = DemoConfig.Default.serverUser; string serverThumbprint = DemoConfig.Default.serverThumbprint; ushort serverSSLPort = DemoConfig.Default.serverSSLPort; ushort serverOpenPort = DemoConfig.Default.serverOpenPort; string busIORFile = DemoConfig.Default.busIORFile; if (useSSL) { Utils.InitSSLORB(clientUser, clientThumbprint, serverUser, serverThumbprint, serverSSLPort, serverOpenPort, true, true, "required", false, false); } else { ORBInitializer.InitORB(); } /* * ConsoleAppender appender = new ConsoleAppender { * Threshold = Level.Fatal, * Layout = * new SimpleLayout(), * }; * BasicConfigurator.Configure(appender); */ ConnectionProperties props = new ConnectionPropertiesImpl(); props.AccessKey = _privateKey; OpenBusContext context = ORBInitializer.Context; if (useSSL) { string ior = File.ReadAllText(busIORFile); _conn = context.ConnectByReference((MarshalByRefObject)OrbServices.CreateProxy(typeof(MarshalByRefObject), ior), props); } else { _conn = context.ConnectByAddress(hostName, hostPort, props); } context.SetDefaultConnection(_conn); _conn.LoginByCertificate(Entity, _privateKey); Messenger messenger = GetMessenger(); if (messenger == null) { Logger.Fatal( "Não foi possível encontrar um Messenger no barramento."); Console.Read(); return; } ComponentContext component = new DefaultComponentContext(new ComponentId("Forwarder", 1, 0, 0, ".net")); _forwarder = new ForwarderImpl(messenger); component.AddFacet("forwarder", Repository.GetRepositoryID(typeof(Forwarder)), _forwarder); _ic = component.GetIComponent(); _properties = new[] { new ServiceProperty("offer.domain", "Interoperability Tests") }; _offer = context.OfferRegistry.registerService(_ic, _properties); _conn.OnInvalidLogin = InvalidLogin; Logger.Fatal("Forwarder no ar."); Thread.Sleep(Timeout.Infinite); }
private static void Main(String[] args) { // Registra handler para o caso do processo ser finalizado AppDomain.CurrentDomain.ProcessExit += CurrentDomainProcessExit; // Obtém dados através dos argumentos string busIOR = File.ReadAllText(args[0]); string entity = args[1]; AsymmetricCipherKeyPair privateKey = Crypto.ReadKeyFile(args[2]); SSLUtils.InitORBWithSSL(args[3], args[4], args[5], args[6], Convert.ToUInt16(args[8]), Convert.ToUInt16(args[7]), Convert.ToBoolean(args[9]), Convert.ToBoolean(args[10]), args[11], Convert.ToBoolean(args[12]), Convert.ToBoolean(args[13])); // Cria o componente que conterá as facetas do servidor ComponentContext component = new DefaultComponentContext(new ComponentId("hello", 1, 0, 0, ".net")); // Cria a faceta Hello para o componente component.AddFacet("Hello", Repository.GetRepositoryID(typeof(Hello)), new HelloImpl()); // Define propriedades para a oferta de serviço a ser registrada no barramento IComponent ic = component.GetIComponent(); ServiceProperty[] properties = { new ServiceProperty("offer.domain", "Demo Hello") }; // Cria conexão e a define como conexão padrão tanto para entrada como saída. // O uso exclusivo da conexão padrão (sem uso de current e callback de despacho) só é recomendado para aplicações que criem apenas uma conexão e desejem utilizá-la em todos os casos. Para situações diferentes, consulte o manual do SDK OpenBus e/ou outras demos. OpenBusContext context = ORBInitializer.Context; _conn = context.ConnectByReference((MarshalByRefObject)OrbServices.CreateProxy(typeof(MarshalByRefObject), busIOR)); context.SetDefaultConnection(_conn); bool failed = true; try { // Faz o login _conn.LoginByCertificate(entity, privateKey); // Registra a oferta no barramento _offer = context.OfferRegistry.registerService(ic, properties); failed = false; } // Login catch (AccessDenied) { Console.WriteLine(Resources.ServerAccessDenied); } catch (MissingCertificate) { Console.WriteLine(Resources.MissingCertificateForEntity + entity); } // Registro catch (UnauthorizedFacets) { Console.WriteLine(Resources.UnauthorizedFacets); } // Barramento catch (ServiceFailure e) { Console.WriteLine(Resources.BusServiceFailureErrorMsg); Console.WriteLine(e); } catch (TRANSIENT) { Console.WriteLine(Resources.BusTransientErrorMsg); } catch (COMM_FAILURE) { Console.WriteLine(Resources.BusCommFailureErrorMsg); } catch (Exception e) { NO_PERMISSION npe = null; if (e is TargetInvocationException) { // caso seja uma exceção lançada pelo SDK, será uma NO_PERMISSION npe = e.InnerException as NO_PERMISSION; } if ((npe == null) && (!(e is NO_PERMISSION))) { // caso não seja uma NO_PERMISSION não é uma exceção esperada então deixamos passar. throw; } npe = npe ?? (NO_PERMISSION)e; if (npe.Minor == NoLoginCode.ConstVal) { Console.WriteLine(Resources.NoLoginCodeErrorMsg); } else { throw; } } finally { if (failed) { Exit(1); } } // Mantém a thread ativa para aguardar requisições Console.WriteLine(Resources.ServerOK); Thread.Sleep(Timeout.Infinite); }
private static void Main() { AppDomain.CurrentDomain.ProcessExit += CurrentDomainProcessExit; string hostName = DemoConfig.Default.busHostName; ushort hostPort = DemoConfig.Default.busHostPort; _privateKey = Crypto.ReadKeyFile(DemoConfig.Default.privateKey); bool useSSL = DemoConfig.Default.useSSL; string clientUser = DemoConfig.Default.clientUser; string clientThumbprint = DemoConfig.Default.clientThumbprint; string serverUser = DemoConfig.Default.serverUser; string serverThumbprint = DemoConfig.Default.serverThumbprint; ushort serverSSLPort = DemoConfig.Default.serverSSLPort; ushort serverOpenPort = DemoConfig.Default.serverOpenPort; string busIORFile = DemoConfig.Default.busIORFile; if (useSSL) { Utils.InitSSLORB(clientUser, clientThumbprint, serverUser, serverThumbprint, serverSSLPort, serverOpenPort, true, true, "required", false, false); } else { ORBInitializer.InitORB(); } ConnectionProperties props = new ConnectionPropertiesImpl(); props.AccessKey = _privateKey; OpenBusContext context = ORBInitializer.Context; Connection conn; if (useSSL) { string ior = File.ReadAllText(busIORFile); conn = context.ConnectByReference((MarshalByRefObject)OrbServices.CreateProxy(typeof(MarshalByRefObject), ior), props); } else { conn = context.ConnectByAddress(hostName, hostPort, props); } context.SetDefaultConnection(conn); conn.LoginByCertificate(Entity, _privateKey); ComponentContext component = new DefaultComponentContext(new ComponentId("Hello", 1, 0, 0, ".net")); HelloProxyImpl hello = new HelloProxyImpl(Entity, _privateKey); component.AddFacet("Hello", Repository.GetRepositoryID(typeof(Hello)), hello); _ic = component.GetIComponent(); _properties = new[] { new ServiceProperty("offer.domain", "Interoperability Tests"), new ServiceProperty("reloggedjoin.role", "proxy") }; context.OfferRegistry.registerService(_ic, _properties); conn.OnInvalidLogin = InvalidLogin; Logger.Info("Hello Proxy no ar."); Thread.Sleep(Timeout.Infinite); }
private static void Main() { string hostName = DemoConfig.Default.busHostName; ushort hostPort = DemoConfig.Default.busHostPort; ushort hostPort2 = DemoConfig.Default.bus2HostPort; _privateKey = Crypto.ReadKeyFile(DemoConfig.Default.privateKey); bool useSSL = DemoConfig.Default.useSSL; string clientUser = DemoConfig.Default.clientUser; string clientThumbprint = DemoConfig.Default.clientThumbprint; string serverUser = DemoConfig.Default.serverUser; string serverThumbprint = DemoConfig.Default.serverThumbprint; ushort serverSSLPort = DemoConfig.Default.serverSSLPort; ushort serverOpenPort = DemoConfig.Default.serverOpenPort; string busIORFile = DemoConfig.Default.busIORFile; string bus2IORFile = DemoConfig.Default.bus2IORFile; if (useSSL) { Utils.InitSSLORB(clientUser, clientThumbprint, serverUser, serverThumbprint, serverSSLPort, serverOpenPort, true, true, "required", false, false); } else { ORBInitializer.InitORB(); } /* * ConsoleAppender appender = new ConsoleAppender { * Threshold = Level.All, * Layout = * new SimpleLayout(), * }; * BasicConfigurator.Configure(appender); */ OpenBusContext context = ORBInitializer.Context; // connect to the bus ConnectionProperties props = new ConnectionPropertiesImpl(); props.AccessKey = _privateKey; Connection conn2AtBus1; Connection conn3AtBus1; if (useSSL) { string ior = File.ReadAllText(busIORFile); string ior2 = File.ReadAllText(bus2IORFile); _conn1AtBus1 = context.ConnectByReference((MarshalByRefObject)OrbServices.CreateProxy(typeof(MarshalByRefObject), ior), props); conn2AtBus1 = context.ConnectByReference((MarshalByRefObject)OrbServices.CreateProxy(typeof(MarshalByRefObject), ior), props); conn3AtBus1 = context.ConnectByReference((MarshalByRefObject)OrbServices.CreateProxy(typeof(MarshalByRefObject), ior), props); _connAtBus2 = context.ConnectByReference((MarshalByRefObject)OrbServices.CreateProxy(typeof(MarshalByRefObject), ior2), props); } else { _conn1AtBus1 = context.ConnectByAddress(hostName, hostPort, props); conn2AtBus1 = context.ConnectByAddress(hostName, hostPort, props); conn3AtBus1 = context.ConnectByAddress(hostName, hostPort, props); _connAtBus2 = context.ConnectByAddress(hostName, hostPort2, props); } // create service SCS component ComponentId id = new ComponentId("Hello", 1, 0, 0, ".net"); ComponentContext component = new DefaultComponentContext(id); component.AddFacet("Hello", Repository.GetRepositoryID(typeof(Hello)), new HelloImpl()); _ic = component.GetIComponent(); // login to the bus _conn1AtBus1.LoginByCertificate(Entity, _privateKey); conn2AtBus1.LoginByCertificate(Entity, _privateKey); conn3AtBus1.LoginByCertificate(Entity, _privateKey); _connAtBus2.LoginByCertificate(Entity, _privateKey); // set incoming connections context.OnCallDispatch = Dispatch; RegisterThreadStart start1 = new RegisterThreadStart(_conn1AtBus1, component. GetIComponent()); Thread thread1 = new Thread(start1.Run); thread1.Start(); _conn1AtBus1.OnInvalidLogin = InvalidLogin; RegisterThreadStart start2 = new RegisterThreadStart(conn2AtBus1, component. GetIComponent()); Thread thread2 = new Thread(start2.Run); thread2.Start(); conn2AtBus1.OnInvalidLogin = InvalidLogin; RegisterThreadStart start3 = new RegisterThreadStart(conn3AtBus1, component. GetIComponent()); Thread thread3 = new Thread(start3.Run); thread3.Start(); conn3AtBus1.OnInvalidLogin = InvalidLogin; context.SetCurrentConnection(_connAtBus2); context.OfferRegistry.registerService(_ic, ServiceProperties); _connAtBus2.OnInvalidLogin = InvalidLogin; Logger.Info("Servidor no ar."); Thread.Sleep(Timeout.Infinite); }
private static void Main() { string hostName = DemoConfig.Default.busHostName; ushort hostPort = DemoConfig.Default.busHostPort; bool useSSL = DemoConfig.Default.useSSL; string clientUser = DemoConfig.Default.clientUser; string clientThumbprint = DemoConfig.Default.clientThumbprint; string serverUser = DemoConfig.Default.serverUser; string serverThumbprint = DemoConfig.Default.serverThumbprint; ushort serverSSLPort = DemoConfig.Default.serverSSLPort; ushort serverOpenPort = DemoConfig.Default.serverOpenPort; string busIORFile = DemoConfig.Default.busIORFile; if (useSSL) { Utils.InitSSLORB(clientUser, clientThumbprint, serverUser, serverThumbprint, serverSSLPort, serverOpenPort, true, true, "required", false, false); } else { ORBInitializer.InitORB(); } //FileInfo logFileInfo = new FileInfo(DemoConfig.Default.openbusLogFile); //XmlConfigurator.ConfigureAndWatch(logFileInfo); /* * ConsoleAppender appender = new ConsoleAppender { * Threshold = Level.Fatal, * Layout = * new SimpleLayout(), * }; * BasicConfigurator.Configure(appender); */ // credential reset tests CredentialResetTest[] resetCases = new CredentialResetTest[1]; CredentialReset tempReset = new CredentialReset { session = 2 ^ 32 - 1, challenge = CreateSecret(EncryptedBlockSize.ConstVal) }; resetCases[0] = new CredentialResetTest { Reset = tempReset, Expected = InvalidRemoteCode.ConstVal }; // no permission tests NoPermissionTest[] noPermissionCases = new NoPermissionTest[12]; noPermissionCases[0] = new NoPermissionTest { Raised = 0, Expected = 0 }; noPermissionCases[1] = new NoPermissionTest { Raised = InvalidCredentialCode.ConstVal, Expected = InvalidRemoteCode.ConstVal }; noPermissionCases[2] = new NoPermissionTest { Raised = InvalidChainCode.ConstVal, Expected = InvalidChainCode.ConstVal }; noPermissionCases[3] = new NoPermissionTest { Raised = UnverifiedLoginCode.ConstVal, Expected = UnverifiedLoginCode.ConstVal }; noPermissionCases[4] = new NoPermissionTest { Raised = UnknownBusCode.ConstVal, Expected = UnknownBusCode.ConstVal }; noPermissionCases[5] = new NoPermissionTest { Raised = InvalidPublicKeyCode.ConstVal, Expected = InvalidPublicKeyCode.ConstVal }; noPermissionCases[6] = new NoPermissionTest { Raised = NoCredentialCode.ConstVal, Expected = NoCredentialCode.ConstVal }; noPermissionCases[7] = new NoPermissionTest { Raised = NoLoginCode.ConstVal, Expected = InvalidRemoteCode.ConstVal }; noPermissionCases[8] = new NoPermissionTest { Raised = InvalidRemoteCode.ConstVal, Expected = InvalidRemoteCode.ConstVal }; noPermissionCases[9] = new NoPermissionTest { Raised = UnavailableBusCode.ConstVal, Expected = InvalidRemoteCode.ConstVal }; noPermissionCases[10] = new NoPermissionTest { Raised = InvalidTargetCode.ConstVal, Expected = InvalidRemoteCode.ConstVal }; noPermissionCases[11] = new NoPermissionTest { Raised = InvalidLoginCode.ConstVal, Expected = InvalidRemoteCode.ConstVal }; ORBInitializer.InitORB(); OpenBusContext context = ORBInitializer.Context; ConnectionProperties props = new ConnectionPropertiesImpl(); Connection conn; if (useSSL) { string ior = File.ReadAllText(busIORFile); conn = context.ConnectByReference((MarshalByRefObject)OrbServices.CreateProxy(typeof(MarshalByRefObject), ior), props); } else { conn = context.ConnectByAddress(hostName, hostPort, props); } context.SetDefaultConnection(conn); const string userLogin = "******"; byte[] userPassword = new ASCIIEncoding().GetBytes(userLogin); conn.LoginByPassword(userLogin, userPassword, "testing"); // propriedades geradas automaticamente ServiceProperty prop1 = new ServiceProperty("openbus.component.interface", Repository.GetRepositoryID(typeof(Server))); // propriedade definida pelo servidor protocol ServiceProperty prop2 = new ServiceProperty("offer.domain", "Interoperability Tests"); ServiceProperty[] properties = { prop1, prop2 }; List <ServiceOfferDesc> offers = Utils.FindOffer(ORBInitializer.Context.OfferRegistry, properties, 1, 10, 1); bool foundOne = false; foreach (ServiceOfferDesc serviceOfferDesc in offers) { try { string found = Utils.GetProperty(serviceOfferDesc.properties, "openbus.offer.entity"); Logger.Info("Entidade encontrada: " + found); MarshalByRefObject serverProxyObj = serviceOfferDesc.service_ref.getFacet( Repository.GetRepositoryID(typeof(Server))); if (serverProxyObj == null) { Logger.Info( "Não foi possível encontrar uma faceta com esse nome."); continue; } Server serverProxy = serverProxyObj as Server; if (serverProxy == null) { Logger.Info("Faceta encontrada não implementa Server."); continue; } foundOne = true; // inicio dos testes serverProxy.NonBusCall(); foreach (CredentialResetTest test in resetCases) { bool error = false; try { serverProxy.ResetCredentialWithChallenge(test.Reset.session, test.Reset.challenge); } catch (Exception e) { NO_PERMISSION npe = null; if (e is TargetInvocationException) { npe = e.InnerException as NO_PERMISSION; } if ((npe == null) && (!(e is NO_PERMISSION))) { throw; } npe = npe ?? (NO_PERMISSION)e; error = true; Assert.AreEqual(test.Expected, npe.Minor); Assert.AreEqual(CompletionStatus.Completed_No, npe.Status); } Assert.IsTrue(error); } foreach (NoPermissionTest test in noPermissionCases) { bool error = false; try { serverProxy.RaiseNoPermission(test.Raised); } catch (Exception e) { NO_PERMISSION npe = null; if (e is TargetInvocationException) { npe = e.InnerException as NO_PERMISSION; } if ((npe == null) && (!(e is NO_PERMISSION))) { throw; } npe = npe ?? (NO_PERMISSION)e; error = true; Assert.AreEqual(test.Expected, npe.Minor); Assert.AreEqual(CompletionStatus.Completed_No, npe.Status); } Assert.IsTrue(error); } } catch (TRANSIENT) { Logger.Info( "Uma das ofertas obtidas é de um cliente inativo. Tentando a próxima."); } } conn.Logout(); Assert.IsTrue(foundOne); Logger.Info("Fim."); }
public static void MyClassInitialize(TestContext testContext) { _hostName = ConfigurationManager.AppSettings["hostName"]; string port = ConfigurationManager.AppSettings["hostPort"]; if (!String.IsNullOrEmpty(port)) { _hostPort = ushort.Parse(port); } _entity = ConfigurationManager.AppSettings["entityName"]; if (String.IsNullOrEmpty(_entity)) { throw new ArgumentNullException("entityName"); } _entityNoCert = ConfigurationManager.AppSettings["entityWithoutCert"]; if (String.IsNullOrEmpty(_entity)) { throw new ArgumentNullException("entityWithoutCert"); } _login = ConfigurationManager.AppSettings["userLogin"]; if (String.IsNullOrEmpty(_login)) { throw new ArgumentNullException("userLogin"); } string password = ConfigurationManager.AppSettings["userPassword"]; if (password == null) { throw new ArgumentNullException("userPassword"); } _password = password.Equals("") ? new byte[0] : Crypto.TextEncoding.GetBytes(password); _domain = ConfigurationManager.AppSettings["userDomain"]; if (String.IsNullOrEmpty(_domain)) { throw new ArgumentNullException("userDomain"); } string privateKey = ConfigurationManager.AppSettings["testKeyFileName"]; if (String.IsNullOrEmpty(password)) { throw new ArgumentNullException("testKeyFileName"); } _privKey = Crypto.ReadKeyFile(privateKey); Props.AccessKey = _privKey; string wrongKey = ConfigurationManager.AppSettings["wrongKeyFileName"]; if (String.IsNullOrEmpty(password)) { throw new ArgumentNullException("wrongKeyFileName"); } _wrongKey = Crypto.ReadKeyFile(wrongKey); string useSSL = ConfigurationManager.AppSettings["useSSL"]; if (String.IsNullOrEmpty(useSSL)) { throw new ArgumentNullException("useSSL"); } _useSSL = Boolean.Parse(useSSL); if ((!_useSSL) && (String.IsNullOrEmpty(_hostName))) { throw new ArgumentNullException("hostName"); } if (_useSSL) { IDictionary props = new Hashtable(); props[IiopChannel.CHANNEL_NAME_KEY] = "SecuredServerIiopChannel"; props[IiopChannel.TRANSPORT_FACTORY_KEY] = "Ch.Elca.Iiop.Security.Ssl.SslTransportFactory,SSLPlugin"; props[Authentication.CheckCertificateRevocation] = false; props[SSLClient.ClientEncryptionType] = Encryption.EncryptionType.Required; props[SSLClient.ClientAuthentication] = SSLClient.ClientAuthenticationType.Supported; props[SSLClient.ServerAuthentication] = SSLClient.ServerAuthenticationType.Required; props[SSLClient.ClientAuthenticationClass] = typeof(ClientAuthenticationSpecificFromStore); props[SSLClient.CheckServerName] = false; props[ClientAuthenticationSpecificFromStore.StoreLocation] = "CurrentUser"; props[ClientAuthenticationSpecificFromStore.ClientCertificate] = "f838ccf3cdfa001ed860f94248dc8d603d06935f"; props[IiopServerChannel.PORT_KEY] = "58000"; props[SSLServer.SecurePort] = "58001"; props[SSLServer.ServerEncryptionType] = Encryption.EncryptionType.Required; props[SSLServer.ClientAuthentication] = SSLServer.ClientAuthenticationType.Required; props[SSLServer.ServerAuthentication] = SSLServer.ServerAuthenticationType.Supported; props[SSLServer.ServerAuthenticationClass] = typeof(DefaultServerAuthenticationImpl); props[DefaultServerAuthenticationImpl.ServerCertificate] = "f838ccf3cdfa001ed860f94248dc8d603d06935f"; props[DefaultServerAuthenticationImpl.StoreLocation] = "CurrentUser"; ORBInitializer.InitORB(props); _busIOR = ConfigurationManager.AppSettings["busIOR"]; if (String.IsNullOrEmpty(_busIOR)) { throw new InvalidPropertyValueException(_busIOR); } string[] iors = File.ReadAllLines(_busIOR); _busIOR = iors[0]; _busRef = (MarshalByRefObject)OrbServices.CreateProxy(typeof(MarshalByRefObject), _busIOR); } else { ORBInitializer.InitORB(); } _context = ORBInitializer.Context; }
private static void Main() { string hostName = DemoConfig.Default.busHostName; ushort hostPort = DemoConfig.Default.busHostPort; bool useSSL = DemoConfig.Default.useSSL; string clientUser = DemoConfig.Default.clientUser; string clientThumbprint = DemoConfig.Default.clientThumbprint; string serverUser = DemoConfig.Default.serverUser; string serverThumbprint = DemoConfig.Default.serverThumbprint; ushort serverSSLPort = DemoConfig.Default.serverSSLPort; ushort serverOpenPort = DemoConfig.Default.serverOpenPort; string busIORFile = DemoConfig.Default.busIORFile; if (useSSL) { Utils.InitSSLORB(clientUser, clientThumbprint, serverUser, serverThumbprint, serverSSLPort, serverOpenPort, true, true, "required", false, false); } else { ORBInitializer.InitORB(); } /* * ConsoleAppender appender = new ConsoleAppender { * Threshold = Level.Off, * Layout = * new SimpleLayout(), * }; * BasicConfigurator.Configure(appender); */ ConnectionProperties props = new ConnectionPropertiesImpl(); OpenBusContext context = ORBInitializer.Context; Connection conn; if (useSSL) { string ior = File.ReadAllText(busIORFile); conn = context.ConnectByReference((MarshalByRefObject)OrbServices.CreateProxy(typeof(MarshalByRefObject), ior), props); } else { conn = context.ConnectByAddress(hostName, hostPort, props); } context.SetDefaultConnection(conn); const string userLogin = "******"; byte[] userPassword = new ASCIIEncoding().GetBytes(userLogin); string loginFile = DemoConfig.Default.loginFile; conn.LoginByPassword(userLogin, userPassword, "testing"); SharedAuthSecret secret = conn.StartSharedAuth(); byte[] sharedAuth = context.EncodeSharedAuth(secret); File.WriteAllBytes(loginFile, sharedAuth); conn.Logout(); Logger.Info("Fim."); Logger.Info( "Execute o cliente que fará o login por autenticação compartilhada."); }