Allow to specify amqp passwords in etc/secure.config
Change-Id: Ic405afc3afea7acc4e5bde1cdadccbdfec47afdd
diff --git a/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/config/section/Gerrit.java b/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/config/section/Gerrit.java
index 5ad4a49..b400b76 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/config/section/Gerrit.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/config/section/Gerrit.java
@@ -24,6 +24,7 @@
import org.eclipse.jgit.lib.Config;
public class Gerrit implements Section {
+ private Config gerritConfig;
@Default
@MessageHeader("gerrit-name")
@@ -50,10 +51,15 @@
@Default
public String listenAs;
+ public String getAMQPUserPassword(String userName) {
+ return gerritConfig.getString("AMQP", userName, "password");
+ }
+
@Inject
public Gerrit(final @GerritServerConfig Config config) {
this.canonicalWebUrl = config.getString("gerrit", null, "canonicalWebUrl");
this.version = Version.getVersion();
+ this.gerritConfig = config;
}
}
diff --git a/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/session/type/AMQPSession.java b/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/session/type/AMQPSession.java
index 1f9b7e3..6afec87 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/session/type/AMQPSession.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/session/type/AMQPSession.java
@@ -17,6 +17,7 @@
import com.googlesource.gerrit.plugins.rabbitmq.config.Properties;
import com.googlesource.gerrit.plugins.rabbitmq.config.section.AMQP;
import com.googlesource.gerrit.plugins.rabbitmq.config.section.Exchange;
+import com.googlesource.gerrit.plugins.rabbitmq.config.section.Gerrit;
import com.googlesource.gerrit.plugins.rabbitmq.config.section.Message;
import com.googlesource.gerrit.plugins.rabbitmq.config.section.Monitor;
import com.googlesource.gerrit.plugins.rabbitmq.session.Session;
@@ -148,7 +149,11 @@
if (StringUtils.isNotEmpty(amqp.username)) {
factory.setUsername(amqp.username);
}
- if (StringUtils.isNotEmpty(amqp.password)) {
+ Gerrit gerrit = properties.getSection(Gerrit.class);
+ String securePassword = gerrit.getAMQPUserPassword(amqp.username);
+ if (StringUtils.isNotEmpty(securePassword)) {
+ factory.setPassword(securePassword);
+ } else if (StringUtils.isNotEmpty(amqp.password)) {
factory.setPassword(amqp.password);
}
connection = factory.newConnection();
diff --git a/src/main/resources/Documentation/config.md b/src/main/resources/Documentation/config.md
index cda6fb5..f54918f 100644
--- a/src/main/resources/Documentation/config.md
+++ b/src/main/resources/Documentation/config.md
@@ -13,6 +13,18 @@
If `rabbitmq.config` exists in `$site_path/data/rabbitmq`, it is loaded at first.
It means that this is default for all config files.
+
+Secure.config
+---------------------
+
+If amqp.<username>.password is specified in `$site_path/etc/secure.config`. This
+password is used when trying to connect to amqp with username = <username>.
+
+```
+ [amqp "guest"]
+ password = guest
+```
+
File format
---------------------