375 lines
12 KiB
QML
375 lines
12 KiB
QML
pragma Singleton
|
|
import QtQuick 2.15
|
|
import QmlTool 1.0
|
|
|
|
|
|
QtObject {
|
|
//是否处于开发模式
|
|
property bool devModel : false
|
|
property string tool_version:"1.9"
|
|
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: "Bearer eyJhbGciOiJIUzI1NiJ9.eyJhdXRob3JpdGllcyI6WyJST0xFX0FMTCJdLCJ1c2VybmFtZSI6IjEyMyIsInN1YiI6IjEyMyIsImlhdCI6MTc0NDkwMTYwMiwiZXhwIjoxNzUyMTAxNjAyfQ.SlJxDukrOV4QbHXn0EBXLQhk8kEC2R0Ka431AGgWEe8"
|
|
//活跃人数
|
|
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) {
|
|
// console.log(xhr.responseText)
|
|
callback(null, JSON.parse(xhr.responseText))
|
|
} else {
|
|
// console.log(xhr.responseText)
|
|
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)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|