Fix SSHCommand extension point for apache-sshd 2.x (#2941)

This commit is contained in:
Naoki Takezoe
2021-12-11 19:11:23 +09:00
committed by GitHub
parent ff8a5f6b77
commit d169777722
3 changed files with 10 additions and 8 deletions

View File

@@ -1,14 +1,15 @@
package gitbucket.core.plugin package gitbucket.core.plugin
import javax.servlet.ServletContext import javax.servlet.ServletContext
import gitbucket.core.controller.{Context, ControllerBase} import gitbucket.core.controller.{Context, ControllerBase}
import gitbucket.core.model.{Account, Issue} import gitbucket.core.model.{Account, Issue}
import gitbucket.core.service.RepositoryService.RepositoryInfo import gitbucket.core.service.RepositoryService.RepositoryInfo
import gitbucket.core.service.SystemSettingsService.SystemSettings import gitbucket.core.service.SystemSettingsService.SystemSettings
import io.github.gitbucket.solidbase.model.Version import io.github.gitbucket.solidbase.model.Version
import org.apache.sshd.server.channel.ChannelSession
import org.apache.sshd.server.command.Command import org.apache.sshd.server.command.Command
import play.twirl.api.Html import play.twirl.api.Html
import scala.util.Using import scala.util.Using
/** /**
@@ -323,7 +324,7 @@ abstract class Plugin {
/** /**
* Override to add ssh command providers. * Override to add ssh command providers.
*/ */
val sshCommandProviders: Seq[PartialFunction[String, Command]] = Nil val sshCommandProviders: Seq[PartialFunction[String, ChannelSession => Command]] = Nil
/** /**
* Override to add ssh command providers. * Override to add ssh command providers.
@@ -332,7 +333,7 @@ abstract class Plugin {
registry: PluginRegistry, registry: PluginRegistry,
context: ServletContext, context: ServletContext,
settings: SystemSettings settings: SystemSettings
): Seq[PartialFunction[String, Command]] = Nil ): Seq[PartialFunction[String, ChannelSession => Command]] = Nil
/** /**
* This method is invoked in initialization of plugin system. * This method is invoked in initialization of plugin system.

View File

@@ -6,7 +6,6 @@ import java.nio.file.{Files, Paths, StandardWatchEventKinds}
import java.util.Base64 import java.util.Base64
import java.util.concurrent.ConcurrentLinkedQueue import java.util.concurrent.ConcurrentLinkedQueue
import java.util.concurrent.ConcurrentHashMap import java.util.concurrent.ConcurrentHashMap
import javax.servlet.ServletContext import javax.servlet.ServletContext
import com.github.zafarkhaja.semver.Version import com.github.zafarkhaja.semver.Version
import gitbucket.core.controller.{Context, ControllerBase} import gitbucket.core.controller.{Context, ControllerBase}
@@ -21,6 +20,7 @@ import io.github.gitbucket.solidbase.Solidbase
import io.github.gitbucket.solidbase.manager.JDBCVersionManager import io.github.gitbucket.solidbase.manager.JDBCVersionManager
import io.github.gitbucket.solidbase.model.Module import io.github.gitbucket.solidbase.model.Module
import org.apache.commons.io.FileUtils import org.apache.commons.io.FileUtils
import org.apache.sshd.server.channel.ChannelSession
import org.apache.sshd.server.command.Command import org.apache.sshd.server.command.Command
import org.slf4j.LoggerFactory import org.slf4j.LoggerFactory
import play.twirl.api.Html import play.twirl.api.Html
@@ -58,7 +58,7 @@ class PluginRegistry {
private val suggestionProviders = new ConcurrentLinkedQueue[SuggestionProvider] private val suggestionProviders = new ConcurrentLinkedQueue[SuggestionProvider]
suggestionProviders.add(new UserNameSuggestionProvider()) suggestionProviders.add(new UserNameSuggestionProvider())
suggestionProviders.add(new IssueSuggestionProvider()) suggestionProviders.add(new IssueSuggestionProvider())
private val sshCommandProviders = new ConcurrentLinkedQueue[PartialFunction[String, Command]]() private val sshCommandProviders = new ConcurrentLinkedQueue[PartialFunction[String, ChannelSession => Command]]()
def addPlugin(pluginInfo: PluginInfo): Unit = plugins.add(pluginInfo) def addPlugin(pluginInfo: PluginInfo): Unit = plugins.add(pluginInfo)
@@ -177,10 +177,11 @@ class PluginRegistry {
def getSuggestionProviders: Seq[SuggestionProvider] = suggestionProviders.asScala.toSeq def getSuggestionProviders: Seq[SuggestionProvider] = suggestionProviders.asScala.toSeq
def addSshCommandProvider(sshCommandProvider: PartialFunction[String, Command]): Unit = def addSshCommandProvider(sshCommandProvider: PartialFunction[String, ChannelSession => Command]): Unit =
sshCommandProviders.add(sshCommandProvider) sshCommandProviders.add(sshCommandProvider)
def getSshCommandProviders: Seq[PartialFunction[String, Command]] = sshCommandProviders.asScala.toSeq def getSshCommandProviders: Seq[PartialFunction[String, ChannelSession => Command]] =
sshCommandProviders.asScala.toSeq
} }
/** /**

View File

@@ -244,7 +244,7 @@ class GitCommandFactory(baseUrl: String, sshAddress: SshAddress) extends Command
case f if f.isDefinedAt(command) => f(command) case f if f.isDefinedAt(command) => f(command)
} }
pluginCommand.getOrElse { pluginCommand.map(_.apply(channel)).getOrElse {
val (simpleRegex, defaultRegex) = val (simpleRegex, defaultRegex) =
if (sshAddress.isDefaultPort) { if (sshAddress.isDefaultPort) {
(SimpleCommandRegexPort22, DefaultCommandRegexPort22) (SimpleCommandRegexPort22, DefaultCommandRegexPort22)