예제 #1
0
        public void  Receive_CrawlAck(CrawlAck ack, G2ReceivedPacket packet)
        {
            DhtContact source = new DhtContact(ack.Source, packet.Source.IP);

            if (!CrawlMap.ContainsKey(source.RoutingID))
            {
                return;
            }

            CrawlNode node = CrawlMap[source.RoutingID];

            node.Ack = ack;

            foreach (DhtContact contact in ack.ProxyServers)
            {
                if (!CrawlMap.ContainsKey(contact.RoutingID))
                {
                    CrawlMap[contact.RoutingID] = new CrawlNode(contact);
                }
            }

            foreach (DhtContact contact in ack.ProxyClients)
            {
                if (!CrawlMap.ContainsKey(contact.RoutingID))
                {
                    CrawlNode newNode = new CrawlNode(contact);
                    newNode.Proxy = node;

                    CrawlMap[contact.RoutingID] = newNode;
                }
            }
        }
예제 #2
0
파일: DhtNetwork.cs 프로젝트: nandub/DeOps
        public void Send_CrawlAck(CrawlRequest req, G2ReceivedPacket packet)
        {
            CrawlAck ack = new CrawlAck();

            ack.Source  = GetLocalSource();
            ack.Version = DeOpsContext.CoreVersion.ToString();
            ack.Uptime  = (Core.TimeNow - Core.StartTime).Seconds;


            foreach (TcpConnect connection in TcpControl.ProxyServers)
            {
                ack.ProxyServers.Add(new DhtContact(connection, connection.RemoteIP));
            }

            foreach (TcpConnect connection in TcpControl.ProxyClients)
            {
                ack.ProxyClients.Add(new DhtContact(connection, connection.RemoteIP));
            }


            if (packet.ReceivedTcp)
            {
                ack.ToAddress = packet.Source;
                packet.Tcp.SendPacket(ack);
            }
            else
            {
                SendPacket(packet.Source, ack);
            }
        }
예제 #3
0
        public void Send_CrawlAck(CrawlRequest req, G2ReceivedPacket packet)
        {
            CrawlAck ack = new CrawlAck();

            ack.Source = GetLocalSource();
            ack.Version = Core.Context.LocalSeqVersion.ToString();
            ack.Uptime = (Core.TimeNow - Core.StartTime).Seconds;

            foreach (TcpConnect connection in TcpControl.ProxyServers)
                ack.ProxyServers.Add(new DhtContact(connection, connection.RemoteIP));

            foreach (TcpConnect connection in TcpControl.ProxyClients)
                ack.ProxyClients.Add(new DhtContact(connection, connection.RemoteIP));

            if (packet.ReceivedTcp)
            {
                ack.ToAddress = packet.Source;
                packet.Tcp.SendPacket(ack);
            }
            else
                SendPacket(packet.Source, ack);
        }
예제 #4
0
        public void Receive_CrawlAck(CrawlAck ack, G2ReceivedPacket packet)
        {
            DhtContact source = new DhtContact(ack.Source, packet.Source.IP);

            if (!CrawlMap.ContainsKey(source.RoutingID))
                return;

            CrawlNode node = CrawlMap[source.RoutingID];

            node.Ack = ack;

            foreach(DhtContact contact in ack.ProxyServers)
                if (!CrawlMap.ContainsKey(contact.RoutingID))
                    CrawlMap[contact.RoutingID] = new CrawlNode(contact);

            foreach(DhtContact contact in ack.ProxyClients)
                if (!CrawlMap.ContainsKey(contact.RoutingID))
                {
                    CrawlNode newNode = new CrawlNode(contact);
                    newNode.Proxy = node;

                    CrawlMap[contact.RoutingID] = newNode;
                }
        }
예제 #5
0
파일: DhtNetwork.cs 프로젝트: nandub/DeOps
        public void Receive_CrawlAck(G2ReceivedPacket packet)
        {
            CrawlAck ack = CrawlAck.Decode(packet);

            Core.RunInGuiThread(CrawlerAck, ack, packet);
        }