diff --git a/src/main/scala/app/SystemSettingsController.scala b/src/main/scala/app/SystemSettingsController.scala index e278433..efa952a 100644 --- a/src/main/scala/app/SystemSettingsController.scala +++ b/src/main/scala/app/SystemSettingsController.scala @@ -70,7 +70,7 @@ } if(form.ssh && !SshServer.isActive && form.baseUrl.isDefined){ - SshServer.start(request.getServletContext, + SshServer.start( form.sshPort.getOrElse(SystemSettingsService.DefaultSshPort), form.baseUrl.get) } else if(!form.ssh && SshServer.isActive){ diff --git a/src/main/scala/servlet/AutoUpdateListener.scala b/src/main/scala/servlet/AutoUpdateListener.scala index c71de94..30610bc 100644 --- a/src/main/scala/servlet/AutoUpdateListener.scala +++ b/src/main/scala/servlet/AutoUpdateListener.scala @@ -3,7 +3,7 @@ import java.io.File import java.sql.{DriverManager, Connection} 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.slf4j.LoggerFactory import util.Directory._ diff --git a/src/main/scala/ssh/GitCommand.scala b/src/main/scala/ssh/GitCommand.scala index 0e287fe..35fb67b 100644 --- a/src/main/scala/ssh/GitCommand.scala +++ b/src/main/scala/ssh/GitCommand.scala @@ -11,14 +11,13 @@ import servlet.{Database, CommitLogHook} import service.{AccountService, RepositoryService, SystemSettingsService} import org.eclipse.jgit.errors.RepositoryNotFoundException -import javax.servlet.ServletContext import model.Session object GitCommand { 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 => private val logger = LoggerFactory.getLogger(classOf[GitCommand]) @@ -80,7 +79,7 @@ } -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 { override protected def runTask(user: String)(implicit session: Session): Unit = { @@ -97,7 +96,7 @@ } -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 { override protected def runTask(user: String)(implicit session: Session): Unit = { @@ -119,14 +118,14 @@ } -class GitCommandFactory(context: ServletContext, baseUrl: String) extends CommandFactory { +class GitCommandFactory(baseUrl: String) extends CommandFactory { private val logger = LoggerFactory.getLogger(classOf[GitCommandFactory]) override def createCommand(command: String): Command = { logger.debug(s"command: $command") command match { - case GitCommand.CommandRegex("upload", owner, repoName) => new GitUploadPack(context, owner, repoName, baseUrl) - case GitCommand.CommandRegex("receive", owner, repoName) => new GitReceivePack(context, owner, repoName, baseUrl) + case GitCommand.CommandRegex("upload", owner, repoName) => new GitUploadPack(owner, repoName, baseUrl) + case GitCommand.CommandRegex("receive", owner, repoName) => new GitReceivePack(owner, repoName, baseUrl) case _ => new UnknownCommand(command) } } diff --git a/src/main/scala/ssh/PublicKeyAuthenticator.scala b/src/main/scala/ssh/PublicKeyAuthenticator.scala index 3781a79..ddcc724 100644 --- a/src/main/scala/ssh/PublicKeyAuthenticator.scala +++ b/src/main/scala/ssh/PublicKeyAuthenticator.scala @@ -5,9 +5,8 @@ import java.security.PublicKey import service.SshKeyService 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 = { Database() withSession { implicit session => diff --git a/src/main/scala/ssh/SshServerListener.scala b/src/main/scala/ssh/SshServerListener.scala index 59cafe3..b441cae 100644 --- a/src/main/scala/ssh/SshServerListener.scala +++ b/src/main/scala/ssh/SshServerListener.scala @@ -1,6 +1,6 @@ package ssh -import javax.servlet.{ServletContext, ServletContextEvent, ServletContextListener} +import javax.servlet.{ServletContextEvent, ServletContextListener} import org.apache.sshd.server.keyprovider.SimpleGeneratorHostKeyProvider import org.slf4j.LoggerFactory import util.Directory @@ -12,17 +12,17 @@ private val server = org.apache.sshd.SshServer.setUpDefaultServer() 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.setKeyPairProvider(new SimpleGeneratorHostKeyProvider(s"${Directory.GitBucketHome}/gitbucket.ser")) - server.setPublickeyAuthenticator(new PublicKeyAuthenticator(context)) - server.setCommandFactory(new GitCommandFactory(context, baseUrl)) + server.setPublickeyAuthenticator(new PublicKeyAuthenticator) + server.setCommandFactory(new GitCommandFactory(baseUrl)) server.setShellFactory(new NoShell) } - def start(context: ServletContext, port: Int, baseUrl: String) = { + def start(port: Int, baseUrl: String) = { if(active.compareAndSet(false, true)){ - configure(context, port, baseUrl) + configure(port, baseUrl) server.start() logger.info(s"Start SSH Server Listen on ${server.getPort}") } @@ -55,8 +55,7 @@ case None => logger.error("Could not start SshServer because the baseUrl is not configured.") case Some(baseUrl) => - SshServer.start(sce.getServletContext, - settings.sshPort.getOrElse(SystemSettingsService.DefaultSshPort), baseUrl) + SshServer.start(settings.sshPort.getOrElse(SystemSettingsService.DefaultSshPort), baseUrl) } } }