Spaces:
Sleeping
Sleeping
Added Application Files
Browse files- Dockerfile +23 -0
- package.json +16 -0
- server.js +55 -0
- slim.report.json +519 -0
Dockerfile
ADDED
@@ -0,0 +1,23 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# Use an official Node runtime as a parent image
|
2 |
+
FROM node:14
|
3 |
+
|
4 |
+
# Set the working directory in the container
|
5 |
+
WORKDIR /usr/src/app
|
6 |
+
|
7 |
+
# Copy package.json and package-lock.json
|
8 |
+
COPY package*.json /usr/src/app/
|
9 |
+
COPY server.js /usr/src/app/
|
10 |
+
# Install any needed packages
|
11 |
+
RUN npm install && npm audit fix
|
12 |
+
# Bundle app source inside the Docker image
|
13 |
+
COPY . .
|
14 |
+
|
15 |
+
# Make port available to the world outside this container
|
16 |
+
EXPOSE 8080
|
17 |
+
|
18 |
+
# Define environment variable
|
19 |
+
ENV NAME World
|
20 |
+
|
21 |
+
# Run app when the container launches
|
22 |
+
CMD ["node", "server.js"]
|
23 |
+
|
package.json
ADDED
@@ -0,0 +1,16 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"name": "password-check-api",
|
3 |
+
"version": "1.0.0",
|
4 |
+
"description": "API to check if a password has been breached",
|
5 |
+
"main": "index.js",
|
6 |
+
"scripts": {
|
7 |
+
"start": "node index.js",
|
8 |
+
"test": "echo \"Error: no test specified\" && exit 1"
|
9 |
+
},
|
10 |
+
"author": "Your Name",
|
11 |
+
"license": "ISC",
|
12 |
+
"dependencies": {
|
13 |
+
"axios": "^0.21.1",
|
14 |
+
"express": "^4.17.1"
|
15 |
+
}
|
16 |
+
}
|
server.js
ADDED
@@ -0,0 +1,55 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
const express = require('express');
|
2 |
+
const axios = require('axios');
|
3 |
+
const crypto = require('crypto');
|
4 |
+
|
5 |
+
const app = express();
|
6 |
+
app.use(express.json());
|
7 |
+
|
8 |
+
const PORT = process.env.PORT || 8080;
|
9 |
+
|
10 |
+
// Endpoint to check if a password is breached
|
11 |
+
app.post('/checkPassword', async (req, res) => {
|
12 |
+
try {
|
13 |
+
const password = req.body.password;
|
14 |
+
if (!password) {
|
15 |
+
return res.status(400).send('Password is required');
|
16 |
+
}
|
17 |
+
|
18 |
+
// Hash the password using SHA-1
|
19 |
+
const sha1Hash = crypto.createHash('sha1').update(password).digest('hex').toUpperCase();
|
20 |
+
|
21 |
+
// Get the first 5 characters (prefix) of the hash
|
22 |
+
const prefix = sha1Hash.substring(0, 5);
|
23 |
+
|
24 |
+
// Query the Pwned Passwords API
|
25 |
+
const response = await axios.get(`https://api.pwnedpasswords.com/range/${prefix}`);
|
26 |
+
|
27 |
+
// Check if the password hash is in the response
|
28 |
+
const suffixes = response.data.split('\r\n');
|
29 |
+
let breached = false;
|
30 |
+
let breachCount = 0;
|
31 |
+
|
32 |
+
suffixes.forEach(suffix => {
|
33 |
+
const [hashSuffix, count] = suffix.split(':');
|
34 |
+
if (prefix + hashSuffix === sha1Hash) {
|
35 |
+
breached = true;
|
36 |
+
breachCount = parseInt(count);
|
37 |
+
}
|
38 |
+
});
|
39 |
+
|
40 |
+
// Return the result
|
41 |
+
if (breached) {
|
42 |
+
res.json({ breached: true, breachCount });
|
43 |
+
} else {
|
44 |
+
res.json({ breached: false });
|
45 |
+
}
|
46 |
+
} catch (error) {
|
47 |
+
console.error('Error:', error);
|
48 |
+
res.status(500).send('Internal Server Error');
|
49 |
+
}
|
50 |
+
});
|
51 |
+
|
52 |
+
app.listen(PORT, () => {
|
53 |
+
console.log(`Server is running on port ${PORT}`);
|
54 |
+
});
|
55 |
+
|
slim.report.json
ADDED
@@ -0,0 +1,519 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"version": "1.1",
|
3 |
+
"engine": "linux/amd64|Transformer|1.40.7|fc2a26643f26cde441afb267b5a0a17bddc9a897|2023-12-10_07:50:14AM",
|
4 |
+
"containerized": false,
|
5 |
+
"host_distro": {
|
6 |
+
"name": "Ubuntu",
|
7 |
+
"version": "22.04",
|
8 |
+
"display_name": "Ubuntu 22.04.3 LTS"
|
9 |
+
},
|
10 |
+
"type": "build",
|
11 |
+
"state": "done",
|
12 |
+
"target_reference": "registry.j78.org/checkpassword-api:latest",
|
13 |
+
"system": {
|
14 |
+
"type": "",
|
15 |
+
"release": "",
|
16 |
+
"distro": {
|
17 |
+
"name": "",
|
18 |
+
"version": "",
|
19 |
+
"display_name": ""
|
20 |
+
}
|
21 |
+
},
|
22 |
+
"source_image": {
|
23 |
+
"identity": {
|
24 |
+
"id": "sha256:08412fb4f84382641b7113ec419a18a23e3b0e19d8e4d3c59637aec339435a38",
|
25 |
+
"tags": [
|
26 |
+
"latest",
|
27 |
+
"latest",
|
28 |
+
"latest"
|
29 |
+
],
|
30 |
+
"names": [
|
31 |
+
"checkpassword-api-backend:latest",
|
32 |
+
"my-api-image:latest",
|
33 |
+
"registry.j78.org/checkpassword-api:latest"
|
34 |
+
],
|
35 |
+
"digests": [
|
36 |
+
"sha256:35c1d9ea2631a377f77aa406927a4f4bf22b53f0471e6239bafb747720c52273"
|
37 |
+
],
|
38 |
+
"full_digests": [
|
39 |
+
"registry.j78.org/checkpassword-api@sha256:35c1d9ea2631a377f77aa406927a4f4bf22b53f0471e6239bafb747720c52273"
|
40 |
+
]
|
41 |
+
},
|
42 |
+
"size": 917021490,
|
43 |
+
"size_human": "917 MB",
|
44 |
+
"create_time": "2023-12-30T14:04:32Z",
|
45 |
+
"docker_version": "24.0.5",
|
46 |
+
"architecture": "amd64",
|
47 |
+
"exposed_ports": [
|
48 |
+
"8080/tcp"
|
49 |
+
],
|
50 |
+
"os": "linux",
|
51 |
+
"env_vars": [
|
52 |
+
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
|
53 |
+
"NODE_VERSION=14.21.3",
|
54 |
+
"YARN_VERSION=1.22.19",
|
55 |
+
"NAME=World"
|
56 |
+
],
|
57 |
+
"container_entry": {
|
58 |
+
"exe_path": ""
|
59 |
+
}
|
60 |
+
},
|
61 |
+
"minified_image_size": 82481954,
|
62 |
+
"minified_image_size_human": "82 MB",
|
63 |
+
"minified_image": "registry.j78.org/checkpassword-api:slim",
|
64 |
+
"minified_image_has_data": true,
|
65 |
+
"minified_by": 11.117843910438882,
|
66 |
+
"artifact_location": "/home/cultrix/API/dist_linux/.slim-state/images/08412fb4f84382641b7113ec419a18a23e3b0e19d8e4d3c59637aec339435a38/artifacts",
|
67 |
+
"container_report_name": "creport.json",
|
68 |
+
"seccomp_profile_name": "registry.j78.org-checkpassword-api-seccomp.json",
|
69 |
+
"apparmor_profile_name": "registry.j78.org-checkpassword-api-apparmor-profile",
|
70 |
+
"image_stack": [
|
71 |
+
{
|
72 |
+
"is_top_image": false,
|
73 |
+
"id": "sha256:1d12470fa662a2a5cb50378dcdc8ea228c1735747db410bbefb8e2d9144b5452",
|
74 |
+
"full_name": "node:14",
|
75 |
+
"repo_name": "node",
|
76 |
+
"version_tag": "14",
|
77 |
+
"raw_tags": [
|
78 |
+
"node:14"
|
79 |
+
],
|
80 |
+
"create_time": "2023-04-12T09:12:12Z",
|
81 |
+
"new_size": 911750439,
|
82 |
+
"new_size_human": "912 MB",
|
83 |
+
"instructions": [
|
84 |
+
{
|
85 |
+
"type": "ADD",
|
86 |
+
"time": "2023-04-12T00:20:15Z",
|
87 |
+
"is_nop": true,
|
88 |
+
"local_image_exists": false,
|
89 |
+
"layer_index": 0,
|
90 |
+
"size": 114108637,
|
91 |
+
"size_human": "114 MB",
|
92 |
+
"params": "file:40953ed6e6f96703b2e0c13288437c2aaf8b3df33dbc423686290cbe0e595a5e in /",
|
93 |
+
"command_snippet": "ADD file:40953ed6e6f96703b2e0c13288437c2aaf8...",
|
94 |
+
"command_all": "ADD file:40953ed6e6f96703b2e0c13288437c2aaf8b3df33dbc423686290cbe0e595a5e /",
|
95 |
+
"target": "/",
|
96 |
+
"source_type": "file",
|
97 |
+
"inst_set_time_bucket": "2023-04-12T02:15:00+02:00",
|
98 |
+
"inst_set_time_index": 0,
|
99 |
+
"inst_set_time_reverse_index": 3
|
100 |
+
},
|
101 |
+
{
|
102 |
+
"type": "CMD",
|
103 |
+
"time": "2023-04-12T00:20:15Z",
|
104 |
+
"is_nop": true,
|
105 |
+
"is_exec_form": true,
|
106 |
+
"local_image_exists": false,
|
107 |
+
"layer_index": 0,
|
108 |
+
"size": 0,
|
109 |
+
"params": "[\"bash\"]\n",
|
110 |
+
"command_snippet": "CMD [\"bash\"]\n",
|
111 |
+
"command_all": "CMD [\"bash\"]\n",
|
112 |
+
"inst_set_time_bucket": "2023-04-12T02:15:00+02:00",
|
113 |
+
"inst_set_time_index": 0,
|
114 |
+
"inst_set_time_reverse_index": 3
|
115 |
+
},
|
116 |
+
{
|
117 |
+
"type": "RUN",
|
118 |
+
"time": "2023-04-12T07:52:41Z",
|
119 |
+
"is_nop": false,
|
120 |
+
"local_image_exists": false,
|
121 |
+
"layer_index": 0,
|
122 |
+
"size": 16563434,
|
123 |
+
"size_human": "17 MB",
|
124 |
+
"command_snippet": "RUN set -eux; \tapt-get update; \tapt-get inst...",
|
125 |
+
"command_all": "RUN set -eux; \tapt-get update; \tapt-get install -y --no-install-recommends \t\tca-certificates \t\tcurl \t\tnetbase \t\twget \t; \trm -rf /var/lib/apt/lists/*",
|
126 |
+
"system_commands": [
|
127 |
+
"set -eux",
|
128 |
+
"apt-get update",
|
129 |
+
"apt-get install -y --no-install-recommends ca-certificates curl netbase wget",
|
130 |
+
"rm -rf /var/lib/apt/lists/*"
|
131 |
+
],
|
132 |
+
"inst_set_time_bucket": "2023-04-12T09:45:00+02:00",
|
133 |
+
"inst_set_time_index": 1,
|
134 |
+
"inst_set_time_reverse_index": 2
|
135 |
+
},
|
136 |
+
{
|
137 |
+
"type": "RUN",
|
138 |
+
"time": "2023-04-12T07:52:47Z",
|
139 |
+
"is_nop": false,
|
140 |
+
"local_image_exists": false,
|
141 |
+
"layer_index": 0,
|
142 |
+
"size": 17545663,
|
143 |
+
"size_human": "18 MB",
|
144 |
+
"command_snippet": "RUN set -ex; \tif ! command -v gpg > /dev/nul...",
|
145 |
+
"command_all": "RUN set -ex; \tif ! command -v gpg > /dev/null; then \t\tapt-get update; \t\tapt-get install -y --no-install-recommends \t\t\tgnupg \t\t\tdirmngr \t\t; \t\trm -rf /var/lib/apt/lists/*; \tfi",
|
146 |
+
"system_commands": [
|
147 |
+
"set -ex",
|
148 |
+
"if ! command -v gpg > /dev/null",
|
149 |
+
"then apt-get update",
|
150 |
+
"apt-get install -y --no-install-recommends gnupg dirmngr",
|
151 |
+
"rm -rf /var/lib/apt/lists/*",
|
152 |
+
"fi"
|
153 |
+
],
|
154 |
+
"inst_set_time_bucket": "2023-04-12T09:45:00+02:00",
|
155 |
+
"inst_set_time_index": 1,
|
156 |
+
"inst_set_time_reverse_index": 2
|
157 |
+
},
|
158 |
+
{
|
159 |
+
"type": "RUN",
|
160 |
+
"time": "2023-04-12T07:53:05Z",
|
161 |
+
"is_nop": false,
|
162 |
+
"local_image_exists": false,
|
163 |
+
"layer_index": 0,
|
164 |
+
"size": 145611179,
|
165 |
+
"size_human": "146 MB",
|
166 |
+
"command_snippet": "RUN apt-get update && \\\n\tapt-get install -y ...",
|
167 |
+
"command_all": "RUN apt-get update && \\\n\tapt-get install -y --no-install-recommends \t\tgit \t\tmercurial \t\topenssh-client \t\tsubversion \t\t\t\tprocps && \\\n\trm -rf /var/lib/apt/lists/*",
|
168 |
+
"system_commands": [
|
169 |
+
"apt-get update",
|
170 |
+
"apt-get install -y --no-install-recommends git mercurial openssh-client subversion procps",
|
171 |
+
"rm -rf /var/lib/apt/lists/*"
|
172 |
+
],
|
173 |
+
"inst_set_time_bucket": "2023-04-12T09:45:00+02:00",
|
174 |
+
"inst_set_time_index": 1,
|
175 |
+
"inst_set_time_reverse_index": 2
|
176 |
+
},
|
177 |
+
{
|
178 |
+
"type": "RUN",
|
179 |
+
"time": "2023-04-12T07:54:04Z",
|
180 |
+
"is_nop": false,
|
181 |
+
"local_image_exists": false,
|
182 |
+
"layer_index": 0,
|
183 |
+
"size": 509529301,
|
184 |
+
"size_human": "510 MB",
|
185 |
+
"command_snippet": "RUN set -ex; \tapt-get update; \tapt-get insta...",
|
186 |
+
"command_all": "RUN set -ex; \tapt-get update; \tapt-get install -y --no-install-recommends \t\tautoconf \t\tautomake \t\tbzip2 \t\tdpkg-dev \t\tfile \t\tg++ \t\tgcc \t\timagemagick \t\tlibbz2-dev \t\tlibc6-dev \t\tlibcurl4-openssl-dev \t\tlibdb-dev \t\tlibevent-dev \t\tlibffi-dev \t\tlibgdbm-dev \t\tlibglib2.0-dev \t\tlibgmp-dev \t\tlibjpeg-dev \t\tlibkrb5-dev \t\tliblzma-dev \t\tlibmagickcore-dev \t\tlibmagickwand-dev \t\tlibmaxminddb-dev \t\tlibncurses5-dev \t\tlibncursesw5-dev \t\tlibpng-dev \t\tlibpq-dev \t\tlibreadline-dev \t\tlibsqlite3-dev \t\tlibssl-dev \t\tlibtool \t\tlibwebp-dev \t\tlibxml2-dev \t\tlibxslt-dev \t\tlibyaml-dev \t\tmake \t\tpatch \t\tunzip \t\txz-utils \t\tzlib1g-dev \t\t\t\t$( \t\t\tif apt-cache show 'default-libmysqlclient-dev' 2>/dev/null | grep -q '^Version:'; then \t\t\t\techo 'default-libmysqlclient-dev'; \t\t\telse \t\t\t\techo 'libmysqlclient-dev'; \t\t\tfi \t\t) \t; \trm -rf /var/lib/apt/lists/*",
|
187 |
+
"system_commands": [
|
188 |
+
"set -ex",
|
189 |
+
"apt-get update",
|
190 |
+
"apt-get install -y --no-install-recommends autoconf automake bzip2 dpkg-dev file g++ gcc imagemagick libbz2-dev libc6-dev libcurl4-openssl-dev libdb-dev libevent-dev libffi-dev libgdbm-dev libglib2.0-dev libgmp-dev libjpeg-dev libkrb5-dev liblzma-dev libmagickcore-dev libmagickwand-dev libmaxminddb-dev libncurses5-dev libncursesw5-dev libpng-dev libpq-dev libreadline-dev libsqlite3-dev libssl-dev libtool libwebp-dev libxml2-dev libxslt-dev libyaml-dev make patch unzip xz-utils zlib1g-dev $( if apt-cache show 'default-libmysqlclient-dev' 2>/dev/null | grep -q '^Version:'",
|
191 |
+
"then echo 'default-libmysqlclient-dev'",
|
192 |
+
"else echo 'libmysqlclient-dev'",
|
193 |
+
"fi )",
|
194 |
+
"rm -rf /var/lib/apt/lists/*"
|
195 |
+
],
|
196 |
+
"inst_set_time_bucket": "2023-04-12T09:45:00+02:00",
|
197 |
+
"inst_set_time_index": 1,
|
198 |
+
"inst_set_time_reverse_index": 2
|
199 |
+
},
|
200 |
+
{
|
201 |
+
"type": "RUN",
|
202 |
+
"time": "2023-04-12T09:05:40Z",
|
203 |
+
"is_nop": false,
|
204 |
+
"local_image_exists": false,
|
205 |
+
"layer_index": 0,
|
206 |
+
"size": 333532,
|
207 |
+
"size_human": "334 kB",
|
208 |
+
"command_snippet": "RUN groupadd --gid 1000 node && \\\n\tuseradd -...",
|
209 |
+
"command_all": "RUN groupadd --gid 1000 node && \\\n\tuseradd --uid 1000 --gid node --shell /bin/bash --create-home node",
|
210 |
+
"system_commands": [
|
211 |
+
"groupadd --gid 1000 node",
|
212 |
+
"useradd --uid 1000 --gid node --shell /bin/bash --create-home node"
|
213 |
+
],
|
214 |
+
"inst_set_time_bucket": "2023-04-12T11:00:00+02:00",
|
215 |
+
"inst_set_time_index": 2,
|
216 |
+
"inst_set_time_reverse_index": 1
|
217 |
+
},
|
218 |
+
{
|
219 |
+
"type": "ENV",
|
220 |
+
"time": "2023-04-12T09:11:56Z",
|
221 |
+
"is_nop": true,
|
222 |
+
"local_image_exists": false,
|
223 |
+
"layer_index": 0,
|
224 |
+
"size": 0,
|
225 |
+
"params": "NODE_VERSION=14.21.3",
|
226 |
+
"command_snippet": "ENV NODE_VERSION=14.21.3",
|
227 |
+
"command_all": "ENV NODE_VERSION=14.21.3",
|
228 |
+
"inst_set_time_bucket": "2023-04-12T11:00:00+02:00",
|
229 |
+
"inst_set_time_index": 2,
|
230 |
+
"inst_set_time_reverse_index": 1
|
231 |
+
},
|
232 |
+
{
|
233 |
+
"type": "RUN",
|
234 |
+
"time": "2023-04-12T09:12:09Z",
|
235 |
+
"is_nop": false,
|
236 |
+
"local_image_exists": false,
|
237 |
+
"layer_index": 0,
|
238 |
+
"size": 100388126,
|
239 |
+
"size_human": "100 MB",
|
240 |
+
"command_snippet": "RUN ARCH= && \\\n\tdpkgArch=\"$(dpkg --print-arc...",
|
241 |
+
"command_all": "RUN ARCH= && \\\n\tdpkgArch=\"$(dpkg --print-architecture)\" && \\\n\tcase \"${dpkgArch##*-}\" in amd64) ARCH='x64';; ppc64el) ARCH='ppc64le';; s390x) ARCH='s390x';; arm64) ARCH='arm64';; armhf) ARCH='armv7l';; i386) ARCH='x86';; *) echo \"unsupported architecture\"; exit 1 ;; esac && \\\n\tset -ex && \\\n\tfor key in 4ED778F539E3634C779C87C6D7062848A1AB005C 141F07595B7B3FFE74309A937405533BE57C7D57 74F12602B6F1C4E913FAA37AD3A89613643B6201 61FC681DFB92A079F1685E77973F295594EC4689 8FCCA13FEF1D0C2E91008E09770F7A9A5AE15600 C4F0DFFF4E8C1A8236409D08E73BC641CC11F4C8 890C08DB8579162FEE0DF9DB8BEAB4DFCF555EF4 C82FA3AE1CBEDC6BE46B9360C43CEC45C17AB93C 108F52B48DB57BB0CC439B2997B01419BD92F80A ; do gpg --batch --keyserver hkps://keys.openpgp.org --recv-keys \"$key\" || gpg --batch --keyserver keyserver.ubuntu.com --recv-keys \"$key\" ; done && \\\n\tcurl -fsSLO --compressed \"https://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION-linux-$ARCH.tar.xz\" && \\\n\tcurl -fsSLO --compressed \"https://nodejs.org/dist/v$NODE_VERSION/SHASUMS256.txt.asc\" && \\\n\tgpg --batch --decrypt --output SHASUMS256.txt SHASUMS256.txt.asc && \\\n\tgrep \" node-v$NODE_VERSION-linux-$ARCH.tar.xz\\$\" SHASUMS256.txt | sha256sum -c - && \\\n\ttar -xJf \"node-v$NODE_VERSION-linux-$ARCH.tar.xz\" -C /usr/local --strip-components=1 --no-same-owner && \\\n\trm \"node-v$NODE_VERSION-linux-$ARCH.tar.xz\" SHASUMS256.txt.asc SHASUMS256.txt && \\\n\tln -s /usr/local/bin/node /usr/local/bin/nodejs && \\\n\tnode --version && \\\n\tnpm --version",
|
242 |
+
"system_commands": [
|
243 |
+
"ARCH=",
|
244 |
+
"dpkgArch=\"$(dpkg --print-architecture)\"",
|
245 |
+
"case \"${dpkgArch##*-}\" in amd64) ARCH='x64';; ppc64el) ARCH='ppc64le';; s390x) ARCH='s390x';; arm64) ARCH='arm64';; armhf) ARCH='armv7l';; i386) ARCH='x86';; *) echo \"unsupported architecture\"; exit 1 ;; esac",
|
246 |
+
"set -ex",
|
247 |
+
"for key in 4ED778F539E3634C779C87C6D7062848A1AB005C 141F07595B7B3FFE74309A937405533BE57C7D57 74F12602B6F1C4E913FAA37AD3A89613643B6201 61FC681DFB92A079F1685E77973F295594EC4689 8FCCA13FEF1D0C2E91008E09770F7A9A5AE15600 C4F0DFFF4E8C1A8236409D08E73BC641CC11F4C8 890C08DB8579162FEE0DF9DB8BEAB4DFCF555EF4 C82FA3AE1CBEDC6BE46B9360C43CEC45C17AB93C 108F52B48DB57BB0CC439B2997B01419BD92F80A ; do gpg --batch --keyserver hkps://keys.openpgp.org --recv-keys \"$key\" || gpg --batch --keyserver keyserver.ubuntu.com --recv-keys \"$key\" ; done",
|
248 |
+
"curl -fsSLO --compressed \"https://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION-linux-$ARCH.tar.xz\"",
|
249 |
+
"curl -fsSLO --compressed \"https://nodejs.org/dist/v$NODE_VERSION/SHASUMS256.txt.asc\"",
|
250 |
+
"gpg --batch --decrypt --output SHASUMS256.txt SHASUMS256.txt.asc",
|
251 |
+
"grep \" node-v$NODE_VERSION-linux-$ARCH.tar.xz$\" SHASUMS256.txt | sha256sum -c -",
|
252 |
+
"tar -xJf \"node-v$NODE_VERSION-linux-$ARCH.tar.xz\" -C /usr/local --strip-components=1 --no-same-owner",
|
253 |
+
"rm \"node-v$NODE_VERSION-linux-$ARCH.tar.xz\" SHASUMS256.txt.asc SHASUMS256.txt",
|
254 |
+
"ln -s /usr/local/bin/node /usr/local/bin/nodejs",
|
255 |
+
"node --version",
|
256 |
+
"npm --version"
|
257 |
+
],
|
258 |
+
"inst_set_time_bucket": "2023-04-12T11:00:00+02:00",
|
259 |
+
"inst_set_time_index": 2,
|
260 |
+
"inst_set_time_reverse_index": 1
|
261 |
+
},
|
262 |
+
{
|
263 |
+
"type": "ENV",
|
264 |
+
"time": "2023-04-12T09:12:09Z",
|
265 |
+
"is_nop": true,
|
266 |
+
"local_image_exists": false,
|
267 |
+
"layer_index": 0,
|
268 |
+
"size": 0,
|
269 |
+
"params": "YARN_VERSION=1.22.19",
|
270 |
+
"command_snippet": "ENV YARN_VERSION=1.22.19",
|
271 |
+
"command_all": "ENV YARN_VERSION=1.22.19",
|
272 |
+
"inst_set_time_bucket": "2023-04-12T11:00:00+02:00",
|
273 |
+
"inst_set_time_index": 2,
|
274 |
+
"inst_set_time_reverse_index": 1
|
275 |
+
},
|
276 |
+
{
|
277 |
+
"type": "RUN",
|
278 |
+
"time": "2023-04-12T09:12:12Z",
|
279 |
+
"is_nop": false,
|
280 |
+
"local_image_exists": false,
|
281 |
+
"layer_index": 0,
|
282 |
+
"size": 7670179,
|
283 |
+
"size_human": "7.7 MB",
|
284 |
+
"command_snippet": "RUN set -ex && \\\n\tfor key in 6A010C51660...",
|
285 |
+
"command_all": "RUN set -ex && \\\n\tfor key in 6A010C5166006599AA17F08146C2130DFD2497F5 ; do gpg --batch --keyserver hkps://keys.openpgp.org --recv-keys \"$key\" || gpg --batch --keyserver keyserver.ubuntu.com --recv-keys \"$key\" ; done && \\\n\tcurl -fsSLO --compressed \"https://yarnpkg.com/downloads/$YARN_VERSION/yarn-v$YARN_VERSION.tar.gz\" && \\\n\tcurl -fsSLO --compressed \"https://yarnpkg.com/downloads/$YARN_VERSION/yarn-v$YARN_VERSION.tar.gz.asc\" && \\\n\tgpg --batch --verify yarn-v$YARN_VERSION.tar.gz.asc yarn-v$YARN_VERSION.tar.gz && \\\n\tmkdir -p /opt && \\\n\ttar -xzf yarn-v$YARN_VERSION.tar.gz -C /opt/ && \\\n\tln -s /opt/yarn-v$YARN_VERSION/bin/yarn /usr/local/bin/yarn && \\\n\tln -s /opt/yarn-v$YARN_VERSION/bin/yarnpkg /usr/local/bin/yarnpkg && \\\n\trm yarn-v$YARN_VERSION.tar.gz.asc yarn-v$YARN_VERSION.tar.gz && \\\n\tyarn --version",
|
286 |
+
"system_commands": [
|
287 |
+
"set -ex",
|
288 |
+
"for key in 6A010C5166006599AA17F08146C2130DFD2497F5 ; do gpg --batch --keyserver hkps://keys.openpgp.org --recv-keys \"$key\" || gpg --batch --keyserver keyserver.ubuntu.com --recv-keys \"$key\" ; done",
|
289 |
+
"curl -fsSLO --compressed \"https://yarnpkg.com/downloads/$YARN_VERSION/yarn-v$YARN_VERSION.tar.gz\"",
|
290 |
+
"curl -fsSLO --compressed \"https://yarnpkg.com/downloads/$YARN_VERSION/yarn-v$YARN_VERSION.tar.gz.asc\"",
|
291 |
+
"gpg --batch --verify yarn-v$YARN_VERSION.tar.gz.asc yarn-v$YARN_VERSION.tar.gz",
|
292 |
+
"mkdir -p /opt",
|
293 |
+
"tar -xzf yarn-v$YARN_VERSION.tar.gz -C /opt/",
|
294 |
+
"ln -s /opt/yarn-v$YARN_VERSION/bin/yarn /usr/local/bin/yarn",
|
295 |
+
"ln -s /opt/yarn-v$YARN_VERSION/bin/yarnpkg /usr/local/bin/yarnpkg",
|
296 |
+
"rm yarn-v$YARN_VERSION.tar.gz.asc yarn-v$YARN_VERSION.tar.gz",
|
297 |
+
"yarn --version"
|
298 |
+
],
|
299 |
+
"inst_set_time_bucket": "2023-04-12T11:00:00+02:00",
|
300 |
+
"inst_set_time_index": 2,
|
301 |
+
"inst_set_time_reverse_index": 1
|
302 |
+
},
|
303 |
+
{
|
304 |
+
"type": "COPY",
|
305 |
+
"time": "2023-04-12T09:12:12Z",
|
306 |
+
"is_nop": true,
|
307 |
+
"local_image_exists": false,
|
308 |
+
"layer_index": 0,
|
309 |
+
"size": 388,
|
310 |
+
"size_human": "388 B",
|
311 |
+
"params": "file:4d192565a7220e135cab6c77fbc1c73211b69f3d9fb37e62857b2c6eb9363d51 in /usr/local/bin/",
|
312 |
+
"command_snippet": "COPY file:4d192565a7220e135cab6c77fbc1c73211...",
|
313 |
+
"command_all": "COPY file:4d192565a7220e135cab6c77fbc1c73211b69f3d9fb37e62857b2c6eb9363d51 /usr/local/bin/",
|
314 |
+
"target": "/usr/local/bin/",
|
315 |
+
"source_type": "file",
|
316 |
+
"inst_set_time_bucket": "2023-04-12T11:00:00+02:00",
|
317 |
+
"inst_set_time_index": 2,
|
318 |
+
"inst_set_time_reverse_index": 1
|
319 |
+
},
|
320 |
+
{
|
321 |
+
"type": "ENTRYPOINT",
|
322 |
+
"time": "2023-04-12T09:12:12Z",
|
323 |
+
"is_nop": true,
|
324 |
+
"is_exec_form": true,
|
325 |
+
"local_image_exists": false,
|
326 |
+
"layer_index": 0,
|
327 |
+
"size": 0,
|
328 |
+
"params": "[\"docker-entrypoint.sh\"]\n",
|
329 |
+
"command_snippet": "ENTRYPOINT [\"docker-entrypoint.sh\"]\n",
|
330 |
+
"command_all": "ENTRYPOINT [\"docker-entrypoint.sh\"]\n",
|
331 |
+
"inst_set_time_bucket": "2023-04-12T11:00:00+02:00",
|
332 |
+
"inst_set_time_index": 2,
|
333 |
+
"inst_set_time_reverse_index": 1
|
334 |
+
},
|
335 |
+
{
|
336 |
+
"type": "CMD",
|
337 |
+
"time": "2023-04-12T09:12:12Z",
|
338 |
+
"is_last_instruction": true,
|
339 |
+
"is_nop": true,
|
340 |
+
"is_exec_form": true,
|
341 |
+
"local_image_exists": true,
|
342 |
+
"layer_index": 0,
|
343 |
+
"size": 0,
|
344 |
+
"params": "[\"node\"]\n",
|
345 |
+
"command_snippet": "CMD [\"node\"]\n",
|
346 |
+
"command_all": "CMD [\"node\"]\n",
|
347 |
+
"raw_tags": [
|
348 |
+
"node:14"
|
349 |
+
],
|
350 |
+
"inst_set_time_bucket": "2023-04-12T11:00:00+02:00",
|
351 |
+
"inst_set_time_index": 2,
|
352 |
+
"inst_set_time_reverse_index": 1
|
353 |
+
}
|
354 |
+
]
|
355 |
+
},
|
356 |
+
{
|
357 |
+
"is_top_image": true,
|
358 |
+
"id": "sha256:08412fb4f84382641b7113ec419a18a23e3b0e19d8e4d3c59637aec339435a38",
|
359 |
+
"full_name": "checkpassword-api-backend:latest",
|
360 |
+
"repo_name": "checkpassword-api-backend",
|
361 |
+
"version_tag": "latest",
|
362 |
+
"raw_tags": [
|
363 |
+
"checkpassword-api-backend:latest",
|
364 |
+
"my-api-image:latest",
|
365 |
+
"registry.j78.org/checkpassword-api:latest"
|
366 |
+
],
|
367 |
+
"create_time": "2023-12-30T14:04:32Z",
|
368 |
+
"new_size": 5271051,
|
369 |
+
"new_size_human": "5.3 MB",
|
370 |
+
"base_image_id": "sha256:1d12470fa662a2a5cb50378dcdc8ea228c1735747db410bbefb8e2d9144b5452",
|
371 |
+
"instructions": [
|
372 |
+
{
|
373 |
+
"type": "WORKDIR",
|
374 |
+
"time": "2023-12-30T14:00:45Z",
|
375 |
+
"is_nop": true,
|
376 |
+
"local_image_exists": true,
|
377 |
+
"intermediate_image_id": "sha256:74cbeed9bdc13c2237453b4e2d1cabcd3c385406d96098cb4d260daae75ec576",
|
378 |
+
"layer_index": 0,
|
379 |
+
"size": 0,
|
380 |
+
"params": "/usr/src/app",
|
381 |
+
"command_snippet": "WORKDIR /usr/src/app",
|
382 |
+
"command_all": "WORKDIR /usr/src/app",
|
383 |
+
"system_commands": [
|
384 |
+
"mkdir -p /usr/src/app"
|
385 |
+
],
|
386 |
+
"inst_set_time_bucket": "2023-12-30T15:00:00+01:00",
|
387 |
+
"inst_set_time_index": 3,
|
388 |
+
"inst_set_time_reverse_index": 0
|
389 |
+
},
|
390 |
+
{
|
391 |
+
"type": "COPY",
|
392 |
+
"time": "2023-12-30T14:02:54Z",
|
393 |
+
"is_nop": true,
|
394 |
+
"local_image_exists": true,
|
395 |
+
"intermediate_image_id": "sha256:defb1f38be5ce2953fba7215b82482f019576502081a7bdd0ecfa0ed58891492",
|
396 |
+
"layer_index": 0,
|
397 |
+
"size": 371,
|
398 |
+
"size_human": "371 B",
|
399 |
+
"params": "file:e15467e7e83b95b528adf82d41f9f8337cdcd863a7a98b38f04ae5c0567a89c9 in /usr/src/app/",
|
400 |
+
"command_snippet": "COPY file:e15467e7e83b95b528adf82d41f9f8337c...",
|
401 |
+
"command_all": "COPY file:e15467e7e83b95b528adf82d41f9f8337cdcd863a7a98b38f04ae5c0567a89c9 /usr/src/app/",
|
402 |
+
"target": "/usr/src/app/",
|
403 |
+
"source_type": "file",
|
404 |
+
"inst_set_time_bucket": "2023-12-30T15:00:00+01:00",
|
405 |
+
"inst_set_time_index": 3,
|
406 |
+
"inst_set_time_reverse_index": 0
|
407 |
+
},
|
408 |
+
{
|
409 |
+
"type": "COPY",
|
410 |
+
"time": "2023-12-30T14:04:27Z",
|
411 |
+
"is_nop": true,
|
412 |
+
"local_image_exists": true,
|
413 |
+
"intermediate_image_id": "sha256:4bcba1cfba614d8df2a89fcf948967512c34875a72e575d83c644850e60b2872",
|
414 |
+
"layer_index": 0,
|
415 |
+
"size": 1641,
|
416 |
+
"size_human": "1.6 kB",
|
417 |
+
"params": "file:16f46612d894027fed078023cbb2975f6f86724de1ea7334e0ccdb758037d850 in /usr/src/app/",
|
418 |
+
"command_snippet": "COPY file:16f46612d894027fed078023cbb2975f6f...",
|
419 |
+
"command_all": "COPY file:16f46612d894027fed078023cbb2975f6f86724de1ea7334e0ccdb758037d850 /usr/src/app/",
|
420 |
+
"target": "/usr/src/app/",
|
421 |
+
"source_type": "file",
|
422 |
+
"inst_set_time_bucket": "2023-12-30T15:00:00+01:00",
|
423 |
+
"inst_set_time_index": 3,
|
424 |
+
"inst_set_time_reverse_index": 0
|
425 |
+
},
|
426 |
+
{
|
427 |
+
"type": "RUN",
|
428 |
+
"time": "2023-12-30T14:04:31Z",
|
429 |
+
"is_nop": false,
|
430 |
+
"local_image_exists": true,
|
431 |
+
"intermediate_image_id": "sha256:0709474f350fc586250029b201b02d8b6bccca1fe06c62e4cd34c0f3d5ff05da",
|
432 |
+
"layer_index": 0,
|
433 |
+
"size": 5266494,
|
434 |
+
"size_human": "5.3 MB",
|
435 |
+
"command_snippet": "RUN npm install && \\\n\tnpm audit fix",
|
436 |
+
"command_all": "RUN npm install && \\\n\tnpm audit fix",
|
437 |
+
"system_commands": [
|
438 |
+
"npm install",
|
439 |
+
"npm audit fix"
|
440 |
+
],
|
441 |
+
"inst_set_time_bucket": "2023-12-30T15:00:00+01:00",
|
442 |
+
"inst_set_time_index": 3,
|
443 |
+
"inst_set_time_reverse_index": 0
|
444 |
+
},
|
445 |
+
{
|
446 |
+
"type": "COPY",
|
447 |
+
"time": "2023-12-30T14:04:31Z",
|
448 |
+
"is_nop": true,
|
449 |
+
"local_image_exists": true,
|
450 |
+
"intermediate_image_id": "sha256:2403f8709b493fae7239c248e6393dc4b59de53945d624211b930f8dc9c802fa",
|
451 |
+
"layer_index": 0,
|
452 |
+
"size": 2545,
|
453 |
+
"size_human": "2.5 kB",
|
454 |
+
"params": "dir:6c1f62097e433085854022871988109a927459e2043f326563b27d3d63ae76fd in .",
|
455 |
+
"command_snippet": "COPY dir:6c1f62097e433085854022871988109a927...",
|
456 |
+
"command_all": "COPY dir:6c1f62097e433085854022871988109a927459e2043f326563b27d3d63ae76fd .",
|
457 |
+
"target": ".",
|
458 |
+
"source_type": "dir",
|
459 |
+
"inst_set_time_bucket": "2023-12-30T15:00:00+01:00",
|
460 |
+
"inst_set_time_index": 3,
|
461 |
+
"inst_set_time_reverse_index": 0
|
462 |
+
},
|
463 |
+
{
|
464 |
+
"type": "EXPOSE",
|
465 |
+
"time": "2023-12-30T14:04:32Z",
|
466 |
+
"is_nop": true,
|
467 |
+
"local_image_exists": true,
|
468 |
+
"intermediate_image_id": "sha256:6454d02e2810c195efe38e3b9064d2f1d6234b3ef15ae78957920a805ba836e4",
|
469 |
+
"layer_index": 0,
|
470 |
+
"size": 0,
|
471 |
+
"params": "8080",
|
472 |
+
"command_snippet": "EXPOSE 8080",
|
473 |
+
"command_all": "EXPOSE 8080",
|
474 |
+
"inst_set_time_bucket": "2023-12-30T15:00:00+01:00",
|
475 |
+
"inst_set_time_index": 3,
|
476 |
+
"inst_set_time_reverse_index": 0
|
477 |
+
},
|
478 |
+
{
|
479 |
+
"type": "ENV",
|
480 |
+
"time": "2023-12-30T14:04:32Z",
|
481 |
+
"is_nop": true,
|
482 |
+
"local_image_exists": true,
|
483 |
+
"intermediate_image_id": "sha256:9deecef7f0db2d6b6c81675d08e243a3182f2f699f2c886cd505bc94b2028e8f",
|
484 |
+
"layer_index": 0,
|
485 |
+
"size": 0,
|
486 |
+
"params": "NAME=World",
|
487 |
+
"command_snippet": "ENV NAME=World",
|
488 |
+
"command_all": "ENV NAME=World",
|
489 |
+
"inst_set_time_bucket": "2023-12-30T15:00:00+01:00",
|
490 |
+
"inst_set_time_index": 3,
|
491 |
+
"inst_set_time_reverse_index": 0
|
492 |
+
},
|
493 |
+
{
|
494 |
+
"type": "CMD",
|
495 |
+
"time": "2023-12-30T14:04:32Z",
|
496 |
+
"is_last_instruction": true,
|
497 |
+
"is_nop": true,
|
498 |
+
"is_exec_form": true,
|
499 |
+
"local_image_exists": true,
|
500 |
+
"layer_index": 0,
|
501 |
+
"size": 0,
|
502 |
+
"params": "[\"node\",\"server.js\"]\n",
|
503 |
+
"command_snippet": "CMD [\"node\",\"server.js\"]\n",
|
504 |
+
"command_all": "CMD [\"node\",\"server.js\"]\n",
|
505 |
+
"raw_tags": [
|
506 |
+
"checkpassword-api-backend:latest",
|
507 |
+
"my-api-image:latest",
|
508 |
+
"registry.j78.org/checkpassword-api:latest"
|
509 |
+
],
|
510 |
+
"inst_set_time_bucket": "2023-12-30T15:00:00+01:00",
|
511 |
+
"inst_set_time_index": 3,
|
512 |
+
"inst_set_time_reverse_index": 0
|
513 |
+
}
|
514 |
+
]
|
515 |
+
}
|
516 |
+
],
|
517 |
+
"image_created": true,
|
518 |
+
"image_build_engine": "internal"
|
519 |
+
}
|