Exemple #1
0
        public bool Login()
        {
            AuthenticationState authentication = AuthenticationState.Unknown;

            _systemClient = new SystemClientHttp(_dpmTarget);
            TpsLogManager <Semafone> .Debug("Created SystemClientHttp using" + _dpmTarget + " for " + _webSocket);

            _telephonyClient = new TelephonyClientHttp(_dpmTarget);
            TpsLogManager <Semafone> .Debug("Created TelephonyClientHttp using" + _dpmTarget + " for " + _webSocket);

            _secureDataClient = new SecureDataClientHttp(_dpmTarget);
            TpsLogManager <Semafone> .Debug("Created SecureDataClientHttp using" + _dpmTarget + " for " + _webSocket);

            try
            {
                // Attempt to login to the DPM (Semafone), the SemafoneClientSession reference
                // passed in will be filled with our session information
                authentication = _systemClient.Login(ClientSession);
            }
            catch (SemafoneClientException e)
            {
                TpsLogManager <Semafone> .Error("Failed to login to Semafone" + " for " + _webSocket + ": " + e.Message + e.StackTrace);

                if (e.Error != null)
                {
                    TpsLogManager <Semafone> .Error("Failed to EnterSecureMode : " + e.Error.cause);
                }
            }

            try
            {
                if (authentication != AuthenticationState.Authenticated)
                {
                    // If we failed to login, we cannot proceed
                    TpsLogManager <Semafone> .Error("Not authenticated, cannot proceed");
                }
                else
                {
                    return(true);
                }
            }
            catch (Exception e)
            {
                TpsLogManager <Semafone> .Error("Failed to login to Semafone: Checking Authentication state :  " + e.Message + e.StackTrace);
            }
            return(false);
        }
        private async Task AuthenticateService()
        {
            try
            {
                await _systemClient.Login(new SystemLoginRq
                {
                    PassCode          = _passCode,
                    AccessingSystemId = AccessingSystemId,
                    SystemId          = _systemId
                }).Bind(async l =>
                {
                    _sessionKey = l.SystemSessionInfo.SessionId;
                    await this.ChangeState(SystemSessionEvent.Authenticated);
                    _sessionChanged.OnNext(_sessionKey);
                    var timeSpan = l.SystemSessionInfo.ExpiresOn.Subtract(DateTime.Now).Subtract(_extendSessionBuffer);
                    if (_extendSession != null)
                    {
                        _extendSession.Dispose();
                        _extendSession = null;
                    }

                    _extendSession =
                        new Timer(
                            (o) =>
                    {
                        Task.Run(async() => { await this.ChangeState(SystemSessionEvent.SessionExpiring); });
                    }, null, timeSpan, timeSpan);
                    return(l.ToResultMonad());
                }).Error(async e =>
                {
                    log.Error($"Failure to login.");
                    await ChangeState(SystemSessionEvent.Retry);
                });
            }
            catch (Exception ex)
            {
                log.Error(ex, ex.Message);
                await ChangeState(SystemSessionEvent.Retry);
            }
        }