Commit 7ccf1612 authored by chenchao.deng's avatar chenchao.deng

短信

parent 9a5dce7d
...@@ -26,7 +26,7 @@ public class SmsUtils { ...@@ -26,7 +26,7 @@ public class SmsUtils {
*/ */
public static String sendSmsOTP(String phone) { public static String sendSmsOTP(String phone) {
String randomCode = createRandom(true, 6); String randomCode = createRandom(true, 6);
DefaultProfile profile = DefaultProfile.getProfile("default", "LTAI5tQ6KMaEbeFCJ1wd4Kuk", "5M5ILAkQu2wU83jcpTAeYN0sBj3JTN"); DefaultProfile profile = DefaultProfile.getProfile("default", "LTAI5tEdz1DY4A4oYUawUuNH", "8KWmYgO0QIicZpyulhEwUhZqStrTwe");
IAcsClient client = new DefaultAcsClient(profile); IAcsClient client = new DefaultAcsClient(profile);
CommonRequest request = new CommonRequest(); CommonRequest request = new CommonRequest();
...@@ -37,7 +37,7 @@ public class SmsUtils { ...@@ -37,7 +37,7 @@ public class SmsUtils {
request.setAction("SendSms"); request.setAction("SendSms");
request.putQueryParameter("SignName", "防关联浏览器"); request.putQueryParameter("SignName", "防关联浏览器");
request.putQueryParameter("PhoneNumbers", phone); request.putQueryParameter("PhoneNumbers", phone);
request.putQueryParameter("TemplateCode", "SMS_174885489"); request.putQueryParameter("TemplateCode", "SMS_471410139");
request.putQueryParameter("TemplateParam", "{\"code\":\"" + randomCode + "\"}"); request.putQueryParameter("TemplateParam", "{\"code\":\"" + randomCode + "\"}");
try { try {
CommonResponse response = client.getCommonResponse(request); CommonResponse response = client.getCommonResponse(request);
......
package com.edgec.browserbackend.browser.domain;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
/**
* 云平台配置表
*
* @Author: Chen
* @Date: 2024年8月1日
*/
@Getter
@Setter
@NoArgsConstructor
@Document(collection = "cloudPlatformConfig")
@JsonIgnoreProperties(ignoreUnknown = true)
public class CloudPlatformConfig {
@Id
private String id;
private String platform;//云平台 ali、tencent
private String regionId;//地域id
private String templateId;//云平台模板id
private String usableArea;//可用区
}
package com.edgec.browserbackend.browser.repository;
import com.edgec.browserbackend.browser.domain.CloudPlatformConfig;
import com.edgec.browserbackend.browser.domain.CloudPlatformOrder;
import java.util.List;
import org.springframework.data.mongodb.repository.MongoRepository;
/**
* @Description //云平台模板 respository
* @Date 2024年8月1日
* @Author Chen
**/
public interface CloudPlatformConfigRepository extends MongoRepository<CloudPlatformConfig, String> {
CloudPlatformConfig findByPlatformAndRegionId(String platform, String regionId);
}
...@@ -12,6 +12,7 @@ import com.edgec.browserbackend.account.domain.QueryIpUrlList; ...@@ -12,6 +12,7 @@ import com.edgec.browserbackend.account.domain.QueryIpUrlList;
import com.edgec.browserbackend.account.repository.AccountRepository; import com.edgec.browserbackend.account.repository.AccountRepository;
import com.edgec.browserbackend.account.repository.QueryIpUrlListRepository; import com.edgec.browserbackend.account.repository.QueryIpUrlListRepository;
import com.edgec.browserbackend.account.service.AccountService; import com.edgec.browserbackend.account.service.AccountService;
import com.edgec.browserbackend.browser.domain.CloudPlatformConfig;
import com.edgec.browserbackend.browser.domain.CloudPlatformOrder; import com.edgec.browserbackend.browser.domain.CloudPlatformOrder;
import com.edgec.browserbackend.browser.domain.IpCountRecord; import com.edgec.browserbackend.browser.domain.IpCountRecord;
import com.edgec.browserbackend.browser.domain.IpResource; import com.edgec.browserbackend.browser.domain.IpResource;
...@@ -20,6 +21,7 @@ import com.edgec.browserbackend.browser.dto.DeleteIpResultDto; ...@@ -20,6 +21,7 @@ import com.edgec.browserbackend.browser.dto.DeleteIpResultDto;
import com.edgec.browserbackend.browser.dto.IpBuyResultDto; import com.edgec.browserbackend.browser.dto.IpBuyResultDto;
import com.edgec.browserbackend.browser.dto.IpInfoResultDto; import com.edgec.browserbackend.browser.dto.IpInfoResultDto;
import com.edgec.browserbackend.browser.dto.ShopRequestDto; import com.edgec.browserbackend.browser.dto.ShopRequestDto;
import com.edgec.browserbackend.browser.repository.CloudPlatformConfigRepository;
import com.edgec.browserbackend.browser.repository.CloudPlatformOrderRepository; import com.edgec.browserbackend.browser.repository.CloudPlatformOrderRepository;
import com.edgec.browserbackend.browser.repository.IpCountRecordRepository; import com.edgec.browserbackend.browser.repository.IpCountRecordRepository;
import com.edgec.browserbackend.browser.repository.IpResourceRepository; import com.edgec.browserbackend.browser.repository.IpResourceRepository;
...@@ -29,6 +31,7 @@ import com.edgec.browserbackend.common.commons.utils.NotifyUtils; ...@@ -29,6 +31,7 @@ import com.edgec.browserbackend.common.commons.utils.NotifyUtils;
import com.edgec.browserbackend.common.enums.RegionMappingEnum; import com.edgec.browserbackend.common.enums.RegionMappingEnum;
import com.edgec.browserbackend.common.utils.ThreadPoolUtils; import com.edgec.browserbackend.common.utils.ThreadPoolUtils;
import com.edgec.browserbackend.common.utils.Trans; import com.edgec.browserbackend.common.utils.Trans;
import javax.annotation.Resource;
import okhttp3.*; import okhttp3.*;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
...@@ -79,9 +82,12 @@ public class BrowserTask { ...@@ -79,9 +82,12 @@ public class BrowserTask {
@Value("${spring.profiles.active}") @Value("${spring.profiles.active}")
private String profiles; private String profiles;
@Autowired @Resource
private CloudPlatformOrderRepository cloudPlatformOrderRepository; private CloudPlatformOrderRepository cloudPlatformOrderRepository;
@Resource
private CloudPlatformConfigRepository cloudPlatformConfigRepository;
public Map<String, String> buildGetHeader() { public Map<String, String> buildGetHeader() {
Map<String, String> headers = new HashMap<>(); Map<String, String> headers = new HashMap<>();
headers.put("Content-Type", "application/json"); headers.put("Content-Type", "application/json");
...@@ -116,7 +122,7 @@ public class BrowserTask { ...@@ -116,7 +122,7 @@ public class BrowserTask {
/** /**
* 购买ip的定时任务,每分钟一次(新逻辑 * 购买ip的定时任务,每分钟一次(新逻辑
*/ */
//@Scheduled(cron = "0 0/1 * * * ?") @Scheduled(cron = "0 0/1 * * * ?")
public void buyIpNewTasks() { public void buyIpNewTasks() {
String logs = "【BrowserTask -- buyIpNewTasks】 "; String logs = "【BrowserTask -- buyIpNewTasks】 ";
log.info("{}, ****************ip resource purchase start****************", logs); log.info("{}, ****************ip resource purchase start****************", logs);
...@@ -151,8 +157,15 @@ public class BrowserTask { ...@@ -151,8 +157,15 @@ public class BrowserTask {
log.error("buyIpNewTasks-购买ip error:查询不到阿里云映射api-region:{}",ipResource.getRegion()); log.error("buyIpNewTasks-购买ip error:查询不到阿里云映射api-region:{}",ipResource.getRegion());
return; return;
} }
CloudPlatformConfig config = cloudPlatformConfigRepository.findByPlatformAndRegionId("ali",
aliRegion);
if(Objects.isNull(config)){
log.error("buyIpNewTasks-购买ip error:查询不到阿里云模板配置-region:{}", aliRegion);
return;
}
RunInstancesResponse response = AliEcsClient.runInstances( RunInstancesResponse response = AliEcsClient.runInstances(
ipResource.getOwner(), ipResource.getUsername(),ipResource.getPassword(), aliRegion); ipResource.getOwner(), ipResource.getUsername(),ipResource.getPassword(), config);
if (null ==response || !response.getStatusCode().equals(200)) { if (null ==response || !response.getStatusCode().equals(200)) {
log.error("{}, fail to buy ip : {}", logs, JSON.toJSON(response)); log.error("{}, fail to buy ip : {}", logs, JSON.toJSON(response));
}else if(Objects.nonNull(response.getBody())){ }else if(Objects.nonNull(response.getBody())){
...@@ -692,5 +705,6 @@ public class BrowserTask { ...@@ -692,5 +705,6 @@ public class BrowserTask {
response.close(); response.close();
return rs; return rs;
} }
} }
} }
...@@ -12,9 +12,13 @@ import com.aliyun.sdk.service.ecs20140526.models.RenewInstanceRequest; ...@@ -12,9 +12,13 @@ import com.aliyun.sdk.service.ecs20140526.models.RenewInstanceRequest;
import com.aliyun.sdk.service.ecs20140526.models.RenewInstanceResponse; import com.aliyun.sdk.service.ecs20140526.models.RenewInstanceResponse;
import com.aliyun.sdk.service.ecs20140526.models.RunInstancesRequest; import com.aliyun.sdk.service.ecs20140526.models.RunInstancesRequest;
import com.aliyun.sdk.service.ecs20140526.models.RunInstancesResponse; import com.aliyun.sdk.service.ecs20140526.models.RunInstancesResponse;
import com.edgec.browserbackend.browser.domain.CloudPlatformConfig;
import com.edgec.browserbackend.browser.repository.CloudPlatformConfigRepository;
import com.edgec.browserbackend.common.utils.Aes; import com.edgec.browserbackend.common.utils.Aes;
import darabonba.core.client.ClientOverrideConfiguration; import darabonba.core.client.ClientOverrideConfiguration;
import java.util.Objects;
import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletableFuture;
import javax.annotation.Resource;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -31,6 +35,9 @@ import org.springframework.stereotype.Service; ...@@ -31,6 +35,9 @@ import org.springframework.stereotype.Service;
public class AliEcsClient { public class AliEcsClient {
private final CloudPlatformConfigRepository cloudPlatformConfigRepository;
//access_key_id //access_key_id
private static String getAccessKeyId() { private static String getAccessKeyId() {
return "LTAI5tEdz1DY4A4oYUawUuNH"; return "LTAI5tEdz1DY4A4oYUawUuNH";
...@@ -42,9 +49,6 @@ public class AliEcsClient { ...@@ -42,9 +49,6 @@ public class AliEcsClient {
} }
//launch_template_id //launch_template_id
private static String getLaunchTemplateId() {
return "lt-wz9g4apcsdali7t0lec8";
}
//脚本userData //脚本userData
private static String getUserData() { private static String getUserData() {
...@@ -81,19 +85,18 @@ public class AliEcsClient { ...@@ -81,19 +85,18 @@ public class AliEcsClient {
/** /**
* 创建并运行实例 * 创建并运行实例
*/ */
public static RunInstancesResponse runInstances(String owner,String username, String password, String regionId) { public static RunInstancesResponse runInstances(String owner,String username, String password, CloudPlatformConfig config) {
AsyncClient client = createClient(regionId); AsyncClient client = createClient(config.getRegionId());
RunInstancesResponse runInstancesResponse = null; RunInstancesResponse runInstancesResponse = null;
String userData = String.format(getUserData(), username, password, username); String userData = String.format(getUserData(), username, password, username);
try { try {
RunInstancesRequest runInstancesRequest = RunInstancesRequest.builder() RunInstancesRequest runInstancesRequest = RunInstancesRequest.builder()
.regionId(regionId) .regionId(config.getRegionId())
.launchTemplateId("lt-wz9g4apcsdali7t0lec8") .launchTemplateId(config.getTemplateId())
.userData(Aes.base64Encode(userData.getBytes())) .userData(Aes.base64Encode(userData.getBytes()))
//.keyPairName("proxy-ip") //.keyPairName("proxy-ip")
.build(); .build();
log.info("调用aliEcs创建并运行实例,入参:owner:{},regionId:{}", owner, regionId); log.info("调用aliEcs创建并运行实例,入参:owner:{},regionId:{}", owner, config.getRegionId());
CompletableFuture<RunInstancesResponse> response = client.runInstances( CompletableFuture<RunInstancesResponse> response = client.runInstances(
runInstancesRequest); runInstancesRequest);
runInstancesResponse = response.get(); runInstancesResponse = response.get();
......
...@@ -18,7 +18,7 @@ public class SmsUtils { ...@@ -18,7 +18,7 @@ public class SmsUtils {
private static final IAcsClient iAcsClient; private static final IAcsClient iAcsClient;
static { static {
DefaultProfile profile = DefaultProfile.getProfile("default", "LTAIODPWRh6stFca", "0SBDR59HsquSDEj9CFXNt9njTs2cCv"); DefaultProfile profile = DefaultProfile.getProfile("default", "LTAI5tEdz1DY4A4oYUawUuNH", "8KWmYgO0QIicZpyulhEwUhZqStrTwe");
iAcsClient = new DefaultAcsClient(profile); iAcsClient = new DefaultAcsClient(profile);
} }
......
...@@ -62,17 +62,19 @@ public enum RegionMappingEnum { ...@@ -62,17 +62,19 @@ public enum RegionMappingEnum {
if(randomNumber == 0){ if(randomNumber == 0){
return RegionMappingEnum.US_CALIFORNIA; return RegionMappingEnum.US_CALIFORNIA;
}else { }else {
return US_VIRGINIA.US_VIRGINIA; return RegionMappingEnum.US_VIRGINIA;
} }
} }
public static RegionMappingEnum getCnRandom(){ public static RegionMappingEnum getCnRandom(){
Random random = new Random(); Random random = new Random();
int randomNumber = random.nextInt(2); int randomNumber = random.nextInt(3);
if(randomNumber == 0){ if(randomNumber == 0){
return RegionMappingEnum.US_CALIFORNIA; return RegionMappingEnum.CN_BJ;
}else if(randomNumber == 1){
return RegionMappingEnum.CN_HZ;
}else { }else {
return US_VIRGINIA.US_VIRGINIA; return RegionMappingEnum.CN_SZ;
} }
} }
......
...@@ -3,6 +3,9 @@ package com.edgec.browserbackend; ...@@ -3,6 +3,9 @@ package com.edgec.browserbackend;
import com.aliyun.sdk.service.ecs20140526.models.DeleteInstanceResponse; import com.aliyun.sdk.service.ecs20140526.models.DeleteInstanceResponse;
import com.edgec.browserbackend.account.domain.UserBalance; import com.edgec.browserbackend.account.domain.UserBalance;
import com.edgec.browserbackend.account.repository.UserBalanceRepository; import com.edgec.browserbackend.account.repository.UserBalanceRepository;
import com.edgec.browserbackend.account.service.SmsUtils;
import com.edgec.browserbackend.browser.domain.CloudPlatformConfig;
import com.edgec.browserbackend.browser.repository.CloudPlatformConfigRepository;
import com.edgec.browserbackend.browser.task.BrowserTask; import com.edgec.browserbackend.browser.task.BrowserTask;
import com.edgec.browserbackend.common.client.AliEcsClient; import com.edgec.browserbackend.common.client.AliEcsClient;
import com.edgec.browserbackend.common.utils.Aes; import com.edgec.browserbackend.common.utils.Aes;
...@@ -19,6 +22,8 @@ class BrowserBackendApplicationTests { ...@@ -19,6 +22,8 @@ class BrowserBackendApplicationTests {
@Resource @Resource
private BrowserTask browserTask; private BrowserTask browserTask;
@Resource
private CloudPlatformConfigRepository cloudPlatformConfigRepository;
@Test @Test
void contextLoads() { void contextLoads() {
UserBalance userBalance = new UserBalance(); UserBalance userBalance = new UserBalance();
...@@ -30,27 +35,17 @@ class BrowserBackendApplicationTests { ...@@ -30,27 +35,17 @@ class BrowserBackendApplicationTests {
@Test @Test
void buyEcsTest() throws Exception { void buyEcsTest() throws Exception {
CloudPlatformConfig config = cloudPlatformConfigRepository.findByPlatformAndRegionId("ali",
browserTask.queryIpNewTasks(); "cn-hongkong");
//AliEcsClient.runInstances("11","cn-shenzhen","2222"); //browserTask.queryIpNewTasks();
//AliEcsClient.runInstances("111","ceshi11","2222",config);
//AliEcsClient.getDescribeInstances("测试","i-wz9hf0i13xj6h904k14p","cn-shenzhen"); //AliEcsClient.getDescribeInstances("测试","i-wz9hf0i13xj6h904k14p","cn-shenzhen");
//DeleteInstanceResponse response = AliEcsClient.deleteInstance("测试", "i-wz91k777e49z85nt5xl3","cn-shenzhen"); DeleteInstanceResponse response = AliEcsClient.deleteInstance("测试", "i-j6ciop90gd68yg5n0sqo","cn-hongkong");
} }
@Test @Test
void test3() throws Exception { void test3() throws Exception {
String userData = "#!/bin/sh\n" SmsUtils.sendSmsOTP("18711016574");
+ "echo \"users 3ASka71a:CL:7asMpA16\n"
+ "allow 3ASka71a *\n"
+ "auth strong\n"
+ "proxy -p8080\n"
+ "proxy -p8443 -a\n"
+ "socks -p1080\n"
+ "flush\" | tee /etc/3proxy.cfg\n"
+ "3proxy -C 3proxy.cfg";
System.out.println(Aes.base64Encode(userData.getBytes()));
String userData1 = String.format(userData, "ces11", "123123", "ces11");
System.out.println(userData1);
} }
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment