public void LogAccess(IPAddress ipAddress, bool loggedOut) { if (IPLimiter.IsExempt(ipAddress)) { return; } if (LoginIPs.Count == 0) { if (AccountHandler.IPTable.ContainsKey(ipAddress)) { AccountHandler.IPTable[ipAddress]++; } else { AccountHandler.IPTable[ipAddress] = 1; } } LogIPAccess(ipAddress, loggedOut); if (!LoginIPs.Contains(ipAddress)) { LoginIPs.Add(ipAddress); } }
/// <summary> /// Serializes this Account instance to an XmlTextWriter. /// </summary> /// <param name="xml">The XmlTextWriter instance from which to serialize.</param> public void Save(XmlTextWriter xml) { xml.WriteStartElement("account"); xml.WriteStartElement("username"); xml.WriteString(Username); xml.WriteEndElement(); if (PlainPassword != null) { xml.WriteStartElement("password"); xml.WriteString(PlainPassword); xml.WriteEndElement(); } if (CryptPassword != null) { xml.WriteStartElement("cryptPassword"); xml.WriteString(CryptPassword); xml.WriteEndElement(); } if (NewCryptPassword != null) { xml.WriteStartElement("newCryptPassword"); xml.WriteString(NewCryptPassword); xml.WriteEndElement(); } if (SaltedCryptPassword != null) { xml.WriteStartElement("saltedCryptPassword"); xml.WriteString(SaltedCryptPassword); xml.WriteEndElement(); } if (AccessLevel != AccessLevel.Player) { xml.WriteStartElement("accessLevel"); xml.WriteString(AccessLevel.ToString()); xml.WriteEndElement(); } if (Flags != 0) { xml.WriteStartElement("flags"); xml.WriteString(XmlConvert.ToString(Flags)); xml.WriteEndElement(); } xml.WriteStartElement("created"); xml.WriteString(XmlConvert.ToString(Created, XmlDateTimeSerializationMode.Local)); xml.WriteEndElement(); xml.WriteStartElement("lastLogin"); xml.WriteString(XmlConvert.ToString(LastLogin, XmlDateTimeSerializationMode.Local)); xml.WriteEndElement(); xml.WriteStartElement("totalGameTime"); xml.WriteString(XmlConvert.ToString(TotalGameTime)); xml.WriteEndElement(); xml.WriteStartElement("email"); xml.WriteString(Email); xml.WriteEndElement(); xml.WriteStartElement("language"); xml.WriteString(Language); xml.WriteEndElement(); xml.WriteStartElement("secquest"); xml.WriteString(SecurityQuestion); xml.WriteEndElement(); xml.WriteStartElement("secanswer"); xml.WriteString(SecurityAnswer); xml.WriteEndElement(); xml.WriteStartElement("chars"); //xml.WriteAttributeString( "length", m_Mobiles.Length.ToString() ); //Legacy, Not used anymore for (int i = 0; i < Mobiles.Length; ++i) { Mobile m = Mobiles[i]; if (m == null || m.Deleted) { continue; } xml.WriteStartElement("char"); xml.WriteAttributeString("index", i.ToString(CultureInfo.InvariantCulture)); xml.WriteString(m.Serial.Value.ToString(CultureInfo.InvariantCulture)); xml.WriteEndElement(); } xml.WriteEndElement(); if (Comments != null && Comments.Count > 0) { xml.WriteStartElement("comments"); foreach (AccountComment c in Comments) { c.Save(xml); } xml.WriteEndElement(); } if (Tags != null && Tags.Count > 0) { xml.WriteStartElement("tags"); foreach (AccountTag t in Tags) { t.Save(xml); } xml.WriteEndElement(); } if (LoginIPs.Count > 0) { xml.WriteStartElement("addressList"); xml.WriteAttributeString("count", LoginIPs.Count.ToString(CultureInfo.InvariantCulture)); foreach (IPAddress ip in LoginIPs.Where(t => t != null)) { xml.WriteStartElement("ip"); xml.WriteString(ip.ToString()); xml.WriteEndElement(); } xml.WriteEndElement(); } if (IPRestrictions.Length > 0) { xml.WriteStartElement("accessCheck"); foreach (string ip in IPRestrictions) { xml.WriteStartElement("ip"); xml.WriteString(ip); xml.WriteEndElement(); } xml.WriteEndElement(); } xml.WriteEndElement(); }