Added original sources

This commit is contained in:
Gitea 2020-05-20 13:57:03 -03:00
parent fdd00beb14
commit 7e2d012859
No known key found for this signature in database
GPG Key ID: 9F1B99B522287CAB
9 changed files with 13559 additions and 0 deletions

135
Main.Designer.cs generated Normal file
View File

@ -0,0 +1,135 @@
/*
MIT License
Copyright (c) 2020 luca0N!
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
Contact me by e-mail via <mailto:luca0N@protonmail.com>.
*/
namespace autenticador_do_luca0N
{
partial class Main
{
/// <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()
{
this.components = new System.ComponentModel.Container();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Main));
this.groupBox_console = new System.Windows.Forms.GroupBox();
this.richTextBox_console = new System.Windows.Forms.RichTextBox();
this.button_update = new System.Windows.Forms.Button();
this.notifyIcon = new System.Windows.Forms.NotifyIcon(this.components);
this.groupBox_console.SuspendLayout();
this.SuspendLayout();
//
// groupBox_console
//
this.groupBox_console.Controls.Add(this.richTextBox_console);
this.groupBox_console.Location = new System.Drawing.Point(12, 12);
this.groupBox_console.Name = "groupBox_console";
this.groupBox_console.Size = new System.Drawing.Size(427, 196);
this.groupBox_console.TabIndex = 0;
this.groupBox_console.TabStop = false;
this.groupBox_console.Text = "&Console";
//
// richTextBox_console
//
this.richTextBox_console.BackColor = System.Drawing.SystemColors.ActiveCaptionText;
this.richTextBox_console.Font = new System.Drawing.Font("Lucida Console", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.richTextBox_console.ForeColor = System.Drawing.Color.Lime;
this.richTextBox_console.Location = new System.Drawing.Point(6, 19);
this.richTextBox_console.Name = "richTextBox_console";
this.richTextBox_console.ReadOnly = true;
this.richTextBox_console.Size = new System.Drawing.Size(415, 171);
this.richTextBox_console.TabIndex = 0;
this.richTextBox_console.Text = "";
//
// button_update
//
this.button_update.Location = new System.Drawing.Point(12, 214);
this.button_update.Name = "button_update";
this.button_update.Size = new System.Drawing.Size(427, 23);
this.button_update.TabIndex = 1;
this.button_update.Text = "Atualizar";
this.button_update.UseVisualStyleBackColor = true;
this.button_update.Click += new System.EventHandler(this.button_update_Click);
//
// notifyIcon
//
this.notifyIcon.Icon = ((System.Drawing.Icon)(resources.GetObject("notifyIcon.Icon")));
this.notifyIcon.Text = "autenticador do luca0N!";
this.notifyIcon.Visible = true;
this.notifyIcon.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.notifyIcon_MouseDoubleClick);
//
// Main
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.BackColor = System.Drawing.Color.DimGray;
this.ClientSize = new System.Drawing.Size(451, 249);
this.Controls.Add(this.button_update);
this.Controls.Add(this.groupBox_console);
this.ForeColor = System.Drawing.Color.Black;
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.MaximizeBox = false;
this.Name = "Main";
this.ShowIcon = false;
this.Text = "autenticador do luca0N!";
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.Main_Closing);
this.Load += new System.EventHandler(this.Main_Load);
this.Shown += new System.EventHandler(this.Main_Shown);
this.groupBox_console.ResumeLayout(false);
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.GroupBox groupBox_console;
private System.Windows.Forms.RichTextBox richTextBox_console;
private System.Windows.Forms.Button button_update;
private System.Windows.Forms.NotifyIcon notifyIcon;
}
}

373
Main.cs Normal file
View File

@ -0,0 +1,373 @@
/*
MIT License
Copyright (c) 2020 luca0N!
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
Contact me by e-mail via <mailto:luca0N@protonmail.com>.
*/
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Xml;
using System;
using System.Net;
using System.Net.Http;
using System.Threading.Tasks;
using System.Diagnostics;
namespace autenticador_do_luca0N
{
public partial class Main : Form
{
private static readonly string versionAddress = "http://<seu sítio>/adl/ver.txt";
private static readonly string getAddressUrl = "http://<seu sítio>/adl/ip.php";
private static readonly string dataDir = "./data";
private static readonly string configFile = $"{dataDir}/session.xml";
private static readonly string registerAccountAddress = "http://<seu sítio>/adl/v1/";
private static readonly string version = "v1.1";
private string tokenString, lastAddress;
private HttpClient httpClient;
private XmlDocument config;
public Main()
{
InitializeComponent();
}
private void Main_Load(object sender, EventArgs e)
{
log($"autenticador do luca0N! {version}\n", LogType.INFO);
log("21 de março de 2020, 01:09 (Horário de Brasília)\n", LogType.INFO);
log("Inicializando gestor de conexões...");
httpClient = new HttpClient();
}
private void Main_Closing(object sender, EventArgs e)
{
try { config.Save(configFile); } catch (XmlException) { }
}
private void Main_Shown(object sender, EventArgs e)
{
log("Limpando...");
if (Directory.Exists("./cache/"))
{
log("Limpando pasta desnecessária...");
foreach(string file in Directory.GetFiles("./cache/"))
{
log("Deletando um arquivo desnecessário...");
File.Delete(file);
}
log("Deletando pasta desnecessária...");
Directory.Delete("./cache/");
}
else
log("Não é necessário realizar uma limpeza.");
CheckForUpdates();
log("Verificando se há sessões existentes...", LogType.INFO);
if (!File.Exists(configFile))
{
log("Nenhuma sessão encontrada.", LogType.WARN);
if (!Directory.Exists(dataDir))
Directory.CreateDirectory(dataDir);
//File.Create(configFile);
//log("Arquivo de configurações criado.", LogType.INFO);
log("Gerando chave...", LogType.INFO);
ulong currentEpoch = GetCurrentTime();
Random rnd = new Random((int)(currentEpoch / 1000));
tokenString = rnd.Next().ToString();
log("Inicializando gestor de configurações...", LogType.INFO);
XmlDocument cfg = new XmlDocument();
log("Gerando propriedades...", LogType.INFO);
XmlElement root = cfg.CreateElement("adlCfg");
XmlElement token = cfg.CreateElement("token");
token.InnerText = tokenString;
token.SetAttribute("epoch", currentEpoch.ToString());
XmlElement target = cfg.CreateElement("target");
root.AppendChild(token);
cfg.AppendChild(root);
log("Salvando configurações...", LogType.INFO);
cfg.Save(configFile);
}
else
{
log("Sessão existente encontrada.", LogType.INFO);
}
log("Lendo configurações...\n", LogType.INFO);
config = new XmlDocument();
XmlElement lastAddrElement = null;
try
{
config.Load(configFile);
bool connected = false;
foreach (XmlNode element in config.DocumentElement)
{
switch (element.Name)
{
case "connected":
connected = true;
break;
case "token":
tokenString = element.InnerText;
log("Chave encontrada: " + tokenString);
break;
case "lastAddress":
lastAddress = element.InnerText;
lastAddrElement = (XmlElement) element;
log("Último endereço IP encontrado: " + lastAddress);
break;
}
}
if (!connected)
{
log("Conta não conectada!", LogType.INFO);
RegisterToken();
log("Tentando conectar-se ao servidor...");
string address;
log("Tentando obter endereço IP...");
WebClient wc = new WebClient();
address = wc.DownloadString(getAddressUrl);
wc.Dispose();
log("Endereço IP encontrado: " + address);
log("Procurando último endereço IP...");
if (lastAddress == address)
log("Endereço IP não alterado.");
else
{
lastAddress = address;
log("Endereço IP alterado. Atualizando...");
if (lastAddrElement == null)
{
log("Criando elemento de último endereço...");
lastAddrElement = config.CreateElement("lastAddress");
config.DocumentElement.AppendChild(lastAddrElement);
}
lastAddrElement.InnerText = address;
log("Atualizado.");
}
}
UpdateAddress();
}
catch (XmlException)
{
log("Erro ao ler as configurações!", LogType.ERR);
var result = MessageBox.Show("Impossível ler as configurações. Deseja redefinir este programa? Você vai precisar abrir este programa novamente.", "Erro", MessageBoxButtons.YesNo, MessageBoxIcon.Error);
if (result == DialogResult.Yes)
{
File.Delete(configFile);
log("Configurações redefinidas.", LogType.INFO);
Close();
}
}
}
private ulong GetCurrentTime()
{
return (ulong)DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1)).TotalSeconds;
}
private void log (string text, LogType logType = LogType.INFO)
{
richTextBox_console.Text += $"[{DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss")}] [{logType}] {text}\n";
}
private void button_update_Click(object sender, EventArgs e)
{
UpdateAddress();
}
private void UpdateAddress()
{
log("Checando endereço IP...");
WebClient wc = new WebClient();
string address;
try
{
address = wc.DownloadString(getAddressUrl);
}
catch (WebException)
{
log("Impossível conectar ao servidor principal.", LogType.ERR);
MessageBox.Show("Impossível conectar ao servidor principal. Certifique-se de que a sua conexão com a internet esteja boa e tente novamente.", "Falha na conexão", MessageBoxButtons.OK, MessageBoxIcon.Error);
wc.Dispose();
return;
}
wc.Dispose();
log("Endereço IP encontrado: " + address);
if (lastAddress == address)
{
log("Sem atualizações disponíveis.");
//MessageBox.Show("Seu endereço IP não alterou.", "Sem atualizações disponíveis", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
else
{
lastAddress = address;
foreach (XmlNode node in config.DocumentElement)
{
switch (node.Name)
{
case "lastAddress":
node.InnerText = address;
SendUpdateAddressRequest();
log("Endereço IP atualizado.");
config.Save(configFile);
break;
}
}
}
}
/// <summary>
/// Checks if there are any updates for this program available. Since March 21st, 2020, 16:24 (BRT).
/// </summary>
private void CheckForUpdates()
{
log("Checando atualizações...");
WebClient wc = new WebClient();
string[] verStr = wc.DownloadString(versionAddress).Split('\n');
string serverVersion = verStr[0],
file = verStr[1];
if (serverVersion != version)
{
log("Nova atualização encontrada.");
Updater updater = new Updater(this, serverVersion, file);
updater.Show();
Hide();
}
}
/// <summary>
/// Runs the downloaded setup file.
/// </summary>
public void RunUpdate(string version)
{
Process.Start($@".\cache\setup-{version}.exe");
Close();
}
private async Task SendUpdateAddressRequest()
{
var args = new Dictionary<string, string>
{
{ "action", "updateAddress" },
{ "token", tokenString }
};
var content = new FormUrlEncodedContent(args);
var response = await httpClient.PostAsync(registerAccountAddress, content);
var responseStr = await response.Content.ReadAsStringAsync();
if (responseStr == "OK")
{
log("Sucesso na atualização de endereço no servidor.");
}
}
private async Task RegisterToken()
{
try
{
//WebClient wcd = new WebClient();
//string requestResult = wcd.DownloadString(registerAccountAddress);
var args = new Dictionary<string, string>
{
{ "action", "registerToken" },
{ "token", tokenString }
};
var content = new FormUrlEncodedContent(args);
var response = await httpClient.PostAsync(registerAccountAddress, content);
var responseStr = await response.Content.ReadAsStringAsync();
if (responseStr == "OK")
{
log("Conta conectada");
MessageBox.Show("Sua conta foi registrada!", "Conectado", MessageBoxButtons.OK, MessageBoxIcon.Information);
var result = MessageBox.Show("Parece que você não se conectou com a sua conta Minecraft do servidor. Entre no servidor, e insira a seguinte chave: " + tokenString + ".\n\nAssim que você executar este comando, clique em OK. Você então poderá atualizar seu IP manualmente através deste programa.", "Conectar-se ao Minecraft", MessageBoxButtons.OK, MessageBoxIcon.Information);
if (result != DialogResult.OK)
{
log("Operação cancelada pelo usuário.", LogType.FATAL);
MessageBox.Show("Operação cancelada pelo usuário.", "Cancelado", MessageBoxButtons.OK, MessageBoxIcon.Error);
Close();
}
config.DocumentElement.AppendChild(config.CreateElement("connected"));
}
else
{
log("Impossível conectar conta.", LogType.ERR);
log($"Resposta do servidor: {responseStr}", LogType.ERR);
MessageBox.Show("Não foi possível registrar sua conta.", "Não conectado", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
catch (WebException)
{
log("Impossível conectar ao servidor principal.", LogType.ERR);
MessageBox.Show("Impossível conectar ao servidor principal. Certifique-se de que a sua conexão com a internet esteja boa e tente novamente.", "Falha na conexão", MessageBoxButtons.OK, MessageBoxIcon.Error);
Close();
return;
}
}
private void notifyIcon_MouseDoubleClick(object sender, MouseEventArgs e)
{
if (Visible)
Hide();
else
Show();
}
private enum LogType
{
INFO, WARN, ERR, FATAL
}
}
}

12493
Main.resx Normal file

File diff suppressed because it is too large Load Diff

45
Program.cs Normal file
View File

@ -0,0 +1,45 @@
/*
MIT License
Copyright (c) 2020 luca0N!
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
Contact me by e-mail via <mailto:luca0N@protonmail.com>.
*/
using System;
using System.Collections.Generic;
using System.Windows.Forms;
namespace autenticador_do_luca0N
{
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Main());
}
}
}

102
Updater.Designer.cs generated Normal file
View File

@ -0,0 +1,102 @@
/*
MIT License
Copyright (c) 2020 luca0N!
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
Contact me by e-mail via <mailto:luca0N@protonmail.com>.
*/
namespace autenticador_do_luca0N
{
partial class Updater
{
/// <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()
{
this.label1 = new System.Windows.Forms.Label();
this.progressBar_dlProgress = new System.Windows.Forms.ProgressBar();
this.SuspendLayout();
//
// label1
//
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(12, 9);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(117, 13);
this.label1.TabIndex = 0;
this.label1.Text = "Baixando atualização...";
//
// progressBar_dlProgress
//
this.progressBar_dlProgress.Location = new System.Drawing.Point(15, 25);
this.progressBar_dlProgress.Name = "progressBar_dlProgress";
this.progressBar_dlProgress.Size = new System.Drawing.Size(221, 23);
this.progressBar_dlProgress.Step = 1;
this.progressBar_dlProgress.TabIndex = 1;
//
// Updater
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(248, 59);
this.Controls.Add(this.progressBar_dlProgress);
this.Controls.Add(this.label1);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
this.MaximizeBox = false;
this.MinimizeBox = false;
this.Name = "Updater";
this.ShowIcon = false;
this.Text = "Atualizador";
this.Load += new System.EventHandler(this.Updater_Load);
this.Shown += new System.EventHandler(this.Updater_Shown);
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.Label label1;
private System.Windows.Forms.ProgressBar progressBar_dlProgress;
}
}

74
Updater.cs Normal file
View File

@ -0,0 +1,74 @@
/*
MIT License
Copyright (c) 2020 luca0N!
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
Contact me by e-mail via <mailto:luca0N@protonmail.com>.
*/
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace autenticador_do_luca0N
{
public partial class Updater : Form
{
Main main;
string version, url;
public Updater(Main main, string version, string url)
{
InitializeComponent();
this.version = version;
this.url = url;
this.main = main;
}
private void Updater_Load(object sender, EventArgs e)
{
ControlBox = false;
}
private void Updater_Shown(object sender, EventArgs e)
{
if (!Directory.Exists("./cache/"))
Directory.CreateDirectory("./cache/");
WebClient wc = new WebClient();
wc.DownloadProgressChanged += (dlSender, dlE) => progressBar_dlProgress.Value = dlE.ProgressPercentage;
wc.DownloadFileCompleted += (dlSender, dlE) => {
main.RunUpdate(version);
Close();
};
wc.DownloadFileAsync(new Uri(url), $"./cache/setup-{version}.exe");
/*Task.Run(() =>
{
});*/
}
}
}

145
Updater.resx Normal file
View File

@ -0,0 +1,145 @@
<!--
MIT License
Copyright (c) 2020 luca0N!
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
Contact me by e-mail via <mailto:luca0N@protonmail.com>.
-->
<?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.Runtime.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:import namespace="http://www.w3.org/XML/1998/namespace" />
<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" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</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" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</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=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@ -0,0 +1,154 @@
<!--
MIT License
Copyright (c) 2020 luca0N!
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
Contact me by e-mail via <mailto:luca0N@protonmail.com>.
-->
<?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>{CE7DEECA-2271-49B6-92AC-A172E50FF962}</ProjectGuid>
<OutputType>WinExe</OutputType>
<RootNamespace>autenticador_do_luca0N</RootNamespace>
<AssemblyName>autenticador do luca0N!</AssemblyName>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<Deterministic>true</Deterministic>
<TargetFrameworkProfile />
<PublishUrl>publish\</PublishUrl>
<Install>true</Install>
<InstallFrom>Disk</InstallFrom>
<UpdateEnabled>false</UpdateEnabled>
<UpdateMode>Foreground</UpdateMode>
<UpdateInterval>7</UpdateInterval>
<UpdateIntervalUnits>Days</UpdateIntervalUnits>
<UpdatePeriodically>false</UpdatePeriodically>
<UpdateRequired>false</UpdateRequired>
<MapFileExtensions>true</MapFileExtensions>
<ApplicationRevision>0</ApplicationRevision>
<ApplicationVersion>1.0.0.%2a</ApplicationVersion>
<IsWebBootstrapper>false</IsWebBootstrapper>
<UseApplicationTrust>false</UseApplicationTrust>
<BootstrapperEnabled>true</BootstrapperEnabled>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</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</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<PropertyGroup>
<StartupObject>autenticador_do_luca0N.Program</StartupObject>
</PropertyGroup>
<PropertyGroup>
<ApplicationIcon>autenticador.ico</ApplicationIcon>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Data" />
<Reference Include="System.Deployment" />
<Reference Include="System.Drawing" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="Main.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Main.Designer.cs">
<DependentUpon>Main.cs</DependentUpon>
</Compile>
<Compile Include="PickTarget.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="PickTarget.Designer.cs">
<DependentUpon>PickTarget.cs</DependentUpon>
</Compile>
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Updater.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Updater.Designer.cs">
<DependentUpon>Updater.cs</DependentUpon>
</Compile>
<EmbeddedResource Include="Main.resx">
<DependentUpon>Main.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="PickTarget.resx">
<DependentUpon>PickTarget.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>
<EmbeddedResource Include="Updater.resx">
<DependentUpon>Updater.cs</DependentUpon>
</EmbeddedResource>
<None Include="app.config" />
<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>
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
<Visible>False</Visible>
<ProductName>.NET Framework 3.5 SP1</ProductName>
<Install>false</Install>
</BootstrapperPackage>
</ItemGroup>
<ItemGroup>
<Content Include="minecraft.ico" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>

View File

@ -0,0 +1,38 @@
<!--
MIT License
Copyright (c) 2020 luca0N!
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
Contact me by e-mail via <mailto:luca0N@protonmail.com>.
-->
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<PublishUrlHistory>publish\</PublishUrlHistory>
<InstallUrlHistory />
<SupportUrlHistory />
<UpdateUrlHistory />
<BootstrapperUrlHistory />
<ErrorReportUrlHistory />
<FallbackCulture>en-US</FallbackCulture>
<VerifyUploadedFiles>false</VerifyUploadedFiles>
</PropertyGroup>
</Project>