bdcontract-web-ide/js/NodePortal.js

527 lines
16 KiB
JavaScript
Raw Permalink Normal View History

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;
2021-08-09 01:48:56 +00:00
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";
2021-06-16 15:54:23 +00:00
if (isBaaS) {
2021-10-26 03:22:45 +00:00
path = "/SCIDE/SCExecutor"
2021-06-16 15:54:23 +00:00
}
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();
2021-10-26 03:22:45 +00:00
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);
}