77 lines
2.2 KiB
Bash
Executable File
77 lines
2.2 KiB
Bash
Executable File
# 绕过 UI Pro 的 License 验证 (Windows 11 兼容版)
|
||
set -euo pipefail
|
||
|
||
# 1. 禁用 module.mjs 的调用
|
||
MODULE="node_modules/@nuxt/ui-pro/dist/module.mjs"
|
||
if [[ -f $MODULE ]]; then
|
||
# Windows 兼容的 sed 命令
|
||
sed -i.bak 's/await validateLicense({.*rootDir })/\/\/ await validateLicense({...rootDir })/g' "$MODULE"
|
||
if [[ -f "$MODULE.bak" ]]; then
|
||
rm -f "$MODULE.bak"
|
||
fi
|
||
echo "✅ module.mjs 已屏蔽"
|
||
fi
|
||
|
||
# 2. 直接"替换函数" fake 200
|
||
SHARED="node_modules/@nuxt/ui-pro/dist/shared"
|
||
JS=$(find "$SHARED" -maxdepth 1 -name 'ui-pro.*.mjs' | head -n1)
|
||
[[ -z $JS || ! -f $JS ]] && { echo "⚠️ ui-pro.*.mjs 未找到"; exit 0; }
|
||
|
||
# 创建临时文件
|
||
cat <<'EOF' > tmp_func.mjs
|
||
async function validateLicense(opts) {
|
||
/* --- patched --- */
|
||
return { status: 200 }
|
||
}
|
||
EOF
|
||
|
||
# Windows 兼容的 sed 命令 - 使用更简单的方法
|
||
# 先备份原文件
|
||
cp "$JS" "$JS.backup"
|
||
|
||
# 使用 PowerShell 或 Node.js 来处理文件替换
|
||
if command -v node >/dev/null 2>&1; then
|
||
# 使用 Node.js 脚本进行替换
|
||
cat > tmp_replace.js <<'EOF'
|
||
const fs = require('fs');
|
||
const path = process.argv[2];
|
||
|
||
if (!fs.existsSync(path)) {
|
||
console.error('File not found:', path);
|
||
process.exit(1);
|
||
}
|
||
|
||
let content = fs.readFileSync(path, 'utf8');
|
||
|
||
// 替换 validateLicense 函数
|
||
const newFunction = `async function validateLicense(opts) {
|
||
/* --- patched --- */
|
||
return { status: 200 }
|
||
}`;
|
||
|
||
// 使用正则表达式匹配并替换整个函数
|
||
const functionRegex = /async function validateLicense\s*\([^)]*\)\s*\{[\s\S]*?\}/;
|
||
if (functionRegex.test(content)) {
|
||
content = content.replace(functionRegex, newFunction);
|
||
fs.writeFileSync(path, content, 'utf8');
|
||
console.log('✅ Function replaced successfully');
|
||
} else {
|
||
console.log('⚠️ validateLicense function not found, skipping...');
|
||
}
|
||
EOF
|
||
|
||
node tmp_replace.js "$JS"
|
||
rm -f tmp_replace.js
|
||
else
|
||
echo "⚠️ Node.js not found, using fallback method"
|
||
# 简单的文本替换作为后备方案
|
||
sed -i.bak 's/async function validateLicense.*{.*return { status: 200 }.*}/async function validateLicense(opts) {\n \/* --- patched --- *\/\n return { status: 200 }\n}/g' "$JS"
|
||
if [[ -f "$JS.bak" ]]; then
|
||
rm -f "$JS.bak"
|
||
fi
|
||
fi
|
||
|
||
rm -f tmp_func.mjs
|
||
|
||
echo "✅ $JS 已 mock 完成"
|
||
echo "<22><> License ⛔ Done!" |