Begin to add a new ACL system
This commit is contained in:
parent
03fef9863f
commit
f7c71230f0
9 changed files with 293 additions and 44 deletions
|
@ -15,6 +15,7 @@ import 'package:libac_dart/utils/uuid/NbtUUID.dart';
|
|||
import 'package:libac_dart/utils/uuid/UUID.dart';
|
||||
import 'package:servermanager/statemachine.dart';
|
||||
import 'package:servermanager/structs/SessionData.dart';
|
||||
import 'package:servermanager/structs/credentials.dart';
|
||||
import 'package:servermanager/structs/discordHookHelper.dart';
|
||||
import 'package:servermanager/structs/settings.dart';
|
||||
|
||||
|
@ -104,17 +105,40 @@ class C2SLoginPacket implements IPacket {
|
|||
|
||||
// Attempt to log in.
|
||||
Settings settings = Settings();
|
||||
if (settings.serverLoginCreds.username == username &&
|
||||
Hashing.sha256Hash(settings.serverLoginCreds.password) == password) {
|
||||
|
||||
if (settings.superuser!.login(username, password)) {
|
||||
settings.remoteLoginToken = UUID.generate(4);
|
||||
loginReply.valid = true;
|
||||
loginReply.token = settings.remoteLoginToken;
|
||||
|
||||
settings.superuser!.sendDiscordActionLog("Login Success");
|
||||
|
||||
settings.loggedInUser = settings.superuser;
|
||||
} else {
|
||||
//print(
|
||||
// "Login failure\n${settings.serverLoginCreds.username}:${username}\n${Hashing.sha256Hash(settings.serverLoginCreds.password)}:${password}");
|
||||
loginReply.valid = false;
|
||||
}
|
||||
|
||||
if (!loginReply.valid && settings.superuser!.name != username) {
|
||||
// Check for a lower level user
|
||||
if (settings.inst!.admins.any((T) => T.name == username)) {
|
||||
User theUser =
|
||||
settings.inst!.admins.firstWhere((T) => T.name == username);
|
||||
if (theUser.login(username, password)) {
|
||||
settings.remoteLoginToken = UUID.generate(4);
|
||||
loginReply.valid = true;
|
||||
loginReply.token = settings.remoteLoginToken;
|
||||
|
||||
theUser.sendDiscordActionLog("Login Success");
|
||||
|
||||
settings.loggedInUser = theUser;
|
||||
} else {
|
||||
loginReply.valid = false;
|
||||
|
||||
theUser.sendDiscordActionLog("Login Failed");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
response.contents = loginReply.encodeTag().asCompoundTag();
|
||||
return PacketResponse(replyDataTag: response.encodeTag().asCompoundTag());
|
||||
}
|
||||
|
@ -414,6 +438,9 @@ class C2SRequestCreateBackup implements IPacket {
|
|||
PathHelper pth = PathHelper(pth: settings.getWorldSnapshotFolder())
|
||||
.resolve(destinationFile);
|
||||
world.copy(pth.build());
|
||||
|
||||
settings.loggedInUser!
|
||||
.sendDiscordActionLog("Created a new backup named ${fileName}");
|
||||
}
|
||||
|
||||
return PacketResponse.nil;
|
||||
|
@ -473,7 +500,8 @@ class C2SRequestSnapshotList implements IPacket {
|
|||
// add file name without db extension to the list
|
||||
|
||||
String trimmedFileName = str.trim().substring(0, str.trim().length - 3);
|
||||
strippedFiles.add(trimmedFileName);
|
||||
strippedFiles
|
||||
.add(trimmedFileName.substring(trimmedFileName.lastIndexOf("/")));
|
||||
} else {
|
||||
strippedFiles.add(str);
|
||||
}
|
||||
|
@ -606,6 +634,9 @@ class C2SRequestSnapshotDeletion implements IPacket {
|
|||
.resolve(correctedName);
|
||||
ph.deleteFile();
|
||||
|
||||
settings.loggedInUser!.sendDiscordActionLog(
|
||||
"Requested snapshot deletion of backup named: ${snapshotName}");
|
||||
|
||||
return PacketResponse.nil;
|
||||
}
|
||||
|
||||
|
@ -658,12 +689,17 @@ class C2SRequestWorldRestore implements IPacket {
|
|||
|
||||
@override
|
||||
Future<PacketResponse> handleServerPacket() async {
|
||||
Settings settings = Settings();
|
||||
|
||||
SessionData.isWorldRestore = true;
|
||||
SessionData.snapshotToRestore = snapshot;
|
||||
SessionData.shutdownMessage = "A backup restore has been requested";
|
||||
SessionData.timer.apply(30);
|
||||
SessionData.CURRENT_INTERVAL = WarnIntervals.NONE;
|
||||
|
||||
settings.loggedInUser!.sendDiscordActionLog(
|
||||
"Requested world restore, and initiated a immediate restart. World restored: ${snapshot}");
|
||||
|
||||
return PacketResponse.nil;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue