示例#1
0
        public AcceptKeyDialog(Network network, ReceivedKeyEventArgs args) : base(null, "AcceptKeyDialog")
        {
            var publicKey = new PublicKey(args.Key.Info, args.Key.Key);

            keyTextView.Buffer.Text = publicKey.ToArmoredString();
            string nodeID = FileFind.Common.SHA512Str(publicKey.Key);

            nodeIdLabel.Text = nodeID;

            if (args.Node != null)
            {
                if (nodeID.ToUpper() != args.Node.NodeID.ToUpper())
                {
                    throw new Exception("The key recieved does not match this user!");
                }
                nicknameLabel.Text = args.Node.NickName;
            }
            else if (args.Connection != null)
            {
                var conn = args.Connection;

                connectionLabel.Text = String.Format("{0} ({1})", conn.RemoteAddress, conn.Incoming ? "Incoming" : "Outgoing");
                nicknameLabel.Text   = args.Key.Info;

                connectionLabel.Show();
                connectionTitleLabel.Show();
            }
            else
            {
                nicknameLabel.Text = args.Key.Info;
            }

            denyKeyButtonLabel.Text = String.Format("Deny Key ({0})", secondsLeft);
        }
示例#2
0
        private void AskAcceptKey(Network network, ReceivedKeyEventArgs args,
                                  AutoResetEvent receiveKeyWait,
                                  ref bool acceptKey)
        {
            try {
                AcceptKeyDialog dialog   = new AcceptKeyDialog(network, args);
                int             response = dialog.Run();

                acceptKey = (response == (int)ResponseType.Ok);

                receiveKeyWait.Set();
            } catch (Exception ex) {
                LoggingService.LogError(ex);
                Gui.ShowErrorDialog(ex.ToString(), Gui.MainWindow.Window);
            }
        }
示例#3
0
        private bool network_ReceivedKey(Network network, ReceivedKeyEventArgs args)
        {
            try {
                bool           accept         = false;
                AutoResetEvent receiveKeyWait = new AutoResetEvent(false);

                Application.Invoke(delegate {
                    AskAcceptKey(network, args, receiveKeyWait, ref accept);
                });

                receiveKeyWait.WaitOne();
                return(accept);
            } catch (Exception ex) {
                LoggingService.LogError(ex);
                return(false);
            }
        }
示例#4
0
        private bool network_ReceivedKey(Network network, ReceivedKeyEventArgs args)
        {
            try {
                var publicKey = new PublicKey(args.Key.Info, args.Key.Key);
                var nodeInfo  = new TrustedNodeInfo(publicKey);

                if (args.Node != null)
                {
                    nodeInfo.Identifier = args.Node.NickName;
                }
                else
                {
                    nodeInfo.Identifier = nodeInfo.NodeId;
                }

                // First person to connect? Put them in charge!
                if (network.TrustedNodes.Count == 0)
                {
                    LogItem(string.Format("[!] WARNING! {0} is now the admin!", publicKey.Nickname));
                    if (!settings.AdminIDs.Contains(nodeInfo.NodeId))
                    {
                        settings.AdminIDs.Add(nodeInfo.NodeId);
                        settings.SaveSettings();
                    }
                    return(true);
                }

                // Don't accept the key now, but keep it around
                var keyDir  = GetKeyDir(network);
                var keyFile = GetKeyFileName(network, nodeInfo.NodeId);
                if (IO.File.Exists(keyFile) == false)
                {
                    if (IO.Directory.Exists(keyDir) == false)
                    {
                        IO.Directory.CreateDirectory(keyDir);
                    }
                    IO.File.WriteAllText(keyFile, publicKey.ToArmoredString());
                }
            } catch (Exception ex) {
                LoggingService.LogError("Error in network_ReceivedKey: " + ex);
            }
            return(false);
        }
示例#5
0
        private bool network_ReceivedKey(Network network, ReceivedKeyEventArgs args)
        {
            try {
                var publicKey = new PublicKey(args.Key.Info, args.Key.Key);
                TrustedNodeInfo nodeInfo = new TrustedNodeInfo(publicKey);

                if (args.Node != null) {
                    nodeInfo.Identifier = args.Node.NickName;
                } else {
                    nodeInfo.Identifier = nodeInfo.NodeID;
                }

                // First person to connect? Put them in charge!
                if (network.TrustedNodes.Count == 0) {
                    LogItem(String.Format("[!] WARNING! {0} is now the admin!", publicKey.Nickname));
                    if (!settings.AdminIDs.Contains(nodeInfo.NodeID)) {
                        settings.AdminIDs.Add(nodeInfo.NodeID);
                        settings.SaveSettings();
                    }
                    return true;
                }

                // Don't accept the key now, but keep it around
                string keyDir = GetKeyDir(network);
                string keyFile = GetKeyFileName(network, nodeInfo.NodeID);
                if (IO.File.Exists (keyFile) == false) {
                    if (IO.Directory.Exists (keyDir) == false) {
                        IO.Directory.CreateDirectory (keyDir);
                    }
                    IO.File.WriteAllText(keyFile, publicKey.ToArmoredString());
                }
            } catch (Exception ex) {
                LoggingService.LogError("Error in network_ReceivedKey: " + ex);
            }
            return false;
        }