mirror of
https://github.com/Novetus/Novetus_src.git
synced 2025-01-31 09:41:33 +02:00
Code refactor
This commit is contained in:
parent
23e597dede
commit
2305148e7b
@ -12,6 +12,8 @@
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<Deterministic>false</Deterministic>
|
||||
<TargetFrameworkProfile />
|
||||
<NuGetPackageImportStamp>
|
||||
</NuGetPackageImportStamp>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
@ -41,17 +43,141 @@
|
||||
<ApplicationManifest>app.manifest</ApplicationManifest>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="Microsoft.Win32.Primitives, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Microsoft.Win32.Primitives.4.3.0\lib\net46\Microsoft.Win32.Primitives.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="NLog, Version=5.0.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\NLog.5.1.0\lib\net46\NLog.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.AppContext, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.AppContext.4.3.0\lib\net463\System.AppContext.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.ComponentModel.Composition" />
|
||||
<Reference Include="System.Configuration" />
|
||||
<Reference Include="System.Console, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Console.4.3.0\lib\net46\System.Console.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.IO.Compression" />
|
||||
<Reference Include="System.Diagnostics.DiagnosticSource, Version=4.0.1.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Diagnostics.DiagnosticSource.4.3.0\lib\net46\System.Diagnostics.DiagnosticSource.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Diagnostics.Tracing, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Diagnostics.Tracing.4.3.0\lib\net462\System.Diagnostics.Tracing.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.Globalization.Calendars, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Globalization.Calendars.4.3.0\lib\net46\System.Globalization.Calendars.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.IO, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.IO.4.3.0\lib\net462\System.IO.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.IO.Compression, Version=4.1.2.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.IO.Compression.4.3.0\lib\net46\System.IO.Compression.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.IO.Compression.FileSystem" />
|
||||
<Reference Include="System.IO.Compression.ZipFile, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.IO.Compression.ZipFile.4.3.0\lib\net46\System.IO.Compression.ZipFile.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.IO.FileSystem, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.IO.FileSystem.4.3.0\lib\net46\System.IO.FileSystem.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.IO.FileSystem.Primitives, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.IO.FileSystem.Primitives.4.3.0\lib\net46\System.IO.FileSystem.Primitives.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.Linq, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Linq.4.3.0\lib\net463\System.Linq.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.Linq.Expressions, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Linq.Expressions.4.3.0\lib\net463\System.Linq.Expressions.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.Management" />
|
||||
<Reference Include="System.Net.Http, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Net.Http.4.3.0\lib\net46\System.Net.Http.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.Net.Sockets, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Net.Sockets.4.3.0\lib\net46\System.Net.Sockets.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.Numerics" />
|
||||
<Reference Include="System.Reflection, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Reflection.4.3.0\lib\net462\System.Reflection.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.Runtime, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Runtime.4.3.0\lib\net462\System.Runtime.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.Runtime.Extensions, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Runtime.Extensions.4.3.0\lib\net462\System.Runtime.Extensions.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.Runtime.InteropServices, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Runtime.InteropServices.4.3.0\lib\net463\System.Runtime.InteropServices.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.Runtime.InteropServices.RuntimeInformation, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Runtime.InteropServices.RuntimeInformation.4.3.0\lib\net45\System.Runtime.InteropServices.RuntimeInformation.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.Runtime.Serialization" />
|
||||
<Reference Include="System.Security.Cryptography.Algorithms, Version=4.2.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Security.Cryptography.Algorithms.4.3.0\lib\net463\System.Security.Cryptography.Algorithms.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.Security.Cryptography.Encoding, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Security.Cryptography.Encoding.4.3.0\lib\net46\System.Security.Cryptography.Encoding.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.Security.Cryptography.Primitives, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Security.Cryptography.Primitives.4.3.0\lib\net46\System.Security.Cryptography.Primitives.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.Security.Cryptography.X509Certificates, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Security.Cryptography.X509Certificates.4.3.0\lib\net461\System.Security.Cryptography.X509Certificates.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.ServiceModel" />
|
||||
<Reference Include="System.Text.RegularExpressions, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Text.RegularExpressions.4.3.0\lib\net463\System.Text.RegularExpressions.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.Transactions" />
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
<Reference Include="System.Data.DataSetExtensions" />
|
||||
@ -61,6 +187,11 @@
|
||||
<Reference Include="System.Drawing" />
|
||||
<Reference Include="System.Windows.Forms" />
|
||||
<Reference Include="System.Xml" />
|
||||
<Reference Include="System.Xml.ReaderWriter, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Xml.ReaderWriter.4.3.0\lib\net46\System.Xml.ReaderWriter.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="LocalPaths.cs" />
|
||||
|
@ -1,4 +1,50 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="Microsoft.NETCore.Platforms" version="1.1.0" targetFramework="net48" />
|
||||
<package id="Microsoft.Win32.Primitives" version="4.3.0" targetFramework="net48" />
|
||||
<package id="NETStandard.Library" version="1.6.1" targetFramework="net48" />
|
||||
<package id="NLog" version="5.1.0" targetFramework="net48" />
|
||||
<package id="System.AppContext" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Collections" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Collections.Concurrent" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Console" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Diagnostics.Debug" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Diagnostics.DiagnosticSource" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Diagnostics.Tools" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Diagnostics.Tracing" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Globalization" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Globalization.Calendars" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.IO" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.IO.Compression" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.IO.Compression.ZipFile" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.IO.FileSystem" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.IO.FileSystem.Primitives" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Linq" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Linq.Expressions" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Net.Http" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Net.Primitives" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Net.Sockets" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.ObjectModel" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Reflection" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Reflection.Extensions" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Reflection.Primitives" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Resources.ResourceManager" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Runtime" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Runtime.Extensions" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Runtime.Handles" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Runtime.InteropServices" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Runtime.InteropServices.RuntimeInformation" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Runtime.Numerics" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Security.Cryptography.Algorithms" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Security.Cryptography.Encoding" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Security.Cryptography.Primitives" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Security.Cryptography.X509Certificates" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Text.Encoding" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Text.Encoding.Extensions" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Text.RegularExpressions" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Threading" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Threading.Tasks" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Threading.Timer" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Xml.ReaderWriter" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Xml.XDocument" version="4.3.0" targetFramework="net48" />
|
||||
</packages>
|
@ -1,24 +0,0 @@
|
||||
#region Usings
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics.Contracts;
|
||||
#endregion
|
||||
|
||||
namespace Novetus.ClientScriptTester
|
||||
{
|
||||
#region LocalVars
|
||||
class LocalVars
|
||||
{
|
||||
public static List<string> SharedArgs = new List<string>();
|
||||
//a re-implementation of "Environment.NewLine" but with double spaces. Should be in NETExt, but we only use it here.
|
||||
public static String DoubleSpacedNewLine
|
||||
{
|
||||
get
|
||||
{
|
||||
Contract.Ensures(Contract.Result<String>() != null);
|
||||
return "\r\n\r\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
}
|
@ -1,29 +0,0 @@
|
||||
#region Usings
|
||||
using System;
|
||||
using System.Windows.Forms;
|
||||
#endregion
|
||||
|
||||
namespace Novetus.ClientScriptTester
|
||||
{
|
||||
#region ClientScript Tester
|
||||
static class ClientScriptTester
|
||||
{
|
||||
/// <summary>
|
||||
/// The main entry point for the application.
|
||||
/// </summary>
|
||||
[STAThread]
|
||||
static void Main(string[] args)
|
||||
{
|
||||
Application.EnableVisualStyles();
|
||||
Application.SetCompatibleTextRenderingDefault(false);
|
||||
|
||||
foreach (string s in args)
|
||||
{
|
||||
LocalVars.SharedArgs.Add(s);
|
||||
}
|
||||
|
||||
Application.Run(new ClientScriptTestForm());
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
}
|
@ -1,95 +0,0 @@
|
||||
namespace Novetus.ClientScriptTester
|
||||
{
|
||||
partial class ClientScriptTestForm
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ClientScriptTestForm));
|
||||
this.ResultLabel = new System.Windows.Forms.Label();
|
||||
this.Divider1 = new System.Windows.Forms.Label();
|
||||
this.OutputBox = new System.Windows.Forms.RichTextBox();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// ResultLabel
|
||||
//
|
||||
this.ResultLabel.AutoSize = true;
|
||||
this.ResultLabel.Location = new System.Drawing.Point(12, 9);
|
||||
this.ResultLabel.Name = "ResultLabel";
|
||||
this.ResultLabel.Size = new System.Drawing.Size(102, 13);
|
||||
this.ResultLabel.TabIndex = 0;
|
||||
this.ResultLabel.Text = "Here are the results:";
|
||||
//
|
||||
// Divider1
|
||||
//
|
||||
this.Divider1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.Divider1.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
|
||||
this.Divider1.Location = new System.Drawing.Point(8, 31);
|
||||
this.Divider1.Name = "Divider1";
|
||||
this.Divider1.Size = new System.Drawing.Size(780, 2);
|
||||
this.Divider1.TabIndex = 1;
|
||||
//
|
||||
// OutputBox
|
||||
//
|
||||
this.OutputBox.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
| System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.OutputBox.BackColor = System.Drawing.SystemColors.ControlLightLight;
|
||||
this.OutputBox.Location = new System.Drawing.Point(8, 36);
|
||||
this.OutputBox.Name = "OutputBox";
|
||||
this.OutputBox.ReadOnly = true;
|
||||
this.OutputBox.Size = new System.Drawing.Size(780, 402);
|
||||
this.OutputBox.TabIndex = 2;
|
||||
this.OutputBox.Text = "";
|
||||
//
|
||||
// ClientScriptTestForm
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.BackColor = System.Drawing.SystemColors.ControlLightLight;
|
||||
this.ClientSize = new System.Drawing.Size(800, 450);
|
||||
this.Controls.Add(this.OutputBox);
|
||||
this.Controls.Add(this.Divider1);
|
||||
this.Controls.Add(this.ResultLabel);
|
||||
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
|
||||
this.MinimumSize = new System.Drawing.Size(816, 200);
|
||||
this.Name = "ClientScriptTestForm";
|
||||
this.Text = "ClientScript Tester";
|
||||
this.Load += new System.EventHandler(this.ClientScriptTestForm_Load);
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.Label ResultLabel;
|
||||
private System.Windows.Forms.Label Divider1;
|
||||
private System.Windows.Forms.RichTextBox OutputBox;
|
||||
}
|
||||
}
|
||||
|
@ -1,35 +0,0 @@
|
||||
#region Usings
|
||||
using System;
|
||||
using System.Windows.Forms;
|
||||
#endregion
|
||||
|
||||
namespace Novetus.ClientScriptTester
|
||||
{
|
||||
#region ClientScriptTestForm
|
||||
public partial class ClientScriptTestForm : Form
|
||||
{
|
||||
#region Constructor
|
||||
public ClientScriptTestForm()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region Form Events
|
||||
private void ClientScriptTestForm_Load(object sender, EventArgs e)
|
||||
{
|
||||
foreach (string str in LocalVars.SharedArgs)
|
||||
{
|
||||
if (!string.IsNullOrWhiteSpace(str))
|
||||
{
|
||||
OutputBox.AppendText(str + LocalVars.DoubleSpacedNewLine);
|
||||
}
|
||||
}
|
||||
|
||||
OutputBox.SelectionStart = 0;
|
||||
OutputBox.ScrollToCaret();
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
#endregion
|
||||
}
|
File diff suppressed because it is too large
Load Diff
@ -1,113 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProjectGuid>{83B08607-65B8-4F9C-8D0F-AB1C8EEFFAE0}</ProjectGuid>
|
||||
<OutputType>WinExe</OutputType>
|
||||
<RootNamespace>Novetus.ClientScriptTester</RootNamespace>
|
||||
<AssemblyName>ClientScriptTester</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<TargetFrameworkProfile />
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<DefineConstants>TRACE;DEBUG;TESTER;NOVETUS_APPS</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<Prefer32Bit>false</Prefer32Bit>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<DefineConstants>TRACE;TESTER;NOVETUS_APPS;NET481</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<Prefer32Bit>false</Prefer32Bit>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<ApplicationIcon>NovetusIcon.ico</ApplicationIcon>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<ApplicationManifest>app.manifest</ApplicationManifest>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Configuration" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Net" />
|
||||
<Reference Include="System.Runtime.Serialization" />
|
||||
<Reference Include="System.ServiceModel" />
|
||||
<Reference Include="System.Transactions" />
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
<Reference Include="System.Data.DataSetExtensions" />
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Deployment" />
|
||||
<Reference Include="System.Drawing" />
|
||||
<Reference Include="System.Windows.Forms" />
|
||||
<Reference Include="System.Xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="Classes\LocalVars.cs" />
|
||||
<Compile Include="Forms\ClientScriptTestForm.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Forms\ClientScriptTestForm.Designer.cs">
|
||||
<DependentUpon>ClientScriptTestForm.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="ClientScriptTester.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<EmbeddedResource Include="Forms\ClientScriptTestForm.resx">
|
||||
<DependentUpon>ClientScriptTestForm.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Properties\Resources.resx">
|
||||
<Generator>ResXFileCodeGenerator</Generator>
|
||||
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
<Compile Include="Properties\Resources.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DependentUpon>Resources.resx</DependentUpon>
|
||||
<DesignTime>True</DesignTime>
|
||||
</Compile>
|
||||
<None Include="app.config" />
|
||||
<None Include="app.manifest" />
|
||||
<None Include="Properties\Settings.settings">
|
||||
<Generator>SettingsSingleFileGenerator</Generator>
|
||||
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
|
||||
</None>
|
||||
<Compile Include="Properties\Settings.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DependentUpon>Settings.settings</DependentUpon>
|
||||
<DesignTimeSharedInput>True</DesignTimeSharedInput>
|
||||
</Compile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="NovetusIcon.ico" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
<PropertyGroup>
|
||||
<PostBuildEvent>SET path=$(SolutionDir)build
|
||||
if not exist "%25path%25" mkdir "%25path%25"
|
||||
SET path2=%25path%25\ClientScriptTester
|
||||
if not exist "%25path2%25" mkdir "%25path2%25"
|
||||
copy $(ProjectDir)$(OutDir) "%25path2%25"\*
|
||||
del "%25path%25"\$(TargetName).vshost.exe
|
||||
del "%25path%25"\$(TargetName).vshost.exe.config
|
||||
del "%25path%25"\$(TargetName).vshost.exe.manifest
|
||||
del "%25path%25"\$(TargetName).xml</PostBuildEvent>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<PreBuildEvent>
|
||||
</PreBuildEvent>
|
||||
</PropertyGroup>
|
||||
</Project>
|
Binary file not shown.
Before Width: | Height: | Size: 132 KiB |
@ -1,33 +0,0 @@
|
||||
#region Usings
|
||||
using System.Reflection;
|
||||
using System.Runtime.InteropServices;
|
||||
#endregion
|
||||
|
||||
|
||||
// General Information about an assembly is controlled through the following
|
||||
// set of attributes. Change these attribute values to modify the information
|
||||
// associated with an assembly.
|
||||
[assembly: AssemblyTitle("ClientScript tester")]
|
||||
[assembly: AssemblyDescription("ClientScript tester tor testing ClientScript variables.")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("Bitl")]
|
||||
[assembly: AssemblyProduct("Novetus")]
|
||||
[assembly: AssemblyCopyright("(c) Bitl 2018-2021. All rights to Roblox go to the Roblox Corporation.")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
// Setting ComVisible to false makes the types in this assembly not visible
|
||||
// to COM components. If you need to access a type in this assembly from
|
||||
// COM, set the ComVisible attribute to true on that type.
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
// Version information for an assembly consists of the following four values:
|
||||
//
|
||||
// Major Version
|
||||
// Minor Version
|
||||
// Build Number
|
||||
// Revision
|
||||
//
|
||||
// You can specify all the values or you can default the Build and Revision Numbers
|
||||
// by using the '*' as shown below:
|
||||
[assembly: AssemblyVersion("1.3.*")]
|
@ -1,63 +0,0 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.42000
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace Novetus.ClientScriptTester.Properties {
|
||||
using System;
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// A strongly-typed resource class, for looking up localized strings, etc.
|
||||
/// </summary>
|
||||
// This class was auto-generated by the StronglyTypedResourceBuilder
|
||||
// class via a tool like ResGen or Visual Studio.
|
||||
// To add or remove a member, edit your .ResX file then rerun ResGen
|
||||
// with the /str option, or rebuild your VS project.
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
internal class Resources {
|
||||
|
||||
private static global::System.Resources.ResourceManager resourceMan;
|
||||
|
||||
private static global::System.Globalization.CultureInfo resourceCulture;
|
||||
|
||||
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||||
internal Resources() {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns the cached ResourceManager instance used by this class.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Resources.ResourceManager ResourceManager {
|
||||
get {
|
||||
if (object.ReferenceEquals(resourceMan, null)) {
|
||||
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Novetus.ClientScriptTester.Properties.Resources", typeof(Resources).Assembly);
|
||||
resourceMan = temp;
|
||||
}
|
||||
return resourceMan;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Overrides the current thread's CurrentUICulture property for all
|
||||
/// resource lookups using this strongly typed resource class.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Globalization.CultureInfo Culture {
|
||||
get {
|
||||
return resourceCulture;
|
||||
}
|
||||
set {
|
||||
resourceCulture = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,117 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
@ -1,26 +0,0 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.42000
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace Novetus.ClientScriptTester.Properties {
|
||||
|
||||
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.2.0.0")]
|
||||
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
|
||||
|
||||
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
|
||||
|
||||
public static Settings Default {
|
||||
get {
|
||||
return defaultInstance;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,7 +0,0 @@
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
|
||||
<Profiles>
|
||||
<Profile Name="(Default)" />
|
||||
</Profiles>
|
||||
<Settings />
|
||||
</SettingsFile>
|
Binary file not shown.
Before Width: | Height: | Size: 99 KiB |
Binary file not shown.
Before Width: | Height: | Size: 132 KiB |
@ -1,19 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<configuration>
|
||||
<startup>
|
||||
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8"/>
|
||||
</startup>
|
||||
<runtime>
|
||||
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Runtime" publicKeyToken="b03f5f7f11d50a3a" culture="neutral"/>
|
||||
<bindingRedirect oldVersion="0.0.0.0-2.6.8.0" newVersion="2.6.8.0"/>
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Threading.Tasks" publicKeyToken="b03f5f7f11d50a3a" culture="neutral"/>
|
||||
<bindingRedirect oldVersion="0.0.0.0-2.6.8.0" newVersion="2.6.8.0"/>
|
||||
</dependentAssembly>
|
||||
</assemblyBinding>
|
||||
<gcAllowVeryLargeObjects enabled="true"/>
|
||||
</runtime>
|
||||
</configuration>
|
@ -1,76 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
|
||||
<assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
|
||||
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
|
||||
<security>
|
||||
<requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
|
||||
<!-- UAC Manifest Options
|
||||
If you want to change the Windows User Account Control level replace the
|
||||
requestedExecutionLevel node with one of the following.
|
||||
|
||||
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
|
||||
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
|
||||
<requestedExecutionLevel level="highestAvailable" uiAccess="false" />
|
||||
|
||||
Specifying requestedExecutionLevel element will disable file and registry virtualization.
|
||||
Remove this element if your application requires this virtualization for backwards
|
||||
compatibility.
|
||||
-->
|
||||
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
|
||||
</requestedPrivileges>
|
||||
</security>
|
||||
</trustInfo>
|
||||
|
||||
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
|
||||
<application>
|
||||
<!-- A list of the Windows versions that this application has been tested on
|
||||
and is designed to work with. Uncomment the appropriate elements
|
||||
and Windows will automatically select the most compatible environment. -->
|
||||
|
||||
<!-- Windows Vista -->
|
||||
<!--<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}" />-->
|
||||
|
||||
<!-- Windows 7 -->
|
||||
<!--<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}" />-->
|
||||
|
||||
<!-- Windows 8 -->
|
||||
<!--<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}" />-->
|
||||
|
||||
<!-- Windows 8.1 -->
|
||||
<!--<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}" />-->
|
||||
|
||||
<!-- Windows 10 -->
|
||||
<!--<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" />-->
|
||||
|
||||
</application>
|
||||
</compatibility>
|
||||
|
||||
<!-- Indicates that the application is DPI-aware and will not be automatically scaled by Windows at higher
|
||||
DPIs. Windows Presentation Foundation (WPF) applications are automatically DPI-aware and do not need
|
||||
to opt in. Windows Forms applications targeting .NET Framework 4.6 that opt into this setting, should
|
||||
also set the 'EnableWindowsFormsHighDpiAutoResizing' setting to 'true' in their app.config.
|
||||
|
||||
Makes the application long-path aware. See https://docs.microsoft.com/windows/win32/fileio/maximum-file-path-limitation -->
|
||||
<application xmlns="urn:schemas-microsoft-com:asm.v3">
|
||||
<windowsSettings>
|
||||
<dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true/pm</dpiAware>
|
||||
<dpiAwareness xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">permonitorv2,permonitor</dpiAwareness>
|
||||
<gdiScaling xmlns="http://schemas.microsoft.com/SMI/2017/WindowsSettings">true</gdiScaling>
|
||||
<longPathAware xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">true</longPathAware>
|
||||
</windowsSettings>
|
||||
</application>
|
||||
|
||||
<!-- Enable themes for Windows common controls and dialogs (Windows XP and later) -->
|
||||
<dependency>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity
|
||||
type="win32"
|
||||
name="Microsoft.Windows.Common-Controls"
|
||||
version="6.0.0.0"
|
||||
processorArchitecture="*"
|
||||
publicKeyToken="6595b64144ccf1df"
|
||||
language="*"
|
||||
/>
|
||||
</dependentAssembly>
|
||||
</dependency>
|
||||
</assembly>
|
@ -1,76 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProjectGuid>{64A99062-3C1C-4D2E-99E4-D6D92443AC98}</ProjectGuid>
|
||||
<OutputType>Exe</OutputType>
|
||||
<RootNamespace>Novetus.ReleasePreparer</RootNamespace>
|
||||
<AssemblyName>ReleasePreparer</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<Deterministic>false</Deterministic>
|
||||
<TargetFrameworkProfile />
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<DefineConstants>TRACE;DEBUG;PREPARER;NET481</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<Prefer32Bit>false</Prefer32Bit>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<DefineConstants>TRACE;PREPARER;NET481</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<Prefer32Bit>false</Prefer32Bit>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<ApplicationIcon>NovetusIcon.ico</ApplicationIcon>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
<Reference Include="System.Data.DataSetExtensions" />
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="..\NovetusCore\Classes\INIFile.cs">
|
||||
<Link>INIFile.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="ReleasePreparer.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="NovetusIcon.ico" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="app.config" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
<PropertyGroup>
|
||||
<PostBuildEvent>SET path=$(SolutionDir)build
|
||||
if not exist "%25path%25" mkdir "%25path%25"
|
||||
copy $(ProjectDir)$(OutDir) "%25path%25"\*
|
||||
del "%25path%25"\$(TargetName).vshost.exe
|
||||
del "%25path%25"\$(TargetName).vshost.exe.config
|
||||
del "%25path%25"\$(TargetName).vshost.exe.manifest
|
||||
del "%25path%25"\$(TargetName).xml</PostBuildEvent>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<PreBuildEvent>
|
||||
</PreBuildEvent>
|
||||
</PropertyGroup>
|
||||
</Project>
|
Binary file not shown.
Before Width: | Height: | Size: 132 KiB |
@ -1,34 +0,0 @@
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
// General Information about an assembly is controlled through the following
|
||||
// set of attributes. Change these attribute values to modify the information
|
||||
// associated with an assembly.
|
||||
[assembly: AssemblyTitle("ReleasePreparer")]
|
||||
[assembly: AssemblyDescription("A utility designed for faster releases.")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("Bitl")]
|
||||
[assembly: AssemblyProduct("ReleasePreparer")]
|
||||
[assembly: AssemblyCopyright("(c) Bitl 2018-2021. All rights to Roblox go to the Roblox Corporation.")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
// Setting ComVisible to false makes the types in this assembly not visible
|
||||
// to COM components. If you need to access a type in this assembly from
|
||||
// COM, set the ComVisible attribute to true on that type.
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
||||
[assembly: Guid("64a99062-3c1c-4d2e-99e4-d6d92443ac98")]
|
||||
|
||||
// Version information for an assembly consists of the following four values:
|
||||
//
|
||||
// Major Version
|
||||
// Minor Version
|
||||
// Build Number
|
||||
// Revision
|
||||
//
|
||||
// You can specify all the values or you can default the Build and Revision Numbers
|
||||
// by using the '*' as shown below:
|
||||
[assembly: AssemblyVersion("1.3.*")]
|
@ -1,156 +0,0 @@
|
||||
#region Usings
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
#endregion
|
||||
|
||||
namespace Novetus.ReleasePreparer
|
||||
{
|
||||
#region ReleasePreparer
|
||||
class ReleasePreparer
|
||||
{
|
||||
static void Main(string[] args)
|
||||
{
|
||||
string novpath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + @"\\Novetus";
|
||||
|
||||
if (args.Length > 0)
|
||||
{
|
||||
if (args.Contains("-snapshot"))
|
||||
{
|
||||
string infopath = novpath + @"\\config\\info.ini";
|
||||
string currver = GetBranch(infopath);
|
||||
TurnOnInitialSequence(infopath);
|
||||
|
||||
string pathbeta = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + @"\\betaversion.txt";
|
||||
Console.WriteLine("Creating " + pathbeta);
|
||||
if (!File.Exists(pathbeta))
|
||||
{
|
||||
// Create a file to write to.
|
||||
using (StreamWriter sw = File.CreateText(pathbeta))
|
||||
{
|
||||
sw.Write(currver);
|
||||
}
|
||||
}
|
||||
Console.WriteLine("Created " + pathbeta);
|
||||
}
|
||||
else if (args.Contains("-release"))
|
||||
{
|
||||
DoRelease(novpath);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
DoRelease(novpath);
|
||||
}
|
||||
}
|
||||
|
||||
public static void DoRelease(string novpath)
|
||||
{
|
||||
string infopath = novpath + @"\\config\\info.ini";
|
||||
string currbranch = GetBranch(infopath);
|
||||
TurnOnInitialSequence(infopath);
|
||||
|
||||
string path = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + @"\\releaseversion.txt";
|
||||
Console.WriteLine("Creating " + path);
|
||||
if (!File.Exists(path))
|
||||
{
|
||||
// Create a file to write to.
|
||||
using (StreamWriter sw = File.CreateText(path))
|
||||
{
|
||||
sw.Write(currbranch);
|
||||
}
|
||||
}
|
||||
Console.WriteLine("Created " + path);
|
||||
}
|
||||
|
||||
public static void FixedFileCopy(string src, string dest, bool overwrite)
|
||||
{
|
||||
if (File.Exists(dest))
|
||||
{
|
||||
File.SetAttributes(dest, FileAttributes.Normal);
|
||||
}
|
||||
|
||||
File.Copy(src, dest, overwrite);
|
||||
File.SetAttributes(dest, FileAttributes.Normal);
|
||||
}
|
||||
|
||||
public static void FixedFileDelete(string src)
|
||||
{
|
||||
if (File.Exists(src))
|
||||
{
|
||||
File.SetAttributes(src, FileAttributes.Normal);
|
||||
File.Delete(src);
|
||||
}
|
||||
}
|
||||
|
||||
public static string GetBranch(string infopath)
|
||||
{
|
||||
INIFile ini = new INIFile(infopath);
|
||||
return GetBranch(ini, infopath);
|
||||
}
|
||||
|
||||
public static string GetBranch(INIFile ini, string infopath)
|
||||
{
|
||||
//READ
|
||||
string versionbranch, extendedVersionNumber, extendedVersionTemplate, extendedVersionRevision, isLite;
|
||||
string section = "ProgramInfo";
|
||||
versionbranch = ini.IniReadValue(section, "Branch", "0.0");
|
||||
extendedVersionNumber = ini.IniReadValue(section, "ExtendedVersionNumber", "False");
|
||||
extendedVersionTemplate = ini.IniReadValue(section, "ExtendedVersionTemplate", "%version%");
|
||||
extendedVersionRevision = ini.IniReadValue(section, "ExtendedVersionRevision", "-1");
|
||||
isLite = ini.IniReadValue(section, "IsLite", "False");
|
||||
|
||||
string novpath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + @"\\Novetus\\bin\\Novetus.exe";
|
||||
|
||||
if (!extendedVersionNumber.Equals("False"))
|
||||
{
|
||||
var versionInfo = FileVersionInfo.GetVersionInfo(novpath);
|
||||
return extendedVersionTemplate.Replace("%version%", versionbranch)
|
||||
.Replace("%build%", versionInfo.ProductBuildPart.ToString())
|
||||
.Replace("%revision%", versionInfo.FilePrivatePart.ToString())
|
||||
.Replace("%extended-revision%", (!extendedVersionRevision.Equals("-1") ? extendedVersionRevision : ""))
|
||||
.Replace("%lite%", (!isLite.Equals("False") ? " (Lite)" : ""));
|
||||
}
|
||||
else
|
||||
{
|
||||
return versionbranch;
|
||||
}
|
||||
}
|
||||
|
||||
public static void SetToLite(string infopath)
|
||||
{
|
||||
INIFile ini = new INIFile(infopath);
|
||||
string section = "ProgramInfo";
|
||||
string isLite = ini.IniReadValue(section, "IsLite", "False");
|
||||
|
||||
try
|
||||
{
|
||||
if (!isLite.Equals("True"))
|
||||
{
|
||||
ini.IniWriteValue(section, "IsLite", "True");
|
||||
}
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
SetToLite(infopath);
|
||||
}
|
||||
}
|
||||
|
||||
public static void TurnOnInitialSequence(string infopath)
|
||||
{
|
||||
//READ
|
||||
INIFile ini = new INIFile(infopath);
|
||||
string section = "ProgramInfo";
|
||||
|
||||
string initialBootup = ini.IniReadValue(section, "InitialBootup", "True");
|
||||
if (Convert.ToBoolean(initialBootup) == false)
|
||||
{
|
||||
ini.IniWriteValue(section, "InitialBootup", "True");
|
||||
}
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
}
|
Binary file not shown.
Before Width: | Height: | Size: 132 KiB |
@ -1,3 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<configuration>
|
||||
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8"/></startup></configuration>
|
@ -1,31 +0,0 @@
|
||||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio Version 17
|
||||
VisualStudioVersion = 17.2.32630.192
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Novetus.Internal.ReleasePreparer", "Novetus.ReleasePreparer\Novetus.Internal.ReleasePreparer.csproj", "{64A99062-3C1C-4D2E-99E4-D6D92443AC98}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Novetus.ClientScriptTester", "Novetus.ClientScriptTester\Novetus.ClientScriptTester.csproj", "{83B08607-65B8-4F9C-8D0F-AB1C8EEFFAE0}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
Release|Any CPU = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{64A99062-3C1C-4D2E-99E4-D6D92443AC98}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{64A99062-3C1C-4D2E-99E4-D6D92443AC98}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{64A99062-3C1C-4D2E-99E4-D6D92443AC98}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{64A99062-3C1C-4D2E-99E4-D6D92443AC98}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{83B08607-65B8-4F9C-8D0F-AB1C8EEFFAE0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{83B08607-65B8-4F9C-8D0F-AB1C8EEFFAE0}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{83B08607-65B8-4F9C-8D0F-AB1C8EEFFAE0}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{83B08607-65B8-4F9C-8D0F-AB1C8EEFFAE0}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
SolutionGuid = {66CA6CE5-670E-48AA-A2DA-9347371D4CA0}
|
||||
EndGlobalSection
|
||||
EndGlobal
|
@ -6,7 +6,8 @@ namespace Novetus.Core
|
||||
{
|
||||
#region Discord RPC
|
||||
//code by discord obv. just renamed it to fit better.
|
||||
public class DiscordRPC
|
||||
//TODO: add proper c# implementation.
|
||||
public class IDiscordRPC
|
||||
{
|
||||
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
|
||||
public delegate void ReadyCallback();
|
||||
@ -95,5 +96,57 @@ namespace Novetus.Core
|
||||
[DllImport("discord-rpc", EntryPoint = "Discord_Respond", CallingConvention = CallingConvention.Cdecl)]
|
||||
public static extern void Respond(string userId, Reply reply);
|
||||
}
|
||||
|
||||
public class DiscordRPC
|
||||
{
|
||||
public static void ReadyCallback()
|
||||
{
|
||||
Util.ConsolePrint("Discord RPC: Ready", 3);
|
||||
}
|
||||
|
||||
public static void DisconnectedCallback(int errorCode, string message)
|
||||
{
|
||||
Util.ConsolePrint("Discord RPC: Disconnected. Reason - " + errorCode + ": " + message, 2);
|
||||
}
|
||||
|
||||
public static void ErrorCallback(int errorCode, string message)
|
||||
{
|
||||
Util.ConsolePrint("Discord RPC: Error. Reason - " + errorCode + ": " + message, 2);
|
||||
}
|
||||
|
||||
public static void JoinCallback(string secret)
|
||||
{
|
||||
}
|
||||
|
||||
public static void SpectateCallback(string secret)
|
||||
{
|
||||
}
|
||||
|
||||
public static void RequestCallback(IDiscordRPC.JoinRequest request)
|
||||
{
|
||||
}
|
||||
|
||||
public static void StartDiscord()
|
||||
{
|
||||
if (GlobalVars.UserConfiguration.DiscordPresence)
|
||||
{
|
||||
GlobalVars.handlers = new IDiscordRPC.EventHandlers();
|
||||
GlobalVars.handlers.readyCallback = ReadyCallback;
|
||||
GlobalVars.handlers.disconnectedCallback += DisconnectedCallback;
|
||||
GlobalVars.handlers.errorCallback += ErrorCallback;
|
||||
GlobalVars.handlers.joinCallback += JoinCallback;
|
||||
GlobalVars.handlers.spectateCallback += SpectateCallback;
|
||||
GlobalVars.handlers.requestCallback += RequestCallback;
|
||||
IDiscordRPC.Initialize(GlobalVars.appid, ref GlobalVars.handlers, true, "");
|
||||
Util.ConsolePrint("Discord RPC: Initalized", 3);
|
||||
|
||||
#if URI
|
||||
ClientManagement.UpdateRichPresence(GlobalVars.LauncherState.LoadingURI, true);
|
||||
#else
|
||||
ClientManagement.UpdateRichPresence(ClientManagement.GetStateForType(GlobalVars.GameOpened), true);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
|
@ -24,6 +24,9 @@
|
||||
<Compile Include="$(MSBuildThisFileDirectory)StorageAndFunctions\NovetusFuncs.cs" />
|
||||
<Compile Include="$(MSBuildThisFileDirectory)StorageAndFunctions\GlobalPaths.cs" />
|
||||
<Compile Include="$(MSBuildThisFileDirectory)StorageAndFunctions\GlobalVars.cs" />
|
||||
<Compile Include="$(MSBuildThisFileDirectory)StorageAndFunctions\Roblox Helpers\RobloxTypes.cs" />
|
||||
<Compile Include="$(MSBuildThisFileDirectory)StorageAndFunctions\Roblox Helpers\RobloxXML.cs" />
|
||||
<Compile Include="$(MSBuildThisFileDirectory)StorageAndFunctions\Roblox Helpers\Vector3.cs" />
|
||||
<Compile Include="$(MSBuildThisFileDirectory)StorageAndFunctions\Util.cs" />
|
||||
<Compile Include="$(MSBuildThisFileDirectory)StorageAndFunctions\NetFuncs.cs" />
|
||||
<Compile Include="$(MSBuildThisFileDirectory)StorageAndFunctions\SecurityFuncs.cs" />
|
||||
|
@ -6,9 +6,9 @@ using System.Globalization;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
using System.Xml.Linq;
|
||||
using System.Security.Cryptography;
|
||||
using System.Windows.Forms;
|
||||
using System.Reflection;
|
||||
#endregion
|
||||
|
||||
@ -198,24 +198,24 @@ namespace Novetus.Core
|
||||
DefaultClientInfo.Description = desc;
|
||||
|
||||
string[] lines = {
|
||||
SecurityFuncs.Base64Encode(DefaultClientInfo.UsesPlayerName.ToString()),
|
||||
SecurityFuncs.Base64Encode(DefaultClientInfo.UsesID.ToString()),
|
||||
SecurityFuncs.Base64Encode(DefaultClientInfo.Warning.ToString()),
|
||||
SecurityFuncs.Base64Encode(DefaultClientInfo.LegacyMode.ToString()),
|
||||
SecurityFuncs.Base64Encode(DefaultClientInfo.ClientMD5.ToString()),
|
||||
SecurityFuncs.Base64Encode(DefaultClientInfo.ScriptMD5.ToString()),
|
||||
SecurityFuncs.Base64Encode(DefaultClientInfo.Description.ToString()),
|
||||
SecurityFuncs.Base64Encode(placeholder.ToString()),
|
||||
SecurityFuncs.Base64Encode(DefaultClientInfo.Fix2007.ToString()),
|
||||
SecurityFuncs.Base64Encode(DefaultClientInfo.AlreadyHasSecurity.ToString()),
|
||||
SecurityFuncs.Base64Encode(((int)DefaultClientInfo.ClientLoadOptions).ToString()),
|
||||
SecurityFuncs.Base64Encode(DefaultClientInfo.SeperateFolders.ToString()),
|
||||
SecurityFuncs.Base64Encode(DefaultClientInfo.UsesCustomClientEXEName.ToString()),
|
||||
SecurityFuncs.Base64Encode(DefaultClientInfo.CustomClientEXEName.ToString().Replace("\\", "")),
|
||||
SecurityFuncs.Base64Encode(DefaultClientInfo.CommandLineArgs.ToString())
|
||||
SecurityFuncs.Encode(DefaultClientInfo.UsesPlayerName.ToString()),
|
||||
SecurityFuncs.Encode(DefaultClientInfo.UsesID.ToString()),
|
||||
SecurityFuncs.Encode(DefaultClientInfo.Warning.ToString()),
|
||||
SecurityFuncs.Encode(DefaultClientInfo.LegacyMode.ToString()),
|
||||
SecurityFuncs.Encode(DefaultClientInfo.ClientMD5.ToString()),
|
||||
SecurityFuncs.Encode(DefaultClientInfo.ScriptMD5.ToString()),
|
||||
SecurityFuncs.Encode(DefaultClientInfo.Description.ToString()),
|
||||
SecurityFuncs.Encode(placeholder.ToString()),
|
||||
SecurityFuncs.Encode(DefaultClientInfo.Fix2007.ToString()),
|
||||
SecurityFuncs.Encode(DefaultClientInfo.AlreadyHasSecurity.ToString()),
|
||||
SecurityFuncs.Encode(((int)DefaultClientInfo.ClientLoadOptions).ToString()),
|
||||
SecurityFuncs.Encode(DefaultClientInfo.SeperateFolders.ToString()),
|
||||
SecurityFuncs.Encode(DefaultClientInfo.UsesCustomClientEXEName.ToString()),
|
||||
SecurityFuncs.Encode(DefaultClientInfo.CustomClientEXEName.ToString().Replace("\\", "")),
|
||||
SecurityFuncs.Encode(DefaultClientInfo.CommandLineArgs.ToString())
|
||||
};
|
||||
|
||||
File.WriteAllText(path + "\\clientinfo.nov", SecurityFuncs.Base64Encode(string.Join("|", lines)));
|
||||
File.WriteAllText(path + "\\clientinfo.nov", SecurityFuncs.Encode(string.Join("|", lines)));
|
||||
}
|
||||
|
||||
//NOT FOR SDK.
|
||||
@ -260,36 +260,36 @@ namespace Novetus.Core
|
||||
file = reader.ReadLine();
|
||||
}
|
||||
|
||||
string ConvertedLine = SecurityFuncs.Base64Decode(file);
|
||||
string ConvertedLine = SecurityFuncs.Decode(file);
|
||||
string[] result = ConvertedLine.Split('|');
|
||||
usesplayername = SecurityFuncs.Base64Decode(result[0]);
|
||||
usesid = SecurityFuncs.Base64Decode(result[1]);
|
||||
warning = SecurityFuncs.Base64Decode(result[2]);
|
||||
legacymode = SecurityFuncs.Base64Decode(result[3]);
|
||||
clientmd5 = SecurityFuncs.Base64Decode(result[4]);
|
||||
scriptmd5 = SecurityFuncs.Base64Decode(result[5]);
|
||||
desc = SecurityFuncs.Base64Decode(result[6]);
|
||||
fix2007 = SecurityFuncs.Base64Decode(result[8]);
|
||||
alreadyhassecurity = SecurityFuncs.Base64Decode(result[9]);
|
||||
clientloadoptions = SecurityFuncs.Base64Decode(result[10]);
|
||||
usesplayername = SecurityFuncs.Decode(result[0]);
|
||||
usesid = SecurityFuncs.Decode(result[1]);
|
||||
warning = SecurityFuncs.Decode(result[2]);
|
||||
legacymode = SecurityFuncs.Decode(result[3]);
|
||||
clientmd5 = SecurityFuncs.Decode(result[4]);
|
||||
scriptmd5 = SecurityFuncs.Decode(result[5]);
|
||||
desc = SecurityFuncs.Decode(result[6]);
|
||||
fix2007 = SecurityFuncs.Decode(result[8]);
|
||||
alreadyhassecurity = SecurityFuncs.Decode(result[9]);
|
||||
clientloadoptions = SecurityFuncs.Decode(result[10]);
|
||||
folders = "False";
|
||||
usescustomname = "False";
|
||||
customname = "";
|
||||
try
|
||||
{
|
||||
commandlineargs = SecurityFuncs.Base64Decode(result[11]);
|
||||
commandlineargs = SecurityFuncs.Decode(result[11]);
|
||||
|
||||
bool parsedValue;
|
||||
if (bool.TryParse(commandlineargs, out parsedValue))
|
||||
{
|
||||
folders = SecurityFuncs.Base64Decode(result[11]);
|
||||
commandlineargs = SecurityFuncs.Base64Decode(result[12]);
|
||||
folders = SecurityFuncs.Decode(result[11]);
|
||||
commandlineargs = SecurityFuncs.Decode(result[12]);
|
||||
bool parsedValue2;
|
||||
if (bool.TryParse(commandlineargs, out parsedValue2))
|
||||
{
|
||||
usescustomname = SecurityFuncs.Base64Decode(result[12]);
|
||||
customname = SecurityFuncs.Base64Decode(result[13]);
|
||||
commandlineargs = SecurityFuncs.Base64Decode(result[14]);
|
||||
usescustomname = SecurityFuncs.Decode(result[12]);
|
||||
customname = SecurityFuncs.Decode(result[13]);
|
||||
commandlineargs = SecurityFuncs.Decode(result[14]);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -297,7 +297,7 @@ namespace Novetus.Core
|
||||
{
|
||||
//fake this option until we properly apply it.
|
||||
clientloadoptions = "2";
|
||||
commandlineargs = SecurityFuncs.Base64Decode(result[10]);
|
||||
commandlineargs = SecurityFuncs.Decode(result[10]);
|
||||
}
|
||||
|
||||
info.UsesPlayerName = Convert.ToBoolean(usesplayername);
|
||||
@ -365,7 +365,8 @@ namespace Novetus.Core
|
||||
if (initial)
|
||||
{
|
||||
GlobalVars.presence.largeImageKey = GlobalVars.imagekey_large;
|
||||
GlobalVars.presence.startTimestamp = SecurityFuncs.UnixTimeNow();
|
||||
var timeSpan = (DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0));
|
||||
GlobalVars.presence.startTimestamp = (long)timeSpan.TotalSeconds;
|
||||
}
|
||||
|
||||
string ValidMapname = (string.IsNullOrWhiteSpace(mapname) ? "Place1" : mapname);
|
||||
@ -425,7 +426,7 @@ namespace Novetus.Core
|
||||
break;
|
||||
}
|
||||
|
||||
DiscordRPC.UpdatePresence(ref GlobalVars.presence);
|
||||
IDiscordRPC.UpdatePresence(ref GlobalVars.presence);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1046,7 +1047,7 @@ namespace Novetus.Core
|
||||
string fileMD5 = parsedFileParams[1];
|
||||
string fullFilePath = GlobalPaths.ClientDir + @"\\" + GlobalVars.UserConfiguration.SelectedClient + @"\\" + filePath;
|
||||
|
||||
if (!SecurityFuncs.CheckMD5(fileMD5, fullFilePath))
|
||||
if (!CheckMD5(fileMD5, fullFilePath))
|
||||
{
|
||||
#if URI
|
||||
UpdateStatus(label, "The client has been detected as modified.");
|
||||
@ -1074,6 +1075,86 @@ namespace Novetus.Core
|
||||
}
|
||||
}
|
||||
|
||||
public static bool CheckMD5(string MD5Hash, string path)
|
||||
{
|
||||
if (!File.Exists(path))
|
||||
return false;
|
||||
|
||||
using (var md5 = MD5.Create())
|
||||
{
|
||||
using (var stream = File.OpenRead(path))
|
||||
{
|
||||
byte[] hash = md5.ComputeHash(stream);
|
||||
string clientMD5 = BitConverter.ToString(hash).Replace("-", "");
|
||||
if (clientMD5.Equals(MD5Hash))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static bool checkClientMD5(string client)
|
||||
{
|
||||
if (!GlobalVars.AdminMode)
|
||||
{
|
||||
if (!GlobalVars.SelectedClientInfo.AlreadyHasSecurity)
|
||||
{
|
||||
string rbxexe = "";
|
||||
string BasePath = GlobalPaths.BasePath + "\\clients\\" + client;
|
||||
if (GlobalVars.SelectedClientInfo.LegacyMode)
|
||||
{
|
||||
rbxexe = BasePath + "\\RobloxApp.exe";
|
||||
}
|
||||
else if (GlobalVars.SelectedClientInfo.SeperateFolders)
|
||||
{
|
||||
rbxexe = BasePath + "\\client\\RobloxApp_client.exe";
|
||||
}
|
||||
else if (GlobalVars.SelectedClientInfo.UsesCustomClientEXEName)
|
||||
{
|
||||
rbxexe = BasePath + @"\\" + GlobalVars.SelectedClientInfo.CustomClientEXEName;
|
||||
}
|
||||
else
|
||||
{
|
||||
rbxexe = BasePath + "\\RobloxApp_client.exe";
|
||||
}
|
||||
return CheckMD5(GlobalVars.SelectedClientInfo.ClientMD5, rbxexe);
|
||||
}
|
||||
else
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
public static bool checkScriptMD5(string client)
|
||||
{
|
||||
if (!GlobalVars.AdminMode)
|
||||
{
|
||||
if (!GlobalVars.SelectedClientInfo.AlreadyHasSecurity)
|
||||
{
|
||||
string rbxscript = GlobalPaths.BasePath + "\\clients\\" + client + "\\content\\scripts\\" + GlobalPaths.ScriptName + ".lua";
|
||||
return CheckMD5(GlobalVars.SelectedClientInfo.ScriptMD5, rbxscript);
|
||||
}
|
||||
else
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
#if URI
|
||||
public static void LaunchRBXClient(string ClientName, ScriptType type, bool no3d, bool nomap, EventHandler e, Label label)
|
||||
#else
|
||||
@ -1271,7 +1352,7 @@ namespace Novetus.Core
|
||||
{
|
||||
if (info.AlreadyHasSecurity != true)
|
||||
{
|
||||
if (SecurityFuncs.checkClientMD5(ClientName) && SecurityFuncs.checkScriptMD5(ClientName))
|
||||
if (checkClientMD5(ClientName) && checkScriptMD5(ClientName))
|
||||
{
|
||||
OpenClient(type, rbxexe, args, ClientName, mapname, e);
|
||||
}
|
||||
@ -1755,6 +1836,13 @@ namespace Novetus.Core
|
||||
}
|
||||
}
|
||||
|
||||
public static string CopyMapToRBXAsset()
|
||||
{
|
||||
string clientcontentpath = GlobalPaths.ClientDir + @"\\" + GlobalVars.UserConfiguration.SelectedClient + @"\\content\\temp.rbxl";
|
||||
Util.FixedFileCopy(GlobalVars.UserConfiguration.MapPath, clientcontentpath, true);
|
||||
return GlobalPaths.AltBaseGameDir + "temp.rbxl";
|
||||
}
|
||||
|
||||
public static string CompileScript(string code, string tag, string endtag, string mapfile, string luafile, string rbxexe, bool usesharedtags = true)
|
||||
{
|
||||
return CompileScript(GlobalVars.UserConfiguration.SelectedClient, code, tag, endtag, mapfile, luafile, rbxexe, usesharedtags);
|
||||
@ -1878,7 +1966,7 @@ namespace Novetus.Core
|
||||
.Replace("%extrad%", GlobalPaths.extraGameDir + GlobalVars.UserCustomization.Extra)
|
||||
.Replace("%hat4d%", GlobalPaths.hatGameDir + GlobalVars.UserCustomization.Extra)
|
||||
.Replace("%mapfiled%", GlobalPaths.BaseGameDir + GlobalVars.UserConfiguration.MapPathSnip.Replace(@"\\", @"\").Replace(@"/", @"\"))
|
||||
.Replace("%mapfilec%", extractedCode.Contains("%mapfilec%") ? NovetusFuncs.CopyMapToRBXAsset() : "")
|
||||
.Replace("%mapfilec%", extractedCode.Contains("%mapfilec%") ? CopyMapToRBXAsset() : "")
|
||||
.Replace("%tripcode%", GlobalVars.PlayerTripcode)
|
||||
.Replace("%scripttype%", Generator.GetNameForType(type))
|
||||
.Replace("%notifications%", GlobalVars.UserConfiguration.ShowServerNotifications.ToString().ToLower())
|
||||
|
@ -11,7 +11,8 @@ using System.Drawing.Imaging;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Windows.Forms;
|
||||
using System.Xml.Serialization;
|
||||
using System.Runtime.Versioning;
|
||||
using System.Xml;
|
||||
using System.Xml.Linq;
|
||||
#endregion
|
||||
|
||||
namespace Novetus.Core
|
||||
@ -971,7 +972,8 @@ namespace Novetus.Core
|
||||
|
||||
if (!forcewrite)
|
||||
{
|
||||
string curval = NovetusFuncs.GenerateAndReturnTripcode();
|
||||
//Powered by https://github.com/davcs86/csharp-uhwid
|
||||
string curval = UHWIDEngine.AdvancedUid;
|
||||
if (!GlobalVars.PlayerTripcode.Equals(curval))
|
||||
{
|
||||
GlobalVars.PlayerTripcode = curval;
|
||||
@ -1360,6 +1362,101 @@ namespace Novetus.Core
|
||||
GlobalVars.UserCustomization = new FileFormat.CustomizationConfig();
|
||||
ReloadLoadoutValue();
|
||||
}
|
||||
public static string GetItemTextureLocalPath(string item, string nameprefix)
|
||||
{
|
||||
//don't bother, we're offline.
|
||||
if (GlobalVars.ExternalIP.Equals("localhost"))
|
||||
return "";
|
||||
|
||||
if (!GlobalVars.SelectedClientInfo.CommandLineArgs.Contains("%localizeonlineclothing%"))
|
||||
return "";
|
||||
|
||||
if (item.Contains("http://") || item.Contains("https://"))
|
||||
{
|
||||
string peram = "id=";
|
||||
string fullname = nameprefix + "Temp.png";
|
||||
|
||||
if (item.Contains(peram))
|
||||
{
|
||||
string id = item.After(peram);
|
||||
fullname = id + ".png";
|
||||
}
|
||||
else
|
||||
{
|
||||
return item;
|
||||
}
|
||||
|
||||
Downloader download = new Downloader(item, fullname, "", GlobalPaths.AssetCacheDirAssets);
|
||||
|
||||
try
|
||||
{
|
||||
string path = download.GetFullDLPath();
|
||||
download.InitDownloadNoDialog(path);
|
||||
return GlobalPaths.AssetCacheAssetsGameDir + download.fileName;
|
||||
}
|
||||
#if URI || LAUNCHER || BASICLAUNCHER
|
||||
catch (Exception ex)
|
||||
{
|
||||
Util.LogExceptions(ex);
|
||||
#else
|
||||
catch (Exception)
|
||||
{
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
return "";
|
||||
}
|
||||
|
||||
public static string GetItemTextureID(string item, string name, AssetCacheDefBasic assetCacheDef)
|
||||
{
|
||||
//don't bother, we're offline.
|
||||
if (GlobalVars.ExternalIP.Equals("localhost"))
|
||||
return "";
|
||||
|
||||
if (!GlobalVars.SelectedClientInfo.CommandLineArgs.Contains("%localizeonlineclothing%"))
|
||||
return "";
|
||||
|
||||
if (item.Contains("http://") || item.Contains("https://"))
|
||||
{
|
||||
string peram = "id=";
|
||||
if (!item.Contains(peram))
|
||||
{
|
||||
return item;
|
||||
}
|
||||
|
||||
Downloader download = new Downloader(item, name + "Temp.rbxm", "", GlobalPaths.AssetCacheDirAssets);
|
||||
|
||||
try
|
||||
{
|
||||
string path = download.GetFullDLPath();
|
||||
download.InitDownloadNoDialog(path);
|
||||
string oldfile = File.ReadAllText(path);
|
||||
string fixedfile = RobloxXML.RemoveInvalidXmlChars(RobloxXML.ReplaceHexadecimalSymbols(oldfile)).Replace("	", "\t").Replace("#9;", "\t");
|
||||
XDocument doc = null;
|
||||
XmlReaderSettings xmlReaderSettings = new XmlReaderSettings { CheckCharacters = false };
|
||||
Stream filestream = Util.GenerateStreamFromString(fixedfile);
|
||||
using (XmlReader xmlReader = XmlReader.Create(filestream, xmlReaderSettings))
|
||||
{
|
||||
xmlReader.MoveToContent();
|
||||
doc = XDocument.Load(xmlReader);
|
||||
}
|
||||
|
||||
return RobloxXML.GetURLInNodes(doc, assetCacheDef.Class, assetCacheDef.Id[0], item);
|
||||
}
|
||||
#if URI || LAUNCHER || BASICLAUNCHER
|
||||
catch (Exception ex)
|
||||
{
|
||||
Util.LogExceptions(ex);
|
||||
#else
|
||||
catch (Exception)
|
||||
{
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
return "";
|
||||
}
|
||||
|
||||
public static void ReloadLoadoutValue(bool localizeOnlineClothing = false)
|
||||
{
|
||||
@ -1404,15 +1501,15 @@ namespace Novetus.Core
|
||||
|
||||
if (localizeOnlineClothing)
|
||||
{
|
||||
GlobalVars.TShirtTextureID = NovetusFuncs.GetItemTextureID(GlobalVars.UserCustomization.TShirt, "TShirt", new AssetCacheDefBasic("ShirtGraphic", new string[] { "Graphic" }));
|
||||
GlobalVars.ShirtTextureID = NovetusFuncs.GetItemTextureID(GlobalVars.UserCustomization.Shirt, "Shirt", new AssetCacheDefBasic("Shirt", new string[] { "ShirtTemplate" }));
|
||||
GlobalVars.PantsTextureID = NovetusFuncs.GetItemTextureID(GlobalVars.UserCustomization.Pants, "Pants", new AssetCacheDefBasic("Pants", new string[] { "PantsTemplate" }));
|
||||
GlobalVars.FaceTextureID = NovetusFuncs.GetItemTextureID(GlobalVars.UserCustomization.Face, "Face", new AssetCacheDefBasic("Decal", new string[] { "Texture" }));
|
||||
GlobalVars.TShirtTextureID = GetItemTextureID(GlobalVars.UserCustomization.TShirt, "TShirt", new AssetCacheDefBasic("ShirtGraphic", new string[] { "Graphic" }));
|
||||
GlobalVars.ShirtTextureID = GetItemTextureID(GlobalVars.UserCustomization.Shirt, "Shirt", new AssetCacheDefBasic("Shirt", new string[] { "ShirtTemplate" }));
|
||||
GlobalVars.PantsTextureID = GetItemTextureID(GlobalVars.UserCustomization.Pants, "Pants", new AssetCacheDefBasic("Pants", new string[] { "PantsTemplate" }));
|
||||
GlobalVars.FaceTextureID = GetItemTextureID(GlobalVars.UserCustomization.Face, "Face", new AssetCacheDefBasic("Decal", new string[] { "Texture" }));
|
||||
|
||||
GlobalVars.TShirtTextureLocal = NovetusFuncs.GetItemTextureLocalPath(GlobalVars.TShirtTextureID, "TShirt");
|
||||
GlobalVars.ShirtTextureLocal = NovetusFuncs.GetItemTextureLocalPath(GlobalVars.ShirtTextureID, "Shirt");
|
||||
GlobalVars.PantsTextureLocal = NovetusFuncs.GetItemTextureLocalPath(GlobalVars.PantsTextureID, "Pants");
|
||||
GlobalVars.FaceTextureLocal = NovetusFuncs.GetItemTextureLocalPath(GlobalVars.FaceTextureID, "Face");
|
||||
GlobalVars.TShirtTextureLocal = GetItemTextureLocalPath(GlobalVars.TShirtTextureID, "TShirt");
|
||||
GlobalVars.ShirtTextureLocal = GetItemTextureLocalPath(GlobalVars.ShirtTextureID, "Shirt");
|
||||
GlobalVars.PantsTextureLocal = GetItemTextureLocalPath(GlobalVars.PantsTextureID, "Pants");
|
||||
GlobalVars.FaceTextureLocal = GetItemTextureLocalPath(GlobalVars.FaceTextureID, "Face");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -81,7 +81,7 @@ namespace Novetus.Core
|
||||
LoadingURI = 6
|
||||
}
|
||||
|
||||
public static DiscordRPC.EventHandlers handlers;
|
||||
public static IDiscordRPC.EventHandlers handlers;
|
||||
#endregion
|
||||
|
||||
#region Class definitions
|
||||
@ -97,7 +97,7 @@ namespace Novetus.Core
|
||||
public static string DefaultIP = "localhost";
|
||||
public static int DefaultRobloxPort = 53640;
|
||||
public static GameServer CurrentServer = new GameServer(DefaultIP, DefaultRobloxPort);
|
||||
public static string ExternalIP = SecurityFuncs.GetExternalIPAddress();
|
||||
public static string ExternalIP = NovetusFuncs.GetExternalIPAddress();
|
||||
public static ScriptType GameOpened = ScriptType.None;
|
||||
public static string PlayerTripcode = "";
|
||||
#if LAUNCHER || URI
|
||||
@ -127,7 +127,7 @@ namespace Novetus.Core
|
||||
|
||||
#region Discord Variables
|
||||
//discord
|
||||
public static DiscordRPC.RichPresence presence;
|
||||
public static IDiscordRPC.RichPresence presence;
|
||||
public static string appid = "505955125727330324";
|
||||
public static string imagekey_large = "novetus_large";
|
||||
public static string image_ingame = "ingame_small";
|
||||
|
@ -10,21 +10,48 @@ using Titanium.Web.Proxy.Models;
|
||||
namespace Novetus.Core
|
||||
{
|
||||
#region NetFuncs
|
||||
|
||||
public static class NetFuncs
|
||||
{
|
||||
public static void InitUPnP(EventHandler<DeviceEventArgs> DeviceFound, EventHandler<DeviceEventArgs> DeviceLost)
|
||||
public static void InitUPnP()
|
||||
{
|
||||
if (GlobalVars.UserConfiguration.UPnP)
|
||||
{
|
||||
try
|
||||
{
|
||||
NatUtility.DeviceFound += DeviceFound;
|
||||
NatUtility.StartDiscovery();
|
||||
Util.ConsolePrint("UPnP: Service initialized", 3);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Util.LogExceptions(ex);
|
||||
Util.ConsolePrint("UPnP: Unable to initialize UPnP. Reason - " + ex.Message, 2);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static void DeviceFound(object sender, DeviceEventArgs args)
|
||||
{
|
||||
try
|
||||
{
|
||||
INatDevice device = args.Device;
|
||||
string IP = !string.IsNullOrWhiteSpace(GlobalVars.UserConfiguration.AlternateServerIP) ? GlobalVars.UserConfiguration.AlternateServerIP : device.GetExternalIP().ToString();
|
||||
Util.ConsolePrint("UPnP: Device '" + IP + "' registered.", 3);
|
||||
StartUPnP(device, Protocol.Udp, GlobalVars.UserConfiguration.RobloxPort);
|
||||
StartUPnP(device, Protocol.Tcp, GlobalVars.UserConfiguration.RobloxPort);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Util.LogExceptions(ex);
|
||||
Util.ConsolePrint("UPnP: Unable to register device. Reason - " + ex.Message, 2);
|
||||
}
|
||||
}
|
||||
|
||||
public static void StartUPnP(INatDevice device, Protocol protocol, int port)
|
||||
{
|
||||
if (GlobalVars.UserConfiguration.UPnP)
|
||||
{
|
||||
try
|
||||
{
|
||||
Mapping checker = device.GetSpecificMapping(protocol, port);
|
||||
int mapPublic = checker.PublicPort;
|
||||
@ -35,12 +62,23 @@ namespace Novetus.Core
|
||||
Mapping portmap = new Mapping(protocol, port, port);
|
||||
device.CreatePortMap(portmap);
|
||||
}
|
||||
|
||||
string IP = !string.IsNullOrWhiteSpace(GlobalVars.UserConfiguration.AlternateServerIP) ? GlobalVars.UserConfiguration.AlternateServerIP : device.GetExternalIP().ToString();
|
||||
Util.ConsolePrint("UPnP: Port " + port + " opened on '" + IP + "' (" + protocol.ToString() + ")", 3);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Util.LogExceptions(ex);
|
||||
Util.ConsolePrint("UPnP: Unable to open port mapping. Reason - " + ex.Message, 2);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static void StopUPnP(INatDevice device, Protocol protocol, int port)
|
||||
{
|
||||
if (GlobalVars.UserConfiguration.UPnP)
|
||||
{
|
||||
try
|
||||
{
|
||||
Mapping checker = device.GetSpecificMapping(protocol, port);
|
||||
int mapPublic = checker.PublicPort;
|
||||
@ -51,6 +89,15 @@ namespace Novetus.Core
|
||||
Mapping portmap = new Mapping(protocol, port, port);
|
||||
device.DeletePortMap(portmap);
|
||||
}
|
||||
|
||||
string IP = !string.IsNullOrWhiteSpace(GlobalVars.UserConfiguration.AlternateServerIP) ? GlobalVars.UserConfiguration.AlternateServerIP : device.GetExternalIP().ToString();
|
||||
Util.ConsolePrint("UPnP: Port " + port + " closed on '" + IP + "' (" + protocol.ToString() + ")", 3);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Util.LogExceptions(ex);
|
||||
Util.ConsolePrint("UPnP: Unable to close port mapping. Reason - " + ex.Message, 2);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1,13 +1,10 @@
|
||||
#region Usings
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Threading.Tasks;
|
||||
using System.Xml;
|
||||
using System.Xml.Linq;
|
||||
using System.Linq;
|
||||
using System.Windows.Forms;
|
||||
using System.Collections.Generic;
|
||||
using System.Net;
|
||||
#endregion
|
||||
|
||||
namespace Novetus.Core
|
||||
@ -15,127 +12,69 @@ namespace Novetus.Core
|
||||
#region Novetus Functions
|
||||
public class NovetusFuncs
|
||||
{
|
||||
public static string CopyMapToRBXAsset()
|
||||
public static int GenerateRandomNumber()
|
||||
{
|
||||
string clientcontentpath = GlobalPaths.ClientDir + @"\\" + GlobalVars.UserConfiguration.SelectedClient + @"\\content\\temp.rbxl";
|
||||
Util.FixedFileCopy(GlobalVars.UserConfiguration.MapPath, clientcontentpath, true);
|
||||
return GlobalPaths.AltBaseGameDir + "temp.rbxl";
|
||||
CryptoRandom random = new CryptoRandom();
|
||||
int randomID = 0;
|
||||
int randIDmode = random.Next(0, 8);
|
||||
int idlimit = 0;
|
||||
|
||||
switch (randIDmode)
|
||||
{
|
||||
case 0:
|
||||
idlimit = 9;
|
||||
break;
|
||||
case 1:
|
||||
idlimit = 99;
|
||||
break;
|
||||
case 2:
|
||||
idlimit = 999;
|
||||
break;
|
||||
case 3:
|
||||
idlimit = 9999;
|
||||
break;
|
||||
case 4:
|
||||
idlimit = 99999;
|
||||
break;
|
||||
case 5:
|
||||
idlimit = 999999;
|
||||
break;
|
||||
case 6:
|
||||
idlimit = 9999999;
|
||||
break;
|
||||
case 7:
|
||||
idlimit = 99999999;
|
||||
break;
|
||||
case 8:
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
public static string GetItemTextureLocalPath(string item, string nameprefix)
|
||||
if (idlimit > 0)
|
||||
{
|
||||
//don't bother, we're offline.
|
||||
if (GlobalVars.ExternalIP.Equals("localhost"))
|
||||
return "";
|
||||
|
||||
if (!GlobalVars.SelectedClientInfo.CommandLineArgs.Contains("%localizeonlineclothing%"))
|
||||
return "";
|
||||
|
||||
if (item.Contains("http://") || item.Contains("https://"))
|
||||
{
|
||||
string peram = "id=";
|
||||
string fullname = nameprefix + "Temp.png";
|
||||
|
||||
if (item.Contains(peram))
|
||||
{
|
||||
string id = item.After(peram);
|
||||
fullname = id + ".png";
|
||||
randomID = random.Next(0, idlimit);
|
||||
}
|
||||
else
|
||||
{
|
||||
return item;
|
||||
randomID = random.Next();
|
||||
}
|
||||
|
||||
Downloader download = new Downloader(item, fullname, "", GlobalPaths.AssetCacheDirAssets);
|
||||
|
||||
try
|
||||
{
|
||||
string path = download.GetFullDLPath();
|
||||
download.InitDownloadNoDialog(path);
|
||||
return GlobalPaths.AssetCacheAssetsGameDir + download.fileName;
|
||||
}
|
||||
#if URI || LAUNCHER || BASICLAUNCHER
|
||||
catch (Exception ex)
|
||||
{
|
||||
Util.LogExceptions(ex);
|
||||
#else
|
||||
catch (Exception)
|
||||
{
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
return "";
|
||||
}
|
||||
|
||||
public static string GetItemTextureID(string item, string name, AssetCacheDefBasic assetCacheDef)
|
||||
{
|
||||
//don't bother, we're offline.
|
||||
if (GlobalVars.ExternalIP.Equals("localhost"))
|
||||
return "";
|
||||
|
||||
if (!GlobalVars.SelectedClientInfo.CommandLineArgs.Contains("%localizeonlineclothing%"))
|
||||
return "";
|
||||
|
||||
if (item.Contains("http://") || item.Contains("https://"))
|
||||
{
|
||||
string peram = "id=";
|
||||
if (!item.Contains(peram))
|
||||
{
|
||||
return item;
|
||||
}
|
||||
|
||||
Downloader download = new Downloader(item, name + "Temp.rbxm", "", GlobalPaths.AssetCacheDirAssets);
|
||||
|
||||
try
|
||||
{
|
||||
string path = download.GetFullDLPath();
|
||||
download.InitDownloadNoDialog(path);
|
||||
string oldfile = File.ReadAllText(path);
|
||||
string fixedfile = RobloxXML.RemoveInvalidXmlChars(RobloxXML.ReplaceHexadecimalSymbols(oldfile)).Replace("	", "\t").Replace("#9;", "\t");
|
||||
XDocument doc = null;
|
||||
XmlReaderSettings xmlReaderSettings = new XmlReaderSettings { CheckCharacters = false };
|
||||
Stream filestream = Util.GenerateStreamFromString(fixedfile);
|
||||
using (XmlReader xmlReader = XmlReader.Create(filestream, xmlReaderSettings))
|
||||
{
|
||||
xmlReader.MoveToContent();
|
||||
doc = XDocument.Load(xmlReader);
|
||||
}
|
||||
|
||||
return RobloxXML.GetURLInNodes(doc, assetCacheDef.Class, assetCacheDef.Id[0], item);
|
||||
}
|
||||
#if URI || LAUNCHER || BASICLAUNCHER
|
||||
catch (Exception ex)
|
||||
{
|
||||
Util.LogExceptions(ex);
|
||||
#else
|
||||
catch (Exception)
|
||||
{
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
return "";
|
||||
//2147483647 is max id.
|
||||
return randomID;
|
||||
}
|
||||
|
||||
public static void GeneratePlayerID()
|
||||
{
|
||||
int randomID = SecurityFuncs.GenerateRandomNumber();
|
||||
int randomID = GenerateRandomNumber();
|
||||
//2147483647 is max id.
|
||||
GlobalVars.UserConfiguration.UserID = randomID;
|
||||
}
|
||||
|
||||
public static string GenerateAndReturnTripcode()
|
||||
{
|
||||
//Powered by https://github.com/davcs86/csharp-uhwid
|
||||
return UHWIDEngine.AdvancedUid;
|
||||
}
|
||||
|
||||
public static void PingMasterServer(bool online, string reason)
|
||||
{
|
||||
if (online)
|
||||
{
|
||||
GlobalVars.ServerID = SecurityFuncs.RandomString(30) + SecurityFuncs.GenerateRandomNumber();
|
||||
GlobalVars.ServerID = RandomString(30) + GenerateRandomNumber();
|
||||
GlobalVars.PingURL = "http://" + GlobalVars.UserConfiguration.ServerBrowserServerAddress +
|
||||
"/list.php?name=" + GlobalVars.UserConfiguration.ServerBrowserServerName +
|
||||
"&ip=" + (!string.IsNullOrWhiteSpace(GlobalVars.UserConfiguration.AlternateServerIP) ? GlobalVars.UserConfiguration.AlternateServerIP : GlobalVars.ExternalIP) +
|
||||
@ -152,11 +91,7 @@ namespace Novetus.Core
|
||||
}
|
||||
|
||||
Util.ConsolePrint("Pinging master server. " + reason, 4);
|
||||
Task.Factory.StartNew(() => TryPing());
|
||||
}
|
||||
|
||||
private static void TryPing()
|
||||
{
|
||||
Task.Factory.StartNew(() => {
|
||||
string response = Util.HttpGet(GlobalVars.PingURL);
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(response))
|
||||
@ -175,22 +110,23 @@ namespace Novetus.Core
|
||||
}
|
||||
|
||||
GlobalVars.PingURL = "";
|
||||
});
|
||||
}
|
||||
|
||||
public static string[] LoadServerInformation()
|
||||
{
|
||||
string[] lines1 = {
|
||||
SecurityFuncs.Base64Encode(!string.IsNullOrWhiteSpace(GlobalVars.UserConfiguration.AlternateServerIP) ? GlobalVars.UserConfiguration.AlternateServerIP : GlobalVars.ExternalIP),
|
||||
SecurityFuncs.Base64Encode(GlobalVars.UserConfiguration.RobloxPort.ToString()),
|
||||
SecurityFuncs.Base64Encode(GlobalVars.UserConfiguration.SelectedClient)
|
||||
SecurityFuncs.Encode(!string.IsNullOrWhiteSpace(GlobalVars.UserConfiguration.AlternateServerIP) ? GlobalVars.UserConfiguration.AlternateServerIP : GlobalVars.ExternalIP),
|
||||
SecurityFuncs.Encode(GlobalVars.UserConfiguration.RobloxPort.ToString()),
|
||||
SecurityFuncs.Encode(GlobalVars.UserConfiguration.SelectedClient)
|
||||
};
|
||||
string URI = "novetus://" + SecurityFuncs.Base64Encode(string.Join("|", lines1), true);
|
||||
string URI = "novetus://" + SecurityFuncs.Encode(string.Join("|", lines1), true);
|
||||
string[] lines2 = {
|
||||
SecurityFuncs.Base64Encode("localhost"),
|
||||
SecurityFuncs.Base64Encode(GlobalVars.UserConfiguration.RobloxPort.ToString()),
|
||||
SecurityFuncs.Base64Encode(GlobalVars.UserConfiguration.SelectedClient)
|
||||
SecurityFuncs.Encode("localhost"),
|
||||
SecurityFuncs.Encode(GlobalVars.UserConfiguration.RobloxPort.ToString()),
|
||||
SecurityFuncs.Encode(GlobalVars.UserConfiguration.SelectedClient)
|
||||
};
|
||||
string URI2 = "novetus://" + SecurityFuncs.Base64Encode(string.Join("|", lines2), true);
|
||||
string URI2 = "novetus://" + SecurityFuncs.Encode(string.Join("|", lines2), true);
|
||||
GameServer server = new GameServer((!string.IsNullOrWhiteSpace(GlobalVars.UserConfiguration.AlternateServerIP) ? GlobalVars.UserConfiguration.AlternateServerIP : GlobalVars.ExternalIP),
|
||||
GlobalVars.UserConfiguration.RobloxPort);
|
||||
string[] text = {
|
||||
@ -208,16 +144,6 @@ namespace Novetus.Core
|
||||
return text;
|
||||
}
|
||||
|
||||
public static void CreateTXT()
|
||||
{
|
||||
List<string> text = new List<string>();
|
||||
text.AddRange(LoadServerInformation());
|
||||
|
||||
string txt = GlobalPaths.BasePath + "\\" + GlobalPaths.ServerInfoFileName;
|
||||
File.WriteAllLines(txt, text);
|
||||
Util.ConsolePrint("Server Information sent to file " + txt, 4);
|
||||
}
|
||||
|
||||
#if LAUNCHER || URI
|
||||
public static void LaunchCharacterCustomization()
|
||||
{
|
||||
@ -293,386 +219,33 @@ namespace Novetus.Core
|
||||
return finalUrl;
|
||||
}
|
||||
|
||||
public static void SetupAdminPassword()
|
||||
public static string RandomString(int length = 30, string chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz")
|
||||
{
|
||||
CryptoRandom random = new CryptoRandom();
|
||||
string Name1 = SecurityFuncs.GenerateName(random.Next(4, 12));
|
||||
string Name2 = SecurityFuncs.GenerateName(random.Next(4, 12));
|
||||
GlobalVars.Important = Name1 + Name2;
|
||||
GlobalVars.Important2 = SecurityFuncs.Encipher(GlobalVars.Important, random.Next(2, 13));
|
||||
return new string(Enumerable.Repeat(chars, length).Select(s => s[random.Next(s.Length)]).ToArray());
|
||||
}
|
||||
|
||||
public static string GetExternalIPAddress()
|
||||
{
|
||||
string ipAddress;
|
||||
|
||||
try
|
||||
{
|
||||
ipAddress = new WebClient().DownloadString("https://ipv4.icanhazip.com/").TrimEnd();
|
||||
}
|
||||
#if URI || LAUNCHER || BASICLAUNCHER
|
||||
catch (Exception ex)
|
||||
{
|
||||
Util.LogExceptions(ex);
|
||||
#else
|
||||
catch (Exception)
|
||||
{
|
||||
#endif
|
||||
ipAddress = "localhost";
|
||||
}
|
||||
|
||||
return ipAddress;
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region Roblox Helpers
|
||||
#region Vector3
|
||||
public class Vector3
|
||||
{
|
||||
public double X;
|
||||
public double Y;
|
||||
public double Z;
|
||||
|
||||
public Vector3(double aX, double aY, double aZ)
|
||||
{
|
||||
X = aX;
|
||||
Y = aY;
|
||||
Z = aZ;
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region Roblox File Types
|
||||
public enum RobloxFileType
|
||||
{
|
||||
//RBXL and RBXM
|
||||
RBXL,
|
||||
RBXM,
|
||||
//Items
|
||||
Hat,
|
||||
Head,
|
||||
Face,
|
||||
TShirt,
|
||||
Shirt,
|
||||
Pants,
|
||||
Script,
|
||||
HeadNoCustomMesh
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region Asset Cache Definition
|
||||
public class AssetCacheDefBasic
|
||||
{
|
||||
public AssetCacheDefBasic(string clas, string[] id)
|
||||
{
|
||||
Class = clas;
|
||||
Id = id;
|
||||
}
|
||||
|
||||
public string Class { get; set; }
|
||||
public string[] Id { get; set; }
|
||||
}
|
||||
|
||||
public class AssetCacheDef : AssetCacheDefBasic
|
||||
{
|
||||
public AssetCacheDef(string clas, string[] id, string[] ext,
|
||||
string[] dir, string[] gamedir) : base(clas, id)
|
||||
{
|
||||
Ext = ext;
|
||||
Dir = dir;
|
||||
GameDir = gamedir;
|
||||
}
|
||||
|
||||
public string[] Ext { get; set; }
|
||||
public string[] Dir { get; set; }
|
||||
public string[] GameDir { get; set; }
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region Roblox Type Definitions
|
||||
public struct RobloxDefs
|
||||
{
|
||||
//item defs below
|
||||
public static AssetCacheDef ItemHatFonts
|
||||
{
|
||||
get
|
||||
{
|
||||
return new AssetCacheDef("SpecialMesh",
|
||||
new string[] { "MeshId", "TextureId" },
|
||||
new string[] { ".mesh", ".png" },
|
||||
new string[] { GlobalPaths.hatdirFonts, GlobalPaths.hatdirTextures },
|
||||
new string[] { GlobalPaths.hatGameDirFonts, GlobalPaths.hatGameDirTextures });
|
||||
}
|
||||
}
|
||||
|
||||
public static AssetCacheDef ItemHatSound
|
||||
{
|
||||
get
|
||||
{
|
||||
return new AssetCacheDef("Sound",
|
||||
new string[] { "SoundId" },
|
||||
new string[] { ".wav" },
|
||||
new string[] { GlobalPaths.hatdirSounds },
|
||||
new string[] { GlobalPaths.hatGameDirSounds });
|
||||
}
|
||||
}
|
||||
|
||||
public static AssetCacheDef ItemHatScript
|
||||
{
|
||||
get
|
||||
{
|
||||
return new AssetCacheDef("Script",
|
||||
new string[] { "LinkedSource" },
|
||||
new string[] { ".lua" },
|
||||
new string[] { GlobalPaths.hatdirScripts },
|
||||
new string[] { GlobalPaths.hatGameDirScripts });
|
||||
}
|
||||
}
|
||||
|
||||
public static AssetCacheDef ItemHatLocalScript
|
||||
{
|
||||
get
|
||||
{
|
||||
return new AssetCacheDef("LocalScript",
|
||||
new string[] { "LinkedSource" },
|
||||
new string[] { ".lua" },
|
||||
new string[] { GlobalPaths.hatdirScripts },
|
||||
new string[] { GlobalPaths.hatGameDirScripts });
|
||||
}
|
||||
}
|
||||
|
||||
public static AssetCacheDef ItemHeadFonts
|
||||
{
|
||||
get
|
||||
{
|
||||
return new AssetCacheDef("SpecialMesh",
|
||||
new string[] { "MeshId", "TextureId" },
|
||||
new string[] { ".mesh", ".png" },
|
||||
new string[] { GlobalPaths.headdirFonts, GlobalPaths.headdirTextures },
|
||||
new string[] { GlobalPaths.headGameDirFonts, GlobalPaths.headGameDirTextures });
|
||||
}
|
||||
}
|
||||
|
||||
public static AssetCacheDef ItemFaceTexture
|
||||
{
|
||||
get
|
||||
{
|
||||
return new AssetCacheDef("Decal",
|
||||
new string[] { "Texture" },
|
||||
new string[] { ".png" },
|
||||
new string[] { GlobalPaths.facedirTextures },
|
||||
new string[] { GlobalPaths.faceGameDirTextures });
|
||||
}
|
||||
}
|
||||
|
||||
public static AssetCacheDef ItemShirtTexture
|
||||
{
|
||||
get
|
||||
{
|
||||
return new AssetCacheDef("Shirt",
|
||||
new string[] { "ShirtTemplate" },
|
||||
new string[] { ".png" },
|
||||
new string[] { GlobalPaths.shirtdirTextures },
|
||||
new string[] { GlobalPaths.shirtGameDirTextures });
|
||||
}
|
||||
}
|
||||
|
||||
public static AssetCacheDef ItemTShirtTexture
|
||||
{
|
||||
get
|
||||
{
|
||||
return new AssetCacheDef("ShirtGraphic",
|
||||
new string[] { "Graphic" },
|
||||
new string[] { ".png" },
|
||||
new string[] { GlobalPaths.tshirtdirTextures },
|
||||
new string[] { GlobalPaths.tshirtGameDirTextures });
|
||||
}
|
||||
}
|
||||
|
||||
public static AssetCacheDef ItemPantsTexture
|
||||
{
|
||||
get
|
||||
{
|
||||
return new AssetCacheDef("Pants",
|
||||
new string[] { "PantsTemplate" },
|
||||
new string[] { ".png" },
|
||||
new string[] { GlobalPaths.pantsdirTextures },
|
||||
new string[] { GlobalPaths.pantsGameDirTextures });
|
||||
}
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region XML Types
|
||||
public enum XMLTypes
|
||||
{
|
||||
Token,
|
||||
Bool,
|
||||
Float,
|
||||
String,
|
||||
Vector2Int16,
|
||||
Int
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region Roblox XML Parser
|
||||
public static class RobloxXML
|
||||
{
|
||||
public static void EditRenderSettings(XDocument doc, string setting, string value, XMLTypes type)
|
||||
{
|
||||
var v = from nodes in doc.Descendants("Item")
|
||||
where nodes.Attribute("class").Value == "RenderSettings"
|
||||
select nodes;
|
||||
|
||||
foreach (var item in v)
|
||||
{
|
||||
var v2 = from nodes in item.Descendants((type != XMLTypes.Vector2Int16 ? type.ToString().ToLower() : "Vector2int16"))
|
||||
where nodes.Attribute("name").Value == setting
|
||||
select nodes;
|
||||
|
||||
foreach (var item2 in v2)
|
||||
{
|
||||
if (type != XMLTypes.Vector2Int16)
|
||||
{
|
||||
item2.Value = value;
|
||||
}
|
||||
else
|
||||
{
|
||||
string[] vals = value.Split('x');
|
||||
|
||||
var v3 = from nodes in item2.Descendants("X")
|
||||
select nodes;
|
||||
|
||||
foreach (var item3 in v3)
|
||||
{
|
||||
item3.Value = vals[0];
|
||||
}
|
||||
|
||||
var v4 = from nodes in item2.Descendants("Y")
|
||||
select nodes;
|
||||
|
||||
foreach (var item4 in v4)
|
||||
{
|
||||
item4.Value = vals[1];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static bool IsRenderSettingStringValid(XDocument doc, string setting, XMLTypes type)
|
||||
{
|
||||
if (type != XMLTypes.String)
|
||||
return false;
|
||||
|
||||
var v = from nodes in doc.Descendants("Item")
|
||||
where nodes.Attribute("class").Value == "RenderSettings"
|
||||
select nodes;
|
||||
|
||||
foreach (var item in v)
|
||||
{
|
||||
var v2 = from nodes in item.Descendants(type.ToString().ToLower())
|
||||
where nodes.Attribute("name").Value == setting
|
||||
select nodes;
|
||||
|
||||
foreach (var item2 in v2)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public static string GetRenderSettings(XDocument doc, string setting, XMLTypes type)
|
||||
{
|
||||
var v = from nodes in doc.Descendants("Item")
|
||||
where nodes.Attribute("class").Value == "RenderSettings"
|
||||
select nodes;
|
||||
|
||||
foreach (var item in v)
|
||||
{
|
||||
var v2 = from nodes in item.Descendants((type != XMLTypes.Vector2Int16 ? type.ToString().ToLower() : "Vector2int16"))
|
||||
where nodes.Attribute("name").Value == setting
|
||||
select nodes;
|
||||
|
||||
foreach (var item2 in v2)
|
||||
{
|
||||
if (type != XMLTypes.Vector2Int16)
|
||||
{
|
||||
return item2.Value;
|
||||
}
|
||||
else
|
||||
{
|
||||
string ValX = "";
|
||||
string ValY = "";
|
||||
|
||||
var v3 = from nodes in item2.Descendants("X")
|
||||
select nodes;
|
||||
|
||||
foreach (var item3 in v3)
|
||||
{
|
||||
ValX = item3.Value;
|
||||
}
|
||||
|
||||
var v4 = from nodes in item2.Descendants("Y")
|
||||
select nodes;
|
||||
|
||||
foreach (var item4 in v4)
|
||||
{
|
||||
ValY = item4.Value;
|
||||
}
|
||||
|
||||
return ValX + "x" + ValY;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return "";
|
||||
}
|
||||
|
||||
public static string GetURLInNodes(XDocument doc, string itemClassValue, string itemIdValue, string url)
|
||||
{
|
||||
var v = from nodes in doc.Descendants("Item")
|
||||
where nodes.Attribute("class").Value == itemClassValue
|
||||
select nodes;
|
||||
|
||||
foreach (var item in v)
|
||||
{
|
||||
var v2 = from nodes in item.Descendants("Content")
|
||||
where nodes.Attribute("name").Value == itemIdValue
|
||||
select nodes;
|
||||
|
||||
foreach (var item2 in v2)
|
||||
{
|
||||
var v3 = from nodes in item2.Descendants("url")
|
||||
select nodes;
|
||||
|
||||
foreach (var item3 in v3)
|
||||
{
|
||||
if (!item3.Value.Contains("rbxassetid"))
|
||||
{
|
||||
if (!item3.Value.Contains("rbxasset"))
|
||||
{
|
||||
string oldurl = item3.Value;
|
||||
string urlFixed = NovetusFuncs.FixURLString(oldurl, url);
|
||||
string peram = "id=";
|
||||
|
||||
if (urlFixed.Contains(peram))
|
||||
{
|
||||
return urlFixed;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
string oldurl = item3.Value;
|
||||
string rbxassetid = "rbxassetid://";
|
||||
string urlFixed = url + oldurl.After(rbxassetid);
|
||||
string peram = "id=";
|
||||
|
||||
if (urlFixed.Contains(peram))
|
||||
{
|
||||
return urlFixed;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return "";
|
||||
}
|
||||
|
||||
public static string RemoveInvalidXmlChars(string content)
|
||||
{
|
||||
return new string(content.Where(ch => XmlConvert.IsXmlChar(ch)).ToArray());
|
||||
}
|
||||
|
||||
public static string ReplaceHexadecimalSymbols(string txt)
|
||||
{
|
||||
string r = "[\x00-\x08\x0B\x0C\x0E-\x1F]";
|
||||
return Regex.Replace(txt, r, "", RegexOptions.Compiled);
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
#endregion
|
||||
}
|
||||
|
@ -0,0 +1,163 @@
|
||||
namespace Novetus.Core
|
||||
{
|
||||
#region Roblox File Types
|
||||
public enum RobloxFileType
|
||||
{
|
||||
//RBXL and RBXM
|
||||
RBXL,
|
||||
RBXM,
|
||||
//Items
|
||||
Hat,
|
||||
Head,
|
||||
Face,
|
||||
TShirt,
|
||||
Shirt,
|
||||
Pants,
|
||||
Script,
|
||||
HeadNoCustomMesh
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region Asset Cache Definition
|
||||
public class AssetCacheDefBasic
|
||||
{
|
||||
public AssetCacheDefBasic(string clas, string[] id)
|
||||
{
|
||||
Class = clas;
|
||||
Id = id;
|
||||
}
|
||||
|
||||
public string Class { get; set; }
|
||||
public string[] Id { get; set; }
|
||||
}
|
||||
|
||||
public class AssetCacheDef : AssetCacheDefBasic
|
||||
{
|
||||
public AssetCacheDef(string clas, string[] id, string[] ext,
|
||||
string[] dir, string[] gamedir) : base(clas, id)
|
||||
{
|
||||
Ext = ext;
|
||||
Dir = dir;
|
||||
GameDir = gamedir;
|
||||
}
|
||||
|
||||
public string[] Ext { get; set; }
|
||||
public string[] Dir { get; set; }
|
||||
public string[] GameDir { get; set; }
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region Roblox Type Definitions
|
||||
public struct RobloxDefs
|
||||
{
|
||||
//item defs below
|
||||
public static AssetCacheDef ItemHatFonts
|
||||
{
|
||||
get
|
||||
{
|
||||
return new AssetCacheDef("SpecialMesh",
|
||||
new string[] { "MeshId", "TextureId" },
|
||||
new string[] { ".mesh", ".png" },
|
||||
new string[] { GlobalPaths.hatdirFonts, GlobalPaths.hatdirTextures },
|
||||
new string[] { GlobalPaths.hatGameDirFonts, GlobalPaths.hatGameDirTextures });
|
||||
}
|
||||
}
|
||||
|
||||
public static AssetCacheDef ItemHatSound
|
||||
{
|
||||
get
|
||||
{
|
||||
return new AssetCacheDef("Sound",
|
||||
new string[] { "SoundId" },
|
||||
new string[] { ".wav" },
|
||||
new string[] { GlobalPaths.hatdirSounds },
|
||||
new string[] { GlobalPaths.hatGameDirSounds });
|
||||
}
|
||||
}
|
||||
|
||||
public static AssetCacheDef ItemHatScript
|
||||
{
|
||||
get
|
||||
{
|
||||
return new AssetCacheDef("Script",
|
||||
new string[] { "LinkedSource" },
|
||||
new string[] { ".lua" },
|
||||
new string[] { GlobalPaths.hatdirScripts },
|
||||
new string[] { GlobalPaths.hatGameDirScripts });
|
||||
}
|
||||
}
|
||||
|
||||
public static AssetCacheDef ItemHatLocalScript
|
||||
{
|
||||
get
|
||||
{
|
||||
return new AssetCacheDef("LocalScript",
|
||||
new string[] { "LinkedSource" },
|
||||
new string[] { ".lua" },
|
||||
new string[] { GlobalPaths.hatdirScripts },
|
||||
new string[] { GlobalPaths.hatGameDirScripts });
|
||||
}
|
||||
}
|
||||
|
||||
public static AssetCacheDef ItemHeadFonts
|
||||
{
|
||||
get
|
||||
{
|
||||
return new AssetCacheDef("SpecialMesh",
|
||||
new string[] { "MeshId", "TextureId" },
|
||||
new string[] { ".mesh", ".png" },
|
||||
new string[] { GlobalPaths.headdirFonts, GlobalPaths.headdirTextures },
|
||||
new string[] { GlobalPaths.headGameDirFonts, GlobalPaths.headGameDirTextures });
|
||||
}
|
||||
}
|
||||
|
||||
public static AssetCacheDef ItemFaceTexture
|
||||
{
|
||||
get
|
||||
{
|
||||
return new AssetCacheDef("Decal",
|
||||
new string[] { "Texture" },
|
||||
new string[] { ".png" },
|
||||
new string[] { GlobalPaths.facedirTextures },
|
||||
new string[] { GlobalPaths.faceGameDirTextures });
|
||||
}
|
||||
}
|
||||
|
||||
public static AssetCacheDef ItemShirtTexture
|
||||
{
|
||||
get
|
||||
{
|
||||
return new AssetCacheDef("Shirt",
|
||||
new string[] { "ShirtTemplate" },
|
||||
new string[] { ".png" },
|
||||
new string[] { GlobalPaths.shirtdirTextures },
|
||||
new string[] { GlobalPaths.shirtGameDirTextures });
|
||||
}
|
||||
}
|
||||
|
||||
public static AssetCacheDef ItemTShirtTexture
|
||||
{
|
||||
get
|
||||
{
|
||||
return new AssetCacheDef("ShirtGraphic",
|
||||
new string[] { "Graphic" },
|
||||
new string[] { ".png" },
|
||||
new string[] { GlobalPaths.tshirtdirTextures },
|
||||
new string[] { GlobalPaths.tshirtGameDirTextures });
|
||||
}
|
||||
}
|
||||
|
||||
public static AssetCacheDef ItemPantsTexture
|
||||
{
|
||||
get
|
||||
{
|
||||
return new AssetCacheDef("Pants",
|
||||
new string[] { "PantsTemplate" },
|
||||
new string[] { ".png" },
|
||||
new string[] { GlobalPaths.pantsdirTextures },
|
||||
new string[] { GlobalPaths.pantsGameDirTextures });
|
||||
}
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
}
|
@ -0,0 +1,203 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Xml;
|
||||
using System.Xml.Linq;
|
||||
|
||||
namespace Novetus.Core
|
||||
{
|
||||
#region XML Types
|
||||
public enum XMLTypes
|
||||
{
|
||||
Token,
|
||||
Bool,
|
||||
Float,
|
||||
String,
|
||||
Vector2Int16,
|
||||
Int
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region Roblox XML Parser
|
||||
public static class RobloxXML
|
||||
{
|
||||
public static void EditRenderSettings(XDocument doc, string setting, string value, XMLTypes type)
|
||||
{
|
||||
var v = from nodes in doc.Descendants("Item")
|
||||
where nodes.Attribute("class").Value == "RenderSettings"
|
||||
select nodes;
|
||||
|
||||
foreach (var item in v)
|
||||
{
|
||||
var v2 = from nodes in item.Descendants((type != XMLTypes.Vector2Int16 ? type.ToString().ToLower() : "Vector2int16"))
|
||||
where nodes.Attribute("name").Value == setting
|
||||
select nodes;
|
||||
|
||||
foreach (var item2 in v2)
|
||||
{
|
||||
if (type != XMLTypes.Vector2Int16)
|
||||
{
|
||||
item2.Value = value;
|
||||
}
|
||||
else
|
||||
{
|
||||
string[] vals = value.Split('x');
|
||||
|
||||
var v3 = from nodes in item2.Descendants("X")
|
||||
select nodes;
|
||||
|
||||
foreach (var item3 in v3)
|
||||
{
|
||||
item3.Value = vals[0];
|
||||
}
|
||||
|
||||
var v4 = from nodes in item2.Descendants("Y")
|
||||
select nodes;
|
||||
|
||||
foreach (var item4 in v4)
|
||||
{
|
||||
item4.Value = vals[1];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static bool IsRenderSettingStringValid(XDocument doc, string setting, XMLTypes type)
|
||||
{
|
||||
if (type != XMLTypes.String)
|
||||
return false;
|
||||
|
||||
var v = from nodes in doc.Descendants("Item")
|
||||
where nodes.Attribute("class").Value == "RenderSettings"
|
||||
select nodes;
|
||||
|
||||
foreach (var item in v)
|
||||
{
|
||||
var v2 = from nodes in item.Descendants(type.ToString().ToLower())
|
||||
where nodes.Attribute("name").Value == setting
|
||||
select nodes;
|
||||
|
||||
foreach (var item2 in v2)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public static string GetRenderSettings(XDocument doc, string setting, XMLTypes type)
|
||||
{
|
||||
var v = from nodes in doc.Descendants("Item")
|
||||
where nodes.Attribute("class").Value == "RenderSettings"
|
||||
select nodes;
|
||||
|
||||
foreach (var item in v)
|
||||
{
|
||||
var v2 = from nodes in item.Descendants((type != XMLTypes.Vector2Int16 ? type.ToString().ToLower() : "Vector2int16"))
|
||||
where nodes.Attribute("name").Value == setting
|
||||
select nodes;
|
||||
|
||||
foreach (var item2 in v2)
|
||||
{
|
||||
if (type != XMLTypes.Vector2Int16)
|
||||
{
|
||||
return item2.Value;
|
||||
}
|
||||
else
|
||||
{
|
||||
string ValX = "";
|
||||
string ValY = "";
|
||||
|
||||
var v3 = from nodes in item2.Descendants("X")
|
||||
select nodes;
|
||||
|
||||
foreach (var item3 in v3)
|
||||
{
|
||||
ValX = item3.Value;
|
||||
}
|
||||
|
||||
var v4 = from nodes in item2.Descendants("Y")
|
||||
select nodes;
|
||||
|
||||
foreach (var item4 in v4)
|
||||
{
|
||||
ValY = item4.Value;
|
||||
}
|
||||
|
||||
return ValX + "x" + ValY;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return "";
|
||||
}
|
||||
|
||||
public static string GetURLInNodes(XDocument doc, string itemClassValue, string itemIdValue, string url)
|
||||
{
|
||||
var v = from nodes in doc.Descendants("Item")
|
||||
where nodes.Attribute("class").Value == itemClassValue
|
||||
select nodes;
|
||||
|
||||
foreach (var item in v)
|
||||
{
|
||||
var v2 = from nodes in item.Descendants("Content")
|
||||
where nodes.Attribute("name").Value == itemIdValue
|
||||
select nodes;
|
||||
|
||||
foreach (var item2 in v2)
|
||||
{
|
||||
var v3 = from nodes in item2.Descendants("url")
|
||||
select nodes;
|
||||
|
||||
foreach (var item3 in v3)
|
||||
{
|
||||
if (!item3.Value.Contains("rbxassetid"))
|
||||
{
|
||||
if (!item3.Value.Contains("rbxasset"))
|
||||
{
|
||||
string oldurl = item3.Value;
|
||||
string urlFixed = NovetusFuncs.FixURLString(oldurl, url);
|
||||
string peram = "id=";
|
||||
|
||||
if (urlFixed.Contains(peram))
|
||||
{
|
||||
return urlFixed;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
string oldurl = item3.Value;
|
||||
string rbxassetid = "rbxassetid://";
|
||||
string urlFixed = url + oldurl.After(rbxassetid);
|
||||
string peram = "id=";
|
||||
|
||||
if (urlFixed.Contains(peram))
|
||||
{
|
||||
return urlFixed;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return "";
|
||||
}
|
||||
|
||||
public static string RemoveInvalidXmlChars(string content)
|
||||
{
|
||||
return new string(content.Where(ch => XmlConvert.IsXmlChar(ch)).ToArray());
|
||||
}
|
||||
|
||||
public static string ReplaceHexadecimalSymbols(string txt)
|
||||
{
|
||||
string r = "[\x00-\x08\x0B\x0C\x0E-\x1F]";
|
||||
return Regex.Replace(txt, r, "", RegexOptions.Compiled);
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
}
|
@ -0,0 +1,18 @@
|
||||
#region Vector3
|
||||
namespace Novetus.Core
|
||||
{
|
||||
public class Vector3
|
||||
{
|
||||
public double X;
|
||||
public double Y;
|
||||
public double Z;
|
||||
|
||||
public Vector3(double aX, double aY, double aZ)
|
||||
{
|
||||
X = aX;
|
||||
Y = aY;
|
||||
Z = aZ;
|
||||
}
|
||||
}
|
||||
}
|
||||
#endregion
|
@ -21,96 +21,35 @@ namespace Novetus.Core
|
||||
{
|
||||
[DllImport("user32.dll")]
|
||||
static extern int SetWindowText(IntPtr hWnd, string text);
|
||||
public static bool IsElevated { get { return WindowsIdentity.GetCurrent().Owner.IsWellKnown(WellKnownSidType.BuiltinAdministratorsSid); } }
|
||||
|
||||
public static string RandomString(int length)
|
||||
public static string Decode(string EncodedData, bool useOldDecoding = false)
|
||||
{
|
||||
CryptoRandom random = new CryptoRandom();
|
||||
const string chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz";
|
||||
return new string(Enumerable.Repeat(chars, length)
|
||||
.Select(s => s[random.Next(s.Length)]).ToArray());
|
||||
if (useOldDecoding)
|
||||
{
|
||||
return DecodeOld(EncodedData);
|
||||
}
|
||||
|
||||
public static int GenerateRandomNumber()
|
||||
{
|
||||
CryptoRandom random = new CryptoRandom();
|
||||
int randomID = 0;
|
||||
int randIDmode = random.Next(0, 8);
|
||||
int idlimit = 0;
|
||||
|
||||
switch (randIDmode)
|
||||
{
|
||||
case 0:
|
||||
idlimit = 9;
|
||||
break;
|
||||
case 1:
|
||||
idlimit = 99;
|
||||
break;
|
||||
case 2:
|
||||
idlimit = 999;
|
||||
break;
|
||||
case 3:
|
||||
idlimit = 9999;
|
||||
break;
|
||||
case 4:
|
||||
idlimit = 99999;
|
||||
break;
|
||||
case 5:
|
||||
idlimit = 999999;
|
||||
break;
|
||||
case 6:
|
||||
idlimit = 9999999;
|
||||
break;
|
||||
case 7:
|
||||
idlimit = 99999999;
|
||||
break;
|
||||
case 8:
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if (idlimit > 0)
|
||||
{
|
||||
randomID = random.Next(0, idlimit);
|
||||
}
|
||||
else
|
||||
{
|
||||
randomID = random.Next();
|
||||
}
|
||||
|
||||
//2147483647 is max id.
|
||||
return randomID;
|
||||
}
|
||||
|
||||
//these 2 methods are for the clientinfo creator.
|
||||
public static string Base64DecodeNew(string base64EncodedData)
|
||||
{
|
||||
return base64EncodedData.Decrypt();
|
||||
}
|
||||
|
||||
public static string Base64DecodeOld(string base64EncodedData)
|
||||
{
|
||||
var base64EncodedBytes = Convert.FromBase64String(base64EncodedData);
|
||||
return System.Text.Encoding.UTF8.GetString(base64EncodedBytes);
|
||||
}
|
||||
|
||||
//this is for everything else
|
||||
public static string Base64Decode(string base64EncodedData)
|
||||
{
|
||||
try
|
||||
{
|
||||
string decode = base64EncodedData.Decrypt();
|
||||
string decode = EncodedData.Decrypt();
|
||||
return decode;
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
var base64EncodedBytes = Convert.FromBase64String(base64EncodedData);
|
||||
return System.Text.Encoding.UTF8.GetString(base64EncodedBytes);
|
||||
return DecodeOld(EncodedData);
|
||||
}
|
||||
}
|
||||
|
||||
public static string Base64Encode(string plainText, bool oldVer = false)
|
||||
private static string DecodeOld(string EncodedData)
|
||||
{
|
||||
if (oldVer)
|
||||
var EncodedBytes = Convert.FromBase64String(EncodedData);
|
||||
return System.Text.Encoding.UTF8.GetString(EncodedBytes);
|
||||
}
|
||||
|
||||
public static string Encode(string plainText, bool useOldEncoding = false)
|
||||
{
|
||||
if (useOldEncoding)
|
||||
{
|
||||
var plainTextBytes = System.Text.Encoding.UTF8.GetBytes(plainText);
|
||||
return System.Convert.ToBase64String(plainTextBytes);
|
||||
@ -121,98 +60,6 @@ namespace Novetus.Core
|
||||
}
|
||||
}
|
||||
|
||||
public static bool IsBase64String(string s)
|
||||
{
|
||||
s = s.Trim();
|
||||
return (s.Length % 4 == 0) && Regex.IsMatch(s, @"^[a-zA-Z0-9\+/]*={0,3}$", RegexOptions.None);
|
||||
}
|
||||
|
||||
public static long UnixTimeNow()
|
||||
{
|
||||
var timeSpan = (DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0));
|
||||
return (long)timeSpan.TotalSeconds;
|
||||
}
|
||||
|
||||
public static bool checkClientMD5(string client)
|
||||
{
|
||||
if (!GlobalVars.AdminMode)
|
||||
{
|
||||
if (!GlobalVars.SelectedClientInfo.AlreadyHasSecurity)
|
||||
{
|
||||
string rbxexe = "";
|
||||
string BasePath = GlobalPaths.BasePath + "\\clients\\" + client;
|
||||
if (GlobalVars.SelectedClientInfo.LegacyMode)
|
||||
{
|
||||
rbxexe = BasePath + "\\RobloxApp.exe";
|
||||
}
|
||||
else if (GlobalVars.SelectedClientInfo.SeperateFolders)
|
||||
{
|
||||
rbxexe = BasePath + "\\client\\RobloxApp_client.exe";
|
||||
}
|
||||
else if (GlobalVars.SelectedClientInfo.UsesCustomClientEXEName)
|
||||
{
|
||||
rbxexe = BasePath + @"\\" + GlobalVars.SelectedClientInfo.CustomClientEXEName;
|
||||
}
|
||||
else
|
||||
{
|
||||
rbxexe = BasePath + "\\RobloxApp_client.exe";
|
||||
}
|
||||
return CheckMD5(GlobalVars.SelectedClientInfo.ClientMD5, rbxexe);
|
||||
}
|
||||
else
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
public static bool checkScriptMD5(string client)
|
||||
{
|
||||
if (!GlobalVars.AdminMode)
|
||||
{
|
||||
if (!GlobalVars.SelectedClientInfo.AlreadyHasSecurity)
|
||||
{
|
||||
string rbxscript = GlobalPaths.BasePath + "\\clients\\" + client + "\\content\\scripts\\" + GlobalPaths.ScriptName + ".lua";
|
||||
return CheckMD5(GlobalVars.SelectedClientInfo.ScriptMD5, rbxscript);
|
||||
}
|
||||
else
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
public static bool CheckMD5(string MD5Hash, string path)
|
||||
{
|
||||
if (!File.Exists(path))
|
||||
return false;
|
||||
|
||||
using (var md5 = MD5.Create())
|
||||
{
|
||||
using (var stream = File.OpenRead(path))
|
||||
{
|
||||
byte[] hash = md5.ComputeHash(stream);
|
||||
string clientMD5 = BitConverter.ToString(hash).Replace("-", "");
|
||||
if (clientMD5.Equals(MD5Hash))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static string GenerateMD5(string filename)
|
||||
{
|
||||
using (var md5 = MD5.Create())
|
||||
@ -224,18 +71,10 @@ namespace Novetus.Core
|
||||
}
|
||||
}
|
||||
|
||||
public static bool IsElevated
|
||||
{
|
||||
get
|
||||
{
|
||||
return WindowsIdentity.GetCurrent().Owner.IsWellKnown(WellKnownSidType.BuiltinAdministratorsSid);
|
||||
}
|
||||
}
|
||||
|
||||
public static string RandomStringTitle()
|
||||
private static string RandomStringTitle()
|
||||
{
|
||||
CryptoRandom random = new CryptoRandom();
|
||||
return new String(' ', random.Next(20));
|
||||
return NovetusFuncs.RandomString(random.Next(20), " ");
|
||||
}
|
||||
|
||||
public static void RenameWindow(Process exe, ScriptType type, string clientname, string mapname)
|
||||
@ -316,51 +155,8 @@ namespace Novetus.Core
|
||||
}
|
||||
}
|
||||
|
||||
public static string GetExternalIPAddress()
|
||||
{
|
||||
string ipAddress;
|
||||
|
||||
try
|
||||
{
|
||||
ipAddress = new WebClient().DownloadString("https://ipv4.icanhazip.com/").TrimEnd();
|
||||
}
|
||||
#if URI || LAUNCHER || BASICLAUNCHER
|
||||
catch (Exception ex)
|
||||
{
|
||||
Util.LogExceptions(ex);
|
||||
#else
|
||||
catch (Exception)
|
||||
{
|
||||
#endif
|
||||
ipAddress = "localhost";
|
||||
}
|
||||
|
||||
return ipAddress;
|
||||
}
|
||||
|
||||
//modified from https://stackoverflow.com/questions/14687658/random-name-generator-in-c-sharp
|
||||
public static string GenerateName(int len)
|
||||
{
|
||||
CryptoRandom r = new CryptoRandom();
|
||||
string[] consonants = { "b", "c", "d", "f", "g", "h", "j", "k", "l", "m", "l", "n", "p", "q", "r", "s", "sh", "zh", "t", "v", "w", "x" };
|
||||
string[] vowels = { "a", "e", "i", "o", "u", "ae", "y" };
|
||||
string Name = "";
|
||||
Name += consonants[r.Next(consonants.Length)].ToUpper();
|
||||
Name += vowels[r.Next(vowels.Length)];
|
||||
int b = 2; //b tells how many times a new letter has been added. It's 2 right now because the first two letters are already in the name.
|
||||
while (b < len)
|
||||
{
|
||||
Name += consonants[r.Next(consonants.Length)];
|
||||
b++;
|
||||
Name += vowels[r.Next(vowels.Length)];
|
||||
b++;
|
||||
}
|
||||
|
||||
return Name;
|
||||
}
|
||||
|
||||
//https://www.c-sharpcorner.com/article/caesar-cipher-in-c-sharp/
|
||||
public static char cipher(char ch, int key)
|
||||
private static char cipher(char ch, int key)
|
||||
{
|
||||
if (!char.IsLetter(ch))
|
||||
{
|
||||
|
@ -907,164 +907,6 @@ namespace Novetus.Core
|
||||
}
|
||||
#endif
|
||||
#endregion
|
||||
|
||||
#if !BASICLAUNCHER
|
||||
#region UPnP
|
||||
public static void InitUPnP()
|
||||
{
|
||||
if (GlobalVars.UserConfiguration.UPnP)
|
||||
{
|
||||
try
|
||||
{
|
||||
NetFuncs.InitUPnP(DeviceFound, DeviceLost);
|
||||
ConsolePrint("UPnP: Service initialized", 3);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
LogExceptions(ex);
|
||||
ConsolePrint("UPnP: Unable to initialize UPnP. Reason - " + ex.Message, 2);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static void StartUPnP(INatDevice device, Protocol protocol, int port)
|
||||
{
|
||||
if (GlobalVars.UserConfiguration.UPnP)
|
||||
{
|
||||
try
|
||||
{
|
||||
NetFuncs.StartUPnP(device, protocol, port);
|
||||
string IP = !string.IsNullOrWhiteSpace(GlobalVars.UserConfiguration.AlternateServerIP) ? GlobalVars.UserConfiguration.AlternateServerIP : device.GetExternalIP().ToString();
|
||||
ConsolePrint("UPnP: Port " + port + " opened on '" + IP + "' (" + protocol.ToString() + ")", 3);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
LogExceptions(ex);
|
||||
ConsolePrint("UPnP: Unable to open port mapping. Reason - " + ex.Message, 2);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static void StopUPnP(INatDevice device, Protocol protocol, int port)
|
||||
{
|
||||
if (GlobalVars.UserConfiguration.UPnP)
|
||||
{
|
||||
try
|
||||
{
|
||||
NetFuncs.StopUPnP(device, protocol, port);
|
||||
string IP = !string.IsNullOrWhiteSpace(GlobalVars.UserConfiguration.AlternateServerIP) ? GlobalVars.UserConfiguration.AlternateServerIP : device.GetExternalIP().ToString();
|
||||
ConsolePrint("UPnP: Port " + port + " closed on '" + IP + "' (" + protocol.ToString() + ")", 3);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
LogExceptions(ex);
|
||||
ConsolePrint("UPnP: Unable to close port mapping. Reason - " + ex.Message, 2);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static void DeviceFound(object sender, DeviceEventArgs args)
|
||||
{
|
||||
try
|
||||
{
|
||||
INatDevice device = args.Device;
|
||||
string IP = !string.IsNullOrWhiteSpace(GlobalVars.UserConfiguration.AlternateServerIP) ? GlobalVars.UserConfiguration.AlternateServerIP : device.GetExternalIP().ToString();
|
||||
ConsolePrint("UPnP: Device '" + IP + "' registered.", 3);
|
||||
StartUPnP(device, Protocol.Udp, GlobalVars.UserConfiguration.RobloxPort);
|
||||
StartUPnP(device, Protocol.Tcp, GlobalVars.UserConfiguration.RobloxPort);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
LogExceptions(ex);
|
||||
ConsolePrint("UPnP: Unable to register device. Reason - " + ex.Message, 2);
|
||||
}
|
||||
}
|
||||
|
||||
public static void DeviceLost(object sender, DeviceEventArgs args)
|
||||
{
|
||||
try
|
||||
{
|
||||
INatDevice device = args.Device;
|
||||
string IP = !string.IsNullOrWhiteSpace(GlobalVars.UserConfiguration.AlternateServerIP) ? GlobalVars.UserConfiguration.AlternateServerIP : device.GetExternalIP().ToString();
|
||||
ConsolePrint("UPnP: Device '" + IP + "' disconnected.", 3);
|
||||
StopUPnP(device, Protocol.Udp, GlobalVars.UserConfiguration.RobloxPort);
|
||||
StopUPnP(device, Protocol.Tcp, GlobalVars.UserConfiguration.RobloxPort);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
LogExceptions(ex);
|
||||
ConsolePrint("UPnP: Unable to disconnect device. Reason - " + ex.Message, 2);
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region Discord
|
||||
public static void ReadyCallback()
|
||||
{
|
||||
ConsolePrint("Discord RPC: Ready", 3);
|
||||
}
|
||||
|
||||
public static void DisconnectedCallback(int errorCode, string message)
|
||||
{
|
||||
ConsolePrint("Discord RPC: Disconnected. Reason - " + errorCode + ": " + message, 2);
|
||||
}
|
||||
|
||||
public static void ErrorCallback(int errorCode, string message)
|
||||
{
|
||||
ConsolePrint("Discord RPC: Error. Reason - " + errorCode + ": " + message, 2);
|
||||
}
|
||||
|
||||
public static void JoinCallback(string secret)
|
||||
{
|
||||
}
|
||||
|
||||
public static void SpectateCallback(string secret)
|
||||
{
|
||||
}
|
||||
|
||||
public static void RequestCallback(DiscordRPC.JoinRequest request)
|
||||
{
|
||||
}
|
||||
|
||||
public static void StartDiscord()
|
||||
{
|
||||
if (GlobalVars.UserConfiguration.DiscordPresence)
|
||||
{
|
||||
GlobalVars.handlers = new DiscordRPC.EventHandlers();
|
||||
GlobalVars.handlers.readyCallback = ReadyCallback;
|
||||
GlobalVars.handlers.disconnectedCallback += DisconnectedCallback;
|
||||
GlobalVars.handlers.errorCallback += ErrorCallback;
|
||||
GlobalVars.handlers.joinCallback += JoinCallback;
|
||||
GlobalVars.handlers.spectateCallback += SpectateCallback;
|
||||
GlobalVars.handlers.requestCallback += RequestCallback;
|
||||
DiscordRPC.Initialize(GlobalVars.appid, ref GlobalVars.handlers, true, "");
|
||||
ConsolePrint("Discord RPC: Initalized", 3);
|
||||
|
||||
ClientManagement.UpdateRichPresence(ClientManagement.GetStateForType(GlobalVars.GameOpened), true);
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
#endif
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region Tab Control without Header
|
||||
//https://stackoverflow.com/questions/23247941/c-sharp-how-to-remove-tabcontrol-border
|
||||
|
||||
public partial class TabControlWithoutHeader : TabControl
|
||||
{
|
||||
public TabControlWithoutHeader()
|
||||
{
|
||||
if (!DesignMode) Multiline = true;
|
||||
}
|
||||
|
||||
protected override void WndProc(ref Message m)
|
||||
{
|
||||
if (m.Msg == 0x1328 && !DesignMode)
|
||||
m.Result = new IntPtr(1);
|
||||
else
|
||||
base.WndProc(ref m);
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
}
|
@ -157,7 +157,7 @@ public class Splash
|
||||
DateTime now = DateTime.Now;
|
||||
|
||||
return text.Replace("%name%", GlobalVars.UserConfiguration.PlayerName)
|
||||
.Replace("%randomtext%", SecurityFuncs.RandomString(random.Next(2, (GlobalVars.UserConfiguration.LauncherStyle == Settings.Style.Stylish ? 64 : 32))))
|
||||
.Replace("%randomtext%", NovetusFuncs.RandomString(random.Next(2, (GlobalVars.UserConfiguration.LauncherStyle == Settings.Style.Stylish ? 64 : 32))))
|
||||
.Replace("%version%", GlobalVars.ProgramInformation.Version)
|
||||
.Replace("%year%", now.Year.ToString())
|
||||
.Replace("%day%", now.Day.ToString())
|
||||
|
22
Novetus/NovetusLauncher/Classes/TabControlWithoutHeader.cs
Normal file
22
Novetus/NovetusLauncher/Classes/TabControlWithoutHeader.cs
Normal file
@ -0,0 +1,22 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
|
||||
//https://stackoverflow.com/questions/23247941/c-sharp-how-to-remove-tabcontrol-border
|
||||
|
||||
public partial class TabControlWithoutHeader : TabControl
|
||||
{
|
||||
public TabControlWithoutHeader()
|
||||
{
|
||||
if (!DesignMode) Multiline = true;
|
||||
}
|
||||
|
||||
protected override void WndProc(ref Message m)
|
||||
{
|
||||
if (m.Msg == 0x1328 && !DesignMode)
|
||||
m.Result = new IntPtr(1);
|
||||
else
|
||||
base.WndProc(ref m);
|
||||
}
|
||||
}
|
@ -188,7 +188,7 @@ namespace NovetusLauncher
|
||||
}
|
||||
if (GlobalVars.UserConfiguration.DiscordPresence)
|
||||
{
|
||||
DiscordRPC.Shutdown();
|
||||
IDiscordRPC.Shutdown();
|
||||
}
|
||||
if (GlobalVars.UserConfiguration.WebProxyEnabled)
|
||||
{
|
||||
|
@ -30,11 +30,36 @@ namespace NovetusLauncher
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
//modified from https://stackoverflow.com/questions/14687658/random-name-generator-in-c-sharp
|
||||
public static string GenerateName(int len)
|
||||
{
|
||||
CryptoRandom r = new CryptoRandom();
|
||||
string[] consonants = { "b", "c", "d", "f", "g", "h", "j", "k", "l", "m", "l", "n", "p", "q", "r", "s", "sh", "zh", "t", "v", "w", "x" };
|
||||
string[] vowels = { "a", "e", "i", "o", "u", "ae", "y" };
|
||||
string Name = "";
|
||||
Name += consonants[r.Next(consonants.Length)].ToUpper();
|
||||
Name += vowels[r.Next(vowels.Length)];
|
||||
int b = 2; //b tells how many times a new letter has been added. It's 2 right now because the first two letters are already in the name.
|
||||
while (b < len)
|
||||
{
|
||||
Name += consonants[r.Next(consonants.Length)];
|
||||
b++;
|
||||
Name += vowels[r.Next(vowels.Length)];
|
||||
b++;
|
||||
}
|
||||
|
||||
return Name;
|
||||
}
|
||||
|
||||
private void NovetusConsole_Load(object sender, EventArgs e)
|
||||
{
|
||||
Util.ConsolePrint("Novetus version " + GlobalVars.ProgramInformation.Version + " loaded.", 4);
|
||||
Util.ConsolePrint("Novetus path: " + GlobalPaths.BasePath, 4);
|
||||
NovetusFuncs.SetupAdminPassword();
|
||||
CryptoRandom random = new CryptoRandom();
|
||||
string Name1 = GenerateName(random.Next(4, 12));
|
||||
string Name2 = GenerateName(random.Next(4, 12));
|
||||
GlobalVars.Important = Name1 + Name2;
|
||||
GlobalVars.Important2 = SecurityFuncs.Encipher(GlobalVars.Important, random.Next(2, 13));
|
||||
|
||||
if (argList.Length > 0)
|
||||
{
|
||||
|
@ -108,26 +108,26 @@ public partial class ClientinfoEditor : Form
|
||||
{
|
||||
IsVersion2 = true;
|
||||
label9.Text = curversion + " (v" + GlobalVars.ProgramInformation.Version + ")";
|
||||
ConvertedLine = SecurityFuncs.Base64DecodeNew(file);
|
||||
ConvertedLine = SecurityFuncs.Decode(file, false);
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
label9.Text = "v1 (v1.1)";
|
||||
ConvertedLine = SecurityFuncs.Base64DecodeOld(file);
|
||||
ConvertedLine = SecurityFuncs.Decode(file, true);
|
||||
}
|
||||
|
||||
string[] result = ConvertedLine.Split('|');
|
||||
usesplayername = SecurityFuncs.Base64Decode(result[0]);
|
||||
usesid = SecurityFuncs.Base64Decode(result[1]);
|
||||
warning = SecurityFuncs.Base64Decode(result[2]);
|
||||
legacymode = SecurityFuncs.Base64Decode(result[3]);
|
||||
clientmd5 = SecurityFuncs.Base64Decode(result[4]);
|
||||
scriptmd5 = SecurityFuncs.Base64Decode(result[5]);
|
||||
desc = SecurityFuncs.Base64Decode(result[6]);
|
||||
locked = SecurityFuncs.Base64Decode(result[7]);
|
||||
fix2007 = SecurityFuncs.Base64Decode(result[8]);
|
||||
alreadyhassecurity = SecurityFuncs.Base64Decode(result[9]);
|
||||
cmdargsorclientoptions = SecurityFuncs.Base64Decode(result[10]);
|
||||
usesplayername = SecurityFuncs.Decode(result[0]);
|
||||
usesid = SecurityFuncs.Decode(result[1]);
|
||||
warning = SecurityFuncs.Decode(result[2]);
|
||||
legacymode = SecurityFuncs.Decode(result[3]);
|
||||
clientmd5 = SecurityFuncs.Decode(result[4]);
|
||||
scriptmd5 = SecurityFuncs.Decode(result[5]);
|
||||
desc = SecurityFuncs.Decode(result[6]);
|
||||
locked = SecurityFuncs.Decode(result[7]);
|
||||
fix2007 = SecurityFuncs.Decode(result[8]);
|
||||
alreadyhassecurity = SecurityFuncs.Decode(result[9]);
|
||||
cmdargsorclientoptions = SecurityFuncs.Decode(result[10]);
|
||||
folders = "False";
|
||||
usescustomname = "False";
|
||||
customname = "";
|
||||
@ -137,19 +137,19 @@ public partial class ClientinfoEditor : Form
|
||||
{
|
||||
if (IsVersion2)
|
||||
{
|
||||
commandargsver2 = SecurityFuncs.Base64Decode(result[11]);
|
||||
commandargsver2 = SecurityFuncs.Decode(result[11]);
|
||||
|
||||
bool parsedValue;
|
||||
if (bool.TryParse(commandargsver2, out parsedValue))
|
||||
{
|
||||
folders = SecurityFuncs.Base64Decode(result[11]);
|
||||
commandargsver2 = SecurityFuncs.Base64Decode(result[12]);
|
||||
folders = SecurityFuncs.Decode(result[11]);
|
||||
commandargsver2 = SecurityFuncs.Decode(result[12]);
|
||||
bool parsedValue2;
|
||||
if (bool.TryParse(commandargsver2, out parsedValue2))
|
||||
{
|
||||
usescustomname = SecurityFuncs.Base64Decode(result[12]);
|
||||
customname = SecurityFuncs.Base64Decode(result[13]);
|
||||
commandargsver2 = SecurityFuncs.Base64Decode(result[14]);
|
||||
usescustomname = SecurityFuncs.Decode(result[12]);
|
||||
customname = SecurityFuncs.Decode(result[13]);
|
||||
commandargsver2 = SecurityFuncs.Decode(result[14]);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -248,23 +248,23 @@ public partial class ClientinfoEditor : Form
|
||||
if (!string.IsNullOrWhiteSpace(SelectedClientInfoPath))
|
||||
{
|
||||
string[] lines = {
|
||||
SecurityFuncs.Base64Encode(SelectedClientInfo.UsesPlayerName.ToString()),
|
||||
SecurityFuncs.Base64Encode(SelectedClientInfo.UsesID.ToString()),
|
||||
SecurityFuncs.Base64Encode(SelectedClientInfo.Warning.ToString()),
|
||||
SecurityFuncs.Base64Encode(SelectedClientInfo.LegacyMode.ToString()),
|
||||
SecurityFuncs.Base64Encode(SelectedClientInfo.ClientMD5.ToString()),
|
||||
SecurityFuncs.Base64Encode(SelectedClientInfo.ScriptMD5.ToString()),
|
||||
SecurityFuncs.Base64Encode(SelectedClientInfo.Description.ToString()),
|
||||
SecurityFuncs.Base64Encode(Locked.ToString()),
|
||||
SecurityFuncs.Base64Encode(SelectedClientInfo.Fix2007.ToString()),
|
||||
SecurityFuncs.Base64Encode(SelectedClientInfo.AlreadyHasSecurity.ToString()),
|
||||
SecurityFuncs.Base64Encode(((int)SelectedClientInfo.ClientLoadOptions).ToString()),
|
||||
SecurityFuncs.Base64Encode(SelectedClientInfo.SeperateFolders.ToString()),
|
||||
SecurityFuncs.Base64Encode(SelectedClientInfo.UsesCustomClientEXEName.ToString()),
|
||||
SecurityFuncs.Base64Encode(SelectedClientInfo.CustomClientEXEName.ToString()),
|
||||
SecurityFuncs.Base64Encode(SelectedClientInfo.CommandLineArgs.ToString())
|
||||
SecurityFuncs.Encode(SelectedClientInfo.UsesPlayerName.ToString()),
|
||||
SecurityFuncs.Encode(SelectedClientInfo.UsesID.ToString()),
|
||||
SecurityFuncs.Encode(SelectedClientInfo.Warning.ToString()),
|
||||
SecurityFuncs.Encode(SelectedClientInfo.LegacyMode.ToString()),
|
||||
SecurityFuncs.Encode(SelectedClientInfo.ClientMD5.ToString()),
|
||||
SecurityFuncs.Encode(SelectedClientInfo.ScriptMD5.ToString()),
|
||||
SecurityFuncs.Encode(SelectedClientInfo.Description.ToString()),
|
||||
SecurityFuncs.Encode(Locked.ToString()),
|
||||
SecurityFuncs.Encode(SelectedClientInfo.Fix2007.ToString()),
|
||||
SecurityFuncs.Encode(SelectedClientInfo.AlreadyHasSecurity.ToString()),
|
||||
SecurityFuncs.Encode(((int)SelectedClientInfo.ClientLoadOptions).ToString()),
|
||||
SecurityFuncs.Encode(SelectedClientInfo.SeperateFolders.ToString()),
|
||||
SecurityFuncs.Encode(SelectedClientInfo.UsesCustomClientEXEName.ToString()),
|
||||
SecurityFuncs.Encode(SelectedClientInfo.CustomClientEXEName.ToString()),
|
||||
SecurityFuncs.Encode(SelectedClientInfo.CommandLineArgs.ToString())
|
||||
};
|
||||
File.WriteAllText(SelectedClientInfoPath + "\\clientinfo.nov", SecurityFuncs.Base64Encode(string.Join("|", lines)));
|
||||
File.WriteAllText(SelectedClientInfoPath + "\\clientinfo.nov", SecurityFuncs.Encode(string.Join("|", lines)));
|
||||
|
||||
label9.Text = curversion + " (v" + GlobalVars.ProgramInformation.Version + ")";
|
||||
|
||||
|
@ -145,11 +145,11 @@ namespace NovetusLauncher
|
||||
try
|
||||
{
|
||||
string[] initialLine = line.Split('|');
|
||||
DecodedLine = SecurityFuncs.Base64DecodeOld(initialLine[1]);
|
||||
DecodedLine = SecurityFuncs.Decode(initialLine[1], true);
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
DecodedLine = SecurityFuncs.Base64DecodeOld(line);
|
||||
DecodedLine = SecurityFuncs.Decode(line, true);
|
||||
}
|
||||
|
||||
string[] serverInfo = DecodedLine.Split('|');
|
||||
@ -253,11 +253,11 @@ namespace NovetusLauncher
|
||||
{
|
||||
public ServerBrowserDef(string name, string ip, string port, string client, string version)
|
||||
{
|
||||
ServerName = SecurityFuncs.Base64DecodeOld(name);
|
||||
ServerIP = SecurityFuncs.Base64DecodeOld(ip);
|
||||
ServerPort = Convert.ToInt32(SecurityFuncs.Base64DecodeOld(port));
|
||||
ServerClient = SecurityFuncs.Base64DecodeOld(client);
|
||||
ServerVersion = SecurityFuncs.Base64DecodeOld(version);
|
||||
ServerName = SecurityFuncs.Decode(name, true);
|
||||
ServerIP = SecurityFuncs.Decode(ip, true);
|
||||
ServerPort = Convert.ToInt32(SecurityFuncs.Decode(port, true));
|
||||
ServerClient = SecurityFuncs.Decode(client, true);
|
||||
ServerVersion = SecurityFuncs.Decode(version, true);
|
||||
}
|
||||
|
||||
public bool IsValid()
|
||||
|
@ -21,6 +21,9 @@
|
||||
<SignAssembly>False</SignAssembly>
|
||||
<DelaySign>False</DelaySign>
|
||||
<RunPostBuildEvent>OnBuildSuccess</RunPostBuildEvent>
|
||||
<IsWebBootstrapper>false</IsWebBootstrapper>
|
||||
<NuGetPackageImportStamp>
|
||||
</NuGetPackageImportStamp>
|
||||
<PublishUrl>publish\</PublishUrl>
|
||||
<Install>true</Install>
|
||||
<InstallFrom>Disk</InstallFrom>
|
||||
@ -33,11 +36,8 @@
|
||||
<MapFileExtensions>true</MapFileExtensions>
|
||||
<ApplicationRevision>0</ApplicationRevision>
|
||||
<ApplicationVersion>1.0.0.%2a</ApplicationVersion>
|
||||
<IsWebBootstrapper>false</IsWebBootstrapper>
|
||||
<UseApplicationTrust>false</UseApplicationTrust>
|
||||
<BootstrapperEnabled>true</BootstrapperEnabled>
|
||||
<NuGetPackageImportStamp>
|
||||
</NuGetPackageImportStamp>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Platform)' == 'AnyCPU' ">
|
||||
<PlatformTarget>x86</PlatformTarget>
|
||||
@ -96,6 +96,11 @@
|
||||
<HintPath>..\packages\DotNetZip.1.16.0\lib\net40\DotNetZip.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
<Reference Include="Microsoft.Win32.Primitives, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Microsoft.Win32.Primitives.4.3.0\lib\net46\Microsoft.Win32.Primitives.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.Win32.Registry, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>C:\Users\Bitl\Documents\GitHub\Novetus\Novetus_src\Novetus\packages\Microsoft.Win32.Registry.5.0.0\lib\net461\Microsoft.Win32.Registry.dll</HintPath>
|
||||
</Reference>
|
||||
@ -109,10 +114,21 @@
|
||||
<Reference Include="PresentationFramework" />
|
||||
<Reference Include="ReachFramework" />
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.AppContext, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.AppContext.4.3.0\lib\net463\System.AppContext.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.Buffers, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>C:\Users\Bitl\Documents\GitHub\Novetus\Novetus_src\Novetus\packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.ComponentModel.Composition" />
|
||||
<Reference Include="System.Configuration" />
|
||||
<Reference Include="System.Console, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Console.4.3.0\lib\net46\System.Console.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.Core">
|
||||
<RequiredTargetFramework>3.5</RequiredTargetFramework>
|
||||
</Reference>
|
||||
@ -120,29 +136,136 @@
|
||||
<Reference Include="System.Data.DataSetExtensions">
|
||||
<RequiredTargetFramework>3.5</RequiredTargetFramework>
|
||||
</Reference>
|
||||
<Reference Include="System.Diagnostics.DiagnosticSource, Version=4.0.1.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Diagnostics.DiagnosticSource.4.3.0\lib\net46\System.Diagnostics.DiagnosticSource.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Diagnostics.Tracing, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Diagnostics.Tracing.4.3.0\lib\net462\System.Diagnostics.Tracing.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.Drawing" />
|
||||
<Reference Include="System.IO.Compression" />
|
||||
<Reference Include="System.Globalization.Calendars, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Globalization.Calendars.4.3.0\lib\net46\System.Globalization.Calendars.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.IO, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.IO.4.3.0\lib\net462\System.IO.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.IO.Compression, Version=4.1.2.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.IO.Compression.4.3.0\lib\net46\System.IO.Compression.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.IO.Compression.FileSystem" />
|
||||
<Reference Include="System.IO.Compression.ZipFile, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.IO.Compression.ZipFile.4.3.0\lib\net46\System.IO.Compression.ZipFile.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.IO.FileSystem, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.IO.FileSystem.4.3.0\lib\net46\System.IO.FileSystem.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.IO.FileSystem.Primitives, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.IO.FileSystem.Primitives.4.3.0\lib\net46\System.IO.FileSystem.Primitives.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.Linq, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Linq.4.3.0\lib\net463\System.Linq.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.Linq.Expressions, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Linq.Expressions.4.3.0\lib\net463\System.Linq.Expressions.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.Management" />
|
||||
<Reference Include="System.Memory, Version=4.0.1.2, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Memory.4.5.5\lib\net461\System.Memory.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Net" />
|
||||
<Reference Include="System.Net.Http" />
|
||||
<Reference Include="System.Net.Http, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Net.Http.4.3.0\lib\net46\System.Net.Http.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.Net.Sockets, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Net.Sockets.4.3.0\lib\net46\System.Net.Sockets.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.Numerics" />
|
||||
<Reference Include="System.Numerics.Vectors, Version=4.1.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>C:\Users\Bitl\Documents\GitHub\Novetus\Novetus_src\Novetus\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Reflection, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Reflection.4.3.0\lib\net462\System.Reflection.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.Runtime, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Runtime.4.3.0\lib\net462\System.Runtime.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.Runtime.CompilerServices.Unsafe, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Runtime.CompilerServices.Unsafe.6.0.0\lib\net461\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Runtime.Extensions, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Runtime.Extensions.4.3.0\lib\net462\System.Runtime.Extensions.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.Runtime.InteropServices, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Runtime.InteropServices.4.3.0\lib\net463\System.Runtime.InteropServices.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.Runtime.InteropServices.RuntimeInformation, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Runtime.InteropServices.RuntimeInformation.4.3.0\lib\net45\System.Runtime.InteropServices.RuntimeInformation.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.Runtime.Serialization" />
|
||||
<Reference Include="System.Security.AccessControl, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Security.AccessControl.6.0.0\lib\net461\System.Security.AccessControl.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Security.Cryptography.Algorithms, Version=4.2.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Security.Cryptography.Algorithms.4.3.0\lib\net463\System.Security.Cryptography.Algorithms.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.Security.Cryptography.Encoding, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Security.Cryptography.Encoding.4.3.0\lib\net46\System.Security.Cryptography.Encoding.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.Security.Cryptography.Primitives, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Security.Cryptography.Primitives.4.3.0\lib\net46\System.Security.Cryptography.Primitives.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.Security.Cryptography.X509Certificates, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Security.Cryptography.X509Certificates.4.3.0\lib\net461\System.Security.Cryptography.X509Certificates.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.Security.Principal.Windows, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>C:\Users\Bitl\Documents\GitHub\Novetus\Novetus_src\Novetus\packages\System.Security.Principal.Windows.5.0.0\lib\net461\System.Security.Principal.Windows.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.ServiceModel" />
|
||||
<Reference Include="System.Text.RegularExpressions, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Text.RegularExpressions.4.3.0\lib\net463\System.Text.RegularExpressions.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.Threading.Tasks.Extensions, Version=4.2.0.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>C:\Users\Bitl\Documents\GitHub\Novetus\Novetus_src\Novetus\packages\System.Threading.Tasks.Extensions.4.5.4\lib\net461\System.Threading.Tasks.Extensions.dll</HintPath>
|
||||
</Reference>
|
||||
@ -154,6 +277,11 @@
|
||||
<Reference Include="System.Xml.Linq">
|
||||
<RequiredTargetFramework>3.5</RequiredTargetFramework>
|
||||
</Reference>
|
||||
<Reference Include="System.Xml.ReaderWriter, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Xml.ReaderWriter.4.3.0\lib\net46\System.Xml.ReaderWriter.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="Titanium.Web.Proxy, Version=1.0.1.0, Culture=neutral, PublicKeyToken=8e41e1f1c790d7cf, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Titanium.Web.Proxy.3.2.0\lib\net461\Titanium.Web.Proxy.dll</HintPath>
|
||||
</Reference>
|
||||
@ -186,6 +314,9 @@
|
||||
<Compile Include="Classes\Launcher\SplashLoader.cs" />
|
||||
<Compile Include="Classes\Launcher\TreeNodeHelper.cs" />
|
||||
<Compile Include="Classes\LocalVars.cs" />
|
||||
<Compile Include="Classes\TabControlWithoutHeader.cs">
|
||||
<SubType>Component</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Forms\Decoder.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
|
@ -97,8 +97,8 @@ namespace NovetusLauncher
|
||||
|
||||
FileManagement.CreateInitialFileListIfNeededMulti();
|
||||
FileManagement.CreateAssetCacheDirectories();
|
||||
Util.InitUPnP();
|
||||
Util.StartDiscord();
|
||||
NetFuncs.InitUPnP();
|
||||
DiscordRPC.StartDiscord();
|
||||
}
|
||||
|
||||
static void Run(string[] args, bool sdk = false, CMDState state = CMDState.CMDOpen)
|
||||
|
@ -2,16 +2,62 @@
|
||||
<packages>
|
||||
<package id="BrotliSharpLib" version="0.3.3" targetFramework="net48" />
|
||||
<package id="DotNetZip" version="1.16.0" targetFramework="net40" />
|
||||
<package id="Microsoft.NETCore.Platforms" version="1.1.0" targetFramework="net48" />
|
||||
<package id="Microsoft.Win32.Primitives" version="4.3.0" targetFramework="net48" />
|
||||
<package id="Microsoft.Win32.Registry" version="5.0.0" targetFramework="net48" />
|
||||
<package id="Mono.Nat" version="3.0.4" targetFramework="net48" />
|
||||
<package id="NETStandard.Library" version="1.6.1" targetFramework="net48" />
|
||||
<package id="NLog" version="5.1.0" targetFramework="net48" />
|
||||
<package id="Portable.BouncyCastle" version="1.9.0" targetFramework="net48" />
|
||||
<package id="System.AppContext" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Buffers" version="4.5.1" targetFramework="net48" />
|
||||
<package id="System.Collections" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Collections.Concurrent" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Console" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Diagnostics.Debug" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Diagnostics.DiagnosticSource" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Diagnostics.Tools" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Diagnostics.Tracing" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Globalization" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Globalization.Calendars" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.IO" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.IO.Compression" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.IO.Compression.ZipFile" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.IO.FileSystem" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.IO.FileSystem.Primitives" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Linq" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Linq.Expressions" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Memory" version="4.5.5" targetFramework="net48" />
|
||||
<package id="System.Net.Http" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Net.Primitives" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Net.Sockets" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Numerics.Vectors" version="4.5.0" targetFramework="net48" />
|
||||
<package id="System.ObjectModel" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Reflection" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Reflection.Extensions" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Reflection.Primitives" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Resources.ResourceManager" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Runtime" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Runtime.CompilerServices.Unsafe" version="6.0.0" targetFramework="net48" />
|
||||
<package id="System.Runtime.Extensions" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Runtime.Handles" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Runtime.InteropServices" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Runtime.InteropServices.RuntimeInformation" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Runtime.Numerics" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Security.AccessControl" version="6.0.0" targetFramework="net48" />
|
||||
<package id="System.Security.Cryptography.Algorithms" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Security.Cryptography.Encoding" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Security.Cryptography.Primitives" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Security.Cryptography.X509Certificates" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Security.Principal.Windows" version="5.0.0" targetFramework="net48" />
|
||||
<package id="System.Text.Encoding" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Text.Encoding.Extensions" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Text.RegularExpressions" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Threading" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Threading.Tasks" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Threading.Tasks.Extensions" version="4.5.4" targetFramework="net48" />
|
||||
<package id="System.Threading.Timer" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Xml.ReaderWriter" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Xml.XDocument" version="4.3.0" targetFramework="net48" />
|
||||
<package id="Titanium.Web.Proxy" version="3.2.0" targetFramework="net48" />
|
||||
</packages>
|
@ -82,11 +82,11 @@ namespace NovetusURI
|
||||
try
|
||||
{
|
||||
string ExtractedArg = LocalVars.SharedArgs.Replace("novetus://", "").Replace("novetus", "").Replace(":", "").Replace("/", "").Replace("?", "");
|
||||
string ConvertedArg = SecurityFuncs.Base64DecodeOld(ExtractedArg);
|
||||
string ConvertedArg = SecurityFuncs.Decode(ExtractedArg, true);
|
||||
string[] SplitArg = ConvertedArg.Split('|');
|
||||
string ip = SecurityFuncs.Base64Decode(SplitArg[0]);
|
||||
string port = SecurityFuncs.Base64Decode(SplitArg[1]);
|
||||
string client = SecurityFuncs.Base64Decode(SplitArg[2]);
|
||||
string ip = SecurityFuncs.Decode(SplitArg[0]);
|
||||
string port = SecurityFuncs.Decode(SplitArg[1]);
|
||||
string client = SecurityFuncs.Decode(SplitArg[2]);
|
||||
GlobalVars.UserConfiguration.SelectedClient = client;
|
||||
GlobalVars.CurrentServer.ServerIP = ip;
|
||||
GlobalVars.CurrentServer.ServerPort = Convert.ToInt32(port);
|
||||
|
@ -13,53 +13,6 @@ namespace NovetusURI
|
||||
#region URI Loader
|
||||
public partial class LoaderForm : Form
|
||||
{
|
||||
#region Private Variables
|
||||
private DiscordRPC.EventHandlers handlers;
|
||||
#endregion
|
||||
|
||||
#region Discord
|
||||
public void ReadyCallback()
|
||||
{
|
||||
}
|
||||
|
||||
public void DisconnectedCallback(int errorCode, string message)
|
||||
{
|
||||
}
|
||||
|
||||
public void ErrorCallback(int errorCode, string message)
|
||||
{
|
||||
}
|
||||
|
||||
public void JoinCallback(string secret)
|
||||
{
|
||||
}
|
||||
|
||||
public void SpectateCallback(string secret)
|
||||
{
|
||||
}
|
||||
|
||||
public void RequestCallback(DiscordRPC.JoinRequest request)
|
||||
{
|
||||
}
|
||||
|
||||
void StartDiscord()
|
||||
{
|
||||
if (GlobalVars.UserConfiguration.DiscordPresence)
|
||||
{
|
||||
handlers = new DiscordRPC.EventHandlers();
|
||||
handlers.readyCallback = ReadyCallback;
|
||||
handlers.disconnectedCallback += DisconnectedCallback;
|
||||
handlers.errorCallback += ErrorCallback;
|
||||
handlers.joinCallback += JoinCallback;
|
||||
handlers.spectateCallback += SpectateCallback;
|
||||
handlers.requestCallback += RequestCallback;
|
||||
DiscordRPC.Initialize(GlobalVars.appid, ref handlers, true, "");
|
||||
|
||||
ClientManagement.UpdateRichPresence(GlobalVars.LauncherState.LoadingURI, true);
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region Constructor
|
||||
public LoaderForm()
|
||||
{
|
||||
@ -131,7 +84,7 @@ namespace NovetusURI
|
||||
if (GlobalVars.UserConfiguration.DiscordPresence)
|
||||
{
|
||||
ClientManagement.UpdateStatus(label1, "Starting Discord Rich Presence...");
|
||||
StartDiscord();
|
||||
DiscordRPC.StartDiscord();
|
||||
}
|
||||
ClientManagement.UpdateStatus(label1, "Launching Game...");
|
||||
LocalFuncs.SetupURIValues();
|
||||
|
@ -53,6 +53,11 @@
|
||||
<Reference Include="BrotliSharpLib, Version=0.3.2.0, Culture=neutral, PublicKeyToken=3f4e2a1cd615fcb7, processorArchitecture=MSIL">
|
||||
<HintPath>C:\Users\Bitl\Documents\GitHub\Novetus\Novetus_src\Novetus\packages\BrotliSharpLib.0.3.3\lib\net451\BrotliSharpLib.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.Win32.Primitives, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Microsoft.Win32.Primitives.4.3.0\lib\net46\Microsoft.Win32.Primitives.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.Win32.Registry, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>C:\Users\Bitl\Documents\GitHub\Novetus\Novetus_src\Novetus\packages\Microsoft.Win32.Registry.5.0.0\lib\net461\Microsoft.Win32.Registry.dll</HintPath>
|
||||
</Reference>
|
||||
@ -63,32 +68,151 @@
|
||||
<HintPath>..\packages\NLog.5.1.0\lib\net46\NLog.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.AppContext, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.AppContext.4.3.0\lib\net463\System.AppContext.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.Buffers, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>C:\Users\Bitl\Documents\GitHub\Novetus\Novetus_src\Novetus\packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.ComponentModel.Composition" />
|
||||
<Reference Include="System.Configuration" />
|
||||
<Reference Include="System.Console, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Console.4.3.0\lib\net46\System.Console.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.IO.Compression" />
|
||||
<Reference Include="System.Diagnostics.DiagnosticSource, Version=4.0.1.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Diagnostics.DiagnosticSource.4.3.0\lib\net46\System.Diagnostics.DiagnosticSource.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Diagnostics.Tracing, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Diagnostics.Tracing.4.3.0\lib\net462\System.Diagnostics.Tracing.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.Globalization.Calendars, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Globalization.Calendars.4.3.0\lib\net46\System.Globalization.Calendars.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.IO, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.IO.4.3.0\lib\net462\System.IO.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.IO.Compression, Version=4.1.2.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.IO.Compression.4.3.0\lib\net46\System.IO.Compression.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.IO.Compression.FileSystem" />
|
||||
<Reference Include="System.IO.Compression.ZipFile, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.IO.Compression.ZipFile.4.3.0\lib\net46\System.IO.Compression.ZipFile.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.IO.FileSystem, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.IO.FileSystem.4.3.0\lib\net46\System.IO.FileSystem.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.IO.FileSystem.Primitives, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.IO.FileSystem.Primitives.4.3.0\lib\net46\System.IO.FileSystem.Primitives.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.Linq, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Linq.4.3.0\lib\net463\System.Linq.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.Linq.Expressions, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Linq.Expressions.4.3.0\lib\net463\System.Linq.Expressions.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.Management" />
|
||||
<Reference Include="System.Memory, Version=4.0.1.2, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Memory.4.5.5\lib\net461\System.Memory.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Net" />
|
||||
<Reference Include="System.Net.Http, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Net.Http.4.3.0\lib\net46\System.Net.Http.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.Net.Sockets, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Net.Sockets.4.3.0\lib\net46\System.Net.Sockets.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.Numerics" />
|
||||
<Reference Include="System.Numerics.Vectors, Version=4.1.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>C:\Users\Bitl\Documents\GitHub\Novetus\Novetus_src\Novetus\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Reflection, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Reflection.4.3.0\lib\net462\System.Reflection.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.Runtime, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Runtime.4.3.0\lib\net462\System.Runtime.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.Runtime.CompilerServices.Unsafe, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Runtime.CompilerServices.Unsafe.6.0.0\lib\net461\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Runtime.Extensions, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Runtime.Extensions.4.3.0\lib\net462\System.Runtime.Extensions.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.Runtime.InteropServices, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Runtime.InteropServices.4.3.0\lib\net463\System.Runtime.InteropServices.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.Runtime.InteropServices.RuntimeInformation, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Runtime.InteropServices.RuntimeInformation.4.3.0\lib\net45\System.Runtime.InteropServices.RuntimeInformation.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.Runtime.Serialization" />
|
||||
<Reference Include="System.Security.AccessControl, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Security.AccessControl.6.0.0\lib\net461\System.Security.AccessControl.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Security.Cryptography.Algorithms, Version=4.2.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Security.Cryptography.Algorithms.4.3.0\lib\net463\System.Security.Cryptography.Algorithms.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.Security.Cryptography.Encoding, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Security.Cryptography.Encoding.4.3.0\lib\net46\System.Security.Cryptography.Encoding.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.Security.Cryptography.Primitives, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Security.Cryptography.Primitives.4.3.0\lib\net46\System.Security.Cryptography.Primitives.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.Security.Cryptography.X509Certificates, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Security.Cryptography.X509Certificates.4.3.0\lib\net461\System.Security.Cryptography.X509Certificates.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.Security.Principal.Windows, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>C:\Users\Bitl\Documents\GitHub\Novetus\Novetus_src\Novetus\packages\System.Security.Principal.Windows.5.0.0\lib\net461\System.Security.Principal.Windows.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.ServiceModel" />
|
||||
<Reference Include="System.Text.RegularExpressions, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Text.RegularExpressions.4.3.0\lib\net463\System.Text.RegularExpressions.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.Threading.Tasks.Extensions, Version=4.2.0.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>C:\Users\Bitl\Documents\GitHub\Novetus\Novetus_src\Novetus\packages\System.Threading.Tasks.Extensions.4.5.4\lib\net461\System.Threading.Tasks.Extensions.dll</HintPath>
|
||||
</Reference>
|
||||
@ -102,6 +226,11 @@
|
||||
<Reference Include="System.Drawing" />
|
||||
<Reference Include="System.Windows.Forms" />
|
||||
<Reference Include="System.Xml" />
|
||||
<Reference Include="System.Xml.ReaderWriter, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Xml.ReaderWriter.4.3.0\lib\net46\System.Xml.ReaderWriter.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="Titanium.Web.Proxy, Version=1.0.1.0, Culture=neutral, PublicKeyToken=8e41e1f1c790d7cf, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Titanium.Web.Proxy.3.2.0\lib\net461\Titanium.Web.Proxy.dll</HintPath>
|
||||
</Reference>
|
||||
@ -126,6 +255,10 @@
|
||||
<Link>Forms\CharCustom\Extended\CharacterCustomizationExtended.designer.cs</Link>
|
||||
<DependentUpon>CharacterCustomizationExtended.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="..\NovetusLauncher\Classes\TabControlWithoutHeader.cs">
|
||||
<Link>Classes\TabControlWithoutHeader.cs</Link>
|
||||
<SubType>Component</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Classes\LocalFuncs.cs" />
|
||||
<Compile Include="Classes\URIReg.cs" />
|
||||
<Compile Include="Forms\InstallForm.cs">
|
||||
|
@ -1,16 +1,62 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="BrotliSharpLib" version="0.3.3" targetFramework="net48" />
|
||||
<package id="Microsoft.NETCore.Platforms" version="1.1.0" targetFramework="net48" />
|
||||
<package id="Microsoft.Win32.Primitives" version="4.3.0" targetFramework="net48" />
|
||||
<package id="Microsoft.Win32.Registry" version="5.0.0" targetFramework="net48" />
|
||||
<package id="Mono.Nat" version="3.0.4" targetFramework="net48" />
|
||||
<package id="NETStandard.Library" version="1.6.1" targetFramework="net48" />
|
||||
<package id="NLog" version="5.1.0" targetFramework="net48" />
|
||||
<package id="Portable.BouncyCastle" version="1.9.0" targetFramework="net48" />
|
||||
<package id="System.AppContext" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Buffers" version="4.5.1" targetFramework="net48" />
|
||||
<package id="System.Collections" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Collections.Concurrent" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Console" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Diagnostics.Debug" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Diagnostics.DiagnosticSource" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Diagnostics.Tools" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Diagnostics.Tracing" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Globalization" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Globalization.Calendars" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.IO" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.IO.Compression" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.IO.Compression.ZipFile" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.IO.FileSystem" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.IO.FileSystem.Primitives" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Linq" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Linq.Expressions" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Memory" version="4.5.5" targetFramework="net48" />
|
||||
<package id="System.Net.Http" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Net.Primitives" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Net.Sockets" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Numerics.Vectors" version="4.5.0" targetFramework="net48" />
|
||||
<package id="System.ObjectModel" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Reflection" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Reflection.Extensions" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Reflection.Primitives" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Resources.ResourceManager" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Runtime" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Runtime.CompilerServices.Unsafe" version="6.0.0" targetFramework="net48" />
|
||||
<package id="System.Runtime.Extensions" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Runtime.Handles" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Runtime.InteropServices" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Runtime.InteropServices.RuntimeInformation" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Runtime.Numerics" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Security.AccessControl" version="6.0.0" targetFramework="net48" />
|
||||
<package id="System.Security.Cryptography.Algorithms" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Security.Cryptography.Encoding" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Security.Cryptography.Primitives" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Security.Cryptography.X509Certificates" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Security.Principal.Windows" version="5.0.0" targetFramework="net48" />
|
||||
<package id="System.Text.Encoding" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Text.Encoding.Extensions" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Text.RegularExpressions" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Threading" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Threading.Tasks" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Threading.Tasks.Extensions" version="4.5.4" targetFramework="net48" />
|
||||
<package id="System.Threading.Timer" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Xml.ReaderWriter" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Xml.XDocument" version="4.3.0" targetFramework="net48" />
|
||||
<package id="Titanium.Web.Proxy" version="3.2.0" targetFramework="net48" />
|
||||
</packages>
|
@ -4,16 +4,11 @@
|
||||
|
||||
|Stable Versions|Supported|
|
||||
|-------|-------|
|
||||
|1.2.4.1|:white_check_mark:|
|
||||
|1.2.4.1 (lite) |:white_check_mark:|
|
||||
| 1.3 |:white_check_mark:|
|
||||
|
||||
|Snapshots|Supported|
|
||||
|-------|-------|
|
||||
| 1.2.5 |:white_check_mark:|
|
||||
|
||||
|In Development|Supported|
|
||||
|-------|-------|
|
||||
| 1.3 (1.2.5 Refresh)|:white_check_mark:|
|
||||
| 1.3 |:white_check_mark:|
|
||||
|
||||
## Reporting a Vulnerability
|
||||
|
||||
|
@ -4,6 +4,7 @@ Enhancements:
|
||||
- Merged some static APIs into one extension.
|
||||
- Restored the Help button functionality.
|
||||
- All clients now work properly with the Web Proxy.
|
||||
- Rearraged folder layout.
|
||||
----------------------------------------------------------------------------
|
||||
1.3 Snapshot v22.8412.32591.1
|
||||
Enhancements:
|
||||
|
Loading…
Reference in New Issue
Block a user