| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- metrics = require("metrics-sharelatex")
- logger = require('logger-sharelatex')
- _ = require('underscore')
- User = require('../../models/User').User
- Project = require('../../models/Project').Project
- DocumentUpdaterHandler = require('../DocumentUpdater/DocumentUpdaterHandler')
- Settings = require('settings-sharelatex')
- util = require('util')
- redis = require("redis-sharelatex")
- rclient = redis.createClient(Settings.redis.web)
- RecurlyWrapper = require('../Subscription/RecurlyWrapper')
- SubscriptionHandler = require('../Subscription/SubscriptionHandler')
- projectEntityHandler = require('../Project/ProjectEntityHandler')
- TpdsUpdateSender = require("../ThirdPartyDataStore/TpdsUpdateSender")
- EditorRealTimeController = require("../Editor/EditorRealTimeController")
- SystemMessageManager = require("../SystemMessages/SystemMessageManager")
- oneMinInMs = 60 * 1000
- updateOpenConnetionsMetrics = ()->
- metrics.gauge "open_connections.socketio", require("../../infrastructure/Server").io?.sockets?.clients()?.length
- metrics.gauge "open_connections.http", _.size(require('http').globalAgent?.sockets)
- metrics.gauge "open_connections.https", _.size(require('https').globalAgent?.sockets)
- setTimeout updateOpenConnetionsMetrics, oneMinInMs
- setTimeout updateOpenConnetionsMetrics, oneMinInMs
- module.exports = AdminController =
- index : (req, res, next)=>
- http = require('http')
- openSockets = {}
- for url, agents of require('http').globalAgent.sockets
- openSockets["http://#{url}"] = (agent._httpMessage.path for agent in agents)
- for url, agents of require('https').globalAgent.sockets
- openSockets["https://#{url}"] = (agent._httpMessage.path for agent in agents)
- SystemMessageManager.getMessagesFromDB (error, systemMessages) ->
- return next(error) if error?
- res.render 'admin/index',
- title: 'System Admin'
- openSockets: openSockets
- systemMessages: systemMessages
-
- registerNewUser: (req, res, next) ->
- res.render 'admin/register'
- dissconectAllUsers: (req, res)=>
- logger.warn "disconecting everyone"
- EditorRealTimeController.emitToAll 'forceDisconnect', "Sorry, we are performing a quick update to the editor and need to close it down. Please refresh the page to continue."
- res.send(200)
- closeEditor : (req, res)->
- logger.warn "closing editor"
- Settings.editorIsOpen = req.body.isOpen
- res.send(200)
- writeAllToMongo : (req, res)->
- logger.log "writing all docs to mongo"
- Settings.mongo.writeAll = true
- DocumentUpdaterHandler.flushAllDocsToMongo ()->
- logger.log "all docs have been saved to mongo"
- res.send()
- syncUserToSubscription: (req, res)->
- {user_id, subscription_id} = req.body
- RecurlyWrapper.getSubscription subscription_id, {}, (err, subscription)->
- User.findById user_id, (err, user)->
- SubscriptionHandler.syncSubscriptionToUser subscription, user._id, (err)->
- logger.log user_id:user_id, subscription_id:subscription_id, "linked account to subscription"
- res.send()
- flushProjectToTpds: (req, res)->
- projectEntityHandler.flushProjectToThirdPartyDataStore req.body.project_id, (err)->
- res.send 200
- pollDropboxForUser: (req, res)->
- user_id = req.body.user_id
- TpdsUpdateSender.pollDropboxForUser user_id, () ->
- res.send 200
-
- createMessage: (req, res, next) ->
- SystemMessageManager.createMessage req.body.content, (error) ->
- return next(error) if error?
- res.send 200
-
- clearMessages: (req, res, next) ->
- SystemMessageManager.clearMessages (error) ->
- return next(error) if error?
- res.send 200
|