Add remote kicking support to the MS
This commit is contained in:
@@ -63,3 +63,4 @@
|
|||||||
- Quest point cape/hood no longer unequip on login if wearing QP hood
|
- Quest point cape/hood no longer unequip on login if wearing QP hood
|
||||||
- Random Event Genie lamps now scale exp correctly
|
- Random Event Genie lamps now scale exp correctly
|
||||||
- Void mace now consumes runes correctly
|
- Void mace now consumes runes correctly
|
||||||
|
- Add remote kicking support to the Management Server
|
||||||
@@ -152,6 +152,7 @@ public class IoSession {
|
|||||||
* Handles the writing of all buffers in the queue.
|
* Handles the writing of all buffers in the queue.
|
||||||
*/
|
*/
|
||||||
public void write() {
|
public void write() {
|
||||||
|
|
||||||
if (!key.isValid()) {
|
if (!key.isValid()) {
|
||||||
disconnect();
|
disconnect();
|
||||||
return;
|
return;
|
||||||
@@ -169,6 +170,7 @@ public class IoSession {
|
|||||||
writingQueue.remove(0);
|
writingQueue.remove(0);
|
||||||
}
|
}
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
disconnect();
|
disconnect();
|
||||||
} finally {
|
} finally {
|
||||||
writingLock.unlock();
|
writingLock.unlock();
|
||||||
|
|||||||
@@ -1,10 +1,14 @@
|
|||||||
package ms.net.event;
|
package ms.net.event;
|
||||||
|
|
||||||
import java.nio.ByteBuffer;
|
import java.nio.ByteBuffer;
|
||||||
|
import java.util.Locale;
|
||||||
|
|
||||||
|
import ms.Management;
|
||||||
import ms.net.IoReadEvent;
|
import ms.net.IoReadEvent;
|
||||||
import ms.net.IoSession;
|
import ms.net.IoSession;
|
||||||
|
import ms.net.packet.IoBuffer;
|
||||||
import ms.system.util.ManagementConstants;
|
import ms.system.util.ManagementConstants;
|
||||||
|
import ms.world.PlayerSession;
|
||||||
import ms.world.WorldDatabase;
|
import ms.world.WorldDatabase;
|
||||||
import ms.system.util.ByteBufferUtils;
|
import ms.system.util.ByteBufferUtils;
|
||||||
|
|
||||||
@@ -40,6 +44,35 @@ public final class HSReadEvent extends IoReadEvent {
|
|||||||
int updateStamp = buffer.getInt();
|
int updateStamp = buffer.getInt();
|
||||||
WorldDatabase.sendUpdate(session, updateStamp);
|
WorldDatabase.sendUpdate(session, updateStamp);
|
||||||
break;
|
break;
|
||||||
|
case 35:
|
||||||
|
IoBuffer buf = new IoBuffer();
|
||||||
|
String username = ByteBufferUtils.getString(buffer).toLowerCase();
|
||||||
|
password = ByteBufferUtils.getString(buffer);
|
||||||
|
if (!password.equals(ManagementConstants.getSECRET_KEY())){
|
||||||
|
System.out.println("Password mismatch (attempt=" + password + ")!");
|
||||||
|
buf.put(1);
|
||||||
|
ByteBuffer buff = buf.toByteBuffer();
|
||||||
|
buff.flip();
|
||||||
|
session.queue(buff);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
PlayerSession player = WorldDatabase.getPlayer(username);
|
||||||
|
if (player == null) {
|
||||||
|
System.out.println("Player " + username + " was not registered!");
|
||||||
|
buf.put(2);
|
||||||
|
ByteBuffer buff = buf.toByteBuffer();
|
||||||
|
buff.flip();
|
||||||
|
session.queue(buff);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
buf.put(0);
|
||||||
|
ByteBuffer buff = buf.toByteBuffer();
|
||||||
|
buff.flip();
|
||||||
|
session.queue(buff);
|
||||||
|
player.getWorld().getPlayers().remove(username);
|
||||||
|
player.setWorldId(0);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
System.err.println("Unhandled handshake opcode: " + opcode + ".");
|
System.err.println("Unhandled handshake opcode: " + opcode + ".");
|
||||||
session.disconnect();
|
session.disconnect();
|
||||||
|
|||||||
Reference in New Issue
Block a user