Many fixes to admin/trace/UUID system

This commit is contained in:
Anuken
2018-06-13 17:52:31 -04:00
parent c077f6e1e8
commit d0302cdbf3
14 changed files with 155 additions and 91 deletions

View File

@@ -270,13 +270,13 @@ public class Administration {
}
/**Makes a player an admin. Returns whether this player was already an admin.*/
public boolean adminPlayer(String id, String ip){
public boolean adminPlayer(String id, String usid){
PlayerInfo info = getCreateInfo(id);
if(info.admin)
return false;
info.validAdminIP = ip;
info.adminUsid = usid;
info.admin = true;
save();
@@ -304,9 +304,9 @@ public class Administration {
return getCreateInfo(uuid).banned;
}
public boolean isAdmin(String id, String ip){
public boolean isAdmin(String id, String usip){
PlayerInfo info = getCreateInfo(id);
return info.admin && ip.equals(info.validAdminIP);
return info.admin && usip.equals(info.adminUsid);
}
public Array<PlayerInfo> findByName(String name, boolean last){
@@ -375,9 +375,9 @@ public class Administration {
public static class PlayerInfo{
public String id;
public String lastName = "<unknown>", lastIP = "<unknown>";
public String validAdminIP;
public Array<String> ips = new Array<>();
public Array<String> names = new Array<>();
public String adminUsid;
public int timesKicked;
public int timesJoined;
public int totalBlockPlaced;

View File

@@ -1,5 +1,6 @@
package io.anuke.mindustry.net;
import com.badlogic.gdx.utils.Base64Coder;
import com.badlogic.gdx.utils.TimeUtils;
import io.anuke.mindustry.Vars;
import io.anuke.mindustry.entities.Player;
@@ -30,29 +31,30 @@ public class Packets {
public static class ConnectPacket implements Packet{
public int version;
public int players;
public String name;
public String name, uuid, usid;
public boolean mobile;
public int color;
public byte[] uuid;
@Override
public void write(ByteBuffer buffer) {
buffer.putInt(Version.build);
IOUtils.writeString(buffer, name);
IOUtils.writeString(buffer, usid);
buffer.put(mobile ? (byte)1 : 0);
buffer.putInt(color);
buffer.put(uuid);
buffer.put(Base64Coder.decode(uuid));
}
@Override
public void read(ByteBuffer buffer) {
version = buffer.getInt();
name = IOUtils.readString(buffer);
usid = IOUtils.readString(buffer);
mobile = buffer.get() == 1;
color = buffer.getInt();
uuid = new byte[8];
buffer.get(uuid);
byte[] idbytes = new byte[8];
buffer.get(idbytes);
uuid = new String(Base64Coder.encode(idbytes));
}
}