Пример #1
0
 /// <summary>
 /// Initializes the Erebus libraries.
 /// </summary>
 public static void Run()
 {
     HDP.Register();
     SSMP.Register();
     CNP.Register();
     PlatformServiceProvider.RegisterService <VerificationKeyProvider>();
 }
Пример #2
0
 public ChatWindow(SSMP ssmp)
 {
     Registry.SetValue(@"HKEY_CURRENT_USER\SOFTWARE\472\Erebus\Client\Recent", ssmp.Endpoint.Value.Address.ToString(), DateTime.Now.Ticks);
     App.UsersTSM.RunSafe(() => App.RecentUpdate = true);
     InitializeComponent();
     DataContext           = this;
     Title                 = "Secure chat with " + ssmp.Endpoint.Value.Address.ToString();
     chat                  = ssmp;
     list.ItemsSource      = messages;
     chat.MessageReceived += (sender, e) =>
     {
         dynamic ad = null;
         if (e.HasAttachment)
         {
             var path = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName());
             Directory.CreateDirectory(path);
             File.WriteAllBytes(path += "\\" + e.Attachment.Item1, e.Attachment.Item2);
             ad = Tuple.Create(path, e.Attachment.Item1, img_ext.Contains(Path.GetExtension(e.Attachment.Item1).ToLower()));
         }
         Dispatcher.Invoke(() => messages.Add(new Message {
             Text = e.Message, Received = true, AttachmentData = ad, Timestamp = DateTime.Now
         }));
     };
     chat.ConnectionClosed += (sender, e) => Dispatcher.Invoke(Close);
 }
Пример #3
0
        /// <summary>
        /// Initializes the Erebus libraries.
        /// </summary>
        public static void Run()
        {
            HDP.Register();
            SSMP.Register();
            CNP.Register();
            PlatformServiceProvider.RegisterService <VerificationKeyProvider>();
            Log.EntryRecorded += (sender, e) => logFileTsm.RunSafe(() =>
            {
                using (var w = new FileWriter(logFile, true))
                    using (var p = new PrintWriter(w))
                    {
                        p.Println($"[{DateTime.Now}] [{sender}/{e.Severity}]: {e.Message}");
                        p.Flush();
                    }
            });
            Log.EntryRecorded += (sender, e) =>
            {
                switch (e.Severity)
                {
                case LogEntrySeverity.Info:
                    global::Android.Util.Log.Info(sender.ToString(), e.Message);
                    break;

                case LogEntrySeverity.Warning:
                    global::Android.Util.Log.Warn(sender.ToString(), e.Message);
                    break;

                case LogEntrySeverity.Error:
                    global::Android.Util.Log.Error(sender.ToString(), e.Message);
                    break;

                case LogEntrySeverity.Fatal:
                    global::Android.Util.Log.Error(sender.ToString(), "FATAL: " + e.Message);
                    break;
                }
            };
        }
Пример #4
0
        static void Main(string[] args)
        {
            Log.EntryRecorded += (sender, e) => Console.WriteLine($"{sender} ({e.Severity}): {e.Message}");
            VerificationKeyProvider.Initialize("keyinfo.dat", "hello world");
            var vkp = new VerificationKeyProvider();

            Initialization.Run();
            SSMP ssmp = null;

            SSMP.InvitationReceived += (sender, e) =>
            {
                if (ssmp == null)
                {
                    ssmp = e.Accept();
                }
                ssmp.MessageReceived  += Ssmp_MessageReceived;
                ssmp.ConnectionClosed += (_sender, _e) => ssmp = null;
            };
            var ei = new ErebusInstance(new ErebusAddress(Console.ReadLine()));

            ei.Services = new[] { HDPService.SSMP };
            var l = new TCPIPConnectionListener(int.Parse(Console.ReadLine()), ei);

            while (true)
            {
                try
                {
                    var cmd = Console.ReadLine().Split(' ');
                    switch (cmd[0])
                    {
                    case "addlink":
                        new ErebusLink(TCPIPConnectionUtils.Connect(cmd[1], int.Parse(cmd[2])), ei, false);
                        break;

                    case "listlink":
                        foreach (var link in ei.Links)
                        {
                            Console.WriteLine(link.RemoteAddress);
                        }
                        break;

                    case "hdp":
                        var hdp = new HDP(ei, HDPService.SSMP);
                        hdp.SendRequest(ErebusAddress.Broadcast);
                        hdp.InitClose();
                        break;

                    case "ssmp":
                        ssmp = new SSMP(ei, new ErebusAddress(cmd[1]));
                        ssmp.MessageReceived += Ssmp_MessageReceived;
                        break;

                    case "msg":
                        ssmp?.SendMessage(cmd.Skip(1).Aggregate((x, y) => x + " " + y));
                        break;

                    case "addkey":
                        var addr = new ErebusAddress(cmd[1]);
                        vkp.RemoveKeyPair(addr);
                        var key = vkp.CreatePrivateKey();
                        Console.WriteLine("Key: " + key.Item2.Select(x => x.ToString()).Aggregate((x, y) => x + "," + y));
                        Console.Write("Please copy other key to clipboard, then press <enter> . . .");
                        Console.ReadLine();
                        vkp.AddKeyPair(addr, key.Item1, Clipboard.GetText().Split(',').Select(x => byte.Parse(x)).ToArray());
                        break;

                    case "removekey":
                        vkp.RemoveKeyPair(new ErebusAddress(cmd[1]));
                        break;

                    case "close":
                        ssmp?.Dispose();
                        ssmp = null;
                        break;

                    case "exit":
                        return;
                    }
                }
                catch (Exception e)
                {
                    Console.WriteLine(e);
                }
            }
        }
Пример #5
0
 private void chat(object sender, RoutedEventArgs e) => Task.Run(() =>
 {
     var ssmp = new SSMP(App.Instance, Dispatcher.Invoke(() => (list.SelectedItem as User).Address));
     Dispatcher.Invoke(() => new ChatWindow(ssmp).Show());
 });