@ethernity-cloud/sdk-js 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +661 -0
- package/README.md +185 -0
- package/build.js +22 -0
- package/init.js +301 -0
- package/nodenithy/build/las/Dockerfile +5 -0
- package/nodenithy/build/securelock/Dockerfile.tmpl +65 -0
- package/nodenithy/build/securelock/scripts/binary-fs-build.sh +28 -0
- package/nodenithy/build/securelock/src/.env +3 -0
- package/nodenithy/build/securelock/src/etny_crypto.js +201 -0
- package/nodenithy/build/securelock/src/etny_exec.js +65 -0
- package/nodenithy/build/securelock/src/image_registry_abi.js +808 -0
- package/nodenithy/build/securelock/src/models.js +261 -0
- package/nodenithy/build/securelock/src/package.json +40 -0
- package/nodenithy/build/securelock/src/pox_abi.js +1491 -0
- package/nodenithy/build/securelock/src/securelock.js.tmpl +421 -0
- package/nodenithy/build/securelock/src/swift_stream_service.js +147 -0
- package/nodenithy/build/securelock/src/task_status.js +15 -0
- package/nodenithy/build/securelock/src/wallet.js +29 -0
- package/nodenithy/build/squash/Dockerfile +7 -0
- package/nodenithy/build/trustedzone/Dockerfile.tmpl +57 -0
- package/nodenithy/build/trustedzone/scripts/binary-fs-build.sh +22 -0
- package/nodenithy/build/trustedzone/src/.env +3 -0
- package/nodenithy/build/trustedzone/src/etny_crypto.js +202 -0
- package/nodenithy/build/trustedzone/src/etny_exec.js +54 -0
- package/nodenithy/build/trustedzone/src/image_registry_abi.js +808 -0
- package/nodenithy/build/trustedzone/src/models.js +261 -0
- package/nodenithy/build/trustedzone/src/package.json +40 -0
- package/nodenithy/build/trustedzone/src/pox_abi.js +1491 -0
- package/nodenithy/build/trustedzone/src/swift_stream_service.js +147 -0
- package/nodenithy/build/trustedzone/src/task_status.js +15 -0
- package/nodenithy/build/trustedzone/src/test.js +44 -0
- package/nodenithy/build/trustedzone/src/trustedzone.js.tmpl +508 -0
- package/nodenithy/build/trustedzone/src/wallet.js +28 -0
- package/nodenithy/build/validator/Dockerfile +58 -0
- package/nodenithy/build/validator/package-lock.json +6 -0
- package/nodenithy/build/validator/scripts/binary-fs-build.sh +19 -0
- package/nodenithy/build/validator/src/.env +3 -0
- package/nodenithy/build/validator/src/cert.pem +5 -0
- package/nodenithy/build/validator/src/etny_crypto.js +204 -0
- package/nodenithy/build/validator/src/etny_exec.js +52 -0
- package/nodenithy/build/validator/src/image_registry_abi.js +808 -0
- package/nodenithy/build/validator/src/key.pem +6 -0
- package/nodenithy/build/validator/src/models.js +261 -0
- package/nodenithy/build/validator/src/package-lock.json +2498 -0
- package/nodenithy/build/validator/src/package.json +40 -0
- package/nodenithy/build/validator/src/pox_abi.js +1491 -0
- package/nodenithy/build/validator/src/swift_stream_service.js +147 -0
- package/nodenithy/build/validator/src/task_status.js +15 -0
- package/nodenithy/build/validator/src/test.js +44 -0
- package/nodenithy/build/validator/src/trustedzone.js +613 -0
- package/nodenithy/build/validator/src/validator_abi.js +834 -0
- package/nodenithy/build/validator/src/wallet.js +28 -0
- package/nodenithy/build.js +184 -0
- package/nodenithy/build.mjs +179 -0
- package/nodenithy/build.sh +161 -0
- package/nodenithy/ipfs.js +135 -0
- package/nodenithy/ipfs.mjs +551 -0
- package/nodenithy/public/favicon.ico +0 -0
- package/nodenithy/public/index.html +43 -0
- package/nodenithy/public/logo192.png +0 -0
- package/nodenithy/public/logo512.png +0 -0
- package/nodenithy/public/manifest.json +25 -0
- package/nodenithy/public/robots.txt +3 -0
- package/nodenithy/run/__pycache__/swift_stream_service.cpython-312.pyc +0 -0
- package/nodenithy/run/app/input.txt +4 -0
- package/nodenithy/run/app/payload.js +4 -0
- package/nodenithy/run/docker-compose-final.yml.tmpl +65 -0
- package/nodenithy/run/docker-compose-swift-stream.yml +17 -0
- package/nodenithy/run/docker-compose.yml.tmpl +76 -0
- package/nodenithy/run/etny-securelock-test.yaml.tpl +46 -0
- package/nodenithy/run/etny-trustedzone-test.yaml.tpl +45 -0
- package/nodenithy/run/git.sh +22 -0
- package/nodenithy/run/image_registry.abi +1 -0
- package/nodenithy/run/image_registry.js +372 -0
- package/nodenithy/run/image_registry.py +327 -0
- package/nodenithy/run/image_registry_runner.py +71 -0
- package/nodenithy/run/ipfs.sh +58 -0
- package/nodenithy/run/ipfs_pre.sh +75 -0
- package/nodenithy/run/public_key_service.js +90 -0
- package/nodenithy/run/public_key_service.py +107 -0
- package/nodenithy/run/swift_stream_service.py +212 -0
- package/nodenithy/run/swiftstream.py +37 -0
- package/nodenithy/run/swiftstream1.py +27 -0
- package/nodenithy/run.js +538 -0
- package/nodenithy/run.sh +277 -0
- package/nodenithy/scripts/build-ipfs-upload.sh +23 -0
- package/nodenithy/scripts/build.sh +40 -0
- package/nodenithy/scripts/ipfs-daemon.sh +7 -0
- package/nodenithy/scripts/run.sh +50 -0
- package/nodenithy/src/App.css +57 -0
- package/nodenithy/src/ec_helloworld_example.js +64 -0
- package/nodenithy/src/index.css +13 -0
- package/nodenithy/src/index.js +17 -0
- package/nodenithy/src/preStart.js +45 -0
- package/nodenithy/src/preStart.mjs +57 -0
- package/nodenithy/src/reportWebVitals.js +13 -0
- package/nodenithy/src/serverless/backend.js +5 -0
- package/package.json +48 -0
- package/postinstall.js +34 -0
- package/publish.js +126 -0
- package/pynithy/build/docker-compose.yml +68 -0
- package/pynithy/build/las/Dockerfile +11 -0
- package/pynithy/build/las/src/etny_entrypoint.sh +6 -0
- package/pynithy/build/las/src/las_entrypoint.sh +26 -0
- package/pynithy/build/scripts/binary-fs-build.sh +28 -0
- package/pynithy/build/securelock/Dockerfile.tmpl +78 -0
- package/pynithy/build/securelock/scripts/binary-fs-build.sh +41 -0
- package/pynithy/build/securelock/src/app/.env +5 -0
- package/pynithy/build/securelock/src/app/cert1-ca1-clean.crt +10 -0
- package/pynithy/build/securelock/src/app/cert1-ca1-clean.key +6 -0
- package/pynithy/build/securelock/src/app/enclave_pub_cert.pem +10 -0
- package/pynithy/build/securelock/src/app/input.txt +1 -0
- package/pynithy/build/securelock/src/app/payload.py +25 -0
- package/pynithy/build/securelock/src/app/public-cert-clean.pem +10 -0
- package/pynithy/build/securelock/src/app/result.txt +1 -0
- package/pynithy/build/securelock/src/app/transaction.txt +1 -0
- package/pynithy/build/securelock/src/etny_crypto.py +167 -0
- package/pynithy/build/securelock/src/etny_exec.py +79 -0
- package/pynithy/build/securelock/src/image_registry.abi +1 -0
- package/pynithy/build/securelock/src/key_generation.py +17 -0
- package/pynithy/build/securelock/src/models.py +176 -0
- package/pynithy/build/securelock/src/pox.abi +1489 -0
- package/pynithy/build/securelock/src/securelock.py.tmpl +411 -0
- package/pynithy/build/securelock/src/swift_stream_service.py +186 -0
- package/pynithy/build/trustedzone/Dockerfile.tmpl +56 -0
- package/pynithy/build/trustedzone/scripts/binary-fs-build.sh +32 -0
- package/pynithy/build/trustedzone/src/app/.env +5 -0
- package/pynithy/build/trustedzone/src/app/cert1-ca1-clean.crt +10 -0
- package/pynithy/build/trustedzone/src/app/cert1-ca1-clean.key +6 -0
- package/pynithy/build/trustedzone/src/app/enclave_pub_cert.pem +10 -0
- package/pynithy/build/trustedzone/src/app/input.txt +1 -0
- package/pynithy/build/trustedzone/src/app/payload.py +25 -0
- package/pynithy/build/trustedzone/src/app/public-cert-clean.pem +10 -0
- package/pynithy/build/trustedzone/src/app/result.txt +1 -0
- package/pynithy/build/trustedzone/src/app/securelock.crt +10 -0
- package/pynithy/build/trustedzone/src/app/transaction.txt +1 -0
- package/pynithy/build/trustedzone/src/app/trustedzone.crt +10 -0
- package/pynithy/build/trustedzone/src/etny_crypto.py +188 -0
- package/pynithy/build/trustedzone/src/etny_exec.py +56 -0
- package/pynithy/build/trustedzone/src/formatter.py +42 -0
- package/pynithy/build/trustedzone/src/image_registry.abi +1 -0
- package/pynithy/build/trustedzone/src/key_generation.py +17 -0
- package/pynithy/build/trustedzone/src/models.py +176 -0
- package/pynithy/build/trustedzone/src/pox.abi +1489 -0
- package/pynithy/build/trustedzone/src/swift_stream_service.py +186 -0
- package/pynithy/build/trustedzone/src/trustedzone.py.tmpl +460 -0
- package/pynithy/build.mjs +179 -0
- package/pynithy/docker-compose.yml +0 -0
- package/pynithy/ipfs.mjs +244 -0
- package/pynithy/public/favicon.ico +0 -0
- package/pynithy/public/index.html +43 -0
- package/pynithy/public/logo192.png +0 -0
- package/pynithy/public/logo512.png +0 -0
- package/pynithy/public/manifest.json +25 -0
- package/pynithy/public/robots.txt +3 -0
- package/pynithy/run/certs/cert.pem +31 -0
- package/pynithy/run/certs/challenge.crt +10 -0
- package/pynithy/run/certs/key.pem +52 -0
- package/pynithy/run/docker-compose-final.yml +59 -0
- package/pynithy/run/docker-compose-final.yml.tmpl +59 -0
- package/pynithy/run/docker-compose-swift-stream.yml +27 -0
- package/pynithy/run/docker-compose-swift-stream.yml.tmpl +27 -0
- package/pynithy/run/docker-compose.yml +55 -0
- package/pynithy/run/docker-compose.yml.tmpl +55 -0
- package/pynithy/run/etny-pynity-test.yaml.tpl +46 -0
- package/pynithy/run/etny-securelock-test.yaml.tpl +46 -0
- package/pynithy/run/etny-trustedzone-test.yaml.tpl +46 -0
- package/pynithy/run/git.sh +22 -0
- package/pynithy/run/image_registry.abi +1 -0
- package/pynithy/run/image_registry.js +372 -0
- package/pynithy/run/image_registry.py +139 -0
- package/pynithy/run/image_registry_runner.py +45 -0
- package/pynithy/run/ipfs.sh +89 -0
- package/pynithy/run/public_key_service.js +90 -0
- package/pynithy/run/swiftstream.py +28 -0
- package/pynithy/run.js +538 -0
- package/pynithy/src/App.css +57 -0
- package/pynithy/src/ec_helloworld_example.js +64 -0
- package/pynithy/src/index.css +13 -0
- package/pynithy/src/index.js +17 -0
- package/pynithy/src/preStart.mjs +57 -0
- package/pynithy/src/reportWebVitals.js +13 -0
- package/pynithy/src/serverless/__init__.py +0 -0
- package/pynithy/src/serverless/backend.py +2 -0
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
import shell from 'shelljs';
|
|
2
|
+
import fs from 'fs';
|
|
3
|
+
import path from 'path';
|
|
4
|
+
import dotenv from 'dotenv';
|
|
5
|
+
dotenv.config();
|
|
6
|
+
|
|
7
|
+
const VERSION = process.env.VERSION;
|
|
8
|
+
console.log(`Building ${VERSION}`);
|
|
9
|
+
|
|
10
|
+
const writeEnv = (key, value) => {
|
|
11
|
+
const envFile = `${currentDir}/.env`;
|
|
12
|
+
let envContent = '';
|
|
13
|
+
|
|
14
|
+
if (fs.existsSync(envFile)) {
|
|
15
|
+
envContent = fs.readFileSync(envFile, 'utf8');
|
|
16
|
+
const regex = new RegExp(`^${key}=.*`, 'm');
|
|
17
|
+
if (regex.test(envContent)) {
|
|
18
|
+
envContent = envContent.replace(regex, `${key}=${value}`);
|
|
19
|
+
} else {
|
|
20
|
+
envContent += `\n${key}=${value}`;
|
|
21
|
+
}
|
|
22
|
+
} else {
|
|
23
|
+
envContent = `${key}=${value}`;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
fs.writeFileSync(envFile, envContent, 'utf8');
|
|
27
|
+
};
|
|
28
|
+
// runner name: [smart contract address, image registry address, rpc url, chainid]
|
|
29
|
+
export const ECRunner = {
|
|
30
|
+
'etny-pynithy-testnet': ['0x02882F03097fE8cD31afbdFbB5D72a498B41112c', '0x15D73a742529C3fb11f3FA32EF7f0CC3870ACA31', 'https://core.bloxberg.org', 8995],
|
|
31
|
+
'etny-nodenithy-testnet': ['0x02882F03097fE8cD31afbdFbB5D72a498B41112c', '0x15D73a742529C3fb11f3FA32EF7f0CC3870ACA31', 'https://core.bloxberg.org', 8995],
|
|
32
|
+
'etny-pynithy': ['0x549A6E06BB2084100148D50F51CF77a3436C3Ae7', '0x15D73a742529C3fb11f3FA32EF7f0CC3870ACA31', 'https://core.bloxberg.org', 8995],
|
|
33
|
+
'etny-nodenithy': ['0x549A6E06BB2084100148D50F51CF77a3436C3Ae7', '0x15D73a742529C3fb11f3FA32EF7f0CC3870ACA31', 'https://core.bloxberg.org', 8995],
|
|
34
|
+
'ecld-nodenithy-testnet': ['0x4274b1188ABCfa0d864aFdeD86bF9545B020dCDf', '0xF7F4eEb3d9a64387F4AcEb6d521b948E6E2fB049', 'https://rpc-mumbai.matic.today', 80001],
|
|
35
|
+
'ecld-pynithy': ['0x439945BE73fD86fcC172179021991E96Beff3Cc4', '0x689f3806874d3c8A973f419a4eB24e6fBA7E830F', 'https://polygon-rpc.com', 137],
|
|
36
|
+
'ecld-nodenithy': ['0x439945BE73fD86fcC172179021991E96Beff3Cc4', '0x689f3806874d3c8A973f419a4eB24e6fBA7E830F', 'https://polygon-rpc.com', 137]
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
const runCommand = (command, canPass = false) => {
|
|
40
|
+
if (shell.exec(command).code !== 0 && !canPass) {
|
|
41
|
+
console.error(`Error executing command: ${command}`);
|
|
42
|
+
process.exit(1);
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
// Downloading dependencies
|
|
47
|
+
shell.rm('-rf', './registry');
|
|
48
|
+
const currentDir = process.cwd();
|
|
49
|
+
// console.log(`current_dir: ${currentDir}`);
|
|
50
|
+
const buildDir = path.join(currentDir, 'node_modules/@ethernity-cloud/sdk-js/pynithy/build');
|
|
51
|
+
// console.log(`build_dir: ${buildDir}`);
|
|
52
|
+
|
|
53
|
+
const dockerPS = shell.exec('docker ps --filter name=registry -q', { silent: true }).stdout.trim();
|
|
54
|
+
if (dockerPS) {
|
|
55
|
+
runCommand(`docker stop ${dockerPS.split('\n').join(' ')}`);
|
|
56
|
+
}
|
|
57
|
+
const dockeri = shell.exec('docker ps --filter name=las -q', { silent: true }).stdout.trim();
|
|
58
|
+
if (dockeri) {
|
|
59
|
+
runCommand(`docker stop ${dockeri.split('\n').join(' ')}`);
|
|
60
|
+
}
|
|
61
|
+
const dockerRm = shell.exec('docker ps --filter name=registry -q', { silent: true }).stdout.trim();
|
|
62
|
+
if (dockerRm) {
|
|
63
|
+
runCommand(`docker rm ${dockerRm.split('\n').join(' ')} -f`);
|
|
64
|
+
}
|
|
65
|
+
const dockerImg = shell.exec('docker images --filter reference="*etny*" -q', { silent: true }).stdout.trim();
|
|
66
|
+
if (dockerImg) {
|
|
67
|
+
runCommand(`docker rmi ${dockerImg.split('\n').join(' ')} -f`);
|
|
68
|
+
}
|
|
69
|
+
const dockerImgReg = shell.exec('docker images --filter reference="*registry*" -q', { silent: true }).stdout.trim();
|
|
70
|
+
if (dockerImgReg) {
|
|
71
|
+
runCommand(`docker rmi ${dockerImgReg.split('\n').join(' ')} -f`);
|
|
72
|
+
}
|
|
73
|
+
runCommand(`docker rm registry -f`);
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
const srcDir = './src/serverless';
|
|
78
|
+
const destDir = path.join(buildDir, 'securelock/src/serverless');
|
|
79
|
+
console.log(`Creating destination directory: ${destDir}`);
|
|
80
|
+
fs.mkdirSync(destDir, { recursive: true });
|
|
81
|
+
|
|
82
|
+
console.log(`Copying files from ${srcDir} to ${destDir}`);
|
|
83
|
+
fs.readdirSync(srcDir).forEach(file => {
|
|
84
|
+
fs.copyFileSync(path.join(srcDir, file), path.join(destDir, file));
|
|
85
|
+
});
|
|
86
|
+
|
|
87
|
+
process.chdir(buildDir);
|
|
88
|
+
|
|
89
|
+
let templateName = process.env.TRUSTED_ZONE_IMAGE || 'etny-pynithy-testnet';
|
|
90
|
+
|
|
91
|
+
const isMainnet = !templateName.includes('testnet');
|
|
92
|
+
|
|
93
|
+
const ENCLAVE_NAME_TRUSTEDZONE = templateName;
|
|
94
|
+
|
|
95
|
+
runCommand('docker pull registry:2');
|
|
96
|
+
runCommand('docker run -d --restart=always -p 5000:5000 --name registry registry:2');
|
|
97
|
+
// runCommand(`docker login ${process.env.DOCKER_REPO_URL} -u ${process.env.DOCKER_LOGIN} -p ${process.env.DOCKER_PASSWORD}`);
|
|
98
|
+
|
|
99
|
+
// const CI_COMMIT_BRANCH = process.env.PROJECT_NAME;
|
|
100
|
+
// aleXPRoj-securelock-v3-testnet-0.1.0...
|
|
101
|
+
const ENCLAVE_NAME_SECURELOCK = `${process.env.PROJECT_NAME}-SECURELOCK-V3-${process.env.BLOCKCHAIN_NETWORK.split('_')[1].toLowerCase()}-${VERSION}`.replace(/\//g, '_').replace(/-/g, '_');
|
|
102
|
+
console.log(`ENCLAVE_NAME_SECURELOCK: ${ENCLAVE_NAME_SECURELOCK}`);
|
|
103
|
+
writeEnv('ENCLAVE_NAME_SECURELOCK', ENCLAVE_NAME_SECURELOCK);
|
|
104
|
+
|
|
105
|
+
console.log('Building etny-securelock');
|
|
106
|
+
process.chdir('securelock');
|
|
107
|
+
// runCommand(`cat Dockerfile.tmpl | sed s/"__ENCLAVE_NAME_SECURELOCK__"/"${ENCLAVE_NAME_SECURELOCK}"/g > Dockerfile`);
|
|
108
|
+
const dockerfileSecureTemplate = fs.readFileSync('Dockerfile.tmpl', 'utf8');
|
|
109
|
+
const dockerfileSecureContent = dockerfileSecureTemplate.replace(/__ENCLAVE_NAME_SECURELOCK__/g, ENCLAVE_NAME_SECURELOCK).replace(/__BUCKET_NAME__/g, templateName + "-v3").replace(/__SMART_CONTRACT_ADDRESS__/g, ECRunner[templateName][0]).replace(/__IMAGE_REGISTRY_ADDRESS__/g, ECRunner[templateName][1]).replace(/__RPC_URL__/g, ECRunner[templateName][2]).replace(/__CHAIN_ID__/g, ECRunner[templateName][3]).replace(/__TRUSTED_ZONE_IMAGE__/g, templateName);
|
|
110
|
+
|
|
111
|
+
fs.writeFileSync('Dockerfile', dockerfileSecureContent);
|
|
112
|
+
|
|
113
|
+
let imagesTag = process.env.BLOCKCHAIN_NETWORK.toLowerCase();
|
|
114
|
+
|
|
115
|
+
if (isMainnet) {
|
|
116
|
+
fs.writeFileSync('Dockerfile', dockerfileSecureContent.replace('# RUN scone-signer sign', 'RUN scone-signer sign'));
|
|
117
|
+
imagesTag = process.env.BLOCKCHAIN_NETWORK.split("_")[0].toLowerCase()
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
|
|
123
|
+
runCommand(`docker build --build-arg ENCLAVE_NAME_SECURELOCK=${ENCLAVE_NAME_SECURELOCK} -t etny-securelock:latest .`);
|
|
124
|
+
runCommand('docker tag etny-securelock localhost:5000/etny-securelock');
|
|
125
|
+
runCommand('docker push localhost:5000/etny-securelock');
|
|
126
|
+
// runCommand('docker save etny-securelock:latest -o etny-securelock.tar');
|
|
127
|
+
process.chdir('..');
|
|
128
|
+
// const ENCLAVE_NAME_TRUSTEDZONE = `ENCLAVE_NAME_TRUSTEDZONE_${VERSION}_${CI_COMMIT_BRANCH}`.toUpperCase().replace(/\//g, '_').replace(/-/g, '_');
|
|
129
|
+
|
|
130
|
+
|
|
131
|
+
console.log(`ENCLAVE_NAME_TRUSTEDZONE: ${ENCLAVE_NAME_TRUSTEDZONE}`);
|
|
132
|
+
writeEnv('ENCLAVE_NAME_TRUSTEDZONE', ENCLAVE_NAME_TRUSTEDZONE);
|
|
133
|
+
|
|
134
|
+
console.log('Building etny-trustedzone');
|
|
135
|
+
process.chdir('trustedzone');
|
|
136
|
+
|
|
137
|
+
// // runCommand(`cat Dockerfile.tmpl | sed s/"__ENCLAVE_NAME_TRUSTEDZONE__"/"${ENCLAVE_NAME_TRUSTEDZONE}"/g > Dockerfile`);
|
|
138
|
+
// const dockerfileTrustedTemplate = fs.readFileSync('Dockerfile.tmpl', 'utf8');
|
|
139
|
+
// const dockerfileTrustedContent = dockerfileTrustedTemplate.replace(/__ENCLAVE_NAME_SECURELOCK__/g, ENCLAVE_NAME_SECURELOCK);
|
|
140
|
+
// fs.writeFileSync('Dockerfile', dockerfileTrustedContent);
|
|
141
|
+
|
|
142
|
+
// runCommand(`docker build --build-arg ENCLAVE_NAME_TRUSTEDZONE=${ENCLAVE_NAME_TRUSTEDZONE} -t etny-trustedzone:latest .`);
|
|
143
|
+
// runCommand('docker tag etny-trustedzone localhost:5000/etny-trustedzone');
|
|
144
|
+
// runCommand('docker push localhost:5000/etny-trustedzone');
|
|
145
|
+
// runCommand('docker save etny-trustedzone:latest -o etny-trustedzone.tar');
|
|
146
|
+
// const zip = new AdmZip('etny-trustedzone.tar.zip');
|
|
147
|
+
// zip.extractAllTo('.', true);
|
|
148
|
+
|
|
149
|
+
runCommand(`docker pull registry.ethernity.cloud:443/debuggingdelight/ethernity-cloud-sdk-registry/ethernity/etny-trustedzone:py_${imagesTag}`);
|
|
150
|
+
runCommand(`docker tag registry.ethernity.cloud:443/debuggingdelight/ethernity-cloud-sdk-registry/ethernity/etny-trustedzone:py_${imagesTag} localhost:5000/etny-trustedzone`);
|
|
151
|
+
runCommand('docker push localhost:5000/etny-trustedzone');
|
|
152
|
+
|
|
153
|
+
// if (isMainnet) {
|
|
154
|
+
// console.log('Building validator');
|
|
155
|
+
// process.chdir('../validator');
|
|
156
|
+
// // runCommand('docker build -t etny-validator:latest .');
|
|
157
|
+
// // runCommand('docker tag etny-validator localhost:5000/etny-validator');
|
|
158
|
+
// // runCommand('docker push localhost:5000/etny-validator');
|
|
159
|
+
// runCommand(`docker pull registry.ethernity.cloud:443/debuggingdelight/ethernity-cloud-sdk-registry/ethernity/etny-validator:py_${imagesTag}`);
|
|
160
|
+
// runCommand(`docker tag registry.ethernity.cloud:443/debuggingdelight/ethernity-cloud-sdk-registry/ethernity/etny-validator:py_${imagesTag} localhost:5000/etny-validator`);
|
|
161
|
+
// runCommand('docker push localhost:5000/etny-validator');
|
|
162
|
+
// }
|
|
163
|
+
|
|
164
|
+
|
|
165
|
+
console.log('Building etny-las');
|
|
166
|
+
process.chdir('../las');
|
|
167
|
+
// runCommand('docker build -t etny-las .');
|
|
168
|
+
// runCommand('docker tag etny-las localhost:5000/etny-las');
|
|
169
|
+
// runCommand('docker push localhost:5000/etny-las');
|
|
170
|
+
runCommand(`docker pull registry.ethernity.cloud:443/debuggingdelight/ethernity-cloud-sdk-registry/ethernity/etny-las:py_${imagesTag}`);
|
|
171
|
+
runCommand(`docker tag registry.ethernity.cloud:443/debuggingdelight/ethernity-cloud-sdk-registry/ethernity/etny-las:py_${imagesTag} localhost:5000/etny-las`);
|
|
172
|
+
runCommand('docker push localhost:5000/etny-las');
|
|
173
|
+
|
|
174
|
+
|
|
175
|
+
process.chdir(currentDir);
|
|
176
|
+
runCommand('docker cp registry:/var/lib/registry registry');
|
|
177
|
+
|
|
178
|
+
console.log('Cleaning up');
|
|
179
|
+
fs.rmSync(destDir, { recursive: true, force: true });
|
|
File without changes
|
package/pynithy/ipfs.mjs
ADDED
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
// ipfsClient.js
|
|
2
|
+
import { create, globSource } from 'kubo-rpc-client';
|
|
3
|
+
import { promisify } from 'util';
|
|
4
|
+
import fs from 'fs';
|
|
5
|
+
import { Command } from 'commander';
|
|
6
|
+
import { promises as fss } from 'fs';
|
|
7
|
+
import path from 'path';
|
|
8
|
+
import { MultiBar, Presets } from 'cli-progress';
|
|
9
|
+
|
|
10
|
+
const program = new Command();
|
|
11
|
+
const writeFile = promisify(fs.writeFile);
|
|
12
|
+
const delay = (ms) => new Promise((res) => setTimeout(res, ms));
|
|
13
|
+
const getRetryDelay = (retryCount, baseDelay = 1) => baseDelay * 2 ** retryCount;
|
|
14
|
+
|
|
15
|
+
let ipfs = null;
|
|
16
|
+
|
|
17
|
+
const initialize = (host, protocol, port, token) => {
|
|
18
|
+
if (host.search('http') !== -1) {
|
|
19
|
+
ipfs = create(host); //{ timeout: '4m' }
|
|
20
|
+
} else if (token === '') {
|
|
21
|
+
ipfs = create({
|
|
22
|
+
host,
|
|
23
|
+
protocol,
|
|
24
|
+
port,
|
|
25
|
+
// timeout: '4m'
|
|
26
|
+
});
|
|
27
|
+
} else {
|
|
28
|
+
ipfs = create({
|
|
29
|
+
host,
|
|
30
|
+
protocol,
|
|
31
|
+
port,
|
|
32
|
+
headers: { authorization: token },
|
|
33
|
+
// timeout: '4m'
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
const uploadFileToIPFS = async (filePath) => {
|
|
39
|
+
try {
|
|
40
|
+
const fileContent = await fss.readFile(filePath);
|
|
41
|
+
const response = await ipfs.add({ path: filePath, content: fileContent });
|
|
42
|
+
await fss.writeFile(`./IPFS_DOCKER_COMPOSE_HASH.ipfs`, response.cid.toString());
|
|
43
|
+
return response.cid.toString();
|
|
44
|
+
} catch (e) {
|
|
45
|
+
console.error();
|
|
46
|
+
return "Failed to upload file to IPFS, please try again.";
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
const uploadFolderToIPFS = async (folderPath) => {
|
|
52
|
+
try {
|
|
53
|
+
const addedFiles = [];
|
|
54
|
+
const ipfsOptions = {
|
|
55
|
+
wrapWithDirectory: true,
|
|
56
|
+
pin: true,
|
|
57
|
+
hidden: true,
|
|
58
|
+
timeout: '5m'
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
console.log(`Uploading folder to IPFS: ${folderPath}`);
|
|
62
|
+
|
|
63
|
+
const multiBar = new MultiBar({
|
|
64
|
+
clearOnComplete: false,
|
|
65
|
+
hideCursor: true,
|
|
66
|
+
format: 'Progress [{bar}] {percentage}% | {value}/{total} MB'
|
|
67
|
+
}, Presets.shades_classic);
|
|
68
|
+
|
|
69
|
+
const files = [];
|
|
70
|
+
const readDirectory = (dir) => {
|
|
71
|
+
fs.readdirSync(dir).forEach((file) => {
|
|
72
|
+
const fullPath = path.join(dir, file);
|
|
73
|
+
if (fs.statSync(fullPath).isDirectory()) {
|
|
74
|
+
readDirectory(fullPath);
|
|
75
|
+
} else {
|
|
76
|
+
files.push({
|
|
77
|
+
path: path.relative(folderPath, fullPath),
|
|
78
|
+
size: fs.statSync(fullPath).size
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
};
|
|
83
|
+
|
|
84
|
+
readDirectory(folderPath);
|
|
85
|
+
const totalSize = files.reduce((acc, file) => acc + file.size, 0);
|
|
86
|
+
|
|
87
|
+
const progressBar = multiBar.create(totalSize / 1024 / 1024, 0);
|
|
88
|
+
|
|
89
|
+
for await (const file of ipfs.addAll(files.map(file => ({
|
|
90
|
+
path: file.path.replace(/\\/g, '/'),
|
|
91
|
+
content: fs.createReadStream(path.join(folderPath, file.path))
|
|
92
|
+
})), { ...ipfsOptions })) {
|
|
93
|
+
addedFiles.push({
|
|
94
|
+
cid: file.cid.toString(),
|
|
95
|
+
path: file.path,
|
|
96
|
+
size: file.size,
|
|
97
|
+
});
|
|
98
|
+
progressBar.increment(file.size / 1024 / 1024);
|
|
99
|
+
}
|
|
100
|
+
progressBar.update(totalSize / 1024 / 1024);
|
|
101
|
+
multiBar.stop();
|
|
102
|
+
const _hash = addedFiles.find(file => file.path === '').cid;
|
|
103
|
+
// Return the CID of the root directory
|
|
104
|
+
await fss.writeFile(`./IPFS_HASH.ipfs`, _hash);
|
|
105
|
+
return _hash;
|
|
106
|
+
} catch (e) {
|
|
107
|
+
return "Upload failed.";
|
|
108
|
+
}
|
|
109
|
+
};
|
|
110
|
+
|
|
111
|
+
const getFromIPFS = async (hhash, filePath, maxRetries = process.env.REACT_APP_IPFS_RETRIES || 5) => {
|
|
112
|
+
let res = '';
|
|
113
|
+
let retryCount = 0;
|
|
114
|
+
// console.log('Downloading file from IPFS...');
|
|
115
|
+
// console.log(`Hash: ${hhash}`);
|
|
116
|
+
// console.log(`Max Retries: ${maxRetries}`);
|
|
117
|
+
|
|
118
|
+
while (retryCount < maxRetries) {
|
|
119
|
+
try {
|
|
120
|
+
for await (const file of ipfs.cat(hhash)) {
|
|
121
|
+
res += new TextDecoder().decode(file.buffer);
|
|
122
|
+
}
|
|
123
|
+
await writeFile(filePath, res);
|
|
124
|
+
return;
|
|
125
|
+
} catch (error) {
|
|
126
|
+
console.error(`Error: ${error.message}`);
|
|
127
|
+
retryCount += 1;
|
|
128
|
+
|
|
129
|
+
if (retryCount < maxRetries) {
|
|
130
|
+
console.log(`Retrying... (${retryCount}/${maxRetries})`);
|
|
131
|
+
await delay(getRetryDelay(retryCount));
|
|
132
|
+
continue;
|
|
133
|
+
} else {
|
|
134
|
+
throw new Error("ECError.IPFS_DOWNLOAD_ERROR");
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
};
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
const downloadFolderFromIPFS = async (cid, outputPath) => {
|
|
142
|
+
try {
|
|
143
|
+
console.log(`Downloading folder from IPFS: ${cid}`);
|
|
144
|
+
|
|
145
|
+
const multiBar = new MultiBar({
|
|
146
|
+
clearOnComplete: false,
|
|
147
|
+
hideCursor: true,
|
|
148
|
+
format: 'Progress [{bar}] {percentage}% | {value}/{total} MB'
|
|
149
|
+
}, Presets.shades_classic);
|
|
150
|
+
|
|
151
|
+
const files = [];
|
|
152
|
+
for await (const file of ipfs.get(cid)) {
|
|
153
|
+
console.log(`file: ${JSON.stringify(file, null, 2)}`);
|
|
154
|
+
if (!file.content) continue;
|
|
155
|
+
|
|
156
|
+
const filePath = path.join(outputPath, file.path);
|
|
157
|
+
const dir = path.dirname(filePath);
|
|
158
|
+
|
|
159
|
+
if (!fs.existsSync(dir)) {
|
|
160
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
const writeStream = fs.createWriteStream(filePath);
|
|
164
|
+
const progressBar = multiBar.create(file.size / 1024 / 1024, 0);
|
|
165
|
+
|
|
166
|
+
for await (const chunk of file.content) {
|
|
167
|
+
writeStream.write(chunk);
|
|
168
|
+
progressBar.increment(chunk.length / 1024 / 1024);
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
writeStream.end();
|
|
172
|
+
progressBar.update(file.size / 1024 / 1024);
|
|
173
|
+
files.push(filePath);
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
multiBar.stop();
|
|
177
|
+
console.log(`Downloaded ${files.length} files to ${outputPath}`);
|
|
178
|
+
} catch (e) {
|
|
179
|
+
console.error(e);
|
|
180
|
+
return "err";
|
|
181
|
+
}
|
|
182
|
+
};
|
|
183
|
+
|
|
184
|
+
program
|
|
185
|
+
.option('--host <host>', 'IPFS host')
|
|
186
|
+
.option('--hhash <hhash>', 'IPFS hash')
|
|
187
|
+
.option('--filePath <path>', 'Path to the file')
|
|
188
|
+
.option('--folderPath <path>', 'Path to the folder')
|
|
189
|
+
.option('--action <action>', 'Action to perform (upload, download)')
|
|
190
|
+
.option('--output <path>', 'Output path for download');
|
|
191
|
+
|
|
192
|
+
program.parse(process.argv);
|
|
193
|
+
|
|
194
|
+
const options = program.opts();
|
|
195
|
+
|
|
196
|
+
const main = async () => {
|
|
197
|
+
const host = options.host || 'localhost';
|
|
198
|
+
initialize(host);
|
|
199
|
+
|
|
200
|
+
if (options.action === 'upload') {
|
|
201
|
+
if (options.filePath) {
|
|
202
|
+
const hhash = await uploadFileToIPFS(options.filePath);
|
|
203
|
+
console.log(`${hhash}`);
|
|
204
|
+
} else if (options.folderPath) {
|
|
205
|
+
let retryCount = 0;
|
|
206
|
+
let hhash = null;
|
|
207
|
+
try {
|
|
208
|
+
hhash = await uploadFolderToIPFS(options.folderPath);
|
|
209
|
+
console.log(`${hhash}`);
|
|
210
|
+
} catch (e) {
|
|
211
|
+
// console.log(e);
|
|
212
|
+
}
|
|
213
|
+
while ((!hhash || hhash === 'Upload failed.') && retryCount < 3) {
|
|
214
|
+
console.log(`Retrying... (${retryCount}/3)`);
|
|
215
|
+
hhash = await uploadFolderToIPFS(options.folderPath);
|
|
216
|
+
console.log(`${hhash}`);
|
|
217
|
+
retryCount += 1;
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
if (!hhash || hhash === 'Upload failed.') {
|
|
221
|
+
console.log(`Failed to upload folder to IPFS, please try again.`);
|
|
222
|
+
}
|
|
223
|
+
process.exit(0);
|
|
224
|
+
} else {
|
|
225
|
+
console.error('Please provide a filePath or folderPath for upload.');
|
|
226
|
+
}
|
|
227
|
+
} else if (options.action === 'download') {
|
|
228
|
+
if (options.filePath) {
|
|
229
|
+
console.log(`Downloading file from IPFS: ${options.hhash}`);
|
|
230
|
+
const content = await getFromIPFS(options.hhash, options.filePath);
|
|
231
|
+
console.log(`File downloaded. ${options.hhash}`);
|
|
232
|
+
} else if (options.folderPath) {
|
|
233
|
+
console.log(`Downloading folder from IPFS: ${options.hhash}`);
|
|
234
|
+
const content = await downloadFolderFromIPFS(options.hhash, options.folderPath);
|
|
235
|
+
console.log(`Folder downloaded. ${options.hhash}`);
|
|
236
|
+
} else {
|
|
237
|
+
console.error('Please provide a filePath or folderPath for download.');
|
|
238
|
+
}
|
|
239
|
+
} else {
|
|
240
|
+
console.error('Please provide a valid action (upload, download).');
|
|
241
|
+
}
|
|
242
|
+
};
|
|
243
|
+
|
|
244
|
+
main();
|
|
Binary file
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8" />
|
|
5
|
+
<link rel="icon" href="%PUBLIC_URL%/favicon.ico" />
|
|
6
|
+
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
7
|
+
<meta name="theme-color" content="#000000" />
|
|
8
|
+
<meta
|
|
9
|
+
name="description"
|
|
10
|
+
content="Web site created using create-react-app"
|
|
11
|
+
/>
|
|
12
|
+
<link rel="apple-touch-icon" href="%PUBLIC_URL%/logo192.png" />
|
|
13
|
+
<!--
|
|
14
|
+
manifest.json provides metadata used when your web app is installed on a
|
|
15
|
+
user's mobile device or desktop. See https://developers.google.com/web/fundamentals/web-app-manifest/
|
|
16
|
+
-->
|
|
17
|
+
<link rel="manifest" href="%PUBLIC_URL%/manifest.json" />
|
|
18
|
+
<!--
|
|
19
|
+
Notice the use of %PUBLIC_URL% in the tags above.
|
|
20
|
+
It will be replaced with the URL of the `public` folder during the build.
|
|
21
|
+
Only files inside the `public` folder can be referenced from the HTML.
|
|
22
|
+
|
|
23
|
+
Unlike "/favicon.ico" or "favicon.ico", "%PUBLIC_URL%/favicon.ico" will
|
|
24
|
+
work correctly both with client-side routing and a non-root public URL.
|
|
25
|
+
Learn how to configure a non-root public URL by running `npm run build`.
|
|
26
|
+
-->
|
|
27
|
+
<title>React App</title>
|
|
28
|
+
</head>
|
|
29
|
+
<body>
|
|
30
|
+
<noscript>You need to enable JavaScript to run this app.</noscript>
|
|
31
|
+
<div id="root"></div>
|
|
32
|
+
<!--
|
|
33
|
+
This HTML file is a template.
|
|
34
|
+
If you open it directly in the browser, you will see an empty page.
|
|
35
|
+
|
|
36
|
+
You can add webfonts, meta tags, or analytics to this file.
|
|
37
|
+
The build step will place the bundled scripts into the <body> tag.
|
|
38
|
+
|
|
39
|
+
To begin the development, run `npm start` or `yarn start`.
|
|
40
|
+
To create a production bundle, use `npm run build` or `yarn build`.
|
|
41
|
+
-->
|
|
42
|
+
</body>
|
|
43
|
+
</html>
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
{
|
|
2
|
+
"short_name": "React App",
|
|
3
|
+
"name": "Create React App Sample",
|
|
4
|
+
"icons": [
|
|
5
|
+
{
|
|
6
|
+
"src": "favicon.ico",
|
|
7
|
+
"sizes": "64x64 32x32 24x24 16x16",
|
|
8
|
+
"type": "image/x-icon"
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
"src": "logo192.png",
|
|
12
|
+
"type": "image/png",
|
|
13
|
+
"sizes": "192x192"
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"src": "logo512.png",
|
|
17
|
+
"type": "image/png",
|
|
18
|
+
"sizes": "512x512"
|
|
19
|
+
}
|
|
20
|
+
],
|
|
21
|
+
"start_url": ".",
|
|
22
|
+
"display": "standalone",
|
|
23
|
+
"theme_color": "#000000",
|
|
24
|
+
"background_color": "#ffffff"
|
|
25
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
-----BEGIN CERTIFICATE-----
|
|
2
|
+
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
|
|
31
|
+
-----END CERTIFICATE-----
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
-----BEGIN CERTIFICATE-----
|
|
2
|
+
MIIBczCB+qADAgECAgge4xp7LAy3AzAKBggqhkjOPQQDAzASMRAwDgYDVQQDDAdD
|
|
3
|
+
QV9DRVJUMCAXDTIzMDUxMDE3NDUxM1oYDzQwOTYwMTAxMDAwMDAwWjAWMRQwEgYD
|
|
4
|
+
VQQDDAtTRVJWRVJfQ0VSVDB2MBAGByqGSM49AgEGBSuBBAAiA2IABJLUGRM/QB7V
|
|
5
|
+
F97isF0FOxUfTaumkN6q9STE6eMnPrEcE+AOnT7UWc/GDy9LnrGwTMxZd+BlwP2a
|
|
6
|
+
dF2bgjGXqM//7JC8E4ZDJnsKWPVVtcz48CKRsf1kPkOUGUBKCHjE46MXMBUwEwYD
|
|
7
|
+
VR0lBAwwCgYIKwYBBQUHAwEwCgYIKoZIzj0EAwMDaAAwZQIxAPH/X/LBC4baNgHy
|
|
8
|
+
5oJ/UFq4VhO/JJIjnMmmfWf6ZtVx72VCbAlOte3vCh+RE/ev3QIwLI83st0T2cWp
|
|
9
|
+
7hSdvgDLczSIByuHtFmF/mRCr+xoBZ0F051SUIsruJrJE8ltO7pO
|
|
10
|
+
-----END CERTIFICATE-----
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
-----BEGIN PRIVATE KEY-----
|
|
2
|
+
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
|
|
51
|
+
ocxMvmz7ORffE/j+8ZK2ti/TzfQO
|
|
52
|
+
-----END PRIVATE KEY-----
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
version: '3.2'
|
|
2
|
+
services:
|
|
3
|
+
las:
|
|
4
|
+
container_name: las
|
|
5
|
+
privileged: true
|
|
6
|
+
image: localhost:5000/etny-las
|
|
7
|
+
entrypoint: "/las_entrypoint.sh"
|
|
8
|
+
command: "bash -c '/las_entrypoint.sh && /usr/local/bin/las | tee /var/log/las.log'"
|
|
9
|
+
restart: unless-stopped
|
|
10
|
+
networks:
|
|
11
|
+
- ethernity
|
|
12
|
+
ports:
|
|
13
|
+
- target: 18766
|
|
14
|
+
published: 18766
|
|
15
|
+
protocol: tcp
|
|
16
|
+
mode: host
|
|
17
|
+
|
|
18
|
+
etny-securelock:
|
|
19
|
+
container_name: etny-securelock
|
|
20
|
+
privileged: true
|
|
21
|
+
image: localhost:5000/etny-securelock
|
|
22
|
+
entrypoint: ""
|
|
23
|
+
command: [ "/usr/local/bin/python", "/etny-securelock/securelock.py" ]
|
|
24
|
+
environment:
|
|
25
|
+
- SCONE_CAS_ADDR=scone-cas.cf
|
|
26
|
+
- SCONE_LAS_ADDR=las
|
|
27
|
+
- SCONE_CONFIG_ID=__ENCLAVE_NAME_SECURELOCK__/application
|
|
28
|
+
- SCONE_HEAP=1024M
|
|
29
|
+
- SCONE_LOG=DEBUG
|
|
30
|
+
- SCONE_ALLOW_DLOPEN=1
|
|
31
|
+
- SCONE_EXTENSIONS_PATH=/lib/libbinary-fs.so
|
|
32
|
+
restart: on-failure
|
|
33
|
+
networks:
|
|
34
|
+
- ethernity
|
|
35
|
+
depends_on:
|
|
36
|
+
- las
|
|
37
|
+
|
|
38
|
+
etny-trustedzone:
|
|
39
|
+
container_name: etny-trustedzone
|
|
40
|
+
privileged: true
|
|
41
|
+
image: localhost:5000/etny-trustedzone
|
|
42
|
+
entrypoint: ""
|
|
43
|
+
command: [ "/usr/local/bin/python", "/etny-trustedzone/trustedzone.py" ]
|
|
44
|
+
environment:
|
|
45
|
+
- SCONE_CAS_ADDR=scone-cas.cf
|
|
46
|
+
- SCONE_LAS_ADDR=las
|
|
47
|
+
- SCONE_CONFIG_ID=__ENCLAVE_NAME_TRUSTEDZONE__/application
|
|
48
|
+
- SCONE_HEAP=256M
|
|
49
|
+
- SCONE_LOG=DEBUG
|
|
50
|
+
- SCONE_ALLOW_DLOPEN=1
|
|
51
|
+
- SCONE_EXTENSIONS_PATH=/lib/libbinary-fs.so
|
|
52
|
+
restart: on-failure
|
|
53
|
+
networks:
|
|
54
|
+
- ethernity
|
|
55
|
+
depends_on:
|
|
56
|
+
- las
|
|
57
|
+
networks:
|
|
58
|
+
ethernity:
|
|
59
|
+
external: true
|