public void Enable() { Harmony.PatchAll(); foreach (var arg in Environment.GetCommandLineArgs()) { const string consoleArg = "-console"; if (arg.StartsWith(consoleArg)) { if (ushort.TryParse(arg.Substring(consoleArg.Length), out var consolePort)) { ConsolePort = consolePort; } } } ServerConsole.AddLog($"Starting TcpClient on port {ConsolePort}"); TcpClient = new TcpClient(); try { TcpClient.Connect(new IPEndPoint(IPAddress.Loopback, ConsolePort)); } catch { return; } SendMessage("LocalAdminPlus Companion connected!"); var streamReader = new StreamReader(TcpClient.GetStream()); Task.Run(async() => { while (true) { if (!streamReader.EndOfStream) { ServerConsole.EnterCommand(streamReader.ReadLine()); } await Task.Delay(10); } }); }
private static IEnumerator CheckLog() { if (PlayerPrefs.GetString("server_accepted", "false") != "true") { StreamWriter sw = new StreamWriter(string.Concat(new object[] { "SCPSL_Data/Dedicated/", ServerConsole.session, "/sl", ServerConsole.logID, ".mapi" })); ServerConsole.logID++; sw.WriteLine("THE PROJECT OWNERS (HUBERT MOSZKA & WESLEY VAN VELSEN) RESERVE THE RIGHT TO OVERRIDE ACCESS TO THE REMOTE ADMIN PANEL LOGTYPE-12"); sw.Close(); sw = new StreamWriter(string.Concat(new object[] { "SCPSL_Data/Dedicated/", ServerConsole.session, "/sl", ServerConsole.logID, ".mapi" })); ServerConsole.logID++; sw.WriteLine("TYPE 'Yes, I accept' if you agree LOGTYPE-12"); sw.Close(); ServerConsole.accepted = false; while (!ServerConsole.accepted) { string[] tasks = Directory.GetFiles("SCPSL_Data/Dedicated/" + ServerConsole.session, "cs*.mapi", SearchOption.TopDirectoryOnly); foreach (string task in tasks) { string t = task.Remove(0, task.IndexOf("cs")); StreamReader sr = new StreamReader("SCPSL_Data/Dedicated/" + ServerConsole.session + "/" + t); string content = sr.ReadToEnd(); sr.Close(); File.Delete("SCPSL_Data/Dedicated/" + ServerConsole.session + "/" + t); if (content.ToUpper().Contains("YES, I ACCEPT")) { PlayerPrefs.SetString("server_accepted", "true"); sw = new StreamWriter(string.Concat(new object[] { "SCPSL_Data/Dedicated/", ServerConsole.session, "/sl", ServerConsole.logID, ".mapi" })); ServerConsole.logID++; sw.WriteLine("Cool! Let me just restart the session... LOGTYPE-10"); sw.Close(); yield return(new WaitForSeconds(5f)); ServerConsole.TerminateProcess(); } else { ServerConsole.TerminateProcess(); } } yield return(new WaitForSeconds(0.07f)); } yield return(new WaitForSeconds(1f)); if (ServerConsole.consoleID == null || ServerConsole.consoleID.HasExited) { ServerConsole.TerminateProcess(); } } yield return(new WaitForSeconds(10f)); for (;;) { string[] tasks2 = Directory.GetFiles("SCPSL_Data/Dedicated/" + ServerConsole.session, "cs*.mapi", SearchOption.TopDirectoryOnly); foreach (string task2 in tasks2) { string t2 = task2.Remove(0, task2.IndexOf("cs")); string toLog = string.Empty; string exception = string.Empty; try { exception = "Error while reading the file: " + t2; StreamReader streamReader = new StreamReader("SCPSL_Data/Dedicated/" + ServerConsole.session + "/" + t2); string text = streamReader.ReadToEnd(); if (text.Contains("terminator")) { text = text.Remove(text.LastIndexOf("terminator")); } toLog = ServerConsole.EnterCommand(text); try { exception = "Error while closing the file: " + t2 + " :: " + text; } catch { } streamReader.Close(); try { exception = "Error while deleting the file: " + t2 + " :: " + text; } catch { } File.Delete("SCPSL_Data/Dedicated/" + ServerConsole.session + "/" + t2); } catch { } if (!string.IsNullOrEmpty(toLog)) { ServerConsole.AddLog(toLog); } yield return(new WaitForSeconds(0.07f)); } yield return(new WaitForSeconds(1f)); if (ServerConsole.consoleID == null || ServerConsole.consoleID.HasExited) { ServerConsole.TerminateProcess(); } } yield break; }