15 Commits

Author SHA1 Message Date
Sola
18020df5c0 switch to HikariCP (#5) 2019-01-13 14:23:59 +08:00
Htroy
11f5cca1a2 Update block info 2018-12-06 05:14:24 +08:00
Sola
ecf741007f fix URLEncodeTest
Signed-off-by: Sola <dev@sola.love>
2018-09-19 14:16:08 +08:00
Sola
5009d64f5a move to next generation, 2015~2018
Signed-off-by: Sola <dev@sola.love>
2018-09-19 14:07:24 +08:00
Sola
008a1f5c5e fix ticket track
Signed-off-by: Sola <dev@sola.love>
2018-08-28 20:59:08 +08:00
Sola
97e5319e0f fix ticket log
Signed-off-by: Sola <dev@sola.love>
2018-08-28 20:54:46 +08:00
Sola
427c713e50 add deploy plugin
Signed-off-by: Sola <dev@sola.love>
2018-08-28 20:54:34 +08:00
Sola
9d59b2d1d3 minimalize .gitignore
Signed-off-by: Sola <dev@sola.love>
2018-08-28 19:03:07 +08:00
Sola
c8dd0d6306 Polish and reformatting
Signed-off-by: Sola <dev@sola.love>
2018-08-12 18:29:41 +08:00
Sola
4f3fbc2c91 polish
Signed-off-by: Sola <dev@sola.love>
2017-12-27 11:01:01 +08:00
Sola
0de1ce63d9 polish
Signed-off-by: Sola <dev@sola.love>
2017-12-27 10:59:50 +08:00
Sola
9ccd27d9d9 correct format
Signed-off-by: Sola <dev@sola.love>
2017-12-27 09:28:06 +08:00
Sola
2cbc843227 Merge remote-tracking branch 'origin/develop'
# Conflicts:
#	README.md
2017-12-15 10:18:28 +08:00
Sola
8d7d7d22e4 Merge branch 'develop'
# Conflicts:
#	README.md
2017-12-11 16:06:21 +08:00
Sola
6f11c7f965 Update README.md 2017-10-01 14:13:52 +08:00
68 changed files with 413 additions and 565 deletions

15
.editorconfig Normal file
View File

@@ -0,0 +1,15 @@
[*]
charset=utf-8
end_of_line=lf
trim_trailing_whitespace=true
insert_final_newline=true
indent_style=space
indent_size=4
[*.json]
indent_style=space
indent_size=2
[{*.ddl,*.sql}]
indent_style=space
indent_size=2

8
.gitignore vendored
View File

@@ -1,12 +1,4 @@
/buildNumber.properties
/docs
.idea/
out/
/.metadata/
/web/META-INF/context.xml
*.iml
~*
.DS_Store
.classpath
/target
.project

40
pom.xml
View File

@@ -5,7 +5,7 @@
<name>WechatTicketSystem</name>
<groupId>love.sola.netsupport</groupId>
<artifactId>WechatTicketSystem</artifactId>
<version>2.1-SNAPSHOT</version>
<version>2.2-SNAPSHOT</version>
<packaging>war</packaging>
<properties>
@@ -15,13 +15,6 @@
<target>1.8</target>
</properties>
<scm>
<connection>scm:svn:http://127.0.0.1/dummy</connection>
<developerConnection>scm:svn:https://127.0.0.1/dummy</developerConnection>
<tag>HEAD</tag>
<url>http://127.0.0.1/dummy</url>
</scm>
<build>
<plugins>
<plugin>
@@ -34,29 +27,16 @@
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>buildnumber-maven-plugin</artifactId>
<version>1.4</version>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<format>{0,number,0000}</format>
<items>
<item>buildNumber0</item>
</items>
<doCheck>false</doCheck>
<doUpdate>false</doUpdate>
<revisionOnScmFailure>unknown</revisionOnScmFailure>
<url>http://localhost:8080/manager/text</url>
<server>wwbx</server>
<path>/WechatTicketSystem</path>
</configuration>
<executions>
<execution>
<phase>validate</phase>
<goals>
<goal>create</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
<finalName>${project.artifactId}##${buildNumber}</finalName>
</build>
<dependencies>
@@ -108,9 +88,9 @@
<version>1.3.3</version>
</dependency>
<dependency>
<groupId>com.mchange</groupId>
<artifactId>c3p0</artifactId>
<version>0.9.5.1</version>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
<version>3.3.0</version>
</dependency>
<dependency>
<groupId>mysql</groupId>

View File

@@ -17,13 +17,14 @@
package love.sola.netsupport;
import java.io.IOException;
import java.io.PrintWriter;
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;
/**
* @author Sola {@literal <dev@sola.love>}

View File

@@ -17,14 +17,16 @@
package love.sola.netsupport.api;
import org.apache.commons.lang3.time.DateUtils;
import java.util.Calendar;
import java.util.Date;
import javax.servlet.http.HttpServletRequest;
import love.sola.netsupport.enums.Access;
import love.sola.netsupport.session.WxSession;
import love.sola.netsupport.wechat.Command;
import org.apache.commons.lang3.time.DateUtils;
import javax.servlet.http.HttpServletRequest;
import java.util.Calendar;
import java.util.Date;
/**
* @author Sola {@literal <dev@sola.love>}

View File

@@ -18,6 +18,23 @@
package love.sola.netsupport.api;
import com.google.gson.Gson;
import org.hibernate.HibernateException;
import org.reflections.Reflections;
import java.io.IOException;
import java.io.PrintWriter;
import java.text.ParseException;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
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 love.sola.netsupport.enums.Access;
import love.sola.netsupport.enums.Attribute;
import love.sola.netsupport.pojo.Operator;
@@ -25,20 +42,6 @@ import love.sola.netsupport.pojo.User;
import love.sola.netsupport.session.WechatSession;
import love.sola.netsupport.session.WxSession;
import love.sola.netsupport.sql.SQLCore;
import org.hibernate.HibernateException;
import org.reflections.Reflections;
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.text.ParseException;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
/**
* @author Sola {@literal <dev@sola.love>}

View File

@@ -17,14 +17,15 @@
package love.sola.netsupport.api;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import love.sola.netsupport.enums.Access;
import love.sola.netsupport.enums.Attribute;
import love.sola.netsupport.session.WxSession;
import javax.servlet.http.HttpServletRequest;
import java.util.HashMap;
import java.util.Map;
/**
* @author Sola {@literal <dev@sola.love>}
*/

View File

@@ -18,6 +18,16 @@
package love.sola.netsupport.api;
import com.google.gson.Gson;
import java.io.IOException;
import java.io.PrintWriter;
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 love.sola.netsupport.enums.Access;
import love.sola.netsupport.enums.Attribute;
import love.sola.netsupport.pojo.Operator;
@@ -28,17 +38,8 @@ import love.sola.netsupport.sql.SQLCore;
import love.sola.netsupport.sql.TableOperator;
import love.sola.netsupport.sql.TableUser;
import love.sola.netsupport.util.Crypto;
import love.sola.netsupport.util.RSAUtil;
import love.sola.netsupport.wechat.Command;
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;
/**
* @author Sola {@literal <dev@sola.love>}
*/
@@ -73,7 +74,7 @@ public class Login extends HttpServlet {
else if (op.getAccess() >= Access.NO_LOGIN)
return Error.PERMISSION_DENIED;
if (!Crypto.check(bypass ? password : RSAUtil.decrypt(password), op.getPassword())) {
if (!Crypto.check(password, op.getPassword())) {
return Error.WRONG_PASSWORD;
}

View File

@@ -17,6 +17,8 @@
package love.sola.netsupport.api.manager;
import javax.servlet.http.HttpServletRequest;
import love.sola.netsupport.api.API;
import love.sola.netsupport.api.Error;
import love.sola.netsupport.enums.Access;
@@ -25,8 +27,6 @@ import love.sola.netsupport.session.WxSession;
import love.sola.netsupport.sql.TableUser;
import love.sola.netsupport.wechat.Command;
import javax.servlet.http.HttpServletRequest;
/**
* @author Sola {@literal <dev@sola.love>}
*/

View File

@@ -17,6 +17,10 @@
package love.sola.netsupport.api.manager;
import org.hibernate.Session;
import javax.servlet.http.HttpServletRequest;
import love.sola.netsupport.api.API;
import love.sola.netsupport.api.Error;
import love.sola.netsupport.config.Settings;
@@ -30,9 +34,6 @@ import love.sola.netsupport.session.WxSession;
import love.sola.netsupport.sql.SQLCore;
import love.sola.netsupport.util.Checker;
import love.sola.netsupport.wechat.Command;
import org.hibernate.Session;
import javax.servlet.http.HttpServletRequest;
/**
* @author Sola {@literal <dev@sola.love>}

View File

@@ -17,15 +17,16 @@
package love.sola.netsupport.api.root;
import java.util.Set;
import javax.servlet.http.HttpServletRequest;
import love.sola.netsupport.api.API;
import love.sola.netsupport.enums.Access;
import love.sola.netsupport.session.WechatSession;
import love.sola.netsupport.session.WxSession;
import love.sola.netsupport.wechat.Command;
import javax.servlet.http.HttpServletRequest;
import java.util.Set;
/**
* @author Sola {@literal <dev@sola.love>}
*/

View File

@@ -17,6 +17,8 @@
package love.sola.netsupport.api.root;
import javax.servlet.http.HttpServletRequest;
import love.sola.netsupport.api.API;
import love.sola.netsupport.api.Error;
import love.sola.netsupport.enums.Access;
@@ -24,8 +26,6 @@ import love.sola.netsupport.session.WxSession;
import love.sola.netsupport.sql.TableUser;
import love.sola.netsupport.wechat.Command;
import javax.servlet.http.HttpServletRequest;
/**
* @author Sola {@literal <dev@sola.love>}
*/

View File

@@ -17,6 +17,10 @@
package love.sola.netsupport.api.root;
import org.hibernate.Session;
import javax.servlet.http.HttpServletRequest;
import love.sola.netsupport.api.API;
import love.sola.netsupport.api.Error;
import love.sola.netsupport.enums.Access;
@@ -25,9 +29,6 @@ import love.sola.netsupport.session.WxSession;
import love.sola.netsupport.sql.SQLCore;
import love.sola.netsupport.util.Crypto;
import love.sola.netsupport.wechat.Command;
import org.hibernate.Session;
import javax.servlet.http.HttpServletRequest;
/**
* @author Sola {@literal <dev@sola.love>}

View File

@@ -20,6 +20,7 @@ package love.sola.netsupport.api.stuff;
import love.sola.netsupport.api.API;
import love.sola.netsupport.enums.Access;
import love.sola.netsupport.pojo.Ticket;
import love.sola.netsupport.pojo.User;
import love.sola.netsupport.session.WxSession;
import love.sola.netsupport.sql.SQLCore;
import love.sola.netsupport.sql.TableTicket;
@@ -28,10 +29,12 @@ import org.apache.commons.lang3.time.DateUtils;
import org.hibernate.Session;
import org.hibernate.envers.AuditReader;
import org.hibernate.envers.query.AuditEntity;
import org.hibernate.proxy.HibernateProxy;
import javax.servlet.http.HttpServletRequest;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
/**
* @author Sola {@literal <dev@sola.love>}
@@ -46,6 +49,7 @@ public class TicketLog extends API {
authorize = Command.LOGIN;
}
@SuppressWarnings("unchecked")
@Override
protected Object process(HttpServletRequest req, WxSession session) throws Exception {
int first;
@@ -59,13 +63,14 @@ public class TicketLog extends API {
end = DateUtils.addDays(end, 1);
try (Session s = SQLCore.sf.openSession()) {
AuditReader reader = TableTicket.getAuditReader(s);
return reader.createQuery()
List<Object[]> resultList = reader.createQuery()
.forRevisionsOfEntity(Ticket.class, false, true)
.addOrder(AuditEntity.revisionNumber().desc())
.add(AuditEntity.revisionProperty("timestamp").between(start.getTime(), end.getTime()))
.setFirstResult(first)
.setMaxResults(limit)
.getResultList();
return TableTicket.initializeTickets(resultList);
}
}

View File

@@ -17,6 +17,8 @@
package love.sola.netsupport.api.stuff;
import javax.servlet.http.HttpServletRequest;
import love.sola.netsupport.api.API;
import love.sola.netsupport.enums.Access;
import love.sola.netsupport.enums.Attribute;
@@ -25,8 +27,6 @@ import love.sola.netsupport.session.WxSession;
import love.sola.netsupport.sql.TableTicket;
import love.sola.netsupport.wechat.Command;
import javax.servlet.http.HttpServletRequest;
/**
* @author Sola {@literal <dev@sola.love>}
*/

View File

@@ -17,6 +17,8 @@
package love.sola.netsupport.api.stuff;
import javax.servlet.http.HttpServletRequest;
import love.sola.netsupport.api.API;
import love.sola.netsupport.api.Error;
import love.sola.netsupport.enums.Access;
@@ -24,8 +26,6 @@ import love.sola.netsupport.session.WxSession;
import love.sola.netsupport.sql.TableTicket;
import love.sola.netsupport.wechat.Command;
import javax.servlet.http.HttpServletRequest;
/**
* @author Sola {@literal <dev@sola.love>}
*/

View File

@@ -17,6 +17,12 @@
package love.sola.netsupport.api.stuff;
import org.hibernate.Session;
import java.util.Date;
import javax.servlet.http.HttpServletRequest;
import love.sola.netsupport.api.API;
import love.sola.netsupport.api.Error;
import love.sola.netsupport.enums.Access;
@@ -27,10 +33,6 @@ import love.sola.netsupport.session.WxSession;
import love.sola.netsupport.sql.SQLCore;
import love.sola.netsupport.util.Checker;
import love.sola.netsupport.wechat.Command;
import org.hibernate.Session;
import javax.servlet.http.HttpServletRequest;
import java.util.Date;
/**
* @author Sola {@literal <dev@sola.love>}

View File

@@ -17,14 +17,6 @@
package love.sola.netsupport.api.stuff;
import love.sola.netsupport.api.API;
import love.sola.netsupport.api.Error;
import love.sola.netsupport.enums.Access;
import love.sola.netsupport.enums.Attribute;
import love.sola.netsupport.pojo.Operator;
import love.sola.netsupport.session.WxSession;
import love.sola.netsupport.sql.SQLCore;
import love.sola.netsupport.wechat.Command;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.time.DateUtils;
import org.hibernate.Criteria;
@@ -33,9 +25,19 @@ import org.hibernate.criterion.Restrictions;
import org.hibernate.type.IntegerType;
import org.hibernate.type.Type;
import javax.servlet.http.HttpServletRequest;
import java.util.Date;
import javax.servlet.http.HttpServletRequest;
import love.sola.netsupport.api.API;
import love.sola.netsupport.api.Error;
import love.sola.netsupport.enums.Access;
import love.sola.netsupport.enums.Attribute;
import love.sola.netsupport.pojo.Operator;
import love.sola.netsupport.session.WxSession;
import love.sola.netsupport.sql.SQLCore;
import love.sola.netsupport.wechat.Command;
/**
* @author Sola
*/

View File

@@ -17,6 +17,10 @@
package love.sola.netsupport.api.user;
import org.hibernate.exception.ConstraintViolationException;
import javax.servlet.http.HttpServletRequest;
import love.sola.netsupport.api.API;
import love.sola.netsupport.api.Error;
import love.sola.netsupport.enums.Access;
@@ -26,11 +30,12 @@ import love.sola.netsupport.pojo.User;
import love.sola.netsupport.session.WxSession;
import love.sola.netsupport.sql.TableUser;
import love.sola.netsupport.wechat.Command;
import org.hibernate.exception.ConstraintViolationException;
import javax.servlet.http.HttpServletRequest;
import static love.sola.netsupport.util.Checker.*;
import static love.sola.netsupport.util.Checker.checkBlock;
import static love.sola.netsupport.util.Checker.checkISP;
import static love.sola.netsupport.util.Checker.checkNetAccount;
import static love.sola.netsupport.util.Checker.checkPhoneNumber;
import static love.sola.netsupport.util.Checker.checkRoom;
/**
* @author Sola {@literal <dev@sola.love>}

View File

@@ -17,6 +17,10 @@
package love.sola.netsupport.api.user;
import org.hibernate.exception.ConstraintViolationException;
import javax.servlet.http.HttpServletRequest;
import love.sola.netsupport.api.API;
import love.sola.netsupport.api.Error;
import love.sola.netsupport.enums.Access;
@@ -26,11 +30,13 @@ import love.sola.netsupport.pojo.User;
import love.sola.netsupport.session.WxSession;
import love.sola.netsupport.sql.TableUser;
import love.sola.netsupport.wechat.Command;
import org.hibernate.exception.ConstraintViolationException;
import javax.servlet.http.HttpServletRequest;
import static love.sola.netsupport.util.Checker.*;
import static love.sola.netsupport.util.Checker.checkBlock;
import static love.sola.netsupport.util.Checker.checkISP;
import static love.sola.netsupport.util.Checker.checkNetAccount;
import static love.sola.netsupport.util.Checker.checkPhoneNumber;
import static love.sola.netsupport.util.Checker.checkRoom;
import static love.sola.netsupport.util.Checker.checkStudentId;
/**
* @author Sola {@literal <dev@sola.love>}
@@ -73,7 +79,8 @@ public class Register extends API {
User user = TableUser.getById(sid);
if (user == null) return Error.INVALID_PARAMETER.withMsg("Invalid_Student_Id");
if (!user.getName().equals(name)) return Error.INVALID_PARAMETER.withMsg("Invalid_Name");
if (user.getWechatId() != null) return Error.INVALID_PARAMETER.withMsg("User_Already_Registered");
if (user.getWechatId() != null)
return Error.INVALID_PARAMETER.withMsg("User_Already_Registered");
user.setIsp(isp);
user.setNetAccount(netAccount);
user.setBlock(block);

View File

@@ -17,6 +17,13 @@
package love.sola.netsupport.api.user;
import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;
import javax.servlet.http.HttpServletRequest;
import love.sola.netsupport.api.API;
import love.sola.netsupport.enums.Access;
import love.sola.netsupport.enums.Attribute;
@@ -25,12 +32,6 @@ import love.sola.netsupport.pojo.User;
import love.sola.netsupport.session.WxSession;
import love.sola.netsupport.sql.SQLCore;
import love.sola.netsupport.wechat.Command;
import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;
import javax.servlet.http.HttpServletRequest;
/**
* @author Sola {@literal <dev@sola.love>}

View File

@@ -17,6 +17,10 @@
package love.sola.netsupport.api.user;
import org.hibernate.Session;
import javax.servlet.http.HttpServletRequest;
import love.sola.netsupport.api.API;
import love.sola.netsupport.api.Error;
import love.sola.netsupport.config.Settings;
@@ -28,9 +32,6 @@ import love.sola.netsupport.session.WxSession;
import love.sola.netsupport.sql.SQLCore;
import love.sola.netsupport.sql.TableTicket;
import love.sola.netsupport.wechat.Command;
import org.hibernate.Session;
import javax.servlet.http.HttpServletRequest;
/**
* @author Sola {@literal <dev@sola.love>}

View File

@@ -17,12 +17,9 @@
package love.sola.netsupport.auth;
import love.sola.netsupport.session.WechatSession;
import love.sola.netsupport.session.WxSession;
import love.sola.netsupport.util.Checker;
import love.sola.netsupport.wechat.WxMpServlet;
import me.chanjar.weixin.mp.api.WxMpService;
import me.chanjar.weixin.mp.bean.result.WxMpOAuth2AccessToken;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.AsyncContext;
import javax.servlet.ServletException;
@@ -30,9 +27,13 @@ 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.util.HashMap;
import java.util.Map;
import love.sola.netsupport.session.WechatSession;
import love.sola.netsupport.session.WxSession;
import love.sola.netsupport.util.Checker;
import love.sola.netsupport.wechat.WxMpServlet;
import me.chanjar.weixin.mp.api.WxMpService;
import me.chanjar.weixin.mp.bean.result.WxMpOAuth2AccessToken;
/**
* @author Sola {@literal <dev@sola.love>}

View File

@@ -17,11 +17,11 @@
package love.sola.netsupport.auth;
import love.sola.netsupport.session.WxSession;
import javax.servlet.AsyncContext;
import javax.servlet.http.HttpServletResponse;
import love.sola.netsupport.session.WxSession;
/**
* @author Sola {@literal <dev@sola.love>}
*/

View File

@@ -1,59 +0,0 @@
/*
* This file is part of WechatTicketSystem.
*
* WechatTicketSystem is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* WechatTicketSystem is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with WechatTicketSystem. If not, see <http://www.gnu.org/licenses/>.
*/
package love.sola.netsupport.config;
import org.yaml.snakeyaml.Yaml;
import java.io.InputStream;
import java.util.List;
import java.util.Map;
import java.util.regex.Pattern;
/**
* @author Sola {@literal <dev@sola.love>}
*/
public class Cortana {
public static List<Compiled> entries;
public static void load() {
InputStream in = Lang.class.getClassLoader().getResourceAsStream("cortana.yml");
RawConfig root = new Yaml().loadAs(in, RawConfig.class);
}
static class Compiled {
Pattern[] patterns;
String[] replies;
}
public static class Rule {
String[] regexp;
String[] replies;
public Rule() {
}
}
public static class RawConfig {
Map<String, Rule> rules;
public RawConfig() {
}
}
}

View File

@@ -1,41 +0,0 @@
/*
* This file is part of WechatTicketSystem.
*
* WechatTicketSystem is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* WechatTicketSystem is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with WechatTicketSystem. If not, see <http://www.gnu.org/licenses/>.
*/
package love.sola.netsupport.config;
import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.annotations.XStreamAlias;
import me.chanjar.weixin.common.util.xml.XStreamInitializer;
import me.chanjar.weixin.mp.api.WxMpInMemoryConfigStorage;
import java.io.InputStream;
/**
* @author chanjarster
*/
@XStreamAlias("wechat-config")
public class WxMpXmlInMemoryConfigStorage extends WxMpInMemoryConfigStorage {
@SuppressWarnings("unchecked")
public static <T> T fromXml(Class<T> clazz, InputStream is) {
XStream xstream = XStreamInitializer.getInstance();
xstream.alias("wechat-config", clazz);
xstream.processAnnotations(clazz);
return (T) xstream.fromXML(is);
}
}

View File

@@ -83,6 +83,8 @@ public class Block {
// @formatter:off
// -------------------------------------------- //
// THANKS DATA PROVIDED BY Lai Juncheng
// -------------------------------------------- //
// UPDATE 2018:BS was destroyed.Update by HTroy
// -------------------------------------------- //
AVAILABLE[FX_1] = new int[]{108, 208, 308, 408, 508};
AVAILABLE[FX_2] = new int[]{110, 210, 310, 410, 510, 610};
@@ -109,16 +111,16 @@ public class Block {
AVAILABLE[XH_C] = new int[]{126, 226, 326, 426, 526, 626, 726, 826, 926, 1026, 1126, 1226};
AVAILABLE[XH_D] = new int[]{128, 228, 328, 428, 528, 628, 728, 828, 928, 1028, 1128, 1228};
AVAILABLE[FX_6] = new int[0];
AVAILABLE[BS_1] = new int[]{102, 203, 301};
AVAILABLE[BS_2] = new int[]{102, 203, 301};
AVAILABLE[BS_3] = new int[]{103, 203, 302};
AVAILABLE[BS_4] = new int[]{102, 203, 301};
AVAILABLE[BS_5] = new int[]{102, 203, 301};
AVAILABLE[BS_6] = new int[]{102, 203, 302};
AVAILABLE[BS_7] = new int[]{102, 203, 301};
AVAILABLE[BS_8] = new int[]{102, 203, 301};
AVAILABLE[BS_9] = new int[]{103, 203, 302};
AVAILABLE[ZH] = new int[]{199, 299, 399, 499, 599, 699, 799, 899, 999, 1099, 1199, 1299, 1399};
AVAILABLE[BS_1] = new int[0];
AVAILABLE[BS_2] = new int[0];
AVAILABLE[BS_3] = new int[0];
AVAILABLE[BS_4] = new int[0];
AVAILABLE[BS_5] = new int[0];
AVAILABLE[BS_6] = new int[0];
AVAILABLE[BS_7] = new int[0];
AVAILABLE[BS_8] = new int[0];
AVAILABLE[BS_9] = new int[0];
AVAILABLE[ZH] = new int[]{199, 299, 399, 499, 599, 699, 799, 899, 999, 1099, 1199, 1299, 1399, 1499};
// @formatter:on
}

View File

@@ -30,7 +30,8 @@ public enum ISP {
TELECOM(1, "^1[3|4|5|7|8][0-9]{9}$"),
UNICOM(2, "ZSZJLAN[0-9]{10}@16900\\.gd"),
CHINAMOBILE(3, "^1[3|4|5|7|8][0-9]{9}@139\\.gd$"),
OTHER(4, ".*"),;
OTHER(4, ".*"),
;
private static final Map<String, ISP> NAME_MAP = new HashMap<>();
private static final Map<Integer, ISP> ID_MAP = new HashMap<>();

View File

@@ -17,13 +17,22 @@
package love.sola.netsupport.pojo;
import love.sola.netsupport.sql.TableTicket;
import org.hibernate.envers.Audited;
import org.hibernate.envers.RelationTargetAuditMode;
import javax.persistence.*;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import love.sola.netsupport.sql.TableTicket;
/**
* @author Sola {@literal <dev@sola.love>}
*/
@@ -47,7 +56,7 @@ public class Ticket {
private Date submitTime;
private String remark;
private Date updateTime;
@ManyToOne(optional = true)
@ManyToOne
@JoinColumn(name = TableTicket.COLUMN_OPSID)
private Operator operator;
private Integer status;

View File

@@ -3,9 +3,18 @@ package love.sola.netsupport.pojo;
import org.hibernate.annotations.ColumnDefault;
import org.hibernate.annotations.DynamicInsert;
import javax.persistence.*;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Index;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
/**
* @author Sola {@literal <dev@sola.love>}
*/

View File

@@ -18,11 +18,16 @@
package love.sola.netsupport.pojo;
import com.google.gson.annotations.Expose;
import javax.persistence.Column;
import javax.persistence.Convert;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
import love.sola.netsupport.enums.ISP;
import love.sola.netsupport.enums.ISPConverter;
import javax.persistence.*;
/**
* @author Sola {@literal <dev@sola.love>}
*/

View File

@@ -33,7 +33,11 @@
package love.sola.netsupport.session;
import java.io.Serializable;
import java.util.*;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
import java.util.UUID;
/**
* @author Sola {@literal <dev@sola.love>}

View File

@@ -35,13 +35,16 @@ package love.sola.netsupport.session;
import com.google.common.cache.CacheBuilder;
import com.google.common.cache.CacheLoader;
import com.google.common.cache.LoadingCache;
import love.sola.netsupport.config.Settings;
import org.apache.commons.lang3.Validate;
import javax.annotation.Nonnull;
import java.util.Map;
import java.util.concurrent.TimeUnit;
import javax.annotation.Nonnull;
import love.sola.netsupport.config.Settings;
/**
* @author Sola {@literal <dev@sola.love>}
*/

View File

@@ -17,14 +17,21 @@
package love.sola.netsupport.sql;
import com.google.gson.*;
import com.google.gson.ExclusionStrategy;
import com.google.gson.FieldAttributes;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonDeserializer;
import com.google.gson.JsonPrimitive;
import com.google.gson.JsonSerializer;
import com.google.gson.TypeAdapter;
import com.google.gson.TypeAdapterFactory;
import com.google.gson.annotations.Expose;
import com.google.gson.reflect.TypeToken;
import com.google.gson.stream.JsonReader;
import com.google.gson.stream.JsonWriter;
import com.mchange.v2.c3p0.ComboPooledDataSource;
import love.sola.netsupport.enums.ISP;
import love.sola.netsupport.wechat.Command;
import org.hibernate.Hibernate;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
@@ -35,11 +42,15 @@ import org.hibernate.envers.AuditReaderFactory;
import org.hibernate.proxy.HibernateProxy;
import org.hibernate.service.ServiceRegistry;
import java.io.IOException;
import java.util.Date;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;
import java.io.IOException;
import java.util.Date;
import love.sola.netsupport.enums.ISP;
import love.sola.netsupport.wechat.Command;
/**
* @author Sola {@literal <dev@sola.love>}
@@ -146,7 +157,7 @@ public class SQLCore {
// Get the TypeAdapter of the original class, to delegate the serialization
TypeAdapter delegate = context.getAdapter(TypeToken.get(baseType));
// Get a filled instance of the original class
Object unproxiedValue = ((HibernateProxy) value).getHibernateLazyInitializer()
Object unproxiedValue = value.getHibernateLazyInitializer()
.getImplementation();
// Serialize the value
delegate.write(out, unproxiedValue);

View File

@@ -17,9 +17,13 @@
package love.sola.netsupport.sql;
import love.sola.netsupport.config.Settings;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.*;
import love.sola.netsupport.config.Settings;
/**
* @author Sola {@literal <dev@sola.love>}

View File

@@ -17,11 +17,12 @@
package love.sola.netsupport.sql;
import love.sola.netsupport.pojo.Operator;
import org.hibernate.Session;
import org.hibernate.criterion.Projections;
import org.hibernate.criterion.Restrictions;
import love.sola.netsupport.pojo.Operator;
/**
* @author Sola {@literal <dev@sola.love>}
*/

View File

@@ -17,9 +17,7 @@
package love.sola.netsupport.sql;
import love.sola.netsupport.enums.Status;
import love.sola.netsupport.pojo.Ticket;
import love.sola.netsupport.pojo.User;
import love.sola.netsupport.pojo.Operator;
import org.hibernate.Session;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Projections;
@@ -29,6 +27,11 @@ import org.hibernate.envers.query.AuditEntity;
import java.util.List;
import love.sola.netsupport.enums.Status;
import love.sola.netsupport.pojo.Ticket;
import love.sola.netsupport.pojo.User;
import org.hibernate.proxy.HibernateProxy;
/**
* @author Sola {@literal <dev@sola.love>}
*/
@@ -104,13 +107,35 @@ public class TableTicket extends SQLCore {
public static List<Object[]> track(int tid) {
try (Session s = SQLCore.sf.openSession()) {
AuditReader reader = getAuditReader(s);
return reader.createQuery()
List<Object[]> resultList = reader.createQuery()
.forRevisionsOfEntity(Ticket.class, false, true)
.addOrder(AuditEntity.revisionNumber().desc())
.add(AuditEntity.id().eq(tid))
.getResultList()
;
.getResultList();
return initializeTickets(resultList);
}
}
/**
* this is a hacky method to initialize all related entities of ticket
*/
public static List<Object[]> initializeTickets(List<Object[]> resultList) {
for (Object[] result : resultList) {
Ticket value = ((Ticket) result[0]);
HibernateProxy proxiedUser = (HibernateProxy) value.getUser();
if (proxiedUser != null) {
User unproxiedUser = ((User) proxiedUser.getHibernateLazyInitializer()
.getImplementation());
value.setUser(unproxiedUser);
}
HibernateProxy proxiedOperator = (HibernateProxy) value.getOperator();
if (proxiedOperator != null) {
Operator unproxiedOperator = ((Operator) proxiedOperator.getHibernateLazyInitializer()
.getImplementation());
value.setOperator(unproxiedOperator);
}
}
return resultList;
}
}

View File

@@ -20,14 +20,16 @@ package love.sola.netsupport.sql;
import com.google.common.cache.CacheBuilder;
import com.google.common.cache.CacheLoader;
import com.google.common.cache.LoadingCache;
import love.sola.netsupport.config.Settings;
import love.sola.netsupport.pojo.User;
import org.hibernate.Session;
import org.hibernate.criterion.Restrictions;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
import love.sola.netsupport.config.Settings;
import love.sola.netsupport.pojo.User;
/**
* @author Sola {@literal <dev@sola.love>}
*/

View File

@@ -25,7 +25,7 @@ import love.sola.netsupport.enums.ISP;
*/
public class Checker {
public static final String STUDENT_ID_REGEX = "^(2014|2015|2016|2017)[0-9]{9}$";
public static final String STUDENT_ID_REGEX = "^(2015|2016|2017|2018)[0-9]{9}$";
public static final String PHONE_NUMBER_REGEX = "^1[34578][0-9]{9}$";
public static boolean hasNull(Object... v) {

View File

@@ -17,11 +17,11 @@
package love.sola.netsupport.util;
import java.text.SimpleDateFormat;
import love.sola.netsupport.enums.Status;
import love.sola.netsupport.pojo.Ticket;
import java.text.SimpleDateFormat;
import static love.sola.netsupport.config.Lang.lang;
/**
@@ -38,7 +38,8 @@ public class ParseUtil {
.append(lang("Ticket_Info_Submit_Time")).append(dateFormat.format(t.getSubmitTime())).append("\n");
if (t.getOperator() != null)
sb.append(lang("Ticket_Info_Operator")).append(t.getOperator().getId()).append("\n");
if (t.getRemark() != null) sb.append(lang("Ticket_Info_Remark")).append(t.getRemark()).append("\n");
if (t.getRemark() != null)
sb.append(lang("Ticket_Info_Remark")).append(t.getRemark()).append("\n");
if (t.getUpdateTime() != null)
sb.append(lang("Ticket_Info_Update_Time")).append(dateFormat.format(t.getUpdateTime())).append("\n");
sb.append(lang("Ticket_Info_Status")).append(Status.getLocalized(t.getStatus()));

View File

@@ -1,81 +0,0 @@
/*
* This file is part of WechatTicketSystem.
*
* WechatTicketSystem is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* WechatTicketSystem is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with WechatTicketSystem. If not, see <http://www.gnu.org/licenses/>.
*/
package love.sola.netsupport.util;
import org.apache.commons.codec.binary.Base64;
import javax.crypto.Cipher;
import java.nio.charset.StandardCharsets;
import java.security.Key;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
/**
* @author Sola {@literal <dev@sola.love>}
*/
public class RSAUtil {
public static Key publicKey;
public static Key privateKey;
public static String publicKey_s;
public static String privateKey_s;
static {
genKeyPair();
}
public static void genKeyPair() {
try {
KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA");
kpg.initialize(1024);
KeyPair kp = kpg.genKeyPair();
publicKey = kp.getPublic();
privateKey = kp.getPrivate();
publicKey_s = Base64.encodeBase64String(publicKey.getEncoded());
privateKey_s = Base64.encodeBase64String(privateKey.getEncoded());
} catch (Exception e) {
e.printStackTrace();
}
}
public static String encrypt(String value) {
try {
Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.ENCRYPT_MODE, publicKey);
byte[] encrypted = cipher.doFinal(value.getBytes(StandardCharsets.UTF_8));
return Base64.encodeBase64String(encrypted);
} catch (Exception ex) {
ex.printStackTrace();
}
return null;
}
public static String decrypt(String encrypted) {
try {
Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.DECRYPT_MODE, privateKey);
byte[] original = cipher.doFinal(Base64.decodeBase64(encrypted));
return new String(original, StandardCharsets.UTF_8);
} catch (Exception ex) {
ex.printStackTrace();
}
return null;
}
}

View File

@@ -19,9 +19,10 @@ package love.sola.netsupport.util;
import com.google.common.net.UrlEscapers;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import javax.servlet.http.HttpServletResponse;
import static love.sola.netsupport.config.Lang.lang;
/**
@@ -115,7 +116,8 @@ public class Redirect {
WARN("weui_icon_warn"),
WARN_SAFE("weui_icon_safe_warn"),
DOWNLOAD("weui_icon_download"),
CANCEL("weui_icon_cancel"),;
CANCEL("weui_icon_cancel"),
;
private String value;

View File

@@ -17,15 +17,19 @@
package love.sola.netsupport.wechat;
import love.sola.netsupport.wechat.handler.*;
import java.util.HashMap;
import java.util.Map;
import love.sola.netsupport.wechat.handler.CancelHandler;
import love.sola.netsupport.wechat.handler.ProfileHandler;
import love.sola.netsupport.wechat.handler.QueryHandler;
import love.sola.netsupport.wechat.handler.RegisterHandler;
import love.sola.netsupport.wechat.handler.SubmitHandler;
import love.sola.netsupport.wechat.handler.admin.LoginHandler;
import love.sola.netsupport.wechat.handler.admin.OperatorInfoHandler;
import love.sola.netsupport.wechat.handler.admin.SignHandler;
import me.chanjar.weixin.mp.api.WxMpMessageHandler;
import java.util.HashMap;
import java.util.Map;
import static love.sola.netsupport.config.Lang.lang;
/**

View File

@@ -17,6 +17,14 @@
package love.sola.netsupport.wechat;
import java.io.IOException;
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 love.sola.netsupport.auth.OAuth2;
import love.sola.netsupport.auth.OAuth2Handler;
import love.sola.netsupport.config.Settings;
@@ -27,17 +35,14 @@ import love.sola.netsupport.wechat.matcher.CheckSpamMatcher;
import love.sola.netsupport.wechat.matcher.RegisterMatcher;
import me.chanjar.weixin.common.api.WxConsts;
import me.chanjar.weixin.common.util.StringUtils;
import me.chanjar.weixin.mp.api.*;
import me.chanjar.weixin.mp.api.WxMpInMemoryConfigStorage;
import me.chanjar.weixin.mp.api.WxMpMessageHandler;
import me.chanjar.weixin.mp.api.WxMpMessageRouter;
import me.chanjar.weixin.mp.api.WxMpService;
import me.chanjar.weixin.mp.api.WxMpServiceImpl;
import me.chanjar.weixin.mp.bean.WxMpXmlMessage;
import me.chanjar.weixin.mp.bean.WxMpXmlOutMessage;
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 static love.sola.netsupport.config.Lang.lang;
/**

View File

@@ -17,6 +17,8 @@
package love.sola.netsupport.wechat.handler;
import java.util.Map;
import me.chanjar.weixin.common.exception.WxErrorException;
import me.chanjar.weixin.common.session.WxSessionManager;
import me.chanjar.weixin.mp.api.WxMpMessageHandler;
@@ -24,8 +26,6 @@ import me.chanjar.weixin.mp.api.WxMpService;
import me.chanjar.weixin.mp.bean.WxMpXmlMessage;
import me.chanjar.weixin.mp.bean.WxMpXmlOutMessage;
import java.util.Map;
/**
* @author Sola {@literal <dev@sola.love>}
*/

View File

@@ -17,6 +17,11 @@
package love.sola.netsupport.wechat.handler;
import org.hibernate.Session;
import java.util.Date;
import java.util.Map;
import love.sola.netsupport.enums.Status;
import love.sola.netsupport.pojo.Operator;
import love.sola.netsupport.pojo.Ticket;
@@ -33,10 +38,6 @@ import me.chanjar.weixin.mp.bean.WxMpXmlMessage;
import me.chanjar.weixin.mp.bean.WxMpXmlOutMessage;
import me.chanjar.weixin.mp.bean.WxMpXmlOutNewsMessage;
import me.chanjar.weixin.mp.bean.outxmlbuilder.NewsBuilder;
import org.hibernate.Session;
import java.util.Date;
import java.util.Map;
import static love.sola.netsupport.config.Lang.lang;

View File

@@ -17,6 +17,11 @@
package love.sola.netsupport.wechat.handler;
import java.util.Map;
import javax.servlet.AsyncContext;
import javax.servlet.http.HttpServletResponse;
import love.sola.netsupport.auth.OAuth2Handler;
import love.sola.netsupport.enums.Attribute;
import love.sola.netsupport.pojo.User;
@@ -33,10 +38,6 @@ import me.chanjar.weixin.mp.bean.WxMpXmlMessage;
import me.chanjar.weixin.mp.bean.WxMpXmlOutMessage;
import me.chanjar.weixin.mp.bean.outxmlbuilder.TextBuilder;
import javax.servlet.AsyncContext;
import javax.servlet.http.HttpServletResponse;
import java.util.Map;
import static love.sola.netsupport.config.Lang.format;
import static love.sola.netsupport.config.Lang.lang;

View File

@@ -17,6 +17,8 @@
package love.sola.netsupport.wechat.handler;
import java.util.Map;
import love.sola.netsupport.enums.Attribute;
import love.sola.netsupport.pojo.Ticket;
import love.sola.netsupport.pojo.User;
@@ -35,8 +37,6 @@ import me.chanjar.weixin.mp.bean.WxMpXmlOutMessage;
import me.chanjar.weixin.mp.bean.WxMpXmlOutNewsMessage;
import me.chanjar.weixin.mp.bean.outxmlbuilder.NewsBuilder;
import java.util.Map;
import static love.sola.netsupport.config.Lang.format;
import static love.sola.netsupport.config.Lang.lang;

View File

@@ -17,6 +17,8 @@
package love.sola.netsupport.wechat.handler;
import java.util.Map;
import love.sola.netsupport.enums.Attribute;
import love.sola.netsupport.pojo.User;
import love.sola.netsupport.session.WechatSession;
@@ -31,8 +33,6 @@ import me.chanjar.weixin.mp.bean.WxMpXmlMessage;
import me.chanjar.weixin.mp.bean.WxMpXmlOutMessage;
import me.chanjar.weixin.mp.bean.outxmlbuilder.TextBuilder;
import java.util.Map;
import static love.sola.netsupport.config.Lang.format;
/**

View File

@@ -17,6 +17,8 @@
package love.sola.netsupport.wechat.handler;
import java.util.Map;
import love.sola.netsupport.enums.Attribute;
import love.sola.netsupport.pojo.User;
import love.sola.netsupport.session.WechatSession;
@@ -33,8 +35,6 @@ import me.chanjar.weixin.mp.bean.WxMpXmlOutMessage;
import me.chanjar.weixin.mp.bean.WxMpXmlOutNewsMessage;
import me.chanjar.weixin.mp.bean.outxmlbuilder.NewsBuilder;
import java.util.Map;
import static love.sola.netsupport.config.Lang.format;
import static love.sola.netsupport.config.Lang.lang;

View File

@@ -17,6 +17,8 @@
package love.sola.netsupport.wechat.handler;
import java.util.Map;
import love.sola.netsupport.enums.Attribute;
import love.sola.netsupport.pojo.Operator;
import love.sola.netsupport.pojo.User;
@@ -33,8 +35,6 @@ import me.chanjar.weixin.mp.bean.WxMpXmlMessage;
import me.chanjar.weixin.mp.bean.WxMpXmlOutMessage;
import me.chanjar.weixin.mp.bean.outxmlbuilder.TextBuilder;
import java.util.Map;
import static love.sola.netsupport.config.Lang.format;
/**

View File

@@ -17,6 +17,11 @@
package love.sola.netsupport.wechat.handler.admin;
import java.util.Map;
import javax.servlet.AsyncContext;
import javax.servlet.http.HttpServletResponse;
import love.sola.netsupport.auth.OAuth2Handler;
import love.sola.netsupport.enums.Access;
import love.sola.netsupport.enums.Attribute;
@@ -34,10 +39,6 @@ import me.chanjar.weixin.mp.bean.WxMpXmlMessage;
import me.chanjar.weixin.mp.bean.WxMpXmlOutMessage;
import me.chanjar.weixin.mp.bean.outxmlbuilder.TextBuilder;
import javax.servlet.AsyncContext;
import javax.servlet.http.HttpServletResponse;
import java.util.Map;
import static love.sola.netsupport.config.Lang.format;
import static love.sola.netsupport.config.Lang.lang;

View File

@@ -17,6 +17,8 @@
package love.sola.netsupport.wechat.handler.admin;
import java.util.Map;
import love.sola.netsupport.pojo.Operator;
import love.sola.netsupport.sql.TableOperator;
import me.chanjar.weixin.common.exception.WxErrorException;
@@ -27,8 +29,6 @@ import me.chanjar.weixin.mp.bean.WxMpXmlMessage;
import me.chanjar.weixin.mp.bean.WxMpXmlOutMessage;
import me.chanjar.weixin.mp.bean.outxmlbuilder.TextBuilder;
import java.util.Map;
import static love.sola.netsupport.config.Lang.format;
import static love.sola.netsupport.config.Lang.lang;

View File

@@ -17,6 +17,14 @@
package love.sola.netsupport.wechat.handler.admin;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import love.sola.netsupport.sql.SQLCore;
import me.chanjar.weixin.common.exception.WxErrorException;
import me.chanjar.weixin.common.session.WxSessionManager;
@@ -26,14 +34,6 @@ import me.chanjar.weixin.mp.bean.WxMpXmlMessage;
import me.chanjar.weixin.mp.bean.WxMpXmlOutMessage;
import me.chanjar.weixin.mp.bean.outxmlbuilder.TextBuilder;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* @author Sola {@literal <dev@sola.love>}
* @deprecated limited time only

View File

@@ -20,12 +20,13 @@ package love.sola.netsupport.wechat.matcher;
import com.google.common.cache.CacheBuilder;
import com.google.common.cache.CacheLoader;
import com.google.common.cache.LoadingCache;
import java.util.concurrent.TimeUnit;
import love.sola.netsupport.config.Settings;
import me.chanjar.weixin.mp.api.WxMpMessageMatcher;
import me.chanjar.weixin.mp.bean.WxMpXmlMessage;
import java.util.concurrent.TimeUnit;
/**
* @author Sola {@literal <dev@sola.love>}
*/

View File

@@ -17,13 +17,13 @@
package love.sola.netsupport.wechat.matcher;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import love.sola.netsupport.wechat.Command;
import me.chanjar.weixin.mp.api.WxMpMessageMatcher;
import me.chanjar.weixin.mp.bean.WxMpXmlMessage;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
/**
* @author Sola {@literal <dev@sola.love>}
*/

View File

@@ -1,11 +1,9 @@
<?xml version='1.0' encoding='utf-8'?>
<!--
<?xml version='1.0' encoding='utf-8'?><!--
~ Hibernate, Relational Persistence for Idiomatic Java
~
~ License: GNU Lesser General Public License (LGPL), version 2.1 or later.
~ See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
-->
<!DOCTYPE hibernate-configuration PUBLIC
--><!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
@@ -28,7 +26,8 @@
<property name="dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property>
<!-- Disable the second-level cache -->
<property name="cache.provider_class">org.hibernate.cache.internal.NoCacheProvider</property>
<property name="cache.provider_class">org.hibernate.cache.internal.NoCacheProvider
</property>
<!-- Echo all executed SQL to stdout -->
<property name="show_sql">true</property>

View File

@@ -62,7 +62,7 @@ Operator_Info: |
网维ID: {0,number,#}
姓名: {1}
岗位: {2,choice,0#'Administrator >ω<'|3#值班组长|6#正式成员|7#实习成员|9#'曾经的一员(TдT)'}
值班片区: {3,choice,0#'全图 >ω<'|1#岐头片区|2#北门片区|3#东门片区|4#香灰片区|5#凤翔片区}
值班片区: {3,choice,0#'全图 >ω<'|1#岐头片区|2#北门片区|3#东门片区|4#香灰片区|5#凤翔片区|8#朝晖片区}
值班日: {4,choice,0#'2月30日 >ω<'|1#周一|2#周二|3#周三|4#周四|5#周五|6#周六|7#周日}
若以上信息有误,请及时联系@15-沙子森。

View File

@@ -1,6 +0,0 @@
<wechat-config>
<appId>****</appId>
<secret>****</secret>
<token>****</token>
<aesKey>****</aesKey>
</wechat-config>

View File

@@ -1,5 +1,4 @@
<?xml version='1.0' encoding='utf-8'?>
<!--
<?xml version='1.0' encoding='utf-8'?><!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
@@ -14,9 +13,7 @@
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<!-- The contents of this file will be loaded for each web application -->
<!-- Don't swallowOutput for debugging, true for logging(production) -->
--><!-- The contents of this file will be loaded for each web application --><!-- Don't swallowOutput for debugging, true for logging(production) -->
<Context antiResourceLocking="true">
<!-- Default set of monitored resources -->
@@ -26,19 +23,11 @@
<!--
<Manager pathname="" />
-->
<Resource auth="Container"
description="C3P0 database connection pool"
driverClass="com.mysql.jdbc.Driver"
maxPoolSize="10"
minPoolSize="2"
acquireIncrement="1"
maxIdleTime="3600"
idleConnectionTestPeriod="1800"
name="jdbc/netsupport"
user="root"
password=""
factory="org.apache.naming.factory.BeanFactory"
type="com.mchange.v2.c3p0.ComboPooledDataSource"
<Resource auth="Container" description="HikariCP database connection pool"
driverClass="com.mysql.jdbc.Driver" maxPoolSize="10" minPoolSize="2" acquireIncrement="1"
maxIdleTime="3600" idleConnectionTestPeriod="1800" name="jdbc/netsupport" user="root"
password="" factory="org.apache.naming.factory.BeanFactory"
type="com.zaxxer.hikari.HikariDataSource"
jdbcUrl="jdbc:mysql://localhost:3306/netsupport?autoReconnect=true&amp;characterEncoding=utf8" />
<!-- Uncomment this to enable Comet connection tacking (provides events
on session expiration as well as webapp lifecycle) -->

View File

@@ -1,9 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1">
<!-- General description of your web application -->

View File

@@ -1,15 +0,0 @@
package love.sola.netsupport.config;
import org.junit.Test;
/**
* @author Sola {@literal <dev@sola.love>}
*/
public class CortanaTest {
@Test
public void load() throws Exception {
Cortana.load();
}
}

View File

@@ -1,41 +0,0 @@
package love.sola.netsupport.util;
import org.apache.commons.codec.binary.Base64;
import org.junit.Test;
import org.mindrot.jbcrypt.BCrypt;
import java.security.KeyFactory;
import java.security.NoSuchAlgorithmException;
import java.security.spec.InvalidKeySpecException;
import java.security.spec.X509EncodedKeySpec;
/**
* @author Sola {@literal <dev@sola.love>}
*/
public class EncryptTest {
@Test
public void testBCrypt() {
String hash = BCrypt.hashpw("mypasswordhere", BCrypt.gensalt());
assert BCrypt.checkpw("mypasswordhere", hash);
}
@Test
public void testRSA() {
assert "Hello World".equals(RSAUtil.decrypt(RSAUtil.encrypt("Hello World")));
assert "Encrypt".equals(RSAUtil.decrypt(RSAUtil.encrypt("Encrypt")));
}
// @Test
public void testRSASpecKey() throws NoSuchAlgorithmException, InvalidKeySpecException {
System.out.println("RSAUtil.privateKey_s = " + RSAUtil.privateKey_s);
System.out.println("RSAUtil.publicKey_s = " + RSAUtil.publicKey_s);
// String pkey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCA0qyARvHSCIUQ6YM6K+e/QgiZ+dc/MpVz5DIFwQab5iiifruQiaoA74ilHOOiq5i0ToR1VxNhCUZcAy2saHNifoYKTauMOUSV6IoP4X5jp691PlI9yxNx328mSlPNM9+7BgOzrUP1pR71d+T4LDn0o4J6Ad82vVIe7yWszzF4qQIDAQAB";
String pkey = RSAUtil.publicKey_s;
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
X509EncodedKeySpec keySpec = new X509EncodedKeySpec(Base64.decodeBase64(pkey));
RSAUtil.publicKey = keyFactory.generatePublic(keySpec);
System.out.println("RSAUtil.encrypt(\"233\") = " + RSAUtil.encrypt("233"));
}
}

View File

@@ -1,11 +1,17 @@
package love.sola.netsupport.util;
import com.google.gson.*;
import love.sola.netsupport.enums.ISP;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonDeserializer;
import com.google.gson.JsonPrimitive;
import com.google.gson.JsonSerializer;
import org.junit.Test;
import java.util.Date;
import love.sola.netsupport.enums.ISP;
/**
* @author Sola {@literal <dev@sola.love>}
*/

View File

@@ -1,6 +1,7 @@
package love.sola.netsupport.util;
import com.google.common.net.UrlEscapers;
import org.junit.Test;
import java.io.UnsupportedEncodingException;
@@ -24,7 +25,7 @@ public class URLEncodeTest {
.title("Test Title")
.msg("Test Message")
.toString(),
equalTo("http://s.wts.sola.love/nm/v2/result.html?type=1&title=Test%20Title&msg=Test%20Message&")
equalTo("http://wwbx.zsc.edu.cn/nm/v2/result.html?type=1&title=Test%20Title&msg=Test%20Message&")
);
}

View File

@@ -1,16 +0,0 @@
rules:
rule1:
regexp:
- 'single test'
replies:
- 'single test'
rule2:
regexp: ['inline test', 'inline test']
replies: ['inline test', 'inline test']
rule3:
regexp:
- 'multi line test'
- 'multi line test'
replies:
- 'multi line test'
- 'multi line test'