private static HttpPilotClient Reconnect(HttpContext context, IServerCallback callback)
        {
            var client = new HttpPilotClient();

            client.Connect(ApplicationConst.PilotServerUrl);

            var serverApi = client.GetServerApi(callback);

            var dbName            = context.User.FindFirstValue(ClaimTypes.Surname);
            var login             = context.User.FindFirstValue(ClaimTypes.Name);
            var protectedPassword = context.User.FindFirstValue(ClaimTypes.UserData);
            var useWindowsAuth    = login.Contains("/") || login.Contains("\\");
            var dbInfo            = serverApi.OpenDatabase(dbName, login, protectedPassword, useWindowsAuth);

            if (dbInfo == null)
            {
                throw new TransportException();
            }

            var clientIdString = context.User.FindFirstValue(ClaimTypes.Sid);

            ClientsDictionary[Guid.Parse(clientIdString)] = client;

            DMetadata dMetadata = serverApi.GetMetadata(dbInfo.MetadataVersion);

            context.Session.SetSessionValues(SessionKeys.MetaTypes, dMetadata.Types.ToDictionary(x => x.Id, y => y));

            return(client);
        }
예제 #2
0
        public void should_create_context()
        {
            // given
            var connectionService    = new Mock <IConnectionService>();
            var remoteServiceFactory = new Mock <IRemoteServiceFactory>();
            var service         = new ContextService(connectionService.Object, remoteServiceFactory.Object);
            var sedovCreds      = Credentials.GetConnectionCredentials("sedov", "passwrd1");
            var sedovHttpClient = new HttpPilotClient("");

            connectionService.Setup(cs => cs.Connect(sedovCreds)).Returns(sedovHttpClient);

            var sedovApi       = new Mock <IRemoteService>();
            var sedovServerApi = new Mock <IServerApiService>();

            sedovApi.Setup(sa => sa.IsActive).Returns(true);
            sedovApi.Setup(sa => sa.GetServerApi()).Returns(sedovServerApi.Object);
            remoteServiceFactory.Setup(rsf => rsf.CreateRemoteService(sedovHttpClient)).Returns(sedovApi.Object);

            // when
            service.CreateContext(sedovCreds);

            // then
            connectionService.Verify(cs => cs.Connect(sedovCreds), Times.Once);
            remoteServiceFactory.Verify(rsf => rsf.CreateRemoteService(sedovHttpClient), Times.Once);
        }
        public DDatabaseInfo Connect(Credentials credentials)
        {
            _client = new HttpPilotClient();
            _client.Connect(ApplicationConst.PilotServerUrl);
            var serverApi = _client.GetServerApi(_serverCallback);
            var dbInfo    = serverApi.OpenDatabase(credentials.DatabaseName, credentials.Username, credentials.ProtectedPassword, credentials.UseWindowsAuth);

            _repository = new Repository(serverApi, _serverCallback);
            _repository.Initialize(credentials.Username);
            IsInitialized = true;
            return(dbInfo);
        }
예제 #4
0
        public HttpPilotClient Connect(Credentials credentials)
        {
            var client = new HttpPilotClient(_config.Url);

            // Do not check versions of the Server and Client
            client.Connect(false);

            var authApi = client.GetAuthenticationApi();

            authApi.Login(_config.Database, credentials.Username, credentials.ProtectedPassword, credentials.UseWindowsAuth, _config.LicenseCode);
            return(client);
        }
예제 #5
0
        public void Connect()
        {
            _client = new HttpPilotClient(_settings.ServerUrl);
            _client.Connect(false);

            ServerApi         = _client.GetServerApi(new NullableServerCallback());
            AuthenticationApi = _client.GetAuthenticationApi();
            AuthenticationApi.Login(_settings.DbName, _settings.Login, _settings.Password, false, _settings.LicenseCode);

            var dataBaseInfo = ServerApi.OpenDatabase();

            PersonId = dataBaseInfo.Person.Id;

            FileArchiveApi = _client.GetFileArchiveApi();
        }
        public DDatabaseInfo Connect(Credentials credentials)
        {
            _client = new HttpPilotClient(ApplicationConst.PilotServerUrl);
            // Do not check versions of the Server and Client
            _client.Connect(false);
            var serverApi = _client.GetServerApi(_serverCallback);
            var authApi   = _client.GetAuthenticationApi();

            authApi.Login(credentials.DatabaseName, credentials.Username, credentials.ProtectedPassword, credentials.UseWindowsAuth, ApplicationConst.LicenseCode);
            var dbInfo = serverApi.OpenDatabase();

            _repository = new Repository(serverApi, _serverCallback);
            _repository.Initialize(credentials.Username);
            IsInitialized = true;
            return(dbInfo);
        }
예제 #7
0
        public void should_get_server_api()
        {
            // given
            var connectionService    = new Mock <IConnectionService>();
            var remoteServiceFactory = new Mock <IRemoteServiceFactory>();
            var service = new ContextService(connectionService.Object, remoteServiceFactory.Object);

            var sedovCreds = Credentials.GetConnectionCredentials("sedov", "passwrd1");
            var smithCreds = Credentials.GetConnectionCredentials("smith", "passwrd2");

            var sedovHttpClient = new HttpPilotClient("");
            var smithHttpClient = new HttpPilotClient("");

            connectionService.Setup(cs => cs.Connect(sedovCreds)).Returns(sedovHttpClient);
            connectionService.Setup(cs => cs.Connect(smithCreds)).Returns(smithHttpClient);

            var sedovApi       = new Mock <IRemoteService>();
            var sedovServerApi = new Mock <IServerApiService>();

            sedovApi.Setup(sa => sa.IsActive).Returns(true);
            sedovApi.Setup(sa => sa.GetServerApi()).Returns(sedovServerApi.Object);
            var smithApi       = new Mock <IRemoteService>();
            var smithServerApi = new Mock <IServerApiService>();

            smithApi.Setup(sma => sma.IsActive).Returns(true);
            smithApi.Setup(sma => sma.GetServerApi()).Returns(smithServerApi.Object);

            remoteServiceFactory.Setup(rsf => rsf.CreateRemoteService(sedovHttpClient)).Returns(sedovApi.Object);
            remoteServiceFactory.Setup(rsf => rsf.CreateRemoteService(smithHttpClient)).Returns(smithApi.Object);

            service.CreateContext(sedovCreds);
            service.CreateContext(smithCreds);

            // when
            var api = service.GetServerApi("sedov");

            // then
            Assert.NotNull(api);
            Assert.AreEqual(sedovServerApi.Object, api);

            // when
            var sapi = service.GetServerApi("smith");

            // then
            Assert.NotNull(sapi);
            Assert.AreEqual(smithServerApi.Object, sapi);
        }
예제 #8
0
        public RemoteService(HttpPilotClient client)
        {
            _client = client;
            _client.SetConnectionLostListener(this);
            _serverCallback = new ServerCallback();
            _fileArchiveApi = client.GetFileArchiveApi();

            var searchFactory          = new SearchServiceFactory(_serverCallback);
            var localArchiveRootFolder = DirectoryProvider.GetTempPath();
            var fileStorageProvider    = new FileStorageProvider(localArchiveRootFolder);
            var changsetUploader       = new ChangesetUploader(_fileArchiveApi, fileStorageProvider, null);
            var messageApi             = client.GetMessagesApi(new NullableMessagesCallback());
            var serverApi = client.GetServerApi(_serverCallback);
            var dbInfo    = serverApi.OpenDatabase();
            var backend   = new Backend(serverApi, dbInfo, messageApi, changsetUploader);

            _serverApi = new ServerApiService(serverApi, dbInfo, searchFactory, backend);
            _serverCallback.RegisterCallbackListener((IRemoteServiceListener)_serverApi);
            IsActive = true;
        }
예제 #9
0
        public void should_not_get_server_api_if_is_not_active()
        {
            // given
            var connectionService    = new Mock <IConnectionService>();
            var remoteServiceFactory = new Mock <IRemoteServiceFactory>();
            var service         = new ContextService(connectionService.Object, remoteServiceFactory.Object);
            var sedovCreds      = Credentials.GetConnectionCredentials("sedov", "passwrd1");
            var sedovHttpClient = new HttpPilotClient("");

            connectionService.Setup(cs => cs.Connect(sedovCreds)).Returns(sedovHttpClient);

            var sedovApi       = new Mock <IRemoteService>();
            var sedovServerApi = new Mock <IServerApiService>();

            sedovApi.Setup(sa => sa.IsActive).Returns(false); // is not active
            sedovApi.Setup(sa => sa.GetServerApi()).Returns(sedovServerApi.Object);
            remoteServiceFactory.Setup(rsf => rsf.CreateRemoteService(sedovHttpClient)).Returns(sedovApi.Object);
            service.CreateContext(sedovCreds);

            // when
            Assert.Throws <UnauthorizedAccessException>(() => service.GetServerApi("sedov"));
        }
예제 #10
0
 public IRemoteService CreateRemoteService(HttpPilotClient client)
 {
     return(new RemoteService(client));
 }
 public ServerConnector(Settings settings)
 {
     _settings = settings;
     _client   = new HttpPilotClient(_settings.ServerUrl);
 }
 public static void SetClient(this HttpContext context, HttpPilotClient client, Guid clientId)
 {
     ClientsDictionary[clientId] = client;
 }
예제 #13
0
 public void SetHttpClient(HttpPilotClient client)
 {
     _client = client;
 }