Beispiel #1
0
 public DhtContact(DhtSource source, IPAddress ip)
 {
     UserID   = source.UserID;
     ClientID = source.ClientID;
     IP       = ip;
     TcpPort  = source.TcpPort;
     UdpPort  = source.UdpPort;
 }
Beispiel #2
0
        // used to add global proxies
        public DhtContact(DhtSource opHost, IPAddress opIP, TunnelAddress client, DhtAddress server)
        {
            UserID   = opHost.UserID;
            ClientID = opHost.ClientID;
            IP       = opIP;
            TcpPort  = opHost.TcpPort;
            UdpPort  = opHost.UdpPort;

            TunnelServer = new DhtAddress(server.UserID, server.ClientID, server.IP, server.UdpPort);
            TunnelClient = client;
        }
Beispiel #3
0
        public DhtSource GetLocalSource()
        {
            DhtSource source = new DhtSource();

            source.UserID   = Local.UserID;
            source.ClientID = Local.ClientID;
            source.TcpPort  = TcpControl.ListenPort;
            source.UdpPort  = UdpControl.ListenPort;
            source.Firewall = Core.Firewall;

            return(source);
        }
Beispiel #4
0
        public void TryAdd(G2ReceivedPacket packet, DhtSource source, bool pong)
        {
            // packet has IP and tunnel info
            // source has operational info

            // if firewall flag not set add to routing
            if (source.Firewall == FirewallType.Open)
            {
                Add(new DhtContact(source, packet.Source.IP), pong);
            }

            // if tunneled source doesnt have op reachable IP, must go over global
            else if (packet.Tunneled)
            {
                Add(new DhtContact(source, packet.Source.IP, packet.Source.TunnelClient, packet.Source.TunnelServer), pong);
            }
        }
Beispiel #5
0
 public void TryAdd(G2ReceivedPacket packet, DhtSource source)
 {
     TryAdd(packet, source, false);
 }
Beispiel #6
0
        public static LocationData Decode(byte[] data)
        {
            G2Header root = new G2Header(data);

            G2Protocol.ReadPacket(root);

            if (root.Name != LocationPacket.Data)
            {
                return(null);
            }

            LocationData loc   = new LocationData();
            G2Header     child = new G2Header(root.Data);

            while (G2Protocol.ReadNextChild(root, child) == G2ReadResult.PACKET_GOOD)
            {
                if (!G2Protocol.ReadPayload(child))
                {
                    continue;
                }

                switch (child.Name)
                {
                case Packet_Key:
                    loc.Key    = Utilities.ExtractBytes(child.Data, child.PayloadPos, child.PayloadSize);
                    loc.UserID = Utilities.KeytoID(loc.Key);
                    break;

                case Packet_Source:
                    loc.Source = DhtSource.ReadPacket(child);
                    loc.UserID = loc.Source.UserID;     // encode light doesnt send full key
                    break;

                case Packet_IP:
                    loc.IP = new IPAddress(Utilities.ExtractBytes(child.Data, child.PayloadPos, child.PayloadSize));
                    break;

                case Packet_Proxies:
                    loc.Proxies.Add(DhtAddress.ReadPacket(child));
                    break;

                case Packet_Name:
                    loc.Name = UTF8Encoding.UTF8.GetString(child.Data, child.PayloadPos, child.PayloadSize);
                    break;

                case Packet_Place:
                    loc.Place = UTF8Encoding.UTF8.GetString(child.Data, child.PayloadPos, child.PayloadSize);
                    break;

                case Packet_Version:
                    loc.Version = CompactNum.ToUInt32(child.Data, child.PayloadPos, child.PayloadSize);
                    break;

                case Packet_GMTOffset:
                    loc.GmtOffset = BitConverter.ToInt32(child.Data, child.PayloadPos);
                    break;

                case Packet_Away:
                    loc.Away = BitConverter.ToBoolean(child.Data, child.PayloadPos);
                    break;

                case Packet_AwayMsg:
                    loc.AwayMessage = UTF8Encoding.UTF8.GetString(child.Data, child.PayloadPos, child.PayloadSize);
                    break;

                case Packet_Tag:
                    loc.Tags.Add(PatchTag.FromBytes(child.Data, child.PayloadPos, child.PayloadSize));
                    break;

                case Packet_TunnelClient:
                    loc.TunnelClient = TunnelAddress.FromBytes(child.Data, child.PayloadPos);
                    break;

                case Packet_TunnelServers:
                    loc.TunnelServers.Add(DhtAddress.ReadPacket(child));
                    break;
                }
            }

            return(loc);
        }
Beispiel #7
0
        public DhtSource GetLocalSource()
        {
            DhtSource source = new DhtSource();

            source.UserID = Local.UserID;
            source.ClientID = Local.ClientID;
            source.TcpPort = TcpControl.ListenPort;
            source.UdpPort = UdpControl.ListenPort;
            source.Firewall = Core.Firewall;

            return source;
        }
Beispiel #8
0
 public DhtContact(DhtSource source, IPAddress ip)
 {
     UserID = source.UserID;
     ClientID = source.ClientID;
     IP = ip;
     TcpPort = source.TcpPort;
     UdpPort = source.UdpPort;
 }
Beispiel #9
0
        // used to add global proxies
        public DhtContact(DhtSource opHost, IPAddress opIP, TunnelAddress client, DhtAddress server)
        {
            UserID = opHost.UserID;
            ClientID = opHost.ClientID;
            IP = opIP;
            TcpPort = opHost.TcpPort;
            UdpPort = opHost.UdpPort;

            TunnelServer = new DhtAddress(server.UserID, server.ClientID, server.IP, server.UdpPort);
            TunnelClient = client;
        }