// 防破解技巧1
// 此方法主要是介绍将软件的重要数据存放到服务器上,通过正确的注册码进行获取.
// 这些数据都是加密后的数据,在返回的时候,把加密后的数据与密钥一起返回,用于解密.一般加密5个就可以
// 如果要加密更多数据,可以自行修改代码.

// 程序入口函数
function _initial()
    sendtextmsg("初始化接口")
end
// 按下主按钮触发函数方法
function _mainbutton()
    sendtextmsg("你好mainbutton")
end

// 此方法用于get模式请求数据
// 方法返回值即为get请求返回的数据
function _get(token,arg) 
    var helpStr = arg
    var len = strlen(helpStr)
    // 截取前面6个字符串,此数据为解密的密钥
    var key = 字符串截取左侧(helpStr,6)         // 取出解密需要的密钥
    var data = 字符串截取右侧(helpStr,len - 6)  // 取得加密后的密文
    var desData = aesdecrypt(data,key)             // 使用密钥进行解密,解密后为Json字符串
    
    var JsonArr = json转数组(desData)
    if(JsonArr == null)
        return ""
    end
    ////////////////////此处验证数据完整性////////////////////////////////
    var regKey,id,cmd
    if(arrayfindkey(JsonArr,"regKey") == -1)
        return ""
    else
        regKey = JsonArr["regKey"]  // 注册码
    end
    
    if(arrayfindkey(JsonArr,"id") == -1)
        return ""
    else
        id = JsonArr["id"]  // 机器码
    end
    
    if(arrayfindkey(JsonArr,"cmd") == -1)
        return ""
    else
        cmd = JsonArr["cmd"]  // 命令,表示要获取什么数据
    end
    
    /////////////////////此处验证注册码与机器码是否正确///////////////////////
    // 此处有2种方法验证,
    // 1: 如果注册码数据与防破解写在一个项目里,可以这样直接调用方法验证
    var userTime = sql查询注册码使用时间(id,regKey)
    if(!isint(userTime))  // 只要返回的是正确的时间,就验证通过
        return ""
    end
    // 2: 通过方法appsendmsg 向注册码服务的
    //    var tempStr = id &"|"& regKey
    //    var userData = appsendmsg("",tempStr)
    //    if(userData == "false")
    //        return ""
    //    end
    
    // 所有验证通过之后,根据命令返回数据,返回的数据可以是密文,也可以是原内容,自行决定
    select(cmd)
        case "data1"
        return getData1()
        
        case "data2"
        return getData2()
        
        case "data3"
        return getData3()
        
        case "data4"
        return getData4()
        
        case "data5"
        return getData5()
    end
    
    // 不正确的命令,不返回数据
    return ""
end

//////////////下面的方法大家可以自己根据自己的需要改,此处只做演示///////////////////////
// 例如:如果用到大漠vip版本,可以在这里返回reg需要的帐号信息
// 也可以返回 所有字库内容, 某个找图的色偏, 多点找色的颜色内容等等
function getData1()
    return "测试1"
end

function getData2()
    return "测试2"
end

function getData3()
    return "测试3"
end

function getData4()
    return "测试4"
end

function getData5()
    return "测试5"
end