static void Main(string[] args) { SenderClient senderClient = new SenderClient(); ReceiverClient receiverClient = new ReceiverClient(); try { _rsaWithCspKey.AssignNeyCspKey(); var publicKey = _rsaWithCspKey.CryptoServiceProvider.ExportParameters(false); var privateKey = _rsaWithCspKey.CryptoServiceProvider.ExportParameters(true); senderClient.PublicKey = publicKey; receiverClient.PublicKey = publicKey; receiverClient.PrivateData = privateKey; SenderClientData(senderClient as SenderClient); ReceiverClientData(receiverClient as ReceiverClient); } finally { _rsaWithCspKey.DeleteKeyFromCsp(); } }
public void ChannelLifecycleHttpClient() { new FileInfo(".test.2.conf").Delete(); HttpClient httpClient = new HttpClient(); httpClient.BaseAddress = new Uri("http://localhost:5000/"); ConfigManager config = new ConfigManager(".test.2.conf"); SenderClient sender = new SenderClient(config, config.Config.Peers[0].ChannelID, httpClient.BaseAddress.ToString(), httpClient); ReceiverClient receiver = new ReceiverClient(config, config.Config.Peers[0].ChannelID, httpClient.BaseAddress.ToString(), httpClient); sender.CheckIfAvailable(); Assert.False(sender.IsAvailable); receiver.Connect(); sender.CheckIfAvailable(); Assert.True(sender.IsAvailable); receiver.Disconnect(); sender.CheckIfAvailable(); Assert.False(sender.IsAvailable); new FileInfo(".test.2.conf").Delete(); }
static void ReceiverInitWorkaround(string config) { string msg = Guid.NewGuid().ToString(); Console.WriteLine("Bug workaround - waiting for own answer."); CLIConfig cfg = LoadConfig(config + ".local"); ConfigManager cm = new ConfigManager(config); List <ReceiverClient> list = new List <ReceiverClient>(); Peer p = cm.Config.Peers.Single(x => x.PeerID == cm.Config.MyID); Console.WriteLine("Init receiver channel: " + p.ChannelID.ToString()); ReceiverClient client = new ReceiverClient(cm, p.ChannelID, cfg.ServerURL); client.MessageReceived = HandleReceivedInit; client.Connect(); SenderClient sclient = new SenderClient(cm, p.ChannelID, cfg.ServerURL); while (initReply.ToLower().Trim() != msg.ToLower().Trim()) { sclient.SendMessage(msg); Thread.Sleep(100); } Console.WriteLine("Got it... Good."); foreach (ReceiverClient r in list) { r.Disconnect(); } }
public void CheckRandomChannelDefaultConfig() { new FileInfo(".geeksync-client.conf").Delete(); ConfigManager config = new ConfigManager(); SenderClient client = new SenderClient(config, config.Config.Peers[0].ChannelID, "http://localhost:5000/"); client.CheckIfAvailable(); Assert.False(client.IsAvailable); new FileInfo(".geeksync-client.conf").Delete(); }
/// <summary> /// Main method of sender /// </summary> /// <param name="args">args from command line</param> static void Main(string[] args) { var index = Array.FindIndex(args, x => x == "--reconnect-example"); if (index != -1) { Application.Main(args.Skip(1).ToArray()); } else { SenderClient client = new SenderClient(); client.Run(args); } }
public void SendAndReceive() { new FileInfo(".test.3r.conf").Delete(); new FileInfo(".test.3s.conf").Delete(); ConfigManager rconfig = new ConfigManager(".test.3r.conf"); ConfigManager sconfig = new ConfigManager(".test.3s.conf"); rconfig.PeerWith(sconfig); Guid ch = sconfig.Config.Peers.Single(x => x.PeerID == rconfig.Config.MyID).ChannelID; SenderClient sender = new SenderClient(sconfig, ch, "http://localhost:5000/"); ReceiverClient receiver = new ReceiverClient(rconfig, ch, "http://localhost:5000/"); sender.CheckIfAvailable(); Assert.False(sender.IsAvailable); lastMsg = ""; receiver.MessageReceived = receiverHanlder; receiver.Connect(); sender.CheckIfAvailable(); Assert.True(sender.IsAvailable); Assert.Equal("", lastMsg); sender.SendMessage("TEST MESSAGE"); Thread.Sleep(10 * 1000); Assert.Equal("TEST MESSAGE", lastMsg); receiver.Disconnect(); sender.CheckIfAvailable(); Assert.False(sender.IsAvailable); new FileInfo(".test.3r.conf").Delete(); new FileInfo(".test.3s.conf").Delete(); }
private static void SenderClientData(SenderClient senderClient) { byte[] cipherDataBytes = _rsaWithCspKey.EncryptData(plainData: Encoding.UTF8.GetBytes(ORIGINAL_MESSAGE)); _hexValue = BitConverter.ToString(cipherDataBytes); senderClient.CipherText = BitConverter.ToString(cipherDataBytes); Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine($"## Sender Client ##"); Console.ResetColor(); Console.WriteLine($"{"Exponent",-25} : {BitConverter.ToString(senderClient.PublicKey.Exponent)}"); Console.WriteLine($"{"Modulus",-25} : {BitConverter.ToString(senderClient.PublicKey.Modulus)}"); Console.WriteLine(); Console.WriteLine($"{"Original Message",-25} : {ORIGINAL_MESSAGE}"); Console.WriteLine($"{"Cipher Message",-25} : {senderClient.CipherText}"); }
static void Sender(string config) { CLIConfig cfg = LoadConfig(config + ".local"); ConfigManager cm = new ConfigManager(config); Console.WriteLine("Enter message:"); string msg = Console.ReadLine(); foreach (Peer p in cm.Config.Peers) { Console.WriteLine("Sender channel: " + p.ChannelID.ToString()); SenderClient client = new SenderClient(cm, p.ChannelID, cfg.ServerURL); client.CheckIfAvailable(); Console.WriteLine("Available: " + client.IsAvailable.ToString()); client.SendMessage(msg); } }
/// <summary> /// Main method of sender /// </summary> /// <param name="args">args from command line</param> static void Main(string[] args) { SenderClient client = new SenderClient(); client.Run(args); }
static void Main(string[] args) { var client = new SenderClient("127.0.0.1:6789"); client.StartListener(); var sender = new Sender(client); sender.Register <IExampleObject>(); // Sync bindings IReadOnlyDictionary <string, IExampleObject> bindings = new Dictionary <string, IExampleObject>(); StepExample("Press any key to sync bindings.", () => { sender.SynchronizeBindings(); bindings = sender.GetBindingsByType <IExampleObject>(); Console.WriteLine($"Found {bindings.Count} {nameof(IExampleObject)}"); }); // Event subscribe StepExample("Press any key to subscribe to event.", () => { Console.WriteLine($"Subscribing to {nameof(IExampleObject.NotifyRequested)}..."); bindings.Values.First().NotifyRequested += _obj1_NotifyRequested; }); // Event unsubscribe StepExample("Press any key to unsubscribe from event.", () => { Console.WriteLine($"Unsubscribing from {nameof(IExampleObject.NotifyRequested)}..."); bindings.Values.First().NotifyRequested -= _obj1_NotifyRequested; }); // Property get StepExample("Press any key to get property value.", () => { var value = bindings.Values.First().StrProperty; Console.WriteLine(value == null ? $"Looks like the value is 'null'. Let's set it!" : $"Value: {value}"); }); // Property set StepExample("Press any key to set property value.", () => { string value = "You set a string!"; bindings.Values.First().StrProperty = value; Console.WriteLine($"Value set to: {value}"); }); // Property get (again) StepExample("Press any key to get property value.", () => { var value = bindings.Values.First().StrProperty; Console.WriteLine($"Look it's the same value you just set: {value}"); }); // Method invoke (void return) StepExample("Press any key to invoke a void return method.", () => { bindings.Values.First().MethodVoidStr("Method invoked!"); Console.WriteLine("You invoked the method!"); }); // Method invoke (string return) StepExample("Press any key to invoke a string return method.", () => { string result = bindings.Values.First().MethodStr(); Console.WriteLine($"Method result: {result}"); }); // Method invoke (params string/void return) StepExample("Press any key to invoke a void return/params method.", () => { bindings.Values.First().MethodVoidParamsString("str0", "str1"); Console.WriteLine($"You invoked the method!"); }); // Method invoke (custom class/void return) StepExample("Press any key to invoke a void return/custom class.", () => { bindings.Values.First().MethodVoidExampleClass(new ArgsExampleClass() { StringProperty = "str0", DoubleProperty = 2.0 }); Console.WriteLine($"You invoked the method!"); }); Console.WriteLine("Press any key to exit example."); Console.ReadKey(); }