Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Index: java/com/l2jserver/gameserver/LoginServerThread.java
- ===================================================================
- --- java/com/l2jserver/gameserver/LoginServerThread.java (revision 5708)
- +++ java/com/l2jserver/gameserver/LoginServerThread.java (working copy)
- @@ -45,6 +45,7 @@
- import com.l2jserver.gameserver.network.gameserverpackets.AuthRequest;
- import com.l2jserver.gameserver.network.gameserverpackets.BlowFishKey;
- import com.l2jserver.gameserver.network.gameserverpackets.ChangeAccessLevel;
- +import com.l2jserver.gameserver.network.gameserverpackets.ChangePassword;
- import com.l2jserver.gameserver.network.gameserverpackets.PlayerAuthRequest;
- import com.l2jserver.gameserver.network.gameserverpackets.PlayerInGame;
- import com.l2jserver.gameserver.network.gameserverpackets.PlayerLogout;
- @@ -55,6 +56,7 @@
- import com.l2jserver.gameserver.network.loginserverpackets.KickPlayer;
- import com.l2jserver.gameserver.network.loginserverpackets.LoginServerFail;
- import com.l2jserver.gameserver.network.loginserverpackets.PlayerAuthResponse;
- +import com.l2jserver.gameserver.network.loginserverpackets.ChangePasswordResponse;
- import com.l2jserver.gameserver.network.serverpackets.CharSelectionInfo;
- import com.l2jserver.gameserver.network.serverpackets.LoginFail;
- import com.l2jserver.gameserver.network.serverpackets.SystemMessage;
- @@ -334,6 +336,9 @@
- KickPlayer kp = new KickPlayer(decrypt);
- doKickPlayer(kp.getAccount());
- break;
- + case 0x06:
- + new ChangePasswordResponse(decrypt);
- + break;
- }
- }
- }
- @@ -559,6 +564,20 @@
- }
- }
- + public void sendChangePassword(String accountName, String charName, String oldpass, String newpass)
- + {
- + ChangePassword cp = new ChangePassword(accountName, charName, oldpass, newpass);
- + try
- + {
- + sendPacket(cp);
- + }
- + catch (IOException e)
- + {
- + if (Config.DEBUG)
- + _log.log(Level.WARNING, "", e);
- + }
- + }
- +
- /**
- * @return
- */
- Index: java/com/l2jserver/gameserver/network/gameserverpackets/ChangePassword.java
- ===================================================================
- --- java/com/l2jserver/gameserver/network/gameserverpackets/ChangePassword.java (revision 0)
- +++ java/com/l2jserver/gameserver/network/gameserverpackets/ChangePassword.java (working copy)
- @@ -0,0 +1,38 @@
- +/*
- + * 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 com.l2jserver.gameserver.network.gameserverpackets;
- +
- +import com.l2jserver.util.network.BaseSendablePacket;
- +
- +/**
- + * @author UnAfraid
- + */
- +public class ChangePassword extends BaseSendablePacket
- +{
- + public ChangePassword(String accountName, String characterName, String oldPass, String newPass)
- + {
- + writeC(0x0B);
- + writeS(accountName);
- + writeS(characterName);
- + writeS(oldPass);
- + writeS(newPass);
- + }
- +
- + @Override
- + public byte[] getContent()
- + {
- + return getBytes();
- + }
- +}
- \ No newline at end of file
- Index: java/com/l2jserver/gameserver/network/loginserverpackets/ChangePasswordResponse.java
- ===================================================================
- --- java/com/l2jserver/gameserver/network/loginserverpackets/ChangePasswordResponse.java (revision 0)
- +++ java/com/l2jserver/gameserver/network/loginserverpackets/ChangePasswordResponse.java (working copy)
- @@ -0,0 +1,37 @@
- +/*
- + * 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 com.l2jserver.gameserver.network.loginserverpackets;
- +
- +import com.l2jserver.gameserver.model.L2World;
- +import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
- +import com.l2jserver.util.network.BaseRecievePacket;
- +
- +
- +public class ChangePasswordResponse extends BaseRecievePacket
- +{
- +
- + public ChangePasswordResponse(byte[] decrypt)
- + {
- + super(decrypt);
- + //boolean isSuccessful = readC() > 0;
- + String character = readS();
- + String msgToSend = readS();
- +
- + L2PcInstance player = L2World.getInstance().getPlayer(character);
- +
- + if (player != null)
- + player.sendMessage(msgToSend);
- + }
- +}
- \ No newline at end of file
- Index: java/com/l2jserver/loginserver/GameServerThread.java
- ===================================================================
- --- java/com/l2jserver/loginserver/GameServerThread.java (revision 5708)
- +++ java/com/l2jserver/loginserver/GameServerThread.java (working copy)
- @@ -33,6 +33,7 @@
- import com.l2jserver.loginserver.GameServerTable.GameServerInfo;
- import com.l2jserver.loginserver.gameserverpackets.BlowFishKey;
- import com.l2jserver.loginserver.gameserverpackets.ChangeAccessLevel;
- +import com.l2jserver.loginserver.gameserverpackets.ChangePassword;
- import com.l2jserver.loginserver.gameserverpackets.GameServerAuth;
- import com.l2jserver.loginserver.gameserverpackets.PlayerAuthRequest;
- import com.l2jserver.loginserver.gameserverpackets.PlayerInGame;
- @@ -40,6 +41,7 @@
- import com.l2jserver.loginserver.gameserverpackets.PlayerTracert;
- import com.l2jserver.loginserver.gameserverpackets.ServerStatus;
- import com.l2jserver.loginserver.loginserverpackets.AuthResponse;
- +import com.l2jserver.loginserver.loginserverpackets.ChangePasswordResponse;
- import com.l2jserver.loginserver.loginserverpackets.InitLS;
- import com.l2jserver.loginserver.loginserverpackets.KickPlayer;
- import com.l2jserver.loginserver.loginserverpackets.LoginServerFail;
- @@ -166,6 +168,9 @@
- case 07:
- onReceivePlayerTracert(data);
- break;
- + case 0x0B:
- + new ChangePassword(data);
- + break;
- default:
- _log.warning("Unknown Opcode ("+Integer.toHexString(packetType).toUpperCase()+") from GameServer, closing connection.");
- forceClose(LoginServerFail.NOT_AUTHED);
- @@ -658,6 +663,20 @@
- }
- }
- + public void ChangePasswordResponse(byte successful, String characterName, String msgToSend)
- + {
- + ChangePasswordResponse cp = new ChangePasswordResponse(successful, characterName, msgToSend);
- + try
- + {
- + sendPacket(cp);
- + }
- + catch (IOException e)
- + {
- + // TODO Auto-generated catch block
- + e.printStackTrace();
- + }
- + }
- +
- /**
- * @param gameHost The gameHost to set.
- */
- Index: java/com/l2jserver/loginserver/gameserverpackets/ChangePassword.java
- ===================================================================
- --- java/com/l2jserver/loginserver/gameserverpackets/ChangePassword.java (revision 0)
- +++ java/com/l2jserver/loginserver/gameserverpackets/ChangePassword.java (working copy)
- @@ -0,0 +1,131 @@
- +/*
- + * 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 com.l2jserver.loginserver.gameserverpackets;
- +
- +import java.security.MessageDigest;
- +import java.sql.Connection;
- +import java.sql.PreparedStatement;
- +import java.sql.ResultSet;
- +import java.util.Collection;
- +import java.util.logging.Level;
- +import java.util.logging.Logger;
- +
- +import com.l2jserver.L2DatabaseFactory;
- +import com.l2jserver.loginserver.GameServerTable;
- +import com.l2jserver.loginserver.GameServerTable.GameServerInfo;
- +import com.l2jserver.loginserver.GameServerThread;
- +import com.l2jserver.Base64;
- +import com.l2jserver.util.network.BaseRecievePacket;
- +
- +/**
- + * @author Nik
- + */
- +public class ChangePassword extends BaseRecievePacket
- +{
- + protected static Logger _log = Logger.getLogger(ChangePassword.class.getName());
- + private static GameServerThread gst = null;
- +
- + public ChangePassword(byte[] decrypt)
- + {
- + super(decrypt);
- +
- + String accountName = readS();
- + String characterName = readS();
- + String curpass = readS();
- + String newpass = readS();
- +
- + // get the GameServerThread
- + Collection<GameServerInfo> serverList = GameServerTable.getInstance().getRegisteredGameServers().values();
- + for (GameServerInfo gsi : serverList)
- + {
- + if ((gsi.getGameServerThread() != null) && gsi.getGameServerThread().hasAccountOnGameServer(accountName))
- + {
- + gst = gsi.getGameServerThread();
- + }
- + }
- +
- + if (gst == null)
- + {
- + return;
- + }
- +
- + if ((curpass == null) || (newpass == null))
- + {
- + gst.ChangePasswordResponse((byte) 0, characterName, "Invalid password data! Try again.");
- + }
- + else
- + {
- + Connection con = null;
- + try
- + {
- + 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
- + con = L2DatabaseFactory.getInstance().getConnection();
- + PreparedStatement statement = con.prepareStatement("SELECT password FROM accounts WHERE login=?");
- + statement.setString(1, accountName);
- + 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, accountName);
- + passUpdated = ps.executeUpdate();
- + ps.close();
- +
- + _log.log(Level.INFO, "The password for account " + accountName + " has been changed from " + curpassEnc + " to " + Base64.encodeBytes(password));
- + if (passUpdated > 0)
- + {
- + gst.ChangePasswordResponse((byte) 1, characterName, "You have successfully changed your password!");
- + }
- + else
- + {
- + gst.ChangePasswordResponse((byte) 0, characterName, "The password change was unsuccessful!");
- + }
- + }
- + else
- + {
- + gst.ChangePasswordResponse((byte) 0, characterName, "The typed current password doesn't match with your current one.");
- + }
- + }
- + catch (Exception e)
- + {
- + _log.warning("Error while changing password for account " + accountName + " requested by player " + characterName + "! " + e);
- + }
- + finally
- + {
- + // close the database connection at the end
- + L2DatabaseFactory.close(con);
- + }
- + }
- + }
- +}
- \ No newline at end of file
- Index: java/com/l2jserver/loginserver/loginserverpackets/ChangePasswordResponse.java
- ===================================================================
- --- java/com/l2jserver/loginserver/loginserverpackets/ChangePasswordResponse.java (revision 0)
- +++ java/com/l2jserver/loginserver/loginserverpackets/ChangePasswordResponse.java (working copy)
- @@ -0,0 +1,37 @@
- +/*
- + * 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 com.l2jserver.loginserver.loginserverpackets;
- +
- +import com.l2jserver.util.network.BaseSendablePacket;
- +
- +/**
- + * @author Nik
- + */
- +public class ChangePasswordResponse extends BaseSendablePacket
- +{
- + public ChangePasswordResponse(byte successful, String characterName, String msgToSend)
- + {
- + writeC(0x06);
- + // writeC(successful); //0 false, 1 true
- + writeS(characterName);
- + writeS(msgToSend);
- + }
- +
- + @Override
- + public byte[] getContent()
- + {
- + return getBytes();
- + }
- +}
- \ No newline at end of file
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement