示例#1
0
 public static bool ToMaintenanceLogDTO(MaintenanceLog input, MaintenanceLogDTO output)
 {
     if (input == null)
     {
         return(false);
     }
     output.DateEnd   = input.DateEnd;
     output.DateStart = input.DateStart;
     output.LogId     = input.LogId;
     output.Reason    = input.Reason;
     return(true);
 }
 public void AutoMaintenanceProcess()
 {
     if (DateTime.UtcNow.Hour == ConfigurationObject.AutoRestartHour - 1 && DateTime.UtcNow.Minute == 50)
     {
         MaintenanceLogDTO maintenance = new MaintenanceLogDTO
         {
             DateEnd   = DateTime.UtcNow.AddMinutes(25),
             DateStart = DateTime.UtcNow.AddMinutes(9),
             Reason    = "Daily restart and cleanup routines."
         };
         DAOFactory.MaintenanceLogDAO.Insert(maintenance);
     }
 }
 public IEnumerable <MaintenanceLogDTO> LoadAll()
 {
     using (OpenNosContext context = DataAccessHelper.CreateContext())
     {
         List <MaintenanceLogDTO> result = new List <MaintenanceLogDTO>();
         foreach (MaintenanceLog maintenanceLog in context.MaintenanceLog.AsNoTracking())
         {
             MaintenanceLogDTO dto = new MaintenanceLogDTO();
             Mapper.Mappers.MaintenanceLogMapper.ToMaintenanceLogDTO(maintenanceLog, dto);
             result.Add(dto);
         }
         return(result);
     }
 }
        public MaintenanceLogDTO LoadFirst()
        {
            try
            {
                using (OpenNosContext context = DataAccessHelper.CreateContext())
                {
                    MaintenanceLogDTO dto = new MaintenanceLogDTO();
                    if (Mapper.Mappers.MaintenanceLogMapper.ToMaintenanceLogDTO(context.MaintenanceLog.AsNoTracking().FirstOrDefault(m => m.DateEnd > DateTime.UtcNow), dto))
                    {
                        return(dto);
                    }

                    return(null);
                }
            }
            catch (Exception e)
            {
                Logger.Error(e);
                return(null);
            }
        }
示例#5
0
 private void ExecuteHandler(ClientSession session)
 {
     if (_isParsed)
     {
         Logger.LogUserEvent("GMCOMMAND", session.GenerateIdentity(),
                             $"[Maintenance]Delay: {Delay} Duration: {Duration} Reason: {Reason}");
         DateTime          dateStart   = DateTime.UtcNow.AddMinutes(Delay);
         MaintenanceLogDTO maintenance = new MaintenanceLogDTO
         {
             DateEnd   = dateStart.AddMinutes(Duration),
             DateStart = dateStart,
             Reason    = Reason
         };
         DAOFactory.MaintenanceLogDAO.Insert(maintenance);
         session.SendPacket(session.Character.GenerateSay(Language.Instance.GetMessageFromKey("DONE"), 10));
     }
     else
     {
         session.SendPacket(session.Character.GenerateSay(ReturnHelp(), 10));
     }
 }
        public MaintenanceLogDTO Insert(MaintenanceLogDTO maintenanceLog)
        {
            try
            {
                using (OpenNosContext context = DataAccessHelper.CreateContext())
                {
                    MaintenanceLog entity = new MaintenanceLog();
                    Mapper.Mappers.MaintenanceLogMapper.ToMaintenanceLog(maintenanceLog, entity);
                    context.MaintenanceLog.Add(entity);
                    context.SaveChanges();
                    if (Mapper.Mappers.MaintenanceLogMapper.ToMaintenanceLogDTO(entity, maintenanceLog))
                    {
                        return(maintenanceLog);
                    }

                    return(null);
                }
            }
            catch (Exception e)
            {
                Logger.Error(e);
                return(null);
            }
        }
示例#7
0
        private void ExecuteHandler(ClientSession session)
        {
            string BuildServersPacket(string username, int sessionId, bool ignoreUserName)
            {
                string channelPacket = CommunicationServiceClient.Instance.RetrieveRegisteredWorldServers(username, sessionId, ignoreUserName);

                if (channelPacket?.Contains(':') != true)
                {
                    // no need for this as in release the debug is ignored eitherway
                    //if (ServerManager.Instance.IsDebugMode)
                    Logger.Debug("Could not retrieve Worldserver groups. Please make sure they've already been registered.");

                    // find a new way to display this message
                    //Session.SendPacket($"fail {Language.Instance.GetMessageFromKey("NO_WORLDSERVERS")}");
                    session.SendPacket($"fail {Language.Instance.GetMessageFromKey("IDERROR")}");
                }

                return(channelPacket);
            }

            UserDTO user = new UserDTO
            {
                Name     = Name,
                Password = ConfigurationManager.AppSettings["UseOldCrypto"] == "true" ? CryptographyBase.Sha512(LoginCryptography.GetPassword(Password)).ToUpper() : Password
            };
            AccountDTO loadedAccount = DAOFactory.AccountDAO.LoadByName(user.Name);

            if (loadedAccount?.Password.ToUpper().Equals(user.Password) == true)
            {
                string ipAddress = session.IpAddress;
                DAOFactory.AccountDAO.WriteGeneralLog(loadedAccount.AccountId, ipAddress, null, GeneralLogType.Connection, "LoginServer");

                //check if the account is connected
                if (!CommunicationServiceClient.Instance.IsAccountConnected(loadedAccount.AccountId))
                {
                    AuthorityType type    = loadedAccount.Authority;
                    PenaltyLogDTO penalty = DAOFactory.PenaltyLogDAO.LoadByAccount(loadedAccount.AccountId).FirstOrDefault(s => s.DateEnd > DateTime.UtcNow && s.Penalty == PenaltyType.Banned);
                    if (penalty != null)
                    {
                        // find a new way to display date of ban
                        session.SendPacket($"fail {string.Format(Language.Instance.GetMessageFromKey("BANNED"), penalty.Reason, penalty.DateEnd.ToString("yyyy-MM-dd-HH:mm"))}");;
                    }
                    else
                    {
                        switch (type)
                        {
                        case AuthorityType.Unconfirmed:
                        {
                            session.SendPacket($"fail {Language.Instance.GetMessageFromKey("NOTVALIDATE")}");
                        }
                        break;

                        case AuthorityType.Banned:
                        {
                            session.SendPacket($"fail {string.Format(Language.Instance.GetMessageFromKey("BANNED"), penalty.Reason, penalty.DateEnd.ToString("yyyy-MM-dd-HH:mm"))}");;
                        }
                        break;

                        case AuthorityType.Closed:
                        {
                            session.SendPacket($"fail {Language.Instance.GetMessageFromKey("IDERROR")}");
                        }
                        break;

                        default:
                        {
                            if (loadedAccount.Authority == AuthorityType.User || loadedAccount.Authority == AuthorityType.BitchNiggerFaggot)
                            {
                                MaintenanceLogDTO maintenanceLog = DAOFactory.MaintenanceLogDAO.LoadFirst();
                                if (maintenanceLog != null)
                                {
                                    // find a new way to display date and reason of maintenance
                                    session.SendPacket($"fail {string.Format(Language.Instance.GetMessageFromKey("MAINTENANCE"), maintenanceLog.DateEnd, maintenanceLog.Reason)}");
                                    return;
                                }
                            }

                            int newSessionId = SessionFactory.Instance.GenerateSessionId();
                            Logger.Debug(string.Format(Language.Instance.GetMessageFromKey("CONNECTION"), user.Name, newSessionId));
                            try
                            {
                                ipAddress = ipAddress.Substring(6, ipAddress.LastIndexOf(':') - 6);
                                CommunicationServiceClient.Instance.RegisterAccountLogin(loadedAccount.AccountId, newSessionId, ipAddress);
                            }
                            catch (Exception ex)
                            {
                                Logger.Error("General Error SessionId: " + newSessionId, ex);
                            }
                            string[] clientData     = ClientData.Split('.');
                            bool     ignoreUserName = clientData.Length < 3 ? false : short.TryParse(clientData[3], out short clientVersion) && (clientVersion < 3075 || ConfigurationManager.AppSettings["UseOldCrypto"] == "true");
                            session.SendPacket(BuildServersPacket(user.Name, newSessionId, ignoreUserName));
                        }
                        break;
                        }
                    }
                }
                else
                {
                    session.SendPacket($"fail {Language.Instance.GetMessageFromKey("ALREADY_CONNECTED")}");
                }
            }
            else
            {
                session.SendPacket($"fail {Language.Instance.GetMessageFromKey("IDERROR")}");
            }
        }