Browse Source

提交开源任务材料

10.0
LAPTOP-SB56SG4Q\86185 3 years ago
parent
commit
9a534bcbc9
  1. 5
      README.md
  2. BIN
      lib/commons-collections-3.2.2.jar
  3. BIN
      lib/fastjson-1.2.49.jar
  4. 14
      plugin.xml
  5. 18
      src/main/java/com/fr/plugin/cg/login/Constants.java
  6. 201
      src/main/java/com/fr/plugin/cg/login/LoginRequestFilter.java
  7. 162
      src/main/java/com/fr/plugin/cg/login/utils/FilterHelper.java
  8. 47
      src/main/java/com/fr/plugin/cg/login/utils/HexEncoder.java
  9. 310
      src/main/java/com/fr/plugin/cg/login/utils/HttpClientUtils.java
  10. 39
      src/main/java/com/fr/plugin/cg/login/utils/JsonRootBean.java
  11. 115
      src/main/java/com/fr/plugin/cg/login/utils/OracleJdbcTest.java
  12. 75
      src/main/java/com/fr/plugin/cg/login/utils/OrgUser.java
  13. 66
      src/main/java/com/fr/plugin/cg/login/utils/RC4.java
  14. 53
      src/main/java/com/fr/plugin/cg/login/utils/SecureHelper.java
  15. 147
      src/main/java/com/fr/plugin/cg/login/utils/UserExtInfo.java
  16. 102
      src/main/java/com/fr/plugin/cg/login/utils/UserInfo.java
  17. 43
      src/main/java/com/fr/plugin/cg/login/utils/Util.java
  18. 9
      src/main/resources/sso.properties

5
README.md

@ -1,3 +1,6 @@
# open-JSD-9305
JSD-9305 CAS单点情况下放行部分报表请求
JSD-9305 CAS单点情况下放行部分报表请求\
免责说明:该源码为第三方爱好者提供,不保证源码和方案的可靠性,也不提供任何形式的源码教学指导和协助!\
仅作为开发者学习参考使用!禁止用于任何商业用途!\
为保护开发者隐私,开发者信息已隐去!若原开发者希望公开自己的信息,可联系hugh处理。

BIN
lib/commons-collections-3.2.2.jar

Binary file not shown.

BIN
lib/fastjson-1.2.49.jar

Binary file not shown.

14
plugin.xml

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?><plugin>
<id>com.fr.plugin.logins</id>
<name><![CDATA[单点登录]]></name>
<active>yes</active>
<version>1.6.0</version>
<env-version>10.0</env-version>
<jartime>2018-07-31</jartime>
<vendor>fr.open</vendor>
<extra-decision>
<GlobalRequestFilterProvider class="com.fr.plugin.cg.login.LoginRequestFilter"/>
<!--<LogInOutEventProvider class="com.fr.plugin.cg.login.LogInOutEventProvider"/>-->
</extra-decision>
<function-recorder class="com.fr.plugin.cg.login.LoginRequestFilter"/>
</plugin>

18
src/main/java/com/fr/plugin/cg/login/Constants.java

@ -0,0 +1,18 @@
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//
package com.fr.plugin.cg.login;
public class Constants {
public static final String PLUGIN_ID = "com.fr.plugin.cg.login";
public Constants() {
}
public interface GrantType {
String AUTHORIZATION_CODE = "authorization_code";
String REFRESH_TOKEN = "refresh_token";
}
}

201
src/main/java/com/fr/plugin/cg/login/LoginRequestFilter.java

@ -0,0 +1,201 @@
package com.fr.plugin.cg.login;
import com.alibaba.fastjson.JSON;
import com.fr.decision.fun.impl.AbstractGlobalRequestFilterProvider;
import com.fr.intelli.record.Focus;
import com.fr.intelli.record.Original;
import com.fr.log.FineLoggerFactory;
import com.fr.plugin.cg.login.utils.FilterHelper;
import com.fr.plugin.cg.login.utils.HttpClientUtils;
import com.fr.plugin.cg.login.utils.JsonRootBean;
import com.fr.plugin.cg.login.utils.Util;
import com.fr.record.analyzer.EnableMetrics;
import com.fr.stable.StringUtils;
import com.fr.web.utils.WebUtils;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@EnableMetrics
public class LoginRequestFilter extends AbstractGlobalRequestFilterProvider {
public LoginRequestFilter() {
}
public void init(FilterConfig var1) {
}
public String filterName() {
return "LoginRequestFilter";
}
public String[] urlPatterns() {
return new String[]{"/*"};
}
@Focus(
id = "com.fr.plugin.cg.login",
text = "单点登录",
source = Original.PLUGIN
)
public void doFilter(HttpServletRequest req, HttpServletResponse res, FilterChain filterChain) {
res.setHeader("Access-Control-Allow-Origin", "*");
res.setHeader("Access-Control-Allow-Methods", "PUT,POST,GET,DELETE,OPTIONS");
res.setHeader("Access-Control-Allow-Headers", "Content-Type, Content-Length, Authorization, Accept, X-Requested-With, clientType");
String token = req.getParameter("uaaToken");
FilterHelper helper = new FilterHelper();
String redirectUrl = Util.SendRedirect;
String loginUserUrl;
String apiResp;
if (StringUtils.isNotEmpty(token)) {
loginUserUrl = Util.BaseUrl + "oauth/token/validity";
FineLoggerFactory.getLogger().debug("uaaTOken url:" + loginUserUrl);
apiResp = "";
try {
apiResp = HttpClientUtils.doPostJson(loginUserUrl, token, null);
} catch (Exception var19) {
}
FineLoggerFactory.getLogger().debug("rtnStr:" + apiResp);
if (StringUtils.contains(apiResp,"true") ) {
loginUserUrl = Util.UserUrl + "acc/org/login-user";
Map<String,String> var9 = new HashMap();
var9.put("Authorization", "Bearer " + token);
FineLoggerFactory.getLogger().debug("Authorization:Bearer " + token);
String userJson = HttpClientUtils.get(loginUserUrl, null, var9);
FineLoggerFactory.getLogger().info("Login user resp json:" + userJson);
if (StringUtils.isEmpty(userJson)) {
try {
res.sendRedirect(redirectUrl);
} catch (Exception var18) {
FineLoggerFactory.getLogger().info(var18.getMessage());
}
} else {
JsonRootBean userBean = JSON.parseObject(userJson, JsonRootBean.class);
//如果用户扩展信息不包含bi平台就单点去登陆地址??
if (!userBean.getUserExtInfo().getSsoSystems().contains("biplatform")) {
try {
res.sendRedirect(redirectUrl);
} catch (Exception var17) {
FineLoggerFactory.getLogger().info(var17.getMessage());
}
} else {
String username = userBean.getUserInfo().getUsername();
try {
req.getSession().setAttribute("account", username);
FilterHelper.login(username, req, res);
String goUrl = helper.decisionForwarding(req, res, username);
if (StringUtils.isNotEmpty(goUrl)) {
res.sendRedirect(goUrl);
return;
}
filterChain.doFilter(req, res);
return;
} catch (Exception var23) {
FineLoggerFactory.getLogger().info(var23.getMessage());
}
}
}
} else {
try {
res.sendRedirect(redirectUrl);
} catch (Exception var16) {
FineLoggerFactory.getLogger().error("跳转异常:", var16);
}
}
} else {
loginUserUrl = (String) req.getSession().getAttribute("account");
if (StringUtils.isNotBlank(loginUserUrl)) {
try {
apiResp = helper.decisionForwarding(req, res, loginUserUrl);
FilterHelper.login(loginUserUrl, req, res);
if (StringUtils.isNotEmpty(apiResp)) {
res.sendRedirect(apiResp);
return;
}
filterChain.doFilter(req, res);
return;
} catch (Exception var22) {
FineLoggerFactory.getLogger().info(var22.getMessage());
}
} else {
String screenDisplay = WebUtils.getHTTPRequestParameter(req, "screenDisplay");
if (StringUtils.equals(screenDisplay, "true")) {
try {
Cookie cookie = new Cookie("screenDisplay", "true");
cookie.setMaxAge(-1);
res.addCookie(cookie);
filterChain.doFilter(req, res);
return;
} catch (ServletException | IOException var21) {
FineLoggerFactory.getLogger().error("请求放行出错!", var21);
}
}
Cookie[] cookies = req.getCookies();
Cookie[] var27 = cookies;
int var28 = cookies.length;
for (int var29 = 0; var29 < var28; ++var29) {
Cookie c = var27[var29];
if (c.getName().equals("screenDisplay")) {
screenDisplay = c.getValue();
}
}
if ( StringUtils.equals(screenDisplay,"true")) {
FineLoggerFactory.getLogger().info("有cookie放行地址 " + req.getRequestURL());
try {
filterChain.doFilter(req, res);
return;
} catch (ServletException | IOException var20) {
FineLoggerFactory.getLogger().error("请求放行出错!", var20);
}
}
try {
//只有需要拦截的地址才拦截,否则全部放行
if(needFilter(req)){
res.sendRedirect(redirectUrl);
}else{
filterChain.doFilter(req, res);
return;
}
} catch (Exception var15) {
FineLoggerFactory.getLogger().info(var15.getMessage());
}
}
}
}
private boolean needFilter(HttpServletRequest request) {
String requestURI = request.getRequestURI();
if (StringUtils.isNotBlank(requestURI) && request.getMethod().equals("GET")) {
if (requestURI.endsWith("decision")) {
return true;
}
if (requestURI.endsWith("/view/form") || requestURI.endsWith("/view/report")) {
if (StringUtils.isNotBlank(request.getParameter("viewlet"))) {
return true;
}
}
if (requestURI.contains("/v10/entry/access/") && request.getMethod().equals("GET")) {
return true;
}
if (requestURI.contains("/v5/design/report") && (requestURI.endsWith("/edit")|| requestURI.endsWith("/view"))) {
return true;
}
}
return false;
}
}

162
src/main/java/com/fr/plugin/cg/login/utils/FilterHelper.java

@ -0,0 +1,162 @@
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//
package com.fr.plugin.cg.login.utils;
import com.fr.data.NetworkHelper;
import com.fr.decision.authority.data.User;
import com.fr.decision.mobile.terminal.TerminalHandler;
import com.fr.decision.webservice.exception.user.UserNotExistException;
import com.fr.decision.webservice.v10.login.LoginService;
import com.fr.decision.webservice.v10.login.TokenResource;
import com.fr.decision.webservice.v10.user.UserService;
import com.fr.general.ComparatorUtils;
import com.fr.io.utils.ResourceIOUtils;
import com.fr.json.JSONObject;
import com.fr.log.FineLoggerFactory;
import com.fr.security.JwtUtils;
import com.fr.stable.StringUtils;
import com.fr.stable.web.Device;
import com.fr.web.utils.WebUtils;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Properties;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class FilterHelper {
public OracleJdbcTest oracleJdbcTest = new OracleJdbcTest();
public static String Sql = null;
public static String Sqls = null;
private static final String[] RELEASE_PATH;
public FilterHelper() {
}
public String decisionForwarding(HttpServletRequest request, HttpServletResponse response, String userId) throws IOException {
response.setCharacterEncoding("utf-8");
response.setHeader("Content-type", "text/html;charset=UTF-8");
String sysname = request.getParameter("sysname");
String syslocal = request.getParameter("syslocal");
if (!StringUtils.isEmpty(sysname) && !StringUtils.isEmpty(syslocal) && !StringUtils.isEmpty(userId)) {
String var6 = "";
String sql1 = Sql + "'" + syslocal + "' and SYS_NAME ='" + sysname + "' AND USER_ID ='" + userId + "'";
String sql2 = Sqls + " AND USER_ID ='" + userId + "'";
var6 = this.oracleJdbcTest.queryStri(sql1, true);
if (StringUtils.isNotEmpty(var6)) {
return var6;
} else {
var6 = this.oracleJdbcTest.queryStri(sql2, true);
if (StringUtils.isEmpty(var6)) {
FineLoggerFactory.getLogger().info("找不到数据");
return "";
} else {
FineLoggerFactory.getLogger().info("显示当前的跳转界面" + var6);
return var6;
}
}
} else {
// FineLoggerFactory.getLogger().info("放回的数据为空");
return "";
}
}
public static void printMessage(HttpServletResponse var0, String var1, String var2) throws IOException {
var0.setCharacterEncoding("utf-8");
var0.setHeader("Content-type", "text/html;charset=UTF-8");
JSONObject var3 = JSONObject.create();
var3.put("code", var1);
var3.put("error", var2);
PrintWriter var4 = WebUtils.createPrintWriter(var0);
var4.println(var3.toString());
var4.flush();
var4.close();
}
public static void logout(HttpServletRequest var0, HttpServletResponse var1) throws Exception {
String var2 = TokenResource.HEADER.getToken(var0);
if (StringUtils.isNotEmpty(var2)) {
}
HttpSession var3 = var0.getSession(true);
var3.removeAttribute("_cas_logout_");
var3.removeAttribute("authorizationInfo");
var3.removeAttribute("fine_auth_token");
var3.invalidate();
FineLoggerFactory.getLogger().info("登出成功");
}
public static boolean isRelease(HttpServletRequest var0) {
String var1 = WebUtils.getOriginalURL(var0);
String[] var2 = RELEASE_PATH;
int var3 = var2.length;
for(int var4 = 0; var4 < var3; ++var4) {
String var5 = var2[var4];
if (var1.contains(var5)) {
return true;
}
}
return false;
}
public static void login(String var0, HttpServletRequest var1, HttpServletResponse var2) throws Exception {
User var3 = UserService.getInstance().getUserByUserName(var0);
if (var3 == null) {
throw new UserNotExistException();
} else {
String var4 = LoginService.getInstance().login(var1, var2, var0);
var1.setAttribute("fine_auth_token", var4);
}
}
public static boolean isRemote(HttpServletRequest var0) {
return var0.getRequestURL().toString().contains("decision/remote/design");
}
public static boolean isOptions(HttpServletRequest var0) {
FineLoggerFactory.getLogger().info("request method OPTIONS, url: " + WebUtils.getOriginalURL(var0));
return StringUtils.equalsIgnoreCase(var0.getMethod(), "OPTIONS");
}
public static boolean checkTokenValid(HttpServletRequest var0, String var1, String var2) {
try {
if (!ComparatorUtils.equals(var2, JwtUtils.parseJWT(var1).getSubject())) {
FineLoggerFactory.getLogger().info("username changed:" + var2);
return false;
} else {
Device var3 = NetworkHelper.getDevice(var0);
LoginService.getInstance().loginStatusValid(var1, TerminalHandler.getTerminal(var0, var3));
return true;
}
} catch (Exception var4) {
return false;
}
}
static {
Properties var0 = new Properties();
try {
String var1 = ResourceIOUtils.getRealPath("sso.properties");
FineLoggerFactory.getLogger().info("filepath:" + var1);
System.out.println(var1);
var0.load(new FileInputStream(new File(var1)));
} catch (IOException var2) {
FineLoggerFactory.getLogger().info("外部调用文件有误");
var2.printStackTrace();
}
Sql = var0.getProperty("Sql");
FineLoggerFactory.getLogger().info("Sql:" + Sql);
Sqls = var0.getProperty("Sqls");
FineLoggerFactory.getLogger().info("Sqls:" + Sqls);
RELEASE_PATH = new String[]{"decision/file?path", "decision/resources?path", "decision/view/form?op=emb", "decision/view/form?op=resource"};
}
}

47
src/main/java/com/fr/plugin/cg/login/utils/HexEncoder.java

@ -0,0 +1,47 @@
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//
package com.fr.plugin.cg.login.utils;
public class HexEncoder {
public HexEncoder() {
}
public static String bytesToHex(byte[] var0) {
StringBuffer var1 = new StringBuffer();
for(int var2 = 0; var2 < var0.length; ++var2) {
String var3 = Integer.toHexString(var0[var2] & 255);
if (var3.length() < 2) {
var1.append(0);
}
var1.append(var3);
}
return var1.toString();
}
public static byte[] hexToByteArray(String var0) {
int var1 = var0.length();
byte[] var2;
if (var1 % 2 == 1) {
++var1;
var2 = new byte[var1 / 2];
var0 = "0" + var0;
} else {
var2 = new byte[var1 / 2];
}
int var3 = 0;
for(int var4 = 0; var4 < var1; var4 += 2) {
var2[var3] = (byte)Integer.parseInt(var0.substring(var4, var4 + 2), 16);
++var3;
}
return var2;
}
}

310
src/main/java/com/fr/plugin/cg/login/utils/HttpClientUtils.java

@ -0,0 +1,310 @@
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//
package com.fr.plugin.cg.login.utils;
import com.fr.log.FineLoggerFactory;
import com.fr.third.org.apache.http.Consts;
import com.fr.third.org.apache.http.HeaderIterator;
import com.fr.third.org.apache.http.HttpEntity;
import com.fr.third.org.apache.http.HttpResponse;
import com.fr.third.org.apache.http.ParseException;
import com.fr.third.org.apache.http.client.config.RequestConfig;
import com.fr.third.org.apache.http.client.entity.UrlEncodedFormEntity;
import com.fr.third.org.apache.http.client.methods.CloseableHttpResponse;
import com.fr.third.org.apache.http.client.methods.HttpGet;
import com.fr.third.org.apache.http.client.methods.HttpPost;
import com.fr.third.org.apache.http.client.utils.URIBuilder;
import com.fr.third.org.apache.http.config.Registry;
import com.fr.third.org.apache.http.config.RegistryBuilder;
import com.fr.third.org.apache.http.conn.socket.PlainConnectionSocketFactory;
import com.fr.third.org.apache.http.conn.ssl.NoopHostnameVerifier;
import com.fr.third.org.apache.http.conn.ssl.SSLConnectionSocketFactory;
import com.fr.third.org.apache.http.conn.ssl.TrustStrategy;
import com.fr.third.org.apache.http.entity.StringEntity;
import com.fr.third.org.apache.http.impl.client.CloseableHttpClient;
import com.fr.third.org.apache.http.impl.client.HttpClients;
import com.fr.third.org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
import com.fr.third.org.apache.http.message.BasicNameValuePair;
import com.fr.third.org.apache.http.ssl.SSLContextBuilder;
import com.fr.third.org.apache.http.util.EntityUtils;
import java.io.IOException;
import java.net.URI;
import java.security.KeyStore;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import org.apache.commons.collections.MapUtils;
public class HttpClientUtils {
private static final Integer CONNECTION_TIMEOUT = 5000;
private static final Integer SO_TIMEOUT = 20000;
private static final Integer CONN_MANAGER_TIMEOUT = 500;
private static final String http = "http";
private static final String https = "https";
private static SSLConnectionSocketFactory sslsf = null;
private static PoolingHttpClientConnectionManager cm = null;
private static SSLContextBuilder builder = null;
public HttpClientUtils() {
}
public static String doPostJson(String var0, String var1, String var2) throws Exception {
CloseableHttpClient var3 = HttpClients.createDefault();
CloseableHttpResponse var4 = null;
String var5 = "";
try {
HttpPost var6 = new HttpPost(var0);
var6.setHeader("HTTP Method", "POST");
var6.setHeader("Connection", "Keep-Alive");
var6.setHeader("Content-Type", "application/json;charset=utf-8");
var6.setHeader("x-authentication-token", var2);
StringEntity var7 = new StringEntity(var1);
var7.setContentType("application/json;charset=utf-8");
var6.setEntity(var7);
var4 = var3.execute(var6);
System.out.println(var4.getStatusLine().getStatusCode());
if (var4.getStatusLine().getStatusCode() == 200) {
var5 = EntityUtils.toString(var4.getEntity(), "UTF-8");
System.out.println(var5);
}
} catch (Exception var15) {
throw var15;
} finally {
try {
if (var4 != null) {
var4.close();
}
} catch (IOException var14) {
var14.printStackTrace();
}
}
return var5;
}
public static String doGet(String var0, Map<String, String> var1) {
CloseableHttpClient var2 = HttpClients.createDefault();
String var3 = "";
CloseableHttpResponse var4 = null;
try {
URIBuilder var5 = new URIBuilder(var0);
if (var1 != null) {
Iterator var6 = var1.keySet().iterator();
while(var6.hasNext()) {
String var7 = (String)var6.next();
var5.addParameter(var7, (String)var1.get(var7));
}
}
URI var18 = var5.build();
HttpGet var19 = new HttpGet(var18);
var4 = var2.execute(var19);
if (var4.getStatusLine().getStatusCode() == 200) {
var3 = EntityUtils.toString(var4.getEntity(), "UTF-8");
}
} catch (Exception var16) {
var16.printStackTrace();
} finally {
try {
if (var4 != null) {
var4.close();
}
var2.close();
} catch (IOException var15) {
var15.printStackTrace();
}
}
return var3;
}
public static String post(String var0, Map<String, String> var1, Map<String, String> var2, HttpEntity var3) {
String var4 = "";
CloseableHttpClient var5 = null;
CloseableHttpResponse var6 = null;
HttpEntity var7 = null;
try {
var5 = getHttpClient();
HttpPost var8 = new HttpPost(var0);
if (MapUtils.isNotEmpty(var2)) {
Iterator var9 = var2.entrySet().iterator();
while(var9.hasNext()) {
Entry var10 = (Entry)var9.next();
var8.addHeader((String)var10.getKey(), (String)var10.getValue());
}
}
ArrayList var20 = new ArrayList();
if (MapUtils.isNotEmpty(var1)) {
Iterator var17 = var1.entrySet().iterator();
while(var17.hasNext()) {
Entry var11 = (Entry)var17.next();
var20.add(new BasicNameValuePair((String)var11.getKey(), (String)var11.getValue()));
}
UrlEncodedFormEntity var18 = new UrlEncodedFormEntity(var20, Consts.UTF_8);
var8.setEntity(var18);
}
if (var3 != null) {
var8.setEntity(var3);
}
var6 = var5.execute(var8);
FineLoggerFactory.getLogger().info("创建请求httpPost-URL={},params={}", new Object[]{var0, var20});
int var19 = var6.getStatusLine().getStatusCode();
if (var19 == 200) {
var7 = var6.getEntity();
System.out.println(var7);
var4 = EntityUtils.toString(var7);
} else {
readHttpResponse(var6);
}
} catch (Exception var15) {
FineLoggerFactory.getLogger().error("请求发送失败:", var15);
throw new RuntimeException("请求发送失败,URL:" + var0 + ",params:" + var1);
} finally {
closeConnection(var5, var6, var7);
}
return var4;
}
public static String get(String var0, Map<String, String> var1, Map<String, String> var2) {
String var3 = "";
CloseableHttpClient var4 = null;
CloseableHttpResponse var5 = null;
HttpEntity var6 = null;
try {
HttpGet var7 = null;
ArrayList var8 = new ArrayList();
Iterator var9;
Entry var10;
if (MapUtils.isNotEmpty(var1)) {
var9 = var1.entrySet().iterator();
while(var9.hasNext()) {
var10 = (Entry)var9.next();
var8.add(new BasicNameValuePair((String)var10.getKey(), (String)var10.getValue()));
}
UrlEncodedFormEntity var16 = new UrlEncodedFormEntity(var8, Consts.UTF_8);
var0 = var0 + "?" + EntityUtils.toString(var16);
}
var7 = new HttpGet(var0);
if (MapUtils.isNotEmpty(var2)) {
var9 = var2.entrySet().iterator();
while(var9.hasNext()) {
var10 = (Entry)var9.next();
var7.addHeader((String)var10.getKey(), (String)var10.getValue());
}
}
var4 = getHttpClient();
var5 = var4.execute(var7);
FineLoggerFactory.getLogger().info("创建请求http get请求,URL={}", new Object[]{var0});
int var17 = var5.getStatusLine().getStatusCode();
if (var17 == 200) {
var6 = var5.getEntity();
var3 = EntityUtils.toString(var6);
} else {
readHttpResponse(var5);
}
} catch (Exception var14) {
FineLoggerFactory.getLogger().error("请求发送失败:", var14);
throw new RuntimeException("请求发送失败,URL:" + var0 + ",params:" + var1);
} finally {
closeConnection(var4, var5, var6);
}
return var3;
}
public static CloseableHttpClient getHttpClient() {
return HttpClients.custom().setSSLSocketFactory(sslsf).setConnectionManager(cm).setConnectionManagerShared(true).setDefaultRequestConfig(RequestConfig.custom().setConnectTimeout(CONNECTION_TIMEOUT).setConnectionRequestTimeout(CONN_MANAGER_TIMEOUT).setSocketTimeout(SO_TIMEOUT).build()).build();
}
public static String readHttpResponse(HttpResponse var0) throws ParseException, IOException {
StringBuilder var1 = new StringBuilder();
HttpEntity var2 = var0.getEntity();
var1.append("status:" + var0.getStatusLine());
var1.append("headers:");
HeaderIterator var3 = var0.headerIterator();
while(var3.hasNext()) {
var1.append("\t" + var3.next());
}
if (var2 != null) {
String var4 = EntityUtils.toString(var2);
var1.append("response length:" + var4.length());
var1.append("response content:" + var4.replace("\r\n", ""));
}
return var1.toString();
}
public static void closeConnection(CloseableHttpClient var0, HttpResponse var1, HttpEntity var2) {
if (var2 != null) {
try {
EntityUtils.consume(var2);
} catch (IOException var6) {
FineLoggerFactory.getLogger().error("关闭HttpEntity出错:{}", new Object[]{var6.getMessage()});
}
}
if (var1 != null) {
try {
((CloseableHttpResponse)var1).close();
} catch (IOException var5) {
FineLoggerFactory.getLogger().error("关闭HttpResponse出错:{}", new Object[]{var5.getMessage()});
}
}
if (var0 != null) {
try {
var0.close();
} catch (IOException var4) {
FineLoggerFactory.getLogger().error("关闭HttpClient出错:{}", new Object[]{var4.getMessage()});
}
}
}
static {
try {
builder = new SSLContextBuilder();
builder.loadTrustMaterial((KeyStore)null, new TrustStrategy() {
public boolean isTrusted(X509Certificate[] var1, String var2) throws CertificateException {
return true;
}
});
sslsf = new SSLConnectionSocketFactory(builder.build(), new String[]{"TLSv1"}, (String[])null, NoopHostnameVerifier.INSTANCE);
Registry var0 = RegistryBuilder.create().register("http", new PlainConnectionSocketFactory()).register("https", sslsf).build();
cm = new PoolingHttpClientConnectionManager(var0);
cm.setMaxTotal(200);
cm.setDefaultMaxPerRoute(20);
} catch (Exception var1) {
FineLoggerFactory.getLogger().error("HttpClientUtils 初始化失败", var1);
}
}
}

39
src/main/java/com/fr/plugin/cg/login/utils/JsonRootBean.java

@ -0,0 +1,39 @@
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//
package com.fr.plugin.cg.login.utils;
public class JsonRootBean {
private UserInfo userInfo;
private OrgUser orgUser;
private UserExtInfo userExtInfo;
public JsonRootBean() {
}
public UserInfo getUserInfo() {
return this.userInfo;
}
public void setUserInfo(UserInfo var1) {
this.userInfo = var1;
}
public void setOrgUser(OrgUser var1) {
this.orgUser = var1;
}
public void setUserExtInfo(UserExtInfo var1) {
this.userExtInfo = var1;
}
public OrgUser getOrgUser() {
return this.orgUser;
}
public UserExtInfo getUserExtInfo() {
return this.userExtInfo;
}
}

115
src/main/java/com/fr/plugin/cg/login/utils/OracleJdbcTest.java

@ -0,0 +1,115 @@
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//
package com.fr.plugin.cg.login.utils;
import com.fr.io.utils.ResourceIOUtils;
import com.fr.log.FineLoggerFactory;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties;
public class OracleJdbcTest {
private static Connection conn = null;
private static String orcalUrl = null;
private static String orcalName = null;
private static String user = null;
private static String password = null;
private static String path = null;
public OracleJdbcTest() {
}
private static synchronized Connection getConn() {
if (conn == null) {
try {
Class.forName(orcalName);
conn = DriverManager.getConnection(orcalUrl, user, password);
} catch (ClassNotFoundException var1) {
var1.printStackTrace();
FineLoggerFactory.getLogger().error("sql数据库连接处错:1" + var1.getMessage());
} catch (SQLException var2) {
var2.printStackTrace();
FineLoggerFactory.getLogger().error("sql数据库连接处错:2" + var2.getMessage());
}
}
return conn;
}
public String queryStri(String var1, boolean var2) {
String REPORT_URL = "";
// FineLoggerFactory.getLogger().error("filepath:" + path);
// FineLoggerFactory.getLogger().error("orcalUrl:" + orcalUrl);
// FineLoggerFactory.getLogger().error("orcalName:" + orcalName);
// FineLoggerFactory.getLogger().error("user:" + user);
// FineLoggerFactory.getLogger().error("password:" + password);
// FineLoggerFactory.getLogger().error("》》》》");
try {
PreparedStatement var3 = getConn().prepareStatement(var1);
ResultSet var5;
for(var5 = var3.executeQuery(); var5.next(); REPORT_URL = var5.getString("REPORT_URL")) {
}
var5.close();
var3.close();
return REPORT_URL;
} catch (SQLException var6) {
FineLoggerFactory.getLogger().error("显示返回的地址" , var6);
return REPORT_URL;
}
}
public void query(String var1) {
try {
PreparedStatement var2 = getConn().prepareStatement(var1);
var2.execute();
var2.close();
} catch (SQLException var4) {
var4.printStackTrace();
}
}
public void close() {
try {
getConn().close();
} catch (SQLException var2) {
var2.printStackTrace();
}
}
static {
Properties var0 = new Properties();
try {
path = ResourceIOUtils.getRealPath("sso.properties");
FineLoggerFactory.getLogger().error("filepath:" + path);
System.out.println(path);
var0.load(new FileInputStream(new File(path)));
} catch (IOException var2) {
FineLoggerFactory.getLogger().error("外部调用文件有误");
var2.printStackTrace();
}
orcalUrl = var0.getProperty("orcalUrl");
FineLoggerFactory.getLogger().info("orcalUrl:" + orcalUrl);
orcalName = var0.getProperty("orcalName");
FineLoggerFactory.getLogger().info("orcalName :" + orcalName);
user = var0.getProperty("user");
FineLoggerFactory.getLogger().info("user :" + user);
password = var0.getProperty("password");
FineLoggerFactory.getLogger().info("password:" + password);
}
}

75
src/main/java/com/fr/plugin/cg/login/utils/OrgUser.java

@ -0,0 +1,75 @@
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//
package com.fr.plugin.cg.login.utils;
public class OrgUser {
private int id;
private int orgId;
private int userId;
private int groupId;
private int roleId;
private String photo;
private int tempUnit;
public OrgUser() {
}
public int getId() {
return this.id;
}
public void setId(int var1) {
this.id = var1;
}
public void setOrgId(int var1) {
this.orgId = var1;
}
public void setUserId(int var1) {
this.userId = var1;
}
public void setGroupId(int var1) {
this.groupId = var1;
}
public void setRoleId(int var1) {
this.roleId = var1;
}
public void setPhoto(String var1) {
this.photo = var1;
}
public void setTempUnit(int var1) {
this.tempUnit = var1;
}
public int getOrgId() {
return this.orgId;
}
public int getUserId() {
return this.userId;
}
public int getGroupId() {
return this.groupId;
}
public int getRoleId() {
return this.roleId;
}
public String getPhoto() {
return this.photo;
}
public int getTempUnit() {
return this.tempUnit;
}
}

66
src/main/java/com/fr/plugin/cg/login/utils/RC4.java

@ -0,0 +1,66 @@
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//
package com.fr.plugin.cg.login.utils;
import java.util.Arrays;
public class RC4 {
private final byte[] s = new byte[256];
private int x = 96483;
private int y = 276492749;
public RC4(byte[] var1) {
int var2;
for(var2 = 0; var2 < 256; ++var2) {
this.s[var2] = (byte)var2;
}
var2 = 0;
for(int var3 = 0; var2 < 256; ++var2) {
var3 = var3 + (this.s[var2] & 255) + (var1[var2 % var1.length] & 255) & 255;
byte var4 = this.s[var2];
this.s[var2] = this.s[var3];
this.s[var3] = var4;
}
}
public int encrypt(byte[] var1, int var2, byte[] var3, int var4, int var5) {
int var6 = this.x;
int var7 = this.y;
byte[] var8 = Arrays.copyOf(this.s, this.s.length);
for(int var9 = 0; var9 < var5; ++var9) {
var6 = var6 + 1 & 255;
var7 = var7 + (var8[var6] & 255) & 255;
byte var10 = var8[var6];
var8[var6] = var8[var7];
var8[var7] = var10;
int var11 = (var8[var6] & 255) + (var8[var7] & 255) & 255;
byte var12 = var8[var11];
var3[var4 + var9] = (byte)(var1[var2 + var9] & 255 ^ var12);
}
return 0;
}
public int decrypt(byte[] var1, int var2, byte[] var3, int var4, int var5) {
return this.encrypt(var1, var2, var3, var4, var5);
}
public byte[] encrypt(byte[] var1) {
byte[] var2 = new byte[var1.length];
this.encrypt(var1, 0, var2, 0, var1.length);
return var2;
}
public byte[] decrypt(byte[] var1) {
byte[] var2 = new byte[var1.length];
this.decrypt(var1, 0, var2, 0, var1.length);
return var2;
}
}

53
src/main/java/com/fr/plugin/cg/login/utils/SecureHelper.java

@ -0,0 +1,53 @@
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//
package com.fr.plugin.cg.login.utils;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.fr.log.FineLoggerFactory;
public class SecureHelper {
private static final String ENCODE = "UTF-8";
private static final String KEY_TIMESTAMP = "timestamp";
private static final String KEY_MESSAGE = "message";
private static final long TIME_OUT_REQUEST = 30000L;
public SecureHelper() {
}
public static String decryptAndVerify(String var0, String var1) {
try {
RC4 var2 = new RC4(var1.getBytes("UTF-8"));
byte[] var3 = var2.decrypt(HexEncoder.hexToByteArray(var0));
JSONObject var4 = JSON.parseObject(new String(var3, "UTF-8"));
if (System.currentTimeMillis() - var4.getLongValue("timestamp") > 30000L) {
throw new RuntimeException("sign timeout");
} else {
return var4.getString("message");
}
} catch (Exception var5) {
FineLoggerFactory.getLogger().error("验签失败", var5);
return "";
}
}
public static String encryptAndSign(String var0, String var1) {
try {
JSONObject var2 = new JSONObject();
var2.put("timestamp", System.currentTimeMillis());
var2.put("message", var0);
RC4 var3 = new RC4(var1.getBytes("UTF-8"));
return HexEncoder.bytesToHex(var3.encrypt(var2.toJSONString().getBytes("UTF-8")));
} catch (Exception var4) {
return "";
}
}
public static void main(String[] var0) {
String var1 = decryptAndVerify("28dd390a1545c394e1c808c16ea6a866dedbbb548fe2dfcc124318bc46f245f0f92b8df4e39a8cdd04415bac0f42", "123456789");
System.out.println(var1);
}
}

147
src/main/java/com/fr/plugin/cg/login/utils/UserExtInfo.java

@ -0,0 +1,147 @@
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//
package com.fr.plugin.cg.login.utils;
public class UserExtInfo {
private int userId;
private int staffType;
private String staffCode;
private int status;
private String suspendTime;
private String validDateStart;
private String validDateEnd;
private String landlinePhone;
private String identityDocType;
private String identityDocNo;
private String companyWeChatAccount;
private String personalWeChatAccount;
private String bankAccount;
private String remark;
private String ssoSystems;
public UserExtInfo() {
}
public int getUserId() {
return this.userId;
}
public int getStaffType() {
return this.staffType;
}
public String getStaffCode() {
return this.staffCode;
}
public int getStatus() {
return this.status;
}
public String getSuspendTime() {
return this.suspendTime;
}
public String getValidDateStart() {
return this.validDateStart;
}
public String getValidDateEnd() {
return this.validDateEnd;
}
public String getLandlinePhone() {
return this.landlinePhone;
}
public String getIdentityDocType() {
return this.identityDocType;
}
public String getIdentityDocNo() {
return this.identityDocNo;
}
public String getCompanyWeChatAccount() {
return this.companyWeChatAccount;
}
public String getPersonalWeChatAccount() {
return this.personalWeChatAccount;
}
public String getBankAccount() {
return this.bankAccount;
}
public String getRemark() {
return this.remark;
}
public String getSsoSystems() {
return this.ssoSystems;
}
public void setUserId(int var1) {
this.userId = var1;
}
public void setStaffType(int var1) {
this.staffType = var1;
}
public void setStaffCode(String var1) {
this.staffCode = var1;
}
public void setStatus(int var1) {
this.status = var1;
}
public void setSuspendTime(String var1) {
this.suspendTime = var1;
}
public void setValidDateStart(String var1) {
this.validDateStart = var1;
}
public void setValidDateEnd(String var1) {
this.validDateEnd = var1;
}
public void setLandlinePhone(String var1) {
this.landlinePhone = var1;
}
public void setIdentityDocType(String var1) {
this.identityDocType = var1;
}
public void setIdentityDocNo(String var1) {
this.identityDocNo = var1;
}
public void setCompanyWeChatAccount(String var1) {
this.companyWeChatAccount = var1;
}
public void setPersonalWeChatAccount(String var1) {
this.personalWeChatAccount = var1;
}
public void setBankAccount(String var1) {
this.bankAccount = var1;
}
public void setRemark(String var1) {
this.remark = var1;
}
public void setSsoSystems(String var1) {
this.ssoSystems = var1;
}
}

102
src/main/java/com/fr/plugin/cg/login/utils/UserInfo.java

@ -0,0 +1,102 @@
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//
package com.fr.plugin.cg.login.utils;
public class UserInfo {
private int id;
private String name;
private String countryCode;
private String phoneNumber;
private String email;
private int status;
private long lastLoginTime;
private String username;
private String photo;
private String system;
public UserInfo() {
}
public void setId(int var1) {
this.id = var1;
}
public void setName(String var1) {
this.name = var1;
}
public void setCountryCode(String var1) {
this.countryCode = var1;
}
public void setPhoneNumber(String var1) {
this.phoneNumber = var1;
}
public void setEmail(String var1) {
this.email = var1;
}
public void setStatus(int var1) {
this.status = var1;
}
public void setLastLoginTime(long var1) {
this.lastLoginTime = var1;
}
public void setUsername(String var1) {
this.username = var1;
}
public void setPhoto(String var1) {
this.photo = var1;
}
public void setSystem(String var1) {
this.system = var1;
}
public int getId() {
return this.id;
}
public String getName() {
return this.name;
}
public String getCountryCode() {
return this.countryCode;
}
public String getPhoneNumber() {
return this.phoneNumber;
}
public String getEmail() {
return this.email;
}
public int getStatus() {
return this.status;
}
public long getLastLoginTime() {
return this.lastLoginTime;
}
public String getUsername() {
return this.username;
}
public String getPhoto() {
return this.photo;
}
public String getSystem() {
return this.system;
}
}

43
src/main/java/com/fr/plugin/cg/login/utils/Util.java

@ -0,0 +1,43 @@
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//
package com.fr.plugin.cg.login.utils;
import com.fr.io.utils.ResourceIOUtils;
import com.fr.log.FineLoggerFactory;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Properties;
public class Util {
public static String BaseUrl = null;
public static String SendRedirect = null;
public static String UserUrl = null;
public Util() {
}
static {
Properties var0 = new Properties();
try {
String var1 = ResourceIOUtils.getRealPath("sso.properties");
FineLoggerFactory.getLogger().info("filepath:" + var1);
System.out.println(var1);
var0.load(new FileInputStream(new File(var1)));
} catch (IOException var2) {
FineLoggerFactory.getLogger().info("外部调用文件有误");
var2.printStackTrace();
}
BaseUrl = var0.getProperty("BaseUrl");
FineLoggerFactory.getLogger().info("BaseUrl:" + BaseUrl);
SendRedirect = var0.getProperty("SendRedirect");
FineLoggerFactory.getLogger().info("SendRedirect:" + SendRedirect);
UserUrl = var0.getProperty("UserUrl");
FineLoggerFactory.getLogger().info("UserUrl:" + UserUrl);
}
}

9
src/main/resources/sso.properties

@ -0,0 +1,9 @@
BaseUrl=http://192.168.1.232:9181/
SendRedirect=https://rhba.cpirhzl.com:8443/webroot/decision/view/form?viewlet=error.frm
UserUrl=http://192.168.1.232:9091/
orcalUrl =jdbc:oracle:thin:@//192.168.1.203:1521/rhzlbidb
orcalName =oracle.jdbc.driver.OracleDriver
user =rhzl_bi
password =rhzl_bi
Sql=with ds3 as (SELECT u.realName,u.userName,u.mobile,u.email,d.id org_id,d.name org_name,c.id dept_id,c.name dept_name FROM rhzl_bi.fine_user u LEFT JOIN ( SELECT * FROM rhzl_bi.fine_user_role_middle WHERE roleType = 1 ) r ON u.id = r.userid LEFT JOIN rhzl_bi.fine_dep_role b ON r.roleid = b.id LEFT JOIN rhzl_bi.fine_post c ON b.postId = c.id LEFT JOIN rhzl_bi.fine_department d ON b.departmentId = d.id WHERE d.name != '融和必达'), ds1 as (select a.sys_name,a.sys_local ,a.state, a.report_url ,b.dept_id,b.username as user_id from FILL_DEPT_REPORT_AUTH a right join ds3 b on a.dept_id=b.dept_id),ds2 as (select REPORT_URL,SYS_LOCAL,SYS_NAME,user_id,STATE FROM FILL_USER_REPORT_AUTH union all select REPORT_URL,SYS_LOCAL,SYS_NAME,user_id,STATE from ds1 where user_id not in (select user_id from FILL_USER_REPORT_AUTH ) and sys_local is not null) SELECT REPORT_URL FROM ds2 WHERE STATE = 'NORMAL' AND SYS_LOCAL =
Sqls=SELECT REPORT_URL FROM FILL_USER_REPORT_AUTH WHERE STATE = 'PARANULL' AND SYS_LOCAL ='sys_local'and SYS_NAME ='sys_name'
Loading…
Cancel
Save