BMTuneSource/Class15.cs

319 lines
11 KiB
C#

using Data;
using Microsoft.Win32;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics;
using System.Globalization;
using System.IO;
using System.Net;
using System.Net.Mail;
using System.Text;
using System.Threading;
using System.Reflection;
using System.Security.Cryptography;
using System.Security.Principal;
using System.Management;
using System.Windows.Forms;
internal class Class15
{
private FrmMain frmMain_0;
private BMTuneVersions BMTuneVersions_0 = BMTuneVersions.Free;
internal string string_CurrentID;
private string DPath;
private Class15 Class15_0;
internal string BMIDDD;
//UPDATE SETTING
internal string CurrentBMTuneVersion;
public Class15(ref FrmMain FrmMain_1)
{
Class15_0 = this;
frmMain_0 = FrmMain_1;
string TeasteStr4 = "6E3-FEBF-BAF3-33C4-FBFF";
string TeasteStr6 = "V1.97";
DPath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + @"\BMTune\";
BMIDDD = TeasteStr4;
CurrentBMTuneVersion = TeasteStr6;
this.AdminRelauncher();
this.BMTuneVersions_0 = BMTuneVersions.Tuner;
if (!Directory.Exists(DPath)) Directory.CreateDirectory(DPath);
this.method_getversion();
this.GetUserID();
//################
//Check for updates
if (File.Exists(Application.StartupPath + @"\README.md")) File.Delete(Application.StartupPath + @"\README.md");
if (File.Exists(Application.StartupPath + @"\BMTuneUpdate" + ".exe")) File.Delete(Application.StartupPath + @"\BMTuneUpdate" + ".exe");
this.CheckForUpdate(false);
//################
}
private void AdminRelauncher()
{
if (!IsRunAsAdmin())
{
ProcessStartInfo proc = new ProcessStartInfo();
proc.UseShellExecute = true;
proc.WorkingDirectory = Environment.CurrentDirectory;
try
{
proc.FileName = Assembly.GetEntryAssembly().CodeBase;
}
catch
{
proc.FileName = Application.ExecutablePath;
}
proc.Verb = "runas";
try
{
Process.Start(proc);
}
catch { }
Environment.Exit(0);
}
}
private bool IsRunAsAdmin()
{
WindowsIdentity id = WindowsIdentity.GetCurrent();
WindowsPrincipal principal = new WindowsPrincipal(id);
return principal.IsInRole(WindowsBuiltInRole.Administrator);
}
private void GetUserID()
{
this.string_CurrentID = "";
string RSTRING = GSEEET(Path.GetPathRoot(Environment.SystemDirectory).Substring(0, 1));
for (int i = 0; i < RSTRING.Length; i++)
{
this.string_CurrentID += RSTRING[i];
if (i == 2 || i == 6 || i == 10 || i == 14) this.string_CurrentID += "-";
}
}
private string GSEEET(string F323F)
{
if (F323F.EndsWith(":\\")) F323F = F323F.Substring(0, F323F.Length - 2);
string SBSEEB = G233G3(F323F);
string G23G = HH2333S();
return G23G.Substring(13) + G23G.Substring(1, 4) + SBSEEB + G23G.Substring(4, 4);
}
private string G233G3(string DSEGESEG)
{
ManagementObject SDFV = new ManagementObject(@"win32_logicaldisk.deviceid=""" + DSEGESEG + @":""");
SDFV.Get();
string VSVESV = SDFV["VolumeSerialNumber"].ToString();
SDFV.Dispose();
return VSVESV;
}
private string HH2333S()
{
string VESEVE = "";
ManagementClass BANR = new ManagementClass("win32_processor");
ManagementObjectCollection NRDDR = BANR.GetInstances();
foreach (ManagementObject RDMRRD in NRDDR)
{
if (VESEVE == "")
{
VESEVE = RDMRRD.Properties["processorID"].Value.ToString();
break;
}
}
return VESEVE;
}
//####
private void method_getversion()
{
if (File.Exists(Application.StartupPath + @"\VersionV2.txt")) File.Delete(Application.StartupPath + @"\VersionV2.txt");
if (File.Exists(Application.StartupPath + @"\Version.txt"))
{
File.Create(DPath + "Version.txt").Dispose();
File.WriteAllBytes(DPath + "Version.txt", File.ReadAllBytes(Application.StartupPath + @"\Version.txt"));
try
{
File.Delete(Application.StartupPath + @"\Version.txt");
}
catch
{
LogTtheee("Unable to remove Version File at location:" + Environment.NewLine + "" + Application.StartupPath + @"\Version.txt");
}
}
if (File.Exists(Application.StartupPath + @"\VersionBETA.txt")) File.Delete(Application.StartupPath + @"\VersionBETA.txt");
if (File.Exists(DPath + "Version.txt")) CurrentBMTuneVersion = File.ReadAllText(DPath + "Version.txt");
else
{
File.Create(DPath + "Version.txt").Dispose();
File.WriteAllText(DPath + "Version.txt", CurrentBMTuneVersion);
}
}
private void LogTtheee(string string_8)
{
this.frmMain_0.LogThis("Loading - " + string_8);
}
private string DLStringFromURL(string ThisURL)
{
string String_00 = "";
//###########################################################
//Using HttpWebRequest
try
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(ThisURL);
request.Timeout = 6000;
request.ReadWriteTimeout = 6000;
WebResponse wresp = (HttpWebResponse)request.GetResponse();
Stream memoryStream = wresp.GetResponseStream();
StreamReader streamReader = new StreamReader(memoryStream);
String_00 = streamReader.ReadToEnd();
}
catch
{
}
//###########################################################
//###########################################################
//###########################################################
//Using WebClient
/*using (var webpage = new WebClient())
{
//webpage.Headers[HttpRequestHeader.UserAgent] = "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:25.0; WOW64) Gecko/20100101 Firefox/25.0 AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.874.121 Safari/535.2";
webpage.Headers.Add("User-Agent", "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:25.0; WOW64) Gecko/20100101 Firefox/25.0 AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.874.121 Safari/535.2");
//webpage.Headers.Add("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)");
try
{
String_00 = webpage.DownloadString(ThisURL);
}
catch (Exception mess)
{
Console.WriteLine("Cant get Text from URL with error:" + mess);
}
webpage.Dispose();
}*/
//if (String_00 != "") Console.WriteLine("Managed to get internet version from:" + Environment.NewLine + ThisURL);
return String_00;
}
public void CheckForUpdate(bool ShowWarning)
{
bool BMTuneUpdated = true;
//XXXX();
try
{
string String_00 = "";
//if (String_00 == "") String_00 = this.frmMain_0.class31_0.GetFTPBMTuneVersion("Version.txt");
if (String_00 == "") String_00 = DLStringFromURL("https://raw.githubusercontent.com/MarcDevs/bmbuild/master/Version.txt");
if (String_00 == "") String_00 = DLStringFromURL("http://www.bmtune.com/build/Version.txt");
if (String_00 != "")
{
double LastVersion = double.Parse(String_00.Substring(1).Replace(".", ""));
if (LastVersion > 1000) LastVersion = LastVersion / 10;
double CurrentVersion = double.Parse(this.CurrentBMTuneVersion.Substring(1).Replace(".", ""));
if (CurrentVersion > 1000) CurrentVersion = CurrentVersion / 10;
if (CurrentVersion < LastVersion) BMTuneUpdated = false;
if (!BMTuneUpdated)
{
DialogResult result = DialogResult.Yes;
result = MessageBox.Show(Form.ActiveForm, "New update available!" + Environment.NewLine + "Version: " + String_00 + Environment.NewLine + "Do you want to update?", "BMTune", MessageBoxButtons.YesNo, MessageBoxIcon.Asterisk);
if (result == DialogResult.Yes) this.UpdateBMTune();
}
//InternetConnected = true;
}
}
catch {
if (ShowWarning) ShowManualUpdate();
}
}
public void ShowManualUpdate()
{
DialogResult result = MessageBox.Show(Form.ActiveForm, "Can't update BMTune" + Environment.NewLine + "Do you want to download BMTune manually?", "BMTune", MessageBoxButtons.YesNo, MessageBoxIcon.Hand);
if (result == DialogResult.Yes) Process.Start("http://www.bmtune.com/");
}
private void UpdateBMTune()
{
frmDownloadUpdate frmDownloadUpdate_0 = new frmDownloadUpdate(ref this.frmMain_0, ref Class15_0);
DialogResult result = frmDownloadUpdate_0.ShowDialog();
if (result == DialogResult.Cancel) ShowManualUpdate();
}
internal BMTuneVersions method_22()
{
return this.BMTuneVersions_0;
}
internal bool method_5(Enum4 enum4_0)
{
return true;
/*switch (enum4_0)
{
case Enum4.const_0:
return (this.BMTuneVersions_0 == BMTuneVersions.datalogger);
case Enum4.const_1:
return (this.BMTuneVersions_0 == BMTuneVersions.Free);
case Enum4.const_2:
return (this.BMTuneVersions_0 == BMTuneVersions.Pro_Demon);
case Enum4.const_3:
return (this.BMTuneVersions_0 == BMTuneVersions.Tuner);
case Enum4.const_11:
return (this.BMTuneVersions_0 == BMTuneVersions.Dev || this.BMTuneVersions_0 == BMTuneVersions.Tuner);
case Enum4.const_12:
return (this.BMTuneVersions_0 == BMTuneVersions.Dev);
}
return false;*/
}
private string That(string Hex)
{
string Left = Hex;
string Returning = "";
while (Left != "")
{
try
{
int This = Int32.Parse(Left.Substring(0, 2), System.Globalization.NumberStyles.AllowHexSpecifier) - 40;
if (This < 0) This = 256 + This;
Returning += Convert.ToChar(This).ToString();
Left = Left.Substring(2);
}
catch { Left = ""; }
}
return Returning;
}
}