LuaIde VSCode插件
LuaIde VSCode插件

LuaIde VSCode插件

前言

https://marketplace.visualstudio.com/items?itemName=kangping.luaide

请务必支持官方插件和作者(作者已经把价格写的很低了)

本项目没有任何的商业性质,纯技术分析

流程分析

1. out/src/extension.js

判lua插件冲突,引入extension1.js
全局 luaideLoad=require

2. out/src/extension1.js

var LuaIdeClient_1 = require("./LuaIdeClient");
var UserUtils_1 = require("./luatool/manager/UserUtils");

//注册侧边栏
vscode.window.registerTreeDataProvider('luaide_user', new LuaDocumentProvider_1.LuaDocumentProvider(this.json.user));
//注册方法
vscode.commands.registerCommand('luaide.delUser', (e) => {
    //删除用户信息
    new UserUtils_1.UserUtils().delUserInfo();
});
new LuaIdeClient_1.LuaIdeClient(context);

//验证文件md5
downLoadFile(){
    var md5url = downinfo.md5url;
    var downLoadUrl = downinfo.downLoadUrl;
    var filePath = downinfo.filePath;
}

//清空  kangping.luaide/runtime/temp  目录

3. out/src/Common.js

let userDataDir = C:\Users\QL\AppData\Roaming\Code\User\luaide

userInfo
{"uuid":"****脱敏****","donateShowMonth":"","showIndex":1,"donateInfo":[false,false]}

luaIdeUserInfo
{"userName":"****脱敏****","pwd":"****脱敏****"}

guid
****脱敏****

4. out/srcsrc/LuaIdeClient.js

ConstInfo_2.ConstInfo.socket1 = net.createConnection(9621, "49.234.141.149");

//去掉"_end_",aes解密
var key = '751f621ea5c8f930';
var iv = 'ad247500f45f8718';
var crypto = require('crypto');
script = new Buffer(script, 'base64').toString('binary');
var decipher = crypto.createDecipheriv('aes-128-cbc', key, iv);
var decoded = decipher.update(script, 'binary', 'utf8');
decoded += decipher.final('utf8');

//运行
new Function(decoded)()

5. 解密后的1.js

ConstInfo_1 = luaideLoad("./ConstInfo");
socket935 = ConstInfo_1.ConstInfo.socket1
context828 = context
checkTokenHandle666 = null
vscode = luaideLoad("vscode");
userInfoManager = null
const util_1 = luaideLoad("util");

function createGUID() {
    function md5Info(str) {
        const crypto = require('crypto');
        const hash = crypto.createHash('md5');
        hash.update(str);
        var packagemd5 = hash.digest('hex');
        return packagemd5;
    }
    const node_machine_id_2 = luaideLoad("./luatool/ex/ApiUtils");
    var id = node_machine_id_2.machineIdSync(true);
    var id2 = node_machine_id_2.machineIdSync();
    var userDataDir = null;
    var os = require("os");
    var path = require("path");
    var fs = require("fs");
    switch (process.platform) {
        case 'linux':
            userDataDir = path.join(os.homedir(), '.config');
            break;
        case 'darwin':
            userDataDir = path.join(os.homedir(), 'Library', 'Application Support');
            break;
        case 'win32':
            userDataDir = process.env.APPDATA;
            break;
        default:
            throw Error("Unrecognizable operative system");
    }
    userDataDir = path.join(userDataDir, 'code', 'user', "luaide");
    if (!fs.existsSync(userDataDir)) {
        fs.mkdirSync(userDataDir);
    }
    var userInfoPath = path.join(userDataDir, "guid");
    if (!fs.existsSync(userDataDir)) {
        fs.mkdirSync(userDataDir);
    }
    if (!fs.existsSync(userInfoPath)) {
        fs.writeFileSync(userInfoPath, md5Info(md5Info(id)));
    }
    var cachedDataDir = process.env["VSCODE_NODE_CACHED_DATA_DIR"];
    var cachedDataDir1 = path.join(path.dirname(cachedDataDir), md5Info(id2));
    if (!fs.existsSync(cachedDataDir1)) {
        fs.mkdirSync(cachedDataDir1);
    }
    var infoPath = path.join(cachedDataDir1, id2);
    if (!fs.existsSync(infoPath)) {
        fs.writeFileSync(infoPath, id2);
    }
    var cachedDataDir2 = path.join(path.dirname(cachedDataDir), md5Info(id));
    if (!fs.existsSync(cachedDataDir2)) {
        fs.mkdirSync(cachedDataDir2);
    }
    infoPath = path.join(cachedDataDir2, md5Info(id));
    if (!fs.existsSync(infoPath)) {
        fs.writeFileSync(infoPath, md5Info(id));
    }
}
try {
    createGUID()
    createGUID = null
} catch (error) {
    createGUID = null
}


socketMsg = "";
var splitStr = "end"
kickOffLine = function(msg) {
    socket935.removeAllListeners("data");
    socket935.removeAllListeners("close");
    socket935.removeAllListeners("error");
    socket935.removeAllListeners("timeout");
    socket935.destroy()
    LuaParse_1 = luaideLoad("./luatool/LuaParse");
    if (!util_1.isNullOrUndefined(LuaParse_1.LuaParse.lp)) {
        if (!util_1.isNullOrUndefined(LuaParse_1.LuaParse.lp.luaInfoManager)) {
            LuaParse_1.LuaParse.lp.luaInfoManager.fileCompletionItemManagers.clear()
        }
        LuaParse_1.LuaParse.lp.end = function() {}

    }
    userInfoManager = null;
    if (!util_1.isNullOrUndefined(checkTokenHandle666)) {
        clearInterval(checkTokenHandle666)
        checkTokenHandle666 = null
    }
    vscode.window.showErrorMessage(msg, {
        title: "重新启动",
        isCloseAffordance: true,
        id: 1
    }).then(v => {
        vscode.commands.executeCommand('workbench.action.reloadWindow');
    });

}
ExInit_1 = luaideLoad("./luatool/ex/ExInit");

function md5File(path) {
    var fs = luaideLoad("fs");
    var crypto = luaideLoad('crypto');
    var contentText = fs.readFileSync(path, 'utf-8');
    var hash = crypto.createHash('md5');
    hash.update(contentText);
    var packagemd5 = hash.digest('hex');
    return packagemd5;
}

var os = luaideLoad('os')
var data = {};
data.osType = os.type();
data.hostName = os.hostname();
data.platform = os.platform();
var cups = os.cpus();
var cupinfos = new Array();
var length = cups.length;
for (var index = 0; index < cups.length; index++) {
    cupinfos.push(cups[index].model);
}
data.cupinfos = cupinfos;
var networkInfos = new Array();
var networkInfo = os.networkInterfaces();
var interfaces = networkInfo;
for (var devName in networkInfo) {
    var macInfos = new Array();
    for (var i = 0; i < interfaces[devName].length; i++) {
        var face = interfaces[devName][i];
        macInfos.push({
            address: face.address,
            mac: face.mac
        });
    }
    networkInfos.push({
        devName: devName,
        macInfos: macInfos
    });
}
data.networkInfos = networkInfos;

var path = luaideLoad("path");
var packagePath = path.join(context.extensionPath, "package.json");
var extensionPath = path.join(context.extensionPath, "out", "src", "extension.js");
var clientPath = path.join(context.extensionPath, "out", "src", "LuaIdeClient.js");

var packageMd5 = md5File(packagePath);
var extensionMd5 = md5File(extensionPath);
var clientMd5 = md5File(clientPath);
data.versionCode = ConstInfo_1.ConstInfo.version
data.md5Infos = [packageMd5, extensionMd5, clientMd5, packageMd5, extensionMd5, packageMd5]
var node_machine_id_2 = luaideLoad("./luatool/ex/ApiUtils");
var id = node_machine_id_2.machineIdSync();
data.guid = id
var jsonStr = JSON.stringify(data);
jsonStr = jsonStr.replace(new RegExp(" ", "gm"), "");

socket935.removeAllListeners("data");
socket935.removeAllListeners("close");
socket935.removeAllListeners("error");
socket935.removeAllListeners("timeout");

scriptStr = "";
socket935.on("close", function(had_error) {
    if (!util_1.isNullOrUndefined(checkTokenHandle666)) {
        clearInterval(checkTokenHandle666)
        checkTokenHandle666 = null
    }
    LuaParse_1 = luaideLoad("./luatool/LuaParse");
    if (!util_1.isNullOrUndefined(LuaParse_1.LuaParse.lp)) {
        if (util_1.isNullOrUndefined(LuaParse_1.LuaParse.lp.luaInfoManager)) {
            LuaParse_1.LuaParse.lp.luaInfoManager.fileCompletionItemManagers.clear()

        }
        LuaParse_1.LuaParse.lp.end = function() {}
    }


    vscode.window.showErrorMessage("连接断开,请重新启动luaIde!", {
        title: "重新启动",
        isCloseAffordance: true,
        id: 1
    }).then(v => {
        vscode.commands.executeCommand('workbench.action.reloadWindow');
    });


});
socket935.on("error", function(had_error) {
    if (!util_1.isNullOrUndefined(checkTokenHandle666)) {
        clearInterval(checkTokenHandle666)
        checkTokenHandle666 = null
    }
    LuaParse_1 = luaideLoad("./luatool/LuaParse");
    if (!util_1.isNullOrUndefined(LuaParse_1.LuaParse.lp)) {
        if (util_1.isNullOrUndefined(LuaParse_1.LuaParse.lp.luaInfoManager)) {
            LuaParse_1.LuaParse.lp.luaInfoManager.fileCompletionItemManagers.clear()

        }
        LuaParse_1.LuaParse.lp.end = function() {}
    }


    vscode.window.showErrorMessage("连接断开,请重新启动luaIde!", {
        title: "重新启动",
        isCloseAffordance: true,
        id: 1
    }).then(v => {
        vscode.commands.executeCommand('workbench.action.reloadWindow');
    });


});
socket935.on("data", function(buff) {
    scriptStr += buff.toString("utf-8");
    while (true) {
        if (scriptStr.length > 0) {
            var sindex = scriptStr.indexOf("_" + splitStr + "_");
            if (sindex > -1) {



                var script = scriptStr.substring(0, sindex)
                var key = '751f621ea5c8f930';
                var iv = 'ad247500f45f8718';

                function runScript(script) {
                    var crypto = require('crypto');
                    script = new Buffer(script, 'base64').toString('binary');
                    var decipher = crypto.createDecipheriv('aes-128-cbc', key, iv);
                    var decoded = decipher.update(script, 'binary', 'utf8');
                    decoded += decipher.final('utf8');

                    var fun = new Function("require", "socket", "context", decoded);
                    try {
                        fun(require, socket935, context);
                    } catch (error) {
                        console.error(error)
                    }
                }
                runScript(script)

                if (scriptStr.length > sindex + 5) {
                    scriptStr = scriptStr.substr(sindex + 5);
                } else {
                    return;
                }
            } else {
                return;
            }
        } else {
            return;
        }
    }
});
var crypto = require('crypto');
var cipher = crypto.createCipheriv('aes-128-cbc', "721f6s1ea5c8f9d0", "ad247s00f45d8718");
var crypted = cipher.update(jsonStr, 'utf8', 'binary');
crypted += cipher.final('binary');
crypted = new Buffer(crypted, 'binary').toString('base64');
socket935.write("1b6e727d-03a5-4625-9e38-7343b2dd9d18 " + crypted + "\r\n");

data数据

{
    "osType": "Windows_NT",
    "hostName": "QL",
    "platform": "win32",
    "cupinfos": [
        "****脱敏****"
    ],
    "networkInfos": [
        {
            "devName": "以太网",
            "macInfos": [
                {
                    "address": "****脱敏****",
                    "mac": "****脱敏****"
                }
            ]
        }
    ],
    "versionCode": "1.0.9",
    "md5Infos": [
        "6ebee864dbb423592881eb8082853487",
        "72d04831c9de377565b7b74d08ba598c",
        "2c2935f5641123a0a582ed2e3d5b1bdd",
        "6ebee864dbb423592881eb8082853487",
        "72d04831c9de377565b7b74d08ba598c",
        "6ebee864dbb423592881eb8082853487"
    ],
    "guid": "****脱敏****"
}

6. 解密后的2.js

const UserInfoManager_1 = luaideLoad("./luatool/UserInfoManager");
userInfoManager = new UserInfoManager_1.UserInfoManager();
checkTokenHandle = null
userInfoManager.loginUser = function() {
    var jsonStr = JSON.stringify(userInfoManager.userInfo);

    var crypto = require('crypto');
    var cipher = crypto.createCipheriv('aes-128-cbc', "721f6s1ea5c8f9d0", "ad247s00f45d8718");
    var crypted = cipher.update(jsonStr, 'utf8', 'binary');
    crypted += cipher.final('binary');
    crypted = new Buffer(crypted, 'binary').toString('base64');
    socket935.write("userLoginEvent18 " + crypted + "\r\n")
}

userInfoManager.registerUser = function() {
    var crypto = luaideLoad('crypto');
    var hash = crypto.createHash('md5');
    hash.update(this.pwd1);
    var value = hash.digest('hex')
    var data = {
        userName: this.userName,
        pwd: value,

    }
    var node_machine_id_2 = luaideLoad("./luatool/ex/ApiUtils");
    var id = node_machine_id_2.machineIdSync();
    data.guid = id
    var jsonStr = JSON.stringify(data);
    var crypto = require('crypto');
    var cipher = crypto.createCipheriv('aes-128-cbc', "721f6s1ea5c8f9d0", "ad247s00f45d8718");
    var crypted = cipher.update(jsonStr, 'utf8', 'binary');
    crypted += cipher.final('binary');
    crypted = new Buffer(crypted, 'binary').toString('base64');
    socket935.write("registerEvent124 " + crypted + "\r\n")

}
userInfoManager.sendForgetPwdUserName = function(userName) {
    var crypto = require('crypto');
    var cipher = crypto.createCipheriv('aes-128-cbc', "721f6s1ea5c8f9d0", "ad247s00f45d8718");
    var crypted = cipher.update(userName, 'utf8', 'binary');
    crypted += cipher.final('binary');
    crypted = new Buffer(crypted, 'binary').toString('base64');
    socket935.write("forgetPwdUserNameEvent658 " + crypted + "\r\n")
}
userInfoManager.sendForgetPwdCode = function(code) {
    var crypto = require('crypto');
    var cipher = crypto.createCipheriv('aes-128-cbc', "721f6s1ea5c8f9d0", "ad247s00f45d8718");
    var crypted = cipher.update(code, 'utf8', 'binary');
    crypted += cipher.final('binary');
    crypted = new Buffer(crypted, 'binary').toString('base64');
    socket935.write("forgetPwdCodeEvent621 " + crypted + "\r\n")
}
userInfoManager.sendForgetPwd = function(pwd) {
    var crypto = require('crypto');
    var cipher = crypto.createCipheriv('aes-128-cbc', "721f6s1ea5c8f9d0", "ad247s00f45d8718");
    var crypted = cipher.update(pwd, 'utf8', 'binary');
    crypted += cipher.final('binary');
    crypted = new Buffer(crypted, 'binary').toString('base64');
    socket935.write("forgetPwdEvent646 " + crypted + "\r\n")

}
userInfoManager.sendRePwd = function(data) {
    var jsonStr = JSON.stringify(data);
    var crypto = require('crypto');
    var cipher = crypto.createCipheriv('aes-128-cbc', "721f6s1ea5c8f9d0", "ad247s00f45d8718");
    var crypted = cipher.update(jsonStr, 'utf8', 'binary');
    crypted += cipher.final('binary');
    crypted = new Buffer(crypted, 'binary').toString('base64');
    socket935.write("rePwdEvent382 " + crypted + "\r\n")

}
userInfoManager.changeSuccess = function() {

}
userInfoManager.checkUserTimeTips = function() {
    vscode.window.showInputBox({
        value: "请购买luaide后继续使用!如不需要使用luaide功能可禁用luaide插件!重启vscode可购买!,"
    }).then(parameter => {
        // userInfoManager.checkUserTimeTips();
    });
}
userInfoManager.checkUserTime = function() {
    this.clearTime()
    if (this.timer == null) {
        var self = this;
        this.timer = setTimeout(function() {
            self.checkUserTimeTips();
        }, 1000 * 60 * 3);
    }
}
userInfoManager.clearTime = function() {

    if (this.timer != null) {

        clearTimeout(this.timer)
        this.timer = null
    }
}
userInfoManager.checkUserInfo = function(type_) {


    if (this.userInfo == null) {
        socket935.write("notUserEvent841 \r\n")
        this.startRegisterUser(type_, "请注册账号,注册后可试用7天.");
    } else {
        this.loginUser();
    }
}
userInfoManager.checkUserInfo(1)
userInfoManager.checkUserTime()

out/src/luatool/UserInfoManager.js

function readUserInfo() {
    var userPath = Common_1.getConfigDir();
    var userInfoPath = path.join(userPath, "luaIdeUserInfo");
    if (fs.existsSync(userInfoPath)) {
        try {
            var contentText = fs.readFileSync(path.join(userInfoPath), 'utf-8');
            this.userInfo = JSON.parse(contentText);
            if (this.userInfo.guid == null) {
                const node_machine_id_2 = require("./../luavm/nodeMachine");
                var id = node_machine_id_2.machineIdSync();
                this.userInfo.guid = id;
            }
        }
        catch (error) {
            this.userInfo = null;
            console.log(error.trace);
        }
    }
    else {
        this.userInfo = null;
    }
}

数据data

{"userName":"****脱敏****","pwd":"****脱敏****","guid":"****脱敏****"}

7. 解密后的3.js

const ExtensionManager_1 = luaideLoad("./luatool/ex/ExtensionManager")
const TokenInfo_1 = luaideLoad("./luatool/TokenInfo");
const LuaFileCompletionItems_1 = luaideLoad("./luatool/manager/LuaFileCompletionItems");
const vscode = luaideLoad("vscode");
var userdata = {
    userName: "****脱敏****",
    pwd: "****脱敏****"
}
userInfoManager.userInfo = userdata
userInfoManager.writeUserInfo()
var em = new ExtensionManager_1.ExtensionManager();
LuaParseEndFun687 = function() {
    var tokens = new Array();
    while (true) {

        var token = this.lpt.lex();
        if (token.error != null) {
            this.setError(token, token.error.msg);
            return;
        }
        if (token.type == TokenInfo_1.TokenTypes.EOF) {
            break;
        }
        token.index = tokens.length;
        tokens.push(token);
    }
    this.tokens = tokens;
    this.luaInfoManager.init(this, this.currentUri, this.tempUri);
    this.tokenIndex = 0;
    this.tokensLength = tokens.length;
    var isReturn = false;
    // try {
    if (this.checkSemicolons(true))
        this.tokenIndex++;
    isReturn = this.setLuaInfo(this.rootLuaInfo, null, null);
    // } catch (error) {
    //   console.log(error)
    // }
    var returnValueToken = null;
    if (isReturn) {
        // console.log("isReturn:"+isReturn)
        if (this.tokenIndex < this.tokensLength) {
            this.setError(this.getLastToken(), "return 的多余字符");
        }
    }
    if (this.isError == false) {
        for (var i = 0; i < this.errorFilePaths.length; i++) {
            if (this.tempUri.path == this.errorFilePaths[i].path) {
                this.errorFilePaths.splice(i, 1);
                break;
            }
        }
        //正确了删除错误提示
        if (this.diagnosticCollection && this.diagnosticCollection.has(this.tempUri)) {
            this.diagnosticCollection.delete(this.tempUri);
        }
        var fcim = this.luaInfoManager.currentFcim;
        fcim.currentFunctionNames = null;
        if (this.isSaveCompletion || (this.isSaveCompletion == false && this.isError == false)) {
            var oldFcim = this.luaInfoManager.getFcimByPathStr(this.tempUri.path);
            //  if(oldFcim != null){
            //     LuaGolbalCompletionManager.clearGolbalCompletion(oldFcim.luaGolbalCompletionInfo)
            //     LuaGolbalCompletionManager.clearGolbalCompletion(oldFcim.luaFunCompletionInfo)
            //  }
            if (isReturn) {
                if (this.tokensLength - 2 >= 0) {
                    var endIndex = this.tokensLength - 1;
                    while (endIndex > 0) {
                        if (this.consume(';', tokens[endIndex], TokenInfo_1.TokenTypes.Punctuator)) {
                            endIndex--;
                        } else {
                            break;
                        }
                    }
                    var returnToken = tokens[endIndex - 1];
                    if (this.consume('return', returnToken, TokenInfo_1.TokenTypes.Keyword)) {
                        if (tokens[endIndex].type == TokenInfo_1.TokenTypes.Identifier) {
                            returnValueToken = tokens[endIndex];
                            fcim.setRootCompletionInfo(returnValueToken.value);
                        }
                    }
                }
            }
            this.luaInfoManager.fileCompletionItemManagers.set(this.tempUri.path, fcim);
            LuaFileCompletionItems_1.LuaFileCompletionItems.getLuaFileCompletionItems().checkCompletion(fcim, this
                .isApi);
            // LuaGolbalCompletionManager.setGolbalCompletion(fcim.luaGolbalCompletionInfo)
            // LuaGolbalCompletionManager.setGolbalCompletion(fcim.luaFunCompletionInfo)
            this.luaInfoManager.currentFcim = null;
            fcim.tokens = null;
            this.tokenInfoCache.gc(this.tokens);
            this.tokens = null;
            this.tokenInfoCache.gcLuaInfo();
            this.tokenInfoCache.gcLuaComment();
            this.tokenInfoCache.gcLuaRange();
            this.tokenInfoCache.clearLuaFiledCompletionInfo();
        }
        this.luaInfoManager.fileCompletionItemManagers.delete(this.currentUri.path);
    } else {
        var fcim = this.luaInfoManager.fileCompletionItemManagers.get(this.currentUri.path);
        fcim.clear();
    }
}
ConstInfo_1 = luaideLoad("./ConstInfo");
userBarItem = ConstInfo_1.ConstInfo.userBarItem
socket935.write("CodeInitEvent867 \r\n")

8.解密后的4.js

const ChangeCaseExtension_1 = luaideLoad("./luatool/ex/ChangeCaseExtension");
const cmf = luaideLoad("./luatool/ex/CreateMoudleFunction");
const CreateFunction = luaideLoad("./luatool/ex/CreateFunction");
const CreateTemplateFile_1 = luaideLoad("./luatool/ex/Template/CreateTemplateFile");
const util_1 = luaideLoad("util");
const vscode = luaideLoad("vscode");
const net = luaideLoad("net");
var splitStr = "end"
const LuaCompletionItemProvider_1 = luaideLoad("./luatool/provider/completion/LuaCompletionItemProvider");
const LuaDefinitionProvider_1 = luaideLoad("./luatool/provider/definition/LuaDefinitionProvider");
const LuaDocumentSymbolProvider_1 = luaideLoad("./luatool/provider/documentSymbol/LuaDocumentSymbolProvider");
const LuaMode_1 = luaideLoad("./luatool/provider/LuaMode");
const LuaSignatureHelpProvider_1 = luaideLoad("./luatool/provider/signatureHelp/LuaSignatureHelpProvider");
const LuaFormattingEditProvider_1 = luaideLoad("./luatool/provider/format/LuaFormattingEditProvider");
const LuaParse_1 = luaideLoad("./luatool/LuaParse");
function removeAllListeners(socket) {
    socket.removeAllListeners("data");
    socket.removeAllListeners("close");
    socket.removeAllListeners("error");
    socket.removeAllListeners("timeout");
    socket.destroy()
}


reCount592 = 0;
isCloseConn = false
sessionIdEvent527 = "1b6e727d-03a5-4625-9e38-7343b2dd9d18"

function checkReCount()
{   

    removeAllListeners(socket935)

    if(!util_1.isNullOrUndefined(checkTokenHandle666)){
        clearInterval(checkTokenHandle666)
        checkTokenHandle666 = null
    }

    if(isCloseConn){
        return;
    }

    if(reCount592 == 0){
        reConnServer();
    }
    else if(reCount592 < 5){
        setTimeout(function(){

            reConnServer();
        },5000)

    }else{
        // if(!util_1.isNullOrUndefined(LuaParse_1.LuaParse.lp) ){
        //     if(util_1.isNullOrUndefined(LuaParse_1.LuaParse.lp.luaInfoManager )) {
        //     LuaParse_1.LuaParse.lp.luaInfoManager.fileCompletionItemManagers.clear()

        //     }
        //     LuaParse_1.LuaParse.lp.end = function() {}
        // }

        luaideProvider.luaCompletionItemProvider.provideCompletionItems = function(){}
        luaideProvider.luaDefinitionProvider.provideDefinition = function(){}

        ConstInfo_1.ConstInfo.isParse = false;
        ConstInfo_1.ConstInfo.barItem.text = "提示:luaide网络断了,请点击进行重新连接"
            vscode.window.showErrorMessage("重连失败,luaIde提示功能被取消,重新连接后恢复提示,您也可以点击vscode右下角的重连提示!", {
                title: "重新连接",
                isCloseAffordance: true,
                id: 1
            }).then(v => {
                if(v!=null){
                    reCount592 = 0
                    reConnServer();

                }

            });
            // console.log(7)
    }
}
ConstInfo_1.ConstInfo.luaDebugFileMd5 = "fe904f03f65bc2fa86dd0bb11275ca4f"
ConstInfo_1.ConstInfo.luaDebugJitFileMd5 = "148e004a14796572da1e2fb8559763d3"
ConstInfo_1.ConstInfo.isAutoDown = "1";
ConstInfo_1.ConstInfo.barItem.command = "luaide.reConn";
function reConnServer()
{

    reCount592 = reCount592+1

    ConstInfo_1.ConstInfo.barItem.text = "luaIde:尝试重连服务器第"+ reCount592 + "次.";

    // socket935 = net.createConnection(9096, "49.234.141.149");
    socket935  = net.createConnection(9622,"49.234.141.149")

    socket935.setTimeout(5000);

        socket935.on('timeout', function () {

            checkReCount();
        });
        socket935.on("connect",function(){
           // console.log("sessionIdEvent527:"+sessionIdEvent527)
           socket935.setTimeout(300000);
           var node_machine_id_2 = luaideLoad("./luatool/ex/ApiUtils");
           var id = node_machine_id_2.machineIdSync();
           userInfoManager.userInfo.guid = id
           var jsonStr = JSON.stringify(userInfoManager.userInfo);

            var crypto = require('crypto');
            var cipher = crypto.createCipheriv('aes-128-cbc', "721f6s1ea5c8f9d0", "ad247s00f45d8718");
            var crypted = cipher.update(jsonStr, 'utf8', 'binary');
            crypted += cipher.final('binary');
            crypted = new Buffer(crypted, 'binary').toString('base64');
            socket935.write(sessionIdEvent527 +" "+crypted+"\r\n")
        })
        socket935.on("close", function (had_error) {

            checkReCount();
        });
        socket935.on("error", function (error) {

            checkReCount();
        });
        var scriptStr = "";
        socket935.on("data", function (buff) {

            scriptStr += buff.toString("utf-8");

                while (true) {
                    if (scriptStr.length > 0) {
                        var sindex = scriptStr.indexOf("_"+splitStr+"_");
                        if (sindex > -1) {
                            var script = scriptStr.substring(0, sindex);
                            var key = '751f621ea5c8f930';
                            var iv = 'ad247500f45f8718';

                            function runScript(script){
                                var crypto = require('crypto');
                                script = new Buffer(script, 'base64').toString('binary');
                                var decipher = crypto.createDecipheriv('aes-128-cbc', key, iv);
                                var decoded = decipher.update(script, 'binary', 'utf8');
                                decoded += decipher.final('utf8');

                                var fun = new Function("require", "socket", "context", decoded);
                                try {
                                    fun(require, socket935, context);
                                } catch (error) {
                                    console.error(error)
                                }
                            }
                            runScript(script)
                            if (scriptStr.length > sindex + 5) {
                                scriptStr = scriptStr.substr(sindex + 5);
                            }
                            else {
                                return;
                            }
                        }
                        else {
                            return;
                        }
                    }
                    else {
                        return;
                    }
                }
       });
}

function RunCommand(commands, cmd, e) {
    for (var i = 0; i < commands.length; i++) {
        if (commands[i].label == cmd) {
            try{
                commands[i].func(e);
            } catch (err) {
                this.errorMsg = err.message;
                vscode.window.showErrorMessage(err.message);
            }
            break;
        }
    }
}

socket935.removeAllListeners("close");
socket935.removeAllListeners("error");
;
socket935.on("timeout", function () {

    checkReCount();
});
socket935.on("error", function (error) {

    checkReCount();
});
socket935.on("close", function (had_error) {
    //进行断线重连

    checkReCount();
 });
onlineEvent = "onLine100"
checkTokenHandle666 = setInterval(function(){
    var crypto = require('crypto');
            var cipher = crypto.createCipheriv('aes-128-cbc', "721f6s1ea5c8f9d0", "ad247s00f45d8718");
            var crypted = cipher.update("onLineStr917", 'utf8', 'binary');
            crypted += cipher.final('binary');
            crypted = new Buffer(crypted, 'binary').toString('base64');
            try {
                socket935.write(onlineEvent+" "+crypted+"\r\n");
            } catch (error) {
                if(!util_1.isNullOrUndefined(checkTokenHandle666)){
                    clearInterval(checkTokenHandle666)
                    checkTokenHandle666= null
                }
            }

},300000)
socket935.setTimeout(600000);


var COMMAND_LABELS = {
    toUpperCase: 'toUpperCase',
    toLowerCase: 'toLowerCase',
    createModuleFunction: 'createModuleFunction',
    CreateFunction: "CreateFunction",
    createTemplateFile: "createTemplateFile",
    LoadLuaScript: "LoadLuaScript",
    chatShow: "chatShow",
    donate: "donate",
    helper:"helper",
    resetPwd:"resetPwd",
    delUser:"delUser"
};
new LuaParse_1.LuaParse();
var COMMAND_DEFINITIONS = [
    { label: COMMAND_LABELS.toUpperCase, description: '转换为大写', func: ChangeCaseExtension_1.toUpperCase },
    { label: COMMAND_LABELS.toLowerCase, description: '转换为小写', func: ChangeCaseExtension_1.toLowerCase },
    { label: COMMAND_LABELS.createModuleFunction, description: '创建模块方法', func: cmf.createModuleFunction },
    { label: COMMAND_LABELS.CreateFunction, description: '创建方法', func: CreateFunction.createFunction },
    { label: COMMAND_LABELS.createTemplateFile, description: '创建模板文件', func: CreateTemplateFile_1.CreateTemplateFile.run },



];
vscode.commands.registerCommand('luaide.changecase.toLowerCase', (e) => { RunCommand(COMMAND_DEFINITIONS, COMMAND_LABELS.toLowerCase, e); });
vscode.commands.registerCommand('luaide.changecase.toUpperCase', (e) => { RunCommand(COMMAND_DEFINITIONS, COMMAND_LABELS.toUpperCase, e); });
vscode.commands.registerCommand('luaide.utils.createModuleFunction', (e) => { RunCommand(COMMAND_DEFINITIONS, COMMAND_LABELS.createModuleFunction, e); });
vscode.commands.registerCommand('luaide.utils.createFunction1', (e) => { RunCommand(COMMAND_DEFINITIONS, COMMAND_LABELS.CreateFunction, e); });
vscode.commands.registerCommand('luaide.utils.createTemplateFile', (e) => { RunCommand(COMMAND_DEFINITIONS, COMMAND_LABELS.createTemplateFile, e); });

vscode.commands.registerCommand('luaide.reConn', (e) => { 
    if(isCloseConn) {
        vscode.commands.executeCommand('workbench.action.reloadWindow');
        return
    }
    if(reCount592 >= 5){
        reCount592 = 0
        reConnServer();
    }

}); 
LuaParse_1.LuaParse.lp.end = LuaParseEndFun687
var luaCompletionItemProvider = new LuaCompletionItemProvider_1.LuaCompletionItemProvider();
var luaSignatureHelpProvider = new LuaSignatureHelpProvider_1.LuaSignatureHelpProvider();
var luaFormattingEditProvider = new LuaFormattingEditProvider_1.LuaFormattingEditProvider();
var rangeluaFormattingEditProvider = new LuaFormattingEditProvider_1.LuaFormattingEditProvider();
var luaDefinitionProvider = new LuaDefinitionProvider_1.LuaDefinitionProvider()
var luaDocumentSymbolProvider = new LuaDocumentSymbolProvider_1.LuaDocumentSymbolProvider()
luaideProvider = {
    luaCompletionItemProvider : luaCompletionItemProvider,
    luaDefinitionProvider : luaDefinitionProvider
} 
luaFunCache = {
    provideCompletionItems : luaideProvider.luaCompletionItemProvider.provideCompletionItems,
    luaDefinitionProvider : luaideProvider.luaDefinitionProvider.provideDefinition
}

ExInit_1.initLuaIdeEx(context828,function(){


    context.subscriptions.push(vscode.languages.registerCompletionItemProvider(LuaMode_1.LUA_MODE, luaCompletionItemProvider,
        '.', ":", '"', "'", "[", "@","|","=","/"," "));
    context.subscriptions.push(vscode.languages.registerDefinitionProvider(LuaMode_1.LUA_MODE, luaDefinitionProvider));
    context.subscriptions.push(vscode.languages.registerDocumentSymbolProvider(LuaMode_1.LUA_MODE, luaDocumentSymbolProvider));
    context.subscriptions.push(vscode.languages.registerSignatureHelpProvider(LuaMode_1.LUA_MODE, luaSignatureHelpProvider, '(', ','));
    context.subscriptions.push(vscode.languages.registerDocumentFormattingEditProvider(LuaMode_1.LUA_MODE, luaFormattingEditProvider));
    context.subscriptions.push(vscode.languages.registerDocumentRangeFormattingEditProvider(LuaMode_1.LUA_MODE, rangeluaFormattingEditProvider));

});
userInfoManager.clearTime();
此内容查看价格为66.66QL币立即购买
客服: 273641837