Пример #1
0
        public override async Task <object> Run_Internal(ProxyObserver observer, RestClient http, string asset, IScanRepository repository, object args)
        {
            var img = await http.GetAsync <JsonObject>($"screenshot?site={asset}");

            observer?.Notify("WebpageScreenshot", "got screnshot", null);
            return(null != img ? img.screenshot?.data : null);
        }
Пример #2
0
        public override async Task <object> Run_Internal(ProxyObserver observer, RestClient http, string asset, IScanRepository repository, object args)
        {
            Result result = await http.GetAsync <Result>($"getHtmlSource?site={asset}");

            observer?.Notify("WebPageHthm", "got Html Source", null);
            return(result?.html);
        }
Пример #3
0
        public override async Task <object> Run_Internal(ProxyObserver observer, RestClient http, string asset, IScanRepository repository, object args)
        {
            var           proxy  = new RestClient(http.Host);
            List <Result> result = await proxy.GetAsync <List <Result> >("getDollars");

            observer?.Notify("Dollars", "got dollar values", null);
            return(result);
        }
        /// <summary>
        /// Returns an IRemoteObserver used to send messages to the remote host at
        /// the specified IPEndpoint.
        /// </summary>
        /// <param name="remoteEndpoint">The IPEndpoint of the remote host</param>
        /// <returns>An IRemoteObserver used to send messages to the remote host</returns>
        public IRemoteObserver <T> GetUnmanagedObserver(IPEndPoint remoteEndpoint)
        {
            if (remoteEndpoint == null)
            {
                throw new ArgumentNullException("remoteEndpoint");
            }

            ProxyObserver remoteObserver = CreateRemoteObserver(remoteEndpoint);

            return(remoteObserver);
        }
        private ProxyObserver CreateRemoteObserver(IPEndPoint remoteEndpoint)
        {
            StreamingTransportClient <IRemoteEvent <T> > client =
                new StreamingTransportClient <IRemoteEvent <T> >(remoteEndpoint,
                                                                 _observerContainer,
                                                                 _remoteEventCodec,
                                                                 _tcpClientFactory);

            ProxyObserver remoteObserver = new ProxyObserver(client);

            return(remoteObserver);
        }
        private ProxyObserver CreateRemoteObserver(IPEndPoint remoteEndpoint)
        {
            TransportClient <IRemoteEvent <T> > client =
                new TransportClient <IRemoteEvent <T> >(remoteEndpoint, _codec, _observerContainer, _tcpClientFactory);
            var msg = string.Format("NewClientConnection: Local {0} connected to Remote {1}",
                                    client.Link.LocalEndpoint.ToString(),
                                    client.Link.RemoteEndpoint.ToString());

            LOGGER.Log(Level.Info, msg);

            ProxyObserver remoteObserver = new ProxyObserver(client);

            return(remoteObserver);
        }
Пример #7
0
        /// <summary>
        /// Returns an IObserver used to send messages to the remote host at
        /// the specified IPEndpoint.
        /// </summary>
        /// <param name="remoteEndpoint">The IPEndpoint of the remote host</param>
        /// <returns>An IObserver used to send messages to the remote host</returns>
        public IObserver <T> GetRemoteObserver(IPEndPoint remoteEndpoint)
        {
            if (remoteEndpoint == null)
            {
                throw new ArgumentNullException("remoteEndpoint");
            }

            ProxyObserver remoteObserver;

            if (!_cachedClients.TryGetValue(remoteEndpoint, out remoteObserver))
            {
                StreamingTransportClient <IRemoteEvent <T> > client =
                    new StreamingTransportClient <IRemoteEvent <T> >(remoteEndpoint, _observerContainer, _remoteEventCodec);

                remoteObserver = new ProxyObserver(client);
                _cachedClients[remoteEndpoint] = remoteObserver;
            }

            return(remoteObserver);
        }
Пример #8
0
        /// <summary>
        /// Returns an IObserver used to send messages to the remote host at
        /// the specified IPEndpoint.
        /// </summary>
        /// <param name="remoteEndpoint">The IPEndpoint of the remote host</param>
        /// <returns>An IObserver used to send messages to the remote host</returns>
        public IObserver <T> GetRemoteObserver(IPEndPoint remoteEndpoint)
        {
            if (remoteEndpoint == null)
            {
                throw new ArgumentNullException("remoteEndpoint");
            }

            ProxyObserver remoteObserver;

            if (!_cachedClients.TryGetValue(remoteEndpoint, out remoteObserver))
            {
                TransportClient <IRemoteEvent <T> > client =
                    new TransportClient <IRemoteEvent <T> >(remoteEndpoint, _codec, _observerContainer);
                var msg = string.Format("NewClientConnection: Local {0} connected to Remote {1}",
                                        client.Link.LocalEndpoint.ToString(),
                                        client.Link.RemoteEndpoint.ToString());
                LOGGER.Log(Level.Info, msg);

                remoteObserver = new ProxyObserver(client);
                _cachedClients[remoteEndpoint] = remoteObserver;
            }

            return(remoteObserver);
        }
Пример #9
0
        public override async Task <object> Run_Internal(ProxyObserver observer, RestClient http, string asset, IScanRepository repository, object args)
        {
            if (String.IsNullOrWhiteSpace(asset) || IsLinkFile(asset))
            {
                return(new List <string>());
            }

            // asset = CleanURL(asset);

            HashSet <string> temp = await http.GetAsync <HashSet <string> >($"getAllLinks?site={asset}");

            if (null == temp)
            {
                return(new List <string>());
            }

            HashSet <string> temp2 = new HashSet <string>();

            foreach (var link in temp)
            {
                if (!String.IsNullOrEmpty(link))
                {
                    if (_badChars.Contains(link[link.Length - 1]))
                    {
                        string fixedLink = link.Remove(link.Length - 1);
                        temp2.Add(fixedLink);
                    }
                    else
                    {
                        temp2.Add(link);
                    }
                }
            }

            IEnumerable <string> links = temp2;

            if (null != links && links.Any())
            {
                var    yuri = new Uri(asset);
                string host = yuri.Scheme + "://" + yuri.Host;
                links = links.Where(link => link.StartsWith(host) && !IsLinkFile(link));//sadece host adıyla başlayanları al.
                if (links.Any())
                {
                    IEnumerable <string> previousResults = await repository.GetResults(true, true);

                    HashSet <string> doNotIncludeThose = new HashSet <string>();
                    foreach (string result in previousResults)
                    {
                        try
                        {
                            var list = JsonConvert.DeserializeObject <List <string> >(result);
                            list.ForEach(i => doNotIncludeThose.Add(i));
                        }
                        catch { }
                    }

                    links = links.Where(l => !doNotIncludeThose.Contains(l));

                    _ = repository.AddChildScan(asset, links);//clild' lari ekle asekron olarak.

                    observer.Notify(nameof(Worker) + "_" + nameof(Run), "The Spider is working now.", links);
                }
            }

            return(links);
        }
Пример #10
0
 public override async Task <object> Run_Internal(ProxyObserver observer, RestClient http, string asset, IScanRepository repository, object args)
 {
     return(await http.GetAsync <HashSet <string> >($"getAllLinks?site={asset}"));
 }