Преглед изворни кода

'修bug关于集群时创建RSA、上传WAR'

o2wwx пре 5 година
родитељ
комит
4bfea18a50

+ 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;
 	}
 	

+ 33 - 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,38 @@ 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(EffectivePerson effectivePerson,HttpServletRequest request, 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 +93,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;

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

@@ -38,22 +38,29 @@ 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);
 			}
 			

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

@@ -45,7 +45,7 @@ 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(effectivePerson,request, jsonElement);
 		} catch (Exception e) {
 			e.printStackTrace();
 			result.error(e);