Beispiel #1
0
        /// <summary>
        /// Try to get a copy of the system by ID. sessions
        /// </summary>
        private bool TryGetScadaInstance(long sessionID, out ScadaInstance scadaInstance)
        {
            if (TryGetSession(sessionID, out var session))
            {
                scadaInstance = session.LoggedOn ? session.ScadaInstance : null;

                if (scadaInstance == null)
                {
                    Log.WriteError(string.Format(
                                       Localization.UseRussian
                            ? "Экземпляр системы не определён для сессии с ид. {0}"
                            : "System instance is not defined for a session with ID {0}", sessionID));
                    return(false);
                }
                else
                {
                    return(true);
                }
            }
            else
            {
                scadaInstance = null;
                return(false);
            }
        }
Beispiel #2
0
        public bool Login(long sessionID, string username, string encryptedPassword, string scadaInstanceName,
                          out string errMsg)
        {
            if (TryGetSession(sessionID, out Session session))
            {
                session.ClearUser();
                ScadaInstance scadaInstance = InstanceManager.GetScadaInstance(scadaInstanceName);

                if (scadaInstance == null)
                {
                    errMsg = Localization.UseRussian ?
                             "Экземпляр системы не найден" :
                             "System instance not found";

                    Log.WriteError(string.Format(Localization.UseRussian ?
                                                 "Экземпляр системы с наименованием \"{0}\" не найден" :
                                                 "System instance named \"{0}\" not found", scadaInstanceName));
                }
                else
                {
                    string password = CryptoUtils.SafelyDecryptPassword(encryptedPassword, sessionID,
                                                                        AppData.Settings.SecretKey);

                    if (scadaInstance.ValidateUser(username, password, out errMsg))
                    {
                        Log.WriteAction(string.Format(Localization.UseRussian ?
                                                      "Пользователь {0} подключился к {1}" :
                                                      "User {0} connected to {1}", username, scadaInstanceName));
                        session.SetUser(username, scadaInstance);
                        return(true);
                    }
                    else
                    {
                        Log.WriteError(string.Format(Localization.UseRussian ?
                                                     "Пользователь {0} не прошёл проверку для подключения к {1} - {2}" :
                                                     "User {0} failed validation to connect to {1} - {2}",
                                                     username, scadaInstanceName, errMsg));
                    }
                }
            }
            else
            {
                errMsg = Localization.UseRussian ?
                         "Сессия не найдена" :
                         "Session not found";
            }

            return(false);
        }