From 5a492512bc10f4e37275bf2400e8268618a7bb85 Mon Sep 17 00:00:00 2001 From: Timerix22 Date: Fri, 5 Jan 2024 00:47:07 +0600 Subject: [PATCH] DTLib nuget packages, dotnet8 --- .../Launcher.LaunchGame.cs | 126 +----------------- minecraft-launcher-client/Launcher.cs | 68 +++++----- minecraft-launcher-client/LauncherConfig.cs | 2 +- .../launcher-client.csproj | 12 +- minecraft-launcher-client/launcher.dtsod | 2 +- minecraft-launcher-server/Server.cs | 73 +++++----- .../launcher-server.csproj | 12 +- minecraft-launcher.sln | 18 --- 8 files changed, 85 insertions(+), 228 deletions(-) diff --git a/minecraft-launcher-client/Launcher.LaunchGame.cs b/minecraft-launcher-client/Launcher.LaunchGame.cs index 993f4d9..96b71ab 100644 --- a/minecraft-launcher-client/Launcher.LaunchGame.cs +++ b/minecraft-launcher-client/Launcher.LaunchGame.cs @@ -4,7 +4,7 @@ namespace launcher_client; internal static partial class Launcher { - private static void LaunchGame_1_12(string javapath, string username, string uuid, + private static void LaunchGame(string javapath, string username, string uuid, int maxmemory, int width, int height) => gameProcess = Process.Start($"{javapath}\\javaw.exe ", "-Djava.net.preferIPv4Stack=true \"-Dos.name=Windows 10\" -Dos.version=10.0 " + @@ -66,128 +66,4 @@ internal static partial class Launcher $"net.minecraft.launchwrapper.Launch --username {username} --version 1.12.2-forge-14.23.5.2855 " + $"--uuid {uuid} --accessToken null --userType mojang --tweakClass net.minecraftforge.fml.common.launcher.FMLTweaker " + $"--versionType Forge --width {width} --height {height}"); - - private static void LaunchGame(string javapath, string username, string uuid, - int maxmemory, int width, int height) => - gameProcess = Process.Start($"{javapath}\\javaw.exe", - $"-Xms2048M -Xmx{maxmemory}M " + - "-XX:+UnlockExperimentalVMOptions -XX:+UseG1GC -XX:G1NewSizePercent=20 -XX:G1ReservePercent=20 " + - "-XX:MaxGCPauseMillis=50 -XX:G1HeapRegionSize=32M -XX:+DisableExplicitGC -XX:+AlwaysPreTouch " + - "-XX:+ParallelRefProcEnabled -Xms2048M -Dfile.encoding=UTF-8 " + - "-XX:HeapDumpPath=MojangTricksIntelDriversForPerformance_javaw.exe_minecraft.exe.heapdump " + - "-Xss1M -Djava.library.path=.\\versions\\1.19.2-forge-43.1.30\\natives " + - "-Dminecraft.launcher.brand=java-minecraft-launcher -Dminecraft.launcher.version=1.6.84-j " + - "-cp " + - ".\\libraries\\cpw\\mods\\securejarhandler\\2.1.4\\securejarhandler-2.1.4.jar;" + - ".\\libraries\\org\\ow2\\asm\\asm\\9.3\\asm-9.3.jar;" + - ".\\libraries\\org\\ow2\\asm\\asm-commons\\9.3\\asm-commons-9.3.jar;" + - ".\\libraries\\org\\ow2\\asm\\asm-tree\\9.3\\asm-tree-9.3.jar;" + - ".\\libraries\\org\\ow2\\asm\\asm-util\\9.3\\asm-util-9.3.jar;" + - ".\\libraries\\org\\ow2\\asm\\asm-analysis\\9.3\\asm-analysis-9.3.jar;" + - ".\\libraries\\net\\minecraftforge\\accesstransformers\\8.0.4\\accesstransformers-8.0.4.jar;" + - ".\\libraries\\org\\antlr\\antlr4-runtime\\4.9.1\\antlr4-runtime-4.9.1.jar;" + - ".\\libraries\\net\\minecraftforge\\eventbus\\6.0.3\\eventbus-6.0.3.jar;" + - ".\\libraries\\net\\minecraftforge\\forgespi\\6.0.0\\forgespi-6.0.0.jar;" + - ".\\libraries\\net\\minecraftforge\\coremods\\5.0.1\\coremods-5.0.1.jar;" + - ".\\libraries\\cpw\\mods\\modlauncher\\10.0.8\\modlauncher-10.0.8.jar;" + - ".\\libraries\\net\\minecraftforge\\unsafe\\0.2.0\\unsafe-0.2.0.jar;" + - ".\\libraries\\com\\electronwill\\night-config\\core\\3.6.4\\core-3.6.4.jar;" + - ".\\libraries\\com\\electronwill\\night-config\\toml\\3.6.4\\toml-3.6.4.jar;" + - ".\\libraries\\org\\apache\\maven\\maven-artifact\\3.8.5\\maven-artifact-3.8.5.jar;" + - ".\\libraries\\net\\jodah\\typetools\\0.8.3\\typetools-0.8.3.jar;" + - ".\\libraries\\net\\minecrell\\terminalconsoleappender\\1.2.0\\terminalconsoleappender-1.2.0.jar;" + - ".\\libraries\\org\\jline\\jline-reader\\3.12.1\\jline-reader-3.12.1.jar;" + - ".\\libraries\\org\\jline\\jline-terminal\\3.12.1\\jline-terminal-3.12.1.jar;" + - ".\\libraries\\org\\spongepowered\\mixin\\0.8.5\\mixin-0.8.5.jar;" + - ".\\libraries\\org\\openjdk\\nashorn\\nashorn-core\\15.3\\nashorn-core-15.3.jar;" + - ".\\libraries\\net\\minecraftforge\\JarJarSelector\\0.3.16\\JarJarSelector-0.3.16.jar;" + - ".\\libraries\\net\\minecraftforge\\JarJarMetadata\\0.3.16\\JarJarMetadata-0.3.16.jar;" + - ".\\libraries\\cpw\\mods\\bootstraplauncher\\1.1.2\\bootstraplauncher-1.1.2.jar;" + - ".\\libraries\\net\\minecraftforge\\JarJarFileSystems\\0.3.16\\JarJarFileSystems-0.3.16.jar;" + - ".\\libraries\\net\\minecraftforge\\fmlloader\\1.19.2-43.1.30\\fmlloader-1.19.2-43.1.30.jar;" + - ".\\libraries\\com\\mojang\\logging\\1.0.0\\logging-1.0.0.jar;" + - ".\\libraries\\com\\mojang\\blocklist\\1.0.10\\blocklist-1.0.10.jar;" + - ".\\libraries\\ru\\tln4\\empty\\0.1\\empty-0.1.jar;" + - ".\\libraries\\com\\github\\oshi\\oshi-core\\5.8.5\\oshi-core-5.8.5.jar;" + - ".\\libraries\\net\\java\\dev\\jna\\jna\\5.10.0\\jna-5.10.0.jar;" + - ".\\libraries\\net\\java\\dev\\jna\\jna-platform\\5.10.0\\jna-platform-5.10.0.jar;" + - ".\\libraries\\org\\slf4j\\slf4j-api\\1.8.0-beta4\\slf4j-api-1.8.0-beta4.jar;" + - ".\\libraries\\org\\apache\\logging\\log4j\\log4j-slf4j18-impl\\2.17.0\\log4j-slf4j18-impl-2.17.0.jar;" + - ".\\libraries\\com\\ibm\\icu\\icu4j\\70.1\\icu4j-70.1.jar;" + - ".\\libraries\\com\\mojang\\javabridge\\1.2.24\\javabridge-1.2.24.jar;" + - ".\\libraries\\net\\sf\\jopt-simple\\jopt-simple\\5.0.4\\jopt-simple-5.0.4.jar;" + - ".\\libraries\\io\\netty\\netty-common\\4.1.77.Final\\netty-common-4.1.77.Final.jar;" + - ".\\libraries\\io\\netty\\netty-buffer\\4.1.77.Final\\netty-buffer-4.1.77.Final.jar;" + - ".\\libraries\\io\\netty\\netty-codec\\4.1.77.Final\\netty-codec-4.1.77.Final.jar;" + - ".\\libraries\\io\\netty\\netty-handler\\4.1.77.Final\\netty-handler-4.1.77.Final.jar;" + - ".\\libraries\\io\\netty\\netty-resolver\\4.1.77.Final\\netty-resolver-4.1.77.Final.jar;" + - ".\\libraries\\io\\netty\\netty-transport\\4.1.77.Final\\netty-transport-4.1.77.Final.jar;" + - ".\\libraries\\io\\netty\\netty-transport-native-unix-common\\4.1.77.Final\\netty-transport-native-unix-common-4.1.77.Final.jar;" + - ".\\libraries\\io\\netty\\netty-transport-classes-epoll\\4.1.77.Final\\netty-transport-classes-epoll-4.1.77.Final.jar;" + - ".\\libraries\\com\\google\\guava\\failureaccess\\1.0.1\\failureaccess-1.0.1.jar;" + - ".\\libraries\\com\\google\\guava\\guava\\31.0.1-jre\\guava-31.0.1-jre.jar;" + - ".\\libraries\\org\\apache\\commons\\commons-lang3\\3.12.0\\commons-lang3-3.12.0.jar;" + - ".\\libraries\\commons-io\\commons-io\\2.11.0\\commons-io-2.11.0.jar;" + - ".\\libraries\\commons-codec\\commons-codec\\1.15\\commons-codec-1.15.jar;" + - ".\\libraries\\com\\mojang\\brigadier\\1.0.18\\brigadier-1.0.18.jar;" + - ".\\libraries\\com\\mojang\\datafixerupper\\5.0.28\\datafixerupper-5.0.28.jar;" + - ".\\libraries\\com\\google\\code\\gson\\gson\\2.8.9\\gson-2.8.9.jar;" + - ".\\libraries\\by\\ely\\authlib\\3.11.49.0\\authlib-3.11.49.0.jar;" + - ".\\libraries\\org\\apache\\commons\\commons-compress\\1.21\\commons-compress-1.21.jar;" + - ".\\libraries\\org\\apache\\httpcomponents\\httpclient\\4.5.13\\httpclient-4.5.13.jar;" + - ".\\libraries\\commons-logging\\commons-logging\\1.2\\commons-logging-1.2.jar;" + - ".\\libraries\\org\\apache\\httpcomponents\\httpcore\\4.4.14\\httpcore-4.4.14.jar;" + - ".\\libraries\\it\\unimi\\dsi\\fastutil\\8.5.6\\fastutil-8.5.6.jar;" + - ".\\libraries\\org\\apache\\logging\\log4j\\log4j-api\\2.17.0\\log4j-api-2.17.0.jar;" + - ".\\libraries\\org\\apache\\logging\\log4j\\log4j-core\\2.17.0\\log4j-core-2.17.0.jar;" + - ".\\libraries\\org\\lwjgl\\lwjgl\\3.3.1\\lwjgl-3.3.1.jar;" + - ".\\libraries\\org\\lwjgl\\lwjgl\\3.3.1\\lwjgl-3.3.1-natives-windows.jar;" + - ".\\libraries\\org\\lwjgl\\lwjgl\\3.3.1\\lwjgl-3.3.1-natives-windows-x86.jar;" + - ".\\libraries\\org\\lwjgl\\lwjgl-jemalloc\\3.3.1\\lwjgl-jemalloc-3.3.1.jar;" + - ".\\libraries\\org\\lwjgl\\lwjgl-jemalloc\\3.3.1\\lwjgl-jemalloc-3.3.1-natives-windows.jar;" + - ".\\libraries\\org\\lwjgl\\lwjgl-jemalloc\\3.3.1\\lwjgl-jemalloc-3.3.1-natives-windows-x86.jar;" + - ".\\libraries\\org\\lwjgl\\lwjgl-openal\\3.3.1\\lwjgl-openal-3.3.1.jar;" + - ".\\libraries\\org\\lwjgl\\lwjgl-openal\\3.3.1\\lwjgl-openal-3.3.1-natives-windows.jar;" + - ".\\libraries\\org\\lwjgl\\lwjgl-openal\\3.3.1\\lwjgl-openal-3.3.1-natives-windows-x86.jar;" + - ".\\libraries\\org\\lwjgl\\lwjgl-opengl\\3.3.1\\lwjgl-opengl-3.3.1.jar;" + - ".\\libraries\\org\\lwjgl\\lwjgl-opengl\\3.3.1\\lwjgl-opengl-3.3.1-natives-windows.jar;" + - ".\\libraries\\org\\lwjgl\\lwjgl-opengl\\3.3.1\\lwjgl-opengl-3.3.1-natives-windows-x86.jar;" + - ".\\libraries\\org\\lwjgl\\lwjgl-glfw\\3.3.1\\lwjgl-glfw-3.3.1.jar;" + - ".\\libraries\\org\\lwjgl\\lwjgl-glfw\\3.3.1\\lwjgl-glfw-3.3.1-natives-windows.jar;" + - ".\\libraries\\org\\lwjgl\\lwjgl-glfw\\3.3.1\\lwjgl-glfw-3.3.1-natives-windows-x86.jar;" + - ".\\libraries\\org\\lwjgl\\lwjgl-stb\\3.3.1\\lwjgl-stb-3.3.1.jar;" + - ".\\libraries\\org\\lwjgl\\lwjgl-stb\\3.3.1\\lwjgl-stb-3.3.1-natives-windows.jar;" + - ".\\libraries\\org\\lwjgl\\lwjgl-stb\\3.3.1\\lwjgl-stb-3.3.1-natives-windows-x86.jar;" + - ".\\libraries\\org\\lwjgl\\lwjgl-tinyfd\\3.3.1\\lwjgl-tinyfd-3.3.1.jar;" + - ".\\libraries\\org\\lwjgl\\lwjgl-tinyfd\\3.3.1\\lwjgl-tinyfd-3.3.1-natives-windows.jar;" + - ".\\libraries\\org\\lwjgl\\lwjgl-tinyfd\\3.3.1\\lwjgl-tinyfd-3.3.1-natives-windows-x86.jar;" + - ".\\libraries\\com\\mojang\\text2speech\\1.13.9\\text2speech-1.13.9.jar;" + - ".\\libraries\\com\\mojang\\text2speech\\1.13.9\\text2speech-1.13.9-natives-windows.jar;" + - ".\\versions\\1.19.2-forge-43.1.30\\1.19.2-forge-43.1.30.jar " + - "-Djava.net.preferIPv6Addresses=system " + - "-DignoreList=bootstraplauncher,securejarhandler,asm-commons,asm-util,asm-analysis,asm-tree,asm," + - "JarJarFileSystems,client-extra,fmlcore,javafmllanguage,lowcodelanguage,mclanguage," + - "forge-,1.19.2-forge-43.1.30.jar -DmergeModules=jna-5.10.0.jar,jna-platform-5.10.0.jar " + - "-DlibraryDirectory=.\\libraries -p " + - ".\\libraries/cpw/mods/bootstraplauncher/1.1.2/bootstraplauncher-1.1.2.jar;" + - ".\\libraries/cpw/mods/securejarhandler/2.1.4/securejarhandler-2.1.4.jar;" + - ".\\libraries/org/ow2/asm/asm-commons/9.3/asm-commons-9.3.jar;" + - ".\\libraries/org/ow2/asm/asm-util/9.3/asm-util-9.3.jar;" + - ".\\libraries/org/ow2/asm/asm-analysis/9.3/asm-analysis-9.3.jar;" + - ".\\libraries/org/ow2/asm/asm-tree/9.3/asm-tree-9.3.jar;" + - ".\\libraries/org/ow2/asm/asm/9.3/asm-9.3.jar;" + - ".\\libraries/net/minecraftforge/JarJarFileSystems/0.3.16/JarJarFileSystems-0.3.16.jar " + - " --add-modules ALL-MODULE-PATH --add-opens java.base/java.util.jar=cpw.mods.securejarhandler " + - " --add-opens java.base/java.lang.invoke=cpw.mods.securejarhandler " + - "--add-exports java.base/sun.security.util=cpw.mods.securejarhandler " + - "--add-exports jdk.naming.dns/com.sun.jndi.dns=java.naming cpw.mods.bootstraplauncher.BootstrapLauncher " + - "--version 1.19.2-forge-43.1.30 " + - "--gameDir .\\ --assetsDir .\\assets --assetIndex 1.19 " + - "--accessToken null --clientId \"\" --xuid \"\" --userType legacy " + - "--versionType release " + - "--launchTarget forgeclient --fml.forgeVersion 43.1.30 " + - "--fml.mcVersion 1.19.2 --fml.forgeGroup net.minecraftforge --fml.mcpVersion 20220805.130853 " + - $"--username {username} " + - $"--uuid {uuid} " + - $"--width {width} --height {height}"); } \ No newline at end of file diff --git a/minecraft-launcher-client/Launcher.cs b/minecraft-launcher-client/Launcher.cs index 95c60a2..b365b81 100644 --- a/minecraft-launcher-client/Launcher.cs +++ b/minecraft-launcher-client/Launcher.cs @@ -7,7 +7,7 @@ using System.Net.Sockets; using System.Reflection; using System.Text; using System.Threading; -using DTLib; +using DTLib.Console; using DTLib.Dtsod; using DTLib.Extensions; using DTLib.Logging; @@ -19,8 +19,10 @@ namespace launcher_client; internal static partial class Launcher { - private static ConsoleLogger Info = new("launcher-logs", "launcher-info"); - private static ConsoleLogger Error = Info; //new("launcher-logs","launcher-error"); + private static FileLogger _fileLogger = new FileLogger("launcher-logs", "launcher_client"); + private static ILogger logger = new CompositeLogger( + _fileLogger, + new ConsoleLogger()); private static Socket mainSocket; public static bool debug, offline, updated; private static FSP FSP; @@ -33,12 +35,12 @@ internal static partial class Launcher { try { - Console.Title = "Timerix's minecraft launcher"; + Console.Title = "anarx_2"; Console.OutputEncoding = Encoding.UTF8; Console.InputEncoding = Encoding.UTF8; Console.CursorVisible = false; - Info.Log("g", "launcher is starting"); - PublicLog.LogEvent += Info.Log; + DTLibInternalLogging.SetLogger(logger); + logger.LogInfo("Main", "launcher is starting"); if (args.Contains("debug")) debug = true; if (args.Contains("offline")) offline = true; if (args.Contains("updated")) updated = true; @@ -49,10 +51,10 @@ internal static partial class Launcher // обновление лаунчера if (!updated && !offline) { - Connect("updater".ToBytes(), "updater"); - mainSocket.SendPackage("requesting launcher update".ToBytes()); + ConnectToLauncherServer(); + mainSocket.SendPackage("requesting launcher update"); FSP.DownloadFile("minecraft-launcher.exe_new"); - Info.Log("g", "minecraft-launcher.exe_new downloaded"); + logger.LogInfo("Main", "minecraft-launcher.exe_new downloaded"); if(File.Exists("minecraft-launcher.exe_old")) File.Delete("minecraft-launcher.exe_old"); System.IO.File.Move("minecraft-launcher.exe", "minecraft-launcher.exe_old"); @@ -78,10 +80,7 @@ internal static partial class Launcher tabs.Exit = ReadResource("launcher_client.gui.exit.gui"); tabs.Log = ""; tabs.Current = ""; - var hasher = new Hasher(); - var password_hash = Array.Empty(); - // username - var username = ""; + string username = ""; if (!config.Username.IsNullOrEmpty()) { tabs.Login = tabs.Login.Remove(833, config.Username.Length).Insert(833, config.Username); @@ -131,9 +130,9 @@ internal static partial class Launcher // обновление клиента if (!offline) { - Connect("updater".ToBytes(), "updater"); + ConnectToLauncherServer(); //обновление файлов клиента - Info.Log("b", "updating client..."); + logger.LogInfo("Main", "updating client..."); FSP.DownloadByManifest("download_if_not_exist", Directory.GetCurrent()); FSP.DownloadByManifest("sync_always", Directory.GetCurrent(), true); foreach (string dir in new DtsodV23(FSP @@ -141,19 +140,19 @@ internal static partial class Launcher .BytesToString())["dirs"]) FSP.DownloadByManifest("sync_and_remove\\" + dir, Directory.GetCurrent() + '\\' + dir, true, true); - Info.Log("g", "client updated"); + logger.LogInfo("Main", "client updated"); } // запуск майнкрафта - Info.Log("g", "launching minecraft"); + logger.LogInfo("Main", "launching minecraft"); LaunchGame(config.JavaPath, config.Username, config.UUID, config.GameMemory, config.GameWindowWidth, config.GameWindowHeight); - // gameProcess.WaitForExit(); - // Info.Log("b", "minecraft closed"); + gameProcess.WaitForExit(); + logger.LogInfo("Main", "minecraft closed"); } break; case ConsoleKey.F2: - tabs.Log = File.ReadAllText(Info.LogfileName); + tabs.Log = File.ReadAllText(_fileLogger.LogfileName); RenderTab(tabs.Log, 9999); break; case ConsoleKey.F3: @@ -179,23 +178,23 @@ internal static partial class Launcher } catch (Exception ex) { - Error.Log("r", $"{ex.Message}\n{ex.StackTrace}"); + logger.LogError("Main", ex); } } catch (Exception ex) { - Error.Log("r", $"{ex.Message}\n{ex.StackTrace}"); + logger.LogError("Main", ex); ColoredConsole.Write("gray", "press any key to close..."); Console.ReadKey(); } } // подключение серверу - private static void Connect(byte[] hash, string server_answer) + private static void ConnectToLauncherServer() { if (mainSocket!=null && mainSocket.Connected) { - Info.Log("y", "socket is connected already. disconnecting..."); + logger.LogInfo(nameof(ConnectToLauncherServer), "socket is connected already. disconnecting..."); mainSocket.Shutdown(SocketShutdown.Both); mainSocket.Close(); } @@ -204,16 +203,15 @@ internal static partial class Launcher while (true) try { - Info.Log("b", "connecting to server address: <", "c", config.ServerAddress, "b", - ">\nserver port: <", "c", $"{config.ServerPort}", "b", ">"); + logger.LogInfo(nameof(ConnectToLauncherServer), $"connecting to server {config.ServerAddress}:{config.ServerPort}"); var ip = Dns.GetHostAddresses(config.ServerAddress)[0]; mainSocket.Connect(new IPEndPoint(ip, config.ServerPort)); - Info.Log("g", $"connected to server {ip}"); + logger.LogInfo(nameof(ConnectToLauncherServer), $"connected to server {ip}"); break; } catch (SocketException ex) { - Error.Log("r", $"{ex.Message}\n{ex.StackTrace}"); + logger.LogError(nameof(ConnectToLauncherServer), ex); Thread.Sleep(2000); } @@ -222,13 +220,13 @@ internal static partial class Launcher /*FSP.PackageRecieved += (size) => { Console.SetCursorPosition(0, 30); - Info.Log("b", "downloading file... [", "c", size.ToString(), "b","/", "c", FSP.Filesize = ) + logger.LogInfo(nameof(Connect), "downloading file... [", size.ToString(), "/", FSP.Filesize = ) };*/ mainSocket.ReceiveTimeout = 2500; mainSocket.SendTimeout = 2500; - mainSocket.GetAnswer("requesting hash"); - mainSocket.SendPackage(hash); - mainSocket.GetAnswer(server_answer); + mainSocket.GetAnswer("requesting user name"); + mainSocket.SendPackage("minecraft-launcher"); + mainSocket.GetAnswer("minecraft-launcher OK"); } private static void RenderTab(string tab, ushort bufferHeight = 30) @@ -275,10 +273,8 @@ internal static partial class Launcher default: if (output.Length <= maxlength) { - string thisChar; - if (pressedKey.Modifiers.HasFlag(ConsoleModifiers.Shift)) - thisChar = pressedKey.KeyChar.ToString().ToUpper(); - else thisChar = pressedKey.KeyChar.ToString(); + string keyC = pressedKey.KeyChar.ToString(); + string thisChar = pressedKey.Modifiers.HasFlag(ConsoleModifiers.Shift) ? keyC.ToUpper() : keyC; output += thisChar; } diff --git a/minecraft-launcher-client/LauncherConfig.cs b/minecraft-launcher-client/LauncherConfig.cs index ddeb396..67568f2 100644 --- a/minecraft-launcher-client/LauncherConfig.cs +++ b/minecraft-launcher-client/LauncherConfig.cs @@ -8,7 +8,7 @@ public class LauncherConfig public int GameMemory = 3000; public int GameWindowHeight = 500; public int GameWindowWidth = 900; - public string JavaPath = $"java{Путь.Разд}bin"; + public string JavaPath = "java\\bin"; public string ServerAddress = "127.0.0.1"; public int ServerPort = 25000; public string Username = ""; diff --git a/minecraft-launcher-client/launcher-client.csproj b/minecraft-launcher-client/launcher-client.csproj index f369ac5..91f6b27 100644 --- a/minecraft-launcher-client/launcher-client.csproj +++ b/minecraft-launcher-client/launcher-client.csproj @@ -1,6 +1,6 @@  - net6.0 + net8.0 disable disable Exe @@ -8,13 +8,13 @@ minecraft-launcher launcher.ico - - - - - + + + + + \ No newline at end of file diff --git a/minecraft-launcher-client/launcher.dtsod b/minecraft-launcher-client/launcher.dtsod index 98759aa..28aa226 100644 --- a/minecraft-launcher-client/launcher.dtsod +++ b/minecraft-launcher-client/launcher.dtsod @@ -1,6 +1,6 @@ gameMemory: "3000"; gameWindowWidth: "1600"; -gameWinowHeight: "1000"; +gameWindowHeight: "1000"; javaPath: "java\bin"; serverAddress: "127.0.0.1"; serverPort: 25000; diff --git a/minecraft-launcher-server/Server.cs b/minecraft-launcher-server/Server.cs index d61795e..96933aa 100644 --- a/minecraft-launcher-server/Server.cs +++ b/minecraft-launcher-server/Server.cs @@ -4,7 +4,6 @@ using System.Net; using System.Net.Sockets; using System.Text; using System.Threading; -using DTLib; using DTLib.Dtsod; using DTLib.Extensions; using DTLib.Filesystem; @@ -15,8 +14,9 @@ namespace launcher_server; static class Server { - private static ConsoleLogger Info = new("logs","info"); - private static ConsoleLogger Error = new("logs","error"); + private static ILogger logger = new CompositeLogger( + new FileLogger("logs","launcher_server"), + new ConsoleLogger()); static readonly Socket mainSocket = new(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); static DtsodV23 config; static bool debug; @@ -30,50 +30,49 @@ static class Server Console.Title = "minecraft_launcher_server"; Console.InputEncoding = Encoding.Unicode; Console.OutputEncoding = Encoding.Unicode; - PublicLog.LogEvent += Info.Log; + DTLibInternalLogging.SetLogger(logger); config = new DtsodV23(File.ReadAllText("launcher-server.dtsod")); if (args.Contains("debug")) debug = true; - Info.Log("b", "local address: <", "c", config["local_ip"], "b", - ">\npublic address: <", "c", OldNetwork.GetPublicIP(), "b", - ">\nport: <", "c", config["local_port"].ToString(), "b", ">"); + logger.LogInfo("Main", $"local address: {config["local_ip"]}"); + logger.LogInfo("Main", $"public address: {OldNetwork.GetPublicIP()}"); + logger.LogInfo("Main", $"port: {config["local_port"]}"); mainSocket.Bind(new IPEndPoint(IPAddress.Parse(config["local_ip"]), config["local_port"])); mainSocket.Listen(1000); - CreateManifestы(); - Info.Log("g", "server started succesfully"); + CreateManifests(); + logger.LogInfo("Main", "server started succesfully"); // запуск отдельного потока для каждого юзера - Info.Log("b", "waiting for users"); + logger.LogInfo("Main", "waiting for users"); while (true) { var userSocket = mainSocket.Accept(); - var userThread = new Thread(obj => UserHandle((Socket)obj)); + var userThread = new Thread(obj => HandleUser((Socket)obj)); userThread.Start(userSocket); } } catch (Exception ex) { - Error.Log("r", $"{ex.Message}\n{ex.StackTrace}"); + logger.LogError("Main", ex); mainSocket.Close(); } - Info.Log("gray", ""); + logger.LogInfo("Main", ""); } // запускается для каждого юзера в отдельном потоке - static void UserHandle(Socket handlerSocket) + static void HandleUser(Socket handlerSocket) { - Info.Log("b", "user connecting... "); + logger.LogInfo(nameof(HandleUser), "user connecting... "); try { // тут запрос пароля заменён запросом заглушки - handlerSocket.SendPackage("requesting hash".ToBytes()); - var hasher = new Hasher(); - var hash = hasher.HashCycled(handlerSocket.GetPackage(), 64); + handlerSocket.SendPackage("requesting user name"); + string connectionString = handlerSocket.GetPackage().BytesToString(); FSP fsp = new(handlerSocket); FSP.debug = debug; // запрос от апдейтера - if (hash.HashToString() == "39368b9c9ca9a74007acd2358fb7945cf172fc86c93969d0933e40aee6c10ca8") + if (connectionString == "minecraft-launcher") { - Info.Log("b", "user is ", "c", "updater"); - handlerSocket.SendPackage("updater".ToBytes()); + logger.LogInfo(nameof(HandleUser), "incoming connection from minecraft-launcher"); + handlerSocket.SendPackage("minecraft-launcher OK"); // обработка запросов while (true) { @@ -83,39 +82,39 @@ static class Server switch (request) { case "requesting launcher update": - Info.Log("c","updater", "b", " requested launcher update"); + logger.LogInfo(nameof(HandleUser), "updater requested launcher update"); fsp.UploadFile("share\\minecraft-launcher.exe"); break; case "requesting file download": var file = handlerSocket.GetPackage().BytesToString(); - Info.Log("b", "user ", "c","updater", "b", " requested file ", "c", file + ""); + logger.LogInfo(nameof(HandleUser), $"updater requested file {file}"); fsp.UploadFile($"share\\{file}"); break; default: throw new Exception("unknown request: " + request); } } - else Thread.Sleep(10); + else Thread.Sleep(50); } } // неизвестный юзер - Error.Log("y", $"user with hash <{hash.HashToString()}> not found"); - handlerSocket.SendPackage("user not found".ToBytes()); + logger.LogWarn(nameof(HandleUser),$"invalid connection string: '{connectionString}'"); + handlerSocket.SendPackage("invalid connection string"); } catch (Exception ex) { - Error.Log("y", $"{ex.Message}\n{ex.StackTrace}"); + logger.LogWarn(nameof(HandleUser), ex); } finally { if (handlerSocket.Connected) handlerSocket.Shutdown(SocketShutdown.Both); handlerSocket.Close(); - Info.Log("g", "user disconnected"); + logger.LogInfo(nameof(HandleUser), "user disconnected"); } } - static void CreateManifestы() + static void CreateManifests() { lock (manifestLocker) { @@ -124,17 +123,21 @@ static class Server if(!Directory.Exists("share\\sync_and_remove")) { Directory.Create("share\\sync_and_remove"); - Info.Log("y", "can't create manifest, dir doesn't exist"); + logger.LogInfo(nameof(CreateManifests), "can't create manifest, dir doesn't exist"); } else foreach (string dir in Directory.GetDirectories("share\\sync_and_remove")) FSP.CreateManifest(dir); if(Directory.GetDirectories("share\\sync_and_remove").Length==0) File.WriteAllText("share\\sync_and_remove\\dirlist.dtsod", "dirs: [ ];"); - else File.WriteAllText("share\\sync_and_remove\\dirlist.dtsod", - "dirs: [\"" - +Directory.GetDirectories("share\\sync_and_remove") - .MergeToString("\", \"").Replace("share\\sync_and_remove\\", "") - +"\"];"); + else + { + File.WriteAllText("share\\sync_and_remove\\dirlist.dtsod", + "dirs: [\"" + + Directory.GetDirectories("share\\sync_and_remove") + .MergeToString("\", \"") + .Replace("share\\sync_and_remove\\", "") + + "\"];"); + } } } } \ No newline at end of file diff --git a/minecraft-launcher-server/launcher-server.csproj b/minecraft-launcher-server/launcher-server.csproj index fd33c9a..2d820b0 100644 --- a/minecraft-launcher-server/launcher-server.csproj +++ b/minecraft-launcher-server/launcher-server.csproj @@ -1,6 +1,6 @@  - net6.0 + net8.0 disable disable Exe @@ -8,14 +8,14 @@ minecraft-launcher-server launcher.ico - - - - - Always + + + + + \ No newline at end of file diff --git a/minecraft-launcher.sln b/minecraft-launcher.sln index b7e0b1f..2597576 100644 --- a/minecraft-launcher.sln +++ b/minecraft-launcher.sln @@ -7,30 +7,12 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "launcher-client", "minecraf EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "launcher-server", "minecraft-launcher-server\launcher-server.csproj", "{1DC6892C-5DC8-4C1C-94C1-CE695BD2DBC2}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DTLib", "..\..\DTLib\DTLib\DTLib.csproj", "{57CDC0EF-31C9-4859-90E5-AD0B302C5EAE}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DTLib.Dtsod", "..\..\DTLib\DTLib.Dtsod\DTLib.Dtsod.csproj", "{1F6C1C6E-59A4-4C49-90ED-6D8A9F55F349}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DTLib.Network", "..\..\DTLib\DTLib.Network\DTLib.Network.csproj", "{876103FA-6B0D-4322-B66D-0DFEEEFABD82}" -EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU Release|Any CPU = Release|Any CPU EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution - {57CDC0EF-31C9-4859-90E5-AD0B302C5EAE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {57CDC0EF-31C9-4859-90E5-AD0B302C5EAE}.Debug|Any CPU.Build.0 = Debug|Any CPU - {57CDC0EF-31C9-4859-90E5-AD0B302C5EAE}.Release|Any CPU.ActiveCfg = Release|Any CPU - {57CDC0EF-31C9-4859-90E5-AD0B302C5EAE}.Release|Any CPU.Build.0 = Release|Any CPU - {1F6C1C6E-59A4-4C49-90ED-6D8A9F55F349}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1F6C1C6E-59A4-4C49-90ED-6D8A9F55F349}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1F6C1C6E-59A4-4C49-90ED-6D8A9F55F349}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1F6C1C6E-59A4-4C49-90ED-6D8A9F55F349}.Release|Any CPU.Build.0 = Release|Any CPU - {876103FA-6B0D-4322-B66D-0DFEEEFABD82}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {876103FA-6B0D-4322-B66D-0DFEEEFABD82}.Debug|Any CPU.Build.0 = Debug|Any CPU - {876103FA-6B0D-4322-B66D-0DFEEEFABD82}.Release|Any CPU.ActiveCfg = Release|Any CPU - {876103FA-6B0D-4322-B66D-0DFEEEFABD82}.Release|Any CPU.Build.0 = Release|Any CPU {49ADEFCE-DA46-4229-997C-3D43DD600627}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {49ADEFCE-DA46-4229-997C-3D43DD600627}.Debug|Any CPU.Build.0 = Debug|Any CPU {49ADEFCE-DA46-4229-997C-3D43DD600627}.Release|Any CPU.ActiveCfg = Release|Any CPU