diff --git a/NovetusLauncher/NovetusCMD/LocalVars.cs b/NovetusLauncher/NovetusCMD/LocalVars.cs
index 0ec27c9..51af91f 100644
--- a/NovetusLauncher/NovetusCMD/LocalVars.cs
+++ b/NovetusLauncher/NovetusCMD/LocalVars.cs
@@ -11,5 +11,7 @@ namespace NovetusCMD
public static bool StartInNo3D = false;
public static bool OverrideINI = false;
public static bool RequestToOutputInfo = false;
+ public static bool DebugMode = false;
+ public static int ProcessID = 0;
}
}
diff --git a/NovetusLauncher/NovetusCMD/NovetusCMD.csproj b/NovetusLauncher/NovetusCMD/NovetusCMD.csproj
index 7a2c70d..a11cabe 100644
--- a/NovetusLauncher/NovetusCMD/NovetusCMD.csproj
+++ b/NovetusLauncher/NovetusCMD/NovetusCMD.csproj
@@ -68,6 +68,7 @@
+
diff --git a/NovetusLauncher/NovetusCMD/Program.cs b/NovetusLauncher/NovetusCMD/Program.cs
index a411f3c..22eb70b 100644
--- a/NovetusLauncher/NovetusCMD/Program.cs
+++ b/NovetusLauncher/NovetusCMD/Program.cs
@@ -151,6 +151,14 @@ namespace NovetusCMD
{
StopWebServer();
}
+ if (LocalVars.ProcessID != 0)
+ {
+ if (GlobalVars.ProcessExists(LocalVars.ProcessID))
+ {
+ Process proc = Process.GetProcessById(LocalVars.ProcessID);
+ proc.Kill();
+ }
+ }
}
static void ReadConfigValues()
@@ -201,6 +209,7 @@ namespace NovetusCMD
ConsolePrint("-script | Loads an additional server script.", 4);
ConsolePrint("-outputinfo | Outputs all information about the running server to a text file.", 4);
ConsolePrint("-overrideconfig | Override the launcher settings.", 4);
+ ConsolePrint("-debug | Disables launching of the server for debugging purposes.", 4);
ConsolePrint("---------", 1);
ConsolePrint("Custom server options", 3);
ConsolePrint("-overrideconfig must be added in order for the below commands to function.", 5);
@@ -266,6 +275,11 @@ namespace NovetusCMD
LocalVars.RequestToOutputInfo = true;
}
+ if (CommandLine["debug"] != null)
+ {
+ LocalVars.DebugMode = true;
+ }
+
if (CommandLine["script"] != null)
{
GlobalVars.AddonScriptPath = CommandLine["script"].Replace(@"\", @"\\");
@@ -292,12 +306,19 @@ namespace NovetusCMD
InitUPnP();
StartWebServer();
-
AppDomain.CurrentDomain.ProcessExit += new EventHandler(ProgramClose);
ConsolePrint("Launching a " + GlobalVars.SelectedClient + " server on " + GlobalVars.Map + " with " + GlobalVars.PlayerLimit + " players.", 1);
- StartServer(LocalVars.StartInNo3D);
+
+ if (!LocalVars.DebugMode)
+ {
+ StartServer(LocalVars.StartInNo3D);
+ }
+ else
+ {
+ CreateTXT();
+ }
Console.ReadKey();
}
@@ -359,7 +380,8 @@ namespace NovetusCMD
client.Exited += new EventHandler(ServerExited);
client.Start();
SecurityFuncs.RenameWindow(client, ScriptGenerator.ScriptType.Server);
- CreateTXT(client);
+ LocalVars.ProcessID = client.Id;
+ CreateTXT();
}
catch (Exception ex) when (!Env.Debugging)
{
@@ -372,7 +394,7 @@ namespace NovetusCMD
Environment.Exit(0);
}
- static void CreateTXT(Process process)
+ static void CreateTXT()
{
if (LocalVars.RequestToOutputInfo)
{
@@ -389,10 +411,9 @@ namespace NovetusCMD
SecurityFuncs.Base64Encode(GlobalVars.SelectedClient)
};
string URI2 = "novetus://" + SecurityFuncs.Base64Encode(string.Join("|", lines2));
- int pid = process.Id;
string text = GlobalVars.MultiLine(
- "Process ID: " + pid.ToString(),
+ "Process ID: " + (LocalVars.ProcessID == 0 ? "N/A" : LocalVars.ProcessID.ToString()),
"Don't copy the Process ID when sharing the server.",
"--------------------",
"Server Info:",
diff --git a/NovetusLauncher/NovetusFuncs/GlobalVars.cs b/NovetusLauncher/NovetusFuncs/GlobalVars.cs
index 441ae7f..dffe1b7 100644
--- a/NovetusLauncher/NovetusFuncs/GlobalVars.cs
+++ b/NovetusLauncher/NovetusFuncs/GlobalVars.cs
@@ -8,7 +8,9 @@
*/
using System;
+using System.Diagnostics;
using System.IO;
+using System.Linq;
using System.Reflection;
using System.Text.RegularExpressions;
@@ -234,4 +236,9 @@ public static class GlobalVars
{
return Regex.Replace(lines, @"^\s*$\n|\r", string.Empty, RegexOptions.Multiline).TrimEnd();
}
+
+ public static bool ProcessExists(int id)
+ {
+ return Process.GetProcesses().Any(x => x.Id == id);
+ }
}
\ No newline at end of file
diff --git a/NovetusLauncher/NovetusFuncs/ScriptGenerator.cs b/NovetusLauncher/NovetusFuncs/ScriptGenerator.cs
index 346ffa8..4ee66c3 100644
--- a/NovetusLauncher/NovetusFuncs/ScriptGenerator.cs
+++ b/NovetusLauncher/NovetusFuncs/ScriptGenerator.cs
@@ -48,7 +48,7 @@ public class ScriptGenerator
rbxexe = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + "\\clients\\" + client + @"\\RobloxApp_client.exe";
}
- string md5dir = SecurityFuncs.CalculateMD5(Assembly.GetExecutingAssembly().Location);
+ string md5dir = SecurityFuncs.CalculateMD5(GlobalVars.BasePath + @"\\Novetus.exe");
string md5script = SecurityFuncs.CalculateMD5(GlobalVars.ClientDir + @"\\" + GlobalVars.SelectedClient + @"\\content\\scripts\\" + GlobalVars.ScriptName + ".lua");
string md5exe = SecurityFuncs.CalculateMD5(rbxexe);
string md5s = "'" + md5exe + "','" + md5dir + "','" + md5script + "'";
diff --git a/NovetusLauncher/NovetusFuncs/SecurityFuncs.cs b/NovetusLauncher/NovetusFuncs/SecurityFuncs.cs
index bfaa082..41117d6 100644
--- a/NovetusLauncher/NovetusFuncs/SecurityFuncs.cs
+++ b/NovetusLauncher/NovetusFuncs/SecurityFuncs.cs
@@ -187,16 +187,22 @@ public class SecurityFuncs
public static string GetExternalIPAddress()
{
string ipAddress;
- using (WebClient wc = new WebClient())
+
+ try
{
- try
- {
- ipAddress = wc.DownloadString("http://ipv4.icanhazip.com/");
- }
- catch (Exception) when (!Env.Debugging)
- {
- ipAddress = "localhost" + Environment.NewLine;
- }
+ string url = "http://checkip.dyndns.org";
+ WebRequest req = WebRequest.Create(url);
+ WebResponse resp = req.GetResponse();
+ StreamReader sr = new StreamReader(resp.GetResponseStream());
+ string response = sr.ReadToEnd().Trim();
+ string[] a = response.Split(':');
+ string a2 = a[1].Substring(1);
+ string[] a3 = a2.Split('<');
+ ipAddress = a3[0];
+ }
+ catch (Exception)
+ {
+ ipAddress = "localhost";
}
return ipAddress;
diff --git a/NovetusLauncher/NovetusLauncher/LocalVars.cs b/NovetusLauncher/NovetusLauncher/LocalVars.cs
new file mode 100644
index 0000000..4feab6c
--- /dev/null
+++ b/NovetusLauncher/NovetusLauncher/LocalVars.cs
@@ -0,0 +1,12 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace NovetusLauncher
+{
+ class LocalVars
+ {
+ }
+}
diff --git a/NovetusLauncher/NovetusLauncher/NovetusLauncher.csproj b/NovetusLauncher/NovetusLauncher/NovetusLauncher.csproj
index cb2e8a7..39376af 100644
--- a/NovetusLauncher/NovetusLauncher/NovetusLauncher.csproj
+++ b/NovetusLauncher/NovetusLauncher/NovetusLauncher.csproj
@@ -69,6 +69,7 @@
+
@@ -82,6 +83,7 @@
CharacterCustomization.cs
+
Form
diff --git a/NovetusLauncher/NovetusLauncher/URI/LoaderForm.cs b/NovetusLauncher/NovetusLauncher/URI/LoaderForm.cs
index 6e576c3..133c73c 100644
--- a/NovetusLauncher/NovetusLauncher/URI/LoaderForm.cs
+++ b/NovetusLauncher/NovetusLauncher/URI/LoaderForm.cs
@@ -66,7 +66,7 @@ namespace NovetusLauncher
GlobalVars.DefaultClient = lines[1];
GlobalVars.DefaultMap = lines[2];
GlobalVars.SelectedClient = GlobalVars.DefaultClient;
- GlobalVars.Map = GlobalVars.DefaultMap;
+ GlobalVars.Map = GlobalVars.DefaultMap;
QuickConfigure main = new QuickConfigure();
main.ShowDialog();
System.Threading.Timer timer = new System.Threading.Timer(new TimerCallback(CheckIfFinished), null, 1, 0);
@@ -94,7 +94,8 @@ namespace NovetusLauncher
string ip = SecurityFuncs.Base64Decode(SplitArg[0]);
string port = SecurityFuncs.Base64Decode(SplitArg[1]);
string client = SecurityFuncs.Base64Decode(SplitArg[2]);
- GlobalVars.IP = ip;
+ GlobalVars.SelectedClient = client;
+ GlobalVars.IP = ip;
GlobalVars.RobloxPort = Convert.ToInt32(port);
ReadClientValues(client);
string luafile = "";