| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- /* eslint-disable
- camelcase,
- handle-callback-err,
- no-return-assign,
- */
- // TODO: This file was created by bulk-decaffeinate.
- // Fix any style issues and re-enable lint.
- /*
- * decaffeinate suggestions:
- * DS102: Remove unnecessary code created because of implicit returns
- * DS207: Consider shorter variations of null checks
- * Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md
- */
- let Client;
- const {
- XMLHttpRequest
- } = require("../../libs/XMLHttpRequest");
- const io = require("socket.io-client");
- const async = require("async");
- const request = require("request");
- const Settings = require("settings-sharelatex");
- const redis = require("redis-sharelatex");
- const rclient = redis.createClient(Settings.redis.websessions);
- const uid = require('uid-safe').sync;
- const signature = require("cookie-signature");
- io.util.request = function() {
- const xhr = new XMLHttpRequest();
- const _open = xhr.open;
- xhr.open = function() {
- _open.apply(xhr, arguments);
- if (Client.cookie != null) {
- return xhr.setRequestHeader("Cookie", Client.cookie);
- }
- };
- return xhr;
- };
- module.exports = (Client = {
- cookie: null,
- setSession(session, callback) {
- if (callback == null) { callback = function(error) {}; }
- const sessionId = uid(24);
- session.cookie = {};
- return rclient.set("sess:" + sessionId, JSON.stringify(session), (error) => {
- if (error != null) { return callback(error); }
- const secret = Settings.security.sessionSecret;
- const cookieKey = 's:' + signature.sign(sessionId, secret);
- Client.cookie = `${Settings.cookieName}=${cookieKey}`;
- return callback();
- });
- },
-
- unsetSession(callback) {
- if (callback == null) { callback = function(error) {}; }
- Client.cookie = null;
- return callback();
- },
-
- connect(cookie) {
- const client = io.connect("http://localhost:3026", {'force new connection': true});
- client.on('connectionAccepted', (_, publicId) => client.publicId = publicId);
- return client;
- },
-
- getConnectedClients(callback) {
- if (callback == null) { callback = function(error, clients) {}; }
- return request.get({
- url: "http://localhost:3026/clients",
- json: true
- }, (error, response, data) => callback(error, data));
- },
-
- getConnectedClient(client_id, callback) {
- if (callback == null) { callback = function(error, clients) {}; }
- return request.get({
- url: `http://localhost:3026/clients/${client_id}`,
- json: true
- }, (error, response, data) => callback(error, data));
- },
- disconnectClient(client_id, callback) {
- request.post({
- url: `http://localhost:3026/client/${client_id}/disconnect`,
- auth: {
- user: Settings.internal.realTime.user,
- pass: Settings.internal.realTime.pass
- }
- }, (error, response, data) => callback(error, data));
- return null;
- },
- disconnectAllClients(callback) {
- return Client.getConnectedClients((error, clients) => async.each(clients, (clientView, cb) => Client.disconnectClient(clientView.client_id, cb)
- , callback));
- }
- });
|