84fb8eee11
WHAT: generate access grant in web worker to return back to UI WHY: get access grant Change-Id: If8bf6389d3bfabd8a8a12fb0bbbc46cd9ecd6e74
72 lines
2.6 KiB
JavaScript
72 lines
2.6 KiB
JavaScript
// Copyright (C) 2020 Storj Labs, Inc.
|
|
// See LICENSE for copying information.
|
|
|
|
importScripts('/static/static/wasm/wasm_exec.js')
|
|
|
|
if (!WebAssembly.instantiate) {
|
|
self.postMessage(new Error('web assembly is not supported'));
|
|
}
|
|
|
|
const go = new Go();
|
|
const instantiateStreaming = WebAssembly.instantiateStreaming || async function (resp, importObject) {
|
|
const response = await resp;
|
|
const source = await response.arrayBuffer();
|
|
|
|
return await WebAssembly.instantiate(source, importObject);
|
|
};
|
|
const response = fetch('/static/static/wasm/access.wasm');
|
|
instantiateStreaming(response, go.importObject).then(result => go.run(result.instance)).catch(err => self.postMessage(new Error(err.message)));
|
|
|
|
self.onmessage = function (event) {
|
|
const data = event.data;
|
|
let result;
|
|
let apiKey;
|
|
switch (data.type) {
|
|
case 'GenerateAccess':
|
|
apiKey = data.apiKey;
|
|
const passphrase = data.passphrase;
|
|
const projectID = data.projectID;
|
|
const satelliteName = data.satelliteName;
|
|
const nodeURL = getSatelliteNodeURL(satelliteName);
|
|
|
|
result = self.generateAccessGrant(nodeURL, apiKey, passphrase, projectID);
|
|
|
|
self.postMessage(result);
|
|
break;
|
|
case 'SetPermission':
|
|
const isDownload = data.isDownload;
|
|
const isUpload = data.isUpload;
|
|
const isList = data.isList;
|
|
const isDelete = data.isDelete;
|
|
const buckets = data.buckets;
|
|
apiKey = data.apiKey;
|
|
|
|
let permission = self.newPermission().value;
|
|
|
|
permission.AllowDownload = isDownload;
|
|
permission.AllowUpload = isUpload;
|
|
permission.AllowDelete = isDelete;
|
|
permission.AllowList = isList;
|
|
|
|
result = self.setAPIKeyPermission(apiKey, buckets, permission);
|
|
|
|
self.postMessage(result);
|
|
break;
|
|
default:
|
|
self.postMessage(new Error('provided message event type is not supported'));
|
|
}
|
|
};
|
|
|
|
function getSatelliteNodeURL(satellite) {
|
|
switch (satellite) {
|
|
case 'Asia-East-1':
|
|
return '121RTSDpyNZVcEU84Ticf2L1ntiuUimbWgfATz21tuvgk3vzoA6@asia-east-1.tardigrade.io:7777';
|
|
case 'Europe-West-1':
|
|
return '12L9ZFwhzVpuEKMUNUqkaTLGzwY9G24tbiigLiXpmZWKwmcNDDs@europe-west-1.tardigrade.io:7777';
|
|
case 'US-Central-1':
|
|
return '12EayRS2V1kEsWESU9QMRseFhdxYxKicsiFmxrsLZHeLUtdps3S@us-central-1.tardigrade.io:7777';
|
|
default:
|
|
return '12jHxTS7txdGgzeaXCSMR6yomWnD7nJcpz8QB7GrqxTAgftE5Y2@127.0.0.1:10000';
|
|
}
|
|
}
|