Просмотр исходного кода

Merge branch 'release' into 'develop'

Release

See merge request o2oa/o2oa!1658
o2null 5 лет назад
Родитель
Сommit
a229027a7b

+ 2 - 1
o2server/configSample/centerServer.json

@@ -25,5 +25,6 @@
   "###configApiEnable": "允许通过Api修改config###",
   "###statEnable": "启用统计,默认启用统计.###",
   "###statExclusions": "统计忽略路径,默认忽略*.js,*.gif,*.jpg,*.png,*.css,*.ico###",
-  "###maxFormContent": "最大提交数据限制(M),限制有所上传的内容大小,包括附件.###"
+  "###maxFormContent": "最大提交数据限制(M),限制有所上传的内容大小,包括附件.###",
+  "###exposeJest": "暴露jest接口.###"
 }

+ 10 - 0
o2server/configSample/components.json

@@ -259,6 +259,16 @@
       "type": "system",
       "allowList": [],
       "dentyList": []
+    },
+    {
+      "name": "IMV2",
+      "path": "IMV2",
+      "title": "聊天",
+      "iconPath": "appicon.png",
+      "orderNumber": 26.0,
+      "type": "system",
+      "allowList": [],
+      "dentyList": []
     }
   ],
   "###systems": "默认模块###"

+ 2 - 1
o2server/configSample/node_127.0.0.1.json

@@ -28,7 +28,8 @@
     "###configApiEnable": "允许通过Api修改config###",
     "###statEnable": "启用统计,默认启用统计.###",
     "###statExclusions": "统计忽略路径,默认忽略*.js,*.gif,*.jpg,*.png,*.css,*.ico###",
-    "###maxFormContent": "最大提交数据限制(M),限制有所上传的内容大小,包括附件.###"
+    "###maxFormContent": "最大提交数据限制(M),限制有所上传的内容大小,包括附件.###",
+    "###exposeJest": "暴露jest接口.###"
   },
   "application": {
     "enable": true,

+ 8 - 0
o2server/x_base_core_project/src/main/java/com/x/base/core/project/config/ApplicationServer.java

@@ -20,6 +20,7 @@ public class ApplicationServer extends ConfigObject {
 	private static final Boolean DEFAULT_STATENABLE = true;
 	private static final String DEFAULT_STATEXCLUSIONS = "*.js,*.gif,*.jpg,*.png,*.css,*.ico";
 	private static final Integer DEFAULT_MAXFORMCONTENT = 20;
+	private static final Boolean DEFAULT_EXPOSEJEST = true;
 
 	public ApplicationServer() {
 		this.enable = true;
@@ -36,6 +37,7 @@ public class ApplicationServer extends ConfigObject {
 		this.statEnable = DEFAULT_STATENABLE;
 		this.statExclusions = DEFAULT_STATEXCLUSIONS;
 		this.maxFormContent = DEFAULT_MAXFORMCONTENT;
+		this.exposeJest = DEFAULT_EXPOSEJEST;
 	}
 
 	@FieldDescribe("是否启用")
@@ -66,6 +68,12 @@ public class ApplicationServer extends ConfigObject {
 	private String statExclusions;
 	@FieldDescribe("最大提交数据限制(M),限制有所上传的内容大小,包括附件.")
 	private Integer maxFormContent;
+	@FieldDescribe("暴露jest接口.")
+	private Boolean exposeJest;
+
+	public Boolean getExposeJest() {
+		return BooleanUtils.isNotFalse(this.exposeJest);
+	}
 
 	public Integer getMaxFormContent() {
 		return ((null == maxFormContent) || (maxFormContent < 1)) ? DEFAULT_MAXFORMCONTENT : maxFormContent;

+ 8 - 0
o2server/x_base_core_project/src/main/java/com/x/base/core/project/config/CenterServer.java

@@ -21,6 +21,7 @@ public class CenterServer extends ConfigObject {
 	private static final Boolean DEFAULT_STATENABLE = true;
 	private static final String DEFAULT_STATEXCLUSIONS = "*.js,*.gif,*.jpg,*.png,*.css,*.ico";
 	private static final Integer DEFAULT_MAXFORMCONTENT = 20;
+	private static final Boolean DEFAULT_EXPOSEJEST = true;
 
 	public static CenterServer defaultInstance() {
 		return new CenterServer();
@@ -40,6 +41,7 @@ public class CenterServer extends ConfigObject {
 		this.statEnable = DEFAULT_STATENABLE;
 		this.statExclusions = DEFAULT_STATEXCLUSIONS;
 		this.maxFormContent = DEFAULT_MAXFORMCONTENT;
+		this.exposeJest = DEFAULT_EXPOSEJEST;
 	}
 
 	@FieldDescribe("是否启用")
@@ -70,6 +72,12 @@ public class CenterServer extends ConfigObject {
 	private String statExclusions;
 	@FieldDescribe("最大提交数据限制(M),限制有所上传的内容大小,包括附件.")
 	private Integer maxFormContent;
+	@FieldDescribe("暴露jest接口.")
+	private Boolean exposeJest;
+
+	public Boolean getExposeJest() {
+		return BooleanUtils.isNotFalse(this.exposeJest);
+	}
 
 	public Integer getMaxFormContent() {
 		return ((null == maxFormContent) || (maxFormContent < 1)) ? DEFAULT_MAXFORMCONTENT : maxFormContent;

+ 5 - 1
o2server/x_base_core_project/src/main/java/com/x/base/core/project/config/Components.java

@@ -39,12 +39,13 @@ public class Components extends ConfigObject {
 	public static final String NAME_CALENDAR = "Calendar";
 	public static final String NAME_ANN = "ANN";
 	public static final String NAME_SEARCH = "Search";
+	public static final String NAME_IM = "IMV2";
 
 	public static List<String> SYSTEM_NAME_NAMES = ListTools.toList(NAME_SETTING, NAME_ORG, NAME_CMSMANAGER,
 			NAME_APPLICATIONEXPLORER, NAME_PORTALEXPLORER, NAME_DATAEXPLORER, NAME_SERVICEMANAGER, NAME_APPMARKET,
 			NAME_APPCENTER, NAME_LOGVIEWER, NAME_PROFILE, NAME_BAM, NAME_CMS, NAME_TASKCENTER, NAME_HOMEPAGE,
 			NAME_HOTARTICLE, NAME_FILE, NAME_NOTE, NAME_MEETING, NAME_ONLINEMEETING, NAME_ATTENDANCE, NAME_FORUM,
-			NAME_MINDER, NAME_CALENDAR, NAME_ANN, NAME_SEARCH);
+			NAME_MINDER, NAME_CALENDAR, NAME_ANN, NAME_SEARCH, NAME_IM);
 
 	public static final String APPICON_PNG = "appicon.png";
 
@@ -107,6 +108,8 @@ public class Components extends ConfigObject {
 			return new Component(NAME_ANN, NAME_ANN, "神经网络", APPICON_PNG, 24, Component.TYPE_SYSTEM);
 		case NAME_SEARCH:
 			return new Component(NAME_SEARCH, NAME_SEARCH, "搜索", APPICON_PNG, 25, Component.TYPE_SYSTEM);
+		case NAME_IM:
+			return new Component(NAME_IM, NAME_IM, "聊天", APPICON_PNG, 26, Component.TYPE_SYSTEM);
 		default:
 			return null;
 		}
@@ -140,6 +143,7 @@ public class Components extends ConfigObject {
 		o.systems.add(systemComponent(NAME_CALENDAR));
 		o.systems.add(systemComponent(NAME_ANN));
 		o.systems.add(systemComponent(NAME_SEARCH));
+		o.systems.add(systemComponent(NAME_IM));
 		return o;
 	}
 

+ 2 - 0
o2server/x_base_core_project/src/main/java/com/x/base/core/project/http/FilterTools.java

@@ -42,4 +42,6 @@ public class FilterTools {
 
 	public static final String Application_Not_Cipher_Json = "{\"type\": \"error\", \"message\": \"not cipher.\"}";
 
+	public static final String Application_403_Json = "{\"type\": \"error\", \"message\": \"403\"}";
+
 }

+ 36 - 0
o2server/x_base_core_project/src/main/java/com/x/base/core/project/jaxrs/DenialOfServiceFilter.java

@@ -0,0 +1,36 @@
+package com.x.base.core.project.jaxrs;
+
+import java.io.IOException;
+
+import javax.servlet.Filter;
+import javax.servlet.FilterChain;
+import javax.servlet.FilterConfig;
+import javax.servlet.ServletException;
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletResponse;
+import javax.servlet.http.HttpServletResponse;
+
+import com.x.base.core.project.http.FilterTools;
+
+public class DenialOfServiceFilter implements Filter {
+
+	@Override
+	public void doFilter(ServletRequest req, ServletResponse res, FilterChain filterChain)
+			throws IOException, ServletException {
+		HttpServletResponse response = (HttpServletResponse) res;
+		response.setStatus(403);
+		response.setHeader("Content-Type", "application/json;charset=UTF-8");
+		response.getWriter().write(FilterTools.Application_403_Json);
+	}
+
+	@Override
+	public void init(FilterConfig filterConfig) throws ServletException {
+		// nothing
+	}
+
+	@Override
+	public void destroy() {
+		// nothing
+	}
+
+}

+ 8 - 0
o2server/x_console/src/main/java/com/x/server/console/server/application/ApplicationServerTools.java

@@ -69,6 +69,7 @@ import com.x.base.core.project.annotation.ModuleCategory;
 import com.x.base.core.project.annotation.ModuleType;
 import com.x.base.core.project.config.ApplicationServer;
 import com.x.base.core.project.config.Config;
+import com.x.base.core.project.jaxrs.DenialOfServiceFilter;
 import com.x.base.core.project.logger.Logger;
 import com.x.base.core.project.logger.LoggerFactory;
 import com.x.base.core.project.tools.ClassLoaderTools;
@@ -183,6 +184,13 @@ public class ApplicationServerTools extends JettySeverTools {
 						statServletHolder.setInitParameter("sessionStatEnable", BooleanUtils.toStringTrueFalse(false));
 						webApp.addServlet(statServletHolder, "/druid/*");
 					}
+					if (BooleanUtils.isFalse(applicationServer.getExposeJest())) {
+						FilterHolder denialOfServiceFilterHolder = new FilterHolder(new DenialOfServiceFilter());
+						webApp.addFilter(denialOfServiceFilterHolder, "/jest/index.html",
+								EnumSet.of(DispatcherType.REQUEST));
+						webApp.addFilter(denialOfServiceFilterHolder, "/jest/list.html",
+								EnumSet.of(DispatcherType.REQUEST));
+					}
 					handlers.addHandler(webApp);
 				} else if (Files.exists(dir)) {
 					PathUtils.cleanDirectory(dir);

+ 6 - 0
o2server/x_console/src/main/java/com/x/server/console/server/center/CenterServerTools.java

@@ -27,6 +27,7 @@ import com.alibaba.druid.support.http.WebStatFilter;
 import com.x.base.core.project.x_program_center;
 import com.x.base.core.project.config.CenterServer;
 import com.x.base.core.project.config.Config;
+import com.x.base.core.project.jaxrs.DenialOfServiceFilter;
 import com.x.base.core.project.logger.Logger;
 import com.x.base.core.project.logger.LoggerFactory;
 import com.x.base.core.project.tools.DefaultCharset;
@@ -72,6 +73,11 @@ public class CenterServerTools extends JettySeverTools {
 				statServletHolder.setInitParameter("sessionStatEnable", "false");
 				webApp.addServlet(statServletHolder, "/druid/*");
 			}
+			if (BooleanUtils.isFalse(centerServer.getExposeJest())) {
+				FilterHolder denialOfServiceFilterHolder = new FilterHolder(new DenialOfServiceFilter());
+				webApp.addFilter(denialOfServiceFilterHolder, "/jest/index.html", EnumSet.of(DispatcherType.REQUEST));
+				webApp.addFilter(denialOfServiceFilterHolder, "/jest/list.html", EnumSet.of(DispatcherType.REQUEST));
+			}
 			handlers.addHandler(webApp);
 		} else {
 			throw new IOException("centerServer war not exist.");

+ 18 - 9
o2web/source/x_component_process_Xform/Form.js

@@ -3853,16 +3853,25 @@ MWF.xApplication.process.Xform.Form = MWF.APPForm = new Class({
                 _self.app.action.setReaded(function () {
                     this.fireEvent("afterReaded");
                     _self.app.reload();
+                    if (layout.mobile) {
+
+                        //移动端页面关闭
+                        _self.finishOnMobile()
+                    } else {
+                        this.close();
+                    }
                 }.bind(_self), null, read.id, read);
             } else {
                 _self.app.reload();
+                if (layout.mobile) {
+
+                    //移动端页面关闭
+                    _self.finishOnMobile()
+                } else {
+                    this.close();
+                }
             }
-            if (layout.mobile) {
-                //移动端页面关闭
-                _self.finishOnMobile()
-            } else {
-                this.close();
-            }
+            
         }, function () {
             this.close();
         }, null, this.app.content, this.json.confirmStyle);
@@ -3918,11 +3927,11 @@ MWF.xApplication.process.Xform.Form = MWF.APPForm = new Class({
         var _self = this;
         //新建检查
         this.workAction.checkDraft(this.businessData.work.id, function (json) {
-            var str = JSON.stringify(json);
-            // console.log("===========success==============");
+            // var str = JSON.stringify(json);
+
             _self.finishOnMobileReal();
         }.bind(this), function () {
-            console.log("===========fail..==============");
+
             _self.finishOnMobileReal();
         }, false);