Enhance alarm handling by adding MySQL escaping for phone numbers and refactoring SQL insertions

This commit is contained in:
jhartworks
2025-09-30 10:18:04 +02:00
parent 8b25601611
commit 265c6746a2
+34 -13
View File
@@ -429,6 +429,16 @@ class MonitoringServer extends IPSModule {
$tdOld = $this->ReadAttributeString("AtAlarmtable"); $tdOld = $this->ReadAttributeString("AtAlarmtable");
$td = $tdOld; $td = $tdOld;
MySQL_Open($idSql);
// === Helfer: Escaping für Strings ===
if (function_exists('MySQL_RealEscapeString')) {
$esc = fn(string $s) => MySQL_RealEscapeString($idSql, $s);
} else {
// Fallback, falls Modul-Funktion nicht verfügbar ist
$esc = fn(string $s) => addslashes($s);
}
$time = date("Y-m-d H:i:s"); $time = date("Y-m-d H:i:s");
$art = $projectnumber." | ".$projectname. " | ISP ".$ispnr; $art = $projectnumber." | ".$projectname. " | ISP ".$ispnr;
@@ -479,7 +489,28 @@ class MonitoringServer extends IPSModule {
if ($sendphone == true){ if ($sendphone == true){
$phone = 1; $phone = 1;
if ($numbersPhone != ""){ if ($numbersPhone != ""){
$phonenumbers = $numbersPhone;
$phonenumbers = str_getcsv($numbersPhone);
foreach ($phonenumbers as $phonenumber){
$sqlcall = sprintf(
"INSERT INTO alarmcalls (
alarmname, phonenumber
) VALUES (
'%s','%s'
)",
$esc($smname), $esc($phonenumber)
);
// === Ausführen ===
$okcall = MySQL_ExecuteSimple($idSql, $sqlcall);
if (!$okcall) {
echo "INSERT fehlgeschlagen.\n";
}
$phoned = 1;
}
} }
} }
@@ -509,7 +540,7 @@ class MonitoringServer extends IPSModule {
$this->WriteAttributeString("AtAlarmtable", $td); $this->WriteAttributeString("AtAlarmtable", $td);
//IPS_LogMessage ("Notify", "Alarmhistory updated"); //IPS_LogMessage ("Notify", "Alarmhistory updated");
MySQL_Open($idSql);
// Beispielwerte (ersetzen durch echte) // Beispielwerte (ersetzen durch echte)
$topic = ''; $topic = '';
@@ -518,15 +549,6 @@ class MonitoringServer extends IPSModule {
$smsnumber = '0'; $smsnumber = '0';
$smsed = 0; $smsed = 0;
// === Helfer: Escaping für Strings ===
if (function_exists('MySQL_RealEscapeString')) {
$esc = fn(string $s) => MySQL_RealEscapeString($idSql, $s);
} else {
// Fallback, falls Modul-Funktion nicht verfügbar ist
$esc = fn(string $s) => addslashes($s);
}
// === INSERT bauen === // === INSERT bauen ===
$sql = sprintf( $sql = sprintf(
"INSERT INTO alarms ( "INSERT INTO alarms (
@@ -547,7 +569,7 @@ class MonitoringServer extends IPSModule {
$esc($topic), $esc($projectnumber), $esc($projectname), $esc($ispnumber), $esc($smname), $esc($topic), $esc($projectnumber), $esc($projectname), $esc($ispnumber), $esc($smname),
(int)$sms, $esc($smsnumber), (int)$smsed, (int)$sms, $esc($smsnumber), (int)$smsed,
(int)$whatsapp, $esc($numbersWhatsapp), (int)$whatsapped, (int)$whatsapp, $esc($numbersWhatsapp), (int)$whatsapped,
(int)$phone, $esc($phonenumber), (int)$phoned, (int)$phone, $esc($numbersPhone), (int)$phoned,
(int)$mail, $esc($email_address), (int)$mailed, (int)$mail, $esc($email_address), (int)$mailed,
(int)$push (int)$push
); );
@@ -556,7 +578,6 @@ class MonitoringServer extends IPSModule {
$ok = MySQL_ExecuteSimple($idSql, $sql); $ok = MySQL_ExecuteSimple($idSql, $sql);
if (!$ok) { if (!$ok) {
echo "INSERT fehlgeschlagen.\n"; echo "INSERT fehlgeschlagen.\n";
return;
} }
} }
elseif (GetValue($trigid) == false) { elseif (GetValue($trigid) == false) {