feat(cloudron): add tirreno package artifacts

- Add CloudronStack/output/CloudronPackages-Artifacts/tirreno/ directory and its contents
- Includes package manifest, Dockerfile, source code, documentation, and build artifacts
- Add tirreno-1761840148.tar.gz as a build artifact
- Add tirreno-cloudron-package-1761841304.tar.gz as the Cloudron package
- Include all necessary files for the tirreno Cloudron package

This adds the complete tirreno Cloudron package artifacts to the repository.
This commit is contained in:
2025-10-30 11:43:06 -05:00
parent 0ce353ea9d
commit 91d52d2de5
1692 changed files with 202851 additions and 0 deletions

View File

@@ -0,0 +1,134 @@
<?php
/**
* Tirreno ~ Open source user analytics
* Copyright (c) Tirreno Technologies Sàrl (https://www.tirreno.com)
*
* Licensed under GNU Affero General Public License version 3 of the or any later version.
* For full copyright and license information, please see the LICENSE
* Redistributions of files must retain the above copyright notice.
*
* @copyright Copyright (c) Tirreno Technologies Sàrl (https://www.tirreno.com)
* @license https://opensource.org/licenses/AGPL-3.0 AGPL License
* @link https://www.tirreno.com Tirreno(tm)
*/
namespace Utils;
class Mailer {
public static function send(?string $toName, string $toAddress, string $subject, string $message): array {
$f3 = \Base::instance();
$canSendEmail = $f3->get('SEND_EMAIL');
if (!$canSendEmail) {
return [
'success' => true,
'message' => 'Email will not be sent in development mode',
];
}
$toName = $toName ?? '';
$data = null;
if (\Utils\Variables::getMailPassword()) {
$data = self::sendByMailgun($toAddress, $toName, $subject, $message);
}
if ($data === null || !$data['success']) {
$data = self::sendByNativeMail($toAddress, $toName, $subject, $message);
}
return $data;
}
private static function sendByMailgun(string $toAddress, string $toName, string $subject, string $message): array {
$f3 = \Base::instance();
$fromName = \Utils\Constants::get('MAIL_FROM_NAME');
$smtpDebug = $f3->get('SMTP_DEBUG');
$fromAddress = \Utils\Variables::getMailLogin();
$mailLogin = \Utils\Variables::getMailLogin();
$mailPassword = \Utils\Variables::getMailPassword();
if ($fromAddress === null) {
return [
'success' => false,
'message' => 'Admin email is not set.',
];
}
$mail = new \PHPMailer\PHPMailer\PHPMailer(true);
try {
//Server settings
$mail->SMTPDebug = $smtpDebug; //Enable verbose debug output
$mail->isSMTP(); //Send using SMTP
$mail->Host = \Utils\Constants::get('MAIL_HOST'); //Set the SMTP server to send through
$mail->SMTPAuth = true; //Enable SMTP authentication
$mail->Username = $mailLogin; //SMTP username
$mail->Password = $mailPassword; //SMTP password
$mail->SMTPSecure = \PHPMailer\PHPMailer\PHPMailer::ENCRYPTION_STARTTLS; //Enable implicit TLS encryption
$mail->Port = 587; //TCP port to connect to; use 587 if you have set `SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS`
//Recipients
$mail->setFrom($fromAddress, $fromName);
$mail->addAddress($toAddress, $toName); //Add a recipient
$mail->addReplyTo($fromAddress, $fromName);
//Content
$mail->isHTML(false); //Set email format to HTML
$mail->Subject = $subject;
$mail->Body = $message;
$mail->send();
$success = true;
$message = 'Message has been sent';
} catch (\Exception $e) {
$success = false;
$message = "Message could not be sent. Mailer Error: {$mail->ErrorInfo}";
}
return [
'success' => $success,
'message' => $message,
];
}
private static function sendByNativeMail(string $toAddress, string $toName, string $subject, string $message): array {
$sendMailPath = \Utils\Constants::get('MAIL_SEND_BIN');
if (!file_exists($sendMailPath) || !is_executable($sendMailPath)) {
return [
'success' => false,
'message' => 'Sendmail is not installed. Cannot send email.',
];
}
$fromName = \Utils\Constants::get('MAIL_FROM_NAME');
$fromAddress = \Utils\Variables::getMailLogin();
if ($fromAddress === null) {
return [
'success' => false,
'message' => 'Admin email is not set.',
];
}
$headers = [
'MIME-Version: 1.0',
'Content-type: text/html; charset=utf-8',
sprintf('From: %s <%s>', $fromName, $fromAddress),
sprintf('Reply-To: %s', $fromAddress),
sprintf('X-Mailer: PHP/%s', phpversion()),
];
$headers = implode("\r\n", $headers);
$success = mail($toAddress, $subject, $message, $headers);
$message = $success ? 'Message sent' : 'Error occurred';
return [
'success' => $success,
'message' => $message,
];
}
}