Merge branch 'backend-docker' into 'master'
[New] Dockerfile add, list, delete 추가 See merge request !6
Showing
10 changed files
with
830 additions
and
2 deletions
1 | let express = require('express') | 1 | let express = require('express') |
2 | let cookieParser = require('cookie-parser') | 2 | let cookieParser = require('cookie-parser') |
3 | -var cors = require('cors') | 3 | +let cors = require('cors') |
4 | -var corsConfig = require('./config/cors') | 4 | +let corsConfig = require('./config/cors') |
5 | 5 | ||
6 | const indexRouter = require('./routes/index') | 6 | const indexRouter = require('./routes/index') |
7 | const authRouter = require('./routes/authRouter') | 7 | const authRouter = require('./routes/authRouter') |
8 | const userRouter = require('./routes/userRouter') | 8 | const userRouter = require('./routes/userRouter') |
9 | +const dockerRouter = require('./routes/dockerRouter') | ||
9 | 10 | ||
10 | let app = express() | 11 | let app = express() |
11 | app.use(cors(corsConfig)) | 12 | app.use(cors(corsConfig)) |
... | @@ -17,6 +18,7 @@ app.use(cookieParser()) | ... | @@ -17,6 +18,7 @@ app.use(cookieParser()) |
17 | app.use('/', indexRouter) | 18 | app.use('/', indexRouter) |
18 | app.use('/', authRouter) | 19 | app.use('/', authRouter) |
19 | app.use('/', userRouter) | 20 | app.use('/', userRouter) |
21 | +app.use('/', dockerRouter) | ||
20 | 22 | ||
21 | app.use(function(req, res) { | 23 | app.use(function(req, res) { |
22 | res.status(400) | 24 | res.status(400) | ... | ... |
backend/controllers/dockerController.js
0 → 100644
1 | +const { sequelize, Sequelize, User, Dockerfile, Image, Container, Port} = require('../models') | ||
2 | +const { sendResponse, sendError } = require('../utils/response') | ||
3 | +const { currentUser } = require('../utils/auth') | ||
4 | +const { logging } = require('../utils/log') | ||
5 | +const { checkRequiredExist, setValues } = require('../utils/validation') | ||
6 | +const fs = require('fs') | ||
7 | +const randomstring = require("randomstring"); | ||
8 | + | ||
9 | +const Op = Sequelize.Op | ||
10 | + | ||
11 | +exports.addDockerfile = async (req, res) => { | ||
12 | + const id = req.decoded.id | ||
13 | + if (!id) { | ||
14 | + return sendError(res, 401, 'InvalidToken') | ||
15 | + } | ||
16 | + const requiredKey = ['content'] | ||
17 | + const required = checkRequiredExist(req.body, requiredKey) | ||
18 | + if (required) { | ||
19 | + logging('dockerfile', 'error', { code: 400, message: `missingKey:${required}` }, req) | ||
20 | + return sendError(res, 400, `missingKey:${required}`) | ||
21 | + } | ||
22 | + let dockerfileInfo = {} | ||
23 | + dockerfileInfo.userId = id | ||
24 | + dockerfileInfo.content = req.body.content | ||
25 | + let dockerfileDir = randomstring.generate(16); | ||
26 | + fs.mkdirSync('./dockerfiles/'+dockerfileDir) | ||
27 | + dockerfileInfo.filepath = './dockerfiles/'+dockerfileDir+'/Dockerfile' | ||
28 | + fs.writeFile(dockerfileInfo.filepath, dockerfileInfo.content, function (err) { | ||
29 | + if (err) { | ||
30 | + logging('dockerfile', 'error', { code: 400, message: `dockerfile write error` }, req) | ||
31 | + return sendError(res, 400, `dockerfile write error`) | ||
32 | + } | ||
33 | + }) | ||
34 | + let user = await Dockerfile.create(dockerfileInfo) | ||
35 | + logging('dockerfile', 'add dockerfile', user, req) | ||
36 | + return sendResponse(res, user, 200) | ||
37 | +} | ||
38 | + | ||
39 | +exports.listDockerfile = async (req, res) => { | ||
40 | + const id = req.decoded.id | ||
41 | + if (!id) { | ||
42 | + return sendError(res, 401, 'InvalidToken') | ||
43 | + } | ||
44 | + try{ | ||
45 | + let dockerfiles = await Dockerfile.findAndCountAll({ | ||
46 | + where: { | ||
47 | + userId: id | ||
48 | + }, | ||
49 | + order: [ | ||
50 | + ['createdAt', 'desc'] | ||
51 | + ] | ||
52 | + }) | ||
53 | + | ||
54 | + const result = { | ||
55 | + count: dockerfiles.count, | ||
56 | + data: dockerfiles.rows | ||
57 | + } | ||
58 | + return sendResponse(res, result, 200) | ||
59 | + } catch(error) { | ||
60 | + logging('dockerfile', 'error', { code: 500, message: error.message }, req) | ||
61 | + return sendError(res, 500, error.message) | ||
62 | + } | ||
63 | +} | ||
64 | + | ||
65 | +exports.removeDockerfile = async (req, res) => { | ||
66 | + const requiredKey = ['id'] | ||
67 | + const required = checkRequiredExist(req.body, requiredKey) | ||
68 | + if (required) { | ||
69 | + logging('dockerfile', 'error', { code: 400, message: 'missingKey:${required}' }, req) | ||
70 | + return sendError(res, 400, `missingKey:${required}`) | ||
71 | + } | ||
72 | + try { | ||
73 | + const user = await currentUser(req.headers.authorization) | ||
74 | + | ||
75 | + const dockerfileId = req.body.id | ||
76 | + let dockerfile = await Dockerfile.findByPk(dockerfileId) | ||
77 | + if (!dockerfile) { | ||
78 | + logging('dockerfile', 'error', { code: 404, message: 'NoDockerfileFound' }, req) | ||
79 | + return sendError(res, 404, 'NoDockerfileFound') | ||
80 | + } | ||
81 | + if (!user || user.id !== dockerfile.userId) { | ||
82 | + logging('dockerfile', 'error', { code: 403, message: 'Unauthoirzed' }, req) | ||
83 | + return sendError(res, 403, 'Unauthoirzed') | ||
84 | + } | ||
85 | + | ||
86 | + await Dockerfile.destroy({ | ||
87 | + where: { | ||
88 | + id: dockerfile.id | ||
89 | + } | ||
90 | + }) | ||
91 | + logging('dockerfile', 'delete', null, req) | ||
92 | + return sendResponse(res, true, 201) | ||
93 | + } catch (error) { | ||
94 | + logging('dockerfile', 'error', { code: 500, message: error.message }, req) | ||
95 | + return sendError(res, 500, error.message) | ||
96 | + } | ||
97 | +} | ||
98 | +exports.listImage = async (req, res) => { | ||
99 | + | ||
100 | +} | ||
101 | +exports.buildImage = async (req, res) => { | ||
102 | + | ||
103 | +} | ||
104 | +exports.removeImage = async (req, res) => { | ||
105 | + | ||
106 | +} | ||
107 | +exports.listContainer = async (req, res) => { | ||
108 | + | ||
109 | +} | ||
110 | +exports.createContainer = async (req, res) => { | ||
111 | + | ||
112 | +} | ||
113 | +exports.startContainer = async (req, res) => { | ||
114 | + | ||
115 | +} | ||
116 | +exports.stopContainer = async (req, res) => { | ||
117 | + | ||
118 | +} | ||
119 | +exports.removeContainer = async (req, res) => { | ||
120 | + | ||
121 | +} | ||
122 | + | ||
123 | +//admin | ||
124 | +exports.adminListDockerfile = async (req, res) => { | ||
125 | + try{ | ||
126 | + let dockerfiles = await Dockerfile.findAndCountAll({ | ||
127 | + order: [ | ||
128 | + ['createdAt', 'desc'] | ||
129 | + ] | ||
130 | + }) | ||
131 | + | ||
132 | + const result = { | ||
133 | + count: dockerfiles.count, | ||
134 | + data: dockerfiles.rows | ||
135 | + } | ||
136 | + return sendResponse(res, result, 200) | ||
137 | + } catch(error) { | ||
138 | + logging('dockerfile', 'error', { code: 500, message: error.message }, req) | ||
139 | + return sendError(res, 500, error.message) | ||
140 | + } | ||
141 | +} | ||
142 | +exports.adminDeleteDockerfile = async (req, res) => { | ||
143 | + | ||
144 | +} | ||
145 | +exports.adminListImage = async (req, res) => { | ||
146 | + | ||
147 | +} | ||
148 | +exports.adminDeleteImage = async (req, res) => { | ||
149 | + | ||
150 | +} | ||
151 | +exports.adminListContainer = async (req, res) => { | ||
152 | + | ||
153 | +} | ||
154 | +exports.adminDeleteContainer = async (req, res) => { | ||
155 | + | ||
156 | +} |
1 | +FROM ubuntu:20.04 | ||
2 | +RUN apt-get update -y | ||
3 | +RUN apt-get install -y openssh-server vim | ||
4 | +# change root password | ||
5 | +RUN echo 'root:admin123' | chpasswd | ||
6 | +# change ssh configure | ||
7 | +RUN echo PermitRootLogin yes >> /etc/ssh/sshd_config && service ssh restart | ||
8 | +RUN service ssh restart | ||
9 | +CMD tail -f /dev/null | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +FROM ubuntu:20.04 | ||
2 | +RUN apt-get update -y | ||
3 | +RUN apt-get install -y openssh-server vim | ||
4 | +# change root password | ||
5 | +RUN echo 'root:admin123' | chpasswd | ||
6 | +# change ssh configure | ||
7 | +RUN echo PermitRootLogin yes >> /etc/ssh/sshd_config && service ssh restart | ||
8 | +RUN service ssh restart | ||
9 | +CMD tail -f /dev/null | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +FROM ubuntu:20.04 | ||
2 | + | ||
3 | +RUN apt-get update -y | ||
4 | +RUN apt-get install -y openssh-server vim | ||
5 | + | ||
6 | +# change root password | ||
7 | +RUN echo 'root:admin123' | chpasswd | ||
8 | + | ||
9 | +# change ssh configure | ||
10 | +RUN echo PermitRootLogin yes >> /etc/ssh/sshd_config && service ssh restart | ||
11 | +RUN service ssh restart | ||
12 | + | ||
13 | +CMD tail -f /dev/null |
... | @@ -11,10 +11,13 @@ | ... | @@ -11,10 +11,13 @@ |
11 | "bcrypt": "^5.0.1", | 11 | "bcrypt": "^5.0.1", |
12 | "cookie-parser": "~1.4.4", | 12 | "cookie-parser": "~1.4.4", |
13 | "cors": "^2.8.5", | 13 | "cors": "^2.8.5", |
14 | + "crypto-random-string": "^4.0.0", | ||
14 | "debug": "~2.6.9", | 15 | "debug": "~2.6.9", |
16 | + "dockerode": "^3.3.0", | ||
15 | "dotenv": "^8.2.0", | 17 | "dotenv": "^8.2.0", |
16 | "express": "~4.16.1", | 18 | "express": "~4.16.1", |
17 | "mysql2": "^2.1.0", | 19 | "mysql2": "^2.1.0", |
20 | + "randomstring": "^1.2.1", | ||
18 | "sequelize": "^6.3.5" | 21 | "sequelize": "^6.3.5" |
19 | }, | 22 | }, |
20 | "devDependencies": { | 23 | "devDependencies": { |
... | @@ -283,6 +286,22 @@ | ... | @@ -283,6 +286,22 @@ |
283 | "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", | 286 | "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", |
284 | "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" | 287 | "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" |
285 | }, | 288 | }, |
289 | + "node_modules/array-uniq": { | ||
290 | + "version": "1.0.2", | ||
291 | + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.2.tgz", | ||
292 | + "integrity": "sha1-X8w3OSB3VyPP1k1lxkvvU7+eum0=", | ||
293 | + "engines": { | ||
294 | + "node": ">=0.10.0" | ||
295 | + } | ||
296 | + }, | ||
297 | + "node_modules/asn1": { | ||
298 | + "version": "0.2.4", | ||
299 | + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", | ||
300 | + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", | ||
301 | + "dependencies": { | ||
302 | + "safer-buffer": "~2.1.0" | ||
303 | + } | ||
304 | + }, | ||
286 | "node_modules/astral-regex": { | 305 | "node_modules/astral-regex": { |
287 | "version": "1.0.0", | 306 | "version": "1.0.0", |
288 | "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", | 307 | "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", |
... | @@ -297,6 +316,25 @@ | ... | @@ -297,6 +316,25 @@ |
297 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", | 316 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", |
298 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" | 317 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" |
299 | }, | 318 | }, |
319 | + "node_modules/base64-js": { | ||
320 | + "version": "1.5.1", | ||
321 | + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", | ||
322 | + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", | ||
323 | + "funding": [ | ||
324 | + { | ||
325 | + "type": "github", | ||
326 | + "url": "https://github.com/sponsors/feross" | ||
327 | + }, | ||
328 | + { | ||
329 | + "type": "patreon", | ||
330 | + "url": "https://www.patreon.com/feross" | ||
331 | + }, | ||
332 | + { | ||
333 | + "type": "consulting", | ||
334 | + "url": "https://feross.org/support" | ||
335 | + } | ||
336 | + ] | ||
337 | + }, | ||
300 | "node_modules/bcrypt": { | 338 | "node_modules/bcrypt": { |
301 | "version": "5.0.1", | 339 | "version": "5.0.1", |
302 | "resolved": "https://registry.npmjs.org/bcrypt/-/bcrypt-5.0.1.tgz", | 340 | "resolved": "https://registry.npmjs.org/bcrypt/-/bcrypt-5.0.1.tgz", |
... | @@ -310,6 +348,42 @@ | ... | @@ -310,6 +348,42 @@ |
310 | "node": ">= 10.0.0" | 348 | "node": ">= 10.0.0" |
311 | } | 349 | } |
312 | }, | 350 | }, |
351 | + "node_modules/bcrypt-pbkdf": { | ||
352 | + "version": "1.0.2", | ||
353 | + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", | ||
354 | + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", | ||
355 | + "dependencies": { | ||
356 | + "tweetnacl": "^0.14.3" | ||
357 | + } | ||
358 | + }, | ||
359 | + "node_modules/bl": { | ||
360 | + "version": "4.1.0", | ||
361 | + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", | ||
362 | + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", | ||
363 | + "dependencies": { | ||
364 | + "buffer": "^5.5.0", | ||
365 | + "inherits": "^2.0.4", | ||
366 | + "readable-stream": "^3.4.0" | ||
367 | + } | ||
368 | + }, | ||
369 | + "node_modules/bl/node_modules/inherits": { | ||
370 | + "version": "2.0.4", | ||
371 | + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", | ||
372 | + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" | ||
373 | + }, | ||
374 | + "node_modules/bl/node_modules/readable-stream": { | ||
375 | + "version": "3.6.0", | ||
376 | + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", | ||
377 | + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", | ||
378 | + "dependencies": { | ||
379 | + "inherits": "^2.0.3", | ||
380 | + "string_decoder": "^1.1.1", | ||
381 | + "util-deprecate": "^1.0.1" | ||
382 | + }, | ||
383 | + "engines": { | ||
384 | + "node": ">= 6" | ||
385 | + } | ||
386 | + }, | ||
313 | "node_modules/bluebird": { | 387 | "node_modules/bluebird": { |
314 | "version": "3.7.2", | 388 | "version": "3.7.2", |
315 | "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", | 389 | "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", |
... | @@ -345,6 +419,29 @@ | ... | @@ -345,6 +419,29 @@ |
345 | "concat-map": "0.0.1" | 419 | "concat-map": "0.0.1" |
346 | } | 420 | } |
347 | }, | 421 | }, |
422 | + "node_modules/buffer": { | ||
423 | + "version": "5.7.1", | ||
424 | + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", | ||
425 | + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", | ||
426 | + "funding": [ | ||
427 | + { | ||
428 | + "type": "github", | ||
429 | + "url": "https://github.com/sponsors/feross" | ||
430 | + }, | ||
431 | + { | ||
432 | + "type": "patreon", | ||
433 | + "url": "https://www.patreon.com/feross" | ||
434 | + }, | ||
435 | + { | ||
436 | + "type": "consulting", | ||
437 | + "url": "https://feross.org/support" | ||
438 | + } | ||
439 | + ], | ||
440 | + "dependencies": { | ||
441 | + "base64-js": "^1.3.1", | ||
442 | + "ieee754": "^1.1.13" | ||
443 | + } | ||
444 | + }, | ||
348 | "node_modules/buffer-equal-constant-time": { | 445 | "node_modules/buffer-equal-constant-time": { |
349 | "version": "1.0.1", | 446 | "version": "1.0.1", |
350 | "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", | 447 | "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", |
... | @@ -633,6 +730,31 @@ | ... | @@ -633,6 +730,31 @@ |
633 | "semver": "bin/semver" | 730 | "semver": "bin/semver" |
634 | } | 731 | } |
635 | }, | 732 | }, |
733 | + "node_modules/crypto-random-string": { | ||
734 | + "version": "4.0.0", | ||
735 | + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-4.0.0.tgz", | ||
736 | + "integrity": "sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==", | ||
737 | + "dependencies": { | ||
738 | + "type-fest": "^1.0.1" | ||
739 | + }, | ||
740 | + "engines": { | ||
741 | + "node": ">=12" | ||
742 | + }, | ||
743 | + "funding": { | ||
744 | + "url": "https://github.com/sponsors/sindresorhus" | ||
745 | + } | ||
746 | + }, | ||
747 | + "node_modules/crypto-random-string/node_modules/type-fest": { | ||
748 | + "version": "1.2.0", | ||
749 | + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.2.0.tgz", | ||
750 | + "integrity": "sha512-++0N6KyAj0t2webXst0PE0xuXb4Dv3z1Z+4SGzK+j/epeWBZCfkQbkW/ezscZwpinmBQ5wu/l4TqagKSVcAGCA==", | ||
751 | + "engines": { | ||
752 | + "node": ">=10" | ||
753 | + }, | ||
754 | + "funding": { | ||
755 | + "url": "https://github.com/sponsors/sindresorhus" | ||
756 | + } | ||
757 | + }, | ||
636 | "node_modules/d": { | 758 | "node_modules/d": { |
637 | "version": "1.0.1", | 759 | "version": "1.0.1", |
638 | "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", | 760 | "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", |
... | @@ -703,6 +825,66 @@ | ... | @@ -703,6 +825,66 @@ |
703 | "node": ">=0.10" | 825 | "node": ">=0.10" |
704 | } | 826 | } |
705 | }, | 827 | }, |
828 | + "node_modules/docker-modem": { | ||
829 | + "version": "3.0.0", | ||
830 | + "resolved": "https://registry.npmjs.org/docker-modem/-/docker-modem-3.0.0.tgz", | ||
831 | + "integrity": "sha512-WwFajJ8I5geZ/dDZ5FDMDA6TBkWa76xWwGIGw8uzUjNUGCN0to83wJ8Oi1AxrJTC0JBn+7fvIxUctnawtlwXeg==", | ||
832 | + "dependencies": { | ||
833 | + "debug": "^4.1.1", | ||
834 | + "readable-stream": "^3.5.0", | ||
835 | + "split-ca": "^1.0.1", | ||
836 | + "ssh2": "^0.8.7" | ||
837 | + }, | ||
838 | + "engines": { | ||
839 | + "node": ">= 8.0" | ||
840 | + } | ||
841 | + }, | ||
842 | + "node_modules/docker-modem/node_modules/debug": { | ||
843 | + "version": "4.3.1", | ||
844 | + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", | ||
845 | + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", | ||
846 | + "dependencies": { | ||
847 | + "ms": "2.1.2" | ||
848 | + }, | ||
849 | + "engines": { | ||
850 | + "node": ">=6.0" | ||
851 | + }, | ||
852 | + "peerDependenciesMeta": { | ||
853 | + "supports-color": { | ||
854 | + "optional": true | ||
855 | + } | ||
856 | + } | ||
857 | + }, | ||
858 | + "node_modules/docker-modem/node_modules/ms": { | ||
859 | + "version": "2.1.2", | ||
860 | + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", | ||
861 | + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" | ||
862 | + }, | ||
863 | + "node_modules/docker-modem/node_modules/readable-stream": { | ||
864 | + "version": "3.6.0", | ||
865 | + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", | ||
866 | + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", | ||
867 | + "dependencies": { | ||
868 | + "inherits": "^2.0.3", | ||
869 | + "string_decoder": "^1.1.1", | ||
870 | + "util-deprecate": "^1.0.1" | ||
871 | + }, | ||
872 | + "engines": { | ||
873 | + "node": ">= 6" | ||
874 | + } | ||
875 | + }, | ||
876 | + "node_modules/dockerode": { | ||
877 | + "version": "3.3.0", | ||
878 | + "resolved": "https://registry.npmjs.org/dockerode/-/dockerode-3.3.0.tgz", | ||
879 | + "integrity": "sha512-St08lfOjpYCOXEM8XA0VLu3B3hRjtddODphNW5GFoA0AS3JHgoPQKOz0Qmdzg3P+hUPxhb02g1o1Cu1G+U3lRg==", | ||
880 | + "dependencies": { | ||
881 | + "docker-modem": "^3.0.0", | ||
882 | + "tar-fs": "~2.0.1" | ||
883 | + }, | ||
884 | + "engines": { | ||
885 | + "node": ">= 8.0" | ||
886 | + } | ||
887 | + }, | ||
706 | "node_modules/doctrine": { | 888 | "node_modules/doctrine": { |
707 | "version": "3.0.0", | 889 | "version": "3.0.0", |
708 | "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", | 890 | "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", |
... | @@ -793,6 +975,14 @@ | ... | @@ -793,6 +975,14 @@ |
793 | "node": ">= 0.8" | 975 | "node": ">= 0.8" |
794 | } | 976 | } |
795 | }, | 977 | }, |
978 | + "node_modules/end-of-stream": { | ||
979 | + "version": "1.4.4", | ||
980 | + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", | ||
981 | + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", | ||
982 | + "dependencies": { | ||
983 | + "once": "^1.4.0" | ||
984 | + } | ||
985 | + }, | ||
796 | "node_modules/es5-ext": { | 986 | "node_modules/es5-ext": { |
797 | "version": "0.10.53", | 987 | "version": "0.10.53", |
798 | "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz", | 988 | "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz", |
... | @@ -1323,6 +1513,11 @@ | ... | @@ -1323,6 +1513,11 @@ |
1323 | "node": ">= 0.6" | 1513 | "node": ">= 0.6" |
1324 | } | 1514 | } |
1325 | }, | 1515 | }, |
1516 | + "node_modules/fs-constants": { | ||
1517 | + "version": "1.0.0", | ||
1518 | + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", | ||
1519 | + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" | ||
1520 | + }, | ||
1326 | "node_modules/fs-extra": { | 1521 | "node_modules/fs-extra": { |
1327 | "version": "7.0.1", | 1522 | "version": "7.0.1", |
1328 | "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", | 1523 | "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", |
... | @@ -1552,6 +1747,25 @@ | ... | @@ -1552,6 +1747,25 @@ |
1552 | "node": ">=0.10.0" | 1747 | "node": ">=0.10.0" |
1553 | } | 1748 | } |
1554 | }, | 1749 | }, |
1750 | + "node_modules/ieee754": { | ||
1751 | + "version": "1.2.1", | ||
1752 | + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", | ||
1753 | + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", | ||
1754 | + "funding": [ | ||
1755 | + { | ||
1756 | + "type": "github", | ||
1757 | + "url": "https://github.com/sponsors/feross" | ||
1758 | + }, | ||
1759 | + { | ||
1760 | + "type": "patreon", | ||
1761 | + "url": "https://www.patreon.com/feross" | ||
1762 | + }, | ||
1763 | + { | ||
1764 | + "type": "consulting", | ||
1765 | + "url": "https://feross.org/support" | ||
1766 | + } | ||
1767 | + ] | ||
1768 | + }, | ||
1555 | "node_modules/ignore": { | 1769 | "node_modules/ignore": { |
1556 | "version": "4.0.6", | 1770 | "version": "4.0.6", |
1557 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", | 1771 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", |
... | @@ -2144,6 +2358,11 @@ | ... | @@ -2144,6 +2358,11 @@ |
2144 | "mkdirp": "bin/cmd.js" | 2358 | "mkdirp": "bin/cmd.js" |
2145 | } | 2359 | } |
2146 | }, | 2360 | }, |
2361 | + "node_modules/mkdirp-classic": { | ||
2362 | + "version": "0.5.3", | ||
2363 | + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", | ||
2364 | + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" | ||
2365 | + }, | ||
2147 | "node_modules/moment": { | 2366 | "node_modules/moment": { |
2148 | "version": "2.28.0", | 2367 | "version": "2.28.0", |
2149 | "resolved": "https://registry.npmjs.org/moment/-/moment-2.28.0.tgz", | 2368 | "resolved": "https://registry.npmjs.org/moment/-/moment-2.28.0.tgz", |
... | @@ -2502,6 +2721,15 @@ | ... | @@ -2502,6 +2721,15 @@ |
2502 | "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", | 2721 | "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", |
2503 | "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" | 2722 | "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" |
2504 | }, | 2723 | }, |
2724 | + "node_modules/pump": { | ||
2725 | + "version": "3.0.0", | ||
2726 | + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", | ||
2727 | + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", | ||
2728 | + "dependencies": { | ||
2729 | + "end-of-stream": "^1.1.0", | ||
2730 | + "once": "^1.3.1" | ||
2731 | + } | ||
2732 | + }, | ||
2505 | "node_modules/punycode": { | 2733 | "node_modules/punycode": { |
2506 | "version": "2.1.1", | 2734 | "version": "2.1.1", |
2507 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", | 2735 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", |
... | @@ -2519,6 +2747,26 @@ | ... | @@ -2519,6 +2747,26 @@ |
2519 | "node": ">=0.6" | 2747 | "node": ">=0.6" |
2520 | } | 2748 | } |
2521 | }, | 2749 | }, |
2750 | + "node_modules/randombytes": { | ||
2751 | + "version": "2.0.3", | ||
2752 | + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.3.tgz", | ||
2753 | + "integrity": "sha1-Z0yZdgkBw8QRJ3GjHlIdw0nMCew=" | ||
2754 | + }, | ||
2755 | + "node_modules/randomstring": { | ||
2756 | + "version": "1.2.1", | ||
2757 | + "resolved": "https://registry.npmjs.org/randomstring/-/randomstring-1.2.1.tgz", | ||
2758 | + "integrity": "sha512-eMnfell9XuU3jfCx3f4xCaFAt0YMFPZhx9R3PSStmLarDKg5j5vivqKhf/8pvG+VX/YkxsckHK/VPUrKa5V07A==", | ||
2759 | + "dependencies": { | ||
2760 | + "array-uniq": "1.0.2", | ||
2761 | + "randombytes": "2.0.3" | ||
2762 | + }, | ||
2763 | + "bin": { | ||
2764 | + "randomstring": "bin/randomstring" | ||
2765 | + }, | ||
2766 | + "engines": { | ||
2767 | + "node": "*" | ||
2768 | + } | ||
2769 | + }, | ||
2522 | "node_modules/range-parser": { | 2770 | "node_modules/range-parser": { |
2523 | "version": "1.2.1", | 2771 | "version": "1.2.1", |
2524 | "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", | 2772 | "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", |
... | @@ -2861,6 +3109,11 @@ | ... | @@ -2861,6 +3109,11 @@ |
2861 | "node": ">=4" | 3109 | "node": ">=4" |
2862 | } | 3110 | } |
2863 | }, | 3111 | }, |
3112 | + "node_modules/split-ca": { | ||
3113 | + "version": "1.0.1", | ||
3114 | + "resolved": "https://registry.npmjs.org/split-ca/-/split-ca-1.0.1.tgz", | ||
3115 | + "integrity": "sha1-bIOv82kvphJW4M0ZfgXp3hV2kaY=" | ||
3116 | + }, | ||
2864 | "node_modules/sprintf-js": { | 3117 | "node_modules/sprintf-js": { |
2865 | "version": "1.0.3", | 3118 | "version": "1.0.3", |
2866 | "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", | 3119 | "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", |
... | @@ -2875,6 +3128,30 @@ | ... | @@ -2875,6 +3128,30 @@ |
2875 | "node": ">= 0.6" | 3128 | "node": ">= 0.6" |
2876 | } | 3129 | } |
2877 | }, | 3130 | }, |
3131 | + "node_modules/ssh2": { | ||
3132 | + "version": "0.8.9", | ||
3133 | + "resolved": "https://registry.npmjs.org/ssh2/-/ssh2-0.8.9.tgz", | ||
3134 | + "integrity": "sha512-GmoNPxWDMkVpMFa9LVVzQZHF6EW3WKmBwL+4/GeILf2hFmix5Isxm7Amamo8o7bHiU0tC+wXsGcUXOxp8ChPaw==", | ||
3135 | + "dependencies": { | ||
3136 | + "ssh2-streams": "~0.4.10" | ||
3137 | + }, | ||
3138 | + "engines": { | ||
3139 | + "node": ">=5.2.0" | ||
3140 | + } | ||
3141 | + }, | ||
3142 | + "node_modules/ssh2-streams": { | ||
3143 | + "version": "0.4.10", | ||
3144 | + "resolved": "https://registry.npmjs.org/ssh2-streams/-/ssh2-streams-0.4.10.tgz", | ||
3145 | + "integrity": "sha512-8pnlMjvnIZJvmTzUIIA5nT4jr2ZWNNVHwyXfMGdRJbug9TpI3kd99ffglgfSWqujVv/0gxwMsDn9j9RVst8yhQ==", | ||
3146 | + "dependencies": { | ||
3147 | + "asn1": "~0.2.0", | ||
3148 | + "bcrypt-pbkdf": "^1.0.2", | ||
3149 | + "streamsearch": "~0.1.2" | ||
3150 | + }, | ||
3151 | + "engines": { | ||
3152 | + "node": ">=5.2.0" | ||
3153 | + } | ||
3154 | + }, | ||
2878 | "node_modules/statuses": { | 3155 | "node_modules/statuses": { |
2879 | "version": "1.4.0", | 3156 | "version": "1.4.0", |
2880 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", | 3157 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", |
... | @@ -2883,6 +3160,14 @@ | ... | @@ -2883,6 +3160,14 @@ |
2883 | "node": ">= 0.6" | 3160 | "node": ">= 0.6" |
2884 | } | 3161 | } |
2885 | }, | 3162 | }, |
3163 | + "node_modules/streamsearch": { | ||
3164 | + "version": "0.1.2", | ||
3165 | + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-0.1.2.tgz", | ||
3166 | + "integrity": "sha1-gIudDlb8Jz2Am6VzOOkpkZoanxo=", | ||
3167 | + "engines": { | ||
3168 | + "node": ">=0.8.0" | ||
3169 | + } | ||
3170 | + }, | ||
2886 | "node_modules/string_decoder": { | 3171 | "node_modules/string_decoder": { |
2887 | "version": "1.1.1", | 3172 | "version": "1.1.1", |
2888 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", | 3173 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", |
... | @@ -3019,6 +3304,50 @@ | ... | @@ -3019,6 +3304,50 @@ |
3019 | "node": ">= 10" | 3304 | "node": ">= 10" |
3020 | } | 3305 | } |
3021 | }, | 3306 | }, |
3307 | + "node_modules/tar-fs": { | ||
3308 | + "version": "2.0.1", | ||
3309 | + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.0.1.tgz", | ||
3310 | + "integrity": "sha512-6tzWDMeroL87uF/+lin46k+Q+46rAJ0SyPGz7OW7wTgblI273hsBqk2C1j0/xNadNLKDTUL9BukSjB7cwgmlPA==", | ||
3311 | + "dependencies": { | ||
3312 | + "chownr": "^1.1.1", | ||
3313 | + "mkdirp-classic": "^0.5.2", | ||
3314 | + "pump": "^3.0.0", | ||
3315 | + "tar-stream": "^2.0.0" | ||
3316 | + } | ||
3317 | + }, | ||
3318 | + "node_modules/tar-fs/node_modules/chownr": { | ||
3319 | + "version": "1.1.4", | ||
3320 | + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", | ||
3321 | + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" | ||
3322 | + }, | ||
3323 | + "node_modules/tar-stream": { | ||
3324 | + "version": "2.2.0", | ||
3325 | + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", | ||
3326 | + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", | ||
3327 | + "dependencies": { | ||
3328 | + "bl": "^4.0.3", | ||
3329 | + "end-of-stream": "^1.4.1", | ||
3330 | + "fs-constants": "^1.0.0", | ||
3331 | + "inherits": "^2.0.3", | ||
3332 | + "readable-stream": "^3.1.1" | ||
3333 | + }, | ||
3334 | + "engines": { | ||
3335 | + "node": ">=6" | ||
3336 | + } | ||
3337 | + }, | ||
3338 | + "node_modules/tar-stream/node_modules/readable-stream": { | ||
3339 | + "version": "3.6.0", | ||
3340 | + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", | ||
3341 | + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", | ||
3342 | + "dependencies": { | ||
3343 | + "inherits": "^2.0.3", | ||
3344 | + "string_decoder": "^1.1.1", | ||
3345 | + "util-deprecate": "^1.0.1" | ||
3346 | + }, | ||
3347 | + "engines": { | ||
3348 | + "node": ">= 6" | ||
3349 | + } | ||
3350 | + }, | ||
3022 | "node_modules/tar/node_modules/mkdirp": { | 3351 | "node_modules/tar/node_modules/mkdirp": { |
3023 | "version": "1.0.4", | 3352 | "version": "1.0.4", |
3024 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", | 3353 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", |
... | @@ -3080,6 +3409,11 @@ | ... | @@ -3080,6 +3409,11 @@ |
3080 | "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==", | 3409 | "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==", |
3081 | "dev": true | 3410 | "dev": true |
3082 | }, | 3411 | }, |
3412 | + "node_modules/tweetnacl": { | ||
3413 | + "version": "0.14.5", | ||
3414 | + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", | ||
3415 | + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" | ||
3416 | + }, | ||
3083 | "node_modules/type": { | 3417 | "node_modules/type": { |
3084 | "version": "1.2.0", | 3418 | "version": "1.2.0", |
3085 | "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", | 3419 | "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", |
... | @@ -3627,6 +3961,19 @@ | ... | @@ -3627,6 +3961,19 @@ |
3627 | "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", | 3961 | "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", |
3628 | "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" | 3962 | "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" |
3629 | }, | 3963 | }, |
3964 | + "array-uniq": { | ||
3965 | + "version": "1.0.2", | ||
3966 | + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.2.tgz", | ||
3967 | + "integrity": "sha1-X8w3OSB3VyPP1k1lxkvvU7+eum0=" | ||
3968 | + }, | ||
3969 | + "asn1": { | ||
3970 | + "version": "0.2.4", | ||
3971 | + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", | ||
3972 | + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", | ||
3973 | + "requires": { | ||
3974 | + "safer-buffer": "~2.1.0" | ||
3975 | + } | ||
3976 | + }, | ||
3630 | "astral-regex": { | 3977 | "astral-regex": { |
3631 | "version": "1.0.0", | 3978 | "version": "1.0.0", |
3632 | "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", | 3979 | "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", |
... | @@ -3638,6 +3985,11 @@ | ... | @@ -3638,6 +3985,11 @@ |
3638 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", | 3985 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", |
3639 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" | 3986 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" |
3640 | }, | 3987 | }, |
3988 | + "base64-js": { | ||
3989 | + "version": "1.5.1", | ||
3990 | + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", | ||
3991 | + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" | ||
3992 | + }, | ||
3641 | "bcrypt": { | 3993 | "bcrypt": { |
3642 | "version": "5.0.1", | 3994 | "version": "5.0.1", |
3643 | "resolved": "https://registry.npmjs.org/bcrypt/-/bcrypt-5.0.1.tgz", | 3995 | "resolved": "https://registry.npmjs.org/bcrypt/-/bcrypt-5.0.1.tgz", |
... | @@ -3647,6 +3999,41 @@ | ... | @@ -3647,6 +3999,41 @@ |
3647 | "node-addon-api": "^3.1.0" | 3999 | "node-addon-api": "^3.1.0" |
3648 | } | 4000 | } |
3649 | }, | 4001 | }, |
4002 | + "bcrypt-pbkdf": { | ||
4003 | + "version": "1.0.2", | ||
4004 | + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", | ||
4005 | + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", | ||
4006 | + "requires": { | ||
4007 | + "tweetnacl": "^0.14.3" | ||
4008 | + } | ||
4009 | + }, | ||
4010 | + "bl": { | ||
4011 | + "version": "4.1.0", | ||
4012 | + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", | ||
4013 | + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", | ||
4014 | + "requires": { | ||
4015 | + "buffer": "^5.5.0", | ||
4016 | + "inherits": "^2.0.4", | ||
4017 | + "readable-stream": "^3.4.0" | ||
4018 | + }, | ||
4019 | + "dependencies": { | ||
4020 | + "inherits": { | ||
4021 | + "version": "2.0.4", | ||
4022 | + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", | ||
4023 | + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" | ||
4024 | + }, | ||
4025 | + "readable-stream": { | ||
4026 | + "version": "3.6.0", | ||
4027 | + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", | ||
4028 | + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", | ||
4029 | + "requires": { | ||
4030 | + "inherits": "^2.0.3", | ||
4031 | + "string_decoder": "^1.1.1", | ||
4032 | + "util-deprecate": "^1.0.1" | ||
4033 | + } | ||
4034 | + } | ||
4035 | + } | ||
4036 | + }, | ||
3650 | "bluebird": { | 4037 | "bluebird": { |
3651 | "version": "3.7.2", | 4038 | "version": "3.7.2", |
3652 | "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", | 4039 | "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", |
... | @@ -3679,6 +4066,15 @@ | ... | @@ -3679,6 +4066,15 @@ |
3679 | "concat-map": "0.0.1" | 4066 | "concat-map": "0.0.1" |
3680 | } | 4067 | } |
3681 | }, | 4068 | }, |
4069 | + "buffer": { | ||
4070 | + "version": "5.7.1", | ||
4071 | + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", | ||
4072 | + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", | ||
4073 | + "requires": { | ||
4074 | + "base64-js": "^1.3.1", | ||
4075 | + "ieee754": "^1.1.13" | ||
4076 | + } | ||
4077 | + }, | ||
3682 | "buffer-equal-constant-time": { | 4078 | "buffer-equal-constant-time": { |
3683 | "version": "1.0.1", | 4079 | "version": "1.0.1", |
3684 | "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", | 4080 | "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", |
... | @@ -3916,6 +4312,21 @@ | ... | @@ -3916,6 +4312,21 @@ |
3916 | } | 4312 | } |
3917 | } | 4313 | } |
3918 | }, | 4314 | }, |
4315 | + "crypto-random-string": { | ||
4316 | + "version": "4.0.0", | ||
4317 | + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-4.0.0.tgz", | ||
4318 | + "integrity": "sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==", | ||
4319 | + "requires": { | ||
4320 | + "type-fest": "^1.0.1" | ||
4321 | + }, | ||
4322 | + "dependencies": { | ||
4323 | + "type-fest": { | ||
4324 | + "version": "1.2.0", | ||
4325 | + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.2.0.tgz", | ||
4326 | + "integrity": "sha512-++0N6KyAj0t2webXst0PE0xuXb4Dv3z1Z+4SGzK+j/epeWBZCfkQbkW/ezscZwpinmBQ5wu/l4TqagKSVcAGCA==" | ||
4327 | + } | ||
4328 | + } | ||
4329 | + }, | ||
3919 | "d": { | 4330 | "d": { |
3920 | "version": "1.0.1", | 4331 | "version": "1.0.1", |
3921 | "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", | 4332 | "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", |
... | @@ -3971,6 +4382,51 @@ | ... | @@ -3971,6 +4382,51 @@ |
3971 | "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", | 4382 | "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", |
3972 | "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=" | 4383 | "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=" |
3973 | }, | 4384 | }, |
4385 | + "docker-modem": { | ||
4386 | + "version": "3.0.0", | ||
4387 | + "resolved": "https://registry.npmjs.org/docker-modem/-/docker-modem-3.0.0.tgz", | ||
4388 | + "integrity": "sha512-WwFajJ8I5geZ/dDZ5FDMDA6TBkWa76xWwGIGw8uzUjNUGCN0to83wJ8Oi1AxrJTC0JBn+7fvIxUctnawtlwXeg==", | ||
4389 | + "requires": { | ||
4390 | + "debug": "^4.1.1", | ||
4391 | + "readable-stream": "^3.5.0", | ||
4392 | + "split-ca": "^1.0.1", | ||
4393 | + "ssh2": "^0.8.7" | ||
4394 | + }, | ||
4395 | + "dependencies": { | ||
4396 | + "debug": { | ||
4397 | + "version": "4.3.1", | ||
4398 | + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", | ||
4399 | + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", | ||
4400 | + "requires": { | ||
4401 | + "ms": "2.1.2" | ||
4402 | + } | ||
4403 | + }, | ||
4404 | + "ms": { | ||
4405 | + "version": "2.1.2", | ||
4406 | + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", | ||
4407 | + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" | ||
4408 | + }, | ||
4409 | + "readable-stream": { | ||
4410 | + "version": "3.6.0", | ||
4411 | + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", | ||
4412 | + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", | ||
4413 | + "requires": { | ||
4414 | + "inherits": "^2.0.3", | ||
4415 | + "string_decoder": "^1.1.1", | ||
4416 | + "util-deprecate": "^1.0.1" | ||
4417 | + } | ||
4418 | + } | ||
4419 | + } | ||
4420 | + }, | ||
4421 | + "dockerode": { | ||
4422 | + "version": "3.3.0", | ||
4423 | + "resolved": "https://registry.npmjs.org/dockerode/-/dockerode-3.3.0.tgz", | ||
4424 | + "integrity": "sha512-St08lfOjpYCOXEM8XA0VLu3B3hRjtddODphNW5GFoA0AS3JHgoPQKOz0Qmdzg3P+hUPxhb02g1o1Cu1G+U3lRg==", | ||
4425 | + "requires": { | ||
4426 | + "docker-modem": "^3.0.0", | ||
4427 | + "tar-fs": "~2.0.1" | ||
4428 | + } | ||
4429 | + }, | ||
3974 | "doctrine": { | 4430 | "doctrine": { |
3975 | "version": "3.0.0", | 4431 | "version": "3.0.0", |
3976 | "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", | 4432 | "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", |
... | @@ -4051,6 +4507,14 @@ | ... | @@ -4051,6 +4507,14 @@ |
4051 | "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", | 4507 | "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", |
4052 | "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" | 4508 | "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" |
4053 | }, | 4509 | }, |
4510 | + "end-of-stream": { | ||
4511 | + "version": "1.4.4", | ||
4512 | + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", | ||
4513 | + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", | ||
4514 | + "requires": { | ||
4515 | + "once": "^1.4.0" | ||
4516 | + } | ||
4517 | + }, | ||
4054 | "es5-ext": { | 4518 | "es5-ext": { |
4055 | "version": "0.10.53", | 4519 | "version": "0.10.53", |
4056 | "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz", | 4520 | "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz", |
... | @@ -4497,6 +4961,11 @@ | ... | @@ -4497,6 +4961,11 @@ |
4497 | "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", | 4961 | "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", |
4498 | "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" | 4962 | "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" |
4499 | }, | 4963 | }, |
4964 | + "fs-constants": { | ||
4965 | + "version": "1.0.0", | ||
4966 | + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", | ||
4967 | + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" | ||
4968 | + }, | ||
4500 | "fs-extra": { | 4969 | "fs-extra": { |
4501 | "version": "7.0.1", | 4970 | "version": "7.0.1", |
4502 | "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", | 4971 | "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", |
... | @@ -4680,6 +5149,11 @@ | ... | @@ -4680,6 +5149,11 @@ |
4680 | "safer-buffer": ">= 2.1.2 < 3" | 5149 | "safer-buffer": ">= 2.1.2 < 3" |
4681 | } | 5150 | } |
4682 | }, | 5151 | }, |
5152 | + "ieee754": { | ||
5153 | + "version": "1.2.1", | ||
5154 | + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", | ||
5155 | + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" | ||
5156 | + }, | ||
4683 | "ignore": { | 5157 | "ignore": { |
4684 | "version": "4.0.6", | 5158 | "version": "4.0.6", |
4685 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", | 5159 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", |
... | @@ -5174,6 +5648,11 @@ | ... | @@ -5174,6 +5648,11 @@ |
5174 | "minimist": "^1.2.5" | 5648 | "minimist": "^1.2.5" |
5175 | } | 5649 | } |
5176 | }, | 5650 | }, |
5651 | + "mkdirp-classic": { | ||
5652 | + "version": "0.5.3", | ||
5653 | + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", | ||
5654 | + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" | ||
5655 | + }, | ||
5177 | "moment": { | 5656 | "moment": { |
5178 | "version": "2.28.0", | 5657 | "version": "2.28.0", |
5179 | "resolved": "https://registry.npmjs.org/moment/-/moment-2.28.0.tgz", | 5658 | "resolved": "https://registry.npmjs.org/moment/-/moment-2.28.0.tgz", |
... | @@ -5458,6 +5937,15 @@ | ... | @@ -5458,6 +5937,15 @@ |
5458 | "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", | 5937 | "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", |
5459 | "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" | 5938 | "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" |
5460 | }, | 5939 | }, |
5940 | + "pump": { | ||
5941 | + "version": "3.0.0", | ||
5942 | + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", | ||
5943 | + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", | ||
5944 | + "requires": { | ||
5945 | + "end-of-stream": "^1.1.0", | ||
5946 | + "once": "^1.3.1" | ||
5947 | + } | ||
5948 | + }, | ||
5461 | "punycode": { | 5949 | "punycode": { |
5462 | "version": "2.1.1", | 5950 | "version": "2.1.1", |
5463 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", | 5951 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", |
... | @@ -5469,6 +5957,20 @@ | ... | @@ -5469,6 +5957,20 @@ |
5469 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", | 5957 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", |
5470 | "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" | 5958 | "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" |
5471 | }, | 5959 | }, |
5960 | + "randombytes": { | ||
5961 | + "version": "2.0.3", | ||
5962 | + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.3.tgz", | ||
5963 | + "integrity": "sha1-Z0yZdgkBw8QRJ3GjHlIdw0nMCew=" | ||
5964 | + }, | ||
5965 | + "randomstring": { | ||
5966 | + "version": "1.2.1", | ||
5967 | + "resolved": "https://registry.npmjs.org/randomstring/-/randomstring-1.2.1.tgz", | ||
5968 | + "integrity": "sha512-eMnfell9XuU3jfCx3f4xCaFAt0YMFPZhx9R3PSStmLarDKg5j5vivqKhf/8pvG+VX/YkxsckHK/VPUrKa5V07A==", | ||
5969 | + "requires": { | ||
5970 | + "array-uniq": "1.0.2", | ||
5971 | + "randombytes": "2.0.3" | ||
5972 | + } | ||
5973 | + }, | ||
5472 | "range-parser": { | 5974 | "range-parser": { |
5473 | "version": "1.2.1", | 5975 | "version": "1.2.1", |
5474 | "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", | 5976 | "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", |
... | @@ -5748,6 +6250,11 @@ | ... | @@ -5748,6 +6250,11 @@ |
5748 | } | 6250 | } |
5749 | } | 6251 | } |
5750 | }, | 6252 | }, |
6253 | + "split-ca": { | ||
6254 | + "version": "1.0.1", | ||
6255 | + "resolved": "https://registry.npmjs.org/split-ca/-/split-ca-1.0.1.tgz", | ||
6256 | + "integrity": "sha1-bIOv82kvphJW4M0ZfgXp3hV2kaY=" | ||
6257 | + }, | ||
5751 | "sprintf-js": { | 6258 | "sprintf-js": { |
5752 | "version": "1.0.3", | 6259 | "version": "1.0.3", |
5753 | "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", | 6260 | "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", |
... | @@ -5759,11 +6266,34 @@ | ... | @@ -5759,11 +6266,34 @@ |
5759 | "resolved": "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.2.tgz", | 6266 | "resolved": "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.2.tgz", |
5760 | "integrity": "sha512-vF4ZbYdKS8OnoJAWBmMxCQDkiEBkGQYU7UZPtL8flbDRSNkhaXvRJ279ZtI6M+zDaQovVU4tuRgzK5fVhvFAhg==" | 6267 | "integrity": "sha512-vF4ZbYdKS8OnoJAWBmMxCQDkiEBkGQYU7UZPtL8flbDRSNkhaXvRJ279ZtI6M+zDaQovVU4tuRgzK5fVhvFAhg==" |
5761 | }, | 6268 | }, |
6269 | + "ssh2": { | ||
6270 | + "version": "0.8.9", | ||
6271 | + "resolved": "https://registry.npmjs.org/ssh2/-/ssh2-0.8.9.tgz", | ||
6272 | + "integrity": "sha512-GmoNPxWDMkVpMFa9LVVzQZHF6EW3WKmBwL+4/GeILf2hFmix5Isxm7Amamo8o7bHiU0tC+wXsGcUXOxp8ChPaw==", | ||
6273 | + "requires": { | ||
6274 | + "ssh2-streams": "~0.4.10" | ||
6275 | + } | ||
6276 | + }, | ||
6277 | + "ssh2-streams": { | ||
6278 | + "version": "0.4.10", | ||
6279 | + "resolved": "https://registry.npmjs.org/ssh2-streams/-/ssh2-streams-0.4.10.tgz", | ||
6280 | + "integrity": "sha512-8pnlMjvnIZJvmTzUIIA5nT4jr2ZWNNVHwyXfMGdRJbug9TpI3kd99ffglgfSWqujVv/0gxwMsDn9j9RVst8yhQ==", | ||
6281 | + "requires": { | ||
6282 | + "asn1": "~0.2.0", | ||
6283 | + "bcrypt-pbkdf": "^1.0.2", | ||
6284 | + "streamsearch": "~0.1.2" | ||
6285 | + } | ||
6286 | + }, | ||
5762 | "statuses": { | 6287 | "statuses": { |
5763 | "version": "1.4.0", | 6288 | "version": "1.4.0", |
5764 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", | 6289 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", |
5765 | "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==" | 6290 | "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==" |
5766 | }, | 6291 | }, |
6292 | + "streamsearch": { | ||
6293 | + "version": "0.1.2", | ||
6294 | + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-0.1.2.tgz", | ||
6295 | + "integrity": "sha1-gIudDlb8Jz2Am6VzOOkpkZoanxo=" | ||
6296 | + }, | ||
5767 | "string_decoder": { | 6297 | "string_decoder": { |
5768 | "version": "1.1.1", | 6298 | "version": "1.1.1", |
5769 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", | 6299 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", |
... | @@ -5888,6 +6418,48 @@ | ... | @@ -5888,6 +6418,48 @@ |
5888 | } | 6418 | } |
5889 | } | 6419 | } |
5890 | }, | 6420 | }, |
6421 | + "tar-fs": { | ||
6422 | + "version": "2.0.1", | ||
6423 | + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.0.1.tgz", | ||
6424 | + "integrity": "sha512-6tzWDMeroL87uF/+lin46k+Q+46rAJ0SyPGz7OW7wTgblI273hsBqk2C1j0/xNadNLKDTUL9BukSjB7cwgmlPA==", | ||
6425 | + "requires": { | ||
6426 | + "chownr": "^1.1.1", | ||
6427 | + "mkdirp-classic": "^0.5.2", | ||
6428 | + "pump": "^3.0.0", | ||
6429 | + "tar-stream": "^2.0.0" | ||
6430 | + }, | ||
6431 | + "dependencies": { | ||
6432 | + "chownr": { | ||
6433 | + "version": "1.1.4", | ||
6434 | + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", | ||
6435 | + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" | ||
6436 | + } | ||
6437 | + } | ||
6438 | + }, | ||
6439 | + "tar-stream": { | ||
6440 | + "version": "2.2.0", | ||
6441 | + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", | ||
6442 | + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", | ||
6443 | + "requires": { | ||
6444 | + "bl": "^4.0.3", | ||
6445 | + "end-of-stream": "^1.4.1", | ||
6446 | + "fs-constants": "^1.0.0", | ||
6447 | + "inherits": "^2.0.3", | ||
6448 | + "readable-stream": "^3.1.1" | ||
6449 | + }, | ||
6450 | + "dependencies": { | ||
6451 | + "readable-stream": { | ||
6452 | + "version": "3.6.0", | ||
6453 | + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", | ||
6454 | + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", | ||
6455 | + "requires": { | ||
6456 | + "inherits": "^2.0.3", | ||
6457 | + "string_decoder": "^1.1.1", | ||
6458 | + "util-deprecate": "^1.0.1" | ||
6459 | + } | ||
6460 | + } | ||
6461 | + } | ||
6462 | + }, | ||
5891 | "text-table": { | 6463 | "text-table": { |
5892 | "version": "0.2.0", | 6464 | "version": "0.2.0", |
5893 | "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", | 6465 | "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", |
... | @@ -5930,6 +6502,11 @@ | ... | @@ -5930,6 +6502,11 @@ |
5930 | "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==", | 6502 | "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==", |
5931 | "dev": true | 6503 | "dev": true |
5932 | }, | 6504 | }, |
6505 | + "tweetnacl": { | ||
6506 | + "version": "0.14.5", | ||
6507 | + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", | ||
6508 | + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" | ||
6509 | + }, | ||
5933 | "type": { | 6510 | "type": { |
5934 | "version": "1.2.0", | 6511 | "version": "1.2.0", |
5935 | "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", | 6512 | "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", | ... | ... |
... | @@ -9,10 +9,13 @@ | ... | @@ -9,10 +9,13 @@ |
9 | "bcrypt": "^5.0.1", | 9 | "bcrypt": "^5.0.1", |
10 | "cookie-parser": "~1.4.4", | 10 | "cookie-parser": "~1.4.4", |
11 | "cors": "^2.8.5", | 11 | "cors": "^2.8.5", |
12 | + "crypto-random-string": "^4.0.0", | ||
12 | "debug": "~2.6.9", | 13 | "debug": "~2.6.9", |
14 | + "dockerode": "^3.3.0", | ||
13 | "dotenv": "^8.2.0", | 15 | "dotenv": "^8.2.0", |
14 | "express": "~4.16.1", | 16 | "express": "~4.16.1", |
15 | "mysql2": "^2.1.0", | 17 | "mysql2": "^2.1.0", |
18 | + "randomstring": "^1.2.1", | ||
16 | "sequelize": "^6.3.5" | 19 | "sequelize": "^6.3.5" |
17 | }, | 20 | }, |
18 | "devDependencies": { | 21 | "devDependencies": { | ... | ... |
backend/routes/dockerRouter.js
0 → 100644
1 | +const express = require ('express'); | ||
2 | +const router = express.Router(); | ||
3 | + | ||
4 | +const dockerController = require ('../controllers/dockerController') | ||
5 | +const { guestOnly, memberOnly, adminOnly } = require ('../middlewares/auth') | ||
6 | + | ||
7 | +router.post('/dockerfile/add', memberOnly, dockerController.addDockerfile) | ||
8 | +router.post('/dockerfile/list', memberOnly, dockerController.listDockerfile) | ||
9 | +router.post('/dockerfile/remove', memberOnly, dockerController.removeDockerfile) | ||
10 | +router.post('/image/list', memberOnly, dockerController.listImage) | ||
11 | +router.post('/image/build', memberOnly, dockerController.buildImage) | ||
12 | +router.post('/image/remove', memberOnly, dockerController.removeImage) | ||
13 | +router.post('/container/list', memberOnly, dockerController.listContainer) | ||
14 | +router.post('/container/create', memberOnly, dockerController.createContainer) | ||
15 | +router.post('/container/start', memberOnly, dockerController.startContainer) | ||
16 | +router.post('/container/stop', memberOnly, dockerController.stopContainer) | ||
17 | +router.post('/container/remove', memberOnly, dockerController.removeContainer) | ||
18 | + | ||
19 | +router.post('/admin/dockerfile/list', adminOnly, dockerController.adminListDockerfile) | ||
20 | +router.post('/admin/dockerfile/remove', adminOnly, dockerController.adminDeleteDockerfile) | ||
21 | +router.post('/admin/image/list', adminOnly, dockerController.adminListImage) | ||
22 | +router.post('/admin/image/remove', adminOnly, dockerController.adminDeleteImage) | ||
23 | +router.post('/admin/container/list', adminOnly, dockerController.adminListContainer) | ||
24 | +router.post('/admin/container/remove', adminOnly, dockerController.adminDeleteContainer) | ||
25 | + | ||
26 | +module.exports = router |
backend/test/dockertest.js
0 → 100644
backend/utils/auth.js
0 → 100644
1 | +const jwt = require('jsonwebtoken') | ||
2 | +const config = require(__dirname + '/../config/config') | ||
3 | + | ||
4 | +const { User } = require('../models') | ||
5 | + | ||
6 | +exports.currentUser = async (token) => { | ||
7 | + try{ | ||
8 | + if (!token) { | ||
9 | + return false | ||
10 | + } | ||
11 | + let decoded = jwt.verify(token, config.JWT_KEY) | ||
12 | + if (!decoded) { | ||
13 | + return false | ||
14 | + } | ||
15 | + let userId = decoded.id | ||
16 | + let user = await User.findByPk(userId) | ||
17 | + if (!user) { | ||
18 | + return false | ||
19 | + } | ||
20 | + return user | ||
21 | + } catch (error) { | ||
22 | + throw error | ||
23 | + } | ||
24 | +} |
-
Please register or login to post a comment