overleaf/services/clsi/app.coffee
2014-02-12 17:27:43 +00:00

36 lines
1.2 KiB
CoffeeScript

CompileController = require "./app/js/CompileController"
Settings = require "settings-sharelatex"
logger = require "logger-sharelatex"
logger.initialize("clsi")
smokeTest = require "smoke-test-sharelatex"
ProjectPersistenceManager = require "./app/js/ProjectPersistenceManager"
require("./app/js/db").sync()
express = require "express"
app = express()
app.post "/project/:project_id/compile", express.bodyParser(), CompileController.compile
app.del "/project/:project_id", CompileController.clearCache
staticServer = express.static(Settings.path.compilesDir)
app.get "/project/:project_id/output/*", (req, res, next) ->
req.url = "/#{req.params.project_id}/#{req.params[0]}"
staticServer(req, res, next)
app.get "/status", (req, res, next) ->
res.send "CLSI is alive\n"
app.get "/health_check", smokeTest.run(require.resolve(__dirname + "/test/smoke/js/SmokeTests.js"))
app.use (error, req, res, next) ->
logger.error err: error, "server error"
res.send 500
app.listen port = (Settings.internal?.clsi?.port or 3013), host = (Settings.internal?.clsi?.host or "localhost"), (error) ->
logger.log "CLSI listening on #{host}:#{port}"
setInterval () ->
ProjectPersistenceManager.clearExpiredProjects()
, tenMinutes = 10 * 60 * 1000