Commit 9eca9001 authored by SN150021's avatar SN150021

定时任务优化

parent 631af91e
......@@ -23,8 +23,14 @@ public class CloudPlatformOrder {
@Id
private String id;
private String ipResourceId;
private String owner;
private String platformOrderId;
private String ipResourceId;//ip资源id
private String regionId;
private String platformOrderId;//云平台订单id
private String platformType;//云平台类型
}
package com.edgec.browserbackend.browser.repository;
import com.edgec.browserbackend.browser.domain.CloudPlatformOrder;
import com.edgec.browserbackend.browser.domain.IpResource;
import java.util.List;
import org.springframework.data.mongodb.repository.MongoRepository;
/**
* @Description //云平台订单表
* @Date 2024/7/30 16:38
* @Author SN150021
**/
public interface CloudPlatformOrderRepository extends MongoRepository<CloudPlatformOrder, String> {
List<CloudPlatformOrder> findByOwnerAndIpResourceId(String owner, String ipResourceId);
}
......@@ -45,6 +45,18 @@ public class AliEcsClient {
return "lt-wz9g4apcsdali7t0lec8";
}
//脚本userData
private static String getUserData() {
return "#!/bin/sh\n"
+ "echo \"users %s:CL:%s\n"
+ "allow %s *\n"
+ "auth strong\n"
+ "proxy -p8080\n"
+ "proxy -p8443 -a\n"
+ "socks -p1080\n"
+ "flush\" | tee /etc/3proxy.cfg\n"
+ "3proxy -C 3proxy.cfg";
}
/*
* @Description //创建链接
* @Date 2024/7/25 10:32
......@@ -67,18 +79,11 @@ public class AliEcsClient {
/**
* 创建并运行实例
*/
public static RunInstancesResponse runInstances(String username, String regionId, String password) {
public static RunInstancesResponse runInstances(String owner,String username, String password, String regionId) {
AsyncClient client = createClient();
RunInstancesResponse runInstancesResponse = null;
String userData = "#!/bin/sh\n"
+ "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";
String userData = String.format(getUserData(), username, password, username);
try {
RunInstancesRequest runInstancesRequest = RunInstancesRequest.builder()
.regionId(regionId)
......@@ -86,11 +91,11 @@ public class AliEcsClient {
.userData(Aes.base64Encode(userData.getBytes()))
.keyPairName("proxy-ip")
.build();
log.info("调用aliEcs创建并运行实例,入参:userName:{},regionId:{}", username, regionId);
log.info("调用aliEcs创建并运行实例,入参:owner:{},regionId:{}", owner, regionId);
CompletableFuture<RunInstancesResponse> response = client.runInstances(
runInstancesRequest);
runInstancesResponse = response.get();
log.info("调用aliEcs创建并运行实例,响应参数:userName:{},response:{}", username,
log.info("调用aliEcs创建并运行实例,响应参数:owner:{},response:{}", owner,
JSON.toJSON(runInstancesResponse));
} catch (Exception e) {
log.error("fail to aliEcs runInstances {}", e.getMessage());
......@@ -117,7 +122,7 @@ public class AliEcsClient {
/**
* 查询单个实例
*/
public static DescribeInstancesResponse getDescribeInstances(String username, String instanceId,
public static DescribeInstancesResponse getDescribeInstances(String owner, String instanceId,
String regionId) {
AsyncClient client = createClient();
DescribeInstancesResponse resp = null;
......@@ -128,12 +133,12 @@ public class AliEcsClient {
.regionId(regionId)
.instanceIds(instanceIds)
.build();
log.info("调用aliEcs查询单个实例,入参:userName:{},regionId:{},instanceId:{}",
username, regionId, instanceId);
log.info("调用aliEcs查询单个实例,入参:owner:{},regionId:{},instanceId:{}",
owner, regionId, instanceId);
CompletableFuture<DescribeInstancesResponse> response = client.describeInstances(
describeInstancesRequest);
resp = response.get();
log.info("调用aliEcs查询单个实例,响应参数:userName:{},response:{}", username,
log.info("调用aliEcs查询单个实例,响应参数:owner:{},response:{}", owner,
JSON.toJSON(resp));
} catch (Exception e) {
......@@ -147,7 +152,7 @@ public class AliEcsClient {
/**
* 删除ECS
*/
public static DeleteInstanceResponse deleteInstance(String username, String instanceId) {
public static DeleteInstanceResponse deleteInstance(String owner, String instanceId) {
AsyncClient client = createClient();
DeleteInstanceResponse resp = null;
try {
......@@ -155,12 +160,12 @@ public class AliEcsClient {
.instanceId(instanceId)
.force(true)
.build();
log.info("调用aliEcs删除ECS实例,入参:userName:{},instanceId:{}",
username, instanceId);
log.info("调用aliEcs删除ECS实例,入参:owner:{},instanceId:{}",
owner, instanceId);
CompletableFuture<DeleteInstanceResponse> response = client.deleteInstance(
deleteInstanceRequest);
resp = response.get();
log.info("调用aliEcs删除ECS实例,响应参数:userName:{},response:{}", username,
log.info("调用aliEcs删除ECS实例,响应参数:owner:{},response:{}", owner,
JSON.toJSON(resp));
} catch (Exception e) {
log.error("fail to aliEcs deleteInstance {}", e.getMessage());
......
package com.edgec.browserbackend.common.enums;
import java.util.Arrays;
import java.util.Objects;
import java.util.Random;
import lombok.AllArgsConstructor;
import lombok.Getter;
......@@ -37,7 +40,6 @@ public enum RegionMappingEnum {
INDIA("india","孟买",""),//待确认
MEAST("meast","迪拜","me-east-1"),
;
......@@ -47,4 +49,30 @@ public enum RegionMappingEnum {
private final String aliRegionApi;//阿里云地区api
public static RegionMappingEnum getByRegion(String type) {
return Arrays.stream(RegionMappingEnum.values())
.filter(item -> Objects.equals(item.getRegionCn(), type))
.findFirst().orElse(null);
}
public static RegionMappingEnum getUsRandom(){
Random random = new Random();
int randomNumber = random.nextInt(2);
if(randomNumber == 0){
return RegionMappingEnum.US_CALIFORNIA;
}else {
return US_VIRGINIA.US_VIRGINIA;
}
}
public static RegionMappingEnum getCnRandom(){
Random random = new Random();
int randomNumber = random.nextInt(2);
if(randomNumber == 0){
return RegionMappingEnum.US_CALIFORNIA;
}else {
return US_VIRGINIA.US_VIRGINIA;
}
}
}
......@@ -26,7 +26,7 @@ class BrowserBackendApplicationTests {
@Test
void buyEcsTest() throws Exception {
AliEcsClient.runInstances("11","cn-shenzhen","2222");
//AliEcsClient.runInstances("11","cn-shenzhen","2222");
//AliEcsClient.getDescribeInstances("测试","i-wz9hf0i13xj6h904k14p","cn-shenzhen");
//DeleteInstanceResponse response = AliEcsClient.deleteInstance("测试", "i-wz9ebrei1dvowzej6nfn");
}
......@@ -43,10 +43,8 @@ class BrowserBackendApplicationTests {
+ "flush\" | tee /etc/3proxy.cfg\n"
+ "3proxy -C 3proxy.cfg";
System.out.println(Aes.base64Encode(userData.getBytes()));
byte[] bytes = Aes.base64Decode(
"IyEvYmluL3NoCmVjaG8gInVzZXJzIDNBU2thNzFhOkNMOjdhc01wQTE2CmFsbG93IDNBU2thNzFhICAqCmF1dGggc3Ryb25nCnByb3h5IC1wODA4MApwcm94eSAtcDg0NDMgLWEKc29ja3MgLXAxMDgwCmZsdXNoIiB8IHRlZSAvZXRjLzNwcm94eS5jZmcKM3Byb3h5IC1DIDNwcm94eS5jZmc=");
System.out.println(new String(bytes,"UTF-8"));
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