From aecba2006f837ebc054f983add9e9f685150929c Mon Sep 17 00:00:00 2001 From: Ryan Birmingham Date: Mon, 30 Mar 2020 20:32:51 -0400 Subject: [PATCH 01/10] talk about login --- README.md | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 6dfef799..7119a7b1 100644 --- a/README.md +++ b/README.md @@ -39,9 +39,23 @@ Security and Routes - This is handled by the security container. By default rout Image Volume - This is, by default, the images directory in this directory. If this is changed, please make the same change across all impacted services. +## Securing caMicroscope + +### Getting an Identity Provider and Setting up Login + +When selecting, an identity provider, note that we expect it to provide a JWT, and to have a certificate/public key/secret which can be used to verify such JWTs. + +The example given in the Distro within config/login.html is set up to use google as an identity provider. See [this guide from google](https://developers.google.com/identity/sign-in/web/sign-in) to set up your own project, which is necessary to enable login on your instance. + +### Adding Users to Database + +Add users as in ./config/add\_mongo\_users.js. Attributes can be added to deny access to routes (e.g. allow only some users to post and delete) + +The name field is the email field (or failing that, sub field) in that priority from the identity provider. + ## PathDB -To use PathDB, use quip-pathdb.yml instead of caMicroscope.yml. This deployment does not include the auth and loader as separate services, as this PathDB provides that functionality. +To use PathDB, use quip-pathdb.yml instead of caMicroscope.yml. This deployment does not include the auth and loader as separate services, as this PathDB implements that functionality itself. Running QuIP with PathDB (https://github.com/SBU-BMI/PathDB): From 1a7cfe2763a2260bb0e14984fcaa0f8fa2da1c67 Mon Sep 17 00:00:00 2001 From: Ryan Birmingham Date: Tue, 31 Mar 2020 12:35:49 -0400 Subject: [PATCH 02/10] clean up for exp --- config/add_users.js | 10 ++++++++++ config/mongo_idx.js | 1 + config/mongo_idx_pri.js | 1 - config/run_idx.sh | 2 +- expiremental.yml | 2 +- jwt_keys/make_keys.sh | 0 keys/make_keys.sh | 0 7 files changed, 13 insertions(+), 3 deletions(-) create mode 100644 config/add_users.js delete mode 100644 config/mongo_idx_pri.js mode change 100644 => 100755 jwt_keys/make_keys.sh mode change 100644 => 100755 keys/make_keys.sh diff --git a/config/add_users.js b/config/add_users.js new file mode 100644 index 00000000..69b6607a --- /dev/null +++ b/config/add_users.js @@ -0,0 +1,10 @@ +// For use with caracal, this is really just a demo. + +// admin example, can see all (**) filters +// editor example, can see Public and Private +// viewer example +let randomPerson = {'email':'viewer@camicroscope.org', 'userFilter':["Public"], 'userType':'Null'} +// users not added would have been represented by the below +let randomPerson = {'email':'random@me.com', 'userFilter':["Public"], 'userType':'Null'} + +db.user.insertMany(users) diff --git a/config/mongo_idx.js b/config/mongo_idx.js index a728c3b5..1b8ad988 100644 --- a/config/mongo_idx.js +++ b/config/mongo_idx.js @@ -1,4 +1,5 @@ db.authorization.createIndex( { "name": 1 }, { unique: true } ) +db.user.createIndex( { "email": 1 }, { unique: true } ) db.mark.createIndex({"provenance.image.slide": 1, "provenance.analysis.execution_id": 1, "footprint":1, "x":1, "y":1}) db.mark.createIndex({"provenance.image.slide":1,"provenance.analysis.execution_id":1,"provenance.analysis": 1}) db.mark.createIndex({"provenance.image.slide":1,"provenance.analysis": 1}) diff --git a/config/mongo_idx_pri.js b/config/mongo_idx_pri.js deleted file mode 100644 index 2617db89..00000000 --- a/config/mongo_idx_pri.js +++ /dev/null @@ -1 +0,0 @@ -db.slide.createIndex({'study':1, 'specimen': 1, 'name': 1, 'collection': 1}) diff --git a/config/run_idx.sh b/config/run_idx.sh index 25b43aab..d6c8ba10 100755 --- a/config/run_idx.sh +++ b/config/run_idx.sh @@ -4,9 +4,9 @@ do done mongo --host ca-mongo camic /config/mongo_idx.js -mongo --host ca-mongo camic-pri /config/mongo_idx_pri.js echo "indexes created" mongo --host ca-mongo camic /config/add_mongo_users.js +mongo --host ca-mongo camic /config/add_users.js echo "users created" mongo --host ca-mongo camic /config/default_data.js echo "defaults added" diff --git a/expiremental.yml b/expiremental.yml index a9474030..e96627d9 100644 --- a/expiremental.yml +++ b/expiremental.yml @@ -23,7 +23,7 @@ services: - mongo back: build: - context: "https://github.com/camicroscope/caboodle.git" + context: "https://github.com/camicroscope/caracal.git#develop" args: viewer: "exp" depends_on: diff --git a/jwt_keys/make_keys.sh b/jwt_keys/make_keys.sh old mode 100644 new mode 100755 diff --git a/keys/make_keys.sh b/keys/make_keys.sh old mode 100644 new mode 100755 From ed2328ec0ef0ad32448faa65ca0ee53ffacc79e8 Mon Sep 17 00:00:00 2001 From: Ryan Birmingham Date: Tue, 31 Mar 2020 14:04:01 -0400 Subject: [PATCH 03/10] use e viewer branch for exp --- expiremental.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/expiremental.yml b/expiremental.yml index e96627d9..d7ccc20b 100644 --- a/expiremental.yml +++ b/expiremental.yml @@ -25,7 +25,7 @@ services: build: context: "https://github.com/camicroscope/caracal.git#develop" args: - viewer: "exp" + viewer: "e" depends_on: - "mongo" ports: From 4dc7a955551343d364b6e782adc4ca7e0d861949 Mon Sep 17 00:00:00 2001 From: Ryan Birmingham Date: Tue, 31 Mar 2020 18:28:29 -0400 Subject: [PATCH 04/10] prepare for 3.7 --- Deps/Bindaas/Dockerfile | 34 - Deps/Bindaas/bindaas.config.json | 13 - Deps/Bindaas/run.sh | 5 - Deps/auth_service/.gitignore | 1 - Deps/auth_service/Dockerfile | 10 - Deps/auth_service/about.md | 1 - Deps/auth_service/app.js | 165 -- Deps/auth_service/package-lock.json | 1063 ------------ Deps/auth_service/package.json | 22 - Deps/auth_service/readme.md | 10 - README.md | 14 +- auth0_login.html | 59 - caMicroscope.yml | 65 +- config/add_mongo_users.js | 28 - config/add_users.js | 9 +- config/bindaas.config.json | 13 - config/bindaas_projects/caMicroscope.project | 1431 ----------------- .../caMicroscopePrivate.project | 1283 --------------- config/non-pathdb-routes.json | 98 -- config/routes.json | 111 -- develop.yml | 53 +- dh_caMicroscope.yml | 44 +- expiremental.yml | 51 - test/test_add_slide.js | 2 +- test/test_loader.js | 2 +- update_dockerhub.sh | 8 +- user_docs.md | 33 - 27 files changed, 58 insertions(+), 4570 deletions(-) delete mode 100644 Deps/Bindaas/Dockerfile delete mode 100644 Deps/Bindaas/bindaas.config.json delete mode 100644 Deps/Bindaas/run.sh delete mode 100644 Deps/auth_service/.gitignore delete mode 100644 Deps/auth_service/Dockerfile delete mode 100644 Deps/auth_service/about.md delete mode 100644 Deps/auth_service/app.js delete mode 100644 Deps/auth_service/package-lock.json delete mode 100644 Deps/auth_service/package.json delete mode 100644 Deps/auth_service/readme.md delete mode 100644 auth0_login.html delete mode 100644 config/add_mongo_users.js delete mode 100644 config/bindaas.config.json delete mode 100644 config/bindaas_projects/caMicroscope.project delete mode 100644 config/bindaas_projects/caMicroscopePrivate.project delete mode 100644 config/non-pathdb-routes.json delete mode 100644 config/routes.json delete mode 100644 expiremental.yml delete mode 100644 user_docs.md diff --git a/Deps/Bindaas/Dockerfile b/Deps/Bindaas/Dockerfile deleted file mode 100644 index f8b93918..00000000 --- a/Deps/Bindaas/Dockerfile +++ /dev/null @@ -1,34 +0,0 @@ -FROM alpine:3.9 -LABEL maintainer="ashish@dbmi.emory.edu" - -### update and include Shadow to manage users and groups -RUN apk update -RUN apk --no-cache add wget -RUN apk --no-cache add shadow - -# Add group Bindaas and user Bindaas -RUN groupadd -g 9999 bindaas && \ - useradd -r -u 9999 -g bindaas bindaas - -WORKDIR /root/src - -RUN apk --no-cache add openjdk8-jre -WORKDIR /root/bindaas/ -RUN wget https://github.com/sharmalab/bindaas/releases/download/v3.3.8/bindaas-dist-3.3.8.tar.gz -RUN tar -xvf bindaas-dist-3.3.8.tar.gz && rm bindaas-dist-3.3.8.tar.gz -COPY bindaas.config.json /root/bindaas/bin/ -COPY run.sh /root/bindaas/bin/ - -# Add java to path -ENV PATH /root/src/jre1.8.0_171/bin:$PATH - -RUN chown -R bindaas:bindaas /root/ - -WORKDIR /root/bindaas/bin - -USER bindaas - -EXPOSE 9099 -EXPOSE 8080 - -CMD ["sh", "run.sh"] diff --git a/Deps/Bindaas/bindaas.config.json b/Deps/Bindaas/bindaas.config.json deleted file mode 100644 index 665dc086..00000000 --- a/Deps/Bindaas/bindaas.config.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "host": "0.0.0.0", - "port": 9099, - "protocol": "http", - "enableAuthentication": false, - "enableAuthorization": false, - "enableAudit": true, - "authenticationProviderClass": "edu.emory.cci.bindaas.security.impl.DBAuthenticationProvider", - "authorizationProviderClass": "edu.emory.cci.bindaas.security_dashboard.service.AuthorizationProviderImpl", - "auditProviderClass": "edu.emory.cci.bindaas.security.impl.DBAuditProvider", - "proxyUrl": "http://localhost:9099", - "instanceName": "bindaas" -} diff --git a/Deps/Bindaas/run.sh b/Deps/Bindaas/run.sh deleted file mode 100644 index ed8ba61a..00000000 --- a/Deps/Bindaas/run.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/bash - -java -jar -Dpid=BINDAAS_INSTANCE org.eclipse.osgi_3.10.100.v20150529-1857.jar - -while true; do sleep 1000; done diff --git a/Deps/auth_service/.gitignore b/Deps/auth_service/.gitignore deleted file mode 100644 index c2658d7d..00000000 --- a/Deps/auth_service/.gitignore +++ /dev/null @@ -1 +0,0 @@ -node_modules/ diff --git a/Deps/auth_service/Dockerfile b/Deps/auth_service/Dockerfile deleted file mode 100644 index d4fabe64..00000000 --- a/Deps/auth_service/Dockerfile +++ /dev/null @@ -1,10 +0,0 @@ -FROM node:8-alpine -RUN mkdir /root/src -COPY . /root/src -WORKDIR /root/src - -RUN npm config set unsafe-perm true -RUN npm install -RUN npm install -g forever -EXPOSE 8010 -CMD forever app.js diff --git a/Deps/auth_service/about.md b/Deps/auth_service/about.md deleted file mode 100644 index a0048a05..00000000 --- a/Deps/auth_service/about.md +++ /dev/null @@ -1 +0,0 @@ -This is a pre-pathdb service to answer auth questions. diff --git a/Deps/auth_service/app.js b/Deps/auth_service/app.js deleted file mode 100644 index c733e8c2..00000000 --- a/Deps/auth_service/app.js +++ /dev/null @@ -1,165 +0,0 @@ -const express = require('express') -const rp = require('request-promise'); -const app = express(); -const fs = require("fs"); -var atob = require('atob'); -var jwt = require('jsonwebtoken'); -var jwkToPem = require('jwk-to-pem'); -var cookieParser = require('cookie-parser'); -const jwksClient = require('jwks-rsa'); -var PORT = process.env.PORT || 8010 -var BASE_USER_URL = "http://ca-data:9099/services/caMicroscope/Authorization/query/getAuth?name=" -var SECRET = process.env.SECRET -var EXPIRY = process.env.EXPIRY || "1d" -var JWK_URL = process.env.JWKS -var KEY_FIELD = process.env.KEY_FIELD || "accessCollection" -var AUD = process.env.AUD || false -var ISS = process.env.ISS || false - -var jwks_client = false -console.log(JWK_URL) -if (JWK_URL){ - jwks_client = jwksClient({ - jwksUri: JWK_URL -}); -} - -// get cookies -app.use(cookieParser()) - -try { - let prikey_path = "/keys/key" - if(fs.existsSync(prikey_path)){ - var PRIKEY = fs.readFileSync(prikey_path, 'utf8') - } -} catch (err){ - console.error(err) -} - -try { - let pubkey_path = "/keys/key.pub" - if(fs.existsSync(pubkey_path)){ - var PUBKEY = fs.readFileSync(pubkey_path, 'utf8') - } -} catch (err){ - console.error(err) -} - -try { - let cert_path = "/keys/certificate" - if(fs.existsSync(cert_path)){ - var SECRET = fs.readFileSync(cert_path, 'utf8') - } -} catch (err){ - console.error(err) -} -// jwks -try { - let jwk_path = "/keys/jwk.json" - if(fs.existsSync(jwk_path)){ - var SECRET = jwkToPem(JSON.parse(fs.readFileSync(jwk_path, 'utf8'))) - } -} catch (err){ - console.error(err) -} - -const getToken = function(req) { - if (req.headers.authorization && req.headers.authorization.split(' ')[0] === 'Bearer') { // Authorization: Bearer g1jipjgi1ifjioj - // Handle token presented as a Bearer token in the Authorization header - return req.headers.authorization.split(' ')[1]; - } else if (req.query && req.query.token) { - // Handle token presented as URI param - return req.query.token; - } else if (req.cookies && req.cookies.token) { - // Handle token presented as a cookie parameter - return req.cookies.token; - } -} - -function getJwtKid(token) { - var base64Url = token.split('.')[0]; - var base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/'); - var jsonPayload = decodeURIComponent(atob(base64).split('').map(function(c) { - return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2); - }).join('')); - - return JSON.parse(jsonPayload).kid; -}; - -function jwk_token_trade(check_key, sign_key){ - return function(req,res){ - var THISTOKEN = getToken(req) - if(!jwks_client){ - console.log("something wrong...") - token_trade(check_key, sign_key)(req,res) - } - jwks_client.getSigningKey(getJwtKid(THISTOKEN), (err,key)=>{ - console.log(key) - let use_key = key.publicKey || key.rsaPublicKey - if(err){ - res.status(401).send(err) - } else { - token_trade(use_key, sign_key)(req,res) - } - }) - } -} - - -// curry these calls -function token_trade(check_key, sign_key){ - return function(req,res){ - var THISTOKEN = getToken(req) - let jwt_options = {} - if (AUD){ - jwt_options.audience = AUD - } - if (ISS){ - jwt_options.issuer = ISS - } - jwt.verify(THISTOKEN, check_key, jwt_options, function(err, token){ - if (err){ - res.status(401).send(err) - } else { - if (!(token && (token.email || token.sub))){ - // jwt doesn't say who you are, so bye - res.send(401).send({err:"email and sub are unset from source token"}) - } else { - var name = token.email || token.sub - user_detail = rp({ - uri: BASE_USER_URL + name, - json: true - }) - user_detail.then(x=>{ - console.log(x) - if (x.length >= 1 && x[0].hasOwnProperty('name')){ - let attrs = x[0].attrs || [] - data = { - 'sub':name, - 'name':x[0].name, - 'attrs':attrs, - } - data[KEY_FIELD] = x[0][KEY_FIELD] || [] - // sign using the mounted key - var token = jwt.sign(data, sign_key, {algorithm:"RS256", expiresIn: EXPIRY}) - res.send({'token':token}) - } else { - res.status(401).send({"err":"User Unauthorized"}) - } - }) - user_detail.catch(e=>{ - console.log(e) - res.status(401).send(e) - }) - } - } - }) - } -} - -// convert or "check" a token -app.get("/check", jwk_token_trade(SECRET, PRIKEY)) -// renew a token -app.get("/renew", token_trade(PUBKEY, PRIKEY)) - -app.listen(PORT, () => console.log('listening on ' + PORT)) diff --git a/Deps/auth_service/package-lock.json b/Deps/auth_service/package-lock.json deleted file mode 100644 index a6858630..00000000 --- a/Deps/auth_service/package-lock.json +++ /dev/null @@ -1,1063 +0,0 @@ -{ - "name": "auth_service", - "version": "1.0.0", - "lockfileVersion": 1, - "requires": true, - "dependencies": { - "@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/connect": { - "version": "3.4.32", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.32.tgz", - "integrity": "sha512-4r8qa0quOvh7lGD0pre62CAb1oni1OO6ecJLGCezTmhQ8Fz50Arx9RUszryR8KlgK6avuSXvviL6yWyViQABOg==", - "requires": { - "@types/node": "*" - } - }, - "@types/express": { - "version": "4.17.0", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.0.tgz", - "integrity": "sha512-CjaMu57cjgjuZbh9DpkloeGxV45CnMGlVd+XpG7Gm9QgVrd7KFq+X4HY0vM+2v0bczS48Wg7bvnMY5TN+Xmcfw==", - "requires": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "*", - "@types/serve-static": "*" - } - }, - "@types/express-jwt": { - "version": "0.0.42", - "resolved": "https://registry.npmjs.org/@types/express-jwt/-/express-jwt-0.0.42.tgz", - "integrity": "sha512-WszgUddvM1t5dPpJ3LhWNH8kfNN8GPIBrAGxgIYXVCEGx6Bx4A036aAuf/r5WH9DIEdlmp7gHOYvSM6U87B0ag==", - "requires": { - "@types/express": "*", - "@types/express-unless": "*" - } - }, - "@types/express-serve-static-core": { - "version": "4.16.7", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.16.7.tgz", - "integrity": "sha512-847KvL8Q1y3TtFLRTXcVakErLJQgdpFSaq+k043xefz9raEf0C7HalpSY7OW5PyjCnY8P7bPW5t/Co9qqp+USg==", - "requires": { - "@types/node": "*", - "@types/range-parser": "*" - } - }, - "@types/express-unless": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/@types/express-unless/-/express-unless-0.5.1.tgz", - "integrity": "sha512-5fuvg7C69lemNgl0+v+CUxDYWVPSfXHhJPst4yTLcqi4zKJpORCxnDrnnilk3k0DTq/WrAUdvXFs01+vUqUZHw==", - "requires": { - "@types/express": "*" - } - }, - "@types/mime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-2.0.1.tgz", - "integrity": "sha512-FwI9gX75FgVBJ7ywgnq/P7tw+/o1GUbtP0KzbtusLigAOgIgNISRK0ZPl4qertvXSIE8YbsVJueQ90cDt9YYyw==" - }, - "@types/node": { - "version": "12.7.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.7.1.tgz", - "integrity": "sha512-aK9jxMypeSrhiYofWWBf/T7O+KwaiAHzM4sveCdWPn71lzUSMimRnKzhXDKfKwV1kWoBo2P1aGgaIYGLf9/ljw==" - }, - "@types/range-parser": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.3.tgz", - "integrity": "sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA==" - }, - "@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": "*" - } - }, - "accepts": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", - "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", - "requires": { - "mime-types": "~2.1.24", - "negotiator": "0.6.2" - } - }, - "ajv": { - "version": "6.10.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", - "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", - "requires": { - "fast-deep-equal": "^2.0.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" - }, - "asn1": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", - "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", - "requires": { - "safer-buffer": "~2.1.0" - } - }, - "asn1.js": { - "version": "4.10.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", - "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", - "requires": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" - }, - "atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==" - }, - "aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" - }, - "aws4": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", - "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==" - }, - "bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", - "requires": { - "tweetnacl": "^0.14.3" - } - }, - "bluebird": { - "version": "3.5.5", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.5.tgz", - "integrity": "sha512-5am6HnnfN+urzt4yfg7IgTbotDjIT/u8AJpEt0sIU9FtXfVeezXAPKswrG+xKUCOYAINpSdgZVDU6QFh+cuH3w==" - }, - "bn.js": { - "version": "4.11.8", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", - "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==" - }, - "body-parser": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", - "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", - "requires": { - "bytes": "3.1.0", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "~1.1.2", - "http-errors": "1.7.2", - "iconv-lite": "0.4.24", - "on-finished": "~2.3.0", - "qs": "6.7.0", - "raw-body": "2.4.0", - "type-is": "~1.6.17" - } - }, - "brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=" - }, - "buffer-equal-constant-time": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", - "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=" - }, - "bytes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" - }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" - }, - "combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "requires": { - "delayed-stream": "~1.0.0" - } - }, - "content-disposition": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", - "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", - "requires": { - "safe-buffer": "5.1.2" - } - }, - "content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" - }, - "cookie": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", - "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=" - }, - "cookie-parser": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.4.4.tgz", - "integrity": "sha512-lo13tqF3JEtFO7FyA49CqbhaFkskRJ0u/UAiINgrIXeRCY41c88/zxtrECl8AKH3B0hj9q10+h3Kt8I7KlW4tw==", - "requires": { - "cookie": "0.3.1", - "cookie-signature": "1.0.6" - } - }, - "cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" - }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" - }, - "dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", - "requires": { - "assert-plus": "^1.0.0" - } - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" - }, - "depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" - }, - "destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" - }, - "ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", - "requires": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, - "ecdsa-sig-formatter": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", - "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" - }, - "elliptic": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.0.tgz", - "integrity": "sha512-eFOJTMyCYb7xtE/caJ6JJu+bhi67WCYNbkGSknu20pmM8Ke/bqOfdnZWxyoGN26JgfxTbXrsCkEw4KheCT/KGg==", - "requires": { - "bn.js": "^4.4.0", - "brorand": "^1.0.1", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.0" - } - }, - "encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" - }, - "escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" - }, - "etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" - }, - "express": { - "version": "4.17.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", - "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", - "requires": { - "accepts": "~1.3.7", - "array-flatten": "1.1.1", - "body-parser": "1.19.0", - "content-disposition": "0.5.3", - "content-type": "~1.0.4", - "cookie": "0.4.0", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "~1.1.2", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "~1.1.2", - "fresh": "0.5.2", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.5", - "qs": "6.7.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.1.2", - "send": "0.17.1", - "serve-static": "1.14.1", - "setprototypeof": "1.1.1", - "statuses": "~1.5.0", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "dependencies": { - "cookie": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", - "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==" - } - } - }, - "express-promise": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/express-promise/-/express-promise-0.4.0.tgz", - "integrity": "sha1-BDw8t3iND/KZsGUG30RXIv360eQ=" - }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" - }, - "extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" - }, - "fast-deep-equal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=" - }, - "fast-json-stable-stringify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" - }, - "finalhandler": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", - "requires": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "statuses": "~1.5.0", - "unpipe": "~1.0.0" - } - }, - "forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" - }, - "form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - } - }, - "forwarded": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", - "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" - }, - "fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" - }, - "getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", - "requires": { - "assert-plus": "^1.0.0" - } - }, - "har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" - }, - "har-validator": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", - "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", - "requires": { - "ajv": "^6.5.5", - "har-schema": "^2.0.0" - } - }, - "hash.js": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", - "requires": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - }, - "hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", - "requires": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "http-errors": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", - "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.1", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.0" - } - }, - "http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", - "requires": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - } - }, - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" - }, - "ipaddr.js": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.0.tgz", - "integrity": "sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA==" - }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" - }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" - }, - "jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" - }, - "json-schema": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" - }, - "json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" - }, - "jsonwebtoken": { - "version": "8.5.1", - "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz", - "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==", - "requires": { - "jws": "^3.2.2", - "lodash.includes": "^4.3.0", - "lodash.isboolean": "^3.0.3", - "lodash.isinteger": "^4.0.4", - "lodash.isnumber": "^3.0.3", - "lodash.isplainobject": "^4.0.6", - "lodash.isstring": "^4.0.1", - "lodash.once": "^4.0.0", - "ms": "^2.1.1", - "semver": "^5.6.0" - }, - "dependencies": { - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - } - } - }, - "jsprim": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", - "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", - "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.2.3", - "verror": "1.10.0" - } - }, - "jwa": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", - "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", - "requires": { - "buffer-equal-constant-time": "1.0.1", - "ecdsa-sig-formatter": "1.0.11", - "safe-buffer": "^5.0.1" - } - }, - "jwk-to-pem": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/jwk-to-pem/-/jwk-to-pem-2.0.1.tgz", - "integrity": "sha512-KKu0WuDDjqw2FlRFp9/vk9TMO/KvgpZVKzdhhYcNyy5OwE8dw9lOK5OQTQHIJ7m+HioI/4P44sAtVuDrQ8KQfw==", - "requires": { - "asn1.js": "^4.5.2", - "elliptic": "^6.2.3", - "safe-buffer": "^5.0.1" - } - }, - "jwks-rsa": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/jwks-rsa/-/jwks-rsa-1.6.0.tgz", - "integrity": "sha512-gLhpd7Ka7Jy8ofm9OVj0PFPtSdx3+W2dncF3UCA1wDTAbvfiB1GhHbbyQlz8bqLF5+rge7pgD/DALRfgZi8Fgg==", - "requires": { - "@types/express-jwt": "0.0.42", - "debug": "^2.6.9", - "jsonwebtoken": "^8.5.1", - "limiter": "^1.1.4", - "lru-memoizer": "^1.12.0", - "ms": "^2.1.1", - "request": "^2.88.0" - }, - "dependencies": { - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - } - } - }, - "jws": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", - "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", - "requires": { - "jwa": "^1.4.1", - "safe-buffer": "^5.0.1" - } - }, - "limiter": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/limiter/-/limiter-1.1.4.tgz", - "integrity": "sha512-XCpr5bElgDI65vVgstP8TWjv6/QKWm9GU5UG0Pr5sLQ3QLo8NVKsioe+Jed5/3vFOe3IQuqE7DKwTvKQkjTHvg==" - }, - "lock": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/lock/-/lock-0.1.4.tgz", - "integrity": "sha1-/sfervF+fDoKVeHaBCgD4l2RdF0=" - }, - "lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" - }, - "lodash.includes": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", - "integrity": "sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8=" - }, - "lodash.isboolean": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", - "integrity": "sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY=" - }, - "lodash.isinteger": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", - "integrity": "sha1-YZwK89A/iwTDH1iChAt3sRzWg0M=" - }, - "lodash.isnumber": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", - "integrity": "sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w=" - }, - "lodash.isplainobject": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=" - }, - "lodash.isstring": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", - "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=" - }, - "lodash.once": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", - "integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=" - }, - "lru-cache": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.0.2.tgz", - "integrity": "sha1-HRdnnAac2l0ECZGgnbwsDbN35V4=", - "requires": { - "pseudomap": "^1.0.1", - "yallist": "^2.0.0" - } - }, - "lru-memoizer": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/lru-memoizer/-/lru-memoizer-1.13.0.tgz", - "integrity": "sha512-q0wMolfI7yimhZ36kBAfMLOIuDBpRkieN9do0YPjSzCaiy6r73s8wOEq7Ue/B95VSRbXzfnOr1O1QdJc5UIqaw==", - "requires": { - "lock": "~0.1.2", - "lodash": "^4.17.4", - "lru-cache": "~4.0.0", - "very-fast-args": "^1.1.0" - } - }, - "media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" - }, - "merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" - }, - "methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" - }, - "mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" - }, - "mime-db": { - "version": "1.40.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz", - "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==" - }, - "mime-types": { - "version": "2.1.24", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz", - "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==", - "requires": { - "mime-db": "1.40.0" - } - }, - "minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" - }, - "minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=" - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "negotiator": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", - "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" - }, - "oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" - }, - "on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", - "requires": { - "ee-first": "1.1.1" - } - }, - "parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" - }, - "path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" - }, - "performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" - }, - "proxy-addr": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.5.tgz", - "integrity": "sha512-t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ==", - "requires": { - "forwarded": "~0.1.2", - "ipaddr.js": "1.9.0" - } - }, - "pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" - }, - "psl": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.3.0.tgz", - "integrity": "sha512-avHdspHO+9rQTLbv1RO+MPYeP/SzsCoxofjVnHanETfQhTJrmB0HlDoW+EiN/R+C0BZ+gERab9NY0lPN2TxNag==" - }, - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" - }, - "qs": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", - "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" - }, - "range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" - }, - "raw-body": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", - "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", - "requires": { - "bytes": "3.1.0", - "http-errors": "1.7.2", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - } - }, - "request": { - "version": "2.88.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", - "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", - "requires": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.0", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.4.3", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - }, - "dependencies": { - "qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" - } - } - }, - "request-promise": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/request-promise/-/request-promise-4.2.4.tgz", - "integrity": "sha512-8wgMrvE546PzbR5WbYxUQogUnUDfM0S7QIFZMID+J73vdFARkFy+HElj4T+MWYhpXwlLp0EQ8Zoj8xUA0he4Vg==", - "requires": { - "bluebird": "^3.5.0", - "request-promise-core": "1.1.2", - "stealthy-require": "^1.1.1", - "tough-cookie": "^2.3.3" - } - }, - "request-promise-core": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.2.tgz", - "integrity": "sha512-UHYyq1MO8GsefGEt7EprS8UrXsm1TxEvFUX1IMTuSLU2Rh7fTIdFtl8xD7JiEYiWU2dl+NYAjCTksTehQUxPag==", - "requires": { - "lodash": "^4.17.11" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "semver": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", - "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==" - }, - "send": { - "version": "0.17.1", - "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", - "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", - "requires": { - "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "~1.7.2", - "mime": "1.6.0", - "ms": "2.1.1", - "on-finished": "~2.3.0", - "range-parser": "~1.2.1", - "statuses": "~1.5.0" - }, - "dependencies": { - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" - } - } - }, - "serve-static": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", - "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", - "requires": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.17.1" - } - }, - "setprototypeof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", - "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" - }, - "sshpk": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", - "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", - "requires": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - } - }, - "statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" - }, - "stealthy-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", - "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=" - }, - "toidentifier": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", - "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" - }, - "tough-cookie": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", - "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", - "requires": { - "psl": "^1.1.24", - "punycode": "^1.4.1" - }, - "dependencies": { - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" - } - } - }, - "tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" - }, - "type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "requires": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - } - }, - "unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" - }, - "uri-js": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", - "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", - "requires": { - "punycode": "^2.1.0" - } - }, - "utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" - }, - "uuid": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" - }, - "vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" - }, - "verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", - "requires": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, - "very-fast-args": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/very-fast-args/-/very-fast-args-1.1.0.tgz", - "integrity": "sha1-4W0dH6+KbllqJGQh/ZCneWPQs5Y=" - }, - "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" - } - } -} diff --git a/Deps/auth_service/package.json b/Deps/auth_service/package.json deleted file mode 100644 index 61b6d79f..00000000 --- a/Deps/auth_service/package.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "name": "auth_service", - "version": "1.0.0", - "description": "", - "main": "app.js", - "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" - }, - "author": "birm", - "license": "UNLICENSED", - "dependencies": { - "atob": "^2.1.2", - "cookie-parser": "^1.4.4", - "express": "^4.16.4", - "express-promise": "^0.4.0", - "jsonwebtoken": "^8.4.0", - "jwk-to-pem": "^2.0.1", - "jwks-rsa": "^1.6.0", - "request": "^2.88.0", - "request-promise": "^4.2.4" - } -} diff --git a/Deps/auth_service/readme.md b/Deps/auth_service/readme.md deleted file mode 100644 index 111be3a9..00000000 --- a/Deps/auth_service/readme.md +++ /dev/null @@ -1,10 +0,0 @@ -# Auth Service for Elevate - - -Uses bindaas endpoint to determine users and their permissions. - -Set SECRET to the jwt secret, or use /keys/certificate with a certificate, or /keys/jwk.json with a jwk. - -Use EXPIRY to set a token expiration other than the default one hour. - -This tool needs key and key.pub mounted to /keys to sign JWTs to elevate. In this distribution, run jwt_keys/make_keys.sh to do so. diff --git a/README.md b/README.md index 7119a7b1..3b5261e9 100644 --- a/README.md +++ b/README.md @@ -22,20 +22,18 @@ mongo - vanilla mongo container idxMongo - ephemeral container to index mongo (that is, this container is *expected* to exit once it's done its job) -bindaas - api service for mongo (see https://github.com/sharmalab/bindaas) - iip - slide tile server (see https://github.com/camicroscope/iipImage) -viewer - hosts the viewer files and builds packages ( see https://github.com/camicroscope/caMicroscope) - loader - extracts metadata needed for image loading (see https://github.com/camicroscope/SlideLoader) -security - security proxy (see https://github.com/camicroscope/Security) +back - security, data, and routing (see https://github.com/camicroscope/caracal) + +back/viewer - within back, viewer files ( see https://github.com/camicroscope/caMicroscope) ## Configuration Logging - Container Logging is, for HIPAA reasons, disabled. Feel free to use a different logging engine if desired, especially for development. -Security and Routes - This is handled by the security container. By default routes go the viewer, unless a specific pattern in routes.json is matched. If security is enabled, supply the SECRET (pub key or secret of JWT) for verification, otherwise set DISABLE_SEC to true. +See backend and security config notes (here)[https://github.com/camicroscope/caracal] Image Volume - This is, by default, the images directory in this directory. If this is changed, please make the same change across all impacted services. @@ -51,11 +49,11 @@ The example given in the Distro within config/login.html is set up to use google Add users as in ./config/add\_mongo\_users.js. Attributes can be added to deny access to routes (e.g. allow only some users to post and delete) -The name field is the email field (or failing that, sub field) in that priority from the identity provider. +The email field is the email field (or failing that, sub field) in that priority from the identity provider. ## PathDB -To use PathDB, use quip-pathdb.yml instead of caMicroscope.yml. This deployment does not include the auth and loader as separate services, as this PathDB implements that functionality itself. +To use PathDB, use quip-pathdb.yml instead of caMicroscope.yml. Running QuIP with PathDB (https://github.com/SBU-BMI/PathDB): diff --git a/auth0_login.html b/auth0_login.html deleted file mode 100644 index 6015938c..00000000 --- a/auth0_login.html +++ /dev/null @@ -1,59 +0,0 @@ - -

Redirecting...

- - diff --git a/caMicroscope.yml b/caMicroscope.yml index e3ebd906..92dd512a 100644 --- a/caMicroscope.yml +++ b/caMicroscope.yml @@ -4,11 +4,10 @@ services: mongo: image: mongo:3.4.19-jessie container_name: ca-mongo - restart: unless-stopped - volumes: - - ./db:/data/db logging: driver: none + volumes: + - ./db:/data/db idxMongo: image: mongo:3.4.19-jessie container_name: ca-idx @@ -22,57 +21,31 @@ services: - /config/run_idx.sh depends_on: - mongo - bindaas: - build: "./Deps/Bindaas/" + back: + build: + context: "https://github.com/camicroscope/caracal.git#v3.7.0" + args: + viewer: "v3.7.0" depends_on: - "mongo" - container_name: ca-data - restart: unless-stopped - logging: - driver: none + ports: + - "4010:8010" + container_name: ca-back volumes: - - ./config/bindaas_projects/:/root/bindaas/bin/projects/ - - ./config/bindaas.config.json:/root/bindaas/bin/bindaas.config.json + - ./config/login.html:/root/src/static/login.html + - ./jwt_keys/:/root/src/keys/ + + environment: + JWK_URL: "https://www.googleapis.com/oauth2/v3/certs" + IIP_PATH: "http://ca-iip/fcgi-bin/iipsrv.fcgi" + MONGO_URI: "mongodb://ca-mongo" iip: - build: "https://github.com/caMicroscope/iipImage.git#v3.2.0" + build: "https://github.com/camicroscope/iipImage.git#v3.7.0" container_name: ca-iip - restart: unless-stopped volumes: - ./images/:/images/ - viewer: - build: "https://github.com/caMicroscope/caMicroscope.git#v3.6.2" - container_name: ca-front - restart: unless-stopped - volumes: - - ./config/login.html:/usr/local/apache2/htdocs/login.html - logging: - driver: none loader: - build: "https://github.com/caMicroscope/SlideLoader.git#v3.6.2" + build: "https://github.com/camicroscope/SlideLoader.git#v3.7.0" container_name: ca-load - restart: unless-stopped - logging: - driver: none volumes: - ./images/:/images/ - security: - build: "https://github.com/caMicroscope/Security.git#v3.6.2" - container_name: ca-security - restart: unless-stopped - ports: - - "4010:4010" - volumes: - - ./config/non-pathdb-routes.json:/root/src/routes.json - - ./jwt_keys/:/keys/ - environment: - - DISABLE_SEC=true - auth: - build: "./Deps/auth_service/" - volumes: - - ./jwt_keys/:/keys/ - container_name: ca-auth - environment: - JWKS: "https://www.googleapis.com/oauth2/v3/certs" - restart: unless-stopped - logging: - driver: none diff --git a/config/add_mongo_users.js b/config/add_mongo_users.js deleted file mode 100644 index f0cfbfa8..00000000 --- a/config/add_mongo_users.js +++ /dev/null @@ -1,28 +0,0 @@ -// these roles are customizable, and should match the routes.json attrs - -// lists -let admin_list = ["admin@camicroscope.org"]; -let editor_list = ["editor@camicroscope.org"]; -let viewer_list = ["viewer@camicroscope.org"]; -// admin users -let admin_attrs = ['admin', 'write'] -// edit users -let editor_attrs = ['write'] -// normal users -let viewer_attrs = [] -// prep for mongo -var users = [] - -admin_list.forEach(x=>{ - users.push({name:x, attrs: admin_attrs}) -}) - -editor_list.forEach(x=>{ - users.push({name:x, attrs: editor_attrs}) -}) - -viewer_list.forEach(x=>{ - users.push({name:x, attrs: viewer_attrs}) -}) - -db.authorization.insertMany(users) diff --git a/config/add_users.js b/config/add_users.js index 69b6607a..d701571f 100644 --- a/config/add_users.js +++ b/config/add_users.js @@ -1,10 +1,7 @@ // For use with caracal, this is really just a demo. -// admin example, can see all (**) filters -// editor example, can see Public and Private -// viewer example -let randomPerson = {'email':'viewer@camicroscope.org', 'userFilter':["Public"], 'userType':'Null'} +let admin = {'email':'viewer@camicroscope.org', 'userFilter':["Public"], 'userType':'Null'} // users not added would have been represented by the below -let randomPerson = {'email':'random@me.com', 'userFilter':["Public"], 'userType':'Null'} - +let randomPerson = {'email':'randomperson@camicroscope.org', 'userFilter':["Public"], 'userType':'Null'} +users = [admin, randomPerson] db.user.insertMany(users) diff --git a/config/bindaas.config.json b/config/bindaas.config.json deleted file mode 100644 index 665dc086..00000000 --- a/config/bindaas.config.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "host": "0.0.0.0", - "port": 9099, - "protocol": "http", - "enableAuthentication": false, - "enableAuthorization": false, - "enableAudit": true, - "authenticationProviderClass": "edu.emory.cci.bindaas.security.impl.DBAuthenticationProvider", - "authorizationProviderClass": "edu.emory.cci.bindaas.security_dashboard.service.AuthorizationProviderImpl", - "auditProviderClass": "edu.emory.cci.bindaas.security.impl.DBAuditProvider", - "proxyUrl": "http://localhost:9099", - "instanceName": "bindaas" -} diff --git a/config/bindaas_projects/caMicroscope.project b/config/bindaas_projects/caMicroscope.project deleted file mode 100644 index d957e136..00000000 --- a/config/bindaas_projects/caMicroscope.project +++ /dev/null @@ -1,1431 +0,0 @@ -{ - "profiles": { - "Mark": { - "dataSource": { - "host": "ca-mongo", - "port": "27017", - "db": "camic", - "collection": "mark", - "initialize": true - }, - "queryEndpoints": { - "get": { - "queryTemplate": "{\n\t\"_operation\" : \"find\" ,\n\t\"_operation_args\" : {\n\t\t\t\t\t\t\t\"query\" : { \u0027_id\u0027 : {\"$oid\":\"$id$\"}} ,\n\t\t\t\t\t\t\t\"limit\" : 1\n\t\t\t\t\t\t}\n}\n ", - "metaData": {}, - "tags": [], - "bindVariables": { - "id": { - "name": "id", - "required": true, - "defaultValue": "", - "description": "" - } - }, - "stage": "UNVERIFIED", - "outputFormat": { - "outputFormat": "JSON" - }, - "name": "get", - "timeCreated": "Wed Aug 29 18:40:50 UTC 2018", - "createdBy": "admin", - "description": " " - }, - "findTypesExec": { - "queryTemplate": "{ \"_operation\" : \"distinct\" , \"_operation_args\" : { \"field\" : \"provenance.analysis\", \"query\" : {\u0027provenance.image.slide\u0027: \"$slide$\",\u0027provenance.analysis.execution_id\u0027: $name$ } } } ", - "metaData": {}, - "tags": [], - "bindVariables": { - "slide": { - "name": "slide", - "required": true, - "defaultValue": "", - "description": "" - }, - "name": { - "name": "name", - "required": true, - "defaultValue": "", - "description": "" - } - }, - "stage": "UNVERIFIED", - "outputFormat": { - "outputFormat": "JSON" - }, - "name": "findTypesExec", - "timeCreated": "Thu May 09 15:09:53 GMT 2019", - "createdBy": "admin", - "description": " " - }, - "multiFind": { - "queryTemplate": "{\n \"_operation\" : \"find\" ,\n \"_operation_args\" : {\n\"query\" :{$and: [\n{\"provenance.analysis.execution_id\": {$in: $name$},\n \"provenance.image.slide\" : \"$slide$\",\n \"footprint\": { $not: {$lt: $footprint$}},\n \"provenance.analysis.source\" : {$regex: \"$source$\", $options: \"i\"}},\n{\"x\": { $not: {$lt: $x0$}}},\n{\"x\": { $not: {$gt: $x1$}}},\n{\"y\": { $not: {$lt: $y0$}}},\n{\"y\": { $not: {$gt: $y1$}}}\n ]}\n}\n}\n ", - "metaData": {}, - "tags": [], - "bindVariables": { - "name": { - "name": "name", - "required": true, - "defaultValue": "", - "description": "" - }, - "slide": { - "name": "slide", - "required": false, - "defaultValue": "", - "description": "" - }, - "footprint": { - "name": "footprint", - "required": false, - "defaultValue": "0", - "description": "" - }, - "source": { - "name": "source", - "required": false, - "defaultValue": "", - "description": "" - }, - "x0": { - "name": "x0", - "required": false, - "defaultValue": "0", - "description": "" - }, - "x1": { - "name": "x1", - "required": false, - "defaultValue": "9", - "description": "" - }, - "y0": { - "name": "y0", - "required": false, - "defaultValue": "0", - "description": "" - }, - "y1": { - "name": "y1", - "required": false, - "defaultValue": "9", - "description": "" - } - }, - "stage": "UNVERIFIED", - "outputFormat": { - "outputFormat": "JSON" - }, - "name": "multiFind", - "timeCreated": "Tue Jul 02 17:47:09 GMT 2019", - "createdBy": "admin", - "description": " " - }, - "find": { - "queryTemplate": "{\n \"_operation\" : \"find\" ,\n \"_operation_args\" : {\n\"query\" :{$and: [\n{\"provenance.analysis.execution_id\" : {$regex: \"$name$\", $options: \"i\"},\n \"provenance.image.slide\" : \"$slide$\",\n \"footprint\": { $not: {$lt: $footprint$}},\n \"provenance.analysis.source\" : {$regex: \"$source$\", $options: \"i\"}},\n{\"x\": { $not: {$lt: $x0$}}},\n{\"x\": { $not: {$gt: $x1$}}},\n{\"y\": { $not: {$lt: $y0$}}},\n{\"y\": { $not: {$gt: $y1$}}}\n ]}\n}\n}\n ", - "metaData": {}, - "tags": [], - "bindVariables": { - "name": { - "name": "name", - "required": false, - "defaultValue": "", - "description": "" - }, - "slide": { - "name": "slide", - "required": false, - "defaultValue": "", - "description": "" - }, - "source": { - "name": "source", - "required": false, - "defaultValue": "", - "description": "" - }, - "footprint": { - "name": "footprint", - "required": false, - "defaultValue": "0", - "description": "" - }, - "x0": { - "name": "x0", - "required": false, - "defaultValue": "0", - "description": "" - }, - "x1": { - "name": "x1", - "required": false, - "defaultValue": "9", - "description": "" - }, - "y0": { - "name": "y0", - "required": false, - "defaultValue": "0", - "description": "" - }, - "y1": { - "name": "y1", - "required": false, - "defaultValue": "9", - "description": "" - } - }, - "stage": "UNVERIFIED", - "outputFormat": { - "outputFormat": "JSON" - }, - "name": "find", - "timeCreated": "Tue Jul 02 17:48:26 GMT 2019", - "createdBy": "admin", - "description": " " - }, - "findBound": { - "queryTemplate": "{ \"_operation\" : \"find\" , \"_operation_args\" : { \"query\" : {\"provenance.analysis.execution_id\" : {$regex: \"$name$\", $options: \"i\"},\n \"provenance.image.slide\" : \"$slide$\",\n \"provenance.analysis.source\" : {$regex: \"$key$\", $options: \"i\"}, \"geometries.features.bound\": { $geoIntersects: { $geometry: { \"type\": \"Polygon\", \"coordinates\": [[[ $x0$, $y0$ ],[ $x0$, $y1$ ],[ $x1$, $y1$ ],[ $x1$, $y0$ ],[ $x0$, $y0$ ]]] } } } }, \"limit\" : 1000} } ", - "metaData": {}, - "tags": [], - "bindVariables": { - "name": { - "name": "name", - "required": false, - "defaultValue": "", - "description": "" - }, - "key": { - "name": "key", - "required": false, - "defaultValue": "", - "description": "" - }, - "slide": { - "name": "slide", - "required": false, - "defaultValue": "", - "description": "" - }, - "x0": { - "name": "x0", - "required": true, - "defaultValue": "", - "description": "" - }, - "y0": { - "name": "y0", - "required": true, - "defaultValue": "", - "description": "" - }, - "x1": { - "name": "x1", - "required": true, - "defaultValue": "", - "description": "" - }, - "y1": { - "name": "y1", - "required": true, - "defaultValue": "", - "description": "" - } - }, - "stage": "UNVERIFIED", - "outputFormat": { - "outputFormat": "JSON" - }, - "name": "findBound", - "timeCreated": "Tue Jul 02 17:49:32 GMT 2019", - "createdBy": "admin", - "description": "find where bound intersects given rect " - }, - "findTypes": { - "queryTemplate": "{ \"_operation\" : \"distinct\" , \"_operation_args\" : { \"field\" : \"provenance.analysis\", \"query\" : {\u0027provenance.image.slide\u0027: \"$slide$\" } } } ", - "metaData": {}, - "tags": [], - "bindVariables": { - "slide": { - "name": "slide", - "required": true, - "defaultValue": "", - "description": "" - } - }, - "stage": "UNVERIFIED", - "outputFormat": { - "outputFormat": "JSON" - }, - "name": "findTypes", - "timeCreated": "Tue Jul 02 18:37:03 GMT 2019", - "createdBy": "admin", - "description": " " - } - }, - "deleteEndpoints": { - "deleteMark": { - "queryTemplate": "{\n\t\"_operation\" : \"delete\" ,\n\t\"_operation_args\" : {\n\t\t\t\t\t\t\t\"query\" : { \u0027_id\u0027 : {\"$oid\":\"$id$\"}, \u0027provenance.image.slide\u0027: \"$slide$\" }\n\t\t\t\t\t\t}\n}\n ", - "tags": [], - "bindVariables": { - "id": { - "name": "id", - "required": true, - "defaultValue": "", - "description": "" - }, - "slide": { - "name": "slide", - "required": true, - "defaultValue": "", - "description": "" - } - }, - "stage": "UNVERIFIED", - "name": "deleteMark", - "timeCreated": "Tue Jul 02 18:20:50 GMT 2019", - "createdBy": "admin", - "description": "" - } - }, - "submitEndpoints": { - "csvFile": { - "type": "MULTIPART", - "properties": { - "inputType": "CSV_FILE" - }, - "name": "csvFile", - "timeCreated": "Wed Aug 01 17:23:41 UTC 2018", - "createdBy": "admin", - "description": "" - }, - "jsonFile": { - "type": "MULTIPART", - "properties": { - "inputType": "JSON_FILE" - }, - "name": "jsonFile", - "timeCreated": "Wed Aug 01 17:23:41 UTC 2018", - "createdBy": "admin", - "description": "" - }, - "csv": { - "type": "FORM_DATA", - "properties": { - "inputType": "CSV" - }, - "name": "csv", - "timeCreated": "Wed Aug 01 17:23:41 UTC 2018", - "createdBy": "admin", - "description": "" - }, - "json": { - "type": "FORM_DATA", - "properties": { - "inputType": "JSON" - }, - "name": "json", - "timeCreated": "Wed Aug 01 17:23:41 UTC 2018", - "createdBy": "admin", - "description": "" - } - }, - "providerId": "edu.emory.cci.bindaas.datasource.provider.mongodb.MongoDBProvider", - "providerVersion": 1, - "name": "Mark", - "timeCreated": "Wed Aug 01 17:23:41 UTC 2018", - "createdBy": "admin", - "description": "Geospatial Marking Objects" - }, - "Overlay": { - "dataSource": { - "host": "ca-mongo", - "port": "27017", - "db": "camic", - "collection": "overlay", - "initialize": true - }, - "queryEndpoints": { - "get": { - "queryTemplate": "{\n\t\"_operation\" : \"find\" ,\n\t\"_operation_args\" : {\n\t\t\t\t\t\t\t\"query\" : { \u0027_id\u0027 : {\"$oid\":\"$id$\"}} ,\n\t\t\t\t\t\t\t\"limit\" : 1\n\t\t\t\t\t\t}\n}\n ", - "metaData": {}, - "tags": [], - "bindVariables": { - "id": { - "name": "id", - "required": true, - "defaultValue": "", - "description": "" - } - }, - "stage": "UNVERIFIED", - "outputFormat": { - "outputFormat": "JSON" - }, - "name": "get", - "timeCreated": "Wed Aug 29 18:41:00 UTC 2018", - "createdBy": "admin", - "description": " " - }, - "find": { - "queryTemplate": "{\n \"_operation\" : \"find\" ,\n \"_operation_args\" : {\n\"query\" : { \"name\" : {$regex: \"$name$\", $options: \"i\"},\n\"slide\" : \"$slide$\",\n\"location\" : {$regex: \"$location$\", $options: \"i\"}}\n}\n} ", - "metaData": {}, - "tags": [], - "bindVariables": { - "name": { - "name": "name", - "required": false, - "defaultValue": "", - "description": "" - }, - "slide": { - "name": "slide", - "required": true, - "defaultValue": "", - "description": "" - }, - "location": { - "name": "location", - "required": false, - "defaultValue": "", - "description": "" - } - }, - "stage": "UNVERIFIED", - "outputFormat": { - "outputFormat": "JSON" - }, - "name": "find", - "timeCreated": "Mon Jul 08 16:18:19 GMT 2019", - "createdBy": "admin", - "description": " " - } - }, - "deleteEndpoints": { - "updateOverlay": { - "queryTemplate": "{\n\t\"_operation\" : \"update\" ,\n\t\"_operation_args\" : {\n\t\t\t\t\t\t\t\"query\" : { \u0027slide\u0027 : \"$slide$\", \u0027_id\u0027 : {\"$oid\":\"$id$\"}} ,\n\t\t\t\t\t\t\t\"update\": {$set: { \u0027$field$\u0027 : \u0027$value$\u0027 }},\n\t\t\t\t\t\t\t\"upsert\": \u0027true\u0027,\n\t\t\t\t\t\t\t\"multi\" : \u0027false\u0027\n\t\t\t\t\t\t}\n}\n ", - "tags": [], - "bindVariables": { - "slide": { - "name": "slide", - "required": true, - "defaultValue": "", - "description": "" - }, - "id": { - "name": "id", - "required": true, - "defaultValue": "", - "description": "" - }, - "field": { - "name": "field", - "required": true, - "defaultValue": "", - "description": "" - }, - "value": { - "name": "value", - "required": true, - "defaultValue": "", - "description": "" - } - }, - "stage": "UNVERIFIED", - "name": "updateOverlay", - "timeCreated": "Tue Jul 02 18:21:53 GMT 2019", - "createdBy": "admin", - "description": "" - }, - "deleteOverlay": { - "queryTemplate": "{\n\t\"_operation\" : \"delete\" ,\n\t\"_operation_args\" : {\n\t\t\t\t\t\t\t\"query\" : { \u0027_id\u0027 : {\"$oid\":\"$id$\"}, \u0027slide\u0027: \"$slide$\" }\n\t\t\t\t\t\t}\n}\n ", - "tags": [], - "bindVariables": { - "id": { - "name": "id", - "required": true, - "defaultValue": "", - "description": "" - }, - "slide": { - "name": "slide", - "required": true, - "defaultValue": "", - "description": "" - } - }, - "stage": "UNVERIFIED", - "name": "deleteOverlay", - "timeCreated": "Tue Jul 02 18:22:07 GMT 2019", - "createdBy": "admin", - "description": "" - } - }, - "submitEndpoints": { - "csvFile": { - "type": "MULTIPART", - "properties": { - "inputType": "CSV_FILE" - }, - "name": "csvFile", - "timeCreated": "Wed Aug 01 17:24:16 UTC 2018", - "createdBy": "admin", - "description": "" - }, - "jsonFile": { - "type": "MULTIPART", - "properties": { - "inputType": "JSON_FILE" - }, - "name": "jsonFile", - "timeCreated": "Wed Aug 01 17:24:16 UTC 2018", - "createdBy": "admin", - "description": "" - }, - "csv": { - "type": "FORM_DATA", - "properties": { - "inputType": "CSV" - }, - "name": "csv", - "timeCreated": "Wed Aug 01 17:24:16 UTC 2018", - "createdBy": "admin", - "description": "" - }, - "json": { - "type": "FORM_DATA", - "properties": { - "inputType": "JSON" - }, - "name": "json", - "timeCreated": "Wed Aug 01 17:24:16 UTC 2018", - "createdBy": "admin", - "description": "" - } - }, - "providerId": "edu.emory.cci.bindaas.datasource.provider.mongodb.MongoDBProvider", - "providerVersion": 1, - "name": "Overlay", - "timeCreated": "Wed Aug 01 17:24:16 UTC 2018", - "createdBy": "admin", - "description": "Overlay Representation" - }, - "Slide": { - "dataSource": { - "host": "ca-mongo", - "port": "27017", - "db": "camic", - "collection": "slide", - "initialize": true - }, - "queryEndpoints": { - "get": { - "queryTemplate": "{\n\t\"_operation\" : \"find\" ,\n\t\"_operation_args\" : {\n\t\t\t\t\t\t\t\"query\" : { \u0027_id\u0027 : {\"$oid\":\"$id$\"}} ,\n\t\t\t\t\t\t\t\"limit\" : 1\n\t\t\t\t\t\t}\n}\n ", - "metaData": {}, - "tags": [], - "bindVariables": { - "id": { - "name": "id", - "required": true, - "defaultValue": "", - "description": "" - } - }, - "stage": "UNVERIFIED", - "outputFormat": { - "outputFormat": "JSON" - }, - "name": "get", - "timeCreated": "Wed Aug 29 18:41:29 UTC 2018", - "createdBy": "admin", - "description": " " - }, - "find": { - "queryTemplate": "{\n \"_operation\" : \"find\" ,\n \"_operation_args\" : {\n\"query\" : {\u0027name\u0027: {$regex: \"$slide$\", $options: \"i\"},\n \u0027specimen\u0027: {$regex: \"$specimen$\", $options: \"i\"},\n \u0027study\u0027: {$regex: \"$study$\", $options: \"i\"},\n \u0027location\u0027: {$regex: \"$location$\", $options: \"i\"}}\n}\n} ", - "metaData": {}, - "tags": [], - "bindVariables": { - "slide": { - "name": "slide", - "required": false, - "defaultValue": "", - "description": "" - }, - "location": { - "name": "location", - "required": false, - "defaultValue": "", - "description": "" - }, - "specimen": { - "name": "specimen", - "required": false, - "defaultValue": "", - "description": "" - }, - "study": { - "name": "study", - "required": false, - "defaultValue": "", - "description": "" - } - }, - "stage": "UNVERIFIED", - "outputFormat": { - "outputFormat": "JSON" - }, - "name": "find", - "timeCreated": "Wed Nov 28 20:40:33 UTC 2018", - "createdBy": "admin", - "description": " " - } - }, - "deleteEndpoints": { - "updateSlide": { - "queryTemplate": "{\n\t\"_operation\" : \"update\" ,\n\t\"_operation_args\" : {\n\t\t\t\t\t\t\t\"query\" : { \u0027name\u0027 : $slide$} ,\n\t\t\t\t\t\t\t\"update\": {$set: { \u0027$field$\u0027 : \u0027$value$\u0027 }},\n\t\t\t\t\t\t\t\"upsert\": \u0027true\u0027,\n\t\t\t\t\t\t\t\"multi\" : \u0027false\u0027\n\t\t\t\t\t\t}\n}\n ", - "tags": [], - "bindVariables": { - "slide": { - "name": "slide", - "required": true, - "defaultValue": "", - "description": "" - }, - "field": { - "name": "field", - "required": true, - "defaultValue": "", - "description": "" - }, - "value": { - "name": "value", - "required": true, - "defaultValue": "", - "description": "" - } - }, - "stage": "UNVERIFIED", - "name": "updateSlide", - "timeCreated": "Tue Jul 02 18:21:13 GMT 2019", - "createdBy": "admin", - "description": "" - }, - "deleteSlide": { - "queryTemplate": "{\n\t\"_operation\" : \"delete\" ,\n\t\"_operation_args\" : {\n\t\t\t\t\t\t\t\"query\" : { \u0027slide.name\u0027 : \"\"$slide$\"\" }\n\t\t\t\t\t\t}\n}\n ", - "tags": [], - "bindVariables": { - "slide": { - "name": "slide", - "required": true, - "defaultValue": "", - "description": "" - } - }, - "stage": "UNVERIFIED", - "name": "deleteSlide", - "timeCreated": "Tue Jul 02 18:21:26 GMT 2019", - "createdBy": "admin", - "description": "" - } - }, - "submitEndpoints": { - "csvFile": { - "type": "MULTIPART", - "properties": { - "inputType": "CSV_FILE" - }, - "name": "csvFile", - "timeCreated": "Wed Aug 01 17:24:37 UTC 2018", - "createdBy": "admin", - "description": "" - }, - "jsonFile": { - "type": "MULTIPART", - "properties": { - "inputType": "JSON_FILE" - }, - "name": "jsonFile", - "timeCreated": "Wed Aug 01 17:24:37 UTC 2018", - "createdBy": "admin", - "description": "" - }, - "csv": { - "type": "FORM_DATA", - "properties": { - "inputType": "CSV" - }, - "name": "csv", - "timeCreated": "Wed Aug 01 17:24:37 UTC 2018", - "createdBy": "admin", - "description": "" - }, - "json": { - "type": "FORM_DATA", - "properties": { - "inputType": "JSON" - }, - "name": "json", - "timeCreated": "Wed Aug 01 17:24:37 UTC 2018", - "createdBy": "admin", - "description": "" - } - }, - "providerId": "edu.emory.cci.bindaas.datasource.provider.mongodb.MongoDBProvider", - "providerVersion": 1, - "name": "Slide", - "timeCreated": "Wed Aug 01 17:24:37 UTC 2018", - "createdBy": "admin", - "description": "Represents Slide Objects" - }, - "Template": { - "dataSource": { - "host": "ca-mongo", - "port": "27017", - "db": "camic", - "collection": "template", - "initialize": true - }, - "queryEndpoints": { - "find": { - "queryTemplate": "{\n \"_operation\" : \"find\" ,\n \"_operation_args\" : {\n\"query\" : {\"name\": {$regex: \"$name$\", $options: \"i\"},\n \"type\": {$regex: \"$type$\", $options: \"i\"}}\n}\n} ", - "metaData": {}, - "tags": [], - "bindVariables": { - "name": { - "name": "name", - "required": false, - "defaultValue": "", - "description": "" - }, - "type": { - "name": "type", - "required": false, - "defaultValue": "", - "description": "" - } - }, - "stage": "UNVERIFIED", - "outputFormat": { - "outputFormat": "JSON" - }, - "name": "find", - "timeCreated": "Mon Aug 27 15:46:51 UTC 2018", - "createdBy": "admin", - "description": " " - }, - "get": { - "queryTemplate": "{\n\t\"_operation\" : \"find\" ,\n\t\"_operation_args\" : {\n\t\t\t\t\t\t\t\"query\" : { \u0027_id\u0027 : {\"$oid\":\"$id$\"}} ,\n\t\t\t\t\t\t\t\"limit\" : 1\n\t\t\t\t\t\t}\n}\n ", - "metaData": {}, - "tags": [], - "bindVariables": { - "id": { - "name": "id", - "required": true, - "defaultValue": "", - "description": "" - } - }, - "stage": "UNVERIFIED", - "outputFormat": { - "outputFormat": "JSON" - }, - "name": "get", - "timeCreated": "Wed Aug 29 18:41:36 UTC 2018", - "createdBy": "admin", - "description": " " - } - }, - "deleteEndpoints": { - "deleteTemplate": { - "queryTemplate": "{\n\t\"_operation\" : \"delete\" ,\n\t\"_operation_args\" : {\n\t\t\t\t\t\t\t\"query\" : { \u0027_id\u0027 : {\"$oid\":\"$id$\"}}\n\t\t\t\t\t\t}\n} ", - "tags": [], - "bindVariables": { - "id": { - "name": "id", - "required": true, - "defaultValue": "", - "description": "" - } - }, - "stage": "UNVERIFIED", - "name": "deleteTemplate", - "timeCreated": "Wed Aug 29 18:44:30 UTC 2018", - "createdBy": "admin", - "description": "" - } - }, - "submitEndpoints": { - "csvFile": { - "type": "MULTIPART", - "properties": { - "inputType": "CSV_FILE" - }, - "name": "csvFile", - "timeCreated": "Wed Aug 01 17:25:14 UTC 2018", - "createdBy": "admin", - "description": "" - }, - "jsonFile": { - "type": "MULTIPART", - "properties": { - "inputType": "JSON_FILE" - }, - "name": "jsonFile", - "timeCreated": "Wed Aug 01 17:25:14 UTC 2018", - "createdBy": "admin", - "description": "" - }, - "csv": { - "type": "FORM_DATA", - "properties": { - "inputType": "CSV" - }, - "name": "csv", - "timeCreated": "Wed Aug 01 17:25:14 UTC 2018", - "createdBy": "admin", - "description": "" - }, - "json": { - "type": "FORM_DATA", - "properties": { - "inputType": "JSON" - }, - "name": "json", - "timeCreated": "Wed Aug 01 17:25:14 UTC 2018", - "createdBy": "admin", - "description": "" - } - }, - "providerId": "edu.emory.cci.bindaas.datasource.provider.mongodb.MongoDBProvider", - "providerVersion": 1, - "name": "Template", - "timeCreated": "Wed Aug 01 17:25:14 UTC 2018", - "createdBy": "admin", - "description": "Templates for Forms, JSONFORM type" - }, - "Authorization": { - "dataSource": { - "host": "ca-mongo", - "port": "27017", - "db": "camic", - "collection": "authorization", - "initialize": true - }, - "queryEndpoints": { - "getAuth": { - "queryTemplate": "{\n\t\"_operation\" : \"find\" ,\n\t\"_operation_args\" : {\n\t\t\t\t\t\t\t\"query\" : { \u0027name\u0027 : \u0027$name$\u0027 }\n\t\t\t\t\t\t}\n}\n", - "metaData": {}, - "tags": [], - "bindVariables": { - "name": { - "name": "name", - "required": true, - "defaultValue": "", - "description": "" - } - }, - "stage": "UNVERIFIED", - "outputFormat": { - "outputFormat": "JSON" - }, - "name": "getAuth", - "timeCreated": "Fri Aug 10 19:27:36 UTC 2018", - "createdBy": "admin", - "description": "get auth for user" - }, - "list": { - "queryTemplate": "{\n\t\"_operation\" : \"find\" ,\n\t\"_operation_args\" : {\n\t\t\t\t\t\t\t\"query\" : {} ,\n\t\t\t\t\t\t\t\"fields\" :{ \u0027_id\u0027 : 0 }\n\t\t\t\t\t\t}\n}\n", - "metaData": {}, - "tags": [], - "bindVariables": {}, - "stage": "UNVERIFIED", - "outputFormat": { - "outputFormat": "JSON" - }, - "name": "list", - "timeCreated": "Mon Dec 09 19:45:34 GMT 2019", - "createdBy": "admin", - "description": "list all auth with no queries" - } - }, - "deleteEndpoints": {}, - "submitEndpoints": { - "csvFile": { - "type": "MULTIPART", - "properties": { - "inputType": "CSV_FILE" - }, - "name": "csvFile", - "timeCreated": "Fri Aug 10 19:26:51 UTC 2018", - "createdBy": "admin", - "description": "" - }, - "jsonFile": { - "type": "MULTIPART", - "properties": { - "inputType": "JSON_FILE" - }, - "name": "jsonFile", - "timeCreated": "Fri Aug 10 19:26:51 UTC 2018", - "createdBy": "admin", - "description": "" - }, - "csv": { - "type": "FORM_DATA", - "properties": { - "inputType": "CSV" - }, - "name": "csv", - "timeCreated": "Fri Aug 10 19:26:51 UTC 2018", - "createdBy": "admin", - "description": "" - }, - "json": { - "type": "FORM_DATA", - "properties": { - "inputType": "JSON" - }, - "name": "json", - "timeCreated": "Fri Aug 10 19:26:51 UTC 2018", - "createdBy": "admin", - "description": "" - } - }, - "providerId": "edu.emory.cci.bindaas.datasource.provider.mongodb.MongoDBProvider", - "providerVersion": 1, - "name": "Authorization", - "timeCreated": "Fri Aug 10 19:26:51 UTC 2018", - "createdBy": "admin", - "description": "authorization for slides and collections" - }, - "Heatmap": { - "dataSource": { - "host": "ca-mongo", - "port": "27017", - "db": "camic", - "collection": "heatmap", - "initialize": true - }, - "queryEndpoints": { - "findTypes": { - "queryTemplate": "{\n \"_operation\" : \"find\" ,\n \"_operation_args\" : {\n\"query\" : { \"provenance.analysis.execution_id\" : {$regex: \"$name$\", $options: \"i\"},\n\"provenance.image.slide\" : \"$slide$\"},\n\"fields\" :{ \u0027data\u0027 : 0 }\n}\n\n} ", - "metaData": {}, - "tags": [], - "bindVariables": { - "name": { - "name": "name", - "required": false, - "defaultValue": "", - "description": "" - }, - "slide": { - "name": "slide", - "required": false, - "defaultValue": "", - "description": "" - } - }, - "stage": "UNVERIFIED", - "outputFormat": { - "outputFormat": "JSON" - }, - "name": "findTypes", - "timeCreated": "Thu Jun 27 19:39:21 GMT 2019", - "createdBy": "admin", - "description": " " - }, - "find": { - "queryTemplate": "{\n \"_operation\" : \"find\" ,\n \"_operation_args\" : {\n\"query\" : { \"provenance.analysis.execution_id\" : {$regex: \"$name$\", $options: \"i\"},\n\"provenance.image.slide\" : \"$slide$\"\n}\n} ", - "metaData": {}, - "tags": [], - "bindVariables": { - "name": { - "name": "name", - "required": false, - "defaultValue": "", - "description": "" - }, - "slide": { - "name": "slide", - "required": false, - "defaultValue": "", - "description": "" - } - }, - "stage": "UNVERIFIED", - "outputFormat": { - "outputFormat": "JSON" - }, - "name": "find", - "timeCreated": "Thu Jun 27 19:40:22 GMT 2019", - "createdBy": "admin", - "description": " " - }, - "get": { - "queryTemplate": "{\n\t\u0027_operation\u0027: \u0027find\u0027,\n\t\u0027_operation_args\u0027: \n\t{\n\t\u0027query\u0027: {\n\t\t\"provenance.image.slide\": \"$slide$\",\n\t\t\"provenance.analysis.execution_id\":\"$name$\"\n\t},\n\t\t\u0027fields\u0027: {\n\t\t\t\u0027provenance\u0027:1,\n\u0027data\u0027:1,\n\t\t\t\u0027_id\u0027: 1\n\t\t}\n\t}\n} ", - "metaData": {}, - "tags": [], - "bindVariables": { - "slide": { - "name": "slide", - "required": true, - "defaultValue": "", - "description": "" - }, - "name": { - "name": "name", - "required": true, - "defaultValue": "", - "description": "" - } - }, - "stage": "UNVERIFIED", - "outputFormat": { - "outputFormat": "JSON" - }, - "name": "get", - "timeCreated": "Mon Jul 01 20:07:42 GMT 2019", - "createdBy": "admin", - "description": " " - } - }, - "deleteEndpoints": { - "deleteHeatmap": { - "queryTemplate": "{\n\t\"_operation\" : \"delete\" ,\n\t\"_operation_args\" : {\n\t\t\t\t\t\t\t\"query\" : { \u0027_id\u0027 : {\"$oid\":\"$id$\"}, \u0027provenance.image.slide\u0027: \"$slide$\" }\n\t\t\t\t\t\t}\n}\n ", - "tags": [], - "bindVariables": { - "id": { - "name": "id", - "required": true, - "defaultValue": "", - "description": "" - }, - "slide": { - "name": "slide", - "required": true, - "defaultValue": "", - "description": "" - } - }, - "stage": "UNVERIFIED", - "name": "deleteHeatmap", - "timeCreated": "Wed Nov 14 16:24:04 UTC 2018", - "createdBy": "admin", - "description": "" - }, - "updateThreshold": { - "queryTemplate": "{\n\t\"_operation\" : \"update\" ,\n\t\"_operation_args\" : {\n\t\t\t\t\t\t\t\"query\" : {\u0027provenance.analysis.execution_id\u0027 : \u0027$name$\u0027,\u0027provenance.image.slide\u0027 : \"$slide$\"} ,\n\t\t\t\t\t\t\t\"update\": {$set: { \u0027provenance.analysis.fields\u0027 : $fields$,\u0027provenance.analysis.setting\u0027 : $setting$ }},\n\t\t\t\t\t\t\t\"upsert\": true,\n\t\t\t\t\t\t\t\"multi\" : true\n\t\t\t\t\t\t}\n}\n ", - "tags": [], - "bindVariables": { - "name": { - "name": "name", - "required": true, - "defaultValue": "", - "description": "" - }, - "slide": { - "name": "slide", - "required": true, - "defaultValue": "", - "description": "" - }, - "fields": { - "name": "fields", - "required": true, - "defaultValue": "", - "description": "" - }, - "setting": { - "name": "setting", - "required": true, - "defaultValue": "", - "description": "" - } - }, - "stage": "UNVERIFIED", - "name": "updateThreshold", - "timeCreated": "Tue Jul 02 17:06:06 GMT 2019", - "createdBy": "admin", - "description": "" - } - }, - "submitEndpoints": { - "csvFile": { - "type": "MULTIPART", - "properties": { - "inputType": "CSV_FILE" - }, - "name": "csvFile", - "timeCreated": "Wed Nov 14 15:49:26 UTC 2018", - "createdBy": "admin", - "description": "" - }, - "jsonFile": { - "type": "MULTIPART", - "properties": { - "inputType": "JSON_FILE" - }, - "name": "jsonFile", - "timeCreated": "Wed Nov 14 15:49:26 UTC 2018", - "createdBy": "admin", - "description": "" - }, - "csv": { - "type": "FORM_DATA", - "properties": { - "inputType": "CSV" - }, - "name": "csv", - "timeCreated": "Wed Nov 14 15:49:26 UTC 2018", - "createdBy": "admin", - "description": "" - }, - "json": { - "type": "FORM_DATA", - "properties": { - "inputType": "JSON" - }, - "name": "json", - "timeCreated": "Wed Nov 14 15:49:26 UTC 2018", - "createdBy": "admin", - "description": "" - } - }, - "providerId": "edu.emory.cci.bindaas.datasource.provider.mongodb.MongoDBProvider", - "providerVersion": 1, - "name": "Heatmap", - "timeCreated": "Wed Nov 14 15:49:26 UTC 2018", - "createdBy": "admin", - "description": "Point Marking Objects" - }, - "HeatmapEdit": { - "dataSource": { - "host": "ca-mongo", - "port": "27017", - "db": "camic", - "collection": "heatmapEdit", - "initialize": true - }, - "queryEndpoints": { - "get": { - "queryTemplate": "{\n\t\"_operation\" : \"find\" ,\n\t\"_operation_args\" : {\n\t\t\t\t\t\t\t\"query\" : { \u0027_id\u0027 : {\"$oid\":\"$id$\"}} ,\n\t\t\t\t\t\t\t\"limit\" : 1\n\t\t\t\t\t\t}\n}", - "metaData": {}, - "tags": [], - "bindVariables": { - "id": { - "name": "id", - "required": true, - "defaultValue": "", - "description": "" - } - }, - "stage": "UNVERIFIED", - "outputFormat": { - "outputFormat": "JSON" - }, - "name": "get", - "timeCreated": "Wed Apr 24 18:10:50 GMT 2019", - "createdBy": "admin", - "description": "" - }, - "find": { - "queryTemplate": "{\n \"_operation\" : \"find\" ,\n \"_operation_args\" : {\n\"query\" : {\u0027user_id\u0027: {$regex: \"$user$\", $options: \"i\"},\n \u0027provenance.image.slide\u0027: \"$slide$\",\n \u0027provenance.analysis.execution_id\u0027: {$regex: \"$name$\", $options: \"i\"}}\n}\n}", - "metaData": {}, - "tags": [], - "bindVariables": { - "user": { - "name": "user", - "required": false, - "defaultValue": "", - "description": "" - }, - "slide": { - "name": "slide", - "required": false, - "defaultValue": "", - "description": "" - }, - "name": { - "name": "name", - "required": false, - "defaultValue": "", - "description": "" - } - }, - "stage": "UNVERIFIED", - "outputFormat": { - "outputFormat": "JSON" - }, - "name": "find", - "timeCreated": "Thu Jun 27 19:40:01 GMT 2019", - "createdBy": "admin", - "description": " " - } - }, - "deleteEndpoints": { - "update": { - "queryTemplate": "{\n\t\"_operation\" : \"update\" ,\n\t\"_operation_args\" : {\n\t\t\t\t\t\t\t\"query\" : { \u0027user_id\u0027 : \u0027$user$\u0027, \u0027provenance.image.specimen\u0027:\u0027$specimen$\u0027, \n\u0027provenance.image.slide\u0027:\"$slide$\",\u0027provenance.analysis.execution_id\u0027:\u0027$name$\u0027 } ,\n\t\t\t\t\t\t\t\"update\": {$set: { \u0027data\u0027 : $data$}},\n\t\t\t\t\t\t\t\"upsert\": true,\n\t\t\t\t\t\t\t\"multi\" : true\n\t\t\t\t\t\t}\n}\n ", - "tags": [], - "bindVariables": { - "user": { - "name": "user", - "required": true, - "defaultValue": "", - "description": "" - }, - "specimen": { - "name": "specimen", - "required": true, - "defaultValue": "", - "description": "" - }, - "slide": { - "name": "slide", - "required": true, - "defaultValue": "", - "description": "" - }, - "name": { - "name": "name", - "required": true, - "defaultValue": "", - "description": "" - }, - "data": { - "name": "data", - "required": true, - "defaultValue": "", - "description": "" - } - }, - "stage": "UNVERIFIED", - "name": "update", - "timeCreated": "Tue Jul 02 17:50:23 GMT 2019", - "createdBy": "admin", - "description": "" - }, - "delete": { - "queryTemplate": "{\n\t\"_operation\" : \"delete\" ,\n\t\"_operation_args\" : {\n\t\t\t\t\t\t\t\"query\" : { \u0027user_id\u0027 : \u0027$user$\u0027,\u0027provenance.image.slide\u0027: \"$slide$\", \u0027provenance.analysis.execution_id\u0027: \"$name$\" }\n\t\t\t\t\t\t}\n}\n ", - "tags": [], - "bindVariables": { - "user": { - "name": "user", - "required": true, - "defaultValue": "", - "description": "" - }, - "slide": { - "name": "slide", - "required": true, - "defaultValue": "", - "description": "" - }, - "name": { - "name": "name", - "required": true, - "defaultValue": "", - "description": "" - } - }, - "stage": "UNVERIFIED", - "name": "delete", - "timeCreated": "Tue Jul 02 18:24:29 GMT 2019", - "createdBy": "admin", - "description": "" - } - }, - "submitEndpoints": { - "csvFile": { - "type": "MULTIPART", - "properties": { - "inputType": "CSV_FILE" - }, - "name": "csvFile", - "timeCreated": "Wed Apr 24 18:02:23 GMT 2019", - "createdBy": "admin", - "description": "" - }, - "jsonFile": { - "type": "MULTIPART", - "properties": { - "inputType": "JSON_FILE" - }, - "name": "jsonFile", - "timeCreated": "Wed Apr 24 18:02:23 GMT 2019", - "createdBy": "admin", - "description": "" - }, - "csv": { - "type": "FORM_DATA", - "properties": { - "inputType": "CSV" - }, - "name": "csv", - "timeCreated": "Wed Apr 24 18:02:23 GMT 2019", - "createdBy": "admin", - "description": "" - }, - "json": { - "type": "FORM_DATA", - "properties": { - "inputType": "JSON" - }, - "name": "json", - "timeCreated": "Wed Apr 24 18:02:23 GMT 2019", - "createdBy": "admin", - "description": "" - } - }, - "providerId": "edu.emory.cci.bindaas.datasource.provider.mongodb.MongoDBProvider", - "providerVersion": 1, - "name": "HeatmapEdit", - "timeCreated": "Wed Apr 24 18:02:21 GMT 2019", - "createdBy": "admin", - "description": "Edit Data for Heatmaps" - }, - "Log": { - "dataSource": { - "host": "ca-mongo", - "port": "27017", - "db": "camic", - "collection": "log", - "initialize": true - }, - "queryEndpoints": {}, - "deleteEndpoints": {}, - "submitEndpoints": { - "csvFile": { - "type": "MULTIPART", - "properties": { - "inputType": "CSV_FILE" - }, - "name": "csvFile", - "timeCreated": "Tue Oct 29 20:54:11 GMT 2019", - "createdBy": "admin", - "description": "" - }, - "jsonFile": { - "type": "MULTIPART", - "properties": { - "inputType": "JSON_FILE" - }, - "name": "jsonFile", - "timeCreated": "Tue Oct 29 20:54:11 GMT 2019", - "createdBy": "admin", - "description": "" - }, - "csv": { - "type": "FORM_DATA", - "properties": { - "inputType": "CSV" - }, - "name": "csv", - "timeCreated": "Tue Oct 29 20:54:11 GMT 2019", - "createdBy": "admin", - "description": "" - }, - "json": { - "type": "FORM_DATA", - "properties": { - "inputType": "JSON" - }, - "name": "json", - "timeCreated": "Tue Oct 29 20:54:11 GMT 2019", - "createdBy": "admin", - "description": "" - } - }, - "providerId": "edu.emory.cci.bindaas.datasource.provider.mongodb.MongoDBProvider", - "providerVersion": 1, - "name": "Log", - "timeCreated": "Tue Oct 29 20:54:11 GMT 2019", - "createdBy": "admin", - "description": "log" - }, - "Configuration": { - "dataSource": { - "host": "ca-mongo", - "port": "27017", - "db": "camic", - "collection": "configuration", - "initialize": true - }, - "queryEndpoints": { - "getConfigByName": { - "queryTemplate": "{\n\t\"_operation\" : \"find\" ,\n\t\"_operation_args\" : {\n\t\t\t\t\t\t\t\"query\" : { \u0027config_name\u0027 : \"$name$\"} ,\n\t\t\t\t\t\t\t\"limit\" : 1\n\t\t\t\t\t\t}\n}\n ", - "metaData": {}, - "tags": [], - "bindVariables": { - "name": { - "name": "name", - "required": true, - "defaultValue": "", - "description": "" - } - }, - "stage": "UNVERIFIED", - "outputFormat": { - "outputFormat": "JSON" - }, - "name": "getConfigByName", - "timeCreated": "Thu Nov 07 17:09:07 GMT 2019", - "createdBy": "admin", - "description": "" - } - }, - "deleteEndpoints": {}, - "submitEndpoints": { - "csvFile": { - "type": "MULTIPART", - "properties": { - "inputType": "CSV_FILE" - }, - "name": "csvFile", - "timeCreated": "Tue Oct 29 20:54:11 GMT 2019", - "createdBy": "admin", - "description": "" - }, - "jsonFile": { - "type": "MULTIPART", - "properties": { - "inputType": "JSON_FILE" - }, - "name": "jsonFile", - "timeCreated": "Tue Oct 29 20:54:11 GMT 2019", - "createdBy": "admin", - "description": "" - }, - "csv": { - "type": "FORM_DATA", - "properties": { - "inputType": "CSV" - }, - "name": "csv", - "timeCreated": "Tue Oct 29 20:54:11 GMT 2019", - "createdBy": "admin", - "description": "" - }, - "json": { - "type": "FORM_DATA", - "properties": { - "inputType": "JSON" - }, - "name": "json", - "timeCreated": "Tue Oct 29 20:54:11 GMT 2019", - "createdBy": "admin", - "description": "" - } - }, - "providerId": "edu.emory.cci.bindaas.datasource.provider.mongodb.MongoDBProvider", - "providerVersion": 1, - "name": "Configuration", - "timeCreated": "Tue Oct 29 20:54:11 GMT 2019", - "createdBy": "admin", - "description": "configuration" - } - }, - "params": {}, - "name": "caMicroscope", - "timeCreated": "Wed Aug 01 17:17:55 UTC 2018", - "createdBy": "admin", - "description": "caMicroscope Data model" -} \ No newline at end of file diff --git a/config/bindaas_projects/caMicroscopePrivate.project b/config/bindaas_projects/caMicroscopePrivate.project deleted file mode 100644 index 356c8707..00000000 --- a/config/bindaas_projects/caMicroscopePrivate.project +++ /dev/null @@ -1,1283 +0,0 @@ -{ - "profiles": { - "Mark": { - "dataSource": { - "host": "ca-mongo", - "port": "27017", - "db": "camic-pri", - "collection": "mark", - "initialize": true - }, - "queryEndpoints": { - "get": { - "queryTemplate": "{\n\t\"_operation\" : \"find\" ,\n\t\"_operation_args\" : {\n\t\t\t\t\t\t\t\"query\" : { \u0027_id\u0027 : {\"$oid\":\"$id$\"}} ,\n\t\t\t\t\t\t\t\"limit\" : 1\n\t\t\t\t\t\t}\n}\n ", - "metaData": {}, - "tags": [], - "bindVariables": { - "id": { - "name": "id", - "required": true, - "defaultValue": "", - "description": "" - } - }, - "stage": "UNVERIFIED", - "outputFormat": { - "outputFormat": "JSON" - }, - "name": "get", - "timeCreated": "Wed Aug 29 18:40:50 UTC 2018", - "createdBy": "admin", - "description": " " - }, - "findTypesExec": { - "queryTemplate": "{ \"_operation\" : \"distinct\" , \"_operation_args\" : { \"field\" : \"provenance.analysis\", \"query\" : {\u0027provenance.image.slide\u0027: \"$slide$\",\u0027provenance.analysis.execution_id\u0027: $name$ } } } ", - "metaData": {}, - "tags": [], - "bindVariables": { - "slide": { - "name": "slide", - "required": true, - "defaultValue": "", - "description": "" - }, - "name": { - "name": "name", - "required": true, - "defaultValue": "", - "description": "" - } - }, - "stage": "UNVERIFIED", - "outputFormat": { - "outputFormat": "JSON" - }, - "name": "findTypesExec", - "timeCreated": "Thu May 09 15:09:53 GMT 2019", - "createdBy": "admin", - "description": " " - }, - "multiFind": { - "queryTemplate": "{\n \"_operation\" : \"find\" ,\n \"_operation_args\" : {\n\"query\" :{$and: [\n{\"provenance.analysis.execution_id\": {$in: $name$},\n \"provenance.image.slide\" : \"$slide$\",\n \"footprint\": { $not: {$lt: $footprint$}},\n \"provenance.analysis.source\" : {$regex: \"$source$\", $options: \"i\"}},\n{\"x\": { $not: {$lt: $x0$}}},\n{\"x\": { $not: {$gt: $x1$}}},\n{\"y\": { $not: {$lt: $y0$}}},\n{\"y\": { $not: {$gt: $y1$}}}\n ]}\n}\n}\n ", - "metaData": {}, - "tags": [], - "bindVariables": { - "name": { - "name": "name", - "required": true, - "defaultValue": "", - "description": "" - }, - "slide": { - "name": "slide", - "required": false, - "defaultValue": "", - "description": "" - }, - "footprint": { - "name": "footprint", - "required": false, - "defaultValue": "0", - "description": "" - }, - "source": { - "name": "source", - "required": false, - "defaultValue": "", - "description": "" - }, - "x0": { - "name": "x0", - "required": false, - "defaultValue": "0", - "description": "" - }, - "x1": { - "name": "x1", - "required": false, - "defaultValue": "9", - "description": "" - }, - "y0": { - "name": "y0", - "required": false, - "defaultValue": "0", - "description": "" - }, - "y1": { - "name": "y1", - "required": false, - "defaultValue": "9", - "description": "" - } - }, - "stage": "UNVERIFIED", - "outputFormat": { - "outputFormat": "JSON" - }, - "name": "multiFind", - "timeCreated": "Tue Jul 02 17:47:09 GMT 2019", - "createdBy": "admin", - "description": " " - }, - "find": { - "queryTemplate": "{\n \"_operation\" : \"find\" ,\n \"_operation_args\" : {\n\"query\" :{$and: [\n{\"provenance.analysis.execution_id\" : {$regex: \"$name$\", $options: \"i\"},\n \"provenance.image.slide\" : \"$slide$\",\n \"footprint\": { $not: {$lt: $footprint$}},\n \"provenance.analysis.source\" : {$regex: \"$source$\", $options: \"i\"}},\n{\"x\": { $not: {$lt: $x0$}}},\n{\"x\": { $not: {$gt: $x1$}}},\n{\"y\": { $not: {$lt: $y0$}}},\n{\"y\": { $not: {$gt: $y1$}}}\n ]}\n}\n}\n ", - "metaData": {}, - "tags": [], - "bindVariables": { - "name": { - "name": "name", - "required": false, - "defaultValue": "", - "description": "" - }, - "slide": { - "name": "slide", - "required": false, - "defaultValue": "", - "description": "" - }, - "source": { - "name": "source", - "required": false, - "defaultValue": "", - "description": "" - }, - "footprint": { - "name": "footprint", - "required": false, - "defaultValue": "0", - "description": "" - }, - "x0": { - "name": "x0", - "required": false, - "defaultValue": "0", - "description": "" - }, - "x1": { - "name": "x1", - "required": false, - "defaultValue": "9", - "description": "" - }, - "y0": { - "name": "y0", - "required": false, - "defaultValue": "0", - "description": "" - }, - "y1": { - "name": "y1", - "required": false, - "defaultValue": "9", - "description": "" - } - }, - "stage": "UNVERIFIED", - "outputFormat": { - "outputFormat": "JSON" - }, - "name": "find", - "timeCreated": "Tue Jul 02 17:48:26 GMT 2019", - "createdBy": "admin", - "description": " " - }, - "findBound": { - "queryTemplate": "{ \"_operation\" : \"find\" , \"_operation_args\" : { \"query\" : {\"provenance.analysis.execution_id\" : {$regex: \"$name$\", $options: \"i\"},\n \"provenance.image.slide\" : \"$slide$\",\n \"provenance.analysis.source\" : {$regex: \"$key$\", $options: \"i\"}, \"geometries.features.bound\": { $geoIntersects: { $geometry: { \"type\": \"Polygon\", \"coordinates\": [[[ $x0$, $y0$ ],[ $x0$, $y1$ ],[ $x1$, $y1$ ],[ $x1$, $y0$ ],[ $x0$, $y0$ ]]] } } } }, \"limit\" : 1000} } ", - "metaData": {}, - "tags": [], - "bindVariables": { - "name": { - "name": "name", - "required": false, - "defaultValue": "", - "description": "" - }, - "key": { - "name": "key", - "required": false, - "defaultValue": "", - "description": "" - }, - "slide": { - "name": "slide", - "required": false, - "defaultValue": "", - "description": "" - }, - "x0": { - "name": "x0", - "required": true, - "defaultValue": "", - "description": "" - }, - "y0": { - "name": "y0", - "required": true, - "defaultValue": "", - "description": "" - }, - "x1": { - "name": "x1", - "required": true, - "defaultValue": "", - "description": "" - }, - "y1": { - "name": "y1", - "required": true, - "defaultValue": "", - "description": "" - } - }, - "stage": "UNVERIFIED", - "outputFormat": { - "outputFormat": "JSON" - }, - "name": "findBound", - "timeCreated": "Tue Jul 02 17:49:32 GMT 2019", - "createdBy": "admin", - "description": "find where bound intersects given rect " - }, - "findTypes": { - "queryTemplate": "{ \"_operation\" : \"distinct\" , \"_operation_args\" : { \"field\" : \"provenance.analysis\", \"query\" : {\u0027provenance.image.slide\u0027: \"$slide$\" } } } ", - "metaData": {}, - "tags": [], - "bindVariables": { - "slide": { - "name": "slide", - "required": true, - "defaultValue": "", - "description": "" - } - }, - "stage": "UNVERIFIED", - "outputFormat": { - "outputFormat": "JSON" - }, - "name": "findTypes", - "timeCreated": "Tue Jul 02 18:37:03 GMT 2019", - "createdBy": "admin", - "description": " " - } - }, - "deleteEndpoints": { - "deleteMark": { - "queryTemplate": "{\n\t\"_operation\" : \"delete\" ,\n\t\"_operation_args\" : {\n\t\t\t\t\t\t\t\"query\" : { \u0027_id\u0027 : {\"$oid\":\"$id$\"}, \u0027provenance.image.slide\u0027: \"$slide$\" }\n\t\t\t\t\t\t}\n}\n ", - "tags": [], - "bindVariables": { - "id": { - "name": "id", - "required": true, - "defaultValue": "", - "description": "" - }, - "slide": { - "name": "slide", - "required": true, - "defaultValue": "", - "description": "" - } - }, - "stage": "UNVERIFIED", - "name": "deleteMark", - "timeCreated": "Tue Jul 02 18:20:50 GMT 2019", - "createdBy": "admin", - "description": "" - } - }, - "submitEndpoints": { - "csvFile": { - "type": "MULTIPART", - "properties": { - "inputType": "CSV_FILE" - }, - "name": "csvFile", - "timeCreated": "Wed Aug 01 17:23:41 UTC 2018", - "createdBy": "admin", - "description": "" - }, - "jsonFile": { - "type": "MULTIPART", - "properties": { - "inputType": "JSON_FILE" - }, - "name": "jsonFile", - "timeCreated": "Wed Aug 01 17:23:41 UTC 2018", - "createdBy": "admin", - "description": "" - }, - "csv": { - "type": "FORM_DATA", - "properties": { - "inputType": "CSV" - }, - "name": "csv", - "timeCreated": "Wed Aug 01 17:23:41 UTC 2018", - "createdBy": "admin", - "description": "" - }, - "json": { - "type": "FORM_DATA", - "properties": { - "inputType": "JSON" - }, - "name": "json", - "timeCreated": "Wed Aug 01 17:23:41 UTC 2018", - "createdBy": "admin", - "description": "" - } - }, - "providerId": "edu.emory.cci.bindaas.datasource.provider.mongodb.MongoDBProvider", - "providerVersion": 1, - "name": "Mark", - "timeCreated": "Wed Aug 01 17:23:41 UTC 2018", - "createdBy": "admin", - "description": "Geospatial Marking Objects" - }, - "Overlay": { - "dataSource": { - "host": "ca-mongo", - "port": "27017", - "db": "camic-pri", - "collection": "overlay", - "initialize": true - }, - "queryEndpoints": { - "get": { - "queryTemplate": "{\n\t\"_operation\" : \"find\" ,\n\t\"_operation_args\" : {\n\t\t\t\t\t\t\t\"query\" : { \u0027_id\u0027 : {\"$oid\":\"$id$\"}} ,\n\t\t\t\t\t\t\t\"limit\" : 1\n\t\t\t\t\t\t}\n}\n ", - "metaData": {}, - "tags": [], - "bindVariables": { - "id": { - "name": "id", - "required": true, - "defaultValue": "", - "description": "" - } - }, - "stage": "UNVERIFIED", - "outputFormat": { - "outputFormat": "JSON" - }, - "name": "get", - "timeCreated": "Wed Aug 29 18:41:00 UTC 2018", - "createdBy": "admin", - "description": " " - }, - "find": { - "queryTemplate": "{\n \"_operation\" : \"find\" ,\n \"_operation_args\" : {\n\"query\" : { \"name\" : {$regex: \"$name$\", $options: \"i\"},\n\"slide\" : \"$slide$\",\n\"location\" : {$regex: \"$location$\", $options: \"i\"}}\n}\n} ", - "metaData": {}, - "tags": [], - "bindVariables": { - "name": { - "name": "name", - "required": false, - "defaultValue": "", - "description": "" - }, - "slide": { - "name": "slide", - "required": true, - "defaultValue": "", - "description": "" - }, - "location": { - "name": "location", - "required": false, - "defaultValue": "", - "description": "" - } - }, - "stage": "UNVERIFIED", - "outputFormat": { - "outputFormat": "JSON" - }, - "name": "find", - "timeCreated": "Mon Jul 08 16:18:19 GMT 2019", - "createdBy": "admin", - "description": " " - } - }, - "deleteEndpoints": { - "updateOverlay": { - "queryTemplate": "{\n\t\"_operation\" : \"update\" ,\n\t\"_operation_args\" : {\n\t\t\t\t\t\t\t\"query\" : { \u0027slide\u0027 : \"$slide$\", \u0027_id\u0027 : {\"$oid\":\"$id$\"}} ,\n\t\t\t\t\t\t\t\"update\": {$set: { \u0027$field$\u0027 : \u0027$value$\u0027 }},\n\t\t\t\t\t\t\t\"upsert\": \u0027true\u0027,\n\t\t\t\t\t\t\t\"multi\" : \u0027false\u0027\n\t\t\t\t\t\t}\n}\n ", - "tags": [], - "bindVariables": { - "slide": { - "name": "slide", - "required": true, - "defaultValue": "", - "description": "" - }, - "id": { - "name": "id", - "required": true, - "defaultValue": "", - "description": "" - }, - "field": { - "name": "field", - "required": true, - "defaultValue": "", - "description": "" - }, - "value": { - "name": "value", - "required": true, - "defaultValue": "", - "description": "" - } - }, - "stage": "UNVERIFIED", - "name": "updateOverlay", - "timeCreated": "Tue Jul 02 18:21:53 GMT 2019", - "createdBy": "admin", - "description": "" - }, - "deleteOverlay": { - "queryTemplate": "{\n\t\"_operation\" : \"delete\" ,\n\t\"_operation_args\" : {\n\t\t\t\t\t\t\t\"query\" : { \u0027_id\u0027 : {\"$oid\":\"$id$\"}, \u0027slide\u0027: \"$slide$\" }\n\t\t\t\t\t\t}\n}\n ", - "tags": [], - "bindVariables": { - "id": { - "name": "id", - "required": true, - "defaultValue": "", - "description": "" - }, - "slide": { - "name": "slide", - "required": true, - "defaultValue": "", - "description": "" - } - }, - "stage": "UNVERIFIED", - "name": "deleteOverlay", - "timeCreated": "Tue Jul 02 18:22:07 GMT 2019", - "createdBy": "admin", - "description": "" - } - }, - "submitEndpoints": { - "csvFile": { - "type": "MULTIPART", - "properties": { - "inputType": "CSV_FILE" - }, - "name": "csvFile", - "timeCreated": "Wed Aug 01 17:24:16 UTC 2018", - "createdBy": "admin", - "description": "" - }, - "jsonFile": { - "type": "MULTIPART", - "properties": { - "inputType": "JSON_FILE" - }, - "name": "jsonFile", - "timeCreated": "Wed Aug 01 17:24:16 UTC 2018", - "createdBy": "admin", - "description": "" - }, - "csv": { - "type": "FORM_DATA", - "properties": { - "inputType": "CSV" - }, - "name": "csv", - "timeCreated": "Wed Aug 01 17:24:16 UTC 2018", - "createdBy": "admin", - "description": "" - }, - "json": { - "type": "FORM_DATA", - "properties": { - "inputType": "JSON" - }, - "name": "json", - "timeCreated": "Wed Aug 01 17:24:16 UTC 2018", - "createdBy": "admin", - "description": "" - } - }, - "providerId": "edu.emory.cci.bindaas.datasource.provider.mongodb.MongoDBProvider", - "providerVersion": 1, - "name": "Overlay", - "timeCreated": "Wed Aug 01 17:24:16 UTC 2018", - "createdBy": "admin", - "description": "Overlay Representation" - }, - "Slide": { - "dataSource": { - "host": "ca-mongo", - "port": "27017", - "db": "camic-pri", - "collection": "slide", - "initialize": true - }, - "queryEndpoints": { - "get": { - "queryTemplate": "{\n\t\"_operation\" : \"find\" ,\n\t\"_operation_args\" : {\n\t\t\t\t\t\t\t\"query\" : { \u0027_id\u0027 : {\"$oid\":\"$id$\"}} ,\n\t\t\t\t\t\t\t\"limit\" : 1\n\t\t\t\t\t\t}\n}\n ", - "metaData": {}, - "tags": [], - "bindVariables": { - "id": { - "name": "id", - "required": true, - "defaultValue": "", - "description": "" - } - }, - "stage": "UNVERIFIED", - "outputFormat": { - "outputFormat": "JSON" - }, - "name": "get", - "timeCreated": "Wed Aug 29 18:41:29 UTC 2018", - "createdBy": "admin", - "description": " " - }, - "find": { - "queryTemplate": "{\n \"_operation\" : \"find\" ,\n \"_operation_args\" : {\n\"query\" : {\u0027name\u0027: {$regex: \"$slide$\", $options: \"i\"},\n \u0027specimen\u0027: {$regex: \"$specimen$\", $options: \"i\"},\n \u0027study\u0027: {$regex: \"$study$\", $options: \"i\"},\n \u0027location\u0027: {$regex: \"$location$\", $options: \"i\"},\n \u0027collection: $collection$\"\n}\n}\n} ", - "metaData": {}, - "tags": [], - "bindVariables": { - "slide": { - "name": "slide", - "required": false, - "defaultValue": "", - "description": "" - }, - "location": { - "name": "location", - "required": false, - "defaultValue": "", - "description": "" - }, - "specimen": { - "name": "specimen", - "required": false, - "defaultValue": "", - "description": "" - }, - "study": { - "name": "study", - "required": false, - "defaultValue": "", - "description": "" - }, - "collection": { - "name": "collection", - "required": true, - "defaultValue": "", - "description": "" - } - }, - "stage": "UNVERIFIED", - "outputFormat": { - "outputFormat": "JSON" - }, - "name": "find", - "timeCreated": "Mon Oct 28 19:07:35 GMT 2019", - "createdBy": "admin", - "description": " " - } - }, - "deleteEndpoints": { - "updateSlide": { - "queryTemplate": "{\n\t\"_operation\" : \"update\" ,\n\t\"_operation_args\" : {\n\t\t\t\t\t\t\t\"query\" : { \u0027name\u0027 : $slide$} ,\n\t\t\t\t\t\t\t\"update\": {$set: { \u0027$field$\u0027 : \u0027$value$\u0027 }},\n\t\t\t\t\t\t\t\"upsert\": \u0027true\u0027,\n\t\t\t\t\t\t\t\"multi\" : \u0027false\u0027\n\t\t\t\t\t\t}\n}\n ", - "tags": [], - "bindVariables": { - "slide": { - "name": "slide", - "required": true, - "defaultValue": "", - "description": "" - }, - "field": { - "name": "field", - "required": true, - "defaultValue": "", - "description": "" - }, - "value": { - "name": "value", - "required": true, - "defaultValue": "", - "description": "" - } - }, - "stage": "UNVERIFIED", - "name": "updateSlide", - "timeCreated": "Tue Jul 02 18:21:13 GMT 2019", - "createdBy": "admin", - "description": "" - }, - "deleteSlide": { - "queryTemplate": "{\n\t\"_operation\" : \"delete\" ,\n\t\"_operation_args\" : {\n\t\t\t\t\t\t\t\"query\" : { \u0027slide.name\u0027 : \"\"$slide$\"\" }\n\t\t\t\t\t\t}\n}\n ", - "tags": [], - "bindVariables": { - "slide": { - "name": "slide", - "required": true, - "defaultValue": "", - "description": "" - } - }, - "stage": "UNVERIFIED", - "name": "deleteSlide", - "timeCreated": "Tue Jul 02 18:21:26 GMT 2019", - "createdBy": "admin", - "description": "" - } - }, - "submitEndpoints": { - "csvFile": { - "type": "MULTIPART", - "properties": { - "inputType": "CSV_FILE" - }, - "name": "csvFile", - "timeCreated": "Wed Aug 01 17:24:37 UTC 2018", - "createdBy": "admin", - "description": "" - }, - "jsonFile": { - "type": "MULTIPART", - "properties": { - "inputType": "JSON_FILE" - }, - "name": "jsonFile", - "timeCreated": "Wed Aug 01 17:24:37 UTC 2018", - "createdBy": "admin", - "description": "" - }, - "csv": { - "type": "FORM_DATA", - "properties": { - "inputType": "CSV" - }, - "name": "csv", - "timeCreated": "Wed Aug 01 17:24:37 UTC 2018", - "createdBy": "admin", - "description": "" - }, - "json": { - "type": "FORM_DATA", - "properties": { - "inputType": "JSON" - }, - "name": "json", - "timeCreated": "Wed Aug 01 17:24:37 UTC 2018", - "createdBy": "admin", - "description": "" - } - }, - "providerId": "edu.emory.cci.bindaas.datasource.provider.mongodb.MongoDBProvider", - "providerVersion": 1, - "name": "Slide", - "timeCreated": "Wed Aug 01 17:24:37 UTC 2018", - "createdBy": "admin", - "description": "Represents Slide Objects" - }, - "Template": { - "dataSource": { - "host": "ca-mongo", - "port": "27017", - "db": "camic-pri", - "collection": "template", - "initialize": true - }, - "queryEndpoints": { - "find": { - "queryTemplate": "{\n \"_operation\" : \"find\" ,\n \"_operation_args\" : {\n\"query\" : {\"name\": {$regex: \"$name$\", $options: \"i\"},\n \"type\": {$regex: \"$type$\", $options: \"i\"}}\n}\n} ", - "metaData": {}, - "tags": [], - "bindVariables": { - "name": { - "name": "name", - "required": false, - "defaultValue": "", - "description": "" - }, - "type": { - "name": "type", - "required": false, - "defaultValue": "", - "description": "" - } - }, - "stage": "UNVERIFIED", - "outputFormat": { - "outputFormat": "JSON" - }, - "name": "find", - "timeCreated": "Mon Aug 27 15:46:51 UTC 2018", - "createdBy": "admin", - "description": " " - }, - "get": { - "queryTemplate": "{\n\t\"_operation\" : \"find\" ,\n\t\"_operation_args\" : {\n\t\t\t\t\t\t\t\"query\" : { \u0027_id\u0027 : {\"$oid\":\"$id$\"}} ,\n\t\t\t\t\t\t\t\"limit\" : 1\n\t\t\t\t\t\t}\n}\n ", - "metaData": {}, - "tags": [], - "bindVariables": { - "id": { - "name": "id", - "required": true, - "defaultValue": "", - "description": "" - } - }, - "stage": "UNVERIFIED", - "outputFormat": { - "outputFormat": "JSON" - }, - "name": "get", - "timeCreated": "Wed Aug 29 18:41:36 UTC 2018", - "createdBy": "admin", - "description": " " - } - }, - "deleteEndpoints": { - "deleteTemplate": { - "queryTemplate": "{\n\t\"_operation\" : \"delete\" ,\n\t\"_operation_args\" : {\n\t\t\t\t\t\t\t\"query\" : { \u0027_id\u0027 : {\"$oid\":\"$id$\"}}\n\t\t\t\t\t\t}\n} ", - "tags": [], - "bindVariables": { - "id": { - "name": "id", - "required": true, - "defaultValue": "", - "description": "" - } - }, - "stage": "UNVERIFIED", - "name": "deleteTemplate", - "timeCreated": "Wed Aug 29 18:44:30 UTC 2018", - "createdBy": "admin", - "description": "" - } - }, - "submitEndpoints": { - "csvFile": { - "type": "MULTIPART", - "properties": { - "inputType": "CSV_FILE" - }, - "name": "csvFile", - "timeCreated": "Wed Aug 01 17:25:14 UTC 2018", - "createdBy": "admin", - "description": "" - }, - "jsonFile": { - "type": "MULTIPART", - "properties": { - "inputType": "JSON_FILE" - }, - "name": "jsonFile", - "timeCreated": "Wed Aug 01 17:25:14 UTC 2018", - "createdBy": "admin", - "description": "" - }, - "csv": { - "type": "FORM_DATA", - "properties": { - "inputType": "CSV" - }, - "name": "csv", - "timeCreated": "Wed Aug 01 17:25:14 UTC 2018", - "createdBy": "admin", - "description": "" - }, - "json": { - "type": "FORM_DATA", - "properties": { - "inputType": "JSON" - }, - "name": "json", - "timeCreated": "Wed Aug 01 17:25:14 UTC 2018", - "createdBy": "admin", - "description": "" - } - }, - "providerId": "edu.emory.cci.bindaas.datasource.provider.mongodb.MongoDBProvider", - "providerVersion": 1, - "name": "Template", - "timeCreated": "Wed Aug 01 17:25:14 UTC 2018", - "createdBy": "admin", - "description": "Templates for Forms, JSONFORM type" - }, - "Authorization": { - "dataSource": { - "host": "ca-mongo", - "port": "27017", - "db": "camic-pri", - "collection": "authorization", - "initialize": true - }, - "queryEndpoints": { - "getAuth": { - "queryTemplate": "{\n\t\"_operation\" : \"find\" ,\n\t\"_operation_args\" : {\n\t\t\t\t\t\t\t\"query\" : { \u0027name\u0027 : \u0027$name$\u0027 }\n\t\t\t\t\t\t}\n}\n", - "metaData": {}, - "tags": [], - "bindVariables": { - "name": { - "name": "name", - "required": true, - "defaultValue": "", - "description": "" - } - }, - "stage": "UNVERIFIED", - "outputFormat": { - "outputFormat": "JSON" - }, - "name": "getAuth", - "timeCreated": "Fri Aug 10 19:27:36 UTC 2018", - "createdBy": "admin", - "description": "get auth for user" - } - }, - "deleteEndpoints": {}, - "submitEndpoints": { - "csvFile": { - "type": "MULTIPART", - "properties": { - "inputType": "CSV_FILE" - }, - "name": "csvFile", - "timeCreated": "Fri Aug 10 19:26:51 UTC 2018", - "createdBy": "admin", - "description": "" - }, - "jsonFile": { - "type": "MULTIPART", - "properties": { - "inputType": "JSON_FILE" - }, - "name": "jsonFile", - "timeCreated": "Fri Aug 10 19:26:51 UTC 2018", - "createdBy": "admin", - "description": "" - }, - "csv": { - "type": "FORM_DATA", - "properties": { - "inputType": "CSV" - }, - "name": "csv", - "timeCreated": "Fri Aug 10 19:26:51 UTC 2018", - "createdBy": "admin", - "description": "" - }, - "json": { - "type": "FORM_DATA", - "properties": { - "inputType": "JSON" - }, - "name": "json", - "timeCreated": "Fri Aug 10 19:26:51 UTC 2018", - "createdBy": "admin", - "description": "" - } - }, - "providerId": "edu.emory.cci.bindaas.datasource.provider.mongodb.MongoDBProvider", - "providerVersion": 1, - "name": "Authorization", - "timeCreated": "Fri Aug 10 19:26:51 UTC 2018", - "createdBy": "admin", - "description": "authorization for slides and collections" - }, - "Heatmap": { - "dataSource": { - "host": "ca-mongo", - "port": "27017", - "db": "camic-pri", - "collection": "heatmap", - "initialize": true - }, - "queryEndpoints": { - "findTypes": { - "queryTemplate": "{\n \"_operation\" : \"find\" ,\n \"_operation_args\" : {\n\"query\" : { \"provenance.analysis.execution_id\" : {$regex: \"$name$\", $options: \"i\"},\n\"provenance.image.slide\" : \"$slide$\"},\n\"fields\" :{ \u0027data\u0027 : 0 }\n}\n\n} ", - "metaData": {}, - "tags": [], - "bindVariables": { - "name": { - "name": "name", - "required": false, - "defaultValue": "", - "description": "" - }, - "slide": { - "name": "slide", - "required": false, - "defaultValue": "", - "description": "" - } - }, - "stage": "UNVERIFIED", - "outputFormat": { - "outputFormat": "JSON" - }, - "name": "findTypes", - "timeCreated": "Thu Jun 27 19:39:21 GMT 2019", - "createdBy": "admin", - "description": " " - }, - "find": { - "queryTemplate": "{\n \"_operation\" : \"find\" ,\n \"_operation_args\" : {\n\"query\" : { \"provenance.analysis.execution_id\" : {$regex: \"$name$\", $options: \"i\"},\n\"provenance.image.slide\" : \"$slide$\"\n}\n} ", - "metaData": {}, - "tags": [], - "bindVariables": { - "name": { - "name": "name", - "required": false, - "defaultValue": "", - "description": "" - }, - "slide": { - "name": "slide", - "required": false, - "defaultValue": "", - "description": "" - } - }, - "stage": "UNVERIFIED", - "outputFormat": { - "outputFormat": "JSON" - }, - "name": "find", - "timeCreated": "Thu Jun 27 19:40:22 GMT 2019", - "createdBy": "admin", - "description": " " - }, - "get": { - "queryTemplate": "{\n\t\u0027_operation\u0027: \u0027find\u0027,\n\t\u0027_operation_args\u0027: \n\t{\n\t\u0027query\u0027: {\n\t\t\"provenance.image.slide\": \"$slide$\",\n\t\t\"provenance.analysis.execution_id\":\"$name$\"\n\t},\n\t\t\u0027fields\u0027: {\n\t\t\t\u0027provenance\u0027:1,\n\u0027data\u0027:1,\n\t\t\t\u0027_id\u0027: 1\n\t\t}\n\t}\n} ", - "metaData": {}, - "tags": [], - "bindVariables": { - "slide": { - "name": "slide", - "required": true, - "defaultValue": "", - "description": "" - }, - "name": { - "name": "name", - "required": true, - "defaultValue": "", - "description": "" - } - }, - "stage": "UNVERIFIED", - "outputFormat": { - "outputFormat": "JSON" - }, - "name": "get", - "timeCreated": "Mon Jul 01 20:07:42 GMT 2019", - "createdBy": "admin", - "description": " " - } - }, - "deleteEndpoints": { - "deleteHeatmap": { - "queryTemplate": "{\n\t\"_operation\" : \"delete\" ,\n\t\"_operation_args\" : {\n\t\t\t\t\t\t\t\"query\" : { \u0027_id\u0027 : {\"$oid\":\"$id$\"}, \u0027provenance.image.slide\u0027: \"$slide$\" }\n\t\t\t\t\t\t}\n}\n ", - "tags": [], - "bindVariables": { - "id": { - "name": "id", - "required": true, - "defaultValue": "", - "description": "" - }, - "slide": { - "name": "slide", - "required": true, - "defaultValue": "", - "description": "" - } - }, - "stage": "UNVERIFIED", - "name": "deleteHeatmap", - "timeCreated": "Wed Nov 14 16:24:04 UTC 2018", - "createdBy": "admin", - "description": "" - }, - "updateThreshold": { - "queryTemplate": "{\n\t\"_operation\" : \"update\" ,\n\t\"_operation_args\" : {\n\t\t\t\t\t\t\t\"query\" : {\u0027provenance.analysis.execution_id\u0027 : \u0027$name$\u0027,\u0027provenance.image.slide\u0027 : \"$slide$\"} ,\n\t\t\t\t\t\t\t\"update\": {$set: { \u0027provenance.analysis.fields\u0027 : $fields$,\u0027provenance.analysis.setting\u0027 : $setting$ }},\n\t\t\t\t\t\t\t\"upsert\": true,\n\t\t\t\t\t\t\t\"multi\" : true\n\t\t\t\t\t\t}\n}\n ", - "tags": [], - "bindVariables": { - "name": { - "name": "name", - "required": true, - "defaultValue": "", - "description": "" - }, - "slide": { - "name": "slide", - "required": true, - "defaultValue": "", - "description": "" - }, - "fields": { - "name": "fields", - "required": true, - "defaultValue": "", - "description": "" - }, - "setting": { - "name": "setting", - "required": true, - "defaultValue": "", - "description": "" - } - }, - "stage": "UNVERIFIED", - "name": "updateThreshold", - "timeCreated": "Tue Jul 02 17:06:06 GMT 2019", - "createdBy": "admin", - "description": "" - } - }, - "submitEndpoints": { - "csvFile": { - "type": "MULTIPART", - "properties": { - "inputType": "CSV_FILE" - }, - "name": "csvFile", - "timeCreated": "Wed Nov 14 15:49:26 UTC 2018", - "createdBy": "admin", - "description": "" - }, - "jsonFile": { - "type": "MULTIPART", - "properties": { - "inputType": "JSON_FILE" - }, - "name": "jsonFile", - "timeCreated": "Wed Nov 14 15:49:26 UTC 2018", - "createdBy": "admin", - "description": "" - }, - "csv": { - "type": "FORM_DATA", - "properties": { - "inputType": "CSV" - }, - "name": "csv", - "timeCreated": "Wed Nov 14 15:49:26 UTC 2018", - "createdBy": "admin", - "description": "" - }, - "json": { - "type": "FORM_DATA", - "properties": { - "inputType": "JSON" - }, - "name": "json", - "timeCreated": "Wed Nov 14 15:49:26 UTC 2018", - "createdBy": "admin", - "description": "" - } - }, - "providerId": "edu.emory.cci.bindaas.datasource.provider.mongodb.MongoDBProvider", - "providerVersion": 1, - "name": "Heatmap", - "timeCreated": "Wed Nov 14 15:49:26 UTC 2018", - "createdBy": "admin", - "description": "Point Marking Objects" - }, - "HeatmapEdit": { - "dataSource": { - "host": "ca-mongo", - "port": "27017", - "db": "camic-pri", - "collection": "heatmapEdit", - "initialize": true - }, - "queryEndpoints": { - "get": { - "queryTemplate": "{\n\t\"_operation\" : \"find\" ,\n\t\"_operation_args\" : {\n\t\t\t\t\t\t\t\"query\" : { \u0027_id\u0027 : {\"$oid\":\"$id$\"}} ,\n\t\t\t\t\t\t\t\"limit\" : 1\n\t\t\t\t\t\t}\n}", - "metaData": {}, - "tags": [], - "bindVariables": { - "id": { - "name": "id", - "required": true, - "defaultValue": "", - "description": "" - } - }, - "stage": "UNVERIFIED", - "outputFormat": { - "outputFormat": "JSON" - }, - "name": "get", - "timeCreated": "Wed Apr 24 18:10:50 GMT 2019", - "createdBy": "admin", - "description": "" - }, - "find": { - "queryTemplate": "{\n \"_operation\" : \"find\" ,\n \"_operation_args\" : {\n\"query\" : {\u0027user_id\u0027: {$regex: \"$user$\", $options: \"i\"},\n \u0027provenance.image.slide\u0027: \"$slide$\",\n \u0027provenance.analysis.execution_id\u0027: {$regex: \"$name$\", $options: \"i\"}}\n}\n}", - "metaData": {}, - "tags": [], - "bindVariables": { - "user": { - "name": "user", - "required": false, - "defaultValue": "", - "description": "" - }, - "slide": { - "name": "slide", - "required": false, - "defaultValue": "", - "description": "" - }, - "name": { - "name": "name", - "required": false, - "defaultValue": "", - "description": "" - } - }, - "stage": "UNVERIFIED", - "outputFormat": { - "outputFormat": "JSON" - }, - "name": "find", - "timeCreated": "Thu Jun 27 19:40:01 GMT 2019", - "createdBy": "admin", - "description": " " - } - }, - "deleteEndpoints": { - "update": { - "queryTemplate": "{\n\t\"_operation\" : \"update\" ,\n\t\"_operation_args\" : {\n\t\t\t\t\t\t\t\"query\" : { \u0027user_id\u0027 : \u0027$user$\u0027, \u0027provenance.image.specimen\u0027:\u0027$specimen$\u0027, \n\u0027provenance.image.slide\u0027:\"$slide$\",\u0027provenance.analysis.execution_id\u0027:\u0027$name$\u0027 } ,\n\t\t\t\t\t\t\t\"update\": {$set: { \u0027data\u0027 : $data$}},\n\t\t\t\t\t\t\t\"upsert\": true,\n\t\t\t\t\t\t\t\"multi\" : true\n\t\t\t\t\t\t}\n}\n ", - "tags": [], - "bindVariables": { - "user": { - "name": "user", - "required": true, - "defaultValue": "", - "description": "" - }, - "specimen": { - "name": "specimen", - "required": true, - "defaultValue": "", - "description": "" - }, - "slide": { - "name": "slide", - "required": true, - "defaultValue": "", - "description": "" - }, - "name": { - "name": "name", - "required": true, - "defaultValue": "", - "description": "" - }, - "data": { - "name": "data", - "required": true, - "defaultValue": "", - "description": "" - } - }, - "stage": "UNVERIFIED", - "name": "update", - "timeCreated": "Tue Jul 02 17:50:23 GMT 2019", - "createdBy": "admin", - "description": "" - }, - "delete": { - "queryTemplate": "{\n\t\"_operation\" : \"delete\" ,\n\t\"_operation_args\" : {\n\t\t\t\t\t\t\t\"query\" : { \u0027user_id\u0027 : \u0027$user$\u0027,\u0027provenance.image.slide\u0027: \"$slide$\", \u0027provenance.analysis.execution_id\u0027: \"$name$\" }\n\t\t\t\t\t\t}\n}\n ", - "tags": [], - "bindVariables": { - "user": { - "name": "user", - "required": true, - "defaultValue": "", - "description": "" - }, - "slide": { - "name": "slide", - "required": true, - "defaultValue": "", - "description": "" - }, - "name": { - "name": "name", - "required": true, - "defaultValue": "", - "description": "" - } - }, - "stage": "UNVERIFIED", - "name": "delete", - "timeCreated": "Tue Jul 02 18:24:29 GMT 2019", - "createdBy": "admin", - "description": "" - } - }, - "submitEndpoints": { - "csvFile": { - "type": "MULTIPART", - "properties": { - "inputType": "CSV_FILE" - }, - "name": "csvFile", - "timeCreated": "Wed Apr 24 18:02:23 GMT 2019", - "createdBy": "admin", - "description": "" - }, - "jsonFile": { - "type": "MULTIPART", - "properties": { - "inputType": "JSON_FILE" - }, - "name": "jsonFile", - "timeCreated": "Wed Apr 24 18:02:23 GMT 2019", - "createdBy": "admin", - "description": "" - }, - "csv": { - "type": "FORM_DATA", - "properties": { - "inputType": "CSV" - }, - "name": "csv", - "timeCreated": "Wed Apr 24 18:02:23 GMT 2019", - "createdBy": "admin", - "description": "" - }, - "json": { - "type": "FORM_DATA", - "properties": { - "inputType": "JSON" - }, - "name": "json", - "timeCreated": "Wed Apr 24 18:02:23 GMT 2019", - "createdBy": "admin", - "description": "" - } - }, - "providerId": "edu.emory.cci.bindaas.datasource.provider.mongodb.MongoDBProvider", - "providerVersion": 1, - "name": "HeatmapEdit", - "timeCreated": "Wed Apr 24 18:02:21 GMT 2019", - "createdBy": "admin", - "description": "Edit Data for Heatmaps" - } - }, - "params": {}, - "name": "caMicroscopePrivate", - "timeCreated": "Wed Aug 01 17:17:55 UTC 2018", - "createdBy": "admin", - "description": "caMicroscope using another db and some additional fields" -} \ No newline at end of file diff --git a/config/non-pathdb-routes.json b/config/non-pathdb-routes.json deleted file mode 100644 index 6de515c2..00000000 --- a/config/non-pathdb-routes.json +++ /dev/null @@ -1,98 +0,0 @@ -{ - "root":"http://ca-front:80/", - "_root_public": "true", - "auth":{ - "permissions_field":"attrs", - "key_field": "accessCollection" - }, - "services":{ - "data":{ - "_base": "http://ca-data:9099/services/caMicroscope", - "Mark": { - "get":"/Mark/query/get", - "find":"/Mark/query/find", - "multi":"/Mark/query/multiFind", - "findBound":"/Mark/query/findBound", - "types":"/Mark/query/findTypes", - "typesExec":"/Mark/query/findTypesExec", - "post":{"path": "/Mark/submit/json", "attr": "write"}, - "delete":{"path": "/Mark/delete/deleteMark", "attr": "write"} - }, - "Heatmap": { - "get":"/Heatmap/query/get", - "find":"/Heatmap/query/find", - "types":"/Heatmap/query/findTypes", - "post":{"path": "/Heatmap/submit/json", "attr": "write"}, - "delete":{"path": "/Heatmap/delete/deleteHeatmap", "attr": "write"}, - "threshold":{"path": "/Heatmap/delete/updateThreshold", "attr": "write"} - }, - "Overlay": { - "get":"/Overlay/query/get", - "find":"/Overlay/query/find", - "post":{"path": "/Overlay/submit/json", "attr": "write"}, - "delete":{"path": "/Overlay/delete/deleteOverlay", "attr": "write"} - }, - "Slide": { - "get":"/Slide/query/get", - "find":"/Slide/query/find", - "post":{"path": "/Slide/submit/json", "attr": "write"}, - "delete":{"path": "/Slide/delete/deleteSlide", "attr": "write"}, - "update":{"path": "/Slide/delete/updateSlide", "attr": "write"}, - "test":{"path":"/Slide/query/find", "check_param": "collection"} - }, - "Template": { - "get":"/Template/query/get", - "find":"/Template/query/find", - "post":{"path": "/Template/submit/json", "attr": "write"}, - "delete":{"path": "/Template/delete/deleteTemplate", "attr": "write"} - }, - "HeatmapEdit": { - "get":"/HeatmapEdit/query/get", - "find":"/HeatmapEdit/query/find", - "post":{"path": "/HeatmapEdit/submit/json", "attr": "write"}, - "delete":{"path": "/HeatmapEdit/delete/delete", "attr": "write"}, - "update":{"path": "/HeatmapEdit/delete/update", "attr": "write"} - }, - "Auth": { - "get":{"path": "/Authorization/query/getAuth", "attr": "admin"}, - "post":{"path": "/Authorization/submit/json", "attr": "admin"} - }, - "Log": { - "post": "/Log/submit/json" - } - }, - "img": { - "_base":"http://ca-iip/fcgi-bin/iipsrv.fcgi", - "IIP": { - "raw":"" - }, - "Slide":{ - "_resolver":{ - "destination":"?DeepZoom={OUT}", - "url":"http://ca-data:9099/services/caMicroscope/Slide/query/get?id={IN}", - "field":"location", - "before":["_files", ".dzi"] - } - } - }, - "load": { - "_base": "http://ca-load:4000", - "Upload": { - "start": {"path":"/upload/start", "attr": "write"}, - "continue":"/upload/continue", - "finish":"/upload/finish" - }, - "Slide":{ - "info":"/data/one", - "thumb":"/data/thumbnail" - } - }, - "auth": { - "_public": "true", - "_base": "http://ca-auth:8010", - "Token":{ - "check":"/check" - } - } - } -} diff --git a/config/routes.json b/config/routes.json deleted file mode 100644 index a34d9786..00000000 --- a/config/routes.json +++ /dev/null @@ -1,111 +0,0 @@ -{ - "root":"http://ca-front:80/", - "_root_public": "true", - "auth":{ - "key_field": "accessCollection" - }, - "services":{ - "data":{ - "_base": "http://ca-data:9099/services/caMicroscope", - "Mark": { - "get":"/Mark/query/get", - "find":"/Mark/query/find", - "multi":"/Mark/query/multiFind", - "findBound":"/Mark/query/findBound", - "types":"/Mark/query/findTypes", - "typesExec":"/Mark/query/findTypesExec", - "post":{"path": "/Mark/submit/json", "attr": "write"}, - "delete":{"path": "/Mark/delete/deleteMark", "attr": "write"} - }, - "Heatmap": { - "get":"/Heatmap/query/get", - "find":"/Heatmap/query/find", - "types":"/Heatmap/query/findTypes", - "post":{"path": "/Heatmap/submit/json", "attr": "write"}, - "delete":{"path": "/Heatmap/delete/deleteHeatmap", "attr": "write"}, - "threshold":{"path": "/Heatmap/delete/updateThreshold", "attr": "write"} - }, - "Overlay": { - "get":"/Overlay/query/get", - "find":"/Overlay/query/find", - "post":{"path": "/Overlay/submit/json", "attr": "write"}, - "delete":{"path": "/Overlay/delete/deleteOverlay", "attr": "write"} - }, - "Slide": { - "get":"/Slide/query/get", - "find":"/Slide/query/find", - "post":{"path": "/Slide/submit/json", "attr": "write"}, - "delete":{"path": "/Slide/delete/deleteSlide", "attr": "write"}, - "update":{"path": "/Slide/delete/updateSlide", "attr": "write"}, - "test":{"path":"/Slide/query/find", "check_param": "collection"} - }, - "Template": { - "get":"/Template/query/get", - "find":"/Template/query/find", - "post":{"path": "/Template/submit/json", "attr": "write"}, - "delete":{"path": "/Template/delete/deleteTemplate", "attr": "write"} - }, - "HeatmapEdit": { - "get":"/HeatmapEdit/query/get", - "find":"/HeatmapEdit/query/find", - "post":{"path": "/HeatmapEdit/submit/json", "attr": "write"}, - "delete":{"path": "/HeatmapEdit/delete/delete", "attr": "write"}, - "update":{"path": "/HeatmapEdit/delete/update", "attr": "write"} - }, - "Auth": { - "list":"/Authorization/query/list", - "get":{"path": "/Authorization/query/getAuth", "attr": "admin"}, - "post":{"path": "/Authorization/submit/json", "attr": "admin"} - }, - "Log": { - "post": "/Log/submit/json" - }, - "Configuration": { - "getConfigByName": "/Configuration/query/getConfigByName" - } - }, - "private":{ - "_base": "http://ca-data:9099/services/caMicroscopePrivate", - "Slide": { - "get":"/Slide/query/get", - "find":{"path": "/Slide/query/find","check_param": "collection"}, - "post":{"path": "/Slide/submit/json", "attr": "write"}, - "delete":{"path": "/Slide/delete/deleteSlide", "attr": "write"}, - "update":{"path": "/Slide/delete/updateSlide", "attr": "write"} - } - }, - "img": { - "_base":"http://ca-iip/fcgi-bin/iipsrv.fcgi", - "IIP": { - "raw":"" - }, - "Slide":{ - "_resolver":{ - "destination":"?DeepZoom={OUT}", - "url":"http://ca-data:9099/services/caMicroscope/Slide/query/get?id={IN}", - "field":"location", - "before":["_files", ".dzi"] - } - } - }, - "load": { - "_base": "http://ca-load:4000", - "Upload": { - "start": {"path":"/upload/start", "attr": "write"}, - "continue":"/upload/continue", - "finish":"/upload/finish" - }, - "Slide":{ - "info":"/data/one", - "thumb":"/data/thumbnail" - } - }, - "auth": { - "_public": "true", - "_base": "http://ca-auth:8010", - "Token":{ - "check":"/check" - } - } - } -} diff --git a/develop.yml b/develop.yml index f0b7c270..1dc8fe8a 100644 --- a/develop.yml +++ b/develop.yml @@ -4,11 +4,15 @@ services: mongo: image: mongo:3.4.19-jessie container_name: ca-mongo + logging: + driver: none volumes: - ./db:/data/db idxMongo: image: mongo:3.4.19-jessie container_name: ca-idx + logging: + driver: none links: - mongo volumes: @@ -17,48 +21,31 @@ services: - /config/run_idx.sh depends_on: - mongo - bindaas: - build: "./Deps/Bindaas/" + back: + build: + context: "https://github.com/camicroscope/caracal.git#develop" + args: + viewer: "develop" depends_on: - "mongo" ports: - - "8080:8080" - - "9099:9099" - container_name: ca-data + - "4010:8010" + container_name: ca-back volumes: - - ./config/bindaas_projects/:/root/bindaas/bin/projects/ - - ./config/bindaas.config.json:/root/bindaas/bin/bindaas.config.json + - ./config/login.html:/root/src/static/login.html + - ./jwt_keys/:/root/src/keys/ + + environment: + JWK_URL: "https://www.googleapis.com/oauth2/v3/certs" + IIP_PATH: "http://ca-iip/fcgi-bin/iipsrv.fcgi" + MONGO_URI: "mongodb://ca-mongo" iip: - build: "https://github.com/caMicroscope/iipImage.git#develop" + build: "https://github.com/camicroscope/iipImage.git#develop" container_name: ca-iip volumes: - ./images/:/images/ - viewer: - build: "https://github.com/caMicroscope/caMicroscope.git#develop" - container_name: ca-front - environment: - - cacheoff=true - volumes: - - ./config/login.html:/usr/local/apache2/htdocs/login.html loader: - build: "https://github.com/caMicroscope/SlideLoader.git#develop" + build: "https://github.com/camicroscope/SlideLoader.git#develop" container_name: ca-load volumes: - ./images/:/images/ - security: - build: "https://github.com/caMicroscope/Security.git#develop" - container_name: ca-security - ports: - - "4010:4010" - environment: - - DISABLE_SEC=true - volumes: - - ./config/non-pathdb-routes.json:/root/src/routes.json - - ./jwt_keys/:/keys/ - auth: - build: "./Deps/auth_service/" - volumes: - - ./jwt_keys/:/keys/ - container_name: ca-auth - environment: - JWKS: "https://www.googleapis.com/oauth2/v3/certs" diff --git a/dh_caMicroscope.yml b/dh_caMicroscope.yml index 3f107059..ff1bbf50 100644 --- a/dh_caMicroscope.yml +++ b/dh_caMicroscope.yml @@ -22,31 +22,22 @@ services: - /config/run_idx.sh depends_on: - mongo - bindaas: - image: camicroscope/bindaas:latest + back: + image: camicroscope/caracal:latest depends_on: - "mongo" - container_name: ca-data - restart: unless-stopped - logging: - driver: none + ports: + - "4010:8010" + container_name: ca-back volumes: - - ./config/bindaas_projects/:/root/bindaas/bin/projects/ - - ./config/bindaas.config.json:/root/bindaas/bin/bindaas.config.json + - ./config/login.html:/root/src/static/login.html + - ./jwt_keys/:/root/src/keys/ iip: image: camicroscope/iipimage:latest container_name: ca-iip restart: unless-stopped volumes: - ./images/:/images/ - viewer: - image: camicroscope/viewer:latest - container_name: ca-front - restart: unless-stopped - volumes: - - ./config/login.html:/usr/local/apache2/htdocs/login.html - logging: - driver: none loader: image: camicroscope/slideloader:latest container_name: ca-load @@ -55,24 +46,3 @@ services: driver: none volumes: - ./images/:/images/ - security: - image: camicroscope/security:latest - container_name: ca-security - restart: unless-stopped - ports: - - "4010:4010" - volumes: - - ./config/non-pathdb-routes.json:/root/src/routes.json - - ./jwt_keys/:/keys/ - environment: - - DISABLE_SEC=true - auth: - image: camicroscope/auth_service:latest - volumes: - - ./jwt_keys/:/keys/ - container_name: ca-auth - environment: - JWKS: "https://www.googleapis.com/oauth2/v3/certs" - restart: unless-stopped - logging: - driver: none diff --git a/expiremental.yml b/expiremental.yml deleted file mode 100644 index d7ccc20b..00000000 --- a/expiremental.yml +++ /dev/null @@ -1,51 +0,0 @@ -version: '3' - -services: - mongo: - image: mongo:3.4.19-jessie - container_name: ca-mongo - logging: - driver: none - volumes: - - ./db:/data/db - idxMongo: - image: mongo:3.4.19-jessie - container_name: ca-idx - logging: - driver: none - links: - - mongo - volumes: - - ./config:/config - command: - - /config/run_idx.sh - depends_on: - - mongo - back: - build: - context: "https://github.com/camicroscope/caracal.git#develop" - args: - viewer: "e" - depends_on: - - "mongo" - ports: - - "8010:8010" - container_name: ca-back - volumes: - - ./config/login.html:/root/src/static/login.html - - ./jwt_keys/:/root/src/keys/ - - environment: - JWK_URL: "https://www.googleapis.com/oauth2/v3/certs" - IIP_PATH: "http://ca-iip/fcgi-bin/iipsrv.fcgi" - MONGO_URI: "mongodb://ca-mongo" - iip: - build: "https://github.com/camicroscope/iipImage.git#develop" - container_name: ca-iip - volumes: - - ./images/:/images/ - loader: - build: "https://github.com/camicroscope/SlideLoader.git#develop" - container_name: ca-load - volumes: - - ./images/:/images/ diff --git a/test/test_add_slide.js b/test/test_add_slide.js index 9c31e750..f41eda8d 100644 --- a/test/test_add_slide.js +++ b/test/test_add_slide.js @@ -5,7 +5,7 @@ const fetch = require("node-fetch") // jsdom instance const posturl = "http://localhost:4010/data/Slide/post" -const findurl = "http://localhost:4010/data/Slide/find?slide=TEST" +const findurl = "http://localhost:4010/data/Slide/find?name=TEST" describe('Slide Loading Step 1', function () { diff --git a/test/test_loader.js b/test/test_loader.js index ae50e467..5e71d5c7 100644 --- a/test/test_loader.js +++ b/test/test_loader.js @@ -6,7 +6,7 @@ const assert = require('assert'); const fetch = require("node-fetch") -const checkurl = "http://localhost:4010/load/Slide/info/sample.svs" +const checkurl = "http://localhost:4010/loader/data/one/sample.svs" describe('Sample Slide Metadata Check', function () { diff --git a/update_dockerhub.sh b/update_dockerhub.sh index b1686284..09eea39e 100644 --- a/update_dockerhub.sh +++ b/update_dockerhub.sh @@ -6,12 +6,6 @@ docker login docker-compose -f quip-pathdb.yml build docker-compose -f caMicroscope.yml build # tag and push images -docker tag distro_bindaas:latest camicroscope/bindaas:latest -docker push camicroscope/bindaas:latest -docker tag distro_security:latest camicroscope/security:latest -docker push camicroscope/security:latest -docker tag distro_auth:latest camicroscope/auth_service:latest -docker push camicroscope/auth_service:latest docker tag distro_imageloader:latest camicroscope/pathdb-imageloader:latest docker push camicroscope/pathdb-imageloader:latest docker tag distro_heatmaploader:latest camicroscope/pathdb-heatmaploader:latest @@ -20,4 +14,4 @@ docker tag distro_segloader:latest camicroscope/pathdb-segloader:latest docker push camicroscope/pathdb-segloader:latest docker tag distro_pathdb:latest camicroscope/pathdb:latest docker push camicroscope/pathdb:latest -# iip and slideloader are done on commit and tag +# iip, caracal, and slideloader are done on commit and tag diff --git a/user_docs.md b/user_docs.md deleted file mode 100644 index 940468aa..00000000 --- a/user_docs.md +++ /dev/null @@ -1,33 +0,0 @@ -# Using caMicroscope -caMicroscope is a tool to view, annotate, and analyze whole-slide, biomedical images. It manages digital pathology images, associated clinical and imaging metadata, and human/machine generated annotations and markups. - -## Selecing an Image -Depending on what is providing the image metadata, differnet login tecniques may be necessary. For public instances, no log in is necesary, and you can proceed to view slides. Use of other tools, such as annotations may or may not require login in this case. -For slim instances, login should be done through a redirect directly. For pathDB instances, login should be done on the login link on the main page. -At this point, select a collection, if applicable, and proceed to open or "view" the image of your choice. - -## Viewing an Image -Once an image is open, you can pan around the image by either clicking and dragging (when no conflicting tool, such as the pen, is open), or by moving the red bounding box in the viewport in the bottom right. -Zooming can be accomplished through the scroll wheel, pinch events on a touch screen, by using the zoom slider or its associated buttons, or by clicking on the zoom number and inputing a different number. - -## Using Tools -The toolbar is in the top-left of the main content window. Use the toolbar buttons to manipulate the slide. To close any toolbar button, click the same button again or a new button. - -| Tool | Name | Function | -| ----- |-------------| -----| -| | Annotations | Opens the Annotation panel, where you can select which annotation set to view, name that annotation set, add optional notes about the annotation set, save the annotation set, and reset the panel to its original state. | -| | Layer Manager | Opens the Layers Manager panel, where you can select which layers to view. | -| | Home | Return to the data table so that you can open another slide.| -| | Draw | Draw thin lines, thick lines, or polygons on the image. To maintain the integrity of measurements, avoid drawing shapes that overlap or intersect one another. | -| | Magnifier |The Magnifier works like a magnifying glass and allows you to see the slide at normal magnification (1.0), low magnification (0.5), or high magnification (2.0). Click a magnification level and place the bounding box on the area of the slide you want to magnify. | -| | Measurement | Drag this tool on the slide to learn the measurement in micrometers. | -| | Share View |Opens a window with a URL to the current presentation state of the slide including the magnification level, layers that are currently open, and your position on the image.| -| | Side by Side Viewer |Shows the Layer Manager panel, the left and right layers, and inset window. For the right and left layer, select which layer you want to view. | -| | Heatmap | For a slide with heatmap data, opens the choices of heatmaps available, as well as ways of displaying the heatmaps. The gradient shows all of the values on the selected spectrum for the field you selected. Contains a heatmap edit pen function.| -| | Labeling |Use this tool to draw a circle or rectangle around a tumor region, measure an area on the slide, download labels, and submit a bug report. The Labeling tool has its own toolbar with tools in the following order from left to right: return to the previous slide, place a square on the slide, place a circle on the slide, measure an area, download labels, and submit a bug report. Click the left arrow at the far right of the toolbar to hide it, then click the right arrow to show it. | -| | Segment | This tool allows you to display, count, and export nuclear segmentations on the image. Clicking this tool opens the following custom toolbar. | -| | Model | Show results from a pre-trained tensorflow compatible model on a ROI of the slide. | -| | Bug Report | Report a bug or give feedback. | - -## Credits -This guide has been adapted from the guide created for the SEER project by Carolyn Klinger. From f46574dbc23a1a32c106abd698dda55a5b56068b Mon Sep 17 00:00:00 2001 From: Ryan Birmingham Date: Tue, 31 Mar 2020 18:44:25 -0400 Subject: [PATCH 05/10] disable sec in dev --- develop.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/develop.yml b/develop.yml index 1dc8fe8a..1e563bcb 100644 --- a/develop.yml +++ b/develop.yml @@ -34,11 +34,11 @@ services: volumes: - ./config/login.html:/root/src/static/login.html - ./jwt_keys/:/root/src/keys/ - environment: JWK_URL: "https://www.googleapis.com/oauth2/v3/certs" IIP_PATH: "http://ca-iip/fcgi-bin/iipsrv.fcgi" MONGO_URI: "mongodb://ca-mongo" + DISABLE_SEC: "true" iip: build: "https://github.com/camicroscope/iipImage.git#develop" container_name: ca-iip From c82712a7226763b159779d96a04ba1234cdfa39d Mon Sep 17 00:00:00 2001 From: Ryan Birmingham Date: Tue, 31 Mar 2020 18:47:20 -0400 Subject: [PATCH 06/10] Stop building iip, just use image --- caMicroscope.yml | 4 ++-- develop.yml | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/caMicroscope.yml b/caMicroscope.yml index 92dd512a..5789eb21 100644 --- a/caMicroscope.yml +++ b/caMicroscope.yml @@ -34,14 +34,14 @@ services: volumes: - ./config/login.html:/root/src/static/login.html - ./jwt_keys/:/root/src/keys/ - environment: JWK_URL: "https://www.googleapis.com/oauth2/v3/certs" IIP_PATH: "http://ca-iip/fcgi-bin/iipsrv.fcgi" MONGO_URI: "mongodb://ca-mongo" iip: - build: "https://github.com/camicroscope/iipImage.git#v3.7.0" + image: camicroscope/iipimage:latest container_name: ca-iip + restart: unless-stopped volumes: - ./images/:/images/ loader: diff --git a/develop.yml b/develop.yml index 1e563bcb..a95b00a7 100644 --- a/develop.yml +++ b/develop.yml @@ -40,8 +40,9 @@ services: MONGO_URI: "mongodb://ca-mongo" DISABLE_SEC: "true" iip: - build: "https://github.com/camicroscope/iipImage.git#develop" + image: camicroscope/iipimage:latest container_name: ca-iip + restart: unless-stopped volumes: - ./images/:/images/ loader: From 7b607f106772885abc6b10ea7aaeffd0951b0666 Mon Sep 17 00:00:00 2001 From: Ryan Birmingham Date: Tue, 31 Mar 2020 18:55:30 -0400 Subject: [PATCH 07/10] return pattern for post is different now --- test/test_add_slide.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/test_add_slide.js b/test/test_add_slide.js index f41eda8d..2baf4657 100644 --- a/test/test_add_slide.js +++ b/test/test_add_slide.js @@ -23,7 +23,7 @@ describe('Slide Loading Step 1', function () { body:JSON.stringify(slideData)}) postProcess.then(x=>x.json()).then(x=>{ console.log(x) - assert.equal(x.count,1, "Post Reported Successful") + assert.equal(x.result.ok,1, "Post Reported Successful") done() }).catch(e=>{ console.log("err") From 305996a7ad8958a6133df98df76eb70f993a7c69 Mon Sep 17 00:00:00 2001 From: Ryan Birmingham Date: Wed, 1 Apr 2020 18:53:48 -0400 Subject: [PATCH 08/10] upgrade pathdb --- dh_quip-pathdb.yml | 84 ---------------------------------------------- quip-pathdb.yml | 41 +++++++++------------- 2 files changed, 16 insertions(+), 109 deletions(-) delete mode 100644 dh_quip-pathdb.yml diff --git a/dh_quip-pathdb.yml b/dh_quip-pathdb.yml deleted file mode 100644 index 243a9eb1..00000000 --- a/dh_quip-pathdb.yml +++ /dev/null @@ -1,84 +0,0 @@ -version: '3' - -services: - mongo: - image: mongo - container_name: ca-mongo - restart: unless-stopped - volumes: - - ./db:/data/db - logging: - driver: none - idxMongo: - image: mongo - container_name: ca-idx - links: - - mongo - volumes: - - ./config:/config - command: - - /config/run_idx.sh - depends_on: - - mongo - bindaas: - image: camicroscope/bindaas:latest - depends_on: - - "mongo" - container_name: ca-data - restart: unless-stopped - logging: - driver: none - ports: ["8080:8080", "9099:9099"] - volumes: - - ./config/bindaas_projects/:/root/bindaas/bin/projects/ - - ./config/bindaas.config.json:/root/bindaas/bin/bindaas.config.json - iip: - image: camicroscope/iipimage:latest - container_name: ca-iip - restart: unless-stopped - volumes: - - ./images/:/data/images/ - security: - image: camicroscope/security:latest - container_name: ca-security - restart: unless-stopped - ports: ["4010:4010"] - volumes: - - ./config/pathdb_routes.json:/root/src/routes.json - environment: - - DISABLE_SEC=true - auth: - image: camicroscope/auth_service:latest - container_name: ca-auth - logging: - driver: none - pathdb: - image: camicroscope/pathdb:latest - container_name: quip-pathdb - restart: unless-stopped - ports: ["443:443","80:80"] - volumes: - - ./data:/data/ - - ./images/:/data/pathdb/files/wsi - - ./config/pathdb:/quip/web/sites/default - - ./jwt_keys/:/keys/ - - ./config:/config - command: - - /config/pathdb_pre.sh - imageloader: - image: camicroscope/pathdb-imageloader:latest - container_name: quip-imageloader - volumes: - - ./data:/data/ - - ./images:/data/images - segloader: - image: camicroscope/pathdb-segloader:latest - container_name: quip-segloader - volumes: - - ./data:/data - heatmaploader: - image: camicroscope/pathdb-heatmaploader:latest - container_name: quip-hmloader - ports: ["27017:27017"] - volumes: - - ./data:/mnt/data/ diff --git a/quip-pathdb.yml b/quip-pathdb.yml index 8a411df5..71abd36b 100644 --- a/quip-pathdb.yml +++ b/quip-pathdb.yml @@ -20,43 +20,34 @@ services: - /config/run_idx.sh depends_on: - mongo - bindaas: - build: "./Deps/Bindaas/" - depends_on: - - "mongo" - container_name: ca-data - restart: unless-stopped - logging: - driver: none - ports: ["8080:8080", "9099:9099"] - volumes: - - ./config/bindaas_projects/:/root/bindaas/bin/projects/ - - ./config/bindaas.config.json:/root/bindaas/bin/bindaas.config.json iip: build: "https://github.com/camicroscope/iipImage.git#v3.2.0" container_name: ca-iip restart: unless-stopped volumes: - ./images/:/data/images/ - security: - build: "https://github.com/camicroscope/Security.git#v3.6.2" - container_name: ca-security - restart: unless-stopped - ports: ["4010:4010"] + back: + build: + context: "https://github.com/camicroscope/caracal.git#develop" + args: + viewer: "develop" + depends_on: + - "mongo" + ports: + - "4010:8010" + container_name: ca-back volumes: - - ./config/pathdb_routes.json:/root/src/routes.json + - ./keys/:/root/src/keys/ environment: - - DISABLE_SEC=true - auth: - build: "./Deps/auth_service/" - container_name: ca-auth - logging: - driver: none + JWK_URL: "https://www.googleapis.com/oauth2/v3/certs" + IIP_PATH: "http://ca-iip/fcgi-bin/iipsrv.fcgi" + MONGO_URI: "mongodb://ca-mongo" + DEFAULT_USER_TYPE: "Editor" pathdb: build: context: "https://github.com/SBU-BMI/PathDB.git#1.3.5" args: - viewer: "v3.6.2" + viewer: "develop" container_name: quip-pathdb restart: unless-stopped ports: ["443:443","80:80"] From b8475ceeec3c4ea093fd46cff61a3aaa2a607351 Mon Sep 17 00:00:00 2001 From: Ryan Birmingham Date: Thu, 2 Apr 2020 00:58:24 -0400 Subject: [PATCH 09/10] dev show allow public option' --- develop.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/develop.yml b/develop.yml index a95b00a7..c48ee82b 100644 --- a/develop.yml +++ b/develop.yml @@ -25,7 +25,7 @@ services: build: context: "https://github.com/camicroscope/caracal.git#develop" args: - viewer: "develop" + viewer: "e" depends_on: - "mongo" ports: @@ -39,6 +39,7 @@ services: IIP_PATH: "http://ca-iip/fcgi-bin/iipsrv.fcgi" MONGO_URI: "mongodb://ca-mongo" DISABLE_SEC: "true" + ALLOW_PUBLIC: "true" iip: image: camicroscope/iipimage:latest container_name: ca-iip From 4fa44f304552c8f0ea03f2b4481fcb049bc4afff Mon Sep 17 00:00:00 2001 From: Ryan Birmingham Date: Thu, 2 Apr 2020 14:22:50 -0400 Subject: [PATCH 10/10] port to 4010 --- caMicroscope.yml | 2 +- develop.yml | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/caMicroscope.yml b/caMicroscope.yml index 5789eb21..a55340e0 100644 --- a/caMicroscope.yml +++ b/caMicroscope.yml @@ -29,7 +29,7 @@ services: depends_on: - "mongo" ports: - - "4010:8010" + - "4010:4010" container_name: ca-back volumes: - ./config/login.html:/root/src/static/login.html diff --git a/develop.yml b/develop.yml index c48ee82b..31c81abd 100644 --- a/develop.yml +++ b/develop.yml @@ -1,4 +1,4 @@ -version: '3' +version: '2' services: mongo: @@ -25,11 +25,11 @@ services: build: context: "https://github.com/camicroscope/caracal.git#develop" args: - viewer: "e" + viewer: "develop" depends_on: - "mongo" ports: - - "4010:8010" + - "4010:4010" container_name: ca-back volumes: - ./config/login.html:/root/src/static/login.html