private static void Main(String[] args)
        {
            // Obtém dados através dos argumentos
            string host = args[0];
            ushort port = Convert.ToUInt16(args[1]);

            _domain   = args[2];
            _entity   = args[3];
            _password = new ASCIIEncoding().GetBytes(args[4]);
            _interval = Convert.ToInt32(args.Length > 5 ? args[5] : "1");

            // Cria o finder que será responsável por encontrar o servidor no barramento
            ORBInitializer.InitORB();
            _finder = new Finder(_interval);

            // Inicia thread que imprime a hora
            ThreadStart ts = PrintTime;
            Thread      t  = new Thread(ts);

            t.Start();

            // 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.ConnectByAddress(host, port);
            context.SetDefaultConnection(_conn);

            // Define a callback de login inválido e faz o login
            _conn.OnInvalidLogin = InvalidLogin;
            _conn.OnInvalidLogin(_conn, new LoginInfo());
        }
Exemplo n.º 2
0
 /// <summary>see <see cref="omg.org.CORBA.IOrbServices.RegisterPortableInterceptorInitalizer"</summary>
 public void RegisterPortableInterceptorInitalizer(ORBInitializer initalizer)
 {
     lock (m_orbInitalizers.SyncRoot)
     {
         m_orbInitalizers.Add(initalizer);
     }
 }
        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 host = args[0];
            ushort port = Convert.ToUInt16(args[1]);

            _entity     = args[2];
            _privateKey = Crypto.ReadKeyFile(args[3]);
            _interval   = Convert.ToInt32(args.Length > 4 ? args[4] : "1");

            // Cria o componente que conterá as facetas do servidor
            ORBInitializer.InitORB();
            ComponentContext component =
                new DefaultComponentContext(new ComponentId("dedicatedclock", 1, 0, 0, ".net"));

            // Cria a faceta Clock para o componente
            component.AddFacet("Clock", Repository.GetRepositoryID(typeof(Clock)),
                               new ClockImpl());

            // Define propriedades para a oferta de serviço a ser registrada no barramento
            IComponent ic = component.GetIComponent();

            ServiceProperty[] properties =
            {
                new ServiceProperty("offer.domain",
                                    "Demo Dedicated Clock")
            };

            // Cria conexão e a define como conexão padrão tanto para entrada como saída.
            OpenBusContext context = ORBInitializer.Context;

            _conn = context.ConnectByAddress(host, port);
            context.SetDefaultConnection(_conn);

            // Cria registrador e adiciona a callback de login inválido
            _registerer          = new Registerer(ic, properties, _interval);
            _conn.OnInvalidLogin = InvalidLogin;

            // Faz o login e registra no barramento
            try {
                _conn.OnInvalidLogin(_conn, new LoginInfo());
            }
            catch (Exception e) {
                Console.WriteLine(e);
            }
            finally {
                if (!_conn.Login.HasValue || Offer == null)
                {
                    Exit(1);
                }
            }

            // Mantém a thread ativa para aguardar requisições
            Console.WriteLine(Resources.ServerOK);
            Thread.Sleep(Timeout.Infinite);
        }
Exemplo n.º 4
0
        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.");
        }
        private static void Main(String[] args)
        {
            // Obtém dados através dos argumentos
            _host       = args[0];
            _port       = Convert.ToUInt16(args[1]);
            _entity     = args[2];
            _privateKey = Crypto.ReadKeyFile(args[3]);
            _interval   = Convert.ToInt32(args.Length > 4 ? args[4] : "1");

            // Registra handler para o caso do processo ser finalizado
            AppDomain.CurrentDomain.ProcessExit += CurrentDomainProcessExit;

            // Cria o componente que conterá as facetas do servidor
            ORBInitializer.InitORB();
            _component =
                new DefaultComponentContext(new ComponentId("independentclock", 1, 0, 0,
                                                            ".net"));

            // Cria a faceta Clock para o componente
            ClockImpl clock = new ClockImpl();

            _component.AddFacet("Clock", Repository.GetRepositoryID(typeof(Clock)),
                                clock);

            // Inicia thread que tenta conectar ao barramento
            ThreadStart ts = ConnectToOpenBus;
            Thread      t  = new Thread(ts)
            {
                IsBackground = true
            };

            t.Start();

            // Realiza trabalho independente do OpenBus
            while (true)
            {
                clock.getTimeInTicks();
                //        Console.WriteLine(String.Format("Hora atual: {0:HH:mm:ss}", DateTime.Now));
                Thread.Sleep(_interval);
            }
        }
        private static void Main(String[] args)
        {
            // Obtém dados através dos argumentos
            string host   = args[0];
            ushort port   = Convert.ToUInt16(args[1]);
            string domain = args[2];
            string entity = args[3];

            byte[] password = new ASCIIEncoding().GetBytes(args.Length > 4 ? args[4] : entity);

            // 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.
            ORBInitializer.InitORB();
            OpenBusContext context = ORBInitializer.Context;
            Connection     conn    = context.ConnectByAddress(host, port);

            context.SetDefaultConnection(conn);

            // Pergunta ao usuário qual língua deseja utilizar
            Console.WriteLine(Resources.GreetingsWhichLanguage);
            string language = Console.ReadLine();

            if (language == null)
            {
                Console.WriteLine(Resources.GreetingsLanguageReadErrorMsg);
                Environment.Exit(1);
            }

            string greetingsIDLType = Repository.GetRepositoryID(typeof(Greetings));

            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 autoProp1 =
                    new ServiceProperty("openbus.component.interface", greetingsIDLType);
                // propriedade definida pelo serviço greetings
                ServiceProperty prop = new ServiceProperty("offer.domain",
                                                           "Demo Greetings");
                ServiceProperty[] properties;
                if (!language.Equals(""))
                {
                    ServiceProperty autoProp2 = new ServiceProperty(
                        "openbus.component.name", language.ToLower());
                    properties = new[] { prop, autoProp1, autoProp2 };
                }
                else
                {
                    Console.WriteLine(Resources.GreetingsNoLanguageSpecified);
                    properties = new[] { prop, autoProp1 };
                }

                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
            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 {
                            int hours = DateTime.Now.TimeOfDay.Hours;
                            MarshalByRefObject greetObj = hours < 12
                                              ? serviceOfferDesc.service_ref.
                                                          getFacetByName("GoodMorning")
                                              : serviceOfferDesc.service_ref.
                                                          getFacetByName(hours >= 18
                                                                   ? "GoodNight"
                                                                   : "GoodAfternoon");
                            if (greetObj == null)
                            {
                                Console.WriteLine(Resources.FacetNotFoundInOffer);
                                continue;
                            }
                            Greetings greetings = greetObj as Greetings;
                            if (greetings == null)
                            {
                                Console.WriteLine(Resources.FacetFoundWrongType);
                                continue;
                            }
                            Console.WriteLine(Resources.OfferFound);
                            // utiliza o serviço
                            Console.WriteLine((string)greetings.sayGreetings());
                        }
                        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;
                            }
                        }
                    }
                }
            }

            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);
            }
            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.");
        }
Exemplo n.º 8
0
        private static void Main(String[] args)
        {
            // Obtém dados através dos argumentos
            string host   = args[0];
            ushort port   = Convert.ToUInt16(args[1]);
            string domain = args[2];
            string entity = args[3];

            byte[] password = new ASCIIEncoding().GetBytes(args.Length > 4 ? args[4] : entity);

            // 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.
            ORBInitializer.InitORB();
            OpenBusContext context = ORBInitializer.Context;
            Connection     conn    = context.ConnectByAddress(host, port);

            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();
        }
Exemplo n.º 9
0
        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 host   = args[0];
            ushort port   = Convert.ToUInt16(args[1]);
            string entity = args[2];
            AsymmetricCipherKeyPair privateKey = Crypto.ReadKeyFile(args[3]);

            // Associa uma callback de escolha de conexão de despacho
            ORBInitializer.InitORB();
            OpenBusContext context = ORBInitializer.Context;

            context.OnCallDispatch = Dispatch;

            // Cria 3 conexões com o mesmo barramento, uma para cada componente.
            for (int i = 0; i < 3; i++)
            {
                ComponentContext component =
                    new DefaultComponentContext(new ComponentId("Timer", 1, 0, 0, ".net"));

                // Cria a faceta Timer para o componente
                TimerImpl timer = new TimerImpl();
                component.AddFacet("Timer", Repository.GetRepositoryID(typeof(Timer)),
                                   timer);

                // Define propriedades para a oferta de serviço a ser registrada no barramento
                IComponent        ic         = component.GetIComponent();
                ServiceProperty[] properties =
                {
                    new ServiceProperty(
                        "offer.domain",
                        "Demo Multiplexing")
                };

                // Cria a conexão e a define como conexão corrente
                Connection conn = context.ConnectByAddress(host, port);
                context.SetCurrentConnection(conn);

                // Associa a conexão à URI do servant para que a callback possa escolher
                lock (Connections){
                    Connections.Add(RemotingServices.GetObjectUri(timer), conn);
                }

                bool failed = true;
                try {
                    // Faz o login
                    conn.LoginByCertificate(entity, privateKey);
                    // Registra a oferta no barramento
                    Offers.Add(conn, 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);
        }
Exemplo n.º 10
0
        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.");
        }
Exemplo n.º 11
0
        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);
        }
Exemplo n.º 12
0
        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[] args)
        {
            // Obtém dados através dos argumentos
            _host     = args[0];
            _port     = Convert.ToUInt16(args[1]);
            _domain   = args[2];
            _entity   = args[3];
            _password =
                new ASCIIEncoding().GetBytes(args.Length > 4 ? args[4] : _entity);

            // Cria conexão e a define como conexão padrão tanto para entrada como saída.
            ORBInitializer.InitORB();
            OpenBusContext context = ORBInitializer.Context;

            context.SetDefaultConnection(NewLogin());

            ServiceOfferDesc[] offers = null;
            try {
                // Faz busca utilizando propriedades geradas automaticamente e propriedades definidas pelo serviço específico
                // propriedade gerada automaticamente
                ServiceProperty autoProp =
                    new ServiceProperty("openbus.component.interface", TimerIDLType);
                // propriedade definida pelo serviço timer
                ServiceProperty prop = new ServiceProperty("offer.domain",
                                                           "Demo Multiplexing");
                ServiceProperty[] properties = { prop, autoProp };
                offers = context.OfferRegistry.findServices(properties);
            }
            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;
                }
            }
            if (offers != null)
            {
                for (int i = 0; i < offers.Length; i++)
                {
                    // garante espera de no mínimo 5s para que dê tempo do cliente executar
                    // todas as chamadas e aumentar o número de notificações esperadas
                    StartTheThread(i + 5, offers[i], Thread.CurrentThread);
                }
            }

            // Mantém a thread ativa para aguardar requisições
            try {
                Thread.Sleep(Timeout.Infinite);
            }
            catch (ThreadInterruptedException) {
                // Se a thread for acordada, é porque não há mais requisições pendentes
                Console.WriteLine(Resources.ClientOK);
            }

            // Faz logout da conexão usada nessa thread
            try {
                context.GetDefaultConnection().Logout();
            }
            catch (ServiceFailure e) {
                Console.WriteLine(Resources.BusServiceFailureErrorMsg);
                Console.WriteLine(e);
            }
            catch (TRANSIENT) {
                Console.WriteLine(Resources.BusTransientErrorMsg);
            }
            catch (COMM_FAILURE) {
                Console.WriteLine(Resources.BusCommFailureErrorMsg);
            }
            Console.ReadKey();
        }
Exemplo n.º 15
0
        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.");
        }
Exemplo n.º 16
0
        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);
        }
Exemplo n.º 17
0
        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);
        }
 public void ContextTest()
 {
     Assert.IsNotNull(ORBInitializer.InitORB());
     Assert.IsNotNull(ORBInitializer.Context);
 }
Exemplo n.º 19
0
        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 host   = args[0];
            ushort port   = Convert.ToUInt16(args[1]);
            string entity = args[2];
            AsymmetricCipherKeyPair privateKey = Crypto.ReadKeyFile(args[3]);

            // Cria o componente que conterá as facetas do servidor
            ORBInitializer.InitORB();
            ComponentContext component =
                new DefaultComponentContext(new ComponentId("messenger", 1, 0, 0, ".net"));

            // Cria a faceta Messenger para o componente
            component.AddFacet("Messenger",
                               Repository.GetRepositoryID(typeof(Messenger)),
                               new MessengerImpl(entity));

            // Define propriedades para a oferta de serviço a ser registrada no barramento
            IComponent ic = component.GetIComponent();

            ServiceProperty[] properties =
            {
                new ServiceProperty("offer.domain",
                                    "Demo CallChain"),
                new ServiceProperty("offer.role",
                                    "mensageiro real")
            };

            // 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.ConnectByAddress(host, port);
            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);
        }
Exemplo n.º 20
0
        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);
        }
Exemplo n.º 21
0
        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();
            }
        }
Exemplo n.º 22
0
 /// <summary>see <see cref="omg.org.CORBA.IOrbServices.RegisterPortableInterceptorInitalizer"</summary>
 public void RegisterPortableInterceptorInitalizer(ORBInitializer initalizer)
 {
     lock (m_orbInitalizers.SyncRoot)
     {
         m_orbInitalizers.Add(initalizer);
     }
 }
Exemplo n.º 23
0
        public static void InitSSLORB(string clientUser, string clientThumbprint, string serverUser, string serverThumbprint, ushort serverSSLPort, ushort serverOpenPort, bool clientAuthenticationRequirement, bool serverAuthenticationRequirement, string encryption, bool checkCertificateRevocation, bool checkServerName)
        {
            Hashtable props = new Hashtable();

            props[IiopChannel.CHANNEL_NAME_KEY]      = "SecuredIiopChannel";
            props[IiopChannel.TRANSPORT_FACTORY_KEY] =
                "Ch.Elca.Iiop.Security.Ssl.SslTransportFactory,SSLPlugin";
            if (clientThumbprint != null)
            {
                props[SSLClient.ClientAuthentication] = SSLClient.ClientAuthenticationType.Supported;
                props[ClientAuthenticationSpecificFromStore.ClientCertificate] =
                    clientThumbprint;
                props[SSLClient.ClientAuthenticationClass] = typeof(ClientAuthenticationSpecificFromStore);
                props[ClientAuthenticationSpecificFromStore.StoreLocation] =
                    clientUser;
            }
            else
            {
                props[SSLClient.ClientAuthentication]      = SSLClient.ClientAuthenticationType.NotSupported;
                props[SSLClient.ClientAuthenticationClass] = typeof(DefaultClientAuthenticationImpl);
            }
            if (serverAuthenticationRequirement)
            {
                props[SSLClient.ServerAuthentication] = SSLClient.ServerAuthenticationType.Required;
            }

            props[SSLServer.ServerAuthenticationClass] = typeof(DefaultServerAuthenticationImpl);
            props[IiopServerChannel.PORT_KEY]          = serverOpenPort;
            if (serverThumbprint != null)
            {
                props[SSLServer.ServerAuthentication] = SSLServer.ServerAuthenticationType.Supported;
                props[DefaultServerAuthenticationImpl.ServerCertificate] =
                    serverThumbprint;
                props[DefaultServerAuthenticationImpl.StoreLocation] = serverUser;
                props[SSLServer.SecurePort] = serverSSLPort;
            }
            if (clientAuthenticationRequirement)
            {
                props[SSLServer.ClientAuthentication] = SSLServer.ClientAuthenticationType.Required;
            }

            props[SSLClient.ClientEncryptionType] = Encryption.EncryptionType.NotSupported;
            props[SSLServer.ServerEncryptionType] = Encryption.EncryptionType.NotSupported;
            switch (encryption.ToLower())
            {
            case "required":
                props[SSLClient.ClientEncryptionType] = Encryption.EncryptionType.Required;
                props[SSLServer.ServerEncryptionType] = Encryption.EncryptionType.Required;
                break;

            case "supported":
                props[SSLClient.ClientEncryptionType] = Encryption.EncryptionType.Supported;
                props[SSLServer.ServerEncryptionType] = Encryption.EncryptionType.Supported;
                break;
            }

            props[Authentication.CheckCertificateRevocation] = checkCertificateRevocation;
            props[SSLClient.CheckServerName] = checkServerName;

            ORBInitializer.InitORB(props);
        }
Exemplo n.º 24
0
 public CallerChainInspectorImpl()
 {
     ORBInitializer.InitORB();
     _context = ORBInitializer.Context;
 }