ops-console v1.0.2 (versionCode 8) 源码入库
This commit is contained in:
48
lib/config/prod_guard.dart
Normal file
48
lib/config/prod_guard.dart
Normal file
@@ -0,0 +1,48 @@
|
||||
import 'dart:io';
|
||||
|
||||
import 'app_config.dart';
|
||||
|
||||
/// 生产环境强制守卫。
|
||||
///
|
||||
/// 设计目标:本构建(APK)**永远无法进入生产模式**。
|
||||
/// - 编译期常量 [kAllowProduction] 恒为 false;
|
||||
/// - 运行期校验当前后端地址 host 不在生产拒绝名单中;
|
||||
/// 任一命中即打印清晰报错并 [exit],阻断后续执行。
|
||||
class ProductionGuard {
|
||||
ProductionGuard._();
|
||||
|
||||
/// 编译期开关:绝不允许开启。
|
||||
static const bool kAllowProduction = false;
|
||||
|
||||
/// 生产环境 host/IP 拒绝名单(精确匹配,区分大小写前已小写化)。
|
||||
static const List<String> _productionHostDenyList = <String>[
|
||||
'58.220.83.58', // 生产服务器 IP
|
||||
'api.ainetv.com',
|
||||
'ainetv.com',
|
||||
];
|
||||
|
||||
/// 启动期执行:断言非生产,命中即失败退出。
|
||||
///
|
||||
/// 同时作为构建期守卫([assert] 在 debug/profile 构建抛错)与运行期守卫
|
||||
/// (release 构建中 [assert] 被剥离,但 host 校验仍生效)。
|
||||
static void enforce() {
|
||||
// 编译期常量断言:若有人将 kAllowProduction 改为 true,调试构建立即崩溃。
|
||||
assert(!kAllowProduction, '生产模式被编译期禁用 (kAllowProduction=false)');
|
||||
|
||||
// 解析当前后端地址并校验 host,禁止任何生产标识。
|
||||
final full = AppConfig.apiFullBaseUrl;
|
||||
final host = Uri.parse(full).host.toLowerCase();
|
||||
if (_productionHostDenyList.contains(host) || host.contains('prod')) {
|
||||
_failAndExit(
|
||||
'检测到生产环境地址 host=$host(来自 $full),已强制阻断启动',
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/// 打印清晰报错并退出进程,阻断后续执行。
|
||||
static Never _failAndExit(String reason) {
|
||||
// ignore: avoid_print
|
||||
print('[PRODUCTION-GUARD] 启动被拒绝:$reason');
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user