mirror of
https://github.com/Auties00/Reboot-Launcher.git
synced 2026-01-13 19:22:22 +01:00
checkpoint
This commit is contained in:
@@ -328,6 +328,6 @@ File _getProfileFile(Context context) {
|
||||
_profiles.createSync(recursive: true);
|
||||
}
|
||||
|
||||
return File("${_profiles.path}\\ClientProfile-${parseSeasonBuild(context)}.json");
|
||||
return File("${_profiles.path}\\ClientProfile.json");
|
||||
}
|
||||
|
||||
|
||||
@@ -4,28 +4,19 @@ import 'dart:io';
|
||||
import 'package:jaguar/jaguar.dart';
|
||||
|
||||
class EmbeddedErrorWriter extends ErrorWriter {
|
||||
static const String _errorName = "errors.com.lawinserver.common.not_found";
|
||||
static const String _errorName404 = "errors.com.lawinserver.common.not_found";
|
||||
static const String _errorName500 = "errors.com.lawinserver.common.error";
|
||||
static const String _errorCode = "1004";
|
||||
|
||||
@override
|
||||
FutureOr<Response> make404(Context ctx) {
|
||||
stdout.writeln("Unknown path: ${ctx.uri} with method ${ctx.method}");
|
||||
ctx.response.headers.set('X-Epic-Error-Name', _errorName);
|
||||
ctx.response.headers.set('X-Epic-Error-Name', _errorName404);
|
||||
ctx.response.headers.set('X-Epic-Error-Code', _errorCode);
|
||||
return Response.json(
|
||||
statusCode: 204,
|
||||
{}
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
FutureOr<Response> make500(Context ctx, Object error, [StackTrace? stack]) {
|
||||
ctx.response.headers.set('X-Epic-Error-Name', _errorName);
|
||||
ctx.response.headers.set('X-Epic-Error-Code', _errorCode);
|
||||
return Response(
|
||||
statusCode: 500,
|
||||
body: {
|
||||
"errorCode": _errorName,
|
||||
{
|
||||
"errorCode": _errorName404,
|
||||
"errorMessage": "Sorry the resource you were trying to find could not be found",
|
||||
"numericErrorCode": _errorCode,
|
||||
"originatingService": "any",
|
||||
@@ -33,4 +24,20 @@ class EmbeddedErrorWriter extends ErrorWriter {
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
FutureOr<Response> make500(Context ctx, Object error, [StackTrace? stack]) {
|
||||
ctx.response.headers.set('X-Epic-Error-Name', _errorName500);
|
||||
ctx.response.headers.set('X-Epic-Error-Code', _errorCode);
|
||||
return Response.json(
|
||||
statusCode: 500,
|
||||
{
|
||||
"errorCode": _errorName500,
|
||||
"errorMessage": "Sorry the resource you were trying to find threw an error",
|
||||
"numericErrorCode": _errorCode,
|
||||
"originatingService": "any",
|
||||
"intent": "prod"
|
||||
}
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -14,24 +14,11 @@ import "error.dart";
|
||||
import "lightswitch.dart";
|
||||
import 'matchmaking.dart';
|
||||
|
||||
bool _loggingCapabilities = false;
|
||||
|
||||
Future<Jaguar> startEmbeddedServer(String Function() ipQuery) async {
|
||||
var server = _createServer(ipQuery);
|
||||
await server.serve(logRequests: true);
|
||||
return server;
|
||||
}
|
||||
|
||||
Future<Jaguar> startEmbeddedMatchmaker() async {
|
||||
var server = _createMatchmaker();
|
||||
server.serve(logRequests: true);
|
||||
return server;
|
||||
}
|
||||
|
||||
Jaguar _createServer(String Function() ipQuery) {
|
||||
var server = Jaguar(address: "127.0.0.1", port: 3551, errorWriter: EmbeddedErrorWriter());
|
||||
var server = Jaguar(port: 3551, errorWriter: EmbeddedErrorWriter());
|
||||
|
||||
// Version
|
||||
server.getJson("unknown", (context) => Response(body: "lawinserver"));
|
||||
server.getJson("/fortnite/api/version", getVersion);
|
||||
server.getJson("/fortnite/api/v2/versioncheck/*", hasUpdate);
|
||||
server.getJson("/fortnite/api/v2/versioncheck*", hasUpdate);
|
||||
@@ -105,23 +92,7 @@ Jaguar _createServer(String Function() ipQuery) {
|
||||
server.getJson("/fortnite/api/game/v2/privacy/account/:accountId", getPrivacy);
|
||||
server.postJson("/fortnite/api/game/v2/privacy/account/:accountId", postPrivacy);
|
||||
|
||||
return server;
|
||||
}
|
||||
Jaguar _createMatchmaker(){
|
||||
var server = Jaguar(address: "127.0.0.1", port: 8080);
|
||||
WebSocket? ws;
|
||||
server.wsStream(
|
||||
"/",
|
||||
(_, input) => ws = input,
|
||||
after: [(_) => queueMatchmaking(ws!)]
|
||||
);
|
||||
return _addLoggingCapabilities(server);
|
||||
}
|
||||
|
||||
Jaguar _addLoggingCapabilities(Jaguar server) {
|
||||
if(_loggingCapabilities){
|
||||
return server;
|
||||
}
|
||||
await server.serve(logRequests: true);
|
||||
|
||||
server.log.onRecord.listen((line) {
|
||||
stdout.writeln(line);
|
||||
@@ -133,6 +104,17 @@ Jaguar _addLoggingCapabilities(Jaguar server) {
|
||||
serverLogFile.writeAsString("An error occurred at ${ctx.uri}: \n$exception\n$trace\n", mode: FileMode.append);
|
||||
});
|
||||
|
||||
_loggingCapabilities = true;
|
||||
return server;
|
||||
}
|
||||
|
||||
Future<Jaguar> startEmbeddedMatchmaker() async {
|
||||
var server = Jaguar(port: 8080);
|
||||
WebSocket? ws;
|
||||
server.wsStream(
|
||||
"/",
|
||||
(_, input) => ws = input,
|
||||
after: [(_) => queueMatchmaking(ws!)]
|
||||
);
|
||||
await server.serve(logRequests: true);
|
||||
return server;
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
import 'dart:convert';
|
||||
import 'package:path/path.dart' as path;
|
||||
import 'dart:io';
|
||||
|
||||
import 'package:jaguar/jaguar.dart';
|
||||
@@ -11,23 +11,16 @@ import '../util/os.dart';
|
||||
|
||||
final Directory _settings = Directory("${Platform.environment["UserProfile"]}\\.reboot_launcher\\backend\\settings");
|
||||
|
||||
const String _engineName = "DefaultEngine.ini";
|
||||
final String _engineIni = loadEmbedded("config/$_engineName").readAsStringSync();
|
||||
List getStorageSettings(Context context) =>
|
||||
loadEmbeddedDirectory("config")
|
||||
.listSync()
|
||||
.map((e) => File(e.path))
|
||||
.map(_getStorageSetting)
|
||||
.toList();
|
||||
|
||||
const String _gameName = "DefaultGame.ini";
|
||||
final String _gameIni = loadEmbedded("config/$_gameName").readAsStringSync();
|
||||
|
||||
const String _runtimeName = "DefaultRuntimeOptions.ini";
|
||||
final String _runtimeIni = loadEmbedded("config/$_runtimeName").readAsStringSync();
|
||||
|
||||
List<Map<String, Object>> getStorageSettings(Context context) => [
|
||||
_getStorageSetting(_engineName, _engineIni),
|
||||
_getStorageSetting(_gameName, _gameIni),
|
||||
_getStorageSetting(_runtimeName, _runtimeIni)
|
||||
];
|
||||
|
||||
Map<String, Object> _getStorageSetting(String name, String source){
|
||||
var bytes = utf8.encode(source);
|
||||
Map<String, Object> _getStorageSetting(File file){
|
||||
var name = path.basename(file.path);
|
||||
var bytes = file.readAsBytesSync();
|
||||
return {
|
||||
"uniqueFilename": name,
|
||||
"filename": name,
|
||||
@@ -43,16 +36,8 @@ Map<String, Object> _getStorageSetting(String name, String source){
|
||||
}
|
||||
|
||||
Response getStorageSetting(Context context) {
|
||||
switch(context.pathParams.get("file")){
|
||||
case _engineName:
|
||||
return Response(body: _engineIni);
|
||||
case _gameName:
|
||||
return Response(body: _gameIni);
|
||||
case _runtimeName:
|
||||
return Response(body: _runtimeIni);
|
||||
default:
|
||||
return Response();
|
||||
}
|
||||
var file = loadEmbedded("config\\${context.pathParams.get("file")}");
|
||||
return Response(body: file.readAsStringSync());
|
||||
}
|
||||
|
||||
Response getStorageFile(Context context) {
|
||||
@@ -107,5 +92,5 @@ File _getSettingsFile(Context context) {
|
||||
_settings.createSync(recursive: true);
|
||||
}
|
||||
|
||||
return File("${_settings.path}\\ClientSettings-${parseSeasonBuild(context)}.Sav");
|
||||
return File("${_settings.path}\\ClientSettings.Sav");
|
||||
}
|
||||
Reference in New Issue
Block a user