public DhtContact(DhtSource source, IPAddress ip) { UserID = source.UserID; ClientID = source.ClientID; IP = ip; TcpPort = source.TcpPort; UdpPort = source.UdpPort; }
// 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; }
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); }
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); } }
public void TryAdd(G2ReceivedPacket packet, DhtSource source) { TryAdd(packet, source, false); }
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); }
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; }