diff --git a/src/main/java/com/ljsd/controller/GetNoticeController.java b/src/main/java/com/ljsd/controller/GetNoticeController.java new file mode 100644 index 0000000..ff9ab6e --- /dev/null +++ b/src/main/java/com/ljsd/controller/GetNoticeController.java @@ -0,0 +1,59 @@ +package com.ljsd.controller; + +import com.google.gson.Gson; +import com.ljsd.pojo.ResMsg; +import com.ljsd.util.BaseGlobal; +import com.ljsd.util.MD5Util; +import com.ljsd.util.StringUtils; +import com.mongodb.DBObject; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.io.PrintWriter; +import java.util.HashMap; +import java.util.Map; + +public class GetNoticeController extends HttpServlet { + private static Gson gson = new Gson(); + + @Override + protected void doGet(HttpServletRequest req, HttpServletResponse response) throws ServletException, IOException { + response.setCharacterEncoding("UTF-8"); + response.setContentType("application/json; charset=utf-8"); + String timestamp = req.getParameter("timestamp"); + String sign = req.getParameter("sign"); + ResMsg resMsg = new ResMsg(); + resMsg.setCode(1); + try (PrintWriter out = response.getWriter();){ + if(StringUtils.checkIsEmpty(timestamp) || StringUtils.checkIsEmpty(sign)){ + resMsg.setMsg("参数不能为空"); + out.print(gson.toJson(resMsg)); + return; + } + String mySign = MD5Util.encrypByMd5(timestamp + MD5Util.salt); + if(!mySign.equals(sign)){ + resMsg.setMsg("签名错误"); + out.print(gson.toJson(resMsg)); + return; + } + DBObject notice = BaseGlobal.getInstance().mongoDBPool.findOne("notice_info", "1"); + resMsg.setCode(0); + resMsg.setCode(0); + resMsg.setMsg(""); + if(notice!=null){ + Map parms = new HashMap<>(); + Object content = notice.get("content"); + Object title = notice.get("title"); + parms.put("title",title.toString()); + parms.put("content",content.toString()); + resMsg.setParms(parms); + } + out.print(gson.toJson(resMsg)); + }catch (Exception e){ + e.printStackTrace(); + } + } +} diff --git a/src/main/java/com/ljsd/controller/GetUserController.java b/src/main/java/com/ljsd/controller/GetUserController.java index f5679d8..d0819b7 100644 --- a/src/main/java/com/ljsd/controller/GetUserController.java +++ b/src/main/java/com/ljsd/controller/GetUserController.java @@ -17,14 +17,17 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.PrintWriter; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Random; +import java.util.*; public class GetUserController extends HttpServlet { private final static String _COLLECTION_NAME = "user_info"; private static final Logger LOGGER = LoggerFactory.getLogger(GetUserController.class); + public static int isTestLan=0; + + public static void initLanState(){ + Properties properties = BaseGlobal.getInstance().properties; + isTestLan = Integer.parseInt(properties.getProperty("isTestLan")); + } public GetUserController() { super(); @@ -58,20 +61,27 @@ public class GetUserController extends HttpServlet { response.sendError(400, "platform is empety"); return; } - if(!"3".equals(platform)){ - boolean result = loginVerfify(platform, openId, token); - if(!result){ - response.sendError(400, "verify fail"); - return; - } - } - response.setCharacterEncoding("UTF-8"); - response.setContentType("application/json; charset=utf-8"); - DBObject dbObject = new BasicDBObject(); - dbObject.put("openId", openId); - dbObject.put("serverId", serverId); - dbObject.put("platform", platform); try { + if(isTestLan==1){ + boolean result = loginVerfifyByTestLan(openId, token); + if(!result){ + response.sendError(400, "verify fail"); + return; + } + }else if(!"3".equals(platform)){ + boolean result = loginVerfify(platform, openId, token); + if(!result){ + response.sendError(400, "verify fail"); + return; + } + } + response.setCharacterEncoding("UTF-8"); + response.setContentType("application/json; charset=utf-8"); + DBObject dbObject = new BasicDBObject(); + dbObject.put("openId", openId); + dbObject.put("serverId", serverId); + dbObject.put("platform", platform); + int uid = 0; List userInfos = BaseGlobal.getInstance().mongoDBPool.find(_COLLECTION_NAME, dbObject); DBObject res = new BasicDBObject(); @@ -132,6 +142,11 @@ public class GetUserController extends HttpServlet { } + public static boolean loginVerfifyByTestLan(String openId,String token) throws Exception { + String tokenInRedis = BaseGlobal.getInstance().redisApp.get(RedisKey.LOGIN_TOKEN, openId, String.class, -1); + return token.equals(tokenInRedis); + } + private static boolean parseLoginResult(String orderResult){ try { diff --git a/src/main/java/com/ljsd/controller/PublishNoticeController.java b/src/main/java/com/ljsd/controller/PublishNoticeController.java new file mode 100644 index 0000000..bcf2a17 --- /dev/null +++ b/src/main/java/com/ljsd/controller/PublishNoticeController.java @@ -0,0 +1,31 @@ +package com.ljsd.controller; + +import com.ljsd.util.BaseGlobal; +import com.mongodb.BasicDBObject; +import com.mongodb.DBObject; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.io.PrintWriter; + +public class PublishNoticeController extends HttpServlet { + @Override + protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + request.setCharacterEncoding("UTF-8"); + String content = request.getParameter("content"); + String title = request.getParameter("title"); + DBObject doc = new BasicDBObject(); + doc.put("_id", "1"); + doc.put("content", content); + doc.put("title", title); + BaseGlobal.getInstance().mongoDBPool.save("notice_info", doc); + response.setContentType("text/html"); + PrintWriter out = response.getWriter(); + out.println("add suc"); + out.flush(); + out.close(); + } +} diff --git a/src/main/java/com/ljsd/controller/RoutePublishNoticeController.java b/src/main/java/com/ljsd/controller/RoutePublishNoticeController.java new file mode 100644 index 0000000..54f15fe --- /dev/null +++ b/src/main/java/com/ljsd/controller/RoutePublishNoticeController.java @@ -0,0 +1,15 @@ +package com.ljsd.controller; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; + +public class RoutePublishNoticeController extends HttpServlet { + + @Override + protected void doGet(HttpServletRequest req, HttpServletResponse response) throws ServletException, IOException { + response.sendRedirect("updateNotice.jsp"); + } +} diff --git a/src/main/java/com/ljsd/controller/UserLoginController.java b/src/main/java/com/ljsd/controller/UserLoginController.java new file mode 100644 index 0000000..662c407 --- /dev/null +++ b/src/main/java/com/ljsd/controller/UserLoginController.java @@ -0,0 +1,78 @@ +package com.ljsd.controller; + +import com.google.gson.Gson; +import com.ljsd.pojo.ResMsg; +import com.ljsd.redis.RedisKey; +import com.ljsd.redis.RedisUtil; +import com.ljsd.util.BaseGlobal; +import com.ljsd.util.MD5Util; +import com.ljsd.util.StringUtils; +import com.mongodb.DBObject; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.io.PrintWriter; +import java.util.HashMap; +import java.util.Map; +import java.util.Random; + +public class UserLoginController extends HttpServlet { + private static Gson gson = new Gson(); + private static final String _COLLECTION_NAME = "user_register_info"; + + public void doGet(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + this.doPost(request, response); + } + @Override + protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + response.setCharacterEncoding("UTF-8"); + response.setContentType("application/json; charset=utf-8"); + String name = request.getParameter("userName"); + String password = request.getParameter("password"); + String sign = request.getParameter("sign"); + String returnMsg = "success"; + ResMsg resMsg = new ResMsg(); + resMsg.setCode(1); + try (PrintWriter out = response.getWriter();){ + if(StringUtils.checkIsEmpty(name) || StringUtils.checkIsEmpty(password) || StringUtils.checkIsEmpty(sign)){ + resMsg.setMsg("参数不能为空"); + out.print(gson.toJson(resMsg)); + return; + } + String mySign = MD5Util.encrypByMd5(name + password + MD5Util.salt); + if(!mySign.equals(sign)){ + resMsg.setMsg("签名错误"); + out.print(gson.toJson(resMsg)); + return; + } + DBObject one = BaseGlobal.getInstance().mongoDBPool.findOne(_COLLECTION_NAME, name); + if(one ==null){ + resMsg.setMsg("该账号不存在"); + resMsg.setMsg(returnMsg); + out.print(gson.toJson(resMsg)); + return; + } + Object passwordInDb = one.get("password"); + if(!password.equals(passwordInDb)){ + resMsg.setMsg("密码错误,请重试"); + out.print(gson.toJson(resMsg)); + return; + } + Map parms = new HashMap<>(); + parms.put("openId",one.get("openId").toString()); + int token = new Random().nextInt(1024) +10000; + parms.put("token",Integer.toString(token)); + BaseGlobal.getInstance().redisApp.set(RedisKey.LOGIN_TOKEN,name,token,-1, false); + resMsg.setCode(0); + resMsg.setMsg(returnMsg); + resMsg.setParms(parms); + out.print(gson.toJson(resMsg)); + }catch (Exception e){ + e.printStackTrace(); + } + } +} diff --git a/src/main/java/com/ljsd/controller/UserRegisterController.java b/src/main/java/com/ljsd/controller/UserRegisterController.java new file mode 100644 index 0000000..9b6f05c --- /dev/null +++ b/src/main/java/com/ljsd/controller/UserRegisterController.java @@ -0,0 +1,95 @@ +package com.ljsd.controller; + +import com.google.gson.Gson; +import com.ljsd.pojo.ResMsg; +import com.ljsd.util.BaseGlobal; +import com.ljsd.util.MD5Util; +import com.ljsd.util.StringUtils; +import com.mongodb.BasicDBObject; +import com.mongodb.DBObject; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.io.PrintWriter; +import java.util.Random; + +public class UserRegisterController extends HttpServlet { + + private static final String _COLLECTION_NAME = "user_register_info"; + private static Gson gson = new Gson(); + + public void doGet(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + this.doPost(request, response); + } + + @Override + protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + response.setCharacterEncoding("UTF-8"); + response.setContentType("application/json; charset=utf-8"); + String name = request.getParameter("userName"); + String password = request.getParameter("password"); + String repeat = request.getParameter("repeat"); + String sign = request.getParameter("sign"); + String returnMsg = "success"; + ResMsg resMsg = new ResMsg(); + resMsg.setCode(1); + try ( PrintWriter out = response.getWriter();){ + if(StringUtils.checkIsEmpty(name) || StringUtils.checkIsEmpty(password) || StringUtils.checkIsEmpty(repeat) || StringUtils.checkIsEmpty(sign) ){ + returnMsg = "输入不可以为空"; + resMsg.setMsg(returnMsg); + out.print(gson.toJson(resMsg)); + return; + } + if(!password.equals(repeat)){ + returnMsg = "两次密码输入不一致"; + resMsg.setMsg(returnMsg); + out.print(gson.toJson(resMsg)); + return; + } + if(!StringUtils.checkIsNumberOrChar(name)){ + resMsg.setMsg("用户名只能是数字或英文符号"); + out.print(gson.toJson(resMsg)); + return; + } + if(name.length()<2 || name.length()>6){ + resMsg.setMsg("用户名长度不符合"); + out.print(gson.toJson(resMsg)); + return; + } + + String mySign = MD5Util.encrypByMd5(name + password + MD5Util.salt); + if(!mySign.equals(sign)){ + resMsg.setMsg("签名错误"); + out.print(gson.toJson(resMsg)); + return; + } + + DBObject one = BaseGlobal.getInstance().mongoDBPool.findOne(_COLLECTION_NAME, name); + if(one!=null){ + resMsg.setMsg("该账号已被注册"); + out.print(gson.toJson(resMsg)); + return; + } + + DBObject doc = new BasicDBObject(); + doc.put("_id", name); + doc.put("password", password); + int random = new Random(1024).nextInt(); + String openId = MD5Util.encrypByMd5(mySign + random); + doc.put("openId", openId); + BaseGlobal.getInstance().mongoDBPool.save(_COLLECTION_NAME, doc); + resMsg.setCode(0); + resMsg.setMsg(returnMsg); + out.print(gson.toJson(resMsg)); + }catch (Exception e){ + e.printStackTrace(); + } + + + } + +} \ No newline at end of file diff --git a/src/main/java/com/ljsd/pojo/ResMsg.java b/src/main/java/com/ljsd/pojo/ResMsg.java new file mode 100644 index 0000000..917a748 --- /dev/null +++ b/src/main/java/com/ljsd/pojo/ResMsg.java @@ -0,0 +1,36 @@ +package com.ljsd.pojo; + +import java.util.Map; + +public class ResMsg { + + private int code; + + private String msg; + + private Map parms; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public String getMsg() { + return msg; + } + + public void setMsg(String msg) { + this.msg = msg; + } + + public Map getParms() { + return parms; + } + + public void setParms(Map parms) { + this.parms = parms; + } +} diff --git a/src/main/java/com/ljsd/redis/RedisKey.java b/src/main/java/com/ljsd/redis/RedisKey.java index a28744f..e5118b9 100644 --- a/src/main/java/com/ljsd/redis/RedisKey.java +++ b/src/main/java/com/ljsd/redis/RedisKey.java @@ -2,6 +2,7 @@ package com.ljsd.redis; public interface RedisKey { String TOKEN = "JL_TOKEN"; + String LOGIN_TOKEN = "JL_LOGIN_TOKEN"; /** * 最近登录服务器列表 diff --git a/src/main/java/com/ljsd/util/BaseGlobal.java b/src/main/java/com/ljsd/util/BaseGlobal.java index c304acf..42d56af 100644 --- a/src/main/java/com/ljsd/util/BaseGlobal.java +++ b/src/main/java/com/ljsd/util/BaseGlobal.java @@ -1,5 +1,6 @@ package com.ljsd.util; +import com.ljsd.controller.GetUserController; import com.ljsd.redis.RedisApp; import java.util.Properties; @@ -28,5 +29,6 @@ public class BaseGlobal { public void init() { mongoDBPool = new MyMongoDBPool(); redisApp = new RedisApp(); + GetUserController.initLanState(); } } diff --git a/src/main/java/com/ljsd/util/MD5Util.java b/src/main/java/com/ljsd/util/MD5Util.java new file mode 100644 index 0000000..58f16ce --- /dev/null +++ b/src/main/java/com/ljsd/util/MD5Util.java @@ -0,0 +1,37 @@ +package com.ljsd.util; + +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; + +public class MD5Util { + + public static final String salt = "d13b3e8ef74bf72d8aafce3a1c8672a0"; + + public static String encrypByMd5(String context) { + try { + MessageDigest md = MessageDigest.getInstance("MD5"); + md.update(context.getBytes());//update处理 + byte [] encryContext = md.digest();//调用该方法完成计算 + + int i; + StringBuffer buf = new StringBuffer(""); + for (int offset = 0; offset < encryContext.length; offset++) {//做相应的转化(十六进制) + i = encryContext[offset]; + if (i < 0) i += 256; + if (i < 16) buf.append("0"); + buf.append(Integer.toHexString(i)); + } + + return buf.toString().toLowerCase(); + + } catch (NoSuchAlgorithmException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + return ""; + } + + public static void main(String[] args) { + System.out.println(MD5Util.encrypByMd5("pc2222" + salt)); + } +} diff --git a/src/main/java/com/ljsd/util/StringUtils.java b/src/main/java/com/ljsd/util/StringUtils.java new file mode 100644 index 0000000..85a666e --- /dev/null +++ b/src/main/java/com/ljsd/util/StringUtils.java @@ -0,0 +1,17 @@ +package com.ljsd.util; + +public class StringUtils { + + + public static boolean checkIsEmpty(String source){ + if(source == null || "".equals(source)) + return true; + return false; + } + + public static boolean checkIsNumberOrChar(String source){ + return source.matches("[a-zA-Z0-9]+"); + } + + +} diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 6f6ac8a..94fca33 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -25,4 +25,6 @@ redis_maxTotal = 10 redis_minIdle = 3 redis_maxWaitMillis = 20 redis_maxIdle = 5 -redis_testOnBorrow = false \ No newline at end of file +redis_testOnBorrow = false + +isTestLan = 1 \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/web.xml b/src/main/webapp/WEB-INF/web.xml index 844a0df..f3b58f5 100644 --- a/src/main/webapp/WEB-INF/web.xml +++ b/src/main/webapp/WEB-INF/web.xml @@ -20,6 +20,36 @@ /index + + updateNotice + com.ljsd.controller.RoutePublishNoticeController + + + + updateNotice + /updateNotice + + + + publishNotice + com.ljsd.controller.PublishNoticeController + + + + publishNotice + /publishNotice + + + + getNotice + com.ljsd.controller.GetNoticeController + + + + getNotice + /getNotice + + getServerList com.ljsd.controller.GetServerListController @@ -50,6 +80,27 @@ /getUserInfo + + registerUser + com.ljsd.controller.UserRegisterController + + + + registerUser + /registerUser + + + + + userLogin + com.ljsd.controller.UserLoginController + + + + userLogin + /userLogin + + serverList com.ljsd.controller.ServerListController diff --git a/src/main/webapp/index.jsp b/src/main/webapp/index.jsp index e292b3d..d9c6b1d 100644 --- a/src/main/webapp/index.jsp +++ b/src/main/webapp/index.jsp @@ -39,7 +39,7 @@

《戒灵》添加服务器

-
+

name:

ip:

port:

diff --git a/src/main/webapp/updateNotice.jsp b/src/main/webapp/updateNotice.jsp new file mode 100644 index 0000000..01e7209 --- /dev/null +++ b/src/main/webapp/updateNotice.jsp @@ -0,0 +1,44 @@ + +<%@ page contentType="text/html;charset=UTF-8" language="java" %> + + + + + 《戒灵》发布公告 + + +
+

《戒灵》发布公告

+
+ +

name:

+

name:

+ + +
+
+ +