diff --git a/src/main/java/love/sola/netsupport/api/admin/DashBoard.java b/src/main/java/love/sola/netsupport/api/admin/DashBoard.java new file mode 100644 index 0000000..0f3e5ef --- /dev/null +++ b/src/main/java/love/sola/netsupport/api/admin/DashBoard.java @@ -0,0 +1,63 @@ +package love.sola.netsupport.api.admin; + +import com.google.gson.Gson; +import love.sola.netsupport.sql.SQLCore; +import love.sola.netsupport.util.Checker; +import love.sola.netsupport.wechat.Command; +import love.sola.netsupport.wechat.WechatSession; +import me.chanjar.weixin.common.session.InternalSession; +import me.chanjar.weixin.common.session.WxSession; + +import javax.servlet.ServletException; +import javax.servlet.annotation.WebServlet; +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.Enumeration; + +/** + * *********************************************** + * Created by Sola on 2015/12/15. + * Don't modify this source without my agreement + * *********************************************** + */ + +@WebServlet(name = "dashboard", urlPatterns = "/api/admin/dashboard", loadOnStartup = 41) +public class DashBoard extends HttpServlet { + + private Gson gson = SQLCore.gson; + + protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + doGet(request, response); + } + + @SuppressWarnings("Duplicates") + protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + request.setCharacterEncoding("utf-8"); + response.setCharacterEncoding("utf-8"); + response.addHeader("Content-type", "text/plain;charset=utf-8"); + PrintWriter out = response.getWriter(); + print(request, out); + out.close(); + } + + private void print(HttpServletRequest request, PrintWriter out) { + WxSession session = Checker.isAuthorized(request, Command.LOGIN); + if (session == null) { + out.println("Unauthorized"); + return; + } + for (InternalSession s : WechatSession.list()) { + out.println("=====" + s.getIdInternal() + "====="); + WxSession ws = s.getSession(); + Enumeration e = ws.getAttributeNames(); + while (e.hasMoreElements()) { + String key = e.nextElement(); + out.println(key + ": " + ws.getAttribute(key)); + } + } + } + +} diff --git a/src/main/java/love/sola/netsupport/pojo/Operator.java b/src/main/java/love/sola/netsupport/pojo/Operator.java index c7138be..fd7b1b6 100644 --- a/src/main/java/love/sola/netsupport/pojo/Operator.java +++ b/src/main/java/love/sola/netsupport/pojo/Operator.java @@ -1,8 +1,10 @@ package love.sola.netsupport.pojo; +import com.google.gson.annotations.Expose; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; +import lombok.ToString; import javax.persistence.Column; import javax.persistence.Entity; @@ -17,6 +19,7 @@ import javax.persistence.Table; */ @Data +@ToString(exclude = "password") @AllArgsConstructor @NoArgsConstructor @Entity @@ -33,9 +36,11 @@ public class Operator { @Column(name = "access", nullable = false, insertable = false, updatable = false) private Integer access; @Column(name = "wechat", insertable = false, updatable = false) + @Expose(serialize = false) private String wechat; private Integer block; private Integer week; + @Expose(serialize = false) private String password; diff --git a/src/main/java/love/sola/netsupport/pojo/User.java b/src/main/java/love/sola/netsupport/pojo/User.java index 429e84f..ba9b700 100644 --- a/src/main/java/love/sola/netsupport/pojo/User.java +++ b/src/main/java/love/sola/netsupport/pojo/User.java @@ -1,5 +1,6 @@ package love.sola.netsupport.pojo; +import com.google.gson.annotations.Expose; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @@ -34,6 +35,7 @@ public class User { private ISP isp; @Column(name = "netaccount") private String netAccount; + @Expose(serialize = false) @Column(name = "wechat") private String wechatId; private Integer block; diff --git a/src/main/java/love/sola/netsupport/sql/SQLCore.java b/src/main/java/love/sola/netsupport/sql/SQLCore.java index 0d01558..70b03f3 100644 --- a/src/main/java/love/sola/netsupport/sql/SQLCore.java +++ b/src/main/java/love/sola/netsupport/sql/SQLCore.java @@ -1,6 +1,7 @@ package love.sola.netsupport.sql; import com.google.gson.*; +import com.google.gson.annotations.Expose; import love.sola.netsupport.enums.ISP; import org.hibernate.SessionFactory; import org.hibernate.boot.MetadataSources; @@ -21,6 +22,30 @@ public class SQLCore { public static DataSource ds; public static Gson gson = new GsonBuilder() + .addSerializationExclusionStrategy(new ExclusionStrategy() { + @Override + public boolean shouldSkipField(FieldAttributes fieldAttributes) { + final Expose expose = fieldAttributes.getAnnotation(Expose.class); + return expose != null && !expose.serialize(); + } + + @Override + public boolean shouldSkipClass(Class aClass) { + return false; + } + }) + .addDeserializationExclusionStrategy(new ExclusionStrategy() { + @Override + public boolean shouldSkipField(FieldAttributes fieldAttributes) { + final Expose expose = fieldAttributes.getAnnotation(Expose.class); + return expose != null && !expose.deserialize(); + } + + @Override + public boolean shouldSkipClass(Class aClass) { + return false; + } + }) .registerTypeAdapter(Date.class, (JsonDeserializer) (json, typeOfT, context) -> new Date(json.getAsJsonPrimitive().getAsLong())) .registerTypeAdapter(Date.class, (JsonSerializer) (src, typeOfSrc, context) -> new JsonPrimitive(src.getTime())) .registerTypeAdapter(ISP.class, (JsonDeserializer) (json, typeOfT, context) -> ISP.fromId(json.getAsJsonPrimitive().getAsInt()))