diff --git a/admin/index.php b/admin/index.php index 6b8a32a..2613073 100644 --- a/admin/index.php +++ b/admin/index.php @@ -31,7 +31,7 @@ if (isset($_GET['ajax_stats'])) { @set_time_limit(30 + count($sites) * 20); foreach ($sites as $site) { try { - $ctrl = new UniFiController($site['unifi_controller_url'], $site['unifi_username'], Crypto::decrypt($site['unifi_password']), $site['site_id']); + $ctrl = new UniFiController($site['unifi_controller_url'], $site['unifi_username'], Crypto::decrypt($site['unifi_password']), $site['site_id'], $site['ssl_verify'] ?? 0); $ctrl->syncVouchersToDatabase($db, $site['id']); } catch (Exception $e) { $syncErrors[$site['id']] = $e->getMessage(); diff --git a/admin/settings.php b/admin/settings.php index a711006..5f37b34 100644 --- a/admin/settings.php +++ b/admin/settings.php @@ -90,6 +90,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['save_settings'])) { $settings['smtp_password'] = trim($_POST['smtp_password']); } $settings['smtp_encryption'] = trim($_POST['smtp_encryption'] ?? 'tls'); + $settings['smtp_verify_ssl'] = isset($_POST['smtp_verify_ssl']) ? '1' : '0'; $settings['smtp_from_email'] = trim($_POST['smtp_from_email'] ?? ''); $settings['smtp_from_name'] = trim($_POST['smtp_from_name'] ?? ''); } @@ -204,6 +205,7 @@ $cs = [ 'smtp_username' => $db->getSetting('smtp_username', ''), 'smtp_password' => $db->getSetting('smtp_password', ''), 'smtp_encryption' => $db->getSetting('smtp_encryption', 'tls'), + 'smtp_verify_ssl' => $db->getSetting('smtp_verify_ssl', '0'), 'smtp_from_email' => $db->getSetting('smtp_from_email', ''), 'smtp_from_name' => $db->getSetting('smtp_from_name', ''), 'system_url' => $db->getSetting('system_url', $autoDetectedUrl), @@ -427,6 +429,7 @@ $adminBase = '';
+
>
diff --git a/admin/sites.php b/admin/sites.php index 0d19952..becda5e 100644 --- a/admin/sites.php +++ b/admin/sites.php @@ -35,7 +35,8 @@ if ($_SERVER['REQUEST_METHOD']==='POST' && isset($_POST['ajax_test_site'])) { $site['unifi_controller_url'], $site['unifi_username'], Crypto::decrypt($site['unifi_password']), - $site['site_id'] + $site['site_id'], + $site['ssl_verify'] ?? 0 ); echo json_encode([ 'success' => $test === true, @@ -57,21 +58,22 @@ if ($_SERVER['REQUEST_METHOD']==='POST' && isset($_POST['edit_site'])) { $username = trim($_POST['username']); $password = $_POST['password']; $publicAccess = isset($_POST['public_access']) ? 1 : 0; + $sslVerify = isset($_POST['ssl_verify']) ? 1 : 0; if (empty($name)||empty($siteIdStr)||empty($controllerUrl)||empty($username)) throw new Exception(__('error_fill_all')); if (!empty($password)) { - $test = UniFiController::testConnection($controllerUrl,$username,$password,$siteIdStr); + $test = UniFiController::testConnection($controllerUrl,$username,$password,$siteIdStr,$sslVerify); if ($test !== true) throw new Exception(__('site_test_fail').': '.$test); - $db->execute("UPDATE sites SET name=?,site_id=?,unifi_controller_url=?,unifi_username=?,unifi_password=?,public_access=? WHERE id=?", - [$name,$siteIdStr,$controllerUrl,$username,Crypto::encrypt($password),$publicAccess,$siteId]); + $db->execute("UPDATE sites SET name=?,site_id=?,unifi_controller_url=?,unifi_username=?,unifi_password=?,public_access=?,ssl_verify=? WHERE id=?", + [$name,$siteIdStr,$controllerUrl,$username,Crypto::encrypt($password),$publicAccess,$sslVerify,$siteId]); } else { // Auch ohne Passwortaenderung testen (mit gespeichertem Passwort) – // sonst fallen Tippfehler in URL/Username erst beim naechsten Voucher auf. $stored = $db->fetchOne("SELECT unifi_password FROM sites WHERE id=?", [$siteId]); if (!$stored) throw new Exception(__('error_site_not_found')); - $test = UniFiController::testConnection($controllerUrl,$username,Crypto::decrypt($stored['unifi_password']),$siteIdStr); + $test = UniFiController::testConnection($controllerUrl,$username,Crypto::decrypt($stored['unifi_password']),$siteIdStr,$sslVerify); if ($test !== true) throw new Exception(__('site_test_fail').': '.$test); - $db->execute("UPDATE sites SET name=?,site_id=?,unifi_controller_url=?,unifi_username=?,public_access=? WHERE id=?", - [$name,$siteIdStr,$controllerUrl,$username,$publicAccess,$siteId]); + $db->execute("UPDATE sites SET name=?,site_id=?,unifi_controller_url=?,unifi_username=?,public_access=?,ssl_verify=? WHERE id=?", + [$name,$siteIdStr,$controllerUrl,$username,$publicAccess,$sslVerify,$siteId]); } $auth->writeAuditLog($_SESSION['user_id'],'site_edit','site',$siteId,"Site {$name} aktualisiert"); flashSet(__('sites_updated')); @@ -93,11 +95,12 @@ if ($_SERVER['REQUEST_METHOD']==='POST' && isset($_POST['add_site'])) { $username = trim($_POST['username']); $password = $_POST['password']; $publicAccess = isset($_POST['public_access']) ? 1 : 0; + $sslVerify = isset($_POST['ssl_verify']) ? 1 : 0; if (empty($name)||empty($siteId)||empty($controllerUrl)||empty($username)) throw new Exception(__('error_fill_all')); - $test = UniFiController::testConnection($controllerUrl,$username,$password,$siteId); + $test = UniFiController::testConnection($controllerUrl,$username,$password,$siteId,$sslVerify); if ($test !== true) throw new Exception(__('site_test_fail').': '.$test); - $newId = $db->execute("INSERT INTO sites (name,site_id,unifi_controller_url,unifi_username,unifi_password,public_access) VALUES (?,?,?,?,?,?)", - [$name,$siteId,$controllerUrl,$username,Crypto::encrypt($password),$publicAccess]); + $newId = $db->execute("INSERT INTO sites (name,site_id,unifi_controller_url,unifi_username,unifi_password,public_access,ssl_verify) VALUES (?,?,?,?,?,?,?)", + [$name,$siteId,$controllerUrl,$username,Crypto::encrypt($password),$publicAccess,$sslVerify]); $auth->writeAuditLog($_SESSION['user_id'],'site_create','site',$newId,"Site {$name} erstellt"); flashSet(__('sites_added')); header('Location: sites.php'); @@ -237,7 +240,7 @@ $currentPage = 'sites';
- @@ -309,6 +312,11 @@ $currentPage = 'sites';
+
+ + +
+
+
+ + +
+