summaryrefslogtreecommitdiffstats
path: root/src/main/java/com/googlesource/gerrit/plugins/replication/SecureCredentialsProvider.java
diff options
context:
space:
mode:
authorShawn O. Pearce <sop@google.com>2012-05-10 19:04:38 -0700
committerShawn O. Pearce <sop@google.com>2012-05-18 10:39:09 -0700
commitbf62ea82c47253fa748043f16e335e17d1b9686d (patch)
treecab5134372225f3d3ca072041e89188cc7ddb72d /src/main/java/com/googlesource/gerrit/plugins/replication/SecureCredentialsProvider.java
Initial replication plugin, split from Gerrit Code Review
This plugin provides server driven replication within the Gerrit process using the JGit and JSch client libraries to push reference updates to remote destinations using the Git protocol. Taken from gerrit 5de34d9713108fb46e74c12b96db2e3e6be3c672. Change-Id: Id09595d4371e999d175268314d2e320f89839ef6
Diffstat (limited to 'src/main/java/com/googlesource/gerrit/plugins/replication/SecureCredentialsProvider.java')
-rw-r--r--src/main/java/com/googlesource/gerrit/plugins/replication/SecureCredentialsProvider.java81
1 files changed, 81 insertions, 0 deletions
diff --git a/src/main/java/com/googlesource/gerrit/plugins/replication/SecureCredentialsProvider.java b/src/main/java/com/googlesource/gerrit/plugins/replication/SecureCredentialsProvider.java
new file mode 100644
index 0000000..a878ed9
--- /dev/null
+++ b/src/main/java/com/googlesource/gerrit/plugins/replication/SecureCredentialsProvider.java
@@ -0,0 +1,81 @@
+// Copyright (C) 2011 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.googlesource.gerrit.plugins.replication;
+
+import org.eclipse.jgit.errors.UnsupportedCredentialItem;
+import org.eclipse.jgit.transport.CredentialItem;
+import org.eclipse.jgit.transport.CredentialsProvider;
+import org.eclipse.jgit.transport.URIish;
+
+/** Looks up a remote's password in secure.config. */
+class SecureCredentialsProvider extends CredentialsProvider {
+ private final String cfgUser;
+ private final String cfgPass;
+
+ SecureCredentialsProvider(String user, String pass) {
+ cfgUser = user;
+ cfgPass = pass;
+ }
+
+ @Override
+ public boolean isInteractive() {
+ return false;
+ }
+
+ @Override
+ public boolean supports(CredentialItem... items) {
+ for (CredentialItem i : items) {
+ if (i instanceof CredentialItem.Username) {
+ continue;
+ } else if (i instanceof CredentialItem.Password) {
+ continue;
+ } else {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ @Override
+ public boolean get(URIish uri, CredentialItem... items)
+ throws UnsupportedCredentialItem {
+ String username = uri.getUser();
+ if (username == null) {
+ username = cfgUser;
+ }
+ if (username == null) {
+ return false;
+ }
+
+ String password = uri.getPass();
+ if (password == null) {
+ password = cfgPass;
+ }
+ if (password == null) {
+ return false;
+ }
+
+ for (CredentialItem i : items) {
+ if (i instanceof CredentialItem.Username) {
+ ((CredentialItem.Username) i).setValue(username);
+ } else if (i instanceof CredentialItem.Password) {
+ ((CredentialItem.Password) i).setValue(password.toCharArray());
+ } else {
+ throw new UnsupportedCredentialItem(uri, i.getPromptText());
+ }
+ }
+ return true;
+ }
+}