Start implementing server-side functionality.
This commit is contained in:
parent
2b6a265b74
commit
6fadb92a26
8 changed files with 147 additions and 5 deletions
|
@ -0,0 +1,93 @@
|
|||
import 'dart:convert';
|
||||
|
||||
import 'package:libac_flutter/nbt/NbtUtils.dart';
|
||||
import 'package:libac_flutter/nbt/Tag.dart';
|
||||
import 'package:libac_flutter/nbt/impl/CompoundTag.dart';
|
||||
import 'package:libac_flutter/nbt/impl/StringTag.dart';
|
||||
import 'package:libac_flutter/packets/packets.dart';
|
||||
import 'package:libac_flutter/utils/uuid/NbtUUID.dart';
|
||||
import 'package:libac_flutter/utils/uuid/UUID.dart';
|
||||
import 'package:servermanager/settings.dart';
|
||||
|
||||
class ClientPackets {
|
||||
static void register() {
|
||||
PacketRegistry reg = PacketRegistry();
|
||||
reg.register(C2SLoginPacket(), () {
|
||||
return C2SLoginPacket();
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
class C2SLoginPacket implements IPacket {
|
||||
String username = "";
|
||||
String password = "";
|
||||
|
||||
@override
|
||||
void decodeJson(String params) {
|
||||
fromJson(json.decode(params));
|
||||
}
|
||||
|
||||
@override
|
||||
void decodeTag(Tag tag) {
|
||||
CompoundTag ct = tag.asCompoundTag();
|
||||
username = ct.get("username")!.asString();
|
||||
password = ct.get("password")!.asString();
|
||||
}
|
||||
|
||||
@override
|
||||
NetworkDirection direction() {
|
||||
return NetworkDirection.ClientToServer;
|
||||
}
|
||||
|
||||
@override
|
||||
String encodeJson() {
|
||||
return json.encode(toJson());
|
||||
}
|
||||
|
||||
@override
|
||||
Tag encodeTag() {
|
||||
CompoundTag tag = CompoundTag();
|
||||
tag.put("username", StringTag.valueOf(username));
|
||||
tag.put("password", StringTag.valueOf(password));
|
||||
|
||||
return tag;
|
||||
}
|
||||
|
||||
@override
|
||||
void fromJson(Map<String, dynamic> js) {
|
||||
username = js['username'] as String;
|
||||
password = js['password'] as String;
|
||||
}
|
||||
|
||||
@override
|
||||
String getChannelID() {
|
||||
return "Login";
|
||||
}
|
||||
|
||||
@override
|
||||
Future<PacketResponse> handleServerPacket() async {
|
||||
S2CResponse response = S2CResponse();
|
||||
|
||||
// Attempt to log in.
|
||||
Settings settings = Settings();
|
||||
if (settings.serverLoginCreds.username == username &&
|
||||
settings.serverLoginCreds.password == password) {
|
||||
NbtUtils.writeBoolean(response.contents, "valid", true);
|
||||
settings.remoteLoginToken = UUID.generate(4);
|
||||
NbtUtils.writeUUID(response.contents, "token",
|
||||
NbtUUID.fromUUID(settings.remoteLoginToken));
|
||||
} else {
|
||||
NbtUtils.writeBoolean(response.contents, "valid", false);
|
||||
}
|
||||
|
||||
return PacketResponse(replyDataTag: response.encodeTag().asCompoundTag());
|
||||
}
|
||||
|
||||
@override
|
||||
Map<String, dynamic> toJson() {
|
||||
return {"username": username, "password": password};
|
||||
}
|
||||
|
||||
@override
|
||||
Future<void> handleClientPacket() async {}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue