Example #1
0
        public static string GetHtmlCode(string url)
        {
            var data    = "";
            var monitor = new PerfMonitor();

            try
            {
                var request  = (HttpWebRequest)WebRequest.Create(url);
                var response = (HttpWebResponse)request.GetResponse();

                if (response.StatusCode == HttpStatusCode.OK)
                {
                    var          receiveStream = response.GetResponseStream();
                    StreamReader readStream    = null;
                    if (receiveStream != null)
                    {
                        readStream = string.IsNullOrWhiteSpace(response.CharacterSet)
                            ? new StreamReader(receiveStream)
                            : new StreamReader(receiveStream, Encoding.GetEncoding(response.CharacterSet));
                    }

                    data = readStream?.ReadToEnd();

                    response.Close();
                    readStream?.Close();
                }
            }
            catch (Exception ex)
            {
                WebErrorLog.ErrorLogInstance.StartLog(ex);
            }
            finally { monitor.Dispose(); }

            return(data);
        }
Example #2
0
            public PerfSampler(string id, PerfMonitor monitor, int customDepthParam = -1)
            {
                _id = id;
                // Cache as ThreadStatic to remove most dictionary access
                if (_threadStaticCollection == null || _threadStaticMonitor != monitor)
                {
                    _threadStaticCollection = Guaranteed(monitor._cpuSamples, Thread.CurrentThread);
                }
                _target      = _threadStaticCollection;
                _customDepth = customDepthParam >= 0;
                if (_customDepth)
                {
                    _depth = customDepthParam;
                }
                else
                {
                    _depth = _target.Depth;
                    _target.Depth++;
                }

                _timer = LightweightTimer.StartNew();

                                #if GC_THREADMEM_SUPPORT
                _mem = null;
                if (monitor.MonitorSampleAlloc)
                {
                    _mem = System.GC.GetAllocatedBytesForCurrentThread();
                }
                                #endif

                _valid = true;
            }
Example #3
0
        public void OnException(ExceptionContext filterContext)
        {
            //    StreamWriter sw = null;
            //string path = filterContext.HttpContext.Server.MapPath(@"~/App_Data/ErrorLog.txt");
            //    if (!File.Exists(path))
            //    {
            //        sw = File.CreateText(path);
            //        sw.Close();
            //    }

            //    sw = File.AppendText(path);

            //string message = filterContext.Exception.StackTrace;
            string timestamp = DateTime.Now.ToString("dd.MM.yyyy HH:mm:ss");

            //sw.WriteLine(timestamp + ":  " + message);

            //sw.Close();

            var monitor = new PerfMonitor(_Globals.Instance.CurrentLoginUserName);

            //monitor.Line.Message = timestamp + ": \n" + GetExceptionMessage(filterContext.Exception) + "\nStackTrace:\n" + filterContext.Exception.StackTrace + "\n\n";


            monitor.Line.Message = timestamp + ": \r\n" + GetExceptionMessage(filterContext.Exception) + "\r\n\r\nStackTrace:\r\n" + filterContext.Exception.StackTrace + "\r\n\r\n";

            monitor.Dispose();

            throw new HttpException(350, "Sorry, we will fix this!");
        }
Example #4
0
        /// <summary>
        /// Crawl all pages of the website and convert them to NLPTextDocuments
        /// </summary>
        public void ExtractNLPTextDocuments()
        {
            Perfs = new PerfMonitor();

            DisplayMessages(WriteStartMessage);
            DisplayMessages(Perfs.WriteStatusHeader);

            // This is synchronous, it will not go to the next line until the crawl has completed
            CrawlResult result = crawler.Crawl(ExtractorParams.RootUrl);

            Perfs.EndTime = DateTime.Now;

            // Write end status to log file
            Perfs.WriteStatus(messagesWriter);

            string endMessage = null;

            if (result.ErrorOccurred)
            {
                endMessage = "Extraction completed with fatal error \"" + result.ErrorException.Message + "\"";
            }
            else
            {
                endMessage = "Extraction completed";
            }
            DisplayMessages(WriteEndMessage, endMessage);
        }
Example #5
0
        public static async Task <ReturnedSaveFuncInfo> DeleteAsync(string advName, string rootPath = "")
        {
            var monitor = new PerfMonitor();
            var ret     = new ReturnedSaveFuncInfo();

            try
            {
                if (string.IsNullOrEmpty(rootPath))
                {
                    rootPath = ConfigurationManager.AppSettings.Get("RootPath");
                }

                #region validation
                if (string.IsNullOrEmpty(advName))
                {
                    ret.AddReturnedValue(ReturnedState.Error, "نام آگهی مشخص نشده است");
                    return(ret);
                }
                if (string.IsNullOrEmpty(rootPath))
                {
                    ret.AddReturnedValue(ReturnedState.Error, "مسیر آگهی مشخص نشده است");
                    return(ret);
                }
                var deletePath = Path.Combine(rootPath, advName);
                if (!Directory.Exists(deletePath))
                {
                    ret.AddReturnedValue(ReturnedState.Warning, "آگهی مورد نظر برای حذف، وجود ندارد");
                    return(ret);
                }
                #endregion

                await Task.Run(() =>
                {
                    Directory.Delete(deletePath, true);
                });

                //حذف داده در جدول آگهی های مجاز برای ویزیتور
                var visitorAdv = await VisitorAdvBusiness.GetAllAsync(advName);

                if (visitorAdv != null && visitorAdv.Count != 0)
                {
                    foreach (var item in visitorAdv)
                    {
                        await VisitorAdvBusiness.RemoveByVisitorGuidAsync(item.VisitorGuid);
                    }
                }

                return(ret);
            }
            catch (Exception ex)
            {
                WebErrorLog.ErrorLogInstance.StartLog(ex);
                ret.AddReturnedValue(ex);
            }
            finally { monitor.Dispose(); }
            return(ret);
        }
        public PerfMonitorForWebApi()
        {
            PerfMonitorBase = new PerfMonitor();

            //Bubble up errors
            PerfMonitorBase.OnError += (a, b) =>
            {
                if (OnError != null)
                {
                    OnError(a, b);
                }
            };
        }
 public PerfMonitoringFilter(PerfMonitor perfMonitor)
 {
     PerfMonitor = perfMonitor;
 }
Example #8
0
        public static async Task <List <Advertise> > GetAllAsync(string search, CancellationTokenSource token, int type = 0)
        {
            /*
             * type=0 => All
             * type=1 => TaeidShode
             * type=2 => PishNevis
             */
            var          monitor     = new PerfMonitor();
            const string spliterList = " \\\r\n\t)(-_=+%$#@*|><`~':.?؟،";

            try
            {
                if (string.IsNullOrEmpty(search))
                {
                    search = "";
                }
                token.Cancel();
                List <Advertise> res = null;
                res = await GetAllAsync();

                switch (type)
                {
                case 1:
                    res = res.Where(q => q.PishNevis == false).ToList();
                    break;

                case 2:
                    res = res.Where(q => q.PishNevis).ToList();
                    break;
                }

                var searchItems = search.Split(spliterList.ToCharArray())?.ToList();
                if (searchItems?.Count > 0)
                {
                    foreach (var item in searchItems)
                    {
                        token.Cancel();
                        if (!string.IsNullOrEmpty(item) && item.Trim() != "")
                        {
                            token.Cancel();
                            res = res.Where(x =>
                                            (x.AdvName.Contains(item)) || (x.Titles.Contains(item)) ||
                                            (x.Content.Contains(item)))
                                  ?.ToList();
                            token.Cancel();
                        }
                        token.Cancel();
                    }
                }
                token.Cancel();
                res = res?.OrderBy(o => o.AdvName).ToList();
                token.Cancel();
                return(res);
            }
            catch (OperationCanceledException)
            { return(null); }
            catch (Exception ex)
            {
                WebErrorLog.ErrorLogInstance.StartLog(ex);
                return(new List <Advertise>());
            }
            finally { monitor.Dispose(); }
        }
Example #9
0
        public async Task <ReturnedSaveFuncInfo> SaveAsync()
        {
            var monitor = new PerfMonitor();
            var ret     = new ReturnedSaveFuncInfo();

            try
            {
                if (string.IsNullOrEmpty(RootPath))
                {
                    RootPath = ConfigurationManager.AppSettings.Get("RootPath");
                }

                #region validation

                if (string.IsNullOrEmpty(AdvName))
                {
                    ret.AddReturnedValue(ReturnedState.Error, "آگهی فاقد نام است");
                }
                if (string.IsNullOrEmpty(Content))
                {
                    ret.AddReturnedValue(ReturnedState.Error, "آگهی فاقد محتوا می باشد");
                }
                if (string.IsNullOrEmpty(Price.ToString(CultureInfo.CurrentCulture)))
                {
                    ret.AddReturnedValue(ReturnedState.Error, "آگهی فاقد قیمت می باشد");
                }
                if (Titles?.Count < 1)
                {
                    ret.AddReturnedValue(ReturnedState.Error, "آگهی فاقد عنوان است");
                }
                if (Images?.Count < 1)
                {
                    ret.AddReturnedValue(ReturnedState.Error, "آگهی فاقد تصویر است");
                }

                #endregion

                var advPath = Path.Combine(RootPath, AdvName);

                if (!_isEdit && Directory.Exists(advPath))
                {
                    ret.AddReturnedValue(ReturnedState.Error, "نام آگهی تکراری است");
                }

                if (ret.HasError)
                {
                    return(ret);
                }

                //ذخیره آگهی
                await Task.Run(() =>
                {
                    var picturePath = Path.Combine(advPath, "Pictures");
                    if (!Directory.Exists(picturePath))
                    {
                        Directory.CreateDirectory(picturePath);
                    }
                    //حذف عسکهای اضافی
                    if (_isEdit)
                    {
                        //حذف عکسهایی که اکنون در لیست عکسهای آگهی نیستند
                        //بعبارتی کاربر هنگام ویرایش آنها را حذف کرده است
                        var oldImages = GetFiles(picturePath);
                        if (oldImages?.Count > 0)
                        {
                            foreach (var image in oldImages)
                            {
                                if (Images.IndexOf(image) < 0)
                                {
                                    File.Delete(image);
                                }
                            }
                        }
                    }
                    var contentPath = Path.Combine(advPath, "Content.txt");
                    File.WriteAllText(contentPath, Content);

                    var titlesPath = Path.Combine(advPath, "Titles.txt");
                    if (Titles != null)
                    {
                        File.WriteAllLines(titlesPath, Titles);
                    }

                    var divCatPath = Path.Combine(advPath, "DivarCat.txt");
                    if (DivarCategories != null)
                    {
                        File.WriteAllLines(divCatPath, DivarCategories);
                    }

                    var sheyCatPath = Path.Combine(advPath, "SheypoorCat.txt");
                    if (SheypoorCategories != null)
                    {
                        File.WriteAllLines(sheyCatPath, SheypoorCategories);
                    }

                    var niazCatPath = Path.Combine(advPath, "NiazKadeCat.txt");
                    if (NiazKadeCategories != null)
                    {
                        File.WriteAllLines(niazCatPath, NiazKadeCategories);
                    }
                    var niazmandyHaCatPath = Path.Combine(advPath, "NiazmandyHaCat.txt");
                    if (NiazmandyHaCategories != null)
                    {
                        File.WriteAllLines(niazmandyHaCatPath, NiazmandyHaCategories);
                    }

                    var pricePath = Path.Combine(advPath, "Price.txt");
                    File.WriteAllText(pricePath, Price.ToString(CultureInfo.CurrentCulture));

                    var pishNevisPath = Path.Combine(advPath, "PishNevis.txt");
                    if (PishNevis)
                    {
                        File.WriteAllText(pishNevisPath, "True");
                    }
                    else
                    if (File.Exists(pishNevisPath))
                    {
                        File.Delete(pishNevisPath);
                    }



                    //ذخیره عکسهای جدید کاربر
                    if (Images?.Count > 0)
                    {
                        var oldImages = GetFiles(picturePath);
                        foreach (var image in Images)
                        {
                            if (oldImages.IndexOf(image) < 0)
                            {
                                File.Copy(image, Path.Combine(picturePath, $"{Guid.NewGuid()}.jpg"));
                            }
                        }
                    }

                    //حذف آگهی قدیمی :در صورتیکه نام آگهی تغییر کند
                    if (!string.IsNullOrEmpty(OldAdvName))
                    {
                        var deleteResult = DeleteAsync(OldAdvName, RootPath);
                        if (deleteResult.Result.HasError)
                        {
                            foreach (var error in deleteResult.Result.ErrorList)
                            {
                                ret.AddReturnedValue(ReturnedState.Error, error);
                            }
                        }
                    }
                });

                //ویرایش نام آگهی در جدول آگهی های مجاز برای ویزیتور
                var visitorAdv = await VisitorAdvBusiness.GetAllAsync(OldAdvName);

                if (visitorAdv != null && visitorAdv.Count != 0)
                {
                    foreach (var item in visitorAdv)
                    {
                        item.AdvName = AdvName;
                        await item.SaveAsync();
                    }
                }
            }
            catch (Exception ex)
            {
                WebErrorLog.ErrorLogInstance.StartLog(ex);
                ret.AddReturnedValue(ex);
            }
            finally { monitor.Dispose(); }
            return(ret);
        }
Example #10
0
 public ExceptionCounterFilter(PerfMonitor perfMonitor)
 {
     PerfMonitor = perfMonitor;
 }
        private async Task RegisterAdv(AdvertiseLogBusiness adv)
        {
            var ret     = new ReturnedSaveFuncInfo();
            var monitor = new PerfMonitor();

            try
            {
                adv.AdvType = AdvertiseType.NiazmandyHa;
                _driver     = Utility.RefreshDriver(_driver);
                _driver.Navigate().GoToUrl("https://niazmandyha.ir/newAd");
                await Utility.Wait();

                //درج عکسها
                _driver.FindElement(By.XPath("//input[@type='file']")).SendKeys(adv.ImagesPath);

                //درج عنوان آگهی
                _driver.FindElement(By.Name("title")).SendKeys("");
                _driver.FindElement(By.Name("title")).SendKeys(adv.Title);


                //کلیک کردن روی کتگوری اصلی
                _driver.FindElements(By.Name("category")).FirstOrDefault()?.Click();
                await Utility.Wait();

                //کلیک روی ساب کتگوری 1
                if (string.IsNullOrEmpty(adv.SubCategory1))
                {
                    adv.SubCategory1 = cls?.NiazmandyHaSetting?.Category1;
                }
                _driver.FindElements(By.TagName("option")).FirstOrDefault(q => q.Text == adv.SubCategory1)?.Click();

                await Utility.Wait(1);



                //درج قیمت

                _driver.FindElement(By.Name("cost"))?.SendKeys("");
                _driver.FindElement(By.Name("cost"))?.SendKeys(adv.Price.ToString());

                await Utility.Wait();


                //درج محتوای آگهی
                var thread = new Thread(() => Clipboard.SetText(adv.Content.Replace('(', '<').Replace(')', '>')));
                thread.SetApartmentState(ApartmentState.STA);
                thread.Start();

                var t = _driver.FindElement(By.TagName("iframe"));
                t.Click();
                await Utility.Wait(1);

                t.SendKeys(OpenQA.Selenium.Keys.Control + "v");
                var thread1 = new Thread(Clipboard.Clear);
                thread1.SetApartmentState(ApartmentState.STA);
                thread1.Start();


                //انتخاب شهر
                await Utility.Wait();

                _driver.FindElement(By.Name("state")).Click();
                await Utility.Wait();

                _driver.FindElements(By.TagName("option"))?.FirstOrDefault(q => q.Text == adv.State)?.Click();
                await Utility.Wait(1);

                _driver.FindElement(By.Name("city")).Click();
                await Utility.Wait();

                var cc = _driver.FindElements(By.TagName("option")).FirstOrDefault(q => q.Text == adv.City) ??
                         _driver.FindElements(By.TagName("option")).LastOrDefault();
                await Utility.Wait();

                cc?.Click();


                //کلیک روی دکمه ثبت آگهی
                await Utility.Wait(2);

                _driver.FindElements(By.TagName("button")).FirstOrDefault(q => q.Text == "ثبت آگهی")
                ?.Click();



                //اگر آگهی با موفقیت ثبت شود لینک مدیریت آگهی ذخیره می شود
                await Utility.Wait();

                await Utility.Wait(2);

                adv.URL = await MakeUrl(_driver.Url);

                adv.UpdateDesc = @"در صف انتشار";
                adv.AdvStatus  = @"در صف انتشار";
                adv.StatusCode = (short)StatusCode.InPublishQueue;
                adv.AdvType    = AdvertiseType.NiazmandyHa;
                adv.IP         = await Utility.GetLocalIpAddress();

                adv.SubCategory2 = "-";
                await adv.SaveAsync();

                var sim = await SimCardBusiness.GetAsync(adv.SimCardNumber);

                sim.NiazmandyHaModified = DateTime.Now;
                await sim.SaveAsync();

                //بعد از درج آگهی در دیتابیس لاگ می شود
            }
            catch (Exception ex)
            {
                // MessageBox.Show(@"در هنگام ثبت آگهی زیر خطا رخ داد\r\n" + adv.Adv + @"\r\n" + ex.Message);
                WebErrorLog.ErrorLogInstance.StartLog(ex);
                ret.AddReturnedValue(ex);
            }
            finally { monitor.Dispose(); }
        }
Example #12
0
        private static List <string> GetNextImages(string advFullPath, int imgCount = 3)
        {
            var resultImages = new List <string>();
            var monitor      = new PerfMonitor();

            try
            {
                if (string.IsNullOrEmpty(advFullPath))
                {
                    return(resultImages);
                }
                //گرفتن تمام عکسهای پوشه و فیلتر کردن عکسهای درست
                var picturesPath   = Path.Combine(advFullPath, "Pictures");
                var allImages      = Utility.GetFiles(picturesPath, "*.jpg");
                var selectedImages = new List <string>();
                //حذف عکسهای زیر پیکسل 600*600
                foreach (var imgItem in allImages)
                {
                    var img = Image.FromFile(imgItem);
                    if (img.Width < 600 || img.Height < 600)
                    {
                        try
                        {
                            img.Dispose();
                            File.Delete(imgItem);
                        }
                        catch
                        {
                            /**/
                        }
                    }
                    img.Dispose();
                }
                allImages = Utility.GetFiles(picturesPath, "*.jpg");

                if (allImages.Count <= imgCount)
                {
                    selectedImages = allImages;
                }
                else
                {
                    var indexes = new List <int>();
                    var rnd     = new Random();
                    while (indexes.Count < imgCount)
                    {
                        var index = rnd.Next(allImages.Count);
                        if (!indexes.Contains(index))
                        {
                            indexes.Add(index);
                        }
                    }

                    selectedImages.AddRange(indexes.Select(index => allImages[index]));
                }


                //ویرایش عکسها
                foreach (var img in selectedImages)
                {
                    resultImages.Add(ImageManager.ModifyImage(img));
                }

                return(resultImages);
            }
            catch (Exception ex)
            {
                WebErrorLog.ErrorLogInstance.StartLog(ex);
                // MessageBox.Show(@"GetNextImages:" + ex.Message);
                return(resultImages);
            }
            finally { monitor.Dispose(); }
        }
 public RequestPerfMonitorMessageHandler(PerfMonitor perfMonitor)
 {
     PerfMonitor = perfMonitor;
 }
Example #14
0
        public async Task StartRegisterAdv(List <long> numbers = null, int count = 0)
        {
            //if (_semaphoreSlim.CurrentCount == 0)
            //{
            //    DialogResult result;
            //    result = MessageBox.Show("برنامه در حال اجرای فرایندی دیگر می باشد و در صورت تائید فرایند قبلی متوقف خواهد شد." + "\r\nآیا فرایند قبلی متوقف شود؟", "هشدار", MessageBoxButtons.YesNo,
            //        MessageBoxIcon.Question);
            //    if (result == DialogResult.Yes)
            //        _tokenSource?.Cancel();
            //    else return;
            //}
            _tokenSource?.Cancel();
            await _semaphoreSlim.WaitAsync();

            _tokenSource = new CancellationTokenSource();

            var monitor = new PerfMonitor();
            var isLogin = false;
            await Task.Run(async() =>
            {
                try
                {
                    while (await PingHost("185.105.239.1") == false)
                    {
                        await Wait(5);
                        lstMessage.Clear();
                        lstMessage.Add("خطای اتصال به شبکه");
                        ShowBalloon("لطفا اتصال به شبکه را چک نمایید", lstMessage);
                    }

                    while (await PingHost("185.105.239.1"))
                    {
                        SimCardBusiness firstSimCardBusiness = null;
                        //اگر نامبر صفر نباشد یعنی کاربر خواسته روی شماره ای خاص آگهی بزند
                        //اگر صفر باشد روی تمام سیم کارتها داخل حلقه وایل، آگهی ثبت می شود
                        if (numbers != null && numbers.Count == 0)
                        {
                            if (!(_cls?.NiazSetting?.AdvCountInDay > 0))
                            {
                                return;
                            }

                            _driver = RefreshDriver(_driver);

                            //     MessageBox.Show(_driver.WindowHandles.Count.ToString());
                            while (!_tokenSource.IsCancellationRequested)
                            {
                                var currentIp = "";
                                while (_cls?.NiazSetting.CountAdvInIp <= await
                                       AdvertiseLogBusiness.GetAllAdvInDayFromIP(await GetLocalIpAddress(),
                                                                                 AdvertiseType.NiazKade))
                                {
                                    //ShowBalloon("پر شدن تعداد آگهی در " + await FindGateWay(),
                                    //    "سیستم در حال تعویض IP یا سایت می باشد");
                                    await SetGateway(await GetRandomGeteWay());
                                    currentIp = await GetLocalIpAddress();
                                    if (await FindGateWay() != IP_Store.IP_Mokhaberat.Value ||
                                        !(_cls?.NiazSetting.CountAdvInIp <= await
                                          AdvertiseLogBusiness.GetAllAdvInDayFromIP(await GetLocalIpAddress(),
                                                                                    AdvertiseType.NiazKade)))
                                    {
                                        continue;
                                    }
                                    if (await GoToNextSite(AdvertiseType.NiazKade, 0))
                                    {
                                        continue;
                                    }
                                    await ChangeIp();
                                    while (await GetLocalIpAddress() == null)
                                    {
                                        await Wait(10);
                                        //ShowBalloon("درحال اتصال...", "مودم مخابرات ریست شد. لطفا منتظر بمانید");
                                    }
                                    if (await GoToNextSite(AdvertiseType.NiazKade, 1))
                                    {
                                        continue;
                                    }
                                }
                                //var simCard =
                                //    await SimCardBusiness.GetNextSimCardNumberAsync((short)AdvertiseType.NiazKade, (short)_cls.NiazSetting.AdvCountInDay, await GetLocalIpAddress());
                                //if (simCard == 0) break;

                                //firstSimCardBusiness = await SimCardBusiness.GetAsync(simCard);
                                if (firstSimCardBusiness is null)
                                {
                                    break;
                                }
                                var lastUseNiaz = firstSimCardBusiness.NextUseNiazKade;

                                firstSimCardBusiness.NextUseNiazKade = DateTime.Now.AddMinutes(30);
                                await firstSimCardBusiness.SaveAsync();
                                //اگر توکن نداشت سیمکارت عوض بشه
                                //var tt = await AdvTokensBusiness.GetToken(simCard, AdvertiseType.NiazKade);
                                //var hasToken = tt?.Token ?? null;
                                //if (string.IsNullOrEmpty(hasToken)) continue;

                                var startDayOfCurrentMonthOfDateShToMiladi = Calendar.StartDayOfPersianMonth();
                                var startDayOfNextMonthOfDateShToMiladi    = Calendar.EndDayOfPersianMonth().AddDays(1);
                                //آمار آگهی های ثبت شده برای سیم کارت در ماه جاری
                                //var a1 = await AdvertiseLogBusiness.GetAllSpecialAsync(p =>
                                //    p.SimCardNumber == simCard && p.AdvType == AdvertiseType.NiazKade
                                //                               && (p.StatusCode == (short) StatusCode.Published
                                //                                   || p.StatusCode == (short) StatusCode.InPublishQueue)
                                //                               && p.DateM >= startDayOfCurrentMonthOfDateShToMiladi);
                                //var registeredAdvCountInMonth = a1.Count;
                                //if (registeredAdvCountInMonth >= _cls?.NiazSetting?.AdvCountInMonth)
                                //{
                                //    //تاریخ روز اول ماه شمسی بعد را تنظیم می کند چون تا سر ماه بعد دیگر نیازی به این سیم کارت نیست
                                //    firstSimCardBusiness.NextUseNiazKade = startDayOfNextMonthOfDateShToMiladi;
                                //    await firstSimCardBusiness.SaveAsync();
                                //    continue;
                                //}


                                ////آمار آگهی های ثبت شده امروز
                                //var currentDate = DateTime.Now.Date;
                                //var a2 = await AdvertiseLogBusiness.GetAllSpecialAsync(p =>
                                //    p.SimCardNumber == simCard && p.AdvType == AdvertiseType.NiazKade
                                //                               && (p.StatusCode == (short) StatusCode.Published
                                //                                   || p.StatusCode == (short) StatusCode.InPublishQueue
                                //                                   || p.StatusCode == (short) StatusCode.WaitForPayment)
                                //                               && p.DateM >= currentDate);
                                //var registeredAdvCountInDay = a2.Count;

                                //if (registeredAdvCountInDay >= _cls?.NiazSetting?.AdvCountInDay)
                                //{
                                //    //تاریخ فردا رو ست می کند چون تا فردا دیگه نیازی به این سیم کارت نیست
                                //    firstSimCardBusiness.NextUseNiazKade = DateTime.Today.AddDays(1);
                                //    await firstSimCardBusiness.SaveAsync();
                                //    continue;
                                //}

                                //if (await Login(simCard) == false)
                                //{
                                //    firstSimCardBusiness.NextUseNiazKade = lastUseNiaz;
                                //    await firstSimCardBusiness.SaveAsync();
                                //    continue;
                                //}

                                //اینجا به تعداد تنظیم شده در تنظیمات دیوار منهای تعداد ثبت شده قبلی، آگهی درج می کند
                                //for (var i = 0; i < _cls?.NiazSetting?.AdvCountInDay - registeredAdvCountInMonth; i++)
                                //{
                                //    var currentIp1 = "";
                                //    while (_cls?.NiazSetting.CountAdvInIp <= await
                                //               AdvertiseLogBusiness.GetAllAdvInDayFromIP(await GetLocalIpAddress(),
                                //                   AdvertiseType.NiazKade))
                                //    {
                                //        ShowBalloon("پر شدن تعداد آگهی در " + await FindGateWay(),
                                //            "سیستم در حال تعویض IP یا سایت می باشد");
                                //       await SetGateway(await GetRandomGeteWay());
                                //        currentIp1 = await GetLocalIpAddress();
                                //        var countAdvInIp1 = await
                                //            AdvertiseLogBusiness.GetAllAdvInDayFromIP(await GetLocalIpAddress(),
                                //                AdvertiseType.NiazKade);
                                //        if (!(_cls?.NiazSetting.CountAdvInIp <= countAdvInIp1)) continue;
                                //        if (await GoToNextSite(AdvertiseType.NiazKade,0)) continue;
                                //        await ChangeIp();
                                //        while (await GetLocalIpAddress() == null)
                                //        {
                                //            await Wait(10);
                                //            ShowBalloon("درحال اتصال...", "مودم مخابرات ریست شد. لطفا منتظر بمانید");
                                //        }
                                //        if (await GoToNextSite(AdvertiseType.NiazKade, 1)) continue;
                                //    }
                                //    var adv = await GetNextAdv(simCard);
                                //    if (adv == null) continue;
                                //    await RegisterAdv(adv);

                                //}
                            }
                        }
                        //اگر کاربر روی یک سیم کارت خاص می خواهد تعدادی آگهی درج کند
                        else
                        {
                            foreach (var number in numbers)
                            {
                                if (!await Login(number))
                                {
                                    continue;
                                }
                                firstSimCardBusiness = await SimCardBusiness.GetAsync(number);
                                if (firstSimCardBusiness is null)
                                {
                                    return;
                                }
                                var tt       = await AdvTokensBusiness.GetToken(number, AdvertiseType.NiazKade);
                                var hasToken = tt?.Token ?? null;
                                if (string.IsNullOrEmpty(hasToken))
                                {
                                    return;
                                }
                                firstSimCardBusiness.NextUseNiazKade = DateTime.Now.AddMinutes(30);
                                await firstSimCardBusiness.SaveAsync();
                                //اینجا به تعداد آگهی های درج شده قبلی کاری ندارد و مستیم به تعدادی که کاربر گفته آگهی درج می کند
                                for (var i = 0; i < count; i++)
                                {
                                    var currentIp = "";
                                    while (_cls?.NiazSetting.CountAdvInIp <= await
                                           AdvertiseLogBusiness.GetAllAdvInDayFromIP(await GetLocalIpAddress(),
                                                                                     AdvertiseType.NiazKade))
                                    {
                                        //ShowBalloon("پر شدن تعداد آگهی در " + await FindGateWay(),
                                        //    "سیستم در حال تعویض IP یا سایت می باشد");
                                        await SetGateway(await GetRandomGeteWay());
                                        currentIp = await GetLocalIpAddress();
                                        if (await FindGateWay() != IP_Store.IP_Mokhaberat.Value ||
                                            !(_cls?.NiazSetting.CountAdvInIp <= await
                                              AdvertiseLogBusiness.GetAllAdvInDayFromIP(await GetLocalIpAddress(),
                                                                                        AdvertiseType.NiazKade)))
                                        {
                                            continue;
                                        }
                                        await ChangeIp();
                                        while (await GetLocalIpAddress() == null)
                                        {
                                            await Wait(10);
                                            //ShowBalloon("درحال اتصال...", "مودم مخابرات ریست شد. لطفا منتظر بمانید");
                                        }
                                    }
                                    var adv = await GetNextAdv(number);
                                    if (adv == null)
                                    {
                                        continue;
                                    }
                                    await RegisterAdv(adv);
                                    //var countAdvInIp1 = await
                                    //    AdvertiseLogBusiness.GetAllAdvInDayFromIP(await GetLocalIpAddress(),
                                    //        AdvertiseType.NiazKade);
                                    //if (!(_cls?.NiazSetting.CountAdvInIp <= countAdvInIp1)) continue;
                                    //await GoToNextSite(AdvertiseType.NiazKade);
                                    //return;
                                }
                            }
                        }


                        _driver.Navigate().GoToUrl("http://www.niazkade.com/panel/myAds");

                        await Wait(5);

                        //ShowBalloon("لطفا اتصال به شبکه را چک نمایید", "خطای اتصال به شبکه");
                        continue;
                    }
                }
                catch (Exception ex)
                {
                    WebErrorLog.ErrorLogInstance.StartLog(ex);
                }
                finally
                {
                    monitor.Dispose();
                }
            });

            _semaphoreSlim.Release();
        }
Example #15
0
        public async Task <bool> Login(long simCardNumber)
        {
            var monitor = new PerfMonitor();

            try
            {
                _driver = RefreshDriver(_driver);
                var js          = (IJavaScriptExecutor)_driver;
                var simBusiness = await AdvTokensBusiness.GetToken(simCardNumber, AdvertiseType.NiazKade);

                var token = simBusiness?.Token;

                //   در صورتیکه توکن قبلا ثبت شده باشد لاگین می کند
                if (!string.IsNullOrEmpty(token))
                {
                    _driver.Navigate().GoToUrl("http://www.niazkade.com/panel/myAds");


                    js.ExecuteScript($"localStorage.setItem('user','{token}');");
                    _driver.Navigate().Refresh();

                    var linksElements = _driver.FindElements(By.ClassName("nav-link"))
                                        .FirstOrDefault(q => q.Text == "خروج");
                    if (linksElements != null)
                    {
                        _driver.ExecuteJavaScript(@"alert('لاگین انجام شد');");
                        await Wait();

                        _driver.SwitchTo().Alert().Accept();
                        return(true);
                    }
                }


                //اگر قبلا توکن نداشته و یا توکن اشتباه باشد وارد صفحه دریافت کد تائید لاگین می شود
                _driver.Manage().Timeouts().PageLoad = new TimeSpan(0, 2, 0);

                _driver.Navigate().GoToUrl("http://www.niazkade.com/panel/myAds");
                if (_driver.FindElements(By.ClassName("form-control")).Count > 0)
                {
                    _driver.FindElement(By.ClassName("form-control")).SendKeys("0" + simCardNumber + "\n");
                }

                //انتظار برای لاگین شدن
                int repeat = 0;
                //حدود 120 ثانیه فرصت لاگین دارد
                while (repeat < 20)
                {
                    //تا زمانی که لاگین اوکی نشده باشد این حلقه تکرار می شود

                    var name = await SimCardBusiness.GetOwnerNameAsync(simCardNumber);

                    var message = $@"مالک: {name} \r\nشماره: {simCardNumber}  \r\nلطفا لاگین نمائید ";
                    _driver.ExecuteJavaScript($"alert('{message}');");
                    //Wait();

                    await Wait(3);

                    try
                    {
                        _driver.SwitchTo().Alert().Accept();
                        await Wait(3);

                        repeat++;
                    }
                    catch
                    {
                        await Wait(15);
                    }
                    var linksElements = _driver.FindElements(By.ClassName("nav-link")).FirstOrDefault(q => q.Text == "خروج");
                    if (linksElements == null)
                    {
                        continue;
                    }

                    token = js.ExecuteScript("return localStorage.getItem('user')").ToString();
                    if (simBusiness != null)
                    {
                        simBusiness.Token = token;
                    }
                    else
                    {
                        simBusiness = new AdvTokensBusiness
                        {
                            Guid     = Guid.NewGuid(),
                            Token    = token,
                            Modified = DateTime.Now,
                            Number   = simCardNumber,
                            Type     = AdvertiseType.NiazKade
                        };
                    }
                    await simBusiness?.SaveAsync();

                    _driver.ExecuteJavaScript(@"alert('لاگین انجام شد');");
                    await Wait();

                    _driver.SwitchTo().Alert().Accept();
                    return(true);
                }

                var linksElements1 =
                    _driver.FindElements(By.ClassName("nav-link")).FirstOrDefault(q => q.Text == "خروج") ??
                    null;
                if (linksElements1 == null)
                {
                    var msg = $@"فرصت لاگین کردن به اتمام رسید. لطفا دقایقی بعد مجددا امتحان نمایید";
                    _driver.ExecuteJavaScript($"alert('{msg}');");
                    _driver.SwitchTo().Alert().Accept();
                    await Wait(3);
                }

                _driver.Navigate().GoToUrl("http://www.niazkade.com");
                await Wait();

                if (simBusiness == null)
                {
                    return(false);
                }
                simBusiness.Token = null;
                await simBusiness.SaveAsync();

                return(false);
            }
            catch (WebException) { return(false); }
            catch (Exception ex)
            {
                if (ex.Source != "WebDriver")
                {
                    WebErrorLog.ErrorLogInstance.StartLog(ex);
                }
                return(false);
            }

            finally { monitor.Dispose(); }
        }
Example #16
0
        private async Task <AdvertiseLogBusiness> GetNextAdv(long simCardNumber)
        {
            var newAdvertiseLogBusiness = new AdvertiseLogBusiness();
            var monitor = new PerfMonitor();

            try
            {
                newAdvertiseLogBusiness.SimCardNumber = simCardNumber;

                #region find visitor and text replacements
                //پیدا کردن ویزیتور ها و متن جایگزین محتوا برای سیم کارت مورد نظر
                var replacements = await VisitorBusiness.GetMasterSlaveAdvReplacementsAsync(newAdvertiseLogBusiness.SimCardNumber);

                if (replacements?.MasterGuid == null)
                {
                    return(null);
                }

                newAdvertiseLogBusiness.MasterVisitorGuid = (Guid)replacements.MasterGuid;
                if (replacements.SlaveGuid != null)
                {
                    newAdvertiseLogBusiness.SlaveVisitorGuid = (Guid)replacements.SlaveGuid;
                }
                #endregion

                #region find visitorAdvs
                //لیست آگهی های مرتبط با ویزیتور دریافت می شود
                AdvertiseList = await Advertise.GetAllAsync(AdvRootPath, newAdvertiseLogBusiness.MasterVisitorGuid);

                AdvertiseList = AdvertiseList.Where(q => q.PishNevis == false).ToList();

                if (!(AdvertiseList?.Count > 0))
                {
                    return(null);
                }

                #endregion

                #region findNextAdvIndex


                var nextAdvIndex = new Random().Next(AdvertiseList.Count);
                #endregion

                #region GetPath

                string path = null;
                path = Path.Combine(Path.Combine(_cls?.NiazSetting?.PicPath, AdvertiseList[nextAdvIndex].AdvName) ==
                                    AdvertiseList[nextAdvIndex].AdvName
                    ? AdvertiseList[nextAdvIndex].RootPath
                    : _cls?.NiazSetting?.PicPath, AdvertiseList[nextAdvIndex].AdvName);
                newAdvertiseLogBusiness.Adv = path;
                #endregion


                #region FindNextTitle
                //تایتل آگهی دریافت می شود
                if (!(AdvertiseList[nextAdvIndex].Titles?.Count > 0))
                {
                    return(null);
                }

                var nextTitleIndex = new Random(DateTime.Now.Millisecond).Next(AdvertiseList[nextAdvIndex].Titles.Count);
                newAdvertiseLogBusiness.Title = AdvertiseList[nextAdvIndex].Titles[nextTitleIndex];


                if (string.IsNullOrEmpty(newAdvertiseLogBusiness.Content))
                {
                    return(null);
                }
                #endregion

                #region GetContent
                //کانتنت آگهی دریافت می شود

                newAdvertiseLogBusiness.Content = AdvertiseList[nextAdvIndex].Content
                                                  .Replace("<master>", replacements.AdvReplacement1)
                                                  .Replace("<slave>", replacements.AdvReplacement2)
                                                  .Replace("<tell>", replacements.Phone)
                                                  .Replace("(", "<")
                                                  .Replace(")", ">");

                if (string.IsNullOrEmpty(newAdvertiseLogBusiness.Content))
                {
                    return(null);
                }

                #endregion

                #region FindImages
                //عکسهای آگهی دریافت می شود
                newAdvertiseLogBusiness.ImagesPathList = GetNextImages(newAdvertiseLogBusiness.Adv,
                                                                       _cls?.NiazSetting?.PicCountInPerAdv ?? 3);
                #endregion

                //قیمت آگهی دریافت می شود
                newAdvertiseLogBusiness.Price = AdvertiseList[nextAdvIndex].Price;

                #region GetCity

                var city = await CityBusiness.GetNextRandomCityAsync(newAdvertiseLogBusiness.MasterVisitorGuid,
                                                                     AdvertiseType.NiazKade);

                newAdvertiseLogBusiness.City  = city?.CityName ?? "مشهد";
                newAdvertiseLogBusiness.State = city?.State.StateName ?? "خراسان رضوی";
                #endregion

                #region GetCategory
                if (AdvertiseList[nextAdvIndex].NiazKadeCategories != null &&
                    AdvertiseList[nextAdvIndex].NiazKadeCategories.Count > 0)
                {
                    newAdvertiseLogBusiness.SubCategory1 = AdvertiseList[nextAdvIndex]?.NiazKadeCategories[0] ?? "";
                    newAdvertiseLogBusiness.SubCategory2 = AdvertiseList[nextAdvIndex]?.NiazKadeCategories[1] ?? "";
                }
                else
                {
                    newAdvertiseLogBusiness.SubCategory1 = null;
                    newAdvertiseLogBusiness.SubCategory2 = null;
                }
                #endregion

                return(newAdvertiseLogBusiness);
            }
            catch (Exception ex)
            {
                WebErrorLog.ErrorLogInstance.StartLog(ex);
                return(null);
            }

            finally { monitor.Dispose(); }
        }
Example #17
0
        private async Task RegisterAdv(AdvertiseLogBusiness adv)
        {
            var ret     = new ReturnedSaveFuncInfo();
            var monitor = new PerfMonitor();

            try
            {
                adv.AdvType = AdvertiseType.NiazKade;
                _driver     = RefreshDriver(_driver);
                _driver.Navigate().GoToUrl("http://www.niazkade.com/new");
                await Wait(4);



                //کلیک روی ساب کتگوری 1
                if (string.IsNullOrEmpty(adv.SubCategory1))
                {
                    adv.SubCategory1 = _cls?.NiazSetting?.Category1;
                }
                _driver.FindElements(By.ClassName("category-list")).FirstOrDefault(q => q.Text == adv.SubCategory1)?.Click();

                await Wait(2);



                //کلیک روی ساب کتگوری2
                if (string.IsNullOrEmpty(adv.SubCategory2))
                {
                    adv.SubCategory2 = _cls?.NiazSetting?.Category2;
                }
                _driver.FindElements(By.ClassName("category-list")).FirstOrDefault(q => q.Text == adv.SubCategory2)?.Click();
                await Wait();


                //درج عکسها

                _driver.FindElement(By.XPath("//input[@type='file']")).SendKeys(adv.ImagesPath);



                //درج عنوان آگهی
                _driver.FindElement(By.Id("title")).SendKeys("");
                _driver.FindElement(By.Id("title")).SendKeys(adv.Title);
                await Wait();


                //انتخاب شهر
                _driver.FindElements(By.ClassName("vs__search")).FirstOrDefault()?.SendKeys(adv.State + "\n");
                await Wait(2);

                _driver.FindElements(By.ClassName("vs__search")).LastOrDefault()?.SendKeys(adv.City + "\n");
                //await Wait();



                //درج محتوای آگهی
                _driver.FindElement(By.Id("description"))
                .SendKeys("");
                _driver.FindElement(By.Id("description"))
                .SendKeys(adv.Content.Replace('(', '<').Replace(')', '>'));
                //await Wait();



                //درج قیمت
                _driver.FindElement(By.Id("price"))?.SendKeys("");
                _driver.FindElement(By.Id("price"))?.SendKeys(adv.Price.ToString());

                await Wait();

                _driver.FindElement(By.Id("phone_number"))?.SendKeys("");
                _driver.FindElement(By.Id("phone_number"))?.SendKeys("0" + adv.SimCardNumber.ToString());

                await Wait(2);

                //کلیک روی دکمه ثبت آگهی


                _driver.FindElements(By.TagName("button")).FirstOrDefault(q => q.Text == "ثبت اگهی")
                ?.Click();

                //اگر آگهی با موفقیت ثبت شود لینک مدیریت آگهی ذخیره می شود
                await Wait(2);


                adv.URL        = _driver.Url;
                adv.UpdateDesc = @"در صف انتشار";
                adv.AdvStatus  = @"در صف انتشار";
                adv.StatusCode = (short)StatusCode.InPublishQueue;
                adv.AdvType    = AdvertiseType.NiazKade;
                adv.IP         = await GetLocalIpAddress();

                await adv.SaveAsync();

                var sim = await SimCardBusiness.GetAsync(adv.SimCardNumber);

                sim.DivarModified = DateTime.Now;
                await sim.SaveAsync();

                //بعد از درج آگهی در دیتابیس لاگ می شود
            }
            catch (Exception ex)
            {
                // MessageBox.Show(@"در هنگام ثبت آگهی زیر خطا رخ داد\r\n" + adv.Adv + @"\r\n" + ex.Message);
                WebErrorLog.ErrorLogInstance.StartLog(ex);
                ret.AddReturnedValue(ex);
            }
            finally { monitor.Dispose(); }
        }
        public async Task <bool> Login(List <long> simCardNumber)
        {
            var monitor = new PerfMonitor();

            try
            {
                foreach (var item in simCardNumber)
                {
                    Utility.CloseAllChromeWindows();
                    await GetInstance();

                    _driver = Utility.RefreshDriver(_driver);
                    var simBusiness = await AdvTokensBusiness.GetToken(item, AdvertiseType.NiazmandyHa);

                    var simcard = await SimCardBusiness.GetAsync(item);

                    var token = simBusiness?.Token;
                    _driver.Navigate().GoToUrl("https://niazmandyha.ir/panel/ads");
                    //   در صورتیکه توکن قبلا ثبت شده باشد لاگین می کند
                    if (!string.IsNullOrEmpty(token))
                    {
                        var cooc = _driver.Manage().Cookies.AllCookies;
                        if (cooc.Count == 3)
                        {
                            _driver.Manage().Cookies.DeleteCookieNamed(CookieStore.NiazmandyHaCookieName.Value);
                        }

                        _driver.Navigate().Refresh();
                        var a = new OpenQA.Selenium.Cookie(CookieStore.NiazmandyHaCookieName.Value, token);
                        _driver.Manage().Cookies.AddCookie(a);
                        _driver.Navigate().Refresh();

                        _driver.Navigate().GoToUrl("https://niazmandyha.ir/panel/ads");

                        var linksElements = _driver.FindElements(By.ClassName("black"))
                                            .FirstOrDefault(q => q.Text == "خروج");
                        if (linksElements != null)
                        {
                            _driver.ExecuteJavaScript(@"alert('لاگین انجام شد');");
                            await Utility.Wait();

                            _driver.SwitchTo().Alert().Accept();
                            continue;
                        }

                        _driver.FindElement(By.Id("username")).SendKeys(simcard.UserName);
                        _driver.FindElement(By.Id("password")).SendKeys("0" + item + '\n');
                        var linksElement = _driver.FindElements(By.ClassName("black"))
                                           .FirstOrDefault(q => q.Text == "خروج");
                        if (linksElement != null)
                        {
                            token             = _driver.Manage().Cookies.AllCookies.LastOrDefault()?.Value ?? null;
                            simBusiness.Token = token;
                            await simBusiness?.SaveAsync();

                            _driver.ExecuteJavaScript(@"alert('لاگین انجام شد');");
                            await Utility.Wait();

                            _driver.SwitchTo().Alert().Accept();
                            continue;
                        }
                    }


                    //اگر قبلا توکن نداشته و یا توکن اشتباه باشد وارد صفحه ثبت نام می شود
                    _driver.Manage().Timeouts().PageLoad = new TimeSpan(0, 2, 0);

                    _driver.FindElements(By.TagName("span"))
                    .FirstOrDefault(q => q.Text == "عضویت در نیازمندی ها")?.Click();
                    _driver.FindElement(By.Id("name")).SendKeys(simcard.OwnerName);
                    _driver.FindElement(By.Id("tel")).SendKeys("0" + item);
                    _driver.FindElement(By.Id("email")).SendKeys(simcard.UserName + "@Yahoo.com");
                    _driver.FindElement(By.Id("username")).SendKeys(simcard.UserName);
                    _driver.FindElement(By.Id("password")).SendKeys("0" + item);
                    _driver.FindElements(By.TagName("button")).FirstOrDefault(q => q.Text == "ثبت نام")?.Click();
                    await Utility.Wait();

                    var counter = 0;
                    while (_driver.Url == "https://niazmandyha.ir/login" || _driver.Url == "https://niazmandyha.ir/register")
                    {
                        //تا زمانی که لاگین اوکی نشده باشد این حلقه تکرار می شود
                        counter++;
                        if (counter >= 60)
                        {
                            break;
                        }
                        var name = await SimCardBusiness.GetOwnerNameAsync(item);

                        var message = $@"مالک: {name} \r\nشماره: {item}  \r\nلطفا لاگین نمائید ";
                        _driver.ExecuteJavaScript($"alert('{message}');");

                        await Utility.Wait(3);

                        try
                        {
                            _driver.SwitchTo().Alert().Accept();
                            await Utility.Wait(3);
                        }
                        catch
                        {
                            await Utility.Wait(15);
                        }


                        var linksElements = _driver.FindElements(By.ClassName("black"))
                                            .FirstOrDefault(q => q.Text == "خروج");
                        if (linksElements == null)
                        {
                            continue;
                        }

                        token = _driver.Manage().Cookies.AllCookies.LastOrDefault()?.Value ?? null;
                        if (string.IsNullOrEmpty(token))
                        {
                            continue;
                        }
                        if (simBusiness != null)
                        {
                            simBusiness.Token = token;
                        }
                        else
                        {
                            simBusiness = new AdvTokensBusiness
                            {
                                Guid     = Guid.NewGuid(),
                                Token    = token,
                                Modified = DateTime.Now,
                                Number   = item,
                                Type     = AdvertiseType.NiazmandyHa
                            };
                        }

                        await simBusiness?.SaveAsync();

                        _driver.ExecuteJavaScript(@"alert('لاگین انجام شد');");
                        await Utility.Wait();

                        _driver.SwitchTo().Alert().Accept();
                        Utility.CloseAllChromeWindows();
                        continue;
                    }


                    if (_driver.Url != "https://niazmandyha.ir/panel")
                    {
                        return(false);
                    }
                    token = _driver.Manage().Cookies.AllCookies.LastOrDefault()?.Value ?? null;
                    if (simBusiness != null)
                    {
                        simBusiness.Token = token;
                    }
                    else
                    {
                        simBusiness = new AdvTokensBusiness
                        {
                            Guid     = Guid.NewGuid(),
                            Token    = token,
                            Modified = DateTime.Now,
                            Number   = item,
                            Type     = AdvertiseType.NiazmandyHa
                        };
                    }
                    await simBusiness?.SaveAsync();

                    _driver.ExecuteJavaScript(@"alert('لاگین انجام شد');");
                    await Utility.Wait();

                    _driver.SwitchTo().Alert().Accept();
                    if (counter < 60)
                    {
                        return(true);
                    }

                    var linksElements1 = _driver?.FindElements(By.ClassName("black"))
                                         .FirstOrDefault(q => q.Text == "خروج") ??
                                         null;
                    if (linksElements1 == null)
                    {
                        var msg = $@"فرصت لاگین کردن به اتمام رسید. لطفا دقایقی بعد مجددا امتحان نمایید";
                        _driver.ExecuteJavaScript($"alert('{msg}');");
                        _driver.SwitchTo().Alert().Accept();
                        await Utility.Wait(3);
                    }

                    _driver.Navigate().GoToUrl("https://niazmandyha.ir");
                    await Utility.Wait();

                    simBusiness.Token = null;
                    await simBusiness.SaveAsync();
                }


                return(false);
            }
            catch (WebException) { return(false); }
            catch (Exception ex)
            {
                if (ex.Source != "WebDriver")
                {
                    WebErrorLog.ErrorLogInstance.StartLog(ex);
                }
                return(false);
            }

            finally { monitor.Dispose(); }
        }
 public ResponseLengthCalculatingStream(Stream responseStream, PerfMonitor perfMonitor)
 {
     this.responseStream = responseStream;
     PerfMonitor         = perfMonitor;
 }
        public async Task StartRegisterAdv(List <long> numbers = null, int count = 0)
        {
            //if (SemaphoreSlim.CurrentCount == 0)
            //{
            //    DialogResult result;
            //    result = MessageBox.Show("برنامه در حال اجرای فرایندی دیگر می باشد و در صورت تائید فرایند قبلی متوقف خواهد شد." + "\r\nآیا فرایند قبلی متوقف شود؟", "هشدار", MessageBoxButtons.YesNo,
            //        MessageBoxIcon.Question);
            //    if (result == DialogResult.Yes)
            //        _tokenSource?.Cancel();
            //    else return;
            //}
            _tokenSource?.Cancel();
            //await SemaphoreSlim.WaitAsync();
            _tokenSource = new CancellationTokenSource();
            var counter = 0;
            var monitor = new PerfMonitor();
            var isLogin = false;

            try
            {
                while (await Utility.PingHost("185.105.239.1") == false)
                {
                    if (counter == 30)
                    {
                        await Utility.SetGateway(await Utility.GetRandomGeteWay());
                    }
                    await Utility.Wait(10);

                    lstMessage.Clear();
                    lstMessage.Add("خطای اتصال به شبکه");
                    Utility.ShowBalloon("لطفا اتصال به شبکه را چک نمایید", lstMessage);
                    counter++;
                }


                foreach (var t in numbers)
                {
                    //while (await Utility.PingHost("185.105.239.1"))
                    //{
                    var lstNum = new List <long> {
                        t
                    };
                    var tt = await AdvTokensBusiness.GetToken(t, AdvertiseType.NiazmandyHa);

                    var hasToken = tt?.Token ?? null;
                    if (string.IsNullOrEmpty(hasToken))
                    {
                        return;
                    }
                    if (!await Login(lstNum))
                    {
                        continue;
                    }
                    //اینجا به تعداد آگهی های درج شده قبلی کاری ندارد و مستیم به تعدادی که کاربر گفته آگهی درج می کند
                    for (var i = 0; i < count; i++)
                    {
                        //while (cls?.NiazmandyHaSetting.CountAdvInIp <= await
                        //           AdvertiseLogBusiness.GetAllAdvInDayFromIP(
                        //               await Utility.GetLocalIpAddress(),
                        //               AdvertiseType.NiazmandyHa))
                        //{
                        //    Utility.ShowBalloon("پر شدن تعداد آگهی در " + await Utility.FindGateWay(),
                        //        "سیستم در حال تعویض IP یا سایت می باشد");
                        //    await Utility.SetGateway(await Utility.GetRandomGeteWay());
                        //    var currentIp1 = await Utility.GetLocalIpAddress();
                        //    if (await Utility.FindGateWay() != IP_Store.IP_Mokhaberat.Value ||
                        //        !(cls?.NiazmandyHaSetting.CountAdvInIp <= await
                        //              AdvertiseLogBusiness.GetAllAdvInDayFromIP(
                        //                  await Utility.GetLocalIpAddress(),
                        //                  AdvertiseType.NiazmandyHa))) continue;
                        //    await Utility.ChangeIp();

                        //    while (await Utility.GetLocalIpAddress() == null)
                        //    {
                        //        if (counter == 30)
                        //            await Utility.SetGateway(await Utility.GetRandomGeteWay());
                        //        await Utility.Wait(10);
                        //        Utility.ShowBalloon("درحال اتصال...", "مودم مخابرات ریست شد. لطفا منتظر بمانید");
                        //        counter++;
                        //    }
                        //}

                        var adv = await GetNextAdv(t);

                        if (adv == null)
                        {
                            continue;
                        }
                        await RegisterAdv(adv);

                        var title = await Utility.FindGateWay();

                        var co = await AdvertiseLogBusiness.GetAllAdvInDayFromIP(await Utility.GetLocalIpAddress(),
                                                                                 AdvertiseType.NiazmandyHa);

                        lstMessage.Clear();
                        lstMessage.Add($"نوع آگهی: نیازمندیها");
                        lstMessage.Add($"IP اینترنتی: {await Utility.GetLocalIpAddress()}");
                        lstMessage.Add($"GateWay: {await Utility.FindGateWay()}");
                        lstMessage.Add($"تعداد آگهی ارسال شده: {co}");

                        Utility.ShowBalloon(title, lstMessage);
                    }

                    lstNum.Clear();
                    //}
                }
            }
            catch (Exception ex)
            {
                WebErrorLog.ErrorLogInstance.StartLog(ex);
            }
            finally
            {
                monitor.Dispose();
            }

            SemaphoreSlim.Release();
        }