From aebdb4d67398523243a01a3b0c22cca657fe2f4c Mon Sep 17 00:00:00 2001 From: Chris Date: Fri, 8 Jan 2021 03:53:41 +0100 Subject: [PATCH] fix bug in cron --- cron/IARMonitor.php | 122 ++++++++++++++++++++++++-------------------- pages/profile.php | 2 +- 2 files changed, 67 insertions(+), 57 deletions(-) diff --git a/cron/IARMonitor.php b/cron/IARMonitor.php index 569e94c..3b02f45 100644 --- a/cron/IARMonitor.php +++ b/cron/IARMonitor.php @@ -1,74 +1,84 @@ prepare("CREATE TABLE IF NOT EXISTS `iarstates` (`userID` VARCHAR(36) NOT NULL COLLATE 'utf8_unicode_ci', `filesize` INT(11) NOT NULL, `iarfilename` VARCHAR(64) NOT NULL COLLATE 'utf8_unicode_ci', `running` INT(1) NOT NULL DEFAULT '0', PRIMARY KEY (`userID`) USING BTREE) COLLATE='utf8_unicode_ci' ENGINE=InnoDB;"); + $statement = $RUNTIME['PDO']->prepare("CREATE TABLE IF NOT EXISTS `iarstates` (`userID` VARCHAR(36) NOT NULL COLLATE 'utf8_unicode_ci', `filesize` BIGINT(20) NOT NULL DEFAULT '0', `iarfilename` VARCHAR(64) NOT NULL COLLATE 'utf8_unicode_ci', `running` INT(1) NOT NULL DEFAULT '0', PRIMARY KEY (`userID`) USING BTREE) COLLATE='utf8_unicode_ci' ENGINE=InnoDB;"); $statement->execute(); $statement = $RUNTIME['PDO']->prepare("SELECT * FROM iarstates WHERE running = 1 LIMIT 1"); $statement->execute(); - if($statement->rowCount() != 0) + if($row = $statement->fetch()) { - while($row = $statement->fetch()) - { - $email = $RUNTIME['OPENSIM']->getUserMail($row['userID']); + $email = $RUNTIME['OPENSIM']->getUserMail($row['userID']); - if(file_exists("data/".$row['iarfilename'])) + $fullFilePath = $_SERVER['PWD']."/data/".$row['iarfilename']; + + echo "Aktive IAR für ".$RUNTIME['OPENSIM']->getUserName($row['userID'])." gefunden. File: ".$fullFilePath."\n"; + + if(file_exists($fullFilePath)) + { + $filesize = filesize($fullFilePath); + + if($filesize != $row['filesize']) { - $filesize = filesize("data/".$row['iarfilename']); + $statementUpdate = $RUNTIME['PDO']->prepare('UPDATE iarstates SET filesize = :filesize WHERE userID = :userID'); + $statementUpdate->execute(['filesize' => $filesize, 'userID' => $row['userID']]); - if($filesize != $row['filesize']) - { - $statementUpdate = $RUNTIME['PDO']->prepare('UPDATE iarstates SET filesize = :filesize WHERE userID = :userID'); - $statementUpdate->execute(['filesize' => $filesize, 'userID' => $row['userID']]); - - continue; - }else{ - - $statementUpdate = $RUNTIME['PDO']->prepare('DELETE FROM iarstates WHERE userID = :userID'); - $statementUpdate->execute(['userID' => $row['userID']]); - - $mail = new PHPMailer(true); - - $mail->SMTPDebug = SMTP::DEBUG_SERVER; - $mail->isSMTP(); - $mail->Host = $RUNTIME['SMTP']['SERVER']; - $mail->Port = $RUNTIME['SMTP']['PORT']; - $mail->SMTPAuth = false; - - - $mail->setFrom($RUNTIME['SMTP']['ADRESS'], $RUNTIME['GRID']['NAME']); - $mail->addAddress($email, $RUNTIME['OPENSIM']->getUserName($row['userID'])); - - $HTMLMESSAGE = 'Deine IAR ist bereit zum Download!
Du kannst sie hier downloaden.'; - - $HTML = new HTML(); - $HTML->importHTML("style/mail.html"); - $HTML->setSeitenInhalt($HTMLMESSAGE); - $HTML->build(); - - $mail->isHTML(true); - $mail->Subject = "Deine IAR steht nun bereit."; - $mail->Body = $HTML->ausgabe(); - $mail->AltBody = strip_tags($HTMLMESSAGE); - - $mail->send(); - $mail->SmtpClose(); - } + echo "Status der IAR für ".$RUNTIME['OPENSIM']->getUserName($row['userID']).": Speichert...\n"; + }else{ + echo "Status der IAR für ".$RUNTIME['OPENSIM']->getUserName($row['userID']).": Sende Mail...\n"; + $statementUpdate = $RUNTIME['PDO']->prepare('DELETE FROM iarstates WHERE userID = :userID'); + $statementUpdate->execute(['userID' => $row['userID']]); + + $email = $RUNTIME['OPENSIM']->getUserMail($row['PrincipalID']); + + $mail = new PHPMailer(true); + + $mail->SMTPDebug = SMTP::DEBUG_SERVER; + $mail->isSMTP(); + $mail->Host = $RUNTIME['SMTP']['SERVER']; + $mail->Port = $RUNTIME['SMTP']['PORT']; + $mail->SMTPAuth = false; + + $mail->setFrom($RUNTIME['SMTP']['ADRESS'], $RUNTIME['GRID']['NAME']); + $mail->addAddress($email, $RUNTIME['OPENSIM']->getUserName($row['userID'])); + + $HTMLMESSAGE = 'Deine IAR ist bereit zum Download!
Du kannst sie hier downloaden.'; + + $HTML = new HTML(); + $HTML->importHTML("style/mail.html"); + $HTML->setSeitenInhalt($HTMLMESSAGE); + $HTML->build(); + + $mail->isHTML(true); + $mail->Subject = "Deine IAR steht nun bereit."; + $mail->Body = $HTML->ausgabe(); + $mail->AltBody = strip_tags($HTMLMESSAGE); + + $mail->send(); + $mail->SmtpClose(); } }else{ - $statement = $RUNTIME['PDO']->prepare("SELECT * FROM iarstates WHERE running = 0 LIMIT 1"); - $statement->execute(); + $name = explode(" ", $RUNTIME['OPENSIM']->getUserName($row['userID'])); - while($row = $statement->fetch()) - { - $statementUpdate = $RUNTIME['PDO']->prepare('UPDATE iarstates SET running = :running WHERE userID = :userID'); - $statementUpdate->execute(['running' => 1, 'userID' => $row['userID']]); + $APIURL = $RUNTIME['SIDOMAN']['URL']."api.php?CONTAINER=".$RUNTIME['SIDOMAN']['CONTAINER']."&KEY=".$RUNTIME['SIDOMAN']['PASSWORD']."&METODE=COMMAND&COMMAND=".urlencode("save iar ".$name[0]." ".$name[1]." /* PASSWORD /downloads/".$row['iarfilename']); + $APIResult = file_get_contents($APIURL); - $iarname = md5(time().$row['userID'].rand()).".iar"; - $name = explode(" ", $RUNTIME['OPENSIM']->getUserName($row['userID'])); + echo "IAR für ".$name[0]." ".$name[1]." wurde gestartet: Status: ".$APIResult."\n"; + } + }else{ + $statement = $RUNTIME['PDO']->prepare("SELECT * FROM iarstates WHERE running = 0 LIMIT 1"); + $statement->execute(); - $APIURL = $RUNTIME['SIDOMAN']['URL']."api.php?CONTAINER=".$RUNTIME['SIDOMAN']['CONTAINER']."&KEY=".$RUNTIME['SIDOMAN']['PASSWORD']."&METODE=COMMAND&COMMAND=".urlencode("save iar ".$name[0]." ".$name[1]." /* PASSWORD /downloads/".$iarname); - $APIResult = file_get_contents($APIURL); - } + while($row = $statement->fetch()) + { + $statementUpdate = $RUNTIME['PDO']->prepare('UPDATE iarstates SET running = :running WHERE userID = :userID'); + $statementUpdate->execute(['running' => 1, 'userID' => $row['userID']]); + + $name = explode(" ", $RUNTIME['OPENSIM']->getUserName($row['userID'])); + + $APIURL = $RUNTIME['SIDOMAN']['URL']."api.php?CONTAINER=".$RUNTIME['SIDOMAN']['CONTAINER']."&KEY=".$RUNTIME['SIDOMAN']['PASSWORD']."&METODE=COMMAND&COMMAND=".urlencode("save iar ".$name[0]." ".$name[1]." /* PASSWORD /downloads/".$row['iarfilename']); + $APIResult = file_get_contents($APIURL); + + echo "IAR für ".$name[0]." ".$name[1]." wurde gestartet: Status: ".$APIResult."\n"; } } diff --git a/pages/profile.php b/pages/profile.php index c9ac5e6..3b6b404 100644 --- a/pages/profile.php +++ b/pages/profile.php @@ -1,5 +1,5 @@ prepare("CREATE TABLE IF NOT EXISTS `iarstates` (`userID` VARCHAR(36) NOT NULL COLLATE 'utf8_unicode_ci', `filesize` INT(11) NOT NULL, `iarfilename` VARCHAR(64) NOT NULL COLLATE 'utf8_unicode_ci', `running` INT(1) NOT NULL DEFAULT '0', PRIMARY KEY (`userID`) USING BTREE) COLLATE='utf8_unicode_ci' ENGINE=InnoDB;"); + $statement = $RUNTIME['PDO']->prepare("CREATE TABLE IF NOT EXISTS `iarstates` (`userID` VARCHAR(36) NOT NULL COLLATE 'utf8_unicode_ci', `filesize` BIGINT(20) NOT NULL DEFAULT '0', `iarfilename` VARCHAR(64) NOT NULL COLLATE 'utf8_unicode_ci', `running` INT(1) NOT NULL DEFAULT '0', PRIMARY KEY (`userID`) USING BTREE) COLLATE='utf8_unicode_ci' ENGINE=InnoDB;"); $statement->execute(); $HTML->setHTMLTitle("Dein Profile");