Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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)));
        }
Exemplo n.º 3
0
        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),
            });
        }
Exemplo n.º 4
0
        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,
            });
        }
Exemplo n.º 5
0
        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);
        }
Exemplo n.º 6
0
        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);
        }
Exemplo n.º 7
0
        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,
            });
        }