From c8b26c51aa67fc9345b624e36aab6f819e7eed74 Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Sun, 25 Nov 2012 11:35:31 -0500 Subject: [PATCH] Gitblit Certificate Authority revisions. Eliminate certificate scripts. --- src/com/gitblit/GitBlit.java | 48 ++++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 44 insertions(+), 4 deletions(-) diff --git a/src/com/gitblit/GitBlit.java b/src/com/gitblit/GitBlit.java index 0d37b44..612870b 100644 --- a/src/com/gitblit/GitBlit.java +++ b/src/com/gitblit/GitBlit.java @@ -100,6 +100,7 @@ import com.gitblit.utils.ContainerUtils; import com.gitblit.utils.DeepCopier; import com.gitblit.utils.FederationUtils; +import com.gitblit.utils.HttpUtils; import com.gitblit.utils.JGitUtils; import com.gitblit.utils.JsonUtils; import com.gitblit.utils.MetricUtils; @@ -561,6 +562,14 @@ * @return a user object or null */ public UserModel authenticate(HttpServletRequest httpRequest) { + boolean checkValidity = settings.getBoolean(Keys.git.enforceCertificateValidity, true); + String [] oids = getStrings(Keys.git.certificateUsernameOIDs).toArray(new String[0]); + UserModel model = HttpUtils.getUserModelFromCertificate(httpRequest, checkValidity, oids); + if (model != null) { + UserModel user = GitBlit.self().getUserModel(model.username); + logger.info("{0} authenticated by client certificate from {1}", user.username, httpRequest.getRemoteAddr()); + return user; + } return null; } @@ -2658,6 +2667,37 @@ } /** + * Notify users by email of something. + * + * @param subject + * @param message + * @param toAddresses + */ + public void sendHtmlMail(String subject, String message, Collection<String> toAddresses) { + this.sendHtmlMail(subject, message, toAddresses.toArray(new String[0])); + } + + /** + * Notify users by email of something. + * + * @param subject + * @param message + * @param toAddresses + */ + public void sendHtmlMail(String subject, String message, String... toAddresses) { + try { + Message mail = mailExecutor.createMessage(toAddresses); + if (mail != null) { + mail.setSubject(subject); + mail.setContent(message, "text/html"); + mailExecutor.queue(mail); + } + } catch (MessagingException e) { + logger.error("Messaging error", e); + } + } + + /** * Returns the descriptions/comments of the Gitblit config settings. * * @return SettingsModel @@ -2758,15 +2798,15 @@ public void configureContext(IStoredSettings settings, boolean startFederation) { logger.info("Reading configuration from " + settings.toString()); this.settings = settings; - + + repositoriesFolder = getRepositoriesFolder(); + logger.info("Git repositories folder " + repositoriesFolder.getAbsolutePath()); + // prepare service executors mailExecutor = new MailExecutor(settings); luceneExecutor = new LuceneExecutor(settings, repositoriesFolder); gcExecutor = new GCExecutor(settings); - repositoriesFolder = getRepositoriesFolder(); - logger.info("Git repositories folder " + repositoriesFolder.getAbsolutePath()); - // calculate repository list settings checksum for future config changes repositoryListSettingsChecksum.set(getRepositoryListSettingsChecksum()); -- Gitblit v1.9.1