diff --git a/CLAUDE.md b/CLAUDE.md index c9eb02d..5517e00 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -45,7 +45,7 @@ cd /home/intranet/kunden && php db-backup.php `CONFIG_PATH` zeigt auf `/volume1/homes/wagner/kundenconfig/` (Linux) bzw. `c:/kundenverwaltung/config/` (Windows). Geschrieben wird die Datei von `update/rebuild-settings.php` beim Ersteinrichten. -Neben den Zugangsdaten steht dort auch `$instanz` (siehe oben). Die Datei deklariert `$mysql_user`, `$mysql_pw`, `$mysql_server`, `$mysql_db`, `$firma` und weitere ausdrücklich als `global` und weist sie erst danach zu. Nur deshalb funktioniert `readsettings()` in `incs/settings.php`: Das `include` passiert im Funktionsrumpf, ohne die `global`-Zeilen blieben die Variablen dort lokal. Wer die Config-Struktur ändert, muss diese Eigenheit erhalten. +Neben den DB-Zugangsdaten stehen dort auch `$instanz` (siehe oben), die SMTP-Zugänge je Firma (`$smtp_konten`, Schlüssel `"*"` als Rückfall, genutzt von `mail_attachment()`), der Zugang zur Statistik-Datenbank für `stats.php` (`$stats_mysql_*`) und die Wetter-API-Schlüssel (`$openweathermap_appid`, `$aeris_client_*`). Die Datei deklariert `$mysql_user`, `$mysql_pw`, `$mysql_server`, `$mysql_db`, `$firma` und weitere ausdrücklich als `global` und weist sie erst danach zu. Nur deshalb funktioniert `readsettings()` in `incs/settings.php`: Das `include` passiert im Funktionsrumpf, ohne die `global`-Zeilen blieben die Variablen dort lokal. Wer die Config-Struktur ändert, muss diese Eigenheit erhalten. Zugangsdaten gehören **nie** in den Code — `db-backup.php` zeigt das Muster für Skripte außerhalb des Request-Zyklus (Config einlesen, Passwort über eine temporäre Optionsdatei an `mysqldump`, nicht per Kommandozeile). diff --git a/incs/funcs.php b/incs/funcs.php index 50cbfdc..4607bc7 100644 --- a/incs/funcs.php +++ b/incs/funcs.php @@ -85,8 +85,17 @@ function PopulateSessionVars() use PHPMailer\PHPMailer\PHPMailer; function mail_attachment($filename, $path, $mailto, $from_mail, $from_name, $replyto, $subject, $message) { - - + // SMTP-Zugänge stehen in der externen Config, je Firma ein Eintrag, + // "*" gilt für alle übrigen: array("user" => "...", "pw" => "...") + global $smtp_konten; + + if(isset($smtp_konten[$_SESSION["firma"]])) + $konto = $smtp_konten[$_SESSION["firma"]]; + elseif(isset($smtp_konten["*"])) + $konto = $smtp_konten["*"]; + else + return error("Kein SMTP-Zugang für \"".htmlspecialchars($_SESSION["firma"])."\" in der Konfiguration (\$smtp_konten)."); + $mail = new PHPMailer(); $mail->IsSMTP(); @@ -97,21 +106,8 @@ function mail_attachment($filename, $path, $mailto, $from_mail, $from_name, $rep $mail->SMTPAuth = true; // turn on SMTP authentication $mail->SMTPSecure = "ssl"; $mail->Port = 465; - if($_SESSION["firma"] == "Wagner Markisen") - { - $mail->Username = "info@wagner-markisen.de"; // SMTP username - $mail->Password = "ENTFERNT"; // SMTP password - } - elseif($_SESSION["firma"] == "Ingenieurbüro Wagner") - { - $mail->Username = "m0w1337@gmail.com"; // SMTP username - $mail->Password = "ENTFERNT"; // SMTP password - } - else - { - $mail->Username = "wagnermarkisen12@googlemail.com"; // SMTP username - $mail->Password = "ENTFERNT"; // SMTP password - } + $mail->Username = $konto["user"]; + $mail->Password = $konto["pw"]; $mail->From = $from_mail; $mail->FromName = $from_name; @@ -570,9 +566,10 @@ function GetWeather($plz='87509', $land='germany', $icons_src="./pics/icons/weat { $station = $plz."-".$land; } - //$url[0] = "http://api.aerisapi.com/observations/immenstadt,germany?client_id=ENTFERNT&client_secret=ENTFERNT"; - $url[0] = "http://api.openweathermap.org/data/2.5/weather?zip=87509,de&APPID=ENTFERNT"; - $url[1] = "http://api.aerisapi.com/forecasts/immenstadt,germany?client_id=ENTFERNT&client_secret=ENTFERNT&from=today&to=+6days"; + // API-Schlüssel stehen in der externen Config + global $openweathermap_appid, $aeris_client_id, $aeris_client_secret; + $url[0] = "http://api.openweathermap.org/data/2.5/weather?zip=87509,de&APPID=".urlencode($openweathermap_appid); + $url[1] = "http://api.aerisapi.com/forecasts/immenstadt,germany?client_id=".urlencode($aeris_client_id)."&client_secret=".urlencode($aeris_client_secret)."&from=today&to=+6days"; $response = file_get_contents($url[1]); diff --git a/stats.php b/stats.php index 6be2c5e..404f1ca 100644 --- a/stats.php +++ b/stats.php @@ -6,8 +6,11 @@ include("incs/pChart/pChart.class"); - $dbconn = mysqli_connect("localhost","m0","ENTFERNT"); - mysqli_select_db($dbconn,"systemstats"); + // Zugang zur Statistik-Datenbank steht in der externen Config + require_once("incs/settings.php"); + readsettings(); + $dbconn = mysqli_connect($stats_mysql_server, $stats_mysql_user, $stats_mysql_pw) or die("Keine Verbindung zur Statistik-Datenbank."); + mysqli_select_db($dbconn, $stats_mysql_db); $qry = mysqli_query($dbconn, "SELECT DATE_FORMAT(datetime, '%d.%m.%y') AS datetime, MAX(percent) AS value FROM hdd WHERE datetime > DATE_SUB(NOW(), INTERVAL 31 DAY) GROUP BY DATE_FORMAT(datetime, '%d.%m.%y') ORDER BY DATE_FORMAT(datetime, '%y%m%d') ASC") or die(mysqli_error($dbconn)); // Dataset definition diff --git a/update/rebuild-settings.php b/update/rebuild-settings.php index dfd1e2d..6d54c97 100644 --- a/update/rebuild-settings.php +++ b/update/rebuild-settings.php @@ -30,7 +30,15 @@ if(!file_put_contents (CONFIG_PATH.CONFIG_FILE, global $firma; global $dbconn; global $geodbconn; - + global $smtp_konten; + global $stats_mysql_server; + global $stats_mysql_user; + global $stats_mysql_pw; + global $stats_mysql_db; + global $openweathermap_appid; + global $aeris_client_id; + global $aeris_client_secret; + $instanz = '.var_export(INSTANZ, true).'; $dbconn = 0; $geodbconn = 0; @@ -40,6 +48,18 @@ if(!file_put_contents (CONFIG_PATH.CONFIG_FILE, $mysql_server = '.configWert("mysqlserver").'; $mysql_opengeodb = '.configWert("opengeodb").'; $firma = '.configWert("firma", true).'; + + // Von Hand zu pflegen: SMTP-Zugänge je Firma, "*" für alle übrigen + $smtp_konten = array( + "*" => array("user" => "", "pw" => ""), + ); + $stats_mysql_server = "localhost"; + $stats_mysql_user = ""; + $stats_mysql_pw = ""; + $stats_mysql_db = "systemstats"; + $openweathermap_appid = ""; + $aeris_client_id = ""; + $aeris_client_secret = ""; ?>')) { $err= error("Konfiguration konnte nicht geschrieben werden!");