예제 #1
0
        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);
            }
        }
예제 #2
0
        /// <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();
        }