Horizon – Diff between revs 11 and 12

Subversion Repositories:
Rev:
Show entire fileIgnore whitespace
Rev 11 Rev 12
Line 1... Line 1...
1 using System; 1 using System;
2 using System.Collections.Generic; 2 using System.Collections.Generic;
3 using System.Collections.Specialized; 3 using System.Collections.Specialized;
4 using System.ComponentModel; 4 using System.ComponentModel;
5 using System.Data.SQLite; 5 using System.Data.SQLite;
-   6 using System.Diagnostics;
6 using System.Drawing; 7 using System.Drawing;
7 using System.IO; 8 using System.IO;
8 using System.Linq; 9 using System.Linq;
9 using System.Net; 10 using System.Net;
10 using System.Reflection; 11 using System.Reflection;
-   12 using System.Text;
11 using System.Threading; 13 using System.Threading;
12 using System.Threading.Tasks; 14 using System.Threading.Tasks;
13 using System.Threading.Tasks.Dataflow; 15 using System.Threading.Tasks.Dataflow;
14 using System.Windows.Forms; 16 using System.Windows.Forms;
15 using Horizon.Database; 17 using Horizon.Database;
16 using Horizon.Snapshots; 18 using Horizon.Snapshots;
17 using Horizon.Utilities; 19 using Horizon.Utilities;
18 using Horizon.Utilities.Serialization; 20 using Horizon.Utilities.Serialization;
-   21 using Mono.Zeroconf;
19 using NetSparkleUpdater; 22 using NetSparkleUpdater;
20 using NetSparkleUpdater.Enums; 23 using NetSparkleUpdater.Enums;
21 using NetSparkleUpdater.SignatureVerifiers; 24 using NetSparkleUpdater.SignatureVerifiers;
22 using NetSparkleUpdater.UI.WinForms; 25 using NetSparkleUpdater.UI.WinForms;
-   26 using Newtonsoft.Json;
23 using Serilog; 27 using Serilog;
24 using TrackedFolders; 28 using TrackedFolders;
-   29 using WatsonTcp;
-   30 using static Horizon.Utilities.Networking.Miscellaneous;
25 using CaptureMode = Configuration.CaptureMode; 31 using CaptureMode = Configuration.CaptureMode;
26 using Path = System.IO.Path; 32 using Path = System.IO.Path;
Line 27... Line 33...
27   33  
28 namespace Horizon 34 namespace Horizon
Line 69... Line 75...
69   75  
Line 70... Line 76...
70 private LogViewForm _logViewForm; 76 private LogViewForm _logViewForm;
Line -... Line 77...
-   77  
-   78 private readonly LogMemorySink _memorySink;
-   79  
-   80 private RegisterService _horizonDiscoveryService;
71   81  
Line 72... Line 82...
72 private readonly LogMemorySink _memorySink; 82 private WatsonTcpServer _horizonNetworkShare;
Line 73... Line 83...
73   83  
Line 148... Line 158...
148   158  
Line 149... Line 159...
149 #endregion 159 #endregion
Line -... Line 160...
-   160  
-   161 #region Event Handlers
-   162  
-   163 private void networkSharingToolStripMenuItem_CheckStateChanged(object sender, EventArgs e)
-   164 {
-   165 var toolStripMenuItem = (ToolStripMenuItem)sender;
-   166  
-   167 switch (toolStripMenuItem.CheckState)
-   168 {
-   169 case CheckState.Checked:
-   170 var freePort = GetAvailableTcpPort();
-   171  
-   172 _horizonNetworkShare = new WatsonTcpServer("0.0.0.0", freePort);
-   173 _horizonNetworkShare.Events.ClientConnected += Events_ClientConnected;
-   174 _horizonNetworkShare.Events.ClientDisconnected += Events_ClientDisconnected;
-   175 _horizonNetworkShare.Events.MessageReceived += Events_MessageReceived;
-   176 #pragma warning disable CS4014
-   177 _horizonNetworkShare.Start();
-   178 #pragma warning restore CS4014
-   179  
-   180 try
-   181 {
-   182 _horizonDiscoveryService = new RegisterService();
-   183 _horizonDiscoveryService.Name = $"Horizon ({Environment.MachineName})";
-   184 _horizonDiscoveryService.RegType = "_horizon._tcp";
-   185 _horizonDiscoveryService.ReplyDomain = "local.";
-   186 _horizonDiscoveryService.UPort = freePort;
-   187 _horizonDiscoveryService.Register();
-   188 }
-   189 catch (Exception exception)
-   190 {
-   191 Log.Error(exception, "Service discovery protocol could not be stared.");
-   192 }
-   193  
-   194 Configuration.NetworkSharing = true;
-   195 break;
-   196 case CheckState.Unchecked:
-   197 if (_horizonNetworkShare != null)
-   198 {
-   199 _horizonNetworkShare.Dispose();
-   200 _horizonNetworkShare = null;
-   201 }
-   202  
-   203 if (_horizonDiscoveryService != null)
-   204 {
-   205 _horizonDiscoveryService.Dispose();
-   206 _horizonDiscoveryService = null;
-   207  
-   208 }
-   209  
-   210 Configuration.NetworkSharing = false;
-   211 break;
-   212 }
-   213  
-   214 ChangedConfigurationContinuation.Schedule(TimeSpan.FromSeconds(1),
-   215 async () => { await SaveConfiguration(); }, _cancellationToken);
-   216 }
-   217  
-   218 private async void Events_MessageReceived(object sender, MessageReceivedEventArgs e)
-   219 {
-   220 Log.Information($"Client {e.Client.IpPort} sent {e.Data.Length} bytes via network sharing.");
-   221  
-   222 if (e.Data.Length == 0)
-   223 {
-   224 return;
-   225 }
-   226  
-   227 try
-   228 {
-   229 var payload = Encoding.UTF8.GetString(e.Data);
-   230  
-   231 var completeSnapshot = JsonConvert.DeserializeObject<TransferSnapshot>(payload);
-   232  
-   233 await _snapshotDatabase.SetCompleteSnapshotAsync(completeSnapshot, _cancellationToken);
-   234  
-   235 Log.Information($"Stored {completeSnapshot.Name} from {e.Client.IpPort}");
-   236 }
-   237 catch (Exception exception)
-   238 {
-   239 Log.Error(exception, $"Failed to process network share from {e.Client.IpPort}.");
-   240 }
-   241 }
-   242  
-   243 private void Events_ClientDisconnected(object sender, WatsonTcp.DisconnectionEventArgs e)
-   244 {
-   245 Log.Information($"Client {e.Client.IpPort} disconnected from network sharing.");
-   246 }
-   247  
-   248 private void Events_ClientConnected(object sender, WatsonTcp.ConnectionEventArgs e)
-   249 {
150   250 Log.Information($"Client {e.Client.IpPort} connected to network sharing.");
151 #region Event Handlers 251 }
152   252  
153 private void WindowToolStripMenuItem_Click(object sender, EventArgs e) 253 private void WindowToolStripMenuItem_Click(object sender, EventArgs e)
Line 287... Line 387...
287 atomicOperationsToolStripMenuItem.Checked = Configuration.AtomicOperations; 387 atomicOperationsToolStripMenuItem.Checked = Configuration.AtomicOperations;
288 enableToolStripMenuItem.Checked = Configuration.Enabled; 388 enableToolStripMenuItem.Checked = Configuration.Enabled;
289 showBalloonTooltipsToolStripMenuItem.Checked = Configuration.Enabled; 389 showBalloonTooltipsToolStripMenuItem.Checked = Configuration.Enabled;
290 windowToolStripMenuItem.Checked = Configuration.CaptureMode == CaptureMode.Window; 390 windowToolStripMenuItem.Checked = Configuration.CaptureMode == CaptureMode.Window;
291 screenToolStripMenuItem.Checked = Configuration.CaptureMode == CaptureMode.Screen; 391 screenToolStripMenuItem.Checked = Configuration.CaptureMode == CaptureMode.Screen;
-   392 networkSharingToolStripMenuItem.Checked = Configuration.NetworkSharing;
Line 292... Line 393...
292   393  
293 // Load all tracked folders. 394 // Load all tracked folders.
Line 294... Line 395...
294 var folders = await LoadFolders(); 395 var folders = await LoadFolders();