private bool SendMail(string dir) { try { string from = MailFrom.Text; if (string.IsNullOrEmpty(from)) { MessageBox.Show(this, _noGitMailConfigured.Text); } string to = MailTo.Text; using (var mail = new MailMessage(from, to, MailSubject.Text, MailBody.Text)) { foreach (string file in Directory.GetFiles(dir, "*.patch")) { var attachment = new Attachment(file); mail.Attachments.Add(attachment); } var smtpClient = new SmtpClient(AppSettings.SmtpServer) { Port = AppSettings.SmtpPort, EnableSsl = AppSettings.SmtpUseSsl }; using (var credentials = new SmtpCredentials()) { credentials.login.Text = from; smtpClient.Credentials = credentials.ShowDialog(this) == DialogResult.OK ? new NetworkCredential(credentials.login.Text, credentials.password.Text) : CredentialCache.DefaultNetworkCredentials; } ServicePointManager.ServerCertificateValidationCallback = delegate { return(true); }; smtpClient.Send(mail); } } catch (Exception ex) { MessageBox.Show(this, ex.Message); return(false); } return(true); }
private void AppendCredentialsList() { if (SmtpCredentials == null) { SmtpCredentials = new List <SmtpCredential>(); } if (SmtpCredentialsFile.IsBlank()) { return; } //todo: handle missing file var lines = File.ReadAllLines(SmtpCredentialsFile); SmtpCredentials.AddRange(lines.Select((_, i) => ParseCredentialLine(_, i))); }
public override async Task <ValidateSmtpSettingsReply> ValidateSmtpSettings(SmtpSettingsMessage request, ServerCallContext context) { SmtpCredentials credentials = new SmtpCredentials { Hostname = request.Hostname, Password = request.Password, Port = request.Port, SenderAddress = request.SenderAddress, Username = request.Username, }; return(new ValidateSmtpSettingsReply { Success = await _smtpConnectivityChecker.CheckConnectivityAsnc(credentials), }); }
public override async Task <ChangeSmtpSettingsReply> ChangeSmtpSettings(SmtpSettingsMessage request, ServerCallContext context) { SmtpCredentials credentials = new SmtpCredentials { Hostname = request.Hostname, Password = request.Password, Port = request.Port, SenderAddress = request.SenderAddress, Username = request.Username }; await _smtpCredentialManager.StoreCredentialsAsync(credentials); return(new ChangeSmtpSettingsReply { Success = true, }); }
public async Task <bool> CheckConnectivityAsnc(SmtpCredentials credentials) { try { using (var client = new SmtpClient()) { await client.ConnectAsync(credentials.Hostname, credentials.Port); await client.AuthenticateAsync(credentials.Username, credentials.Password); await client.DisconnectAsync(true); } } catch { return(false); } return(true); }
public SmtpCredentials GetSmtpCredentials() { objDataAccess = DataAccess.NewDataAccess(); objDbCommand = objDataAccess.GetCommand(true, IsolationLevel.ReadCommitted); DbDataReader objDbDataReader = null; SmtpCredentials objSmtpC = null; try { objDbDataReader = objDataAccess.ExecuteReader(objDbCommand, "ams.uspGetSmtpCredentials", CommandType.StoredProcedure); if (objDbDataReader.HasRows) { //DocumentBiz.GetApplicantDocuments(applicantId); while (objDbDataReader.Read()) { objSmtpC = new SmtpCredentials(); BuildModel(objDbDataReader, objSmtpC); } } } catch (Exception ex) { throw new Exception("Error : " + ex.Message); } finally { if (objDbDataReader != null) { objDbDataReader.Close(); } objDataAccess.Dispose(objDbCommand); } return(objSmtpC); }
public override async Task <SetupInstanceReply> SetupInstance(SetupInstanceRequest request, ServerCallContext context) { bool isInstalled = await IsAlreadyInstalled(); string existingAuthKey = await GetSetupAuthKey() ?? ""; bool authKeysMatch = CryptographicOperations.FixedTimeEquals(Encoding.ASCII.GetBytes(existingAuthKey), Encoding.ASCII.GetBytes(request.AuthToken)); if (isInstalled || existingAuthKey == "" || !authKeysMatch) { return(new SetupInstanceReply { ErrorMessage = "Installation failed for security reasons.", Succeeded = false, }); } AppUser user = new AppUser { EmailConfirmed = true, UserName = request.AccountData.Username, Email = request.AccountData.Email, }; await _userManager.CreateAsync(user, request.AccountData.Password); await _userManager.AddToRoleAsync(user, "admin"); SmtpCredentials smtpCredentials = new SmtpCredentials { Hostname = request.SmtpSettings.Hostname, Username = request.SmtpSettings.Username, Password = request.SmtpSettings.Password, SenderAddress = request.SmtpSettings.SenderAddress, Port = request.SmtpSettings.Port }; await _smtpCredentialManager.StoreCredentialsAsync(smtpCredentials); SystemSetting installSetting = new SystemSetting { Name = INSTALLED_KEY, Value = "true", }; SystemSetting?primaryDomainSetting = await _authDbContext.SystemSettings .SingleOrDefaultAsync(s => s.Name == PRIMARY_DOMAIN_KEY); if (primaryDomainSetting == null) { primaryDomainSetting = new SystemSetting { Name = PRIMARY_DOMAIN_KEY, Value = context.GetHttpContext().Request.Host.Host, }; SystemSetting tlsCertificateSetting = new SystemSetting { Name = "tls.acme.support", Value = "false" }; _authDbContext.AddRange(primaryDomainSetting, tlsCertificateSetting); } string snapFolder = PathProvider.GetApplicationDataFolder(); string primaryDomainConfigFile = snapFolder + "/primary-domain.txt"; await File.WriteAllTextAsync(primaryDomainConfigFile, primaryDomainSetting.Value); if (!CertificateRepository.TryGetCertificate(primaryDomainSetting.Value, out _)) { ECDsa ecdsa = ECDsa.Create(); CertificateRequest req = new CertificateRequest("cn=" + primaryDomainSetting.Value, ecdsa, HashAlgorithmName.SHA256); X509Certificate2 cert = req.CreateSelfSigned(DateTimeOffset.Now, DateTimeOffset.Now.AddYears(15)); CertificateRepository repository = new CertificateRepository(); repository.StoreCertificate(primaryDomainSetting.Value, cert.Export(X509ContentType.Pfx)); } _authDbContext.AddRange(installSetting); await _authDbContext.SaveChangesAsync(); return(new SetupInstanceReply { Succeeded = true, }); }