From c2c29bb2821b5dd51688bac36c95cc2fa48bd1b2 Mon Sep 17 00:00:00 2001 From: Henry Oswald Date: Wed, 8 Oct 2014 16:07:44 +0100 Subject: [PATCH] university site renders via prozy ok --- .../Features/Blog/BlogController.coffee | 2 ++ .../StaticPages/StaticPageHelpers.coffee | 12 +++++++ .../StaticPages/StaticPagesRouter.coffee | 7 +++- .../StaticPages/UniversityController.coffee | 34 +++++++++++++++++++ .../views/university/university_holder.jade | 6 ++++ services/web/config/settings.defaults.coffee | 3 ++ 6 files changed, 63 insertions(+), 1 deletion(-) create mode 100644 services/web/app/coffee/Features/StaticPages/StaticPageHelpers.coffee create mode 100644 services/web/app/coffee/Features/StaticPages/UniversityController.coffee create mode 100644 services/web/app/views/university/university_holder.jade diff --git a/services/web/app/coffee/Features/Blog/BlogController.coffee b/services/web/app/coffee/Features/Blog/BlogController.coffee index f4c0b2b811..9d47a11224 100644 --- a/services/web/app/coffee/Features/Blog/BlogController.coffee +++ b/services/web/app/coffee/Features/Blog/BlogController.coffee @@ -12,6 +12,8 @@ module.exports = BlogController = url = req.url?.toLowerCase() blogUrl = "#{settings.apis.blog.url}#{url}" + extensionsToProxy = [".png", ".xml", ".jpeg", ".json", ".zip", ".eps"] + shouldProxy = _.find extensionsToProxy, (extension)-> url.indexOf(extension) != -1 diff --git a/services/web/app/coffee/Features/StaticPages/StaticPageHelpers.coffee b/services/web/app/coffee/Features/StaticPages/StaticPageHelpers.coffee new file mode 100644 index 0000000000..068fa86e43 --- /dev/null +++ b/services/web/app/coffee/Features/StaticPages/StaticPageHelpers.coffee @@ -0,0 +1,12 @@ +extensionsToProxy = [".png", ".xml", ".jpeg", ".json", ".zip", ".eps", ".gif", ".jpg"] +_ = require("underscore") + +module.exports = + shouldProxy: (url)-> + shouldProxy = _.find extensionsToProxy, (extension)-> + url.indexOf(extension) != -1 + return shouldProxy + + + + diff --git a/services/web/app/coffee/Features/StaticPages/StaticPagesRouter.coffee b/services/web/app/coffee/Features/StaticPages/StaticPagesRouter.coffee index ab4d7579b7..ab68fd7469 100644 --- a/services/web/app/coffee/Features/StaticPages/StaticPagesRouter.coffee +++ b/services/web/app/coffee/Features/StaticPages/StaticPagesRouter.coffee @@ -1,4 +1,6 @@ HomeController = require('./HomeController') +UniversityController = require("./UniversityController") + module.exports = apply: (app) -> @@ -12,4 +14,7 @@ module.exports = app.get '/planned_maintenance', HomeController.externalPage("planned_maintenance", "Planned Maintenance") app.get '/style', HomeController.externalPage("style_guide", "Style Guide") - app.get '/dropbox', HomeController.externalPage("dropbox", "Dropbox and ShareLaTeX") \ No newline at end of file + app.get '/dropbox', HomeController.externalPage("dropbox", "Dropbox and ShareLaTeX") + + app.get '/university', UniversityController.getIndexPage + app.get '/university/*', UniversityController.getPage \ No newline at end of file diff --git a/services/web/app/coffee/Features/StaticPages/UniversityController.coffee b/services/web/app/coffee/Features/StaticPages/UniversityController.coffee new file mode 100644 index 0000000000..a860403fea --- /dev/null +++ b/services/web/app/coffee/Features/StaticPages/UniversityController.coffee @@ -0,0 +1,34 @@ +request = require("request") +settings = require("settings-sharelatex") +logger = require("logger-sharelatex") +_ = require("underscore") +ErrorController = require "../Errors/ErrorController" +StaticPageHelpers = require("./StaticPageHelpers") + +module.exports = UniversityController = + + getPage: (req, res, next)-> + url = req.url?.toLowerCase() + universityUrl = "#{settings.apis.university.url}#{url}" + console.log universityUrl + if StaticPageHelpers.shouldProxy(url) + return UniversityController._directProxy universityUrl, res + + logger.log url:url, "proxying request to university api" + request.get universityUrl, (err, r, data)-> + if r?.statusCode == 404 + return ErrorController.notFound(req, res, next) + data = data.trim() + try + data = JSON.parse(data) + catch err + logger.err err:err, data:data, "error parsing data from data" + res.render "university/university_holder", data + + + getIndexPage: (req, res)-> + req.url = "/university/index.html" + UniversityController.getPage req, res + + _directProxy: (originUrl, res)-> + request.get(originUrl).pipe res \ No newline at end of file diff --git a/services/web/app/views/university/university_holder.jade b/services/web/app/views/university/university_holder.jade new file mode 100644 index 0000000000..d9a89d4c4b --- /dev/null +++ b/services/web/app/views/university/university_holder.jade @@ -0,0 +1,6 @@ +extends ../layout + +block content + .content.content-alt + .blog + | !{content} \ No newline at end of file diff --git a/services/web/config/settings.defaults.coffee b/services/web/config/settings.defaults.coffee index b987d2fb7f..4ed3a020b3 100644 --- a/services/web/config/settings.defaults.coffee +++ b/services/web/config/settings.defaults.coffee @@ -82,6 +82,8 @@ module.exports = internal_url: "http://localhost:3010" blog: port: 3008 + university: + url: "http://localhost:3011" filestore: url: "http://localhost:3009" clsi: @@ -92,6 +94,7 @@ module.exports = privateKey: "" apiKey: "" subdomain: "" + templates: user_id: process.env.TEMPLATES_USER_ID or "5395eb7aad1f29a88756c7f2"