62 lines
1.7 KiB
Dart
62 lines
1.7 KiB
Dart
import 'dart:io';
|
|
|
|
import 'package:bugvault/dart/bugvault.dart';
|
|
import 'package:bugvault/server/packets.dart';
|
|
import 'package:bugvault/users/User.dart';
|
|
import 'package:libac_dart/nbt/NbtIo.dart';
|
|
import 'package:libac_dart/nbt/NbtUtils.dart';
|
|
import 'package:libac_dart/nbt/impl/CompoundTag.dart';
|
|
import 'package:libac_dart/nbt/impl/ListTag.dart';
|
|
import 'package:libac_dart/packets/packets.dart';
|
|
|
|
class BugVaultServer {
|
|
static int get g_iPortNumber => ServerCommunicatorConstants.port;
|
|
static bool g_bAllowAnonymousLogin = true;
|
|
static List<DBUser> UserDB = List.empty();
|
|
|
|
static Future<void> InstantiateSettings(CompoundTag ct) async {
|
|
if (ct.containsKey("anonymous")) {
|
|
g_bAllowAnonymousLogin = NbtUtils.readBoolean(ct, "anonymous");
|
|
}
|
|
|
|
await _loadUserDB();
|
|
}
|
|
|
|
static Future<void> _loadUserDB() async {
|
|
File users = File("users.dat");
|
|
if (await users.exists()) {
|
|
CompoundTag ct = await NbtIo.read("users.dat") as CompoundTag;
|
|
ListTag userList = ct.get("users")! as ListTag;
|
|
for (var tag in userList.value) {
|
|
CompoundTag userEntry = tag.asCompoundTag();
|
|
UserDB.add(DBUser.load(serialized: userEntry));
|
|
}
|
|
}
|
|
}
|
|
|
|
static Future<void> RegisterPacketHandlers() async {
|
|
PacketRegistry registry = PacketRegistry();
|
|
BVSPacketImpl.Register(registry);
|
|
}
|
|
|
|
static DBUser? TryGetUser(String name) {
|
|
for (var entry in UserDB) {
|
|
if (entry.sName == name) {
|
|
return entry;
|
|
}
|
|
}
|
|
|
|
return null;
|
|
}
|
|
}
|
|
|
|
class BVSPacketImpl {
|
|
static Future<void> Register(PacketRegistry registry) async {
|
|
registry.register(C2SPacketLogin(), () {
|
|
return C2SPacketLogin();
|
|
});
|
|
registry.register(S2CLoginReply(), () {
|
|
return S2CLoginReply();
|
|
});
|
|
}
|
|
}
|