From 22957a70fb7ba8a38564d6b6be15c661da0c3a20 Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Thu, 10 Apr 2014 18:58:08 -0400
Subject: [PATCH] Start SSH usage documentation
---
src/main/java/com/gitblit/transport/ssh/commands/DispatchCommand.java | 38 ++++++++++++++++++++++++++++++--------
1 files changed, 30 insertions(+), 8 deletions(-)
diff --git a/src/main/java/com/gitblit/transport/ssh/commands/DispatchCommand.java b/src/main/java/com/gitblit/transport/ssh/commands/DispatchCommand.java
index 597b9ea..5c02273 100644
--- a/src/main/java/com/gitblit/transport/ssh/commands/DispatchCommand.java
+++ b/src/main/java/com/gitblit/transport/ssh/commands/DispatchCommand.java
@@ -32,7 +32,8 @@
import com.gitblit.git.RepositoryResolver;
import com.gitblit.transport.ssh.AbstractGitCommand;
import com.gitblit.transport.ssh.CommandMetaData;
-import com.gitblit.transport.ssh.SshSession;
+import com.gitblit.transport.ssh.SshKeyAuthenticator;
+import com.gitblit.transport.ssh.SshDaemonClient;
import com.gitblit.utils.cli.SubcommandHandler;
import com.google.common.base.Charsets;
import com.google.common.base.Strings;
@@ -92,6 +93,12 @@
}
Command cmd = getCommand();
+ if (cmd.getClass().isAnnotationPresent(CommandMetaData.class)) {
+ CommandMetaData meta = cmd.getClass().getAnnotation(CommandMetaData.class);
+ if (meta.admin() && !ctx.getClient().getUser().canAdmin()) {
+ throw new UnloggedFailure(1, MessageFormat.format("{0} requires admin permissions", commandName));
+ }
+ }
if (cmd instanceof BaseCommand) {
BaseCommand bc = (BaseCommand) cmd;
if (getName().isEmpty()) {
@@ -159,9 +166,15 @@
String format = "%-" + maxLength + "s %s";
for (String name : Sets.newTreeSet(m.keySet())) {
final Class<? extends Command> c = m.get(name);
- usage.append(" ");
CommandMetaData meta = c.getAnnotation(CommandMetaData.class);
if (meta != null) {
+ if (meta.admin() && !ctx.getClient().getUser().canAdmin()) {
+ continue;
+ }
+ if (meta.hidden()) {
+ continue;
+ }
+ usage.append(" ");
usage.append(String.format(format, name,
Strings.nullToEmpty(meta.description())));
}
@@ -196,21 +209,30 @@
d.setRepositoryResolver(repositoryResolver);
d.setUploadPackFactory(gitblitUploadPackFactory);
d.setReceivePackFactory(gitblitReceivePackFactory);
+ d.setAuthenticator(authenticator);
+ } else if (cmd instanceof BaseKeyCommand) {
+ BaseKeyCommand k = (BaseKeyCommand)cmd;
+ k.setAuthenticator(authenticator);
}
}
- private RepositoryResolver<SshSession> repositoryResolver;
- public void setRepositoryResolver(RepositoryResolver<SshSession> repositoryResolver) {
+ private RepositoryResolver<SshDaemonClient> repositoryResolver;
+ public void setRepositoryResolver(RepositoryResolver<SshDaemonClient> repositoryResolver) {
this.repositoryResolver = repositoryResolver;
}
- private GitblitUploadPackFactory<SshSession> gitblitUploadPackFactory;
- public void setUploadPackFactory(GitblitUploadPackFactory<SshSession> gitblitUploadPackFactory) {
+ private GitblitUploadPackFactory<SshDaemonClient> gitblitUploadPackFactory;
+ public void setUploadPackFactory(GitblitUploadPackFactory<SshDaemonClient> gitblitUploadPackFactory) {
this.gitblitUploadPackFactory = gitblitUploadPackFactory;
}
- private GitblitReceivePackFactory<SshSession> gitblitReceivePackFactory;
- public void setReceivePackFactory(GitblitReceivePackFactory<SshSession> gitblitReceivePackFactory) {
+ private GitblitReceivePackFactory<SshDaemonClient> gitblitReceivePackFactory;
+ public void setReceivePackFactory(GitblitReceivePackFactory<SshDaemonClient> gitblitReceivePackFactory) {
this.gitblitReceivePackFactory = gitblitReceivePackFactory;
}
+
+ private SshKeyAuthenticator authenticator;
+ public void setAuthenticator(SshKeyAuthenticator authenticator) {
+ this.authenticator = authenticator;
+ }
}
--
Gitblit v1.9.1