public async Task <IActionResult> SendEmail([FromBody] ContactRequest request)
        {
            var result = false;

            try
            {
                _log.LogEntrance(nameof(SendEmail), request.ToString());


                var checkGoogle = await GoogleHelper.CallGoogleSiteVerifyAsync(request.CaptchaRequest);

                if (checkGoogle.IsSuccessStatusCode)
                {
                    var responseStr = await checkGoogle.Content.ReadAsStringAsync();

                    _log.LogInformation($"response from google : {responseStr}");

                    var googleResponse = JsonConvert.DeserializeObject <GoogleVerificationResponse>(responseStr,
                                                                                                    new JsonSerializerSettings()
                    {
                        Error = (s, e) => { e.ErrorContext.Handled = true; }
                    });

                    if (googleResponse.Success)
                    {
                        var sender = (IMailSender) new SmtpSender();
                        sender.Authenticate(_runtimeConfig.SmtpServer, _runtimeConfig.SmtpUserName, _runtimeConfig.SmtpPassword);
                        sender.SendPlain(_runtimeConfig.SmtpUserName,
                                         _runtimeConfig.ContactUsEmails,
                                         request.Subject,
                                         $"From : {request.EMail}\nRequest : {request.Body}"
                                         );

                        _log.LogInformation($"message sent successfull : {request.ToString()}");
                        result = true;
                    }
                    else
                    {
                        var errors = googleResponse.ErrorCodes == null || googleResponse.ErrorCodes.Count < 1 ?
                                     "error from google is unclear" : string.Join(",", googleResponse.ErrorCodes);

                        return(NotFound(errors));
                    }
                }
                else
                {
                    return(NotFound("Error in communication with google."));
                }

                return(Ok(result));
            }
            catch (Exception ex)
            {
                return(NotFound($"my exception : [{ex.Message}]  [{ex.StackTrace}]"));
            }
            finally
            {
                _log.LogExit(nameof(SendEmail), result.ToString());
            }
        }
Exemple #2
0
        /// <summary>
        /// 获取用户信息
        /// </summary>
        /// <param name="accessCode">访问代码</param>
        /// <returns></returns>
        public override async Task <ExternalLoginUserInfo> GetUserInfo(string accessCode)
        {
            using (var client = new HttpClient())
            {
                client.DefaultRequestHeaders.UserAgent.ParseAdd("Microsoft ASP.NET Core OAuth middleware");
                client.DefaultRequestHeaders.Accept.ParseAdd("application/json");
                client.Timeout = TimeSpan.FromSeconds(30);
                client.MaxResponseContentBufferSize = 1024 * 1024 * 10; // 10 MB

                var request = new HttpRequestMessage(HttpMethod.Get, GoogleDefaults.UserInformationEndpoint);
                request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", accessCode);

                var response = await client.SendAsync(request);

                response.EnsureSuccessStatusCode();

                var payload = JObject.Parse(await response.Content.ReadAsStringAsync());

                return(new ExternalLoginUserInfo
                {
                    Name = GoogleHelper.GetName(payload),
                    EmailAddress = GoogleHelper.GetEmail(payload),
                    Surname = GoogleHelper.GetFamilyName(payload),
                    LoginInfo = new UserLoginInfo(Name, GoogleHelper.GetId(payload))
                });
            }
        }
Exemple #3
0
        /// <summary>
        /// Verifies the users short code.
        /// </summary>
        /// <param name="manager">The manager.</param>
        /// <param name="codeType">Type of the code.</param>
        /// <param name="userid">The userid.</param>
        /// <param name="code">The code.</param>
        public async Task <bool> VerifyUserTwoFactorCodeAsync(TwoFactorComponentType component, string userid, string data)
        {
            var user = await FindByIdAsync(userid);

            if (user == null)
            {
                return(false);
            }

            var twofactorMethod = user.TwoFactor.FirstOrDefault(x => x.Component == component);

            if (twofactorMethod == null || twofactorMethod.Type == TwoFactorType.None)
            {
                return(true);
            }

            if (twofactorMethod.Type == TwoFactorType.PinCode)
            {
                return(twofactorMethod.Data == data);
            }

            if (twofactorMethod.Type == TwoFactorType.EmailCode)
            {
                return(await VerifyTwoFactorTokenAsync(userid, twofactorMethod.Type.ToString(), data));
            }

            if (twofactorMethod.Type == TwoFactorType.GoogleCode)
            {
                return(GoogleHelper.VerifyGoogleTwoFactorCode(twofactorMethod.Data, data));
            }

            return(false);
        }
Exemple #4
0
        public async Task <OperationResult <FileDTO> > Download(FileGet file)
        {
            var result = new OperationResult <FileDTO>();

            using (var googleService = await GoogleHelper.AuthGoogle(_configuration))
            {
                var reportResponse = await _clientDownload.GetResponse <OperationResult <FileReportDownloadResponse> >(new FileReportDownloadRequest
                {
                    FileId = file.Id
                });

                result.Type   = reportResponse.Message.Type;
                result.Errors = reportResponse.Message.Errors;

                var googleId   = reportResponse.Message.Data.GoogleId;
                var getRequest = googleService.Files.Get(googleId);

                if (reportResponse.Message.IsSuccess)
                {
                    var filestream = new MemoryStream();
                    await getRequest.DownloadAsync(filestream);

                    filestream.Seek(0, SeekOrigin.Begin);

                    result.Data = new FileDTO
                    {
                        FileStream = filestream,
                        Mime       = reportResponse.Message.Data.Mime,
                        Name       = reportResponse.Message.Data.Name
                    };
                }
            }

            return(result);
        }
 public IActionResult GetYoutubeAccount(string code, long groupId, long userId)
 {
     try
     {
         var lstYoutubeProfiles = new List <YoutubeProfiles>();
         var dbr = new DatabaseRepository(_logger, _appEnv);
         lstYoutubeProfiles = GoogleHelper.GetYoutubeAccount(code, _appSettings, dbr);
         var lstGrpProfiles = GroupProfilesRepository.GetAllGroupProfiles(groupId, _redisCache, dbr);
         lstGrpProfiles = lstGrpProfiles.Where(t => t.profileType == SocialProfileType.YouTube).ToList();
         var lstStr = lstGrpProfiles.Select(t => t.profileId).ToArray();
         if (lstStr.Length > 0)
         {
             lstYoutubeProfiles.Where(t => lstStr.Contains(t.YtChannelId)).Select(s =>
             {
                 s.connected = 1;
                 return(s);
             }).ToList();
         }
         return(Ok(lstYoutubeProfiles));
     }
     catch (Exception ex)
     {
         _logger.LogError("GetGetYoutubeAccount" + ex.StackTrace);
         _logger.LogError("GetGetYoutubeAccount" + ex.Message);
         return(Ok(new List <YoutubeProfiles>()));
     }
 }
Exemple #6
0
 public ActionResult VerifyGoogleCode(string key, string code)
 {
     if (GoogleHelper.VerifyGoogleTwoFactorCode(key, code))
     {
         return(JsonSuccess());
     }
     return(JsonError());
 }
Exemple #7
0
            public void GetDistances()
            {
                if (tblResults != null && tblResults.Rows.Count > 0)
                {
                    //Add a new column to the table specific to Google so we don't step on any of the original data
                    DataColumn googleColumn = new DataColumn("GoogleDistance");
                    tblResults.Columns.Add(googleColumn);

                    //Setup the string we'll use as the origin Lat/Lng for Google
                    String originString = String.Format("{0},{1}", lat, lng);

                    //Setup a list of Lat/Lng destinations to loop through based off of the data from the databse
                    List <String> destinations = new List <String>();
                    for (Int32 i = 0; i < tblResults.Rows.Count; i++)
                    {
                        destinations.Add(String.Format("{0},{1}",
                                                       tblResults.Rows[i]["Latitude"].ToString(),
                                                       tblResults.Rows[i]["Longitude"].ToString()));
                    }

                    //Call the GoogleHelper with what we've put together and store the results in a String array
                    String[] distances = GoogleHelper.GetDistances(originString, destinations.ToArray());

                    //Loop through the rows in the data table again and update with what we received from Google
                    for (Int32 i = 0; i < tblResults.Rows.Count; i++)
                    {
                        if ((i + 1) <= distances.Length)
                        {
                            //If we received a distance for this destination...
                            if (distances[i] != "")
                            {
                                //Update our Distance with Google's for Display
                                tblResults.Rows[i]["Distance"] = distances[i].ToString();
                                //Update our Numeric Distance with Google's for sorting
                                tblResults.Rows[i]["NumericDistance"] = Convert.ToDouble(distances[i].Replace(" mi", String.Empty).Trim());
                            }
                            else
                            {
                                //Update our Distance with our calculated Numeric Distance as a fallback
                                tblResults.Rows[i]["Distance"] = String.Format("{0:##0.0} mi",
                                                                               tblResults.Rows[i]["NumericDistance"]);
                            }
                        }
                        else
                        {
                            //Update our Distance with our calculated Numeric Distance as a fallback
                            tblResults.Rows[i]["Distance"] = String.Format("{0:##0.0} mi",
                                                                           tblResults.Rows[i]["NumericDistance"]);
                        }
                    }
                }
            }
Exemple #8
0
        private static void ProcessGoogle(AppSettings config, IList <Transaction> transactions)
        {
            var google = new GoogleHelper(config);

            var values = google.BuildList(transactions);

            var response = google.Append(values).Result;

            WriteLine("Finished appending values!");
            WriteLine($"Updated range: {response.Updates.UpdatedRange}");
            WriteLine($"Updated rows: {response.Updates.UpdatedRows}");
            WriteLine($"Updated columns: {response.Updates.UpdatedColumns}");
            WriteLine($"Updated cells: {response.Updates.UpdatedCells}");
        }
Exemple #9
0
        public async Task <IActionResult> HandleRedirect(string returnUrl)
        {
            if (returnUrl.IsNullEmptyOrWhiteSpace())
            {
                returnUrl = ApplicationEngine.RouteUrl(RouteNames.Home);
            }
            var request = await GoogleHelper.CreateConnectedAccountRequestAsync();

            if (_connectionAccountant.Connect(request))
            {
                return(Redirect(returnUrl));
            }
            return(RedirectToRoute(RouteNames.Login));
        }
Exemple #10
0
        internal static Task OnCreatingTicket(OAuthCreatingTicketContext context)
        {
            if (context.Ticket.Principal != null)
            {
                Helpers.ThrowIfConditionFailed(() => context.AccessToken == "ValidAccessToken", "Access token is not valid");
                Helpers.ThrowIfConditionFailed(() => context.RefreshToken == "ValidRefreshToken", "Refresh token is not valid");
                Helpers.ThrowIfConditionFailed(() => GoogleHelper.GetEmail(context.User) == "*****@*****.**", "Email is not valid");
                Helpers.ThrowIfConditionFailed(() => context.ExpiresIn.Value == TimeSpan.FromSeconds(1200), "ExpiresIn is not valid");
                Helpers.ThrowIfConditionFailed(() => context.User != null, "User object is not valid");
                context.Ticket.Principal.Identities.First().AddClaim(new Claim("ManageStore", "false"));
            }

            return(Task.FromResult(0));
        }
Exemple #11
0
        public void Test1()
        {
            var captchaEncrypted = @"03AOLTBLQqSv7BqJvZBSSd6ieO1FGaq7pnyn7JY_yXDoKpKwcJXDq8buuP6jBL5B5UjhVP7votjIVX2_Ok08PgrxMK0MDmlLRwScCdH_DxP7Bx6_fIpyJ-fAU2jD96-wnGMVpHNwu3tGM1UajJcSQw580NFV9yndSLCp3G4clrHmlaYaOUqgwOh2CCeKiGy8-Pw_NAYZI58Ii6QI3OqF-vwxV1fdsUrh88oXcVitc2Ad8N0fLqY68HvBmVYjzkW1Zvx77nm4Q6cEC8Twf4TYVcB_IBnLfbiz59klCfBB0b8aChW0zXn0uAzVn5XZJpVxM2BgUrtyaAaMJbh9Vvxi-gCJN76TtLFM8aTI7lGhtGulw99sh30N4lDGY064S7jJ9iOx8Cm1QoO6IS";

            var googleResponseTask = GoogleHelper.CallGoogleSiteVerifyAsync(captchaEncrypted);

            while (!googleResponseTask.IsCompleted)
            {
                Thread.Sleep(200);
            }

            if (googleResponseTask.Result.IsSuccessStatusCode)
            {
                var readAsStrTask = googleResponseTask.Result.Content.ReadAsStringAsync();

                while (!readAsStrTask.IsCompleted)
                {
                    Thread.Sleep(200);
                }


                output.WriteLine($"raw result = {readAsStrTask.Result}");


                var googleResponse =
                    JsonConvert.DeserializeObject <GoogleVerificationResponse>(readAsStrTask.Result,
                                                                               new JsonSerializerSettings()
                {
                    Error = (s, e) => { e.ErrorContext.Handled = true; },
                    //Error = HandleErrors,
                });

                output.WriteLine($"google success = {googleResponse.Success}");
                output.WriteLine($"google host = {googleResponse.hostname}");
                var errors = googleResponse.ErrorCodes == null ? "" : string.Join(',', googleResponse.ErrorCodes);
                output.WriteLine($"google errors = {errors} ");

                if (googleResponse.Success)
                {
                    output.WriteLine($"Successful recaptcha!");
                }
            }

            Assert.Equal(1, 1);
        }
Exemple #12
0
        public async Task <ExternalLoginInfo> CreateExternalLogin(string provider, string token)
        {
            switch (provider)
            {
            case ExternalProvider.Facebook:
            {
                var payload = await FacebookHelper.GetFacebookUser(token);

                var cp = FacebookHelper.GetClaims(payload);
                if (cp == null)
                {
                    return(null);
                }
                return(new ExternalLoginInfo(cp, ExternalProvider.Facebook, FacebookHelper.GetId(payload), ExternalProvider.Facebook));
            }

            case ExternalProvider.Google:
            {
                var payload = await GoogleHelper.GetGoogleUser(token);

                var cp = GoogleHelper.GetClaims(payload);
                if (cp == null)
                {
                    return(null);
                }
                return(new ExternalLoginInfo(cp, ExternalProvider.Google, GoogleHelper.GetId(payload), ExternalProvider.Google));
            }

            case ExternalProvider.Wechat:
            {
                string[] variables = token.Split(":");
                var      payload   = await WechatHelper.GetWechatUser(variables[0], variables[1]);

                var cp = WechatHelper.GetClaims(payload);
                if (cp == null)
                {
                    return(null);
                }
                return(new ExternalLoginInfo(cp, ExternalProvider.Wechat, WechatHelper.GetId(payload), ExternalProvider.Wechat));
            }

            default:
                return(null);
            }
        }
Exemple #13
0
        public async Task <OperationResult <FileDTO> > Upload(FilePost file)
        {
            var googleService = await GoogleHelper.AuthGoogle(_configuration);

            using (var stream = file.File.OpenReadStream())
            {
                var uploadResponse = await GoogleHelper.Upload(_configuration, googleService, stream, file.File);

                var result = new OperationResult <FileDTO>
                {
                    Type   = uploadResponse.Type,
                    Errors = uploadResponse.Errors
                };

                if (uploadResponse.IsSuccess)
                {
                    var reportResponse = await _clientUpload.GetResponse <OperationResult <FileReportUploadResponse> >(new FileReportUploadRequest
                    {
                        Description = file.Description,
                        Name        = file.File.FileName,
                        GoogleId    = uploadResponse.Data.Id,
                        Mime        = file.File.ContentType,
                        ReportId    = file.ReportId
                    });

                    result.Type = reportResponse.Message.Type;
                    result.Errors.AddRange(reportResponse.Message.Errors);

                    if (reportResponse.Message.IsSuccess)
                    {
                        result.Data = new FileDTO
                        {
                            FileId = reportResponse.Message.Data.FileId
                        };
                    }
                }

                return(result);
            }
        }
        public static ObservableCollection <StockData> GetStockDataFromGoogle(string ticker, DateTime startDate, DateTime endDate)
        {
            ObservableCollection <StockData>        res = new ObservableCollection <StockData>();
            ObservableCollection <GoogleStockPrice> dt  = GoogleHelper.GetGoogleStockData(ticker, startDate, endDate, GoogleDataTypeEnum.EOD);

            if (dt.Count > 0)
            {
                foreach (var p in dt)
                {
                    res.Add(new StockData
                    {
                        Ticker = ticker,
                        Date   = p.Date.Date,
                        Open   = p.PriceOpen.To <double>(),
                        High   = p.PriceHigh.To <double>(),
                        Low    = p.PriceLow.To <double>(),
                        Close  = p.PriceClose.To <double>(),
                        Volume = p.Volume.To <double>()
                    });
                }
            }
            return(res);
        }
Exemple #15
0
        public ActionResult Create(TwoFactorComponentType componentType)
        {
            var user = UserManager.FindById(User.Id());

            if (user == null)
            {
                return(Unauthorized());
            }

            // If twofactor exists something is dodgy, return unauthorised
            var twofactor = user.TwoFactor.FirstOrDefault(x => x.Component == componentType && x.Type != TwoFactorType.None);

            if (twofactor != null)
            {
                return(RedirectToRoute("Security"));
            }

            return(View(new CreateTwoFactorModel
            {
                ComponentType = componentType,
                GoogleData = GoogleHelper.GetGoogleTwoFactorData(user.UserName)
            }));
        }
Exemple #16
0
 public CustomEventDataSource(CalendarService calendarService, string calendarId, string timeZoneId)
 {
     this.googleHelper = new GoogleHelper(calendarService, calendarId, timeZoneId);
 }
Exemple #17
0
        // POST: api/Woow
        public object Post([FromBody] Zero.ApiTerminal.Clients.Request.WoowRequest request)
        {
            object result = null;

            Logger.Info("PARSE REQUEST:" + request.SerializeXml());
            BaseHelper helper = null;

            switch (request.ChannelSymbol)
            {
            case 1:
                helper = new MsonlineHelper();
                break;

            case 2:
                helper = new GoogleHelper();
                break;
            }
            if (helper != null)
            {
                helper.Channel = request.Channel;
                helper.Avatar  = request.Avatar;
            }
            else
            {
                return("");
            }

            Logger.Debug(helper.GetType());

            switch ((request.Method + "").ToUpper())
            {
            case "SIGNIN":
                result = helper.Signin();
                break;

            case "EXCHANGETOKEN":
                result = helper.ExchangeToken(request.Data);
                break;

            case "REFRSHTOKEN":
                result = helper.RefreshToken(request.Data);
                break;

            case "READAVATAR":
                result = helper.ReadAvatar();
                break;

            case "READMESSAGES":
                Logger.Debug("READMESSAGES");
                result = helper.ReadMessages(request.Data.ToInt());
                break;

            case "READCONTACTS":
                Logger.Debug("READCONTACTS");
                result = helper.ReadContacts(request.Data.ToInt());
                break;

            case "READEVENTS":
                Logger.Debug("READEVENTS");
                result = helper.ReadEvents(request.Data.ToInt());
                break;

            case "CREATEEVENT":
                result = helper.CreateEvent(request.Data.JsonToObj <Zero.ApiTerminal.Entities.Event>());
                break;

            case "CANCELEVENT":
                result = helper.CancelEvent(request.Data.JsonToObj <Zero.ApiTerminal.Entities.Event>());
                break;

            case "UPDATEEVENT":
                result = helper.UpdateEvent(request.Data.JsonToObj <Zero.ApiTerminal.Entities.Event>());
                break;
            }

            Logger.Info("CALLBACK:" + result);

            return(result);
        }
Exemple #18
0
        public GoogleFileProvider()
        {
            var googleHelper = new GoogleHelper(Configuration.Instance.GoogleConfig);

            _driveService = new DriveService(googleHelper.GetInitializer(scopes: DriveService.Scope.Drive));
        }
Exemple #19
0
        public GoogleFileProvider(IConfiguration config)
        {
            var googleHelper = new GoogleHelper(config);

            _driveService = new DriveService(googleHelper.GetInitializer());
        }
Exemple #20
0
        protected override async Task <AuthenticationTicket> CreateTicketAsync(
            ClaimsIdentity identity,
            AuthenticationProperties properties,
            OAuthTokenResponse tokens)
        {
            log.LogDebug("CreateTicketAsync called tokens.AccessToken was " + tokens.AccessToken);

            // Get the Google user
            var request = new HttpRequestMessage(HttpMethod.Get, Options.UserInformationEndpoint);

            request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", tokens.AccessToken);

            var response = await Backchannel.SendAsync(request, Context.RequestAborted);

            //string r = await response.Content.ReadAsStringAsync();
            //log.LogInformation(r);
            response.EnsureSuccessStatusCode();


            var payload = JObject.Parse(await response.Content.ReadAsStringAsync());

            var context = new OAuthCreatingTicketContext(Context, Options, Backchannel, tokens, payload)
            {
                Properties = properties,
                Principal  = new ClaimsPrincipal(identity)
            };

            var identifier = GoogleHelper.GetId(payload);

            if (!string.IsNullOrEmpty(identifier))
            {
                identity.AddClaim(new Claim(ClaimTypes.NameIdentifier, identifier, ClaimValueTypes.String, Options.ClaimsIssuer));
            }

            var givenName = GoogleHelper.GetGivenName(payload);

            if (!string.IsNullOrEmpty(givenName))
            {
                identity.AddClaim(new Claim(ClaimTypes.GivenName, givenName, ClaimValueTypes.String, Options.ClaimsIssuer));
            }

            var familyName = GoogleHelper.GetFamilyName(payload);

            if (!string.IsNullOrEmpty(familyName))
            {
                identity.AddClaim(new Claim(ClaimTypes.Surname, familyName, ClaimValueTypes.String, Options.ClaimsIssuer));
            }

            var name = GoogleHelper.GetName(payload);

            if (!string.IsNullOrEmpty(name))
            {
                identity.AddClaim(new Claim(ClaimTypes.Name, name, ClaimValueTypes.String, Options.ClaimsIssuer));
            }

            var email = GoogleHelper.GetEmail(payload);

            if (!string.IsNullOrEmpty(email))
            {
                identity.AddClaim(new Claim(ClaimTypes.Email, email, ClaimValueTypes.String, Options.ClaimsIssuer));
            }

            var profile = GoogleHelper.GetProfile(payload);

            if (!string.IsNullOrEmpty(profile))
            {
                identity.AddClaim(new Claim("urn:google:profile", profile, ClaimValueTypes.String, Options.ClaimsIssuer));
            }

            await Options.Events.CreatingTicket(context);

            //ISiteSettings site = siteResolver.Resolve();
            var site = await GetSite();

            if (site != null)
            {
                Claim siteGuidClaim = new Claim("SiteGuid", site.SiteGuid.ToString());
                if (!identity.HasClaim(siteGuidClaim.Type, siteGuidClaim.Value))
                {
                    identity.AddClaim(siteGuidClaim);
                }
            }

            //return new AuthenticationTicket(notification.Principal, notification.Properties, notification.Options.AuthenticationScheme);
            return(new AuthenticationTicket(context.Principal, context.Properties, AuthenticationScheme.External));
        }
Exemple #21
0
 public CustomEventDataSource()
 {
     this.googleHelper = new GoogleHelper(null, String.Empty, string.Empty);
 }