//public static async Task<ReturnedSaveFuncInfo> SendChat(long number) //{ // var res = new ReturnedSaveFuncInfo(); // try // { // res.AddReturnedValue(await CheckToken(number, AdvertiseType.DivarChat)); // if (res.HasError) return res; // var sim = await SimCardBusiness.GetAsync(number); // var owner = await OwnerBusiness.GetAsync(sim.OwnerGuid); // res.AddReturnedValue(await SendChat_(number, owner.VisitorGuid)); // if (res.HasError) return res; // CloseAllChromeWindows(); // } // catch (Exception ex) // { // WebErrorLog.ErrorLogInstance.StartLog(ex); // res.AddReturnedValue(ex); // } // return res; //} public static async Task <ReturnedSaveFuncInfoWithValue <string> > CheckToken(long number, AdvertiseType type) { var res = new ReturnedSaveFuncInfoWithValue <string>(); try { var tk = await AdvTokenBussines.GetTokenAsync(number, type); if (tk == null) { res.AddReturnedValue(ReturnedState.Error, "Token is Null"); return(res); } if (string.IsNullOrEmpty(tk.Token)) { res.AddReturnedValue(ReturnedState.Error, "Token is Empty"); return(res); } res.value = tk.Token; } catch (Exception ex) { WebErrorLog.ErrorInstence.StartErrorLog(ex); res.AddReturnedValue(ex); } return(res); }
public async Task <AdvTokenBussines> GetTokenAsync(string _connectionString, long number, AdvertiseType type) { AdvTokenBussines res = null; try { using (var cn = new SqlConnection(_connectionString)) { var cmd = new SqlCommand("sp_AdvToken_GetToken", cn) { CommandType = CommandType.StoredProcedure }; cmd.Parameters.AddWithValue("@number", number); cmd.Parameters.AddWithValue("@type", (short)type); await cn.OpenAsync(); var dr = await cmd.ExecuteReaderAsync(); if (dr.Read()) { res = LoadData(dr); } dr.Close(); cn.Close(); } } catch (Exception ex) { WebErrorLog.ErrorInstence.StartErrorLog(ex); } return(res); }
public async Task <ReturnedSaveFuncInfo> SaveAsync(AdvTokenBussines item, SqlTransaction tr) { var res = new ReturnedSaveFuncInfo(); try { var cmd = new SqlCommand("sp_AdvToken_Save", tr.Connection, tr) { CommandType = CommandType.StoredProcedure }; cmd.Parameters.AddWithValue("@guid", item.Guid); cmd.Parameters.AddWithValue("@number", item.Number); cmd.Parameters.AddWithValue("@type", (short)item.Type); cmd.Parameters.AddWithValue("@token", item.Type); await cmd.ExecuteNonQueryAsync(); } catch (Exception ex) { WebErrorLog.ErrorInstence.StartErrorLog(ex); res.AddReturnedValue(ex); } return(res); }
private AdvTokenBussines LoadData(SqlDataReader dr) { var item = new AdvTokenBussines(); try { item.Guid = (Guid)dr["Guid"]; item.Token = dr["Token"].ToString(); item.Number = (long)dr["Number"]; item.Type = (AdvertiseType)dr["Type"]; } catch (Exception ex) { WebErrorLog.ErrorInstence.StartErrorLog(ex); } return(item); }
public async Task <bool> Login(long simCardNumber, bool isFromSimcard) { try { var sim_ = await SimcardBussines.GetAsync(simCardNumber); if (isFromSimcard) { _driver = Utility.RefreshDriver(clsAdvertise.IsSilent); var simBusiness = await Utility.CheckToken(simCardNumber, AdvertiseType.Sheypoor); // در صورتیکه توکن قبلا ثبت شده باشد لاگین می کند if (!simBusiness.HasError) { // token = _driver.Manage().Cookies.GetCookieNamed("ts").ToString().Substring(3, 32); _driver.Navigate().GoToUrl("https://www.sheypoor.com"); _driver.Manage().Cookies.DeleteCookieNamed("ts"); var newToken = new OpenQA.Selenium.Cookie("ts", simBusiness.value); _driver.Manage().Cookies.AddCookie(newToken); _driver.Navigate().GoToUrl("https://www.sheypoor.com/session/myListings"); var linksElements = _driver.FindElements(By.TagName("a")).ToList(); foreach (var link in linksElements) { if (link?.GetAttribute("href") == null || !link.GetAttribute("href").Contains("logout")) { continue; } _driver.ExecuteJavaScript(@"alert('لاگین انجام شد');"); await Utility.Wait(); _driver.SwitchTo().Alert().Accept(); return(true); } } //اگر قبلا توکن نداشته و یا توکن اشتباه باشد وارد صفحه دریافت کد تائید لاگین می شود _driver.Manage().Timeouts().PageLoad = new TimeSpan(0, 2, 0); _driver.Navigate().GoToUrl("https://www.sheypoor.com/session/myListings"); //var all = _driver.Manage().Cookies.AllCookies; if (_driver.FindElements(By.Id("username")).Count > 0) { _driver.FindElement(By.Id("username")).SendKeys(simCardNumber + "\n"); } //انتظار برای لاگین شدن int repeat = 0; //حدود 120 ثانیه فرصت لاگین دارد while (repeat < 20) { //تا زمانی که لاگین اوکی نشده باشد این حلقه تکرار می شود var badGateWay = _driver.FindElements(By.TagName("h1")) .Any(q => q.Text == "502 Bad Gateway" || q.Text == "Error 503 Service Unavailable"); if (badGateWay) { return(false); } var message = $@"مالک: {sim_.Owner} \r\nشماره: {simCardNumber} \r\nلطفا لاگین نمائید "; _driver.ExecuteJavaScript($"alert('{message}');"); //Wait(); await Utility.Wait(5); try { _driver.SwitchTo().Alert().Accept(); await Utility.Wait(10); repeat++; } catch { await Utility.Wait(15); } var linksElements = _driver?.FindElements(By.TagName("a")).ToList() ?? null; AdvTokenBussines advToken = null; foreach (var link in linksElements) { if (link?.GetAttribute("href") == null || !link.GetAttribute("href").Contains("logout")) { continue; } advToken = await AdvTokenBussines.GetTokenAsync(simCardNumber, AdvertiseType.Sheypoor); var token = _driver.Manage().Cookies.GetCookieNamed("ts").ToString().Substring(3, 32); if (advToken != null) { advToken.Token = token; } else { advToken = new AdvTokenBussines() { Type = AdvertiseType.Sheypoor, Token = token, Number = simCardNumber, Guid = Guid.NewGuid(), } }; await advToken.SaveAsync(); _driver.ExecuteJavaScript(@"alert('لاگین انجام شد');"); await Utility.Wait(); _driver.SwitchTo().Alert().Accept(); return(true); } } var linksElements1 = _driver?.FindElements(By.TagName("a")).FirstOrDefault(q => q.Text == "خروج") ?? null; if (linksElements1 == null) { var msg = $@"فرصت لاگین کردن به اتمام رسید. لطفا دقایقی بعد مجددا امتحان نمایید"; _driver.ExecuteJavaScript($"alert('{msg}');"); _driver.SwitchTo().Alert().Accept(); await Utility.Wait(3); } await Utility.Wait(); } else { _driver = Utility.RefreshDriver(clsAdvertise.IsSilent); var simBusiness = await Utility.CheckToken(simCardNumber, AdvertiseType.Sheypoor); // در صورتیکه توکن قبلا ثبت شده باشد لاگین می کند if (!simBusiness.HasError) { // token = _driver.Manage().Cookies.GetCookieNamed("ts").ToString().Substring(3, 32); _driver.Navigate().GoToUrl("https://www.sheypoor.com"); _driver.Manage().Cookies.DeleteCookieNamed("ts"); var newToken = new OpenQA.Selenium.Cookie("ts", simBusiness.value); _driver.Manage().Cookies.AddCookie(newToken); _driver.Navigate().GoToUrl("https://www.sheypoor.com/session/myListings"); var linksElements = _driver.FindElements(By.TagName("a")).ToList(); foreach (var link in linksElements) { if (link?.GetAttribute("href") == null || !link.GetAttribute("href").Contains("logout")) { continue; } _driver.ExecuteJavaScript(@"alert('لاگین انجام شد');"); await Utility.Wait(); _driver.SwitchTo().Alert().Accept(); return(true); } } _driver.Navigate().GoToUrl("https://www.sheypoor.com/session/myListings"); //انتظار برای لاگین شدن int repeat = 0; //حدود 120 ثانیه فرصت لاگین دارد while (repeat < 5) { //تا زمانی که لاگین اوکی نشده باشد این حلقه تکرار می شود var badGateWay = _driver.FindElements(By.TagName("h1")) .Any(q => q.Text == "502 Bad Gateway" || q.Text == "Error 503 Service Unavailable"); if (!badGateWay) { return(false); } var message = $@"مالک: {sim_.Owner} \r\nشماره: {simCardNumber} \r\nلطفا لاگین نمائید "; _driver.ExecuteJavaScript($"alert('{message}');"); //Wait(); await Utility.Wait(2); try { _driver.SwitchTo().Alert().Accept(); await Utility.Wait(1); repeat++; } catch { await Utility.Wait(15); } var linksElements = _driver?.FindElements(By.TagName("a")).ToList() ?? null; AdvTokenBussines advToken = null; foreach (var link in linksElements) { if (link?.GetAttribute("href") == null || !link.GetAttribute("href").Contains("logout")) { continue; } var token = _driver.Manage().Cookies.GetCookieNamed("ts").ToString().Substring(3, 32); advToken = await AdvTokenBussines.GetTokenAsync(simCardNumber, AdvertiseType.Sheypoor); if (advToken != null) { advToken.Token = token; } else { advToken = new AdvTokenBussines() { Type = AdvertiseType.Sheypoor, Token = token, Number = simCardNumber, Guid = Guid.NewGuid(), } }; } await advToken?.SaveAsync(); _driver.ExecuteJavaScript(@"alert('لاگین انجام شد');"); await Utility.Wait(); _driver.SwitchTo().Alert().Accept(); return(true); } } await Utility.Wait(); TelegramSender.GetChatLog_bot().Send( $"#نداشتن_توکن \r\n سیستم مرجع: {await Utilities.GetNetworkIpAddress()} \r\n شماره {simCardNumber} به مالکیت {sim_.Owner} توکن ارسال آگهی شیپور داشته، اما منقضی شده و موفق به لاگین نشد " + $"\r\n به همین سبب توکن شیپور این شماره از دیتابیس حذف خواهد شد " + $"\r\n لطفا نسبت به دریافت مجدد توکن اقدام گردد."); var advTokens = await AdvTokenBussines.GetTokenAsync(simCardNumber, AdvertiseType.Sheypoor); await advTokens?.RemoveAsync(); return(false); } catch (WebException) { return(false); } catch (Exception ex) { if (ex.Source != "WebDriver") { WebErrorLog.ErrorInstence.StartErrorLog(ex); } return(false); } }