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.
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();
}
Mir ist jedoch noch nicht ganz klar, wie ich die nach der ersten Installation anstoße?
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"
]
}
}
PHP-Code:
<?php
namespace BohnMedia\ContaoBackupBundle;
class ScriptHandler
{
public function generateDefaultPassword(): void
{
$file = fopen("/[PFAD]/works.txt", "w");
fclose($file);
}
}
(Statischer Testpfad wurde entfernt)
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
Lesezeichen