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!"); }
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); }
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 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(); } }
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); }
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 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(); } }
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(); }
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(); } }
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(); } }
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(); } }
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(); }