From e5ec907a39266e5b353e30ab3f1294b3e4ea5d34 Mon Sep 17 00:00:00 2001 From: Philipp Schoepf Date: Sun, 27 Oct 2019 20:10:06 +0100 Subject: [PATCH 1/3] Added support for overriding of the git http useragent and setting of additional http headers via system environment properties. --- .../modelrepository/ModelRepositoryPlugin.java | 9 ++++++++- .../CredentialsAuthenticator.java | 17 ++++++++++++++++- 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/org.archicontribs.modelrepository/src/org/archicontribs/modelrepository/ModelRepositoryPlugin.java b/org.archicontribs.modelrepository/src/org/archicontribs/modelrepository/ModelRepositoryPlugin.java index 8d9f634e..c320fae6 100644 --- a/org.archicontribs.modelrepository/src/org/archicontribs/modelrepository/ModelRepositoryPlugin.java +++ b/org.archicontribs.modelrepository/src/org/archicontribs/modelrepository/ModelRepositoryPlugin.java @@ -21,6 +21,7 @@ import org.eclipse.core.runtime.FileLocator; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; +import org.eclipse.jgit.transport.UserAgent; import org.eclipse.ui.plugin.AbstractUIPlugin; import org.osgi.framework.BundleContext; @@ -44,6 +45,9 @@ public class ModelRepositoryPlugin extends AbstractUIPlugin implements PropertyC */ public static ModelRepositoryPlugin INSTANCE; + public static String ENV_VAR_USERAGENT = "ARCHI_GIT_USERAGENT"; + public static String ENV_VAR_ADDITIONALHEADER = "ARCHI_GIT_ADDITIONALHEADER"; + public ModelRepositoryPlugin() { INSTANCE = this; } @@ -52,7 +56,10 @@ public ModelRepositoryPlugin() { public void start(BundleContext context) throws Exception { super.start(context); IEditorModelManager.INSTANCE.addPropertyChangeListener(this); - + //override git useragent if specified in system property + if (System.getenv(ENV_VAR_USERAGENT) != null && !System.getenv(ENV_VAR_USERAGENT).isEmpty()) { + UserAgent.set(System.getenv(ENV_VAR_USERAGENT)); + } // Set this first ProxyAuthenticator.init(); } diff --git a/org.archicontribs.modelrepository/src/org/archicontribs/modelrepository/authentication/CredentialsAuthenticator.java b/org.archicontribs.modelrepository/src/org/archicontribs/modelrepository/authentication/CredentialsAuthenticator.java index 3753b335..bccf9f60 100644 --- a/org.archicontribs.modelrepository/src/org/archicontribs/modelrepository/authentication/CredentialsAuthenticator.java +++ b/org.archicontribs.modelrepository/src/org/archicontribs/modelrepository/authentication/CredentialsAuthenticator.java @@ -7,6 +7,8 @@ import java.io.File; import java.io.IOException; +import java.util.HashMap; +import java.util.Map; import org.archicontribs.modelrepository.ModelRepositoryPlugin; import org.archicontribs.modelrepository.grafico.GraficoUtils; @@ -18,6 +20,7 @@ import org.eclipse.jgit.transport.SshSessionFactory; import org.eclipse.jgit.transport.SshTransport; import org.eclipse.jgit.transport.Transport; +import org.eclipse.jgit.transport.TransportHttp; import org.eclipse.jgit.transport.UsernamePasswordCredentialsProvider; import org.eclipse.jgit.util.FS; import org.eclipse.osgi.util.NLS; @@ -137,7 +140,19 @@ protected JSch createDefaultJSch(FS fs) throws JSchException { return new TransportConfigCallback() { @Override public void configure(Transport transport) { - transport.setCredentialsProvider(new UsernamePasswordCredentialsProvider(npw.getUsername(), npw.getPassword())); + transport.setCredentialsProvider(new UsernamePasswordCredentialsProvider(npw.getUsername(), npw.getPassword())); + // check for environment variable to add additional http headers to git request + Map envVariables = System.getenv(); + String additionalHeader = envVariables.get(ModelRepositoryPlugin.ENV_VAR_ADDITIONALHEADER); + if (additionalHeader != null && transport instanceof TransportHttp) { + TransportHttp transportHttp = (TransportHttp) transport; + Map headerMap = new HashMap(1); + String headerKeyValue[] = additionalHeader.split(":"); + if (headerKeyValue.length==2) { + headerMap.put(headerKeyValue[0], headerKeyValue[1]); + transportHttp.setAdditionalHeaders(headerMap); + } + } }; }; } From febfc55a3c88d3c17045267849fe52763058fd0a Mon Sep 17 00:00:00 2001 From: Philipp Schoepf Date: Thu, 10 Jun 2021 12:40:06 +0200 Subject: [PATCH 2/3] code to authenticate to reverse proxy --- .../authentication/CredentialsAuthenticator.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/org.archicontribs.modelrepository/src/org/archicontribs/modelrepository/authentication/CredentialsAuthenticator.java b/org.archicontribs.modelrepository/src/org/archicontribs/modelrepository/authentication/CredentialsAuthenticator.java index bccf9f60..9a3d3719 100644 --- a/org.archicontribs.modelrepository/src/org/archicontribs/modelrepository/authentication/CredentialsAuthenticator.java +++ b/org.archicontribs.modelrepository/src/org/archicontribs/modelrepository/authentication/CredentialsAuthenticator.java @@ -14,6 +14,9 @@ import org.archicontribs.modelrepository.grafico.GraficoUtils; import org.archicontribs.modelrepository.grafico.IGraficoConstants; import org.archicontribs.modelrepository.preferences.IPreferenceConstants; +import org.eclipse.core.runtime.ILog; +import org.eclipse.core.runtime.Platform; +import org.eclipse.core.runtime.Status; import org.eclipse.jgit.api.TransportConfigCallback; import org.eclipse.jgit.transport.JschConfigSessionFactory; import org.eclipse.jgit.transport.OpenSshConfig; @@ -24,6 +27,8 @@ import org.eclipse.jgit.transport.UsernamePasswordCredentialsProvider; import org.eclipse.jgit.util.FS; import org.eclipse.osgi.util.NLS; +import org.osgi.framework.Bundle; +import org.osgi.framework.FrameworkUtil; import com.jcraft.jsch.JSch; import com.jcraft.jsch.JSchException; @@ -36,6 +41,8 @@ * @author Phillip Beauvoir */ public final class CredentialsAuthenticator { + private static final Bundle BUNDLE = FrameworkUtil.getBundle(CredentialsAuthenticator.class); + private static final ILog LOGGER = Platform.getLog(BUNDLE); public interface SSHIdentityProvider { File getIdentityFile() throws IOException; @@ -151,6 +158,7 @@ public void configure(Transport transport) { if (headerKeyValue.length==2) { headerMap.put(headerKeyValue[0], headerKeyValue[1]); transportHttp.setAdditionalHeaders(headerMap); + log(">> added http headers:" + headerMap); } } }; @@ -159,4 +167,12 @@ public void configure(Transport transport) { throw new IOException(Messages.CredentialsAuthenticator_2 + " " + repoURL); //$NON-NLS-1$ } + + public static void log(String msg) { + log(msg, null); + } + + public static void log(String msg, Exception e) { + LOGGER.log(new Status((e==null? Status.INFO:Status.ERROR), BUNDLE.getSymbolicName(), msg, e)); + } } From 797e37ab4b95dd1b131bc4b2f47ac8ddd63020bb Mon Sep 17 00:00:00 2001 From: Philipp Schoepf Date: Tue, 19 Apr 2022 21:23:19 +0200 Subject: [PATCH 3/3] fixed merge conflict --- org.archicontribs.modelrepository/.classpath | 12 ++++++++---- .../authentication/CredentialsAuthenticator.java | 2 +- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/org.archicontribs.modelrepository/.classpath b/org.archicontribs.modelrepository/.classpath index 735ab3b7..7d616f23 100644 --- a/org.archicontribs.modelrepository/.classpath +++ b/org.archicontribs.modelrepository/.classpath @@ -1,10 +1,14 @@ - - - - + + + + + + + + diff --git a/org.archicontribs.modelrepository/src/org/archicontribs/modelrepository/authentication/CredentialsAuthenticator.java b/org.archicontribs.modelrepository/src/org/archicontribs/modelrepository/authentication/CredentialsAuthenticator.java index a64e3405..fc033202 100644 --- a/org.archicontribs.modelrepository/src/org/archicontribs/modelrepository/authentication/CredentialsAuthenticator.java +++ b/org.archicontribs.modelrepository/src/org/archicontribs/modelrepository/authentication/CredentialsAuthenticator.java @@ -125,7 +125,7 @@ else if(npw != null) { } }; - } + }; }