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

Merge branch 'fix/message' into 'develop'

Fix/message ras 再次提交

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

+ 8 - 2
o2server/x_console/src/main/java/com/x/server/console/action/ActionCreateEncryptKey.java

@@ -8,6 +8,7 @@ import java.io.IOException;
 import java.io.InputStreamReader;
 import java.security.KeyPair;
 import java.security.KeyPairGenerator;
+import java.security.SecureRandom;
 import java.util.Date;
 
 import org.apache.commons.codec.binary.Base64;
@@ -33,12 +34,15 @@ public class ActionCreateEncryptKey extends ActionBase {
 
 	public boolean execute(String password) throws Exception {
 		this.init();
+		/*
 		if (!StringUtils.equals(Config.token().getPassword(), password)) {
 			logger.print("password not match.");
 			return false;
-		}
+		}*/
+		
 		KeyPairGenerator generator = KeyPairGenerator.getInstance("RSA");
-		generator.initialize(1024);
+		SecureRandom random= new SecureRandom(password.getBytes());
+		generator.initialize(1024, random);
 		KeyPair pair = generator.generateKeyPair();
 		File publicKeyFile = new File(Config.base(), "config/public.key");
 		File privateKeyFile = new File(Config.base(), "config/private.key");
@@ -51,6 +55,8 @@ public class ActionCreateEncryptKey extends ActionBase {
 		//为前端提供publicKey,为密码加密
 		this.writeConfigFile(new String(Base64.encodeBase64(pair.getPublic().getEncoded())));
 		
+		System.out.println("public key: config/public.key, private key: config/private.key, create key success!");
+		
 		return true;
 	}
 	

+ 32 - 3
o2server/x_program_center/src/main/java/com/x/program/center/jaxrs/command/ActionCommand.java

@@ -1,5 +1,6 @@
 package com.x.program.center.jaxrs.command;
 
+import java.io.ByteArrayInputStream;
 import java.io.DataInputStream;
 import java.io.DataOutputStream;
 import java.net.Socket;
@@ -7,9 +8,13 @@ import java.text.SimpleDateFormat;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+
 import com.google.gson.JsonElement;
 import com.x.base.core.project.annotation.FieldDescribe;
 import com.x.base.core.project.config.Config;
+import com.x.base.core.project.config.Nodes;
 import com.x.base.core.project.gson.GsonPropertyObject;
 import com.x.base.core.project.gson.XGsonBuilder;
 import com.x.base.core.project.http.ActionResult;
@@ -23,13 +28,37 @@ public class ActionCommand extends BaseAction {
 	
 	
 	private static Logger logger = LoggerFactory.getLogger(ActionCommand.class);
-	ActionResult<Wo> execute(EffectivePerson effectivePerson, JsonElement jsonElement) throws Exception {
+	ActionResult<Wo> execute(HttpServletRequest request, EffectivePerson effectivePerson, JsonElement jsonElement) throws Exception {
 		ActionResult<Wo> result = new ActionResult<>();
 		Wi wi = this.convertToWrapIn(jsonElement, Wi.class);
 		String ctl = wi.getCtl();
 		String nodeName = wi.getNodeName() ;
 		int nodePort =Integer.parseInt(wi.getNodePort());
-		Wo wo = executeCommand(ctl, nodeName, nodePort);
+		String curServer = request.getLocalAddr();
+		Wo wo = null;
+		if(nodeName.equalsIgnoreCase("*")) {
+			Nodes nodes = Config.nodes();
+			for (String node : nodes.keySet()){
+				//先其他服务器
+				if(!node.equalsIgnoreCase(curServer)) {
+					if(nodes.get(node).getApplication().getEnable() || nodes.get(node).getCenter().getEnable()){
+						 wo = executeCommand(ctl, node, nodePort);
+					}
+				}
+			}
+			
+			for (String node : nodes.keySet()){
+				 //后当前服务器
+				if(node.equalsIgnoreCase(curServer)) {
+				    if(nodes.get(curServer).getApplication().getEnable() || nodes.get(curServer).getCenter().getEnable()){
+				    	  wo = executeCommand(ctl, node, nodePort);
+			        }
+				}
+			}
+		}else {
+		   wo = executeCommand(ctl, nodeName, nodePort);
+		}
+		
 		result.setData(wo);
 		return result;
 	}
@@ -63,7 +92,7 @@ public class ActionCommand extends BaseAction {
 	public static class Wi  extends GsonPropertyObject{
 		@FieldDescribe("命令名称")
 		private String ctl;
-		@FieldDescribe("服务器地址")
+		@FieldDescribe("服务器地址(*代表多台应用服务器)")
 		private String nodeName;
 		@FieldDescribe("服务端口")
 		private String nodePort;

+ 14 - 7
o2server/x_program_center/src/main/java/com/x/program/center/jaxrs/command/ActionUploadFile.java

@@ -29,7 +29,7 @@ import com.x.base.core.project.tools.Crypto;
 public class ActionUploadFile  extends BaseAction {
     private static Logger logger = LoggerFactory.getLogger(CommandAction.class);
 
-	ActionResult<Wo> execute(EffectivePerson effectivePerson,HttpServletRequest request, String ctl, String nodeName , String nodePort, InputStream fileInputStream, FormDataContentDisposition disposition) throws Exception {
+	ActionResult<Wo> execute(HttpServletRequest request ,EffectivePerson effectivePerson, String ctl, String nodeName , String nodePort, InputStream fileInputStream, FormDataContentDisposition disposition) throws Exception {
 			ActionResult<Wo> result = new ActionResult<>();	
 			Wo wo  = null;
 			String curServer = request.getLocalAddr();
@@ -38,22 +38,30 @@ public class ActionUploadFile  extends BaseAction {
 			fileInputStream.close();
 			if(nodeName.equalsIgnoreCase("*")) {
 				Nodes nodes = Config.nodes();
+				logger.info("先其他服务器");
 				for (String node : nodes.keySet()){
 					//先其他服务器
 					if(!node.equalsIgnoreCase(curServer)) {
 						if(nodes.get(node).getApplication().getEnable() || nodes.get(node).getCenter().getEnable()){
 							 byteArrayInputStream = new ByteArrayInputStream(byteArray);
+								logger.info("node="+node);
 					      wo = executeCommand( ctl,  node ,  nodes.get(node).nodeAgentPort(),  byteArrayInputStream, disposition);
 						}
 					}
-				   //后当前服务器
-				    if(nodes.get(curServer).getApplication().getEnable() || nodes.get(curServer).getCenter().getEnable()){
+				}
+				
+				logger.info("后当前服务器");
+				for(String node : nodes.keySet()) {
+					   //后当前服务器
+					if(node.equalsIgnoreCase(curServer)) {
+				       if(nodes.get(curServer).getApplication().getEnable() || nodes.get(curServer).getCenter().getEnable()){
 				        	 byteArrayInputStream = new ByteArrayInputStream(byteArray);
-					      wo = executeCommand( ctl,  curServer ,  nodes.get(curServer).nodeAgentPort(),  byteArrayInputStream, disposition);
-			        }
+				        		logger.info("node="+node);
+					       wo = executeCommand( ctl,  node ,  nodes.get(curServer).nodeAgentPort(),  byteArrayInputStream, disposition);
+			          }
+					}
 				}
 			}else {
-				
 			     wo = executeCommand( ctl,  nodeName ,  Integer.parseInt(nodePort),  byteArrayInputStream, disposition);
 			}
 			
@@ -100,7 +108,6 @@ public class ActionUploadFile  extends BaseAction {
 			}
 		} catch (Exception ex) {
 			wo.setStatus("fail");
-			//logger.warn("socket dispatch executeCommand to {}:{} error={}", nodeName, nodePort, ex.getMessage());
 		}
         SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
 		wo.setTime(df.format(new Date()));

+ 3 - 2
o2server/x_program_center/src/main/java/com/x/program/center/jaxrs/command/CommandAction.java

@@ -45,7 +45,8 @@ public class CommandAction<Wo> extends StandardJaxrsAction {
 		EffectivePerson effectivePerson = this.effectivePerson(request);
 		ActionResult<ActionCommand.Wo> result = new ActionResult<>();
 		try {
-			result = new ActionCommand().execute(effectivePerson, jsonElement);
+			
+			result = new ActionCommand().execute(request,effectivePerson, jsonElement);
 		} catch (Exception e) {
 			e.printStackTrace();
 			result.error(e);
@@ -85,7 +86,7 @@ public class CommandAction<Wo> extends StandardJaxrsAction {
 		ActionResult<ActionUploadFile.Wo> result = new ActionResult<>();
 		EffectivePerson effectivePerson = this.effectivePerson(request);
 		try {
-			result = new ActionUploadFile().execute(effectivePerson, request ,ctl, nodeName, nodePort, fileInputStream, disposition);
+			result = new ActionUploadFile().execute(request , effectivePerson, ctl, nodeName, nodePort, fileInputStream, disposition);
 		} catch (Exception e) {
 			logger.error(e, effectivePerson, request, null);
 			result.error(e);