Exemple #1
0
        /// <summary>
        /// Десериализует XML файл в коллекцию ObservableCollection<OS>. Возвращает значение, указывающее на успешность выполнения.
        /// </summary>
        /// <param name="filePath"></param>
        /// <returns></returns>
        public static bool OpenXml(string filePath)
        {
            try
            {
                // Передаем в конструктор тип класса.
                var opener = new XmlSerializer(typeof(ObservableCollection <OS>));

                // Десериализация.
                using (var fs = new FileStream(filePath, FileMode.Open))
                {
                    ScanList.Clear();
                    ScanList = (ObservableCollection <OS>)opener.Deserialize(fs);
                    ForWorks.viewSource.Source = ScanList;
                    // Подписка на события изменения базы данных ObservableCollection.
                    ScanList.CollectionChanged += MainWindow.SelfRef.ChangeCollection;
                    MainWindow.SelfRef.SetFilters();
                }
                // Установить открытый файл как текущий.
                ForWorks.currentWorkFile = filePath;
                // Установка переменной состояния изменений документа в ложь.
                ForWorks.checkEdit = false;
                // Установить счетчик строк в зависимости от наличия элементов в читаемом файле.
                RowNumCounter = ScanList.Count > 0 ? ScanList.Last().NumRow + 1 : 1;
                return(true);
            }
            catch
            {
                return(false);
            }
        }
Exemple #2
0
 /// <summary>
 /// Add <paramref name="ep"/> to the scan list.
 /// </summary>
 public void Add(IPEndPoint ep)
 {
     lock (ScanList)
     {
         ScanList.AddLast(ep);
     }
     SemaphoreScanList.Release();
 }
Exemple #3
0
        private void delall()
        {
            DJScanCompletList.Clear();
            ScanList.Clear();

            pictureBoxTopDisplay.Image = null;
            if (delAllIcon != null)
            {
                delAllIcon.Invoke();
            }
        }
Exemple #4
0
        public async void DisplayBaggageLocation()
        {
            try
            {
                using (_udialog.Loading("Tracking..."))
                {
                    Dictionary <string, string> parameters = new Dictionary <string, string>();
                    parameters.Add("bagtag", _params.Bagtag);
                    parameters.Add("pnr", _params.PNR);
                    parameters.Add("lastname", _params.LastName.Trim(' '));
                    var restService = Mvx.Resolve <IRestService>();
                    restService.WebMethod  = "TrackBagScanPoints";
                    restService.Parameters = parameters;

                    string returnResponse = await restService.Consume();

                    TrackResponse trackResponse = JsonConvert.DeserializeObject <TrackResponse>(returnResponse);
                    if (trackResponse.StatusCode == "0")
                    {
                        Application.Current.Properties["token"] = trackResponse.Token;

                        if (trackResponse.ScanPoints != null)
                        {
                            var scanList = new ScanList();
                            foreach (var item in trackResponse.ScanPoints.ToList())
                            {
                                scanList.Add(new ScanPoints()
                                {
                                    Station = item.Station, Location = item.Location, ScanTime = item.ScanTime.ToString("HH:mm MMM dd, yyyy")
                                });
                            }
                            var list = new List <ScanList>()
                            {
                                scanList
                            };
                            ScanPointList = list;
                        }
                    }
                    else
                    {
                        ErrorMessage = trackResponse.Message;
                    }
                    Bagtag   = _params.Bagtag;
                    PNR      = _params.PNR;
                    LastName = _params.LastName;
                }
            }
            catch (Exception e)
            {
                Mvx.Resolve <IUserDialogs>().Toast(e.Message, null);
            }
        }
Exemple #5
0
    public static void TestCount()
    {
      for (var i = 0; i < 100; i++)
      {
        var x = MonteCarlo.Unordered().ToList();

        var scan = new ScanList<int>(Function, x);

        Console.WriteLine("   {0}", x.ToCSV(100));
        Console.WriteLine(" = {0}", scan);
        Console.WriteLine();

        Assert.That(scan.Count, Is.EqualTo(x.Count));
      }
    }
Exemple #6
0
    public static void TestIndexer()
    {
      for (var i = 0; i < 100; i++)
      {
        var x = MonteCarlo.Unordered().ToList();

        var scan = new ScanList<int>(Function, x);

        Console.WriteLine("   {0}", x.ToCSV(100));
        Console.WriteLine(" = {0}", scan);
        Console.WriteLine();

        if (x.Count > 0)
        {
          var seed = x[0];
          Assert.That(scan[0], Is.EqualTo(seed));
          for (var j = 1; j < x.Count; j++)
            Assert.That(scan[j], Is.EqualTo(seed = Function(seed, x[j])));
        }
      }
    }
Exemple #7
0
        /// <summary>
        /// Scanning loop.
        /// </summary>
        protected async void Loop()
        {
            while (!IsStopped)
            {
                try
                {
                    await SemaphoreScanList.WaitAsync(TokenSource.Token).ConfigureAwait(false);

                    IPEndPoint ep;
                    lock (ScanList)
                    {
                        ep = ScanList.First.Value;
                        ScanList.RemoveFirst();
                    }

                    await SemaphoreParallelism.WaitAsync(TokenSource.Token).ConfigureAwait(false);

                    Scan(ep);
                }
                catch
                {
                }
            }
        }
Exemple #8
0
 private void ip_change(object sender, KeyEventArgs e)
 {
     g_ScanList = null;
 }
Exemple #9
0
        private void btnStartStop_Click(object sender, EventArgs e)
        {
            if (btnStartStop.Text == "Start")
            {
                g_sw.Restart();
                g_stopped              = false;
                btnStartStop.Text      = "Stop";
                btnStartStop.ForeColor = Color.Red;
                cbShowOffline.Enabled  = groupBox1.Enabled = groupBox2.Enabled = groupBox3.Enabled = groupBox4.Enabled = groupBox5.Enabled = btnStartStop.Text == "Start";

                lvScans.Items.Clear();
                g_ScanList = null;

                int from1 = 0, from2 = 0, from3 = 0, from4 = 0, to1 = 0, to2 = 0, to3 = 0, to4 = 0;
                if (!ValidateIPRange(ref txtFrom1, ref txtTo1, ref from1, ref to1) || !ValidateIPRange(ref txtFrom2, ref txtTo2, ref from2, ref to2) || !ValidateIPRange(ref txtFrom3, ref txtTo3, ref from3, ref to3) || !ValidateIPRange(ref txtFrom4, ref txtTo4, ref from4, ref to4))
                {
                    MessageBox.Show("Please check TO & FROM Addresses!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    btnStartStop.Text      = "Start";
                    btnStartStop.ForeColor = Color.Green;
                    cbShowOffline.Enabled  = groupBox1.Enabled = groupBox2.Enabled = groupBox3.Enabled = groupBox4.Enabled = groupBox5.Enabled = btnStartStop.Text == "Start";
                    return;
                }
                tstStatus.Text = "Generating memory ScanList";

                g_ScanList = new ScanList();
                List <ScanListHost> scanlistHosts = new List <ScanListHost>();

                IEnumerable <string> ipRanges = new RangeFinder().GetIPRange(IPAddress.Parse($"{from1}.{from2}.{from3}.{from4}"), IPAddress.Parse($"{to1}.{to2}.{to3}.{to4}"));
                foreach (var ip in ipRanges)
                {
                    scanlistHosts.Add(new ScanListHost {
                        IP = ip, ScanResult = string.Empty
                    });
                }

                g_ScanList.Host = scanlistHosts.ToArray();

                List <ScanListHost> unscanned = g_ScanList.Host.Where(h => h.ScanResult == string.Empty).ToList();
                if (g_remaining_hosts_count > 0)
                {
                    tstStatus.Text = $"{g_remaining_hosts_count - unscanned.Count()} of {g_remaining_hosts_count} Hosts Scanned!";
                }
                tstProgress.Value = 0;
                g_scannner_tasks  = new List <Task>();

                g_total = g_ScanList.Host.Count();
                g_remaining_hosts_count = g_total;
                do
                {
                    int removed = g_scannner_tasks.RemoveAll(t => t.Status == TaskStatus.RanToCompletion);
                    Application.DoEvents();
                    Thread.Sleep(50);
                    tstStatus.Text    = $"{g_total - g_remaining_hosts_count} of {g_total} Hosts Scanned! Time: {g_sw.Elapsed.Minutes}m{g_sw.Elapsed.Seconds}s ScanRate: {(int)((g_total - g_remaining_hosts_count) / g_sw.Elapsed.TotalSeconds)} hosts/s";
                    tstProgress.Value = (((g_total - g_remaining_hosts_count) * 100) / g_total);

                    if (g_stopped)
                    {
                        return;
                    }

                    while (unscanned.Count > 0 && g_scannner_tasks.Count < numThreads.Value)
                    {
                        if (g_stopped)
                        {
                            return;
                        }

                        var  tmp = DeepCopy(unscanned.Take((int)hostsPerThread.Value)).ToList();
                        Task t   = Task.Run(() => ScanRange(tmp));
                        g_scannner_tasks.Add(t);
                        unscanned = unscanned.Skip((int)hostsPerThread.Value).ToList();
                    }
                } while (g_scannner_tasks.Count > 0 || g_remaining_hosts_count > 0 || (unscanned.Count > 0 && !g_stopped));

                if (g_stopped)
                {
                    return;
                }

                tstStatus.Text = "Saving ScanList.xml";
                SaveScanlist();
                tstStatus.Text = $"ScanList.xml saved! Time: {g_sw.Elapsed.Minutes}m{g_sw.Elapsed.Seconds}s ScanRate: {(int)((g_total - g_remaining_hosts_count) / g_sw.Elapsed.TotalSeconds)} hosts/s";

                g_sw.Stop();
                btnStartStop.Text      = "Start";
                btnStartStop.ForeColor = Color.Green;
                cbShowOffline.Enabled  = groupBox1.Enabled = groupBox2.Enabled = groupBox3.Enabled = groupBox4.Enabled = groupBox5.Enabled = btnStartStop.Text == "Start";
            }
            else
            {
                g_stopped            = true;
                btnStartStop.Enabled = false;

                Stopwatch stopStopw = new Stopwatch();
                stopStopw.Start();
                while (g_scannner_tasks != null && g_scannner_tasks.Count > 0)
                {
                    g_scannner_tasks.RemoveAll(t => t.Status == TaskStatus.RanToCompletion);
                    Application.DoEvents();
                    Thread.Sleep(500);
                    tstStatus.Text    = $"{g_scannner_tasks.Count} Stopping.. {g_total - g_remaining_hosts_count} of {g_total} Hosts Scanned!";
                    tstProgress.Value = (((g_total - g_remaining_hosts_count) * 100) / g_total);
                    if (stopStopw.Elapsed.TotalSeconds > 15)
                    {
                        foreach (var process in Process.GetProcessesByName("nmap"))
                        {
                            process.Kill();
                        }
                    }
                }
                stopStopw.Stop();

                tstStatus.Text = "Saving ScanList.xml";
                SaveScanlist();
                tstStatus.Text = "ScanList.xml saved!";

                g_sw.Stop();
                tstStatus.Text         = $"Scan Stopped.. Time: {g_sw.Elapsed.Minutes}m{g_sw.Elapsed.Seconds}s ScanRate: {(int)((g_total - g_remaining_hosts_count) / g_sw.Elapsed.TotalSeconds)} hosts/s";
                btnStartStop.Text      = "Start";
                btnStartStop.ForeColor = Color.Green;
                btnStartStop.Enabled   = true;
                cbShowOffline.Enabled  = groupBox1.Enabled = groupBox2.Enabled = groupBox3.Enabled = groupBox4.Enabled = groupBox5.Enabled = btnStartStop.Text == "Start";
            }
        }