Injector migration done

This commit is contained in:
Kasra Bigdeli
2018-11-20 23:20:39 -08:00
parent 7e7d0e7e11
commit 7c26bec4e8
16 changed files with 165 additions and 65 deletions
+27 -23
View File
@@ -1,16 +1,19 @@
const DataStoreProvider = require('../datastore/DataStoreProvider');
const Authenticator = require('../user/Authenticator');
const CaptainConstants = require('../utils/CaptainConstants');
const CaptainManager = require('../user/CaptainManager');
const ServiceManager = require('../user/ServiceManager');
const dockerApi = require('../docker/DockerApi').get();
const BaseApi = require('../api/BaseApi');
const Logger = require('../utils/Logger');
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const DataStoreProvider = require("../datastore/DataStoreProvider");
const Authenticator = require("../user/Authenticator");
const CaptainConstants = require("../utils/CaptainConstants");
const CaptainManager = require("../user/CaptainManager");
const ServiceManager = require("../user/ServiceManager");
const DockerApiProvider = require("../docker/DockerApi");
const BaseApi = require("../api/BaseApi");
const Logger = require("../utils/Logger");
const dockerApi = DockerApiProvider.get();
const serviceMangerCache = {};
/**
* Global dependency injection module
*/
module.exports.injectGlobal = function (req, res) {
module.exports.injectGlobal = function () {
return function (req, res, next) {
const locals = res.locals;
locals.initialized = CaptainManager.get().isInitialized();
@@ -30,8 +33,9 @@ module.exports.injectUser = function () {
}
const namespace = res.locals.namespace;
Authenticator.get(namespace)
.decodeAuthToken(req.header(CaptainConstants.header.auth))
.then(function (user) {
.decodeAuthToken(req.header(CaptainConstants.header.auth) || "")
.then(function (userDecoded) {
const user = userDecoded;
if (user) {
user.dataStore = DataStoreProvider.getDataStore(namespace);
if (!serviceMangerCache[user.namespace]) {
@@ -49,7 +53,7 @@ module.exports.injectUser = function () {
return;
}
Logger.e(error);
res.locals.user = null;
res.locals.user = undefined;
next();
});
};
@@ -59,28 +63,28 @@ module.exports.injectUser = function () {
*/
module.exports.injectUserForWebhook = function () {
return function (req, res, next) {
let token = req.query.token;
let namespace = req.query.namespace;
let app = null;
const token = req.query.token;
const namespace = req.query.namespace;
let app = undefined;
if (!token || !namespace) {
Logger.e('Trigger build is called with no token/namespace');
Logger.e("Trigger build is called with no token/namespace");
next();
return;
}
let dataStore = DataStoreProvider.getDataStore(namespace);
let decodedInfo = null;
const dataStore = DataStoreProvider.getDataStore(namespace);
let decodedInfo;
Authenticator.get(namespace).decodeAppPushWebhookToken(token)
.then(function (data) {
decodedInfo = data;
return dataStore.getAppsDataStore()
.getAppDefinition(data.appName);
.getAppDefinition(decodedInfo.appName);
})
.then(function (appFound) {
app = appFound;
if (app.appPushWebhook.tokenVersion !== decodedInfo.tokenVersion) {
throw new Error('Token Info do not match');
throw new Error("Token Info do not match");
}
let user = {
const user = {
namespace: namespace
};
user.dataStore = DataStoreProvider.getDataStore(namespace);
@@ -96,7 +100,7 @@ module.exports.injectUserForWebhook = function () {
})
.catch(function (error) {
Logger.e(error);
res.locals.app = null;
res.locals.app = undefined;
next();
});
};
@@ -119,7 +123,7 @@ module.exports.injectUserUsingCookieDataOnly = function () {
return;
}
Logger.e(error);
res.locals.user = null;
res.locals.user = undefined;
next();
});
};
+1 -1
View File
@@ -1 +1 @@
{"version":3,"file":"Injector.js","sourceRoot":"","sources":["../../src/injection/Injector.js"],"names":[],"mappings":"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"}
{"version":3,"file":"Injector.js","sourceRoot":"","sources":["../../src/injection/Injector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
//# sourceMappingURL=ICacheGeneric.js.map
@@ -0,0 +1 @@
{"version":3,"file":"ICacheGeneric.js","sourceRoot":"","sources":["../../src/models/ICacheGeneric.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
//# sourceMappingURL=InjectionInterfaces.js.map
@@ -0,0 +1 @@
{"version":3,"file":"InjectionInterfaces.js","sourceRoot":"","sources":["../../src/models/InjectionInterfaces.ts"],"names":[],"mappings":""}
File diff suppressed because one or more lines are too long
-1
View File
@@ -1,5 +1,4 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const CaptainConstants = require("../utils/CaptainConstants");
const Logger = require("../utils/Logger");
const fs = require("fs-extra");
File diff suppressed because one or more lines are too long
+56
View File
@@ -42,6 +42,15 @@
"resolved": "https://registry.npmjs.org/@types/bcryptjs/-/bcryptjs-2.4.2.tgz",
"integrity": "sha512-LiMQ6EOPob/4yUL66SZzu6Yh77cbzJFYll+ZfaPiPPFswtIlA/Fs1MzdKYA7JApHU49zQTbJGX3PDmCpIdDBRQ=="
},
"@types/body-parser": {
"version": "1.17.0",
"resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.17.0.tgz",
"integrity": "sha512-a2+YeUjPkztKJu5aIF2yArYFQQp8d51wZ7DavSHjFuY1mqVgidGyzEQ41JIVNy82fXj8yPgy2vJmfIywgESW6w==",
"requires": {
"@types/connect": "*",
"@types/node": "*"
}
},
"@types/caseless": {
"version": "0.12.1",
"resolved": "https://registry.npmjs.org/@types/caseless/-/caseless-0.12.1.tgz",
@@ -52,6 +61,14 @@
"resolved": "https://registry.npmjs.org/@types/configstore/-/configstore-2.1.1.tgz",
"integrity": "sha1-zR6FU2M60xhcPy8jns/10mQ+krY="
},
"@types/connect": {
"version": "3.4.32",
"resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.32.tgz",
"integrity": "sha512-4r8qa0quOvh7lGD0pre62CAb1oni1OO6ecJLGCezTmhQ8Fz50Arx9RUszryR8KlgK6avuSXvviL6yWyViQABOg==",
"requires": {
"@types/node": "*"
}
},
"@types/ejs": {
"version": "2.6.0",
"resolved": "https://registry.npmjs.org/@types/ejs/-/ejs-2.6.0.tgz",
@@ -62,6 +79,26 @@
"resolved": "http://registry.npmjs.org/@types/events/-/events-1.2.0.tgz",
"integrity": "sha512-KEIlhXnIutzKwRbQkGWb/I4HFqBuUykAdHgDED6xqwXJfONCjF5VoE0cXEiurh3XauygxzeDzgtXUqvLkxFzzA=="
},
"@types/express": {
"version": "4.16.0",
"resolved": "https://registry.npmjs.org/@types/express/-/express-4.16.0.tgz",
"integrity": "sha512-TtPEYumsmSTtTetAPXlJVf3kEqb6wZK0bZojpJQrnD/djV4q1oB6QQ8aKvKqwNPACoe02GNiy5zDzcYivR5Z2w==",
"requires": {
"@types/body-parser": "*",
"@types/express-serve-static-core": "*",
"@types/serve-static": "*"
}
},
"@types/express-serve-static-core": {
"version": "4.16.0",
"resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.16.0.tgz",
"integrity": "sha512-lTeoCu5NxJU4OD9moCgm0ESZzweAx0YqsAcab6OB0EB3+As1OaHtKnaGJvcngQxYsi9UNv0abn4/DRavrRxt4w==",
"requires": {
"@types/events": "*",
"@types/node": "*",
"@types/range-parser": "*"
}
},
"@types/form-data": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/@types/form-data/-/form-data-2.2.1.tgz",
@@ -86,11 +123,21 @@
"@types/node": "*"
}
},
"@types/mime": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/@types/mime/-/mime-2.0.0.tgz",
"integrity": "sha512-A2TAGbTFdBw9azHbpVd+/FkdW2T6msN1uct1O9bH3vTerEHKZhTXJUQXy+hNq1B0RagfU8U+KBdqiZpxjhOUQA=="
},
"@types/node": {
"version": "10.12.9",
"resolved": "https://registry.npmjs.org/@types/node/-/node-10.12.9.tgz",
"integrity": "sha512-eajkMXG812/w3w4a1OcBlaTwsFPO5F7fJ/amy+tieQxEMWBlbV1JGSjkFM+zkHNf81Cad+dfIRA+IBkvmvdAeA=="
},
"@types/range-parser": {
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.2.tgz",
"integrity": "sha512-HtKGu+qG1NPvYe1z7ezLsyIaXYyi8SoAVqWDZgDQ8dLrsZvSzUNCwZyfX33uhWxL/SU0ZDQZ3nwZ0nimt507Kw=="
},
"@types/request": {
"version": "2.48.1",
"resolved": "https://registry.npmjs.org/@types/request/-/request-2.48.1.tgz",
@@ -107,6 +154,15 @@
"resolved": "https://registry.npmjs.org/@types/require-from-string/-/require-from-string-1.2.0.tgz",
"integrity": "sha512-5vE9WoOOC9/DoD3Zj53UISpM+5tSvh8k0mL4fe2zFI6vO715/W4IQ3EdVUrWVMrFi1/NZhyMvm2iKsDFkEGddQ=="
},
"@types/serve-static": {
"version": "1.13.2",
"resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.2.tgz",
"integrity": "sha512-/BZ4QRLpH/bNYgZgwhKEh+5AsboDBcUdlBYgzoLX0fpj3Y2gp6EApyOlM3bK53wQS/OE1SrdSYBAbux2D1528Q==",
"requires": {
"@types/express-serve-static-core": "*",
"@types/mime": "*"
}
},
"@types/ssh2": {
"version": "0.5.36",
"resolved": "https://registry.npmjs.org/@types/ssh2/-/ssh2-0.5.36.tgz",
+1
View File
@@ -11,6 +11,7 @@
"@types/bcryptjs": "^2.4.2",
"@types/configstore": "^2.1.1",
"@types/ejs": "^2.6.0",
"@types/express": "^4.16.0",
"@types/fs-extra": "^5.0.4",
"@types/jsonwebtoken": "^8.3.0",
"@types/request": "^2.48.1",
@@ -1,20 +1,25 @@
const DataStoreProvider = require('../datastore/DataStoreProvider');
const Authenticator = require('../user/Authenticator');
const CaptainConstants = require('../utils/CaptainConstants');
const CaptainManager = require('../user/CaptainManager');
const ServiceManager = require('../user/ServiceManager');
const dockerApi = require('../docker/DockerApi').get();
const BaseApi = require('../api/BaseApi');
const Logger = require('../utils/Logger');
import DataStoreProvider = require("../datastore/DataStoreProvider");
import Authenticator = require("../user/Authenticator");
import CaptainConstants = require("../utils/CaptainConstants");
import CaptainManager = require("../user/CaptainManager");
import ServiceManager = require("../user/ServiceManager");
import DockerApiProvider = require("../docker/DockerApi");
import BaseApi = require("../api/BaseApi");
import UserModel = require("../models/InjectionInterfaces");
import Logger = require("../utils/Logger");
import { NextFunction } from "connect";
import { Response, Request } from "express";
import requireFromString = require("require-from-string");
const dockerApi = DockerApiProvider.get();
const serviceMangerCache = {};
const serviceMangerCache = {} as ICacheGeneric<ServiceManager>;
/**
* Global dependency injection module
*/
module.exports.injectGlobal = function (req, res) {
module.exports.injectGlobal = function () {
return function (req, res, next) {
return function (req: Request, res: Response, next: NextFunction) {
const locals = res.locals;
@@ -23,7 +28,7 @@ module.exports.injectGlobal = function (req, res) {
locals.forceSsl = CaptainManager.get().getForceSslValue();
next();
}
};
};
@@ -32,7 +37,7 @@ module.exports.injectGlobal = function (req, res) {
*/
module.exports.injectUser = function () {
return function (req, res, next) {
return function (req: Request, res: Response, next: NextFunction) {
if (res.locals.user) {
next();
@@ -42,8 +47,11 @@ module.exports.injectUser = function () {
const namespace = res.locals.namespace;
Authenticator.get(namespace)
.decodeAuthToken(req.header(CaptainConstants.header.auth))
.then(function (user) {
.decodeAuthToken(req.header(CaptainConstants.header.auth) || "")
.then(function (userDecoded: UserModel.UserJwt) {
const user = userDecoded as UserModel.UserInjected ;
if (user) {
user.dataStore = DataStoreProvider.getDataStore(namespace);
if (!serviceMangerCache[user.namespace]) {
@@ -58,17 +66,17 @@ module.exports.injectUser = function () {
next();
})
.catch(function (error) {
.catch(function (error: any) {
if (error && error.captainErrorType) {
res.send(new BaseApi(error.captainErrorType, error.apiMessage));
return;
}
Logger.e(error);
res.locals.user = null;
res.locals.user = undefined;
next();
});
}
};
};
/**
@@ -76,29 +84,29 @@ module.exports.injectUser = function () {
*/
module.exports.injectUserForWebhook = function () {
return function (req, res, next) {
return function (req: Request, res: Response, next: NextFunction) {
let token = req.query.token;
let namespace = req.query.namespace;
let app = null;
const token = req.query.token;
const namespace = req.query.namespace;
let app = undefined;
if (!token || !namespace) {
Logger.e('Trigger build is called with no token/namespace');
Logger.e("Trigger build is called with no token/namespace");
next();
return;
}
let dataStore = DataStoreProvider.getDataStore(namespace);
const dataStore = DataStoreProvider.getDataStore(namespace);
let decodedInfo = null;
let decodedInfo: UserModel.IAppWebHookToken;
Authenticator.get(namespace).decodeAppPushWebhookToken(token)
.then(function (data) {
decodedInfo = data;
decodedInfo = data as UserModel.IAppWebHookToken;
return dataStore.getAppsDataStore()
.getAppDefinition(data.appName)
.getAppDefinition(decodedInfo.appName);
})
.then(function (appFound) {
@@ -106,12 +114,13 @@ module.exports.injectUserForWebhook = function () {
app = appFound;
if (app.appPushWebhook.tokenVersion !== decodedInfo.tokenVersion) {
throw new Error('Token Info do not match');
throw new Error("Token Info do not match");
}
let user = {
const user = {
namespace: namespace
};
} as UserModel.UserInjected;
user.dataStore = DataStoreProvider.getDataStore(namespace);
if (!serviceMangerCache[user.namespace]) {
serviceMangerCache[user.namespace] = new ServiceManager(user, dockerApi, CaptainManager.get().getLoadBalanceManager());
@@ -128,11 +137,11 @@ module.exports.injectUserForWebhook = function () {
})
.catch(function (error) {
Logger.e(error);
res.locals.app = null;
res.locals.app = undefined;
next();
});
}
};
};
/**
@@ -141,7 +150,7 @@ module.exports.injectUserForWebhook = function () {
*/
module.exports.injectUserUsingCookieDataOnly = function () {
return function (req, res, next) {
return function (req: Request, res: Response, next: NextFunction) {
Authenticator.get(CaptainConstants.rootNameSpace)
.decodeAuthTokenFromCookies(req.cookies[CaptainConstants.header.cookieAuth])
@@ -157,8 +166,8 @@ module.exports.injectUserUsingCookieDataOnly = function () {
return;
}
Logger.e(error);
res.locals.user = null;
res.locals.user = undefined;
next();
});
}
};
};
+3
View File
@@ -0,0 +1,3 @@
interface ICacheGeneric< T > {
[id: string]: T;
}
@@ -0,0 +1,21 @@
import DataStore = require("../datastore/DataStoreImpl");
import ServiceManager = require("../user/ServiceManager");
export interface UserJwt {
namespace: string;
tokenVersion: string|undefined;
}
export interface UserInjected extends UserJwt {
dataStore: DataStore;
serviceManager: ServiceManager;
initialized: boolean;
}
export interface IAppWebHookToken {
appName: string;
tokenVersion: string;
}
+3 -2
View File
@@ -9,6 +9,7 @@ import CaptainManager = require("./CaptainManager");
import CaptainConstants = require("../utils/CaptainConstants");
import Logger = require("../utils/Logger");
import DataStoreProvider = require("../datastore/DataStoreProvider");
import { UserJwt } from "../models/InjectionInterfaces";
const captainDefaultPassword = EnvVar.DEFAULT_PASSWORD || "captain42";
@@ -103,7 +104,7 @@ class Authenticator {
);
}
const userObj = {
const userObj: UserJwt = {
namespace: self.namespace,
tokenVersion: self.tokenVersion,
};
@@ -122,7 +123,7 @@ class Authenticator {
return this.decodeAuthToken(token, COOKIE_AUTH_SUFFIX);
}
decodeAuthToken(token: string, keySuffix: string) {
decodeAuthToken(token: string, keySuffix?: string) {
const self = this;
return new Promise(function(resolve, reject) {
+1 -1
View File
@@ -1015,4 +1015,4 @@ class ServiceManager {
}
}
module.exports = ServiceManager;
export = ServiceManager;