omnAPP/DOMAIN_CONFIGURATION.md
Rust 866938abab
Some checks failed
Build Windows / build (push) Has been cancelled
新增文档
2025-09-23 16:33:58 +08:00

220 lines
6.2 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 🌐 域名配置指南
## 📍 域名配置位置
域名配置主要在以下文件中:
```
lib/app/common/app_config.dart
├── KRDomain 类 - 域名管理
│ ├── kr_baseDomains - 主域名列表
│ ├── kr_currentDomain - 当前域名
│ ├── kr_backupDomainUrls - 备用域名获取地址
│ └── kr_localBackupDomains - 本地备用域名
└── AppConfig 类 - 应用配置
└── baseUrl - 动态生成的API地址
```
## 🔧 域名配置详解
### 1. 主域名列表配置
```dart
// 文件: lib/app/common/app_config.dart
class KRDomain {
// 主域名列表 - 应用会按顺序尝试这些域名
static List<String> kr_baseDomains = [
"apicn.bearvpn.top", // 主域名1
"apibear.nsdsox.com" // 主域名2
];
}
```
**修改方法:**
1.`"apicn.bearvpn.top"` 替换为您的API服务器域名
2.`"apibear.nsdsox.com"` 替换为您的备用API服务器域名
3. 可以添加更多域名,应用会按顺序尝试
### 2. 当前域名配置
```dart
// 当前使用的域名
static String kr_currentDomain = "apicn.bearvpn.top";
```
**修改方法:**
-`"apicn.bearvpn.top"` 替换为您希望应用启动时使用的默认域名
- 通常设置为 `kr_baseDomains` 列表中的第一个域名
### 3. 备用域名获取地址
```dart
// 备用域名获取地址列表
static List<String> kr_backupDomainUrls = [
"https://bear-1347601445.cos.ap-guangzhou.myqcloud.com/bear.txt",
"https://getbr.oss-cn-shanghai.aliyuncs.com/bear.txt",
"https://gitee.com/karelink/getbr/raw/master/README.en.md",
"https://configfortrans.oss-cn-guangzhou.aliyuncs.com/bear/bear.txt",
];
```
**修改方法:**
- 将这些URL替换为您自己的备用域名获取地址
- 这些地址应该返回包含可用域名列表的JSON数据
- 格式示例:`["api1.yourcompany.com", "api2.yourcompany.com"]`
### 4. 本地备用域名
```dart
// 本地备用域名列表(当服务器获取的域名都不可用时使用)
static List<String> kr_localBackupDomains = [
"api.omntech.com",
"api6.omntech.com",
"api7.omntech.com",
"apicn.bearvpn.top",
"apibear.nsdsox.com",
];
```
**修改方法:**
- 将这些域名替换为您自己的备用域名
- 这些是最后的兜底方案,当所有其他方式都失败时使用
## 🚀 域名切换机制
### 自动域名切换流程
1. **应用启动时**:使用 `kr_currentDomain` 作为默认域名
2. **主域名检测**:按顺序检测 `kr_baseDomains` 中的域名
3. **备用域名获取**:如果主域名都不可用,从 `kr_backupDomainUrls` 获取新域名
4. **本地备用**:如果备用域名获取失败,使用 `kr_localBackupDomains`
5. **兜底方案**:如果所有域名都失败,使用硬编码的兜底域名
### 域名检测逻辑
```dart
// 域名可用性检测
static Future<bool> kr_checkDomainAvailability(String domain) async {
// 发送HTTPS请求检测域名是否可用
// 只要能够连接就认为域名可用包括404、403等状态码
}
```
## 📝 配置示例
### 示例1使用自己的API服务器
```dart
class KRDomain {
// 主域名列表
static List<String> kr_baseDomains = [
"api.yourcompany.com", // 主API服务器
"backup-api.yourcompany.com" // 备用API服务器
];
// 当前使用的域名
static String kr_currentDomain = "api.yourcompany.com";
// 备用域名获取地址
static List<String> kr_backupDomainUrls = [
"https://your-cdn.com/domains.json",
"https://backup-server.com/api/domains"
];
// 本地备用域名
static List<String> kr_localBackupDomains = [
"api.yourcompany.com",
"backup-api.yourcompany.com",
"emergency-api.yourcompany.com"
];
}
```
### 示例2使用多个备用服务器
```dart
class KRDomain {
// 主域名列表
static List<String> kr_baseDomains = [
"api1.yourcompany.com",
"api2.yourcompany.com",
"api3.yourcompany.com"
];
// 当前使用的域名
static String kr_currentDomain = "api1.yourcompany.com";
// 备用域名获取地址
static List<String> kr_backupDomainUrls = [
"https://cdn1.yourcompany.com/domains.txt",
"https://cdn2.yourcompany.com/domains.txt",
"https://github.com/yourcompany/domains/raw/main/domains.json"
];
// 本地备用域名
static List<String> kr_localBackupDomains = [
"api1.yourcompany.com",
"api2.yourcompany.com",
"api3.yourcompany.com",
"fallback.yourcompany.com"
];
}
```
## 🔍 调试域名配置
### 查看当前域名状态
```dart
// 在应用中使用以下代码查看域名状态
print('当前域名: ${KRDomain.kr_currentDomain}');
print('主域名列表: ${KRDomain.kr_baseDomains}');
print('API地址: ${AppConfig.getInstance().baseUrl}');
```
### 手动触发域名切换
```dart
// 手动触发域名切换
bool success = await KRDomain.kr_triggerFastSwitch();
if (success) {
print('域名切换成功: ${KRDomain.kr_currentDomain}');
} else {
print('域名切换失败');
}
```
### 测试域名可用性
```dart
// 测试特定域名的可用性
bool isAvailable = await KRDomain.kr_checkDomainAvailability("api.yourcompany.com");
print('域名可用性: $isAvailable');
```
## ⚠️ 注意事项
1. **域名格式**:确保域名格式正确,不要包含协议前缀(如 `https://`
2. **备用地址**备用域名获取地址应该返回有效的JSON格式数据
3. **测试**:修改域名后,建议在测试环境中验证配置是否正确
4. **缓存**:域名检测结果会被缓存,修改后可能需要重启应用
5. **网络**:确保所有配置的域名都能正常访问
## 🆘 常见问题
### Q: 如何添加新的API域名
A: 在 `kr_baseDomains` 列表中添加新的域名即可。
### Q: 如何修改备用域名获取地址?
A: 修改 `kr_backupDomainUrls` 列表确保地址返回有效的域名列表JSON。
### Q: 域名切换不生效怎么办?
A: 检查域名格式是否正确,确保域名可以正常访问,必要时重启应用。
### Q: 如何禁用自动域名切换?
A: 将 `kr_baseDomains` 设置为只包含一个域名,并确保该域名始终可用。
---
**💡 提示**: 修改域名配置后,建议运行 `flutter clean && flutter pub get` 重新构建项目。