Ejemplo n.º 1
0
        protected async Task <IActivityStreamRepository> Open(SavedIPAddressModel savedAddress, int port)
        {
            var peer = new Peer()
            {
                Address     = savedAddress,
                AddressPort = port,
            };

            return(new HttpActivityStreamRepository(null, peer));
        }
Ejemplo n.º 2
0
        public async Task <SavedIPAddressModel> GetOrRememberIP(IPAddress address)
        {
            var ipaddress = address.ToString();
            var ips       = address.AddressFamily == AddressFamily.InterNetworkV6 ? GetIPv6() : GetIPv4();
            var ip        = await ips.FirstOrDefaultAsync(ip => ip.Address == ipaddress);

            if (ip == null)
            {
                ip = new SavedIPAddressModel()
                {
                    Type    = address.AddressFamily == AddressFamily.InterNetworkV6 ? IPType.IPv6 : IPType.IPv4,
                    Address = ipaddress,
                };
                await _db.IPs.AddAsync(ip);

                await _db.SaveChangesAsync();
            }
            return(ip);
        }
Ejemplo n.º 3
0
        public async Task <Estuary.Actors.Peer> GetPeer(SavedIPAddressModel address, int?port = null)
        {
            port = port ?? 443;
            var dir = PeerDirectory(address, port);

            if (System.IO.Directory.Exists(dir))
            {
                Estuary.Actors.Peer peer = null;
                using (var stream = new FileStream($"{dir}/peer.json", FileMode.Open))
                {
                    peer = await JsonSerializer.DeserializeAsync <Estuary.Actors.Peer>(stream);
                }

                return(peer);
            }
            else
            {
                return(null);
            }
        }
Ejemplo n.º 4
0
        public Task PeerAddressChanged(SavedIPAddressModel addressFrom, int portFrom, SavedIPAddressModel addressTo, int portTo)
        {
            var dirFrom = PeerDirectory(addressFrom, portFrom);

            if (System.IO.Directory.Exists(dirFrom))
            {
                var dirTo = PeerDirectory(addressTo, portTo);
                if (!System.IO.Directory.Exists(dirTo))
                {
                    System.IO.Directory.Move(dirFrom, dirTo);
                    return(Task.CompletedTask);
                }
                else
                {
                    return(Task.FromException(new Exception($"New address and port already in use")));
                }
            }
            else
            {
                return(Task.FromException(new Exception($"Existing address and port does not exist")));
            }
        }
Ejemplo n.º 5
0
 private string PeerHandle(SavedIPAddressModel address, int?port) => $"{address}-{port}";