From 0622fb56cc123dced8f1b61ef718a26bbf76e07d Mon Sep 17 00:00:00 2001 From: duhui Date: Tue, 2 Nov 2021 17:41:12 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9C=8D=E5=8A=A1=E5=99=A8=E5=88=97=E8=A1=A8?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/Application.java | 10 +- .../jmfy/controller/OrderInfoController.java | 2 +- .../jmfy/controller/ServerInfoController.java | 215 +++++++++++++++--- src/main/java/com/jmfy/dao/ServerInfoDao.java | 3 + .../com/jmfy/dao/impl/ServerInfoDaoImpl.java | 10 + src/main/java/com/jmfy/model/ServerInfo.java | 39 ---- .../java/com/jmfy/model/vo/PowersEnum.java | 2 +- .../java/com/jmfy/model/vo/ServerInfoVo.java | 179 ++++++++++----- .../jmfy/redisProperties/RedisUserKey.java | 5 +- .../com/jmfy/utils/AutoServerManager.java | 12 +- src/main/resources/static/html/addServer.html | 27 --- .../templates/autoStartServerSetting.html | 2 +- src/main/resources/templates/findOrder.html | 4 +- .../resources/templates/findServerInfo.html | 56 +++-- src/main/resources/templates/getAllWhite.html | 2 +- .../resources/templates/secretVolumeEdit.html | 2 +- .../resources/templates/serverInfoEdit.html | 16 +- .../resources/templates/serverconfigEdit.html | 2 +- .../resources/templates/updateChannel.html | 2 +- 19 files changed, 379 insertions(+), 211 deletions(-) diff --git a/src/main/java/com/Application.java b/src/main/java/com/Application.java index aa4ab83..dc36761 100644 --- a/src/main/java/com/Application.java +++ b/src/main/java/com/Application.java @@ -15,7 +15,6 @@ import org.springframework.boot.web.support.SpringBootServletInitializer; import org.springframework.context.ConfigurableApplicationContext; import java.util.Map; -import java.util.concurrent.Executor; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; @@ -48,11 +47,14 @@ public class Application extends SpringBootServletInitializer { minuteTask.setsHotFixManager(sHotFixManager); scheduledExecutorService.scheduleWithFixedDelay(minuteTask,30,60, TimeUnit.SECONDS); FileCacheUtils.initData(); - // SHotFixManager.main(args); - // FileCacheUtils.initData(); } - @Override//为了打包springboot项目 + /** + * 为了打包springboot项目 + * @param builder + * @return + */ + @Override protected SpringApplicationBuilder configure( SpringApplicationBuilder builder) { return builder.sources(this.getClass()); diff --git a/src/main/java/com/jmfy/controller/OrderInfoController.java b/src/main/java/com/jmfy/controller/OrderInfoController.java index d312c36..b89e6f6 100644 --- a/src/main/java/com/jmfy/controller/OrderInfoController.java +++ b/src/main/java/com/jmfy/controller/OrderInfoController.java @@ -49,7 +49,7 @@ public class OrderInfoController { private static final Logger LOGGER = LoggerFactory.getLogger(OrderInfoController.class); @RequestMapping(value = "/getOrder", method = {RequestMethod.POST, RequestMethod.GET}) - public String getOrder(HttpServletRequest request, ModelMap map ) throws Exception { + public String getOrder(HttpServletRequest request, ModelMap map) throws Exception { HashMap parameterMap = JsonUtil.getInstence().getParameterMap(request); long startTime = DateUtil.timeToStamp(parameterMap.get("startTime").replace("T"," ")); long endTime = DateUtil.timeToStamp(parameterMap.get("endTime").replace("T"," ")); diff --git a/src/main/java/com/jmfy/controller/ServerInfoController.java b/src/main/java/com/jmfy/controller/ServerInfoController.java index e92764b..9edec91 100644 --- a/src/main/java/com/jmfy/controller/ServerInfoController.java +++ b/src/main/java/com/jmfy/controller/ServerInfoController.java @@ -18,16 +18,18 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.ResponseBody; +import javax.annotation.PostConstruct; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpSession; -import java.io.*; -import java.text.SimpleDateFormat; import java.util.ArrayList; -import java.util.Date; +import java.util.HashMap; import java.util.List; +import java.util.Map; +/** + * @author hj + */ @Controller public class ServerInfoController { private static final Logger LOGGER = LoggerFactory.getLogger(ServerInfoController.class); @@ -39,6 +41,16 @@ public class ServerInfoController { @Resource private AutoServerManager autoServerManager; + /** + * 各服参数 + */ + private static ExpiryMap serverStatus = new ExpiryMap<>(); + /** + * 游戏服端口状态 + * key: 服务器id + * value : [0]:游戏服端口状态, [1]:支付端口状态 + */ + private static ExpiryMap portStatusMap = new ExpiryMap<>(); /** * 服务器信息界面 * @param map @@ -46,41 +58,83 @@ public class ServerInfoController { * @throws Exception */ @RequestMapping(value = "/findServerInfo", method = {RequestMethod.POST, RequestMethod.GET}) - public String loginVerify(ModelMap map) throws Exception { + public String loginVerify(ModelMap map, int quick) throws Exception { List serverInfos = serverInfoDao.getAllServerInfo(); List serverInfoVos = new ArrayList<>(); + // 端口验证 + if (quick == 1){ + // 更新端口状态 + ThreadPoolManager.getInstance().execute(this::portListenHandler); + } for (ServerInfo serverInfo : serverInfos) { if (null == serverInfo.getServer_id()) { continue; } -// LOGGER.info("==============服务器信息:{}",serverInfo.toString()); - ServerInfoVo serverInfoVo = new ServerInfoVo(); - serverInfoVo.setServer_id(serverInfo.getServer_id()); - serverInfoVo.setName(serverInfo.getName()); - serverInfoVo.setStatus(Integer.valueOf(serverInfo.getStatus())); - if(serverInfo.getIs_new()!=null){ - serverInfoVo.setIsnew(Integer.valueOf(serverInfo.getIs_new())); - } - CServerOpenTime cServerOpenTime = serverInfoDao.getOpenServerTime(serverInfo.getServer_id()); - if (null != cServerOpenTime) { - serverInfoVo.setOpen_time(cServerOpenTime.getOpenTime()); - serverInfoVo.setVersion(cServerOpenTime.getVersion()); - serverInfoVo.setRestartTime(cServerOpenTime.getRestartTime()); - } - serverInfoVo.setIp_port(serverInfo.getIp()+":"+serverInfo.getPort()); - - String openT = "手动开服"; - AutoServerSetting setting = RedisUtil.getInstence().getMapValue(RedisUserKey.AUTO_START_SERVER_SETTING, "1", "1", AutoServerSetting.class, -1); - if (setting != null && "1".equals(setting.getState())){ - openT = "1".equals(setting.getChoose())?"按量开服":"自动开服"; - } - serverInfoVo.setOpen_type(openT); + ServerInfoVo serverInfoVo = createServerVo(serverInfo,quick); serverInfoVos.add(serverInfoVo); } map.addAttribute("serverInfos", serverInfoVos); return "findServerInfo"; } + /** + * 获取服务器开启状态 + * @param serverId + * @param quick 0:走缓存, 1:不走缓存 + * @return + * @throws Exception + */ + public CServerOpenTime getServerOpenTime(String serverId,int quick) throws Exception { + CServerOpenTime openTime = serverStatus.get(serverId); + if (openTime != null && quick == 0){ + return openTime; + } + CServerOpenTime cServerOpenTime = serverInfoDao.getOpenServerTime(serverId); + if (cServerOpenTime == null){ + return null; + } + serverStatus.put(serverId,cServerOpenTime,DateUtil.ONE_HOUR); + return cServerOpenTime; + } + + /** + * 创建服务器包装类 + * @param serverInfo + * @param quick + * @return + * @throws Exception + */ + private ServerInfoVo createServerVo(ServerInfo serverInfo,int quick) throws Exception { + ServerInfoVo vo = new ServerInfoVo(serverInfo); + // ip+端口 + vo.setIpAndPort(serverInfo.getIp()+":"+serverInfo.getPort()); + // 服务器配置,开服时间,重启时间,版本号 + CServerOpenTime openTime = getServerOpenTime(serverInfo.getServer_id(), quick); + if (openTime != null){ + vo.setOpenTime(openTime.getOpenTime()); + vo.setRestartTime(openTime.getRestartTime()); + vo.setVersion(openTime.getVersion()); + } + // 开服方法 + String openType = "手动开服"; + AutoServerSetting setting = RedisUtil.getInstence().getMapValue(RedisUserKey.AUTO_START_SERVER_SETTING, "1", "1", AutoServerSetting.class, -1); + if (setting != null && "1".equals(setting.getState())){ + openType = "1".equals(setting.getChoose())?"按量开服":"自动开服"; + } + vo.setOpenType(openType); + + int[] ints = portStatusMap.get(serverInfo.getServer_id()); + if (ints != null){ + // 游戏端口 + int gamePort = ints.length>0?ints[0]:-1; + vo.setGamePortState(gamePort); + // 支付端口 + int payPort = ints.length>1?ints[1]:-1; + vo.setPayPortState(payPort); + } + return vo; + } + /** * 编辑服务器 * @param map @@ -91,14 +145,17 @@ public class ServerInfoController { @RequestMapping(value = "/toServerInfoEdit", method = {RequestMethod.POST, RequestMethod.GET}) public String toServerInfoEdit(ModelMap map, int id) throws Exception { ServerInfo serverInfo = serverInfoDao.getServerinfo(String.valueOf(id)); - CServerOpenTime cServerOpenTime = serverInfoDao.getOpenServerTime(serverInfo.getServer_id()); - if (null != cServerOpenTime) { - serverInfo.setOpen_time(cServerOpenTime.getOpenTime()); - } - map.addAttribute("serverInfo", serverInfo); + ServerInfoVo vo = createServerVo(serverInfo, 0); + map.addAttribute("serverInfo", vo); return "serverInfoEdit"; } + /** + * 删除服务器 + * @param request + * @return + * @throws Exception + */ @RequestMapping(value = "/deleteServer", method = {RequestMethod.POST, RequestMethod.GET}) public @ResponseBody int deleteServer(HttpServletRequest request) throws Exception { @@ -168,17 +225,19 @@ public class ServerInfoController { */ @RequestMapping(value = "/serverListEdit", method = {RequestMethod.POST, RequestMethod.GET}) public @ResponseBody int toServerListEdit(HttpServletRequest request) throws Exception { - int status = Integer.parseInt(request.getParameter("status")); String serverId = request.getParameter("serverId"); // 校验服务器状态 String[] serverIds = serverId.split(","); - for (String str:serverIds){ - ServerInfo info = serverInfoDao.getServerinfo(str); - if (info != null && ServerStatusEnum.NOT_OPERATE.getId() == Integer.parseInt(info.getStatus())){ + Map allServerMap = serverInfoDao.getAllServerMap(); + for (String id : serverIds) { + ServerInfo info = allServerMap.get(id); + // 存在未运行状态的服务器不能批量修改 + if (info != null && Integer.parseInt(info.getStatus()) == ServerStatusEnum.NOT_OPERATE.getId()){ return 0; } } // 修改服务器状态 + int status = Integer.parseInt(request.getParameter("status")); for (String str:serverIds){ serverInfoDao.updateServerInfo(str, status); } @@ -196,13 +255,17 @@ public class ServerInfoController { continue; } ServerInfoVo serverInfoVo = new ServerInfoVo(); + // 服务器id serverInfoVo.setServer_id(serverInfo.getServer_id()); + // 注册人数 long registerNum = serverInfoDao.getRegisterNum(serverInfo.getServer_id()); totalRegisterNum += registerNum; serverInfoVo.setRegisterNum(registerNum); + // 在线人数 long onlineNum = serverInfoDao.getOnlineNum(serverInfo.getServer_id()); totalOnlineNum += onlineNum; serverInfoVo.setOnlineNum(onlineNum); + serverInfoVos.add(serverInfoVo); } ServerInfoVo serverInfoVo = new ServerInfoVo(); @@ -257,4 +320,84 @@ public class ServerInfoController { RedisUtil.getInstence().putMapEntry(RedisUserKey.AUTO_START_SERVER_SETTING, "1", "1", setting, -1); return 1; } + + /** + * 端口监听状态处理 + * @throws Exception + */ + public void portListenHandler(){ + long start = DateUtil.now(); + // 脚本 + String shell = "sh /data/jieling/port.sh"; + Process exec = null; + try { + // 获取全部服务器列表 + Map allServerMap = serverInfoDao.getAllServerMap(); + //一台物理机可以配置多个游戏服 key:ip value:serverids + HashMap> map = new HashMap<>(); + for (ServerInfo value : allServerMap.values()) { + List list = map.getOrDefault(value.getIp(), new ArrayList<>()); + list.add(value.getServer_id()); + map.put(value.getIp(),list); + } + for (Map.Entry> entry : map.entrySet()) { + String ip = entry.getKey(); + List serverIds = entry.getValue(); + // 游戏端口 + exec = Runtime.getRuntime().exec(shell + " " + ip + " 160"); + List gamePorts = AutoServerManager.readProcessOutput(exec); + exec = null; + // 支付端口 + exec = Runtime.getRuntime().exec(shell + " " + ip + " 180"); + List payPorts = AutoServerManager.readProcessOutput(exec); + + for (String serverId : serverIds) { + // 端口缓存 + int[] ports = portStatusMap.getOrDefault(serverId,new int[2]); + + // 游戏端口校验 + ServerInfo info = allServerMap.get(serverId); + ports[0] = checkPort(gamePorts, info.getPort())?1:0; + // 支付端口校验 + String payPort = getPayPort(info.getPort()); + ports[1] = checkPort(payPorts, payPort)?1:0; + // 缓存处理,半小时 + portStatusMap.put(serverId,ports,DateUtil.ONE_HOUR/2); + } + } + } catch (Exception e) { + LOGGER.error("服务器端口检测异常:"+e.getMessage()); + } finally { + if (exec != null) { + exec.destroy(); + } + } + LOGGER.error("检测游戏端口耗时:{}",DateUtil.now()-start); + } + + private String getPayPort(String gamePort){ + return "180"+gamePort.substring(3); + } + + /** + * 检测端口 + * @param strings + * @param port + * @return + */ + private boolean checkPort(List strings, String port){ + // 1,第一行日志无用,所以删除 + strings.remove(0); + ArrayList list = new ArrayList<>(); + for (String string : strings) { + // 2,用【tab】分割 + String[] split = string.split("\t"); + // 3,用【:】号分割 + String[] split1 = split[3].split(":"); + // 4,取最后一位,是端口号 + String s = split1[split1.length - 1]; + list.add(s); + } + return list.contains(port); + } } diff --git a/src/main/java/com/jmfy/dao/ServerInfoDao.java b/src/main/java/com/jmfy/dao/ServerInfoDao.java index 7e1b1a1..551194e 100644 --- a/src/main/java/com/jmfy/dao/ServerInfoDao.java +++ b/src/main/java/com/jmfy/dao/ServerInfoDao.java @@ -7,10 +7,13 @@ import com.jmfy.model.gameName; import org.springframework.data.mongodb.core.MongoTemplate; import java.util.List; +import java.util.Map; public interface ServerInfoDao { List getAllServerInfo() throws Exception; + Map getAllServerMap() throws Exception; + List getAllGameInfo() throws Exception; ServerInfo getServerinfo(String id) throws Exception; diff --git a/src/main/java/com/jmfy/dao/impl/ServerInfoDaoImpl.java b/src/main/java/com/jmfy/dao/impl/ServerInfoDaoImpl.java index 9adb2e3..1d3f73e 100644 --- a/src/main/java/com/jmfy/dao/impl/ServerInfoDaoImpl.java +++ b/src/main/java/com/jmfy/dao/impl/ServerInfoDaoImpl.java @@ -15,6 +15,8 @@ import org.springframework.stereotype.Component; import javax.annotation.Resource; import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; @Component public class ServerInfoDaoImpl implements ServerInfoDao { @@ -31,6 +33,14 @@ public class ServerInfoDaoImpl implements ServerInfoDao { return mongoTemplate.find(query, ServerInfo.class); } + @Override + public Map getAllServerMap() throws Exception { + MongoTemplate mongoTemplate = connect.getMongoTemplete(dbName); + Query query = new Query(); + List serverInfos = mongoTemplate.find(query, ServerInfo.class); + return serverInfos.stream().collect(Collectors.toMap(ServerInfo::getServer_id, v -> v)); + } + @Override public List getAllGameInfo() throws Exception { MongoTemplate mongoTemplate = connect.getMongoTemplete(dbName); diff --git a/src/main/java/com/jmfy/model/ServerInfo.java b/src/main/java/com/jmfy/model/ServerInfo.java index 73e943d..40608b4 100644 --- a/src/main/java/com/jmfy/model/ServerInfo.java +++ b/src/main/java/com/jmfy/model/ServerInfo.java @@ -50,27 +50,15 @@ public class ServerInfo implements Comparable,Cloneable { @Field(value = "plat") private String plat; - @Field(value = "open_time") - private String open_time; - @Field(value = "is_new") private String is_new; - /** - * 服务器启动类型 0手动开启 1 按时 2 按量 - */ - @Field(value = "open_type") - private String open_type; - @Field(value = "register_state") private String register_state; @Field(value = "coreName") private String coreName; - @Field(value = "server_version") - private int server_version; - @Field(value = "isWhite") private String isWhite; @@ -155,14 +143,6 @@ public class ServerInfo implements Comparable,Cloneable { this.plat = plat; } - public String getOpen_time() { - return open_time; - } - - public void setOpen_time(String open_time) { - this.open_time = open_time; - } - public String getIs_new() { return is_new==null?"0":is_new; } @@ -171,14 +151,6 @@ public class ServerInfo implements Comparable,Cloneable { this.is_new = is_new; } - public String getOpen_type() { - return open_type==null?"0":open_type; - } - - public void setOpen_type(String open_type) { - this.open_type = open_type; - } - public String getRegister_state() { return register_state==null?"1":register_state; } public void setRegister_state(String register_state) { this.register_state = register_state; } @@ -191,14 +163,6 @@ public class ServerInfo implements Comparable,Cloneable { this.coreName = coreName; } - public int getServer_version() { - return server_version; - } - - public void setServer_version(int server_version) { - this.server_version = server_version; - } - public String getIsWhite() { return isWhite; } @@ -219,12 +183,9 @@ public class ServerInfo implements Comparable,Cloneable { ", sub_channel='" + sub_channel + '\'' + ", status='" + status + '\'' + ", plat='" + plat + '\'' + - ", open_time='" + open_time + '\'' + ", is_new='" + is_new + '\'' + - ", open_type='" + open_type + '\'' + ", register_state='" + register_state + '\'' + ", coreName='" + coreName + '\'' + - ", server_version='" + server_version + '\'' + ", isWhite='" + isWhite + '\'' + '}'; } diff --git a/src/main/java/com/jmfy/model/vo/PowersEnum.java b/src/main/java/com/jmfy/model/vo/PowersEnum.java index bdef8d1..b28fd9e 100644 --- a/src/main/java/com/jmfy/model/vo/PowersEnum.java +++ b/src/main/java/com/jmfy/model/vo/PowersEnum.java @@ -14,7 +14,7 @@ public enum PowersEnum { // 服务器管理200-299 SERVER_MANAGER(200,"服务器管理",200,1,""), - SERVER_INFO(201,"服务器信息",200,1,"findServerInfo"), + SERVER_INFO(201,"服务器信息",200,1,"findServerInfo?quick=0"), SERVER_REGISTER(202,"服务器注册查询",200,1,"serverNumberInfo"), ADD_SERVER(203,"添加服务器",200,1,"/html/addServer.html"), ALL_SERVER_SETTING(204,"全服配置",200,1,"serverCfgInfo"), diff --git a/src/main/java/com/jmfy/model/vo/ServerInfoVo.java b/src/main/java/com/jmfy/model/vo/ServerInfoVo.java index 5ffa35b..d3a7540 100644 --- a/src/main/java/com/jmfy/model/vo/ServerInfoVo.java +++ b/src/main/java/com/jmfy/model/vo/ServerInfoVo.java @@ -1,72 +1,79 @@ package com.jmfy.model.vo; -public class ServerInfoVo{ +import com.jmfy.model.ServerInfo; - public String server_id; - public String ip_port; - public String name; - public String open_time; - public String open_type; - public int status; - public int is_new; - public long registerNum; - public long onlineNum; - private int version; +public class ServerInfoVo extends ServerInfo { + /** + * ip和端口 + */ + private String ipAndPort; + /** + * 开服时间 + */ + private String openTime; + /** + * 重启时间 + */ private String restartTime; + /** + * 版本号 + */ + private int version; + /** + * 开启类型 + */ + private String openType; + /** + * 注册人数 + */ + private long registerNum; + /** + * 在线人数 + */ + private long onlineNum; + /** + * 游戏端口状态 + */ + private int gamePortState = -1; + + /** + * 支付端口状态 + */ + private int payPortState = -1; + + public ServerInfoVo(){ - public void setIsnew(int isnew) { - this.is_new = isnew; } - public void setServer_id(String server_id) { - this.server_id = server_id; + public ServerInfoVo(ServerInfo serverInfo){ + this.setName(serverInfo.getName()); + this.setIp(serverInfo.getIp()); + this.setPort(serverInfo.getPort()); + this.setServer_id(serverInfo.getServer_id()); + this.setChannel(serverInfo.getChannel()); + this.setSub_channel(serverInfo.getSub_channel()); + this.setStatus(serverInfo.getStatus()); + this.setPlat(serverInfo.getPlat()); + this.setIs_new(serverInfo.getIs_new()); + this.setRegister_state(serverInfo.getRegister_state()); + this.setCoreName(serverInfo.getCoreName()); + this.setIsWhite(serverInfo.getIsWhite()); } - public void setName(String name) { - this.name = name; + public String getIpAndPort() { + return ipAndPort; } - public void setOpen_time(String open_time) { - this.open_time = open_time; + public void setIpAndPort(String ipAndPort) { + this.ipAndPort = ipAndPort; } - public void setStatus(int status) { - this.status = status; + public String getOpenTime() { + return openTime; } - public void setRegisterNum(long registerNum) { - this.registerNum = registerNum; - } - - public void setOnlineNum(long onlineNum) { - this.onlineNum = onlineNum; - } - - public String getOpen_type() { - return open_type; - } - - public void setOpen_type(String open_type) { - this.open_type = open_type; - } - - public String getIp_port() { - return ip_port; - } - public long getOnlineNum(){ - return onlineNum; - } - - public void setIp_port(String ip_port) { - this.ip_port = ip_port; - } - - public int getVersion() { - return version; - } - - public void setVersion(int version) { - this.version = version; + public void setOpenTime(String openTime) { + this.openTime = openTime; } public String getRestartTime() { @@ -77,20 +84,66 @@ public class ServerInfoVo{ this.restartTime = restartTime; } + public String getOpenType() { + return openType; + } + + public void setOpenType(String openType) { + this.openType = openType; + } + + public long getRegisterNum() { + return registerNum; + } + + public void setRegisterNum(long registerNum) { + this.registerNum = registerNum; + } + + public long getOnlineNum() { + return onlineNum; + } + + public void setOnlineNum(long onlineNum) { + this.onlineNum = onlineNum; + } + + public int getGamePortState() { + return gamePortState; + } + + public void setGamePortState(int gamePortState) { + this.gamePortState = gamePortState; + } + + public int getPayPortState() { + return payPortState; + } + + public void setPayPortState(int payPortState) { + this.payPortState = payPortState; + } + + public int getVersion() { + return version; + } + + public void setVersion(int version) { + this.version = version; + } + @Override public String toString() { return "ServerInfoVo{" + - "server_id='" + server_id + '\'' + - ", ip_port='" + ip_port + '\'' + - ", name='" + name + '\'' + - ", open_time='" + open_time + '\'' + - ", open_type='" + open_type + '\'' + - ", status=" + status + - ", is_new=" + is_new + + "ipAndPort='" + ipAndPort + '\'' + + ", openTime='" + openTime + '\'' + + ", restartTime='" + restartTime + '\'' + + ", version=" + version + + ", openType='" + openType + '\'' + ", registerNum=" + registerNum + ", onlineNum=" + onlineNum + - ", version='" + version + '\'' + - ", restartTime='" + restartTime + '\'' + + ", gamePortState=" + gamePortState + + ", payPortState=" + payPortState + '}'; } } diff --git a/src/main/java/com/jmfy/redisProperties/RedisUserKey.java b/src/main/java/com/jmfy/redisProperties/RedisUserKey.java index 0aa92ab..948f819 100644 --- a/src/main/java/com/jmfy/redisProperties/RedisUserKey.java +++ b/src/main/java/com/jmfy/redisProperties/RedisUserKey.java @@ -35,7 +35,10 @@ public class RedisUserKey { * 在线人数 updata/min */ public static final String ONLINE_NUM = "ONLINE_NUM"; - + /** + * 游戏支付端口 + */ + public static final String GAME_PAY_URL = "GAME_PAY_URL:"; public static String getKey(String type, String key, int serverId) { if (serverId!=0) { diff --git a/src/main/java/com/jmfy/utils/AutoServerManager.java b/src/main/java/com/jmfy/utils/AutoServerManager.java index ee03bc7..329bb90 100644 --- a/src/main/java/com/jmfy/utils/AutoServerManager.java +++ b/src/main/java/com/jmfy/utils/AutoServerManager.java @@ -14,6 +14,7 @@ import org.springframework.stereotype.Component; import javax.annotation.Resource; import java.io.*; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Optional; @@ -271,11 +272,11 @@ public class AutoServerManager { * * @param process 进程 */ - private static void readProcessOutput(final Process process) { + public static List readProcessOutput(final Process process) { // 将进程的正常输出在 System.out 中打印,进程的错误输出在 System.err 中打印 - read(process.getInputStream(), System.out); + List read = read(process.getInputStream(), System.out); read(process.getErrorStream(), System.err); - + return read; } /** @@ -284,11 +285,13 @@ public class AutoServerManager { * @param inputStream * @param out */ - private static void read(InputStream inputStream, PrintStream out) { + private static List read(InputStream inputStream, PrintStream out) { + ArrayList strings = new ArrayList<>(); try { BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream)); String line; while ((line = reader.readLine()) != null) { + strings.add(line); out.println(line); } } catch (IOException e) { @@ -300,5 +303,6 @@ public class AutoServerManager { e.printStackTrace(); } } + return strings; } } diff --git a/src/main/resources/static/html/addServer.html b/src/main/resources/static/html/addServer.html index 1752e2d..ba3ac02 100644 --- a/src/main/resources/static/html/addServer.html +++ b/src/main/resources/static/html/addServer.html @@ -122,24 +122,6 @@ -
- -
- -
-
- -
- -
- -
-
-
-
- -
- -
-
-
- +
@@ -56,7 +56,7 @@ * 结束时间:
- +
diff --git a/src/main/resources/templates/findServerInfo.html b/src/main/resources/templates/findServerInfo.html index 986338d..441223d 100644 --- a/src/main/resources/templates/findServerInfo.html +++ b/src/main/resources/templates/findServerInfo.html @@ -25,13 +25,15 @@ 服务器列表信息 -

服务器信息

@@ -61,41 +63,52 @@ ip:port 开启类型 服务器名字 - 开启时间 + 开服时间 服务器状态 新服推荐 版本号 上次重启时间 + 游戏端口状态(160*) + 支付端口状态(180*) 操作 - - - - - - + + + + + + 未运营 已关闭 维护 流畅 拥挤 - 爆满 + 爆满 - + 普通 新服推荐 - - - + + + + 检测失败 + 关闭 + 开启 + + + 检测失败 + 关闭 + 开启 + - + 修改 - @@ -132,11 +145,13 @@ ] }); + // 单个修改服务器 function editServer(obj) { var serverId = $(obj).attr("id"); window.location = "/toServerInfoEdit?id=" + serverId; } + // 删除服务器列表 function deleteServer(obj) { var serverId = $(obj).attr("id"); var msg = "请问是否要删除该服务器:{"+serverId+"},\n\n请确认!"; @@ -150,7 +165,7 @@ success: function (data) { if (data === 1) { alert("操作成功"); - window.location.href = '/findServerInfo'; + window.location.href = '/findServerInfo?quick=0'; } if (data === 0) { alert("删除失败"); @@ -165,6 +180,7 @@ } } + // 批量修改服务器状态 function updateServers() { var serverId = $("#serverId").val().toString(); var status2 = $("#status2").val().toString(); @@ -178,7 +194,7 @@ success: function (data) { if (data === 1) { alert("操作成功"); - window.location.href = '/findServerInfo'; + window.location.href = '/findServerInfo?quick=0'; } if (data === 0) { alert("服务器存在未运营状态,操作失败"); diff --git a/src/main/resources/templates/getAllWhite.html b/src/main/resources/templates/getAllWhite.html index cf21351..9aa8510 100644 --- a/src/main/resources/templates/getAllWhite.html +++ b/src/main/resources/templates/getAllWhite.html @@ -25,7 +25,7 @@ > 白名单信息 > 白名单信息 + href="javascript:location.replace('/findServerInfo?quick=0');" title="刷新">

删除白名单

diff --git a/src/main/resources/templates/secretVolumeEdit.html b/src/main/resources/templates/secretVolumeEdit.html index 2e7d8cd..8b1aced 100644 --- a/src/main/resources/templates/secretVolumeEdit.html +++ b/src/main/resources/templates/secretVolumeEdit.html @@ -34,7 +34,7 @@ 太初密卷 > 太初密卷信息 - +
diff --git a/src/main/resources/templates/serverInfoEdit.html b/src/main/resources/templates/serverInfoEdit.html index fb99e61..e9687e5 100644 --- a/src/main/resources/templates/serverInfoEdit.html +++ b/src/main/resources/templates/serverInfoEdit.html @@ -33,7 +33,7 @@ 服务器管理 > 服务器列表信息 - +
@@ -47,7 +47,7 @@ * 服务器id:
- +
@@ -55,7 +55,7 @@ * 服务器name:
- +
@@ -64,7 +64,7 @@ 服务器状态:
-
+
@@ -97,7 +97,7 @@ 服务器注册: