Hallo zusammen,
ich arbeite gerade an einem Bundle, über das ich mir ein Backup inklusive Datenbank aus Contao ziehen kann.
https://github.com/bohnmedia/contaobackup
Die Backups können über eine URL direkt herunter geladen werden, sodass ich später per Cronjob von einer anderen Maschine die Backups veranlassen kann. Letztendlich geht es, hoffentlich, nur um eine Kleinigkeit.
Wenn das Bundle installiert wird, würde ich gerne automatisch ein Passwort in die $GLOBALS['TL_CONFIG']['backupKey'] schreiben.
Mir ist bewusst, dass ich einen Default-Wert über die config.php definieren kann, aber ich würde diesen Wert gerne zufällig erzeugen. Dazu gibt es auch schon eine eigene Funktion.
Mir ist jedoch noch nicht ganz klar, wie ich die nach der ersten Installation anstoße?PHP-Code:public function generateDefaultPassword()
{
// Generate string
$backupKey = '';
$allowedChars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
$max = strlen($allowedChars) - 1;
for ($i=0; $i<32; $i++) {
$backupKey .= substr($allowedChars, rand(0, $max), 1);
}
// Update localconfig
$objConfig = Config::getInstance();
$objConfig->add("\$GLOBALS['TL_CONFIG']['backupKey']", $backupKey);
$objConfig->save();
}
Ich habe versucht, die Funktion über "scripts" > "post-install-cmd" in der composer.json anzustoßen, habe aber bisher den Eindruck, dass der Eintrag einfach ignoriert wird.
Das Testscript, das einfach nur eine Datei anlegen soll, blieb bisher ohne Erfolg.
Code:{ "name": "bohnmedia/contaobackup", "description": "Contao extension for backups", "version": "1.0", "keywords": [ "contao", "backup" ], "type": "contao-bundle", "license": "MIT", "authors": [ { "name": "bohn.media", "homepage": "https://bohn.media" } ], "require": { "php": "^7.1", "contao/core-bundle": "^4.4", "ifsnop/mysqldump-php": "^2.9" }, "require-dev": { "contao/manager-plugin": "^2.0" }, "conflict": { "contao/manager-plugin": "<2.0 || >=3.0" }, "autoload": { "psr-4": { "BohnMedia\\ContaoBackupBundle\\": "src/" } }, "extra": { "contao-manager-plugin": "BohnMedia\\ContaoBackupBundle\\ContaoManager\\Plugin" }, "scripts": { "post-install-cmd": [ "BohnMedia\\ContaoBackupBundle\\ScriptHandler::generateDefaultPassword" ] } }(Statischer Testpfad wurde entfernt)PHP-Code:<?php
namespace BohnMedia\ContaoBackupBundle;
class ScriptHandler
{
public function generateDefaultPassword(): void
{
$file = fopen("/[PFAD]/works.txt", "w");
fclose($file);
}
}
Hat jemand einen Tipp für mich, wie ich im Idealfall einmalig bei der Installation die $GLOBALS['TL_CONFIG']['backupKey'] beschreiben kann?
Dank und Gruß
Dennis

Zitieren