get('domain', 'test.com');
// 处理系统设置更新
if (isset($_POST['update_settings'])) {
// SMTP端口
if (isset($_POST['smtp_port'])) {
$port = (int)$_POST['smtp_port'];
if (Validator::validatePort($port)) {
$settingsRepo->set('smtp_port', $port);
} else {
$error = "SMTP端口无效(1-65535)";
}
}
// POP3端口
if (isset($_POST['pop3_port'])) {
$port = (int)$_POST['pop3_port'];
if (Validator::validatePort($port)) {
$settingsRepo->set('pop3_port', $port);
} else {
$error = "POP3端口无效(1-65535)";
}
}
// 域名
if (isset($_POST['domain'])) {
$newDomain = trim($_POST['domain']);
if (!empty($newDomain)) {
/* **** 调试开始 **** */
$oldDomain = $settingsRepo->get('domain', 'test.com'); // 实时旧值
error_log('【调试】实时旧域名:' . $oldDomain);
error_log('【调试】提交新域名:' . $newDomain);
/* **** 调试结束 **** */
if ($newDomain !== $oldDomain) {
$settingsRepo->set('domain', $newDomain);
require_once __DIR__ . '/../src/admin/SyncDomainService.php';
$sync = new SyncDomainService();
$count = $sync->run($oldDomain, $newDomain);
$message .= " 已同步 $count 个用户邮箱后缀。";
/* **** 调试开始 **** */
error_log('【调试】REPLACE 影响行数:' . $count);
/* **** 调试结束 **** */
}
}
}
// 默认邮箱大小限制
if (isset($_POST['mailbox_size_limit'])) {
$size = (int)$_POST['mailbox_size_limit'];
if ($size > 0) {
$settingsRepo->set('mailbox_size_limit', $size);
}
}
// 日志路径
if (isset($_POST['log_path'])) {
$settingsRepo->set('log_path', trim($_POST['log_path']));
}
// 日志最大大小
if (isset($_POST['log_max_size'])) {
$size = (int)$_POST['log_max_size'];
if ($size > 0) {
$settingsRepo->set('log_max_size', $size);
}
}
if (empty($error)) {
$message = "系统设置已更新";
}
}
// 处理管理员密码修改
if (isset($_POST['change_admin_password'])) {
$oldPassword = $_POST['old_password'] ?? '';
$newPassword = $_POST['new_password'] ?? '';
$confirmPassword = $_POST['confirm_password'] ?? '';
$user = $userRepo->findById($_SESSION['user_id']);
if (!Security::verifyPassword($oldPassword, $user['password_hash'])) {
$error = "原密码错误";
} else {
$passwordValidation = Validator::validatePassword($newPassword, 6);
if (!$passwordValidation['valid']) {
$error = implode('
', $passwordValidation['errors']);
} elseif ($newPassword !== $confirmPassword) {
$error = "两次输入的密码不一致";
} else {
if ($userRepo->update($_SESSION['user_id'], ['password' => $newPassword])) {
$message = "管理员密码已更新";
} else {
$error = "密码更新失败";
}
}
}
}
// 处理用户邮箱大小设置
if (isset($_POST['set_mailbox_size'])) {
$userId = (int)$_POST['user_id'];
$sizeBytes = (int)$_POST['mailbox_size'];
if ($sizeBytes > 0) {
if ($mailboxRepo->setSizeLimit($userId, $sizeBytes)) {
$message = "邮箱大小限制已更新";
} else {
$error = "更新失败";
}
} else {
$error = "邮箱大小必须大于0";
}
}
// 获取当前设置
$settings = $settingsRepo->getAll();
$users = $userRepo->getAll();
?>
| 用户 | 当前使用 | 限制大小 | 使用率 | 操作 |
|---|---|---|---|---|
| MB | MB | % |