Jump to content

[Request] .changepassword command!


Stewie

Recommended Posts

I'm looking for that command if someone share please.

http://maxcheaters.com/forum/index.php?topic=90945.0

 

/*
* This program is free software: you can redistribute it and/or modify it under
* the terms of the GNU General Public License as published by the Free Software
* Foundation, either version 3 of the License, or (at your option) any later
* version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
*
* You should have received a copy of the GNU General Public License along with
* this program. If not, see <http://www.gnu.org/licenses/>.
*/
package l2j.crazy.devs.gameserver.handler.voicedcommandhandlers;

import java.security.MessageDigest;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.StringTokenizer;

import l2j.crazy.devs.Base64;
import l2j.crazy.devs.L2DatabaseFactory;
import l2j.crazy.devs.gameserver.handler.IVoicedCommandHandler;
import l2j.crazy.devs.gameserver.model.actor.instance.L2PcInstance;

/**
*
* @author Destractor
*
*/
public class ChangePassword implements IVoicedCommandHandler
{
private static final String[] _voicedCommands =
{
	"changepassword"
};

public boolean useVoicedCommand(String command, L2PcInstance activeChar, String target)
{
	if (command.equalsIgnoreCase("changepassword") && target != null)
	{
		StringTokenizer st = new StringTokenizer(target);
		try
		{
			String curpass = null, newpass = null, repeatnewpass = null;
			if (st.hasMoreTokens()) curpass = st.nextToken();
			if (st.hasMoreTokens()) newpass = st.nextToken();
			if (st.hasMoreTokens()) repeatnewpass = st.nextToken();

			if (!(curpass == null || newpass == null || repeatnewpass == null))
			{
				if (!newpass.equals(repeatnewpass))
				{
					activeChar.sendMessage("The new password doesn't match with the repeated one!");
					return false;
				}
				if (newpass.length() < 3)
				{
					activeChar.sendMessage("The new password is shorter than 3 chars! Please try with a longer one.");
					return false;
				}
				if (newpass.length() > 30)
				{
					activeChar.sendMessage("The new password is longer than 30 chars! Please try with a shorter one.");
					return false;
				}

				MessageDigest md = MessageDigest.getInstance("SHA");

				byte[] raw = curpass.getBytes("UTF-8");
				raw = md.digest(raw);
				String curpassEnc = Base64.encodeBytes(raw);
				String pass = null;
				int passUpdated = 0;

				// SQL connection
				Connection con = null;
				con = L2DatabaseFactory.getInstance().getConnection();
				PreparedStatement statement = con.prepareStatement("SELECT password FROM accounts WHERE login=?");
				statement.setString(1, activeChar.getAccountName());
				ResultSet rset = statement.executeQuery();
				if (rset.next())pass = rset.getString("password");
				rset.close();
				statement.close();

				if (curpassEnc.equals(pass))
				{
			        byte[] password = newpass.getBytes("UTF-8");
			        password = md.digest(password);
			        
			        // SQL connection
			        PreparedStatement ps = con.prepareStatement("UPDATE accounts SET password=? WHERE login=?");
			        ps.setString(1, Base64.encodeBytes(password));
			        ps.setString(2, activeChar.getAccountName());
			        passUpdated = ps.executeUpdate();
			        ps.close();
			        con.close();						
			        if (passUpdated > 0)
					{
						activeChar.sendMessage("You have successfully changed your password!");
					}
					else 
					{
						activeChar.sendMessage("The password change was unsuccessful!");
					}

				}
				else
				{
					activeChar.sendMessage("CurrentPass doesn't match with your current one.");
					return false;
				}
			}
			else
			{
				activeChar.sendMessage("Invalid pass data! Format: .changepassword CurrentPass NewPass NewPass");
				return false;
			}
		}
		catch (Exception e)
		{
			activeChar.sendMessage("A problem occured while changing password!");
		}
	}
	else
	{
		activeChar.sendMessage("To change your current password, you have to type the command in the following format(without the brackets []): [.changepassword CurrentPass NewPass NewPass]. You should also know that the password is case sensitive.");
		return false;
	}
	return true;
}

public String[] getVoicedCommandList()
{
	return _voicedCommands;
}
}

 

And this code will work?

 

 

 

 

And from where i should know it's already add to H5 LoL

/*
* This program is free software: you can redistribute it and/or modify it under
* the terms of the GNU General Public License as published by the Free Software
* Foundation, either version 3 of the License, or (at your option) any later
* version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
*
* You should have received a copy of the GNU General Public License along with
* this program. If not, see <http://www.gnu.org/licenses/>.
*/
package handlers.voicedcommandhandlers;

import java.util.StringTokenizer;
import java.util.logging.Level;

import com.l2jserver.gameserver.LoginServerThread;
import com.l2jserver.gameserver.cache.HtmCache;
import com.l2jserver.gameserver.handler.IVoicedCommandHandler;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
import com.l2jserver.gameserver.network.serverpackets.NpcHtmlMessage;

/**
* @author Nik
*/
public class ChangePassword implements IVoicedCommandHandler
{
private static final String[] _voicedCommands =
{
	"changepassword"
};

@Override
public boolean useVoicedCommand(String command, L2PcInstance activeChar, String target)
{
	if (target != null)
	{
		final StringTokenizer st = new StringTokenizer(target);
		try
		{
			String curpass = null, newpass = null, repeatnewpass = null;
			if (st.hasMoreTokens())
			{
				curpass = st.nextToken();
			}
			if (st.hasMoreTokens())
			{
				newpass = st.nextToken();
			}
			if (st.hasMoreTokens())
			{
				repeatnewpass = st.nextToken();
			}

			if (!((curpass == null) || (newpass == null) || (repeatnewpass == null)))
			{
				if (!newpass.equals(repeatnewpass))
				{
					activeChar.sendMessage("The new password doesn't match with the repeated one!");
					return false;
				}
				if (newpass.length() < 3)
				{
					activeChar.sendMessage("The new password is shorter than 3 chars! Please try with a longer one.");
					return false;
				}
				if (newpass.length() > 30)
				{
					activeChar.sendMessage("The new password is longer than 30 chars! Please try with a shorter one.");
					return false;
				}

				LoginServerThread.getInstance().sendChangePassword(activeChar.getAccountName(), activeChar.getName(), curpass, newpass);
			}
			else
			{
				activeChar.sendMessage("Invalid password data! You have to fill all boxes.");
				return false;
			}
		}
		catch (Exception e)
		{
			activeChar.sendMessage("A problem occured while changing password!");
			_log.log(Level.WARNING, "", e);
		}
	}
	else
	{
		// showHTML(activeChar);
		String html = HtmCache.getInstance().getHtm("en", "data/html/mods/ChangePassword.htm");
		if (html == null)
		{
			html = "<html><body><br><br><center><font color=LEVEL>404:</font> File Not Found</center></body></html>";
		}
		activeChar.sendPacket(new NpcHtmlMessage(1, html));
		return true;
	}
	return true;
}

@Override
public String[] getVoicedCommandList()
{
	return _voicedCommands;
}
}

Link to comment
Share on other sites

I need patch for freya, for command .changepassword

 

try to adapt the code from l2jserver h5 version !

 

Also u have already found solution

 

http://trac.l2jserver.com/changeset/4917

 

http://trac.l2jdp.com/changeset/8369

Link to comment
Share on other sites

game\data\scripts\handlers\voicedcommandhandlers -> Create ChangePassword.java

 

/*
* This program is free software: you can redistribute it and/or modify it under
* the terms of the GNU General Public License as published by the Free Software
* Foundation, either version 3 of the License, or (at your option) any later
* version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
*
* You should have received a copy of the GNU General Public License along with
* this program. If not, see <http://www.gnu.org/licenses/>.
*/

package handlers.voicedcommandhandlers;

import java.security.MessageDigest;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.StringTokenizer;
import java.util.logging.Level;

import com.l2jserver.Base64;
import com.l2jserver.L2DatabaseFactory;
import com.l2jserver.gameserver.handler.IVoicedCommandHandler;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;

public class ChangePassword implements IVoicedCommandHandler
{
   private static final String[] _voicedCommands = { "changepassword" };
   private static final int MIN = 6; // minimum character lengths
   private static final int MAX = 30; // miaximum character lengths
   
   @Override
   public boolean useVoicedCommand(final String command, final L2PcInstance activeChar, final String target)
   {
      if (command.equalsIgnoreCase("changepassword") && target != null)
      {
         final StringTokenizer st = new StringTokenizer(target);
         try
         {
            String curpass = null, newpass = null, repeatnewpass = null;
            if (st.hasMoreTokens())
               curpass = st.nextToken();
            if (st.hasMoreTokens())
               newpass = st.nextToken();
            if (st.hasMoreTokens())
               repeatnewpass = st.nextToken();
            
            if (!(curpass == null || newpass == null || repeatnewpass == null))
            {
               if (!newpass.equals(repeatnewpass))
               {
                  activeChar.sendMessage("Your repeated password must be the same as new password!");
                  return false;
               }
               if (newpass.length() < MIN)
               {
                  activeChar.sendMessage("Your password must have min: " + MIN + " chars!");
                  return false;
               }
               if (newpass.length() > MAX)
               {
                  activeChar.sendMessage("Your password can't have more than " + MAX + " chars!");
                  return false;
               }
               
               final MessageDigest md = MessageDigest.getInstance("SHA");
               
               byte[] raw = curpass.getBytes("UTF-8");
               raw = md.digest(raw);
               final String curpassEnc = Base64.encodeBytes(raw);
               String pass = null;
               int passUpdated = 0;
               
               Connection con = null;
               
               try
               {
                  con = L2DatabaseFactory.getInstance().getConnection();
                  final PreparedStatement statement = con.prepareStatement("SELECT password FROM accounts WHERE login=?");
                  statement.setString(1, activeChar.getAccountName());
                  final ResultSet rset = statement.executeQuery();
                  if (rset.next())
                     pass = rset.getString("password");
                  rset.close();
                  statement.close();
                  
                  if (curpassEnc.equals(pass))
                  {
                     byte[] password = newpass.getBytes("UTF-8");
                     password = md.digest(password);
                     
                     final PreparedStatement ps = con.prepareStatement("UPDATE accounts SET password=? WHERE login=?");
                     ps.setString(1, Base64.encodeBytes(password));
                     ps.setString(2, activeChar.getAccountName());
                     passUpdated = ps.executeUpdate();
                     ps.close();
                     _log.info("Character " + activeChar.getName() + " has changed his password from " + curpassEnc + " to " + Base64.encodeBytes(password));
                     
                     if (passUpdated > 0)
                        activeChar.sendMessage("Your password was updated successfully!");
                     else
                        activeChar.sendMessage("Your password wasn't changed due troubles!");
                  }
                  else
                  {
                     L2DatabaseFactory.close(con);
                     activeChar.sendMessage("Passess not matches.");
                     return false;
                  }
               }
               catch (final Exception e)
               {
               }
               finally
               {
                  L2DatabaseFactory.close(con);
               }
            }
            else
            {
               activeChar.sendMessage("Wrong command structure! Use: .changepassword currendPassword newPassword retypePassword");
               return false;
            }
         }
         catch (final Exception e)
         {
            activeChar.sendMessage("A problem occured while changing password!");
            _log.log(Level.WARNING, "", e);
         }
      }
      else
      {
         activeChar.sendMessage("Wrong command structure! Use: .changepassword currendPassword newPassword retypePassword");
         return false;
      }
      return true;
   }
   
   @Override
   public String[] getVoicedCommandList()
   {
      return _voicedCommands;
   }
}

Link to comment
Share on other sites

try to adapt the code from l2jserver h5 version !

 

Also u have already found solution

 

http://trac.l2jserver.com/changeset/4917

 

http://trac.l2jdp.com/changeset/8369

 

I try, can't.. i'm looking for already adapted one...

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.


×
×
  • Create New...