532 lines
		
	
	
		
			14 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			532 lines
		
	
	
		
			14 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
<!DOCTYPE html>
 | 
						|
<html lang="en">
 | 
						|
<head>
 | 
						|
    <meta charset="UTF-8">
 | 
						|
    <title>Console</title>
 | 
						|
    <link rel="shortcut icon" href="/HTML/PIC/console.png" type="image/png">
 | 
						|
 | 
						|
    <link rel="stylesheet" type="text/css" href="/HTML/CSS/buttons.css">
 | 
						|
    <link rel="stylesheet" type="text/css" href="/HTML/CSS/style.css">
 | 
						|
</head>
 | 
						|
 | 
						|
<script>
 | 
						|
    window.RUN_CLIENT=1;
 | 
						|
    window.RUN_SERVER=0;
 | 
						|
    if(typeof global === 'object')
 | 
						|
    {
 | 
						|
        global.RUN_CLIENT=1;
 | 
						|
        global.RUN_SERVER=0;
 | 
						|
    }
 | 
						|
</script>
 | 
						|
 | 
						|
<script type="text/javascript" src="/HTML/JS/coinlib.js"></script>
 | 
						|
<script type="text/javascript" src="/HTML/JS/client.js"></script>
 | 
						|
<script type="text/javascript" src="/HTML/JS/sha3.js"></script>
 | 
						|
<script type="text/javascript" src="/HTML/JS/crypto-client.js"></script>
 | 
						|
<script type="text/javascript" src="/HTML/JS/terahashlib.js"></script>
 | 
						|
 | 
						|
<script>
 | 
						|
    function SetStatus(Str)
 | 
						|
    {
 | 
						|
        var id = $("status");
 | 
						|
        id.innerHTML=Str;
 | 
						|
    }
 | 
						|
    function SetStatus2(Str)
 | 
						|
    {
 | 
						|
        var id = $("status2");
 | 
						|
        id.innerHTML=Str;
 | 
						|
    }
 | 
						|
 | 
						|
    function UpdateData()
 | 
						|
    {
 | 
						|
 | 
						|
        GetData("GetWalletInfo",{}, function (Data)
 | 
						|
        {
 | 
						|
            if(Data && Data.result)
 | 
						|
            {
 | 
						|
                SetBlockChainConstant(Data);
 | 
						|
            }
 | 
						|
        });
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
    ///////////////////
 | 
						|
    var CodeList={};
 | 
						|
    var CurRowName;
 | 
						|
 | 
						|
    function SetConsoleText(bRun)
 | 
						|
    {
 | 
						|
        //SaveToList();
 | 
						|
 | 
						|
 | 
						|
        var Name = $("idConsoleIndex").value;
 | 
						|
        $("idName").value=Name;
 | 
						|
        CurRowName=Name;
 | 
						|
        var Data=CodeList[Name];
 | 
						|
        if(Data && Data.Code)
 | 
						|
        {
 | 
						|
            $("idConsoleText").value=Data.Code;
 | 
						|
            $("idConsoleSend").value=Data.Type;
 | 
						|
            $("idProcessTX").checked=Data.ProcessTX;
 | 
						|
            $("idProcessWEB").checked=Data.ProcessWEB;
 | 
						|
            $("idProcessST").checked=Data.ProcessST;
 | 
						|
        }
 | 
						|
        else
 | 
						|
        {
 | 
						|
            $("idConsoleText").value=Data;
 | 
						|
            $("idProcessTX").checked=0;
 | 
						|
            $("idProcessWEB").checked=0;
 | 
						|
            $("idProcessST").checked=0;
 | 
						|
            $("idConsoleSend").value="ServerCode";
 | 
						|
        }
 | 
						|
        if(bRun)
 | 
						|
            SendToServer();
 | 
						|
    }
 | 
						|
    function SetAndRun()
 | 
						|
    {
 | 
						|
        SetConsoleText(1);
 | 
						|
    }
 | 
						|
    function NewRow()
 | 
						|
    {
 | 
						|
        CurRowName=undefined;
 | 
						|
        $("idName").value="";
 | 
						|
    }
 | 
						|
    function SaveToList(bUpdate)
 | 
						|
    {
 | 
						|
        var Name = $("idName").value;
 | 
						|
 | 
						|
        if(CurRowName)
 | 
						|
        {
 | 
						|
            SetNameInSelect(Name);
 | 
						|
            delete CodeList[CurRowName];
 | 
						|
        }
 | 
						|
 | 
						|
        if(Name)
 | 
						|
        {
 | 
						|
            var Data={Code:$("idConsoleText").value,Type:$("idConsoleSend").value,ProcessTX:$("idProcessTX").checked,ProcessWEB:$("idProcessWEB").checked,ProcessST:$("idProcessST").checked};
 | 
						|
            CodeList[Name]=Data;
 | 
						|
        }
 | 
						|
 | 
						|
        if(bUpdate)
 | 
						|
        {
 | 
						|
            SaveArrToSelect(Name);
 | 
						|
        }
 | 
						|
 | 
						|
        CurRowName=Name;
 | 
						|
        SaveValues();
 | 
						|
    }
 | 
						|
 | 
						|
    function SetNameInSelect(Name)
 | 
						|
    {
 | 
						|
        var Select=document.getElementById("idConsoleIndex");
 | 
						|
        for(var i=0;i<Select.options.length;i++)
 | 
						|
            if(Select.options[i]===CurRowName)
 | 
						|
            {
 | 
						|
                if(Name)
 | 
						|
                {
 | 
						|
                    Select.options[i].value=Name;
 | 
						|
                    Select.options[i].text=Name;
 | 
						|
                }
 | 
						|
                else
 | 
						|
                {
 | 
						|
                    Select.options[i] = null;
 | 
						|
                }
 | 
						|
            }
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
    function SaveArrToSelect(CurrName)
 | 
						|
    {
 | 
						|
        var Select=document.getElementById("idConsoleIndex");
 | 
						|
        Select.options.length=0;
 | 
						|
        for(var Name in CodeList)
 | 
						|
        {
 | 
						|
            Select.options[Select.options.length]=new Option(Name,Name,false,(Name===CurrName));
 | 
						|
        }
 | 
						|
 | 
						|
    }
 | 
						|
    ///////////////////
 | 
						|
 | 
						|
    function OnSelectTypeCode()
 | 
						|
    {
 | 
						|
        var Type = $("idConsoleSend").value;
 | 
						|
        if(Type==="ECode")
 | 
						|
        {
 | 
						|
            $("idBtRun").value="Send eval";
 | 
						|
        }
 | 
						|
        else
 | 
						|
        if(Type==="HEX")
 | 
						|
        {
 | 
						|
            $("idBtRun").value="Send transaction";
 | 
						|
        }
 | 
						|
        else
 | 
						|
        {
 | 
						|
            $("idBtRun").value="Run";
 | 
						|
        }
 | 
						|
 | 
						|
    }
 | 
						|
 | 
						|
    function SendToServer()
 | 
						|
    {
 | 
						|
        SaveValues();
 | 
						|
 | 
						|
        var Value = $("idConsoleText").value;
 | 
						|
        var Type = $("idConsoleSend").value;
 | 
						|
        if(Type==="ECode")
 | 
						|
        {
 | 
						|
            SendECode(Value);
 | 
						|
        }
 | 
						|
        else
 | 
						|
        if(Type==="HEX")
 | 
						|
        {
 | 
						|
            SendHEXTransaction(Value);
 | 
						|
        }
 | 
						|
        else
 | 
						|
        if(Type==="ServerCode")
 | 
						|
        {
 | 
						|
            SendServerCode(Value);
 | 
						|
        }
 | 
						|
        else
 | 
						|
        {
 | 
						|
            RunClientCode(Value);
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
    function RunClientCode(Value)
 | 
						|
    {
 | 
						|
        SetStatus("");
 | 
						|
        var Result;
 | 
						|
        try
 | 
						|
        {
 | 
						|
            Result=eval(Value);
 | 
						|
        }
 | 
						|
        catch (e)
 | 
						|
        {
 | 
						|
            Result=e;
 | 
						|
        }
 | 
						|
        ToResult(Result);
 | 
						|
    }
 | 
						|
 | 
						|
    function SendServerCode(Value)
 | 
						|
    {
 | 
						|
        var bProcessTX = $("idProcessTX").checked;
 | 
						|
        var bProcessWEB = $("idProcessWEB").checked;
 | 
						|
        var bProcessST = $("idProcessST").checked;
 | 
						|
 | 
						|
 | 
						|
        SetStatus("");
 | 
						|
        GetData("SendDirectCode",{Code:Value,TX:bProcessTX,WEB:bProcessWEB,ST:bProcessST }, function (Data)
 | 
						|
        {
 | 
						|
            if(Data)
 | 
						|
            {
 | 
						|
                ToResult(Data.text);
 | 
						|
            }
 | 
						|
        });
 | 
						|
    }
 | 
						|
    function SendHEXTransaction(Value)
 | 
						|
    {
 | 
						|
        var Body=GetArrFromHex(Value);
 | 
						|
        if(Body.length<32)
 | 
						|
        {
 | 
						|
            SetStatus("Error length HEX transaction");
 | 
						|
            return;
 | 
						|
        }
 | 
						|
        Body.length+=12;
 | 
						|
        SendTransaction(Body);
 | 
						|
    }
 | 
						|
 | 
						|
    var AllSend=0;
 | 
						|
    var AllNoSend=0;
 | 
						|
    var MustSend=0;
 | 
						|
    var LastErr="";
 | 
						|
    var LastOK="";
 | 
						|
    function SendECode(Code)
 | 
						|
    {
 | 
						|
        var DeltaBlockNum = parseInt($("idConsoleDeltaBlockNum").value);
 | 
						|
 | 
						|
 | 
						|
//        if($("idSendAll").checked)
 | 
						|
//        {
 | 
						|
//            var Data={DeltaBlockNum:DeltaBlockNum,Code:Code,All:1};
 | 
						|
//            GetData("SendECode",Data, function (Data)
 | 
						|
//            {
 | 
						|
//                if(Data)
 | 
						|
//                {
 | 
						|
//                    ToResult(Data.text);
 | 
						|
//                }
 | 
						|
//            });
 | 
						|
//            return;
 | 
						|
//        }
 | 
						|
 | 
						|
 | 
						|
        var Addr = $("idNode").value;
 | 
						|
 | 
						|
        AllSend=0;
 | 
						|
        AllNoSend=0;
 | 
						|
        MustSend=0;
 | 
						|
        LastErr="";
 | 
						|
        LastOK="";
 | 
						|
        var arr=Addr.split("\n");
 | 
						|
        for(var i=0;i<arr.length;i++)
 | 
						|
        {
 | 
						|
            var CurAddr=arr[i].trim();
 | 
						|
            if(CurAddr.length!==64)
 | 
						|
                continue;
 | 
						|
 | 
						|
            MustSend++;
 | 
						|
            var Data={DeltaBlockNum:DeltaBlockNum,Code:Code,Addr:CurAddr};
 | 
						|
            GetData("SendECode",Data, function (Data)
 | 
						|
            {
 | 
						|
                if(Data && Data.result===1)
 | 
						|
                {
 | 
						|
                    AllSend++;
 | 
						|
                    LastOK=Data.text;
 | 
						|
                }
 | 
						|
                else
 | 
						|
                {
 | 
						|
                    AllNoSend++;
 | 
						|
                    LastErr=Data.text;
 | 
						|
                }
 | 
						|
                ToResult("OK:"+AllSend+" ("+LastOK+")   NO:"+AllNoSend+" ("+LastErr+")  OF:"+MustSend);
 | 
						|
            });
 | 
						|
        }
 | 
						|
 | 
						|
        SetStatus("Must send="+MustSend);
 | 
						|
        ToResult("Must send="+MustSend);
 | 
						|
 | 
						|
    }
 | 
						|
 | 
						|
    function ToResult(Str)
 | 
						|
    {
 | 
						|
        $("result").value=Str;
 | 
						|
    }
 | 
						|
    //***********************************************
 | 
						|
    var idSendServer=undefined;
 | 
						|
    function StartSendServerPeriod(Period)
 | 
						|
    {
 | 
						|
        var Period=1000*ParseNum($("idPeriodRun").value);
 | 
						|
        if(idSendServer)
 | 
						|
            clearInterval(idSendServer);
 | 
						|
        idSendServer=0;
 | 
						|
        if(Period)
 | 
						|
        {
 | 
						|
            idSendServer=setInterval(function ()
 | 
						|
            {
 | 
						|
                var Value = $("idConsoleText").value;
 | 
						|
                SendServerCode(Value);
 | 
						|
            },Period);
 | 
						|
            return "Set period="+Period;
 | 
						|
        }
 | 
						|
        return "Clear";
 | 
						|
    }
 | 
						|
 | 
						|
    //***********************************************
 | 
						|
    var idSendRandom=undefined;
 | 
						|
    function StartSendRandom(Period)
 | 
						|
    {
 | 
						|
        if(idSendRandom)
 | 
						|
            clearInterval(idSendRandom);
 | 
						|
        idSendRandom=0;
 | 
						|
        if(Period)
 | 
						|
        {
 | 
						|
            idSendRandom=setInterval(SendRandom,Period);
 | 
						|
            return "Set period="+Period;
 | 
						|
        }
 | 
						|
        return "Clear";
 | 
						|
    }
 | 
						|
    var glNumSend=0;
 | 
						|
    function SendRandom()
 | 
						|
    {
 | 
						|
        glNumSend++;
 | 
						|
        var Body=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];
 | 
						|
        Body[6]=glNumSend&0xFF;
 | 
						|
        Body[7]=(glNumSend>>>8) & 0xFF;
 | 
						|
        Body[8]=(glNumSend>>>16) & 0xFF;
 | 
						|
        Body[9]=(glNumSend>>>24) & 0xFF;
 | 
						|
 | 
						|
        var rnd=Math.floor(Math.random()*1000000000);
 | 
						|
        Body[10]=rnd&0xFF;
 | 
						|
        Body[11]=(rnd>>>8) & 0xFF;
 | 
						|
        Body[12]=(rnd>>>16) & 0xFF;
 | 
						|
        Body[13]=(rnd>>>24) & 0xFF;
 | 
						|
 | 
						|
        SendHEXTransaction(GetHexFromArr(Body));
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
 | 
						|
    function CheckCtrlEnter(e,F)
 | 
						|
    {
 | 
						|
        SaveValues();
 | 
						|
 | 
						|
        if(e.ctrlKey && e.keyCode===13)
 | 
						|
        {
 | 
						|
            SendToServer();
 | 
						|
        }
 | 
						|
 | 
						|
        if(e.keyCode===27)
 | 
						|
        {
 | 
						|
            window.close();
 | 
						|
        }
 | 
						|
 | 
						|
        //SetStatus("keyCode="+e.keyCode)
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
    function CheckDevelop()
 | 
						|
    {
 | 
						|
        GetData("GetWalletInfo",{}, function (Data)
 | 
						|
        {
 | 
						|
            if(Data && Data.result)
 | 
						|
            {
 | 
						|
                if(!Data.IsDevelopAccount)
 | 
						|
                {
 | 
						|
                    var Select = $("idConsoleSend");
 | 
						|
                    for(var i=0;i<Select.options.length;i++)
 | 
						|
                    {
 | 
						|
                        var item=Select.options[i];
 | 
						|
                        if(item.value==="ECode")
 | 
						|
                        {
 | 
						|
                            item.disabled=1;
 | 
						|
                            Select.options[i] = null;
 | 
						|
                            break;
 | 
						|
                        }
 | 
						|
                    }
 | 
						|
                }
 | 
						|
            }
 | 
						|
        });
 | 
						|
    }
 | 
						|
 | 
						|
    window.onload=function()
 | 
						|
    {
 | 
						|
        setInterval(UpdateData,100);
 | 
						|
        setTimeout(CheckDevelop,500);
 | 
						|
 | 
						|
        window.onkeydown = CheckCtrlEnter;
 | 
						|
 | 
						|
        LoadValues();
 | 
						|
        SaveArrToSelect();
 | 
						|
 | 
						|
        document.body.className="univers "+Storage.getItem("idSelStyle");
 | 
						|
 | 
						|
 | 
						|
        SetStatus("");
 | 
						|
        OnSelectTypeCode();
 | 
						|
 | 
						|
    }
 | 
						|
 | 
						|
    function LoadValues()
 | 
						|
    {
 | 
						|
        if(!localStorage["WasSaveConsole"])
 | 
						|
            return;
 | 
						|
 | 
						|
        $("idConsoleSend").value=localStorage["idConsoleSend"];
 | 
						|
        $("idConsoleDeltaBlockNum").value=localStorage["idConsoleDeltaBlockNum"];
 | 
						|
        $("idNode").value=localStorage["idConsoleNode"];
 | 
						|
        if(localStorage["ConsoleCodeList2"])
 | 
						|
            CodeList=JSON.parse(localStorage["ConsoleCodeList2"]);
 | 
						|
        if(localStorage["idConsolePow"])
 | 
						|
            $("idPow").value=localStorage["idConsolePow"];
 | 
						|
 | 
						|
 | 
						|
        $("idProcessTX").checked=(localStorage["idConsoleProcessTX"]==="true");
 | 
						|
        $("idProcessWEB").checked=(localStorage["idConsoleProcessWEB"]==="true");
 | 
						|
        $("idProcessST").checked=(localStorage["idConsoleProcessST"]==="true");
 | 
						|
        if(localStorage["idConsolePeriodRun"])
 | 
						|
            $("idPeriodRun").value=localStorage["idConsolePeriodRun"];
 | 
						|
    }
 | 
						|
    function SaveValues()
 | 
						|
    {
 | 
						|
        localStorage["WasSaveConsole"]=1;
 | 
						|
 | 
						|
        localStorage["idConsoleSend"]=$("idConsoleSend").value;
 | 
						|
        localStorage["idConsoleDeltaBlockNum"]=$("idConsoleDeltaBlockNum").value;
 | 
						|
        localStorage["idConsoleNode"]=$("idNode").value;
 | 
						|
        localStorage["ConsoleCodeList2"]=JSON.stringify(CodeList);
 | 
						|
        localStorage["idConsolePow"]=$("idPow").value;
 | 
						|
        //localStorage["idConsoleSendAll"]=$("idSendAll").checked;
 | 
						|
 | 
						|
        localStorage["idConsoleProcessTX"]=$("idProcessTX").checked;
 | 
						|
        localStorage["idConsoleProcessWEB"]=$("idProcessWEB").checked;
 | 
						|
        localStorage["idConsoleProcessST"]=$("idProcessST").checked;
 | 
						|
 | 
						|
 | 
						|
        localStorage["idConsolePeriodRun"]=$("idPeriodRun").value;
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
</script>
 | 
						|
 | 
						|
 | 
						|
 | 
						|
<style type="text/css">
 | 
						|
 | 
						|
</style>
 | 
						|
 | 
						|
 | 
						|
<body>
 | 
						|
<DIV align='center'>
 | 
						|
    <B>CONSOLE</B>
 | 
						|
 | 
						|
    <DIV id="status2"></DIV><BR>
 | 
						|
    <DIV id="status"> ... </DIV><BR>
 | 
						|
 | 
						|
 | 
						|
    Mode:
 | 
						|
    <select size="1" id="idConsoleSend" onkeyup="OnSelectTypeCode();SaveValues()" onchange="OnSelectTypeCode();SaveValues()">
 | 
						|
        <option value="ServerCode">Server code</option>
 | 
						|
        <option value="ClientCode">Client code</option>
 | 
						|
        <option value="ECode" style="color:red;">Eval code !!</option>
 | 
						|
        <option value="HEX">HEX Transaction</option>
 | 
						|
    </select>
 | 
						|
 | 
						|
    POW:<INPUT type="number" id="idPow" style="width: 50px;" onchange="SaveValues();" value="14"> Delta BlockNum:<INPUT type="number" id="idConsoleDeltaBlockNum" style="width: 50px;" value="10">
 | 
						|
 | 
						|
    <BR>
 | 
						|
 | 
						|
    <DIV align='left' style="border: 1px solid #39519b;width:1198px;height:800px;">
 | 
						|
        <DIV style="width: 200px;height:100%; float:left;">
 | 
						|
            <select size="45" id="idConsoleIndex" style="width:100%;height:100%;" onchange="SetConsoleText()" ondblclick="SetAndRun()">
 | 
						|
            </select>
 | 
						|
        </DIV>
 | 
						|
 | 
						|
        <DIV style="width: 998px;height:100%; float: left;">
 | 
						|
            <DIV>
 | 
						|
                <DIV>
 | 
						|
                    <INPUT type="button" onclick="NewRow()" class="bt" value="*New">
 | 
						|
                    Name:<INPUT type="string" id="idName" style="width: 72%;" value="">
 | 
						|
                    <INPUT type="button" onclick="SaveToList(1)" class="bt" value="Save">
 | 
						|
                </DIV>
 | 
						|
                <textarea id="idConsoleText"  style="width: 99%;height: 95%;" rows="22" cols="98" autofocus>
 | 
						|
                </textarea>
 | 
						|
            </DIV>
 | 
						|
 | 
						|
            <textarea rows="5" cols="98"  name="result" id="idNode" style="width: 99%;">
 | 
						|
            </textarea>
 | 
						|
 | 
						|
            <INPUT type="button" onclick="SendToServer()" class="bt btdoit" id="idBtRun" value="Send">
 | 
						|
            <!--All<input type="checkbox" id="idSendAll" onchange = "SaveValues()"/>-->
 | 
						|
            <INPUT type="button" onclick="StartSendServerPeriod()" class="bt btdoit" id="idBtRun2" value="Run every">
 | 
						|
            <INPUT type="number" id="idPeriodRun" style="width: 50px;" onchange="SaveValues();" value="1">sec
 | 
						|
            TX process:<INPUT type="checkbox" id="idProcessTX">
 | 
						|
            WEB process:<INPUT type="checkbox" id="idProcessWEB">
 | 
						|
            Static process:<INPUT type="checkbox" id="idProcessST">
 | 
						|
 | 
						|
 | 
						|
            <BR>
 | 
						|
 | 
						|
            <BR>
 | 
						|
 | 
						|
            <textarea rows="18" cols="98"  name="result" id="result" style="width: 99%;">
 | 
						|
            </textarea>
 | 
						|
        </DIV>
 | 
						|
    </DIV>
 | 
						|
 | 
						|
 | 
						|
</DIV>
 | 
						|
</body>
 | 
						|
</html>
 |