RubberSheetingUtil.java 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206
  1. package com.fdkankan.common.util;
  2. import lombok.extern.slf4j.Slf4j;
  3. import org.springframework.beans.factory.annotation.Value;
  4. import org.springframework.stereotype.Component;
  5. import javax.crypto.Mac;
  6. import javax.crypto.spec.SecretKeySpec;
  7. import java.io.UnsupportedEncodingException;
  8. import java.net.URLEncoder;
  9. import java.text.SimpleDateFormat;
  10. import java.util.*;
  11. /**
  12. * Created by Hb_zzZ on 2020/8/25.
  13. */
  14. @Slf4j
  15. @Component
  16. public class RubberSheetingUtil {
  17. @Value("${scaling.group.id}")
  18. private String ScalingGroupId;
  19. @Value("${scaling.rule.ari}")
  20. private String ScalingRuleAri;
  21. private static String AccessKeyId = "LTAI4GKZQBM1zZZZBJK7nGjR";
  22. private String sign(String action, Map<String, String> parameters) throws Exception{
  23. final String HTTP_METHOD = "GET";
  24. final String ALGORITHM = "HmacSHA1";
  25. final String ENCODING = "UTF-8";
  26. String keySecret = "bo1ura8KODXASVyZ5fofy0fWFILumz&";
  27. // 对参数进行排序
  28. String[] sortedKeys = parameters.keySet().toArray(new String[]{});
  29. Arrays.sort(sortedKeys);
  30. final String SEPARATOR = "&";
  31. // 生成stringToSign字符串
  32. StringBuilder stringToSign = new StringBuilder();
  33. stringToSign.append(HTTP_METHOD).append(SEPARATOR);
  34. stringToSign.append(percentEncode("/")).append(SEPARATOR);
  35. StringBuilder canonicalizedQueryString = new StringBuilder();
  36. for(String key : sortedKeys) {
  37. // 这里注意对key和value进行编码
  38. canonicalizedQueryString.append("&")
  39. .append(percentEncode(key)).append("=")
  40. .append(percentEncode(parameters.get(key)));
  41. }
  42. // System.out.println("canonicalizedQueryString:" + canonicalizedQueryString.toString());
  43. // 这里注意对canonicalizedQueryString进行编码
  44. stringToSign.append(percentEncode(
  45. canonicalizedQueryString.toString().substring(1)));
  46. // System.out.println("stringToSign:" + stringToSign.toString());
  47. Mac mac = Mac.getInstance(ALGORITHM);
  48. mac.init(new SecretKeySpec(keySecret.getBytes(ENCODING), ALGORITHM));
  49. byte[] signData = mac.doFinal(stringToSign.toString().getBytes(ENCODING));
  50. String signature = new String(org.apache.commons.codec.binary.Base64.encodeBase64(signData));
  51. return signature;
  52. }
  53. private static final String ISO8601_DATE_FORMAT = "yyyy-MM-dd'T'HH:mm:ss'Z'";
  54. private static String formatIso8601Date(Date date) {
  55. SimpleDateFormat df = new SimpleDateFormat(ISO8601_DATE_FORMAT);
  56. df.setTimeZone(new SimpleTimeZone(0, "GMT"));
  57. return df.format(date);
  58. }
  59. private static final String ENCODING = "UTF-8";
  60. private static String percentEncode(String value) throws UnsupportedEncodingException {
  61. return value != null ? URLEncoder.encode(value, ENCODING).replace("+", "%20").replace("*", "%2A").replace("%7E", "~") : null;
  62. }
  63. public static void main(String[] args) {
  64. String text = "";
  65. for(int i = 0, len = 100; i < len; i ++){
  66. // createEcs();
  67. }
  68. // System.out.println(deleteEcs("i-wz95huv20p8v6csu6q1q"));
  69. // try{
  70. // System.out.println(FileUtils.readFile("C:\\Users\\hisun\\Downloads\\hosts.txt"));
  71. // System.out.println(1);
  72. // }catch (Exception e){
  73. // e.printStackTrace();
  74. // }
  75. }
  76. public String createEcs(){
  77. try {
  78. boolean tag = true;
  79. Map<String, String> parameters = null;
  80. while (tag){
  81. parameters = new HashMap<String, String>();
  82. // 加入请求参数
  83. parameters.put("Action", "ExecuteScalingRule");
  84. parameters.put("ScalingRuleAri", ScalingRuleAri);
  85. parameters.put("Version", "2014-08-28");
  86. parameters.put("AccessKeyId", AccessKeyId);
  87. parameters.put("Timestamp", formatIso8601Date(new Date()));
  88. parameters.put("SignatureMethod", "HMAC-SHA1");
  89. parameters.put("SignatureVersion", "1.0");
  90. parameters.put("SignatureNonce", UUID.randomUUID().toString());
  91. parameters.put("Format", "JSON");
  92. String signature = sign("AttachInstances", parameters);
  93. System.out.println(signature);
  94. if(!signature.contains("+") && !signature.contains("/")){
  95. tag = false;
  96. }
  97. parameters.put("Signature", signature);
  98. }
  99. StringBuffer parameterBuffer = new StringBuffer();
  100. if (parameters != null) {
  101. Iterator iterator = parameters.keySet().iterator();
  102. String key = null;
  103. String value = null;
  104. while (iterator.hasNext()) {
  105. key = (String) iterator.next();
  106. if (parameters.get(key) != null) {
  107. value = (String) parameters.get(key);
  108. } else {
  109. value = "";
  110. }
  111. parameterBuffer.append(key).append("=").append(value);
  112. if (iterator.hasNext()) {
  113. parameterBuffer.append("&");
  114. }
  115. }
  116. }
  117. // System.out.println("POST parameter : " + parameterBuffer.toString());
  118. return OkHttpUtils.httpGet("http://ess.aliyuncs.com?" + parameterBuffer.toString());
  119. }catch (Exception e){
  120. e.printStackTrace();
  121. }
  122. return null;
  123. }
  124. public String deleteEcs(String id){
  125. try {
  126. boolean tag = true;
  127. Map<String, String> parameters = null;
  128. while (tag){
  129. parameters = new HashMap<String, String>();
  130. // 加入请求参数
  131. parameters.put("Action", "RemoveInstances");
  132. parameters.put("InstanceId.1", id);
  133. parameters.put("ScalingGroupId", ScalingGroupId);
  134. parameters.put("Version", "2014-08-28");
  135. parameters.put("AccessKeyId", AccessKeyId);
  136. parameters.put("Timestamp", formatIso8601Date(new Date()));
  137. parameters.put("SignatureMethod", "HMAC-SHA1");
  138. parameters.put("SignatureVersion", "1.0");
  139. parameters.put("SignatureNonce", UUID.randomUUID().toString());
  140. parameters.put("Format", "JSON");
  141. String signature = sign("AttachInstances", parameters);
  142. // System.out.println(signature);
  143. if(!signature.contains("+") && !signature.contains("/")){
  144. tag = false;
  145. }
  146. parameters.put("Signature", signature);
  147. }
  148. StringBuffer parameterBuffer = new StringBuffer();
  149. if (parameters != null) {
  150. Iterator iterator = parameters.keySet().iterator();
  151. String key = null;
  152. String value = null;
  153. while (iterator.hasNext()) {
  154. key = (String) iterator.next();
  155. if (parameters.get(key) != null) {
  156. value = (String) parameters.get(key);
  157. } else {
  158. value = "";
  159. }
  160. parameterBuffer.append(key).append("=").append(value);
  161. if (iterator.hasNext()) {
  162. parameterBuffer.append("&");
  163. }
  164. }
  165. }
  166. // System.out.println("POST parameter : " + parameterBuffer.toString());
  167. return OkHttpUtils.httpGet("http://ess.aliyuncs.com?" + parameterBuffer.toString());
  168. }catch (Exception e){
  169. e.printStackTrace();
  170. }
  171. return null;
  172. }
  173. }