예제 #1
0
        public static void Password_OnCommand(CommandEventArgs e)
        {
            Mobile  from = e.Mobile;
            Account acct = from.Account as Account;

            if (acct == null)
            {
                return;
            }

            IPAddress[] accessList = acct.LoginIPs;

            if (accessList.Length == 0)
            {
                return;
            }

            NetState ns = from.NetState;

            if (ns == null)
            {
                return;
            }

            if (e.Length == 0)
            {
                from.SendMessage("Musis specifikovat nove heslo.");
                return;
            }
            else if (e.Length == 1)
            {
                from.SendMessage("Kvuly prevenci prekliknuti pri psani hesla, musis zadat sve heslo dvakrat. Pouzij tento format:");
                from.SendMessage(".Heslo \"(Noveheslo)\" \"(ZnovuNoveHeslo)\"");
                return;
            }

            string pass  = e.GetString(0);
            string pass2 = e.GetString(1);

            if (pass != pass2)
            {
                from.SendMessage("Heslo se neshoduje!");
                return;
            }

            bool isSafe = true;

            for (int i = 0; isSafe && i < pass.Length; ++i)
            {
                isSafe = (pass[i] >= 0x20 && pass[i] < 0x80);
            }

            if (!isSafe)
            {
                from.SendMessage("Toto neni platne heslo.");
                return;
            }

            try
            {
                IPAddress ipAddress = ns.Address;

                if (Utility.IPMatchClassC(accessList[0], ipAddress))
                {
                    acct.SetPassword(pass);
                    from.SendMessage("The password to your account has changed.");
                }
                else
                {
                    PageEntry entry = PageQueue.GetEntry(from);

                    if (entry != null)
                    {
                        if (entry.Message.StartsWith("[Automated: Change Password]"))
                        {
                            from.SendMessage("You already have a password change request in the help system queue.");
                        }
                        else
                        {
                            from.SendMessage("Your IP address does not match that which created this account.");
                        }
                    }
                    else if (PageQueue.CheckAllowedToPage(from))
                    {
                        from.SendMessage("Your IP address does not match that which created this account.  A page has been entered into the help system on your behalf.");

                        from.SendLocalizedMessage(501234, "", 0x35);                           /* The next available Counselor/Game Master will respond as soon as possible.
                                                                                                * Please check your Journal for messages every few minutes.
                                                                                                */

                        PageQueue.Enqueue(new PageEntry(from, String.Format("[Automated: Change Password]<br>Desired password: {0}<br>Current IP address: {1}<br>Account IP address: {2}", pass, ipAddress, accessList[0]), PageType.Account));
                    }
                }
            }
            catch
            {
            }
        }
예제 #2
0
        public static void Password_OnCommand(CommandEventArgs e)
        {
            Mobile  from = e.Mobile;
            Account acct = from.Account as Account;

            if (acct == null)
            {
                return;
            }

            IPAddress[] accessList = acct.LoginIPs;

            if (accessList.Length == 0)
            {
                return;
            }

            NetState ns = from.NetState;

            if (ns == null)
            {
                return;
            }

            if (e.Length == 0)
            {
                from.SendMessage("You must specify the new password.");
                return;
            }
            else if (e.Length == 1)
            {
                from.SendMessage("To prevent potential typing mistakes, you must type the password twice. Use the format:");
                from.SendMessage("Password \"(newPassword)\" \"(repeated)\"");
                return;
            }

            string pass  = e.GetString(0);
            string pass2 = e.GetString(1);

            if (pass != pass2)
            {
                from.SendMessage("The passwords do not match.");
                return;
            }

            bool isSafe = true;

            for (int i = 0; isSafe && i < pass.Length; ++i)
            {
                isSafe = (pass[i] >= 0x20 && pass[i] < 0x7F);
            }

            if (!isSafe)
            {
                from.SendMessage("That is not a valid password.");
                return;
            }

            try
            {
                IPAddress ipAddress = ns.Address;

                if (Utility.IPMatchClassC(accessList[0], ipAddress))
                {
                    acct.SetPassword(pass);
                    from.SendMessage("The password to your account has changed.");
                }
                else
                {
                    PageEntry entry = PageQueue.GetEntry(from);

                    if (entry != null)
                    {
                        if (entry.Message.StartsWith("[Automated: Change Password]"))
                        {
                            from.SendMessage("You already have a password change request in the help system queue.");
                        }
                        else
                        {
                            from.SendMessage("Your IP address does not match that which created this account.");
                        }
                    }
                    else if (PageQueue.CheckAllowedToPage(from))
                    {
                        from.SendMessage("Your IP address does not match that which created this account.  A page has been entered into the help system on your behalf.");

                        from.SendLocalizedMessage(501234, "", 0x35); /* The next available Counselor/Game Master will respond as soon as possible.
                                                                      * Please check your Journal for messages every few minutes.
                                                                      */

                        PageQueue.Enqueue(new PageEntry(from, string.Format("[Automated: Change Password]<br>Desired password: {0}<br>Current IP address: {1}<br>Account IP address: {2}", pass, ipAddress, accessList[0]), PageType.Account));
                    }
                }
            }
            catch
            {
            }
        }
        private static void Pages(NetState state, PacketReader pvSrc)           // 0x08
        {
            ArrayList list       = PageQueue.List;
            int       identifier = pvSrc.ReadInt32();
            byte      subID      = pvSrc.ReadByte();

            Mobile sender = World.FindMobile(identifier);

            if (sender == null)
            {
                return;
            }

            PageEntry e = PageQueue.GetEntry(sender);

            if (e == null)               // no such page
            {
                return;
            }

            switch (subID)
            {
            case 0x01:                     // Handle
            {
                bool   handle = pvSrc.ReadBoolean();
                Mobile from   = RemoteAdminHandlers.ConfirmMobile((Account)state.Account, pvSrc.ReadInt32());
                if (from != null && (e.Handler == null || e.Handler == from))
                {
                    e.Handler = handle ? from : null;
                }
                //Console.WriteLine( "Handle: {0} handler: {1}", handle, from != null ? from.Name : "none" );
                break;
            }

            case 0x02:                     // Remove
            {
                PageQueue.Remove(e);
                break;
            }

            case 0x03:                     // Predefined
            {
                byte      messageIndex = pvSrc.ReadByte();
                Mobile    from         = RemoteAdminHandlers.ConfirmMobile((Account)state.Account, pvSrc.ReadInt32());
                ArrayList preresp      = PredefinedResponse.List;

                if (from != null && messageIndex >= 0 && messageIndex < preresp.Count)
                {
                    e.Sender.SendGump(new MessageSentGump(e.Sender, from.Name, ((PredefinedResponse)preresp[messageIndex]).Message));
                }
                break;
            }

            case 0x04:                     // Answer
            {
                Mobile from    = RemoteAdminHandlers.ConfirmMobile((Account)state.Account, pvSrc.ReadInt32());
                string message = pvSrc.ReadString();
                if (from != null)
                {
                    e.Sender.SendGump(new MessageSentGump(e.Sender, from.Name, message));
                }
                break;
            }
            }
        }