public static DehsSettings GetSettings() { var settings = new DehsSettings(); var deserializer = new Deserializer(); dynamic s; using (TextReader reader = File.OpenText(@"config.yml")) { s = deserializer.Deserialize(reader); } var creds = s["credentials"]; settings.Endpoint = creds["endpoint"]; settings.Login = creds["login"]; settings.Password = creds["password"]; settings.ProjectId = int.Parse(s["game"]["project_id"]); settings.AssetFolder = s["assets"]["folder"]; settings.EmailFieldId = int.Parse(s["fields"]["email"]); settings.FromEmail = s["email"]["from_email"]; settings.FromName = s["email"]["from_name"]; settings.EmailServer = s["email"]["server"]; settings.SmtpHost = s["smtp"]["host"]; settings.SmtpLogin = s["smtp"]["login"]; settings.SmtpPassword = s["smtp"]["password"]; settings.SmtpPort = int.Parse(s["smtp"]["port"]); return(settings); }
public MailClient(DehsSettings settings) { Settings = settings; Client = new SmtpClient(); // For demo-purposes, accept all SSL certificates (in case the server supports STARTTLS) Client.ServerCertificateValidationCallback = (s, c, h, e) => true; }
private static async Task SendAllFles(DehsSettings settings1, AssetHelper assetHelper, JoinRpgClient joinRpgClient, DehsSettings settings) { using (var mailClient = new MailClient(settings1)) { mailClient.Connect(); await assetHelper.SendAllFiles( (file, characterId) => SendFileToCharacter(joinRpgClient, characterId, file, settings, mailClient)); } }
public AssetHelper(DehsSettings settings) { Settings = settings; }
private static async Task <bool> SendFileToCharacter(JoinRpgClient joinRpgClient, int characterId, FileSystemInfo file, DehsSettings settings, MailClient mailClient) { Log.Info($"[{characterId}] File {file.Name}"); var character = await joinRpgClient.GetCharacter(characterId); var email = character.Fields .SingleOrDefault(field => field.ProjectFieldId == settings.EmailFieldId)?.Value; Log.Info($"[{characterId}] Email {email} ready, applying delay"); await Task.Delay(20 * 1000); if (string.IsNullOrWhiteSpace(email)) { return(false); } try { var message = new MimeMessage(); message.From.Add(new MailboxAddress(settings.FromName, settings.FromEmail)); message.To.Add(new MailboxAddress(email, email + "@" + settings.EmailServer)); message.Subject = "Хакерский аккаунт и стартовый набор кодов"; message.Body = new TextPart("plain") { Text = File.ReadAllText(file.FullName) }; await mailClient.SendAsync(message); } catch (Exception exception) { Log.Warn($"Failed to send to address {email}. Reason {exception}"); return(false); } Log.Info("Send success"); return(true); }