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
+
+
+
+
+
+
+
+
\ 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;
+ }
+
+
+ }
+}