pragma Singleton import QtQuick 2.15 import QmlTool 1.0 QtObject { //是否处于开发模式 property bool devModel : false property string tool_version:"2.0" property var all_Version : null //请求的服务器url // property string server_url: "http://192.168.200.20:8651" property string server_url: "https://dpsm.senzo.online" // property string server_url: "http://43.160.206.158:8651" //界面对象 property var main_Window : null property var page_home : null property var tab_shop : null property var tab_server : null property var tab_personal:null property var downlad_quest_window:null //全局消息提示对象 property var msg_control : null //服务器控制台输出窗口 property var serverConsoleWindow: null //客户端Token property string token: "" //活跃人数 property string active_count : "666" //服务器插件项目 property var serverPluginList : null //服务器插件项目Map property var serverPluginMap : null //服务器双端插件项目Map property var serverPluginexMap : null //服务器所有广告 property var serverAdvertisement : null //账号下的所有服务器 property var accServerList : null //账号信息 property var accInfo : null //当前ssh连接的服务器 property string sshConnectServer:"" //当前选择的要操作的服务器 property int selectServer : 0 //我的服务器插件项目 property var myServerPluginList : null //我的服务器插件项目Map property var myServerPluginMap : null //我的服务器双端插件项目Map property var myServerExPluginMap : null //公共方法 function sendPostRequest(url, jsonData, callback) { // 创建请求对象 var xhr = new XMLHttpRequest() xhr.open("POST", server_url + url) // 设置请求头,表明发送的数据是 JSON 格式 xhr.setRequestHeader("Content-Type", "application/json") if (token.length > 0) { xhr.setRequestHeader("Authorization", token); } // 定义回调函数 xhr.onreadystatechange = function() { if (xhr.readyState === XMLHttpRequest.DONE) { if (xhr.status === 200) { callback(null, JSON.parse(xhr.responseText)) } else { console.log(xhr.status) callback(new Error("请求失败,状态码: " + xhr.status), xhr.responseText) } } } // 将 JSON 对象转换为字符串 var jsonString = JSON.stringify(jsonData) // 发送包含 JSON 数据的请求 xhr.send(jsonString) } //公共方法 function sendPostRequestByIp(ip, url, jsonData, callback) { // 创建请求对象 var xhr = new XMLHttpRequest() xhr.open("POST", ip + url) // 设置请求头,表明发送的数据是 JSON 格式 xhr.setRequestHeader("Content-Type", "application/json") // 定义回调函数 xhr.onreadystatechange = function() { if (xhr.readyState === XMLHttpRequest.DONE) { if (xhr.status === 200) { // console.log(xhr.responseText) callback(null, JSON.parse(xhr.responseText)) } else { callback(new Error("请求失败,状态码: " + xhr.status), xhr.responseText) } } } if(jsonData){ // 将 JSON 对象转换为字符串 var jsonString = JSON.stringify(jsonData) // 发送包含 JSON 数据的请求 xhr.send(jsonString) } else{ xhr.send() } } //获取版本信息 function getAllVersion(){ sendPostRequest("/rindro/getversion",{},function(error, response) { if (error) { msg_control.error("获取版本失败!"); } else { all_Version = response; //先判断一下工具版本 if(parseFloat(all_Version.toolVer) > parseFloat(tool_version)){ QmlTool.runExe("DelUpdate.exe " + server_url) } } }) } //获取市场所有插件信息 function getShopAllProject(){ sendPostRequest("/dps/getlist",{},function(error, response) { if (error) { msg_control.error("获取服务器插件列表失败!"); serverPluginList = null serverPluginMap = null } else { serverPluginList = response.list; serverPluginMap = {} // 遍历对象的属性 for (var key in serverPluginList) { var obj = serverPluginList[key]; serverPluginMap[obj.ProjectName] = obj } } }) } //获取市场所有插件信息 function getShopAllProjectex(){ sendPostRequest("/rindro/getProjectInfoList",{},function(error, response) { if (error) { msg_control.error("获取服务器双端插件列表失败!"); serverPluginexMap = null } else { serverPluginexMap = response.data; // 遍历对象的属性 for (var key in serverPluginexMap) { var obj = serverPluginexMap[key] obj.ProjectName = key } } }) } //获取市场所有广告信息 function getAllAdvertisement(callBack){ sendPostRequest("/dps/getadvertisement",{},function(error, response) { if (error) { msg_control.error("获取服务器广告列表失败!"); } else { callBack(response) } }) } //购买双端插件 function buyExPlugin(Name,Ip){ sendPostRequest("/rindro/buy",{projectName : Name,ip: Ip},function(error, response) { if (error) { msg_control.error("购买失败!"); } else { if(response.code !== 200){ msg_control.error("购买失败!\t" + response.message); } else{ msg_control.success("购买成功!\t到期时间: " + response.data.endTime); } } }) } //获取账号下的所有服务器 function getAccServerList(){ sendPostRequest("/rindro/getServerList",{},function(error, response) { if (error) { msg_control.error("获取账号服务器列表失败!"); } else { accServerList = response.data; } }) } //获取账号个人信息 function getAccInfo(){ sendPostRequest("/rindro/getInfo",{},function(error, response) { if (error) { msg_control.error("获取账号信息失败!"); } else { accInfo = response.data; } }) } //删除账号下的服务器 function removeServer(remove_ip){ sendPostRequest("/rindro/deleteServer",{ip : remove_ip},function(error, response) { if (error) { msg_control.error("删除服务器失败!"); } else { msg_control.success("删除服务器成功!"); getAccServerList(); } }) } //新增或修改服务器 function addServer(obj){ sendPostRequest("/rindro/addServer",obj,function(error, response) { if (error) { msg_control.error("操作服务器失败!"); } else { msg_control.success("操作服务器成功!"); getAccServerList(); } }) } //向网关获取版本 function getServerInfo(ip,callback){ sendPostRequestByIp(ip , "/getdpsinfo",{},function(error, response) { if (error) { callback(false,0,0); } else { if(response.info !== null) callback(true,0,response.info); else callback(false,0,0); } }) sendPostRequestByIp(ip , "/getjavapinfo",{},function(error, response) { if (error) { callback(false,1,0); } else { if(response.info !== null) callback(true,1,response.info); else callback(false,1,0); } }) sendPostRequestByIp(ip , "/getjavainfo",{},function(error, response) { if (error) { callback(false,2,0); } else { if(response.info !== null) callback(true,2,response.info); else callback(false,2,0); } }) sendPostRequestByIp(ip , "/api/hello",{},function(error, response) { if (error) { msg_control.error("服务器dps管理网关未启动,请前往'个人中心'重新添加服务器 或 询问管理员!") } else { callback(false,3,true); } }) } //获取自己服务器的全部插件 function getServerPlugins(ip){ sendPostRequestByIp("http://" + ip + ":65170", "/api/getallplugins",{},function(error, response) { if (!error) { myServerPluginList = response myServerPluginMap = {} // 遍历对象的属性 for (var key in myServerPluginList) { var obj = myServerPluginList[key]; myServerPluginMap[obj.ProjectName] = obj } } else { myServerPluginList = null; myServerPluginMap = null; } }) } //获取自己服务器的全部双端插件 function getServerExPlugins(ipk){ sendPostRequest("/rindro/getUserProList",{ip:ipk},function(error, response) { if (!error) { myServerExPluginMap = response.data } else { myServerExPluginMap = null; } }) } //设置双端插件是否启用 function setServerExPluginsEnable(ipk,projectname,cstate){ sendPostRequest("/rindro/setproopen",{ip:ipk,projectName:projectname,open:cstate},function(error, response) { if (!error) { } else { if(cstate === 1)msg_control.success("开启成功"); } }) } //请求某个项目的配置 function getServerPluginConfig(ip,filename,callback){ sendPostRequestByIp("http://" + ip + ":65170", "/api/getpluginconfig",{filename:filename},function(error, response) { if (!error) { callback(response) } else { callback(null) } }) } //保存某个项目的配置 function setServerPluginConfig(ip,filename,config){ sendPostRequestByIp("http://" + ip + ":65170", "/api/setpluginconfig",{filename:filename,config:config},function(error, response) { if (!error) { msg_control.success("配置修改成功!") } else { msg_control.error("配置修改失败!") } }) } //备份某个项目的配置 function backupServerPluginConfig(ip,filename,callback){ sendPostRequestByIp("http://" + ip + ":65170", "/api/backuppluginconfig",{filename:filename},function(error, response) { if (!error) { callback(response) } else { callback(null) } }) } }