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.");
        }
Esempio n. 2
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);
        }
        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.");
        }
        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.");
        }