From 1d6cc8cffb0381eec671dbe248f9b3ad0af8b9a9 Mon Sep 17 00:00:00 2001 From: John Cardinal Date: Fri, 7 Oct 2022 00:35:02 +0000 Subject: [PATCH] --- .vscode/settings.json | 3 + Pages/Request.cshtml | 98 +++++++++++++++++++++ Pages/Request.cshtml.cs | 185 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 286 insertions(+) create mode 100644 .vscode/settings.json create mode 100644 Pages/Request.cshtml create mode 100644 Pages/Request.cshtml.cs diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..4798424 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "liveServer.settings.port": 5501 +} \ No newline at end of file diff --git a/Pages/Request.cshtml b/Pages/Request.cshtml new file mode 100644 index 0000000..c27079c --- /dev/null +++ b/Pages/Request.cshtml @@ -0,0 +1,98 @@ +@page +@model RequestModel +@{ + ViewData["Title"] = "Request"; +} + + +
+ +
+

Request AyaNova subscription trial account

+
+
+
+ +
+
+
+ +
+ + +
+
+
+
+
+
+
+ +
+ + +
+
+
+
+ + + +
+
+
+ +
+ + +
+
+
+
+ +
+
+
+ +
+ + +
+
+
+
+ + + + +
+ + +
+
+
+ + +
+
+ +
+
+ + + + +
+
+
+ © 2022 Ground Zero Tech-Works, Inc + +
+ Privacy Policy
+
+
+ \ No newline at end of file diff --git a/Pages/Request.cshtml.cs b/Pages/Request.cshtml.cs new file mode 100644 index 0000000..dd1eb20 --- /dev/null +++ b/Pages/Request.cshtml.cs @@ -0,0 +1,185 @@ +using System.Collections.Generic; +using Microsoft.AspNetCore.Mvc.RazorPages; +using System.ComponentModel.DataAnnotations; +using Microsoft.AspNetCore.Mvc; +using System.Net.Mail; +using System.Net; +//for captcha: +using System.Net.Http; +using Newtonsoft.Json.Linq; +using Microsoft.Extensions.Configuration; +using Microsoft.AspNetCore.Mvc.Rendering; + +namespace contact.Pages +{ + [BindProperties(SupportsGet = true)] + public class RequestFormModel + { + public RequestFormModel() + { + DataCenter = "SF"; + } + [Required] + public string Name { get; set; } + [Required] + public string Company { get; set; } + + [Required, EmailAddress] + public string Email { get; set; } + [Required] + public string DataCenter { get; set; } + + + + + } + + public class RequestModel : PageModel + { + // public string DataCenter { get; set; } + [BindProperty(SupportsGet = true)] + public RequestFormModel SubRequest { get; set; } + + public List DataCenters { get; } = new List + { + new SelectListItem { Value = "SF", Text = "San Francisco" }, + new SelectListItem { Value = "NY", Text = "New York" }, + new SelectListItem { Value = "TOR", Text = "Toronto" }, + new SelectListItem { Value = "AMS", Text = "Amsterdam" }, + new SelectListItem { Value = "LON", Text = "London" }, + new SelectListItem { Value = "FFT", Text = "Frankfurt" }, + new SelectListItem { Value = "SNG", Text = "Singapore" }, + new SelectListItem { Value = "BNG", Text = "Bangalore" }, + }; + + private readonly IConfiguration _configuration; + public RequestModel(IConfiguration configuration) + { + _configuration = configuration; + } + + public ActionResult OnPost() + { + if (!ModelState.IsValid) + { + return Page(); + } + + + if (!ReCaptchaPassed( + Request.Form["g-recaptcha-response"], // that's how you get it from the Request object + _configuration.GetSection("GoogleReCaptcha:secret").Value + )) + { + //Return a fail code that will hopefully take us off the spammers list + return StatusCode(500); + } + + + + //fuck those spammers + //2022-05-06 changes to get rid of jumbo lead magnet spammer but still force him to pay someone to manually enter the stuff + //ideally it should read from a text file here but this is a quickie fix while Joyce is on important viha phone call + var blocks = new List(); + blocks.Add("google"); + blocks.Add("jumboleadmagnet");//<--fuck this guy in particular, keeps spamming + blocks.Add("boostleadgeneration"); + //ericjonesmyemail@gmail.com + var companyname = SubRequest.Company.ToLowerInvariant(); + foreach (string s in blocks) + { + if (companyname.Contains(s)) + { + goto skipspam; + + } + } + + SendMail(); + + skipspam: + return Redirect("https://ayanova.com/docs/ay-evaluate/"); + } + + + private void SendMail() + { + var MessageBody = $"Name:\r\n{SubRequest.Name}\r\n\r\nCompany:\r\n{SubRequest.Company}\r\n\r\nDataCenter:\r\n{SubRequest.DataCenter}"; + + //SEND TO US + using (var message = new MailMessage()) + { + message.To.Add(new MailAddress("support@ayanova.com")); + message.From = new MailAddress(SubRequest.Email); + message.Subject = $"Trial request from {SubRequest.Company}"; + message.Body = MessageBody; + using (var smtpClient = new SmtpClient("smtp.fastmail.com")) + { + + smtpClient.Host = "smtp.fastmail.com"; + smtpClient.Port = 587; + smtpClient.UseDefaultCredentials = false; + //testing + smtpClient.EnableSsl = true; + + // smtpClient.Port=465; + // smtpClient.DeliveryMethod= SmtpDeliveryMethod.Network; + + + + //NOTE: Do not use the noreply email address to send mail, it crashes the server somehow + + //****************************************************************************************************************** + //****************************************************************************************************************** + //TEST CRASH + // smtpClient.Credentials = new System.Net.NetworkCredential("noreply@ayanova.com", "91768700489f8edd28aa71e3e0f4073eba54ce83c4c1a6a910700fa94094ddfd"); + + + //FASTMAIL CHANGES + //Fastmail server names and ports help page: https://www.fastmail.help/hc/en-us/articles/1500000278342 + //APP Password created in fastmail for smtp use only labelled 'contact-form': cnea8agl6nlx5j7l + + //try using from as support@onayanova.com + //try domain version if this still won't work + smtpClient.Credentials = new System.Net.NetworkCredential("support@onayanova.com", "cnea8agl6nlx5j7l"); + //****************************************************************************************************************** + //****************************************************************************************************************** + + smtpClient.Send(message); + } + } + + + + } + + public void OnGet() + { + + } + + + + public static bool ReCaptchaPassed(string gRecaptchaResponse, string secret) + { + HttpClient httpClient = new HttpClient(); + var res = httpClient.GetAsync($"https://www.google.com/recaptcha/api/siteverify?secret={secret}&response={gRecaptchaResponse}").Result; + if (res.StatusCode != HttpStatusCode.OK) + { + // logger.LogError("Error while sending request to ReCaptcha"); + return false; + } + + string JSONres = res.Content.ReadAsStringAsync().Result; + dynamic JSONdata = JObject.Parse(JSONres); + if (JSONdata.success != "true") + { + return false; + } + + return true; + } + + + } +}