-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathconfig.example.php
More file actions
210 lines (178 loc) · 6.22 KB
/
Copy pathconfig.example.php
File metadata and controls
210 lines (178 loc) · 6.22 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
<?php
/**
* 超级签名系统配置文件
* 365天不掉签 iOS 分发系统 - 全自动版
*
* 首次安装请复制此文件为 config.php 并修改配置
* cp config.example.php config.php
*/
// 站点配置
define('SITE_NAME', '365天不掉签');
define('SITE_URL', 'https://你的域名'); // ← 修改为你的域名,不要带斜杠结尾
define('SITE_DOMAIN', '你的域名'); // ← 修改为你的域名
// 数据库配置
define('DB_HOST', 'localhost');
define('DB_NAME', 'supersign'); // ← 数据库名
define('DB_USER', 'supersign'); // ← 数据库用户名
define('DB_PASS', 'your_password_here'); // ← 修改为你的数据库密码
// 路径配置
define('ROOT_PATH', __DIR__);
define('CERT_PATH', ROOT_PATH . '/cert/');
define('IPA_PATH', ROOT_PATH . '/ipa/');
define('SIGNED_PATH', ROOT_PATH . '/signed/');
define('PLIST_PATH', ROOT_PATH . '/plist/');
define('MOBILECONFIG_PATH', ROOT_PATH . '/mobileconfig/');
define('UPLOAD_PATH', ROOT_PATH . '/uploads/');
// zsign路径
define('ZSIGN_PATH', ROOT_PATH . '/zsign');
// ============================================================
// Apple Developer API 配置 (全自动签名必须配置)
// ============================================================
//
// 获取方式:
// 1. 登录 https://appstoreconnect.apple.com
// 2. 用户和访问 → 密钥 → App Store Connect API
// 3. 点击 "+" 创建新密钥
// 4. 名称随便填,权限选择 "Admin"
// 5. 下载 .p8 私钥文件(只能下载一次!)
// 6. 记录 Issuer ID 和 Key ID
//
// ============================================================
// Issuer ID(在密钥页面顶部显示)
define('APPLE_ISSUER_ID', ''); // ← 填入你的 Issuer ID
// Key ID(创建密钥后显示)
define('APPLE_KEY_ID', ''); // ← 填入你的 Key ID
// 私钥内容(.p8文件的完整内容,包括BEGIN和END行)
define('APPLE_PRIVATE_KEY', '');
// ============================================================
// 自动签名配置
// ============================================================
// 证书类型:IOS_DEVELOPMENT(开发证书)或 IOS_DISTRIBUTION(发布证书)
define('APPLE_CERT_TYPE', 'IOS_DEVELOPMENT');
// 描述文件名称前缀(系统会自动管理)
define('PROFILE_NAME_PREFIX', 'SuperSign_');
// 是否启用全自动模式
define('AUTO_MODE', true);
// ============================================================
// Cloudflare R2 云存储配置 (可选,用于分发签名后的IPA)
// ============================================================
define('R2_ENABLED', false); // 是否启用R2上传 (改为false使用本地下载)
define('R2_ACCOUNT_ID', '');
define('R2_ACCESS_KEY_ID', '');
define('R2_SECRET_ACCESS_KEY', '');
define('R2_BUCKET', '');
define('R2_PUBLIC_URL', ''); // 你绑定的公开访问域名
// 获取R2实例
function getR2() {
if (!R2_ENABLED) {
return null;
}
require_once ROOT_PATH . '/includes/R2Upload.php';
return new R2Upload(
R2_ACCESS_KEY_ID,
R2_SECRET_ACCESS_KEY,
R2_ACCOUNT_ID,
R2_BUCKET,
R2_PUBLIC_URL
);
}
// ============================================================
// 其他配置
// ============================================================
// Session配置
define('SESSION_NAME', 'supersign_session');
define('SESSION_EXPIRE', 86400);
// 安全密钥
define('SECRET_KEY', 'change_this_to_random_string_' . md5(__FILE__));
// 调试模式
define('DEBUG_MODE', false);
// 时区
date_default_timezone_set('Asia/Shanghai');
// 错误报告
if (DEBUG_MODE) {
error_reporting(E_ALL);
ini_set('display_errors', 1);
} else {
error_reporting(0);
ini_set('display_errors', 0);
}
// 数据库连接
function getDB() {
static $pdo = null;
if ($pdo === null) {
try {
$dsn = 'mysql:host=' . DB_HOST . ';dbname=' . DB_NAME . ';charset=utf8mb4';
$pdo = new PDO($dsn, DB_USER, DB_PASS, [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
PDO::ATTR_EMULATE_PREPARES => false
]);
} catch (PDOException $e) {
if (DEBUG_MODE) {
die('数据库连接失败: ' . $e->getMessage());
}
die('系统错误,请稍后重试');
}
}
return $pdo;
}
// 获取Apple API实例
function getAppleAPI() {
if (empty(APPLE_ISSUER_ID) || empty(APPLE_KEY_ID) || empty(APPLE_PRIVATE_KEY)) {
return null;
}
require_once ROOT_PATH . '/includes/AppleAPI.php';
return new AppleAPI(APPLE_ISSUER_ID, APPLE_KEY_ID, APPLE_PRIVATE_KEY);
}
// 辅助函数
function jsonResponse($data, $code = 200) {
http_response_code($code);
header('Content-Type: application/json; charset=utf-8');
echo json_encode($data, JSON_UNESCAPED_UNICODE);
exit;
}
function redirect($url) {
header('Location: ' . $url);
exit;
}
function sanitize($str) {
return htmlspecialchars(trim($str), ENT_QUOTES, 'UTF-8');
}
function generateToken($length = 32) {
return bin2hex(random_bytes($length / 2));
}
function formatSize($bytes) {
$units = ['B', 'KB', 'MB', 'GB'];
$i = 0;
while ($bytes >= 1024 && $i < count($units) - 1) {
$bytes /= 1024;
$i++;
}
return round($bytes, 2) . ' ' . $units[$i];
}
// 日志函数
function writeLog($message, $type = 'info') {
$logFile = ROOT_PATH . '/logs/' . date('Y-m-d') . '.log';
$logDir = dirname($logFile);
if (!is_dir($logDir)) {
mkdir($logDir, 0755, true);
}
$time = date('Y-m-d H:i:s');
$log = "[{$time}] [{$type}] {$message}" . PHP_EOL;
file_put_contents($logFile, $log, FILE_APPEND);
}
// ============================================================
// 授权验证
// ============================================================
require_once ROOT_PATH . '/includes/License.php';
// 检查授权状态
$__licenseResult = License::verify();
define('LICENSE_VALID', $__licenseResult['valid']);
define('LICENSE_MESSAGE', $__licenseResult['message']);
// 授权检查函数(供其他地方调用)
function checkLicense() {
if (!LICENSE_VALID) {
return ['success' => false, 'message' => LICENSE_MESSAGE];
}
return ['success' => true];
}