mirror of
https://github.com/gitbucket/gitbucket.git
synced 2025-11-08 22:45:51 +01:00
Remove unnecessary ServletContext.
This commit is contained in:
@@ -70,7 +70,7 @@ trait SystemSettingsControllerBase extends ControllerBase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if(form.ssh && !SshServer.isActive && form.baseUrl.isDefined){
|
if(form.ssh && !SshServer.isActive && form.baseUrl.isDefined){
|
||||||
SshServer.start(request.getServletContext,
|
SshServer.start(
|
||||||
form.sshPort.getOrElse(SystemSettingsService.DefaultSshPort),
|
form.sshPort.getOrElse(SystemSettingsService.DefaultSshPort),
|
||||||
form.baseUrl.get)
|
form.baseUrl.get)
|
||||||
} else if(!form.ssh && SshServer.isActive){
|
} else if(!form.ssh && SshServer.isActive){
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ package servlet
|
|||||||
import java.io.File
|
import java.io.File
|
||||||
import java.sql.{DriverManager, Connection}
|
import java.sql.{DriverManager, Connection}
|
||||||
import org.apache.commons.io.FileUtils
|
import org.apache.commons.io.FileUtils
|
||||||
import javax.servlet.{ServletContext, ServletContextListener, ServletContextEvent}
|
import javax.servlet.{ServletContextListener, ServletContextEvent}
|
||||||
import org.apache.commons.io.IOUtils
|
import org.apache.commons.io.IOUtils
|
||||||
import org.slf4j.LoggerFactory
|
import org.slf4j.LoggerFactory
|
||||||
import util.Directory._
|
import util.Directory._
|
||||||
|
|||||||
@@ -11,14 +11,13 @@ import org.apache.sshd.server.command.UnknownCommand
|
|||||||
import servlet.{Database, CommitLogHook}
|
import servlet.{Database, CommitLogHook}
|
||||||
import service.{AccountService, RepositoryService, SystemSettingsService}
|
import service.{AccountService, RepositoryService, SystemSettingsService}
|
||||||
import org.eclipse.jgit.errors.RepositoryNotFoundException
|
import org.eclipse.jgit.errors.RepositoryNotFoundException
|
||||||
import javax.servlet.ServletContext
|
|
||||||
import model.Session
|
import model.Session
|
||||||
|
|
||||||
object GitCommand {
|
object GitCommand {
|
||||||
val CommandRegex = """\Agit-(upload|receive)-pack '/([a-zA-Z0-9\-_.]+)/([a-zA-Z0-9\-_.]+).git'\Z""".r
|
val CommandRegex = """\Agit-(upload|receive)-pack '/([a-zA-Z0-9\-_.]+)/([a-zA-Z0-9\-_.]+).git'\Z""".r
|
||||||
}
|
}
|
||||||
|
|
||||||
abstract class GitCommand(val context: ServletContext, val owner: String, val repoName: String) extends Command {
|
abstract class GitCommand(val owner: String, val repoName: String) extends Command {
|
||||||
self: RepositoryService with AccountService =>
|
self: RepositoryService with AccountService =>
|
||||||
|
|
||||||
private val logger = LoggerFactory.getLogger(classOf[GitCommand])
|
private val logger = LoggerFactory.getLogger(classOf[GitCommand])
|
||||||
@@ -80,7 +79,7 @@ abstract class GitCommand(val context: ServletContext, val owner: String, val re
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
class GitUploadPack(context: ServletContext, owner: String, repoName: String, baseUrl: String) extends GitCommand(context, owner, repoName)
|
class GitUploadPack(owner: String, repoName: String, baseUrl: String) extends GitCommand(owner, repoName)
|
||||||
with RepositoryService with AccountService {
|
with RepositoryService with AccountService {
|
||||||
|
|
||||||
override protected def runTask(user: String)(implicit session: Session): Unit = {
|
override protected def runTask(user: String)(implicit session: Session): Unit = {
|
||||||
@@ -97,7 +96,7 @@ class GitUploadPack(context: ServletContext, owner: String, repoName: String, ba
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
class GitReceivePack(context: ServletContext, owner: String, repoName: String, baseUrl: String) extends GitCommand(context, owner, repoName)
|
class GitReceivePack(owner: String, repoName: String, baseUrl: String) extends GitCommand(owner, repoName)
|
||||||
with SystemSettingsService with RepositoryService with AccountService {
|
with SystemSettingsService with RepositoryService with AccountService {
|
||||||
|
|
||||||
override protected def runTask(user: String)(implicit session: Session): Unit = {
|
override protected def runTask(user: String)(implicit session: Session): Unit = {
|
||||||
@@ -119,14 +118,14 @@ class GitReceivePack(context: ServletContext, owner: String, repoName: String, b
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
class GitCommandFactory(context: ServletContext, baseUrl: String) extends CommandFactory {
|
class GitCommandFactory(baseUrl: String) extends CommandFactory {
|
||||||
private val logger = LoggerFactory.getLogger(classOf[GitCommandFactory])
|
private val logger = LoggerFactory.getLogger(classOf[GitCommandFactory])
|
||||||
|
|
||||||
override def createCommand(command: String): Command = {
|
override def createCommand(command: String): Command = {
|
||||||
logger.debug(s"command: $command")
|
logger.debug(s"command: $command")
|
||||||
command match {
|
command match {
|
||||||
case GitCommand.CommandRegex("upload", owner, repoName) => new GitUploadPack(context, owner, repoName, baseUrl)
|
case GitCommand.CommandRegex("upload", owner, repoName) => new GitUploadPack(owner, repoName, baseUrl)
|
||||||
case GitCommand.CommandRegex("receive", owner, repoName) => new GitReceivePack(context, owner, repoName, baseUrl)
|
case GitCommand.CommandRegex("receive", owner, repoName) => new GitReceivePack(owner, repoName, baseUrl)
|
||||||
case _ => new UnknownCommand(command)
|
case _ => new UnknownCommand(command)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,9 +5,8 @@ import org.apache.sshd.server.session.ServerSession
|
|||||||
import java.security.PublicKey
|
import java.security.PublicKey
|
||||||
import service.SshKeyService
|
import service.SshKeyService
|
||||||
import servlet.Database
|
import servlet.Database
|
||||||
import javax.servlet.ServletContext
|
|
||||||
|
|
||||||
class PublicKeyAuthenticator(context: ServletContext) extends PublickeyAuthenticator with SshKeyService {
|
class PublicKeyAuthenticator extends PublickeyAuthenticator with SshKeyService {
|
||||||
|
|
||||||
override def authenticate(username: String, key: PublicKey, session: ServerSession): Boolean = {
|
override def authenticate(username: String, key: PublicKey, session: ServerSession): Boolean = {
|
||||||
Database() withSession { implicit session =>
|
Database() withSession { implicit session =>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
package ssh
|
package ssh
|
||||||
|
|
||||||
import javax.servlet.{ServletContext, ServletContextEvent, ServletContextListener}
|
import javax.servlet.{ServletContextEvent, ServletContextListener}
|
||||||
import org.apache.sshd.server.keyprovider.SimpleGeneratorHostKeyProvider
|
import org.apache.sshd.server.keyprovider.SimpleGeneratorHostKeyProvider
|
||||||
import org.slf4j.LoggerFactory
|
import org.slf4j.LoggerFactory
|
||||||
import util.Directory
|
import util.Directory
|
||||||
@@ -12,17 +12,17 @@ object SshServer {
|
|||||||
private val server = org.apache.sshd.SshServer.setUpDefaultServer()
|
private val server = org.apache.sshd.SshServer.setUpDefaultServer()
|
||||||
private val active = new AtomicBoolean(false)
|
private val active = new AtomicBoolean(false)
|
||||||
|
|
||||||
private def configure(context: ServletContext, port: Int, baseUrl: String) = {
|
private def configure(port: Int, baseUrl: String) = {
|
||||||
server.setPort(port)
|
server.setPort(port)
|
||||||
server.setKeyPairProvider(new SimpleGeneratorHostKeyProvider(s"${Directory.GitBucketHome}/gitbucket.ser"))
|
server.setKeyPairProvider(new SimpleGeneratorHostKeyProvider(s"${Directory.GitBucketHome}/gitbucket.ser"))
|
||||||
server.setPublickeyAuthenticator(new PublicKeyAuthenticator(context))
|
server.setPublickeyAuthenticator(new PublicKeyAuthenticator)
|
||||||
server.setCommandFactory(new GitCommandFactory(context, baseUrl))
|
server.setCommandFactory(new GitCommandFactory(baseUrl))
|
||||||
server.setShellFactory(new NoShell)
|
server.setShellFactory(new NoShell)
|
||||||
}
|
}
|
||||||
|
|
||||||
def start(context: ServletContext, port: Int, baseUrl: String) = {
|
def start(port: Int, baseUrl: String) = {
|
||||||
if(active.compareAndSet(false, true)){
|
if(active.compareAndSet(false, true)){
|
||||||
configure(context, port, baseUrl)
|
configure(port, baseUrl)
|
||||||
server.start()
|
server.start()
|
||||||
logger.info(s"Start SSH Server Listen on ${server.getPort}")
|
logger.info(s"Start SSH Server Listen on ${server.getPort}")
|
||||||
}
|
}
|
||||||
@@ -55,8 +55,7 @@ class SshServerListener extends ServletContextListener with SystemSettingsServic
|
|||||||
case None =>
|
case None =>
|
||||||
logger.error("Could not start SshServer because the baseUrl is not configured.")
|
logger.error("Could not start SshServer because the baseUrl is not configured.")
|
||||||
case Some(baseUrl) =>
|
case Some(baseUrl) =>
|
||||||
SshServer.start(sce.getServletContext,
|
SshServer.start(settings.sshPort.getOrElse(SystemSettingsService.DefaultSshPort), baseUrl)
|
||||||
settings.sshPort.getOrElse(SystemSettingsService.DefaultSshPort), baseUrl)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user