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:
${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); }