Ejemplo n.º 1
0
        public string GetConnectionString(string UserName)
        {
            if (LocalEndpointSupport == null)
            {
                return("");
            }

            Base64PeerData peerData = new Base64PeerData(
                UserName,
                LocalEndpointSupport.Address.IPToInt(),
                LocalEndpointSupport.Port,
                LocalEndpointTransmission.Port,
                KeyExchange.GetPublicKey()
                );

            return(URI + ":" + peerData.GetBase64EncodedData());
        }
Ejemplo n.º 2
0
        public async void AddPeer(string ConnectionString, uint SubnetworkIP)
        {
            if (!_Connected)
            {
                OnAddedPeer(this, new AddedPeerEventArgs(false, new InvalidOperationException("Żadne połączenie nie jest obecnie otwarte.")));
                return;
            }

            if ((SubnetworkIP & CurrentSubnetwork.CIDR.GetMaskFromCIDR()) != CurrentSubnetwork.Address)
            {
                OnAddedPeer(this, new AddedPeerEventArgs(false, new InvalidOperationException("Wybrany adres IP jest spoza zakresu możliwych adresów w tej sieci.")));
                return;
            }

            foreach (uint ip in PeersTx.Keys)
            {
                if (ip == SubnetworkIP)
                {
                    OnAddedPeer(this, new AddedPeerEventArgs(false, new InvalidOperationException("Wybrany adres IP jest już przypisany do innego użytkownika. Proszę wybrać inny.")));
                    return;
                }
            }

            if (ConnectionString.IndexOf(URI) > -1)
            {
                ConnectionString = ConnectionString.Remove(ConnectionString.IndexOf(URI), URI.Length + 1);
            }

            PeerData peer = null;

            try
            {
                Base64PeerData peerData = Base64PeerData.GetBase64PeerData(ConnectionString);
                peer = PeerData.GetDataFromBase64PeerData(peerData, SubnetworkIP);

                await InitiateNewUser(peer, SubnetworkIP);

                OnAddedPeer(this, new AddedPeerEventArgs(true, null));
            }
            catch (Exception ex)
            {
                RemovePeerFromDictionaries(peer, null);
                OnAddedPeer(this, new AddedPeerEventArgs(false, ex));
            }
        }
Ejemplo n.º 3
0
        private void btnChecksum_Click(object sender, RoutedEventArgs e)
        {
            string ConnectionString = tbConnectionString.Text;

            if (ConnectionString.IndexOf(':') > -1)
            {
                ConnectionString = ConnectionString.Remove(0, ConnectionString.IndexOf(':') + 1);
            }

            byte[] key = Base64PeerData.ExtractPublicKey(ConnectionString);

            if (key != null)
            {
                ParentWindow.ShowChecksum(key, "addpeer");
            }
            else
            {
                MessageBox.Show("Niepoprawny ciąg znaków! Odkodowanie klucza publicznego nie powiodło się!", "Błąd", MessageBoxButton.OK, MessageBoxImage.Warning);
            }
        }