bdcontract-web-ide/js/NodePortal.js
2021-10-26 11:22:45 +08:00

527 lines
16 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

function applyRole(role) {
global.wssocket.send("{\"action\":\"applyNodeRole\",\"role\":\"" + role
+ "\",\"pubKey\":\"" + global.sm2Key.publicKey + "\"}");
}
function WSHandler(event) {
// console.log("++++++++++" + event);
data = event.data;
// console.log(" -->" + data);
try {
var obj = JSON.parse(data);
// console.log(obj.action);
switch (obj.action) {
case 'onGetHashCount':
onGetHashCount(obj);
break;
case 'onStartSync':
onStartSync(obj);
break;
case 'onGetSyncType':
onGetSyncType(obj);
break;
case 'onChangeSyncType':
onChangeSyncType(obj);
break;
case 'onRecoverBySync':
onRecoverBySync(obj);
break;
case 'onStopSync':
onStopSync(obj);
break;
case 'onTransferTo':
onTransferTo(obj);
break;
case 'onHashResult':
onHashResult(obj);
break;
case 'onListMemoryFiles':
onListMemoryFiles(obj);
break;
case 'onDumpContract':
onDumpContract(obj);
break;
case 'onChangeDumpPeriod':
onChangeDumpPeriod(obj);
break;
case 'onGetDumpPeriod':
onGetDumpPeriod(obj);
break;
case 'onStaticVerifyResult':
onStaticVerifyResult(obj);
break;
case 'onListCompiledFiles':
onListCompiledFiles(obj);
break;
case "onListContractProcess":
onListContractProcess(obj);
break;
case "onDeleteFile":
onDeleteFile(obj);
break;
case "onCancelAuth":
onCancelAuth(obj);
break;
case "onDownloadContract":
onDownloadFile(obj);
break;
case "onChangePublic":
onChangePublic(obj);
break;
case "onListProjects":
onListProjects(obj);
break;
case "onListProject":
onListProject(obj);
break;
case "onCountNodeLogGroupByCategory":
onCountNodeLogGroupByCategory(obj);
break;
case "onQueryNodeLogByDate":
onListLocalNodeLog(obj);
break;
case "onListLocalNodeLog":
onListLocalNodeLog(obj);
break;
case "onListLocalNodeLogPie":
onListLocalNodeLogPie(obj);
break;
case "onListLocalNodeLogLine":
onListLocalNodeLogLine(obj);
break;
case "onQueryContractLogByDate":
onQueryContractLogByDate(obj);
break;
case "onCountContractLogGroupByAction":
onListLocalContractLogPie(obj);
break;
case "onListLocalContractLogPie":
onListLocalContractLogPie(obj);
break;
case "onCountContractLogGroupByCategory":
onListLocalContractLogLine(obj);
break;
case "onListLocalContractLogLine":
onListLocalContractLogLine(obj);
break;
case "onSessionID":
onGetNodeSessionID(obj);
break;
case "onLogin":
onNodeLogin(obj);
break;
case "onApplyRole":
onApplyRole(obj);
break;
case "onGetP2PNodes":
onGetP2PNodes(obj);
break;
case "onListAllAuthRole":
onListAllAuthRole(obj);
break;
case "onListUnAuthRole":
onListUnAuthRole(obj);
break;
case "onDeleteRole":
onDeleteRole(obj);
break;
case "onCountRole":
onCountRole(obj);
break;
case "onAuthNodeRole":
onAuthNodeRole(obj);
break;
case "onApplyNet":
onApplyNet(obj);
break;
case "onLoadNodeConfig":
onLoadNodeConfig(obj);
break;
case "onChangeNodeName":
onChangeNodeName(obj);
break;
case "onChangeYJSPath":
onChangeYJSPath(obj);
break;
case "onGetLicenceExpiredDate":
$("#expiredDate").html(convertDate(data.data));
break;
case "onGetPeerID":
global.peerID = obj.data;
// getNodeTrustUnits();//still connecting to centerportalws
break;
case "onViewContractInstance":
onViewContractInstance(obj);
break;
case 'onExecuteResult':
onExecuteResult(obj);
break;
case 'onUploadFile':
onUploadFile(obj);
break;
case 'onStartContract':
onStartContract(obj);
break;
case 'onStartContractConfig':
onStartContractConfig(obj);
break;
case 'onKillContractProcess':
onStopContract(obj);
break;
case 'onKillAllContract':
onKillAllContract(obj);
break;
case 'onSetPermission':
onSetPermission(obj);
break;
case 'onOutputStream':
displayOutput(obj);
break;
case 'onChangeNodeCenter':
console.log("onChangeNodeCenter");
onChangeNodeCenter(obj);
break;
case 'onException':
handleNoPermission(obj);
break;
case 'onStartContractTrustfullyResult':
onStartContractTrustfullyResult(obj);
break;
case 'onStartTrustfulContract':
onStartTrustfulContract(obj);
break;
case 'onDistributeContract':
onDistributeContract(obj);
break;
case 'onDistributeFinish':
onDistributeFinish(obj);
break;
case 'onListLeakContractProcess':
onListLeakContractProcess(obj);
break;
case 'onGetMask':
onGetMask(obj);
break;
case 'onGetMock':
onGetMock(obj);
break;
default:
displayOutput(obj);
break;
}
} catch (err) {
console.log(err);
}
}
function handleNoPermission(obj) {
if (!obj.data.startsWith("unauthorised action")) {
// console.log(obj);
return;
}
global.actionName = obj.data.split(" ")[2];
// console.log("_______" + global.actionName);
switch (global.actionName) {
case "startContract":
case "killContract":
case "killAllContract":
case "listContractProcess":
case "listProjects":
case "showNodeTrustUnits":
case "getDumpPeriod":
case "changeDumpPeriod":
case "dumpContract":
case "loadMemory":
case "listLocalContractLogPie":
case "listLocalContractLogLine":
case "listLocalContractLog":
case "listMemoryList":
case "listCompiledFiles":
alertNoPermission(`当前角色没有${global.actionName}权限请申请成为ContractInstanceManager`);
break;
case "deleteFile":
case "downloadContract":
case "uploadFile":
case "staticVerifyContract":
alertNoPermission(`当前角色没有${global.actionName}权限请申请成为ContractProvider`);
break;
case "executeContract":
case "ListContractLog":
case `queryRecent&count=${global.ledgerCount}`:
// console.log(`queryRecent&count=${global.ledgerCount}`);
alertNoPermission(`当前角色没有${global.actionName}权限请申请成为ContractUser`);
break;
default:
alertNoPermission(`当前角色没有${global.actionName}权限,请申请成为相关角色`);
break;
}
}
function displayOutput(obj) {
console.log(obj);
}
function getControlWsUrl(host) {
let prefix = "ws://";
if (document.location.href.startsWith("https")) {
prefix = "wss://";
}
let path = document.location.pathname.lastIndexOf("/");
path = document.location.pathname.substr(0, path + 1);
if (path.indexOf("SCIDE") < 0) {
path += "SCIDE/";
}
path += "SCExecutor";
if (isBaaS) {
path = "/SCIDE/SCExecutor"
}
return prefix + host + path;
}
function initWSocket() {
const host = document.location.host;
const url = getControlWsUrl(host);
document.title = `数瑞智能合约节点管理中心(${host}`;
// console.log("connect ws:" + url);
global.wssocket = createWssocket(url, function () {
getSession();
// loadNodeConfig();// get center portal & create centerportalsocket in
// onLoadNodeConfig
}, WSHandler);
}
function getSession() {
global.wssocket.send("{\"action\":\"getSessionID\"}");
}
function exportSMKeyPair() {
const dialogEl = $("#dialog");
dialogEl.html(`Save Your key:<br/>${JSON.stringify(global.sm2Key)}`)
dialogEl.dialog("open");
}
// ====== wsHandler
function onGetNodeSessionID(data) {
console.log("onGetSessionID");
global.session = data.session;
global.wssocket.send(JSON.stringify({
pubKey: global.sm2Key.publicKey,
signature: sm2.doSignature(global.session, global.sm2Key.privateKey, {hash: true, der: true}),
action: "login"
}));
}
function onNodeLogin(data) {
console.log("onNodeLogin");
pubkeyDialogVue.myRole = data.data;
global.myRole = data.data;
loadNodeConfig();
loadUserMan();
}
function apply() {
const apply = $("#roleGroupSelect04")[0].value;
console.log(apply);
// console.log("onGetNodeRole" + global.myRole);
}
function onCountNodeLogGroupByCategory(data) {
const userManTab = $("#v-pills-userManager-tab")[0];
if (userManTab.getAttribute("aria-selected") === "true") {
drawUserActivityGraph(data);
} else {
drawLocalLogLine(data);
}
}
function onListLocalNodeLog(data) {
const userManTab = $("#v-pills-userManager-tab")[0];
if (userManTab.getAttribute("aria-selected") === "true") {
drawUserActivityGraph(data);
} else {
fillLocalNodeLogData(data.data);
}
}
function onListAllAuthRole(data) {
console.log("onListAllAuthRole");
fillAuthRoleData(data.data);
}
function onListUnAuthRole(data) {
console.log("onListUnAuthRole");
fillUnAuthRoleData(data.data);
}
// var onApplyNet = function(data) {
// console.log("onApplyNet");
// };
function onCountRole(data) {
console.log("onCountRole");
setUserTypeDistribution(data.data);
}
function onAuthNodeRole(data) {
myToast("授权/忽略操作", data.data);
if (data.data === "success") {
global.wssocket.send(JSON.stringify({
action: "listAllAuthRole"
}));
global.wssocket.send(JSON.stringify({
action: "listUnAuthRole"
}));
}
}
function onApplyRole(data) {
// console.log(data.data);
myToast("申请操作", data.data);
}
function onDeleteRole(data) {
myToast("删除操作", data.data);
var loginAllUser = {};
loginAllUser.action = "listAllAuthRole";
global.wssocket.send(JSON.stringify(loginAllUser));
}
// ====== wsHandler done!
function myToast(title, msg) {
toastVue.toastTitle = title;
toastVue.toastMessage = msg;
$("#alertDiv").toast("show");
}
function countChar(str, c) {
let ret = 0;
for (const ch of str) {
if (ch === c) {
ret++;
}
}
return ret;
}
function generate() {
const key = sm2.generateKeyPairHex();
global.sm2Key = key;
localStorage.setItem("PrivKey", JSON.stringify(key));
}
function killAllContract() {
dialogBodyDiv.innerHTML = "请谨慎操作,是否停止全部实例?";
showDialog("提示", function () {
setTimeout(function () {
var request = {};
request.action = "killAllContract";
global.wssocket.send(JSON.stringify(request));
}, 500);
});
}
function init() {
initVue();
initGlobal();
initWSocket();
}
function getRequestParameters() {
const arr = (location.search || "").replace(/^\?/, '').split("&");
const params = {};
for (const par of arr) {
const data = par.split("=");
if (data.length === 2) {
params[data[0]] = data[1];
}
}
return params;
}
function onCPLogin(data) {
if (data.data.indexOf("NodeManager") === -1) {
customAlert("请先前往准入控制中心认证成为该网络中的NodeManager");
} else {
getNodeTrustUnits();
global.centerportalws.send(JSON.stringify({
action: "addNode",
nodePubKey: global.config.nodePubKey
}));
}
}
function onCPGetRole(data) {
// console.log(data);
}
function centerportalWSHandler(event) {
// console.log(event);
data = event.data;
try {
const obj = JSON.parse(data);
switch (obj.action) {
case "onGetNodeTrustUnits":
onGetNodeTrustUnits(obj);
break;
case 'onSessionID':
onSessionID(obj);
break;
case 'onLogin':
onCPLogin(obj);
break;
case 'onStartContract':
onStartContract(obj);
break;
case 'onStartTrustfulContract':
onStartTrustfulContract(obj);
break;
case 'onDistributeContract':
onDistributeContract(obj);
break;
case 'onDistributeFinish':
onDistributeFinish(obj);
break;
case 'onStartContractTrustfullyResult':
onStartContractTrustfullyResult(obj);
break;
case 'onException':
handleNoPermission(obj);
//logException(obj);
break;
case 'onStartTestADSP':
onStartTestADSP(obj);
break;
default:
// console.log(obj);
break;
}
} catch (err) {
console.log(err);
}
}
function addNodeUnit(obj) {
if (!global.units) {
global.units = {};
}
var x = document.getElementById("selectUnits");
for (i = 0; i < x.length; ++i) {
if (x.options[i].value == obj.key) {
return;
}
}
var option = document.createElement("option");
var type = obj.type;
if (type == "TCP") {
var at_ = obj.key.indexOf("_");
var key = obj.key.substr(at_ + 1);
global.units[key] = obj.value;
option.text = obj.type + ":" + key;
} else {
global.units[obj.key] = obj.value;
option.text = obj.type + ":" + obj.key + ":" + obj.value.length + "nodes";
}
option.value = obj.key;
x.add(option, null);
}