Exemple #1
0
        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()));
            }
        }
Exemple #2
0
        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;
        }
Exemple #3
0
        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;
        }
Exemple #4
0
        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);
        }
Exemple #5
0
        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;
        }
Exemple #6
0
        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;
        }
Exemple #7
0
        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;
        }