Files
contact/Pages/Request.cshtml.cs

229 lines
8.7 KiB
C#

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<SelectListItem> DataCenters { get; } = new List<SelectListItem>
{
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" },
new SelectListItem { Value = "SYD", Text = "Sydney Australia" }
};
private readonly IConfiguration _configuration;
public RequestModel(IConfiguration configuration)
{
_configuration = configuration;
}
public ActionResult OnPost()
{
if (!ModelState.IsValid)
{
return Page();
}
//2025-11-01 Google dropping support for captcha, just nuking it for now, see how much spam I get
// 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<string>();
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;
}
}
PostRequestToSockeye();
SendMail();
skipspam:
return Redirect("https://ayanova.com/docs/ay-evaluate/");
}
private void PostRequestToSockeye()
{
using var client = new HttpClient();
//client.BaseAddress = new System.Uri("https://sockeye.ayanova.com");///api/v8.0/subscription-server/
var r = new
{
dataCenter = SubRequest.DataCenter,
email = SubRequest.Email,
company = SubRequest.Company,
name = SubRequest.Name,
rValue = "totallylegit"
};
HttpContent body = new StringContent(Newtonsoft.Json.JsonConvert.SerializeObject(r),
System.Text.Encoding.UTF8,
"application/json");
var response = client.PostAsync("https://sockeye.ayanova.com/subscription-server-trial-request", body).Result;
//var response = client.PostAsync("http://localhost:7676/subscription-server-trial-request", body).Result;
// if (response.IsSuccessStatusCode)
// {
// var content = await response.Content.ReadAsStringAsync();
// if (!string.IsNullOrEmpty(content))
// {
// var objDeserializeObject = JsonConvert.DeserializeObject<SongsModel>(content);
// Console.WriteLine("Data Saved Successfully.");
// if (objDeserializeObject != null)
// {
// Console.WriteLine(objDeserializeObject.Name);
// }
// }
// }
}
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()
{
}
//2025-11-01 Google dropping support for captcha, just nuking it for now, see how much spam I get
// 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;
// }
}
}