diff --git a/src/main/scala/app/SystemSettingsController.scala b/src/main/scala/app/SystemSettingsController.scala index c81e6d9..27b18fa 100644 --- a/src/main/scala/app/SystemSettingsController.scala +++ b/src/main/scala/app/SystemSettingsController.scala @@ -85,41 +85,55 @@ }) get("/admin/plugins")(adminOnly { - val installedPlugins = plugin.PluginSystem.plugins - val updatablePlugins = getAvailablePlugins(installedPlugins).filter(_.status == "updatable") - admin.plugins.html.installed(installedPlugins, updatablePlugins) + if(enablePluginSystem){ + val installedPlugins = plugin.PluginSystem.plugins + val updatablePlugins = getAvailablePlugins(installedPlugins).filter(_.status == "updatable") + admin.plugins.html.installed(installedPlugins, updatablePlugins) + } else NotFound }) post("/admin/plugins/_update", pluginForm)(adminOnly { form => - deletePlugins(form.pluginIds) - installPlugins(form.pluginIds) - redirect("/admin/plugins") + if(enablePluginSystem){ + deletePlugins(form.pluginIds) + installPlugins(form.pluginIds) + redirect("/admin/plugins") + } else NotFound }) post("/admin/plugins/_delete", pluginForm)(adminOnly { form => - deletePlugins(form.pluginIds) - redirect("/admin/plugins") + if(enablePluginSystem){ + deletePlugins(form.pluginIds) + redirect("/admin/plugins") + } else NotFound }) get("/admin/plugins/available")(adminOnly { - val installedPlugins = plugin.PluginSystem.plugins - val availablePlugins = getAvailablePlugins(installedPlugins).filter(_.status == "available") - admin.plugins.html.available(availablePlugins) + if(enablePluginSystem){ + val installedPlugins = plugin.PluginSystem.plugins + val availablePlugins = getAvailablePlugins(installedPlugins).filter(_.status == "available") + admin.plugins.html.available(availablePlugins) + } else NotFound }) post("/admin/plugins/_install", pluginForm)(adminOnly { form => - installPlugins(form.pluginIds) - redirect("/admin/plugins") + if(enablePluginSystem){ + installPlugins(form.pluginIds) + redirect("/admin/plugins") + } else NotFound }) get("/admin/plugins/console")(adminOnly { - admin.plugins.html.console() + if(enablePluginSystem){ + admin.plugins.html.console() + } else NotFound }) post("/admin/plugins/console")(adminOnly { - val script = request.getParameter("script") - val result = plugin.ScalaPlugin.eval(script) - Ok() + if(enablePluginSystem){ + val script = request.getParameter("script") + val result = plugin.ScalaPlugin.eval(script) + Ok() + } else NotFound }) // TODO Move these methods to PluginSystem or Service? diff --git a/src/main/scala/service/SystemSettingsService.scala b/src/main/scala/service/SystemSettingsService.scala index 2d8f1d3..9fbd78f 100644 --- a/src/main/scala/service/SystemSettingsService.scala +++ b/src/main/scala/service/SystemSettingsService.scala @@ -191,4 +191,7 @@ else value } + // TODO temporary flag + val enablePluginSystem = Option(System.getProperty("enable.plugin")).getOrElse("false").toBoolean + } diff --git a/src/main/scala/servlet/AutoUpdateListener.scala b/src/main/scala/servlet/AutoUpdateListener.scala index 2670181..5ba6cb5 100644 --- a/src/main/scala/servlet/AutoUpdateListener.scala +++ b/src/main/scala/servlet/AutoUpdateListener.scala @@ -11,6 +11,7 @@ import org.eclipse.jgit.api.Git import util.Directory import plugin.PluginUpdateJob +import service.SystemSettingsService object AutoUpdate { @@ -168,18 +169,15 @@ */ class AutoUpdateListener extends ServletContextListener { import org.quartz.impl.StdSchedulerFactory - import org.quartz.JobBuilder._ - import org.quartz.TriggerBuilder._ - import org.quartz.SimpleScheduleBuilder._ import AutoUpdate._ private val logger = LoggerFactory.getLogger(classOf[AutoUpdateListener]) private val scheduler = StdSchedulerFactory.getDefaultScheduler override def contextInitialized(event: ServletContextEvent): Unit = { - val datadir = event.getServletContext.getInitParameter("gitbucket.home") - if(datadir != null){ - System.setProperty("gitbucket.home", datadir) + val dataDir = event.getServletContext.getInitParameter("gitbucket.home") + if(dataDir != null){ + System.setProperty("gitbucket.home", dataDir) } org.h2.Driver.load() @@ -210,21 +208,23 @@ logger.debug("End schema update") } - getDatabase(context).withSession { implicit session => - logger.debug("Starting plugin system...") - try { - plugin.PluginSystem.init() + if(SystemSettingsService.enablePluginSystem){ + getDatabase(context).withSession { implicit session => + logger.debug("Starting plugin system...") + try { + plugin.PluginSystem.init() - scheduler.start() - PluginUpdateJob.schedule(scheduler) - logger.debug("PluginUpdateJob is started.") + scheduler.start() + PluginUpdateJob.schedule(scheduler) + logger.debug("PluginUpdateJob is started.") - logger.debug("Plugin system is initialized.") - } catch { - case ex: Throwable => { - logger.error("Failed to initialize plugin system", ex) - ex.printStackTrace() - throw ex + logger.debug("Plugin system is initialized.") + } catch { + case ex: Throwable => { + logger.error("Failed to initialize plugin system", ex) + ex.printStackTrace() + throw ex + } } } } diff --git a/src/main/twirl/admin/menu.scala.html b/src/main/twirl/admin/menu.scala.html index 25cda19..1e48858 100644 --- a/src/main/twirl/admin/menu.scala.html +++ b/src/main/twirl/admin/menu.scala.html @@ -11,9 +11,11 @@ System Settings - - Plugins - + @if(service.SystemSettingsService.enablePluginSystem){ + + Plugins + + }
  • H2 Console