Skip to content

Commit 011a332

Browse files
committed
refactor:subscription
1 parent 8eabbd0 commit 011a332

9 files changed

Lines changed: 33 additions & 35 deletions

File tree

src/main/java/com/fun90/airopscat/controller/AccountController.java

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,7 @@
66
import com.fun90.airopscat.model.entity.Account;
77
import com.fun90.airopscat.model.entity.User;
88
import com.fun90.airopscat.model.enums.PeriodType;
9-
import com.fun90.airopscat.service.AccountOnlineIpService;
10-
import com.fun90.airopscat.service.AccountService;
11-
import com.fun90.airopscat.service.TagService;
12-
import com.fun90.airopscat.service.UserService;
9+
import com.fun90.airopscat.service.*;
1310
import io.quarkus.hibernate.orm.panache.PanacheQuery;
1411
import io.quarkus.panache.common.Page;
1512
import io.quarkus.security.identity.SecurityIdentity;
@@ -40,7 +37,9 @@ public class AccountController {
4037

4138
@Inject
4239
SecurityIdentity securityIdentity;
43-
40+
@Inject
41+
SubscriptionService subscriptionService;
42+
4443
@Inject
4544
public AccountController(AccountService accountService, UserService userService, TagService tagService, AccountOnlineIpService accountOnlineIpService) {
4645
this.accountService = accountService;
@@ -306,7 +305,7 @@ public Response getConfigUrl(@PathParam("id") Long id, @QueryParam("osName") Str
306305
Account account = accountService.getAccountById(id);
307306
if (account != null) {
308307
Map<String, String> response = new HashMap<>();
309-
response.put("configUrl", accountService.getConfigUrl(account, osName, appName));
308+
response.put("configUrl", subscriptionService.getConfigUrl(account, osName, appName));
310309
return Response.ok(response).build();
311310
}
312311
return Response.status(Response.Status.NOT_FOUND).build();

src/main/java/com/fun90/airopscat/controller/OpenController.java

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import com.fun90.airopscat.model.entity.Account;
55
import com.fun90.airopscat.repository.AccountRepository;
66
import com.fun90.airopscat.service.AccountOnlineIpService;
7+
import com.fun90.airopscat.service.SubscriptionService;
78
import com.fun90.airopscat.util.JsonUtil;
89
import jakarta.enterprise.context.ApplicationScoped;
910
import jakarta.inject.Inject;
@@ -13,8 +14,6 @@
1314
import lombok.extern.slf4j.Slf4j;
1415
import org.eclipse.microprofile.config.inject.ConfigProperty;
1516

16-
import java.net.URLEncoder;
17-
import java.nio.charset.StandardCharsets;
1817
import java.util.HashMap;
1918
import java.util.Map;
2019
import java.util.Optional;
@@ -32,15 +31,15 @@ public class OpenController {
3231
@Inject
3332
AccountRepository accountRepository;
3433

34+
@Inject
35+
SubscriptionService subscriptionService;
36+
3537
@ConfigProperty(name = "airopscat.apple.id")
3638
String appleId;
3739

3840
@ConfigProperty(name = "airopscat.apple.pwd")
3941
String applePwd;
4042

41-
@ConfigProperty(name = "airopscat.subscription.url")
42-
String subscriptionUrl;
43-
4443
@ConfigProperty(name = "airopscat.api.token")
4544
String apiToken;
4645

@@ -64,14 +63,14 @@ public Response getDocsInfo(@PathParam("authCode") String authCode) {
6463
if (accountOpt.isEmpty()) {
6564
return Response.status(Response.Status.BAD_REQUEST).entity(Map.of("error", "无效的认证码,账户不存在")).build();
6665
}
66+
Account account = accountOpt.get();
6767
// 组装subscriptionUrl
68-
String base = subscriptionUrl + "/config/" + authCode;
6968
Map<String, String> subscriptionUrls = Map.of(
70-
"windows", base + "/windows/clash-verge/",
71-
"linux", base + "/linux/clash-verge/",
72-
"ios", base + "/ios/shadowrocket/" + URLEncoder.encode(accountOpt.get().getRemark(), StandardCharsets.UTF_8) + "/",
73-
"macos", base + "/macos/clash-verge/",
74-
"android", base + "/android/clash-meta/"
69+
"windows", subscriptionService.getConfigUrl(account, "windows", "clash-verge"),
70+
"linux", subscriptionService.getConfigUrl(account, "linux", "clash-verge"),
71+
"ios", subscriptionService.getConfigUrl(account, "ios", "shadowrocket"),
72+
"macos", subscriptionService.getConfigUrl(account, "macos", "clash-verge"),
73+
"android", subscriptionService.getConfigUrl(account, "android", "clash-meta")
7574
);
7675
Map<String, Object> result = new HashMap<>();
7776
result.put("subscriptionUrl", subscriptionUrls);

src/main/java/com/fun90/airopscat/controller/SubscriptionController.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@ public class SubscriptionController {
2929
@Inject
3030
SubscriptionService subscriptionService;
3131

32-
@Deprecated
3332
@GET
3433
@Path("/config/{authCode}/{osName}/{appName}")
3534
@Produces(MediaType.TEXT_PLAIN)

src/main/java/com/fun90/airopscat/registry/AbstractStrategyRegistry.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
import java.lang.annotation.Annotation;
99
import java.util.*;
1010
import java.util.concurrent.ConcurrentHashMap;
11-
import java.util.stream.Collectors;
1211

1312
/**
1413
* 策略注册表抽象基类

src/main/java/com/fun90/airopscat/service/AccountService.java

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,9 @@
2222
@ApplicationScoped
2323
public class AccountService {
2424

25-
@ConfigProperty(name = "airopscat.subscription.url", defaultValue = "https://example.com")
26-
String subscriptionUrl;
27-
2825
@ConfigProperty(name = "airopscat.account.multiplier", defaultValue = "1")
2926
Integer accountMultiplier;
3027

31-
3228
@Inject
3329
AccountRepository accountRepository;
3430

@@ -292,12 +288,4 @@ private String generateAccountNo() {
292288
return UUID.randomUUID().toString().replaceAll("-", "").substring(0, 12);
293289
}
294290

295-
// 获取配置URL
296-
public String getConfigUrl(Account account, String osName, String appName) {
297-
if (account == null || account.getUuid() == null) {
298-
return null;
299-
}
300-
return subscriptionUrl + "/config/" + account.getAuthCode() + "/" + osName + "/" + appName;
301-
}
302-
303291
}

src/main/java/com/fun90/airopscat/service/DomainService.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,10 @@
1212
import java.math.BigDecimal;
1313
import java.time.LocalDate;
1414
import java.time.temporal.ChronoUnit;
15-
import java.util.*;
15+
import java.util.ArrayList;
16+
import java.util.HashMap;
17+
import java.util.List;
18+
import java.util.Map;
1619

1720
@ApplicationScoped
1821
public class DomainService {

src/main/java/com/fun90/airopscat/service/NodeService.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package com.fun90.airopscat.service;
22

3-
import com.fasterxml.jackson.core.JsonProcessingException;
43
import com.fasterxml.jackson.databind.ObjectMapper;
54
import com.fun90.airopscat.model.dto.xray.InboundConfig;
65
import com.fun90.airopscat.model.dto.xray.setting.StreamSetting;

src/main/java/com/fun90/airopscat/service/SubscriptionService.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@
1515
import jakarta.inject.Inject;
1616
import org.eclipse.microprofile.config.inject.ConfigProperty;
1717

18+
import java.net.URLEncoder;
19+
import java.nio.charset.StandardCharsets;
1820
import java.time.LocalDateTime;
1921
import java.util.HashMap;
2022
import java.util.List;
@@ -216,6 +218,18 @@ private String generateConfigByApp(Account account, List<NodeDto> nodes, String
216218
return thymeleafUtil.processStringTemplate(templateContent, templateData);
217219
}
218220

221+
// 获取配置URL
222+
public String getConfigUrl(Account account, String osName, String appName) {
223+
if (account == null || account.getUuid() == null) {
224+
return null;
225+
}
226+
String url = subscriptionUrl + "/config/" + account.getAuthCode() + "/" + osName + "/" + appName + "/";
227+
if ("shadowrocket".equalsIgnoreCase(appName)) {
228+
url += URLEncoder.encode(account.getRemark(), StandardCharsets.UTF_8) + "/";
229+
}
230+
return url;
231+
}
232+
219233
/**
220234
* 获取模板名称
221235
*/

src/main/java/com/fun90/airopscat/service/ssh/SshConnectionService.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,6 @@
66
import jakarta.inject.Inject;
77
import lombok.extern.slf4j.Slf4j;
88

9-
import java.io.IOException;
10-
119
@Slf4j
1210
@ApplicationScoped
1311
public class SshConnectionService {

0 commit comments

Comments
 (0)