private async void Vsl_FileTransferRequested(object sender, FTEventArgs e) { if (e.Mode == StreamMode.PushHeader || e.Mode == StreamMode.PushFile) { using (OpenFileDialog fd = new OpenFileDialog()) { fd.InitialDirectory = Program.TempPath; if (fd.ShowDialog() == DialogResult.OK) { if (lastMeta != null && MessageBox.Show("Sie können die Metadaten der letzen Dateiübertragung erneut verwenden", "Metadaten wiederverwenden?", MessageBoxButtons.YesNo) == DialogResult.No) { lastMeta = null; } await vsl.FileTransfer.AcceptAsync(e, fd.FileName, lastMeta); } else { await vsl.FileTransfer.CancelAsync(e); } } } else { e.FileMetaReceived += Vsl_FTFileMetaReceived; await vsl.FileTransfer.AcceptAsync(e, Path.Combine(Program.TempPath, Path.GetRandomFileName())); } }
private async void Vsl_FTFileMetaReceived(object sender, EventArgs e) { FTEventArgs args = (FTEventArgs)sender; lastMeta = args.FileMeta; await vsl.FileTransfer.ContinueAsync(args); args.FileMetaReceived -= Vsl_FTFileMetaReceived; }
private void VslClient_FTCanceled(object sender, EventArgs e) { FTEventArgs args = (FTEventArgs)sender; args.Progress -= VslClient_FTProgress; args.Finished -= VslClient_FTFinished; args.Canceled -= VslClient_FTCanceled; btnReceiveFile.Enabled = true; btnSendFile.Enabled = true; }
private async void VslClient_FTFileMetaReceived(object sender, EventArgs e) { FTEventArgs args = (FTEventArgs)sender; if (args.FileMeta.Algorithm == ContentAlgorithm.Aes256CbcHmacSha256 && !string.IsNullOrWhiteSpace(TbFileKey.Text)) { byte[] keys = Util.GetBytes(TbFileKey.Text); args.FileMeta.Decrypt(keys.Take(32), keys.Skip(32)); } await vslClient.FileTransfer.ContinueAsync(args); }
private void VslClient_FTFinished(object sender, EventArgs e) { FTEventArgs args = (FTEventArgs)sender; args.Progress -= VslClient_FTProgress; args.Finished -= VslClient_FTFinished; args.Canceled -= VslClient_FTCanceled; if (args.Mode == StreamMode.GetFile && MessageBox.Show("Möchten Sie die empfangenen Metadaten übernehmen?", "Metadaten übernehmen?", MessageBoxButtons.YesNo) == DialogResult.Yes) { args.FileMeta.Apply(args.Path, Program.TempPath); } btnReceiveFile.Enabled = true; btnSendFile.Enabled = true; }
private void BtnReceiveFile_Click(object sender, EventArgs e) { string path = Path.Combine(Program.TempPath, Path.GetRandomFileName()); MessageBox.Show($"Temporary file path: {path}\r\n\r\n" + "Default value if defined is %VSLTest_Temp%\\{filename}\r\n" + "otherwise it is %TEMP%\\VSLTest\\{filename}"); FTEventArgs args = new FTEventArgs(new Identifier(0), null, path); args.Progress += VslClient_FTProgress; args.Finished += VslClient_FTFinished; args.Canceled += VslClient_FTCanceled; args.FileMetaReceived += VslClient_FTFileMetaReceived; vslClient.FileTransfer.StartDownloadAsync(args); btnReceiveFile.Enabled = false; btnSendFile.Enabled = false; }
private async void BtnSendFile_Click(object sender, EventArgs e) { string path; using (OpenFileDialog fd = new OpenFileDialog()) { fd.InitialDirectory = Program.TempPath; if (fd.ShowDialog() == DialogResult.Cancel) { return; } path = fd.FileName; } ContentAlgorithm algorithm = ContentAlgorithm.None; byte[] aesKey = null; byte[] hmacKey = null; if (!string.IsNullOrWhiteSpace(TbFileKey.Text)) { algorithm = ContentAlgorithm.Aes256CbcHmacSha256; byte[] keys = Util.GetBytes(TbFileKey.Text); hmacKey = keys.Take(32); aesKey = keys.Skip(32); } FTEventArgs args = new FTEventArgs(new Identifier(0), await FileMeta.FromFileAsync(path, algorithm, hmacKey, aesKey, null), path); args.Progress += VslClient_FTProgress; args.Finished += VslClient_FTFinished; if (!await vslClient.FileTransfer.StartUploadAsync(args)) { return; } btnReceiveFile.Enabled = false; btnSendFile.Enabled = false; }