Skip to content

Commit

Permalink
Native unzip/untar, big code refactoring, removed PushBullet
Browse files Browse the repository at this point in the history
  • Loading branch information
milux committed Aug 29, 2022
1 parent c99c419 commit 97664af
Show file tree
Hide file tree
Showing 3 changed files with 208 additions and 192 deletions.
54 changes: 34 additions & 20 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,26 +2,38 @@
Das hier geht an alle, die ChurchTools selbst hosten...

## Allgemein

Michael Lux (@milux) und Ich hatten keine Lust mehr ChurchTools ständig von Hand per FTP zu aktualisieren,
deshalb haben wir einen "kleinen" Auto Updater für ChurchTools entwickelt.
Michael Lux (@milux) und ich hatten keine Lust mehr, ChurchTools ständig von Hand per FTP zu aktualisieren.
Deshalb haben wir einen "kleinen" Auto Updater für ChurchTools entwickelt.
Die Benutzung unseres Updaters ist denkbar einfach und sollte auch ohne Programmier-Kenntnisse nicht überfordern.

## Funktionen
### WICHTIG: Update ab ChurchTools 3.89.0
Das `.tar.gz`-Archiv mit den Updates enthält nun **Dateinamen mit >= 99 Zeichen Länge**!
Dies wird vom alten TAR-Standard "ustar" nicht unterstützt, weshalb das Archiv im Format "pax" (POSIX 2001)
geliefert wird. Unglücklicherweise gibt es derzeit **keine** PHP-Library, die Dateien aus pax-TARs mit vollständigen
Namen korrekt entpacken kann.
Die aktuelle Updater-Version hat jetzt eine Heuristik zur Erkennung falsch entpackter Update-TARs
(99 <= Dateiname <= 100 Zeichen, keine File-Extension) und bricht in diesem Fall das Update ab.

Aus diesem Grund gibt es in der aktuellen Version jetzt die Möglichkeit, das native `tar`-Programm per Kommandozeile
zu verwenden, sofern es vorhanden ist.
Auf allen typischen Linux-Installationen sollte dieses Programm vorhanden sein. Um das "native Entpacken" zu aktivieren,
muss in der `config.php` folgendes deklariert werden: `const NATIVE_EXTRACT = true;` (s. unten).
Diese Zeile kann auch nachträglich problemlos hinzugefügt werden.

## Funktionen
Folgender **Funktionsumfang** ist in unserem Skript momentan enthalten:

+ Schutz des Skripts mit per Query-String übergebenem Passwort.
+ Verifikation, ob ein Update verfügbar ist.
+ Herunterladen der ZIP-Datei vom ChurchTools SeaFile Server
+ Entpacken der ZIP-Datei und Ersetzung der index.php und des system-Verzeichnisses (Einspielen des Updates)
+ Lock, der verhindert, dass das Update mehrmals zur gleichen Zeit gestartet wird.
+ Push Benachrichtigung (über Pushover und / oder Pushbullet)
+ Push-Benachrichtigung über Erfolg/Misserfolg des Updates (via Pushover)

Bei Fragen stehen wir gerne zur Verfügung! :)

## Installation
Hiermit wird ein `update` Verzeichnis in eurem Curchtools verzeichnis angelegt welches den Updater
Hiermit wird ein `update`-Verzeichnis in eurem ChurchTools-Verzeichnis angelegt welches den Updater
und die von euch zu erstellende Konfigurationsdatei enthält und ganz einfach geupdated werden kann.
```bash
cd <CHURCHTOOLS_DIR>
Expand All @@ -42,32 +54,34 @@ Vor dem ersten Update müsst Ihr eure Konfiguration initialisieren und ein Passw
Dafür zuerst durch den Aufruf von <https://churchtools_domain.xyz/update/?EUER_PASSWORT> einen Passwort-Hash erzeugen!

Den Inhalt der bei diesem Aufruf angezeigt wird als `update/config.php` speichern und noch bei
`define('SEAFILE_CODE', 'xyz1234567');` das `xyz1234567` ersetzen, dann ist das Skript einsatzbereit!
`const SEAFILE_CODE = 'xyz1234567';` das `xyz1234567` ersetzen, dann ist das Skript einsatzbereit!
(Ihr erhaltet für Updates per E-Mail einen Link zu einer SeaFile-Seite, die i.d.R. so aussieht:
https://seafile.churchtools.de/d/**xyz1234567**/, verwendet davon den hinteren Teil, hier fett gedruckt.)

### Push
Defaultmäßig ist Push deaktiviert, kann aber über die define()-Anweisungen am Beginn der `push.inc.php` eingerichtet
und über das Anpassen von `define('ENABLE_PUSH', false);` (`false` zu `true`) aktiviert werden.
Defaultmäßig ist Push deaktiviert, kann aber über die `const`-Deklarationen am Beginn der `push.inc.php` eingerichtet
und über das Anpassen von `const ENABLE_PUSH = false;` (`false` zu `true`) aktiviert werden.

**config.php:** (aktivierte Einträge sind Pflicht und müssen passen, die auskommentierten optional)
**config.php:**
```php
<?php
// Put in your own password hash here
define('HASH', 'PUT IN YOUR OWN HASH HERE');
const HASH = '$hash';
// Modify to correct SeaFile code here!
define('SEAFILE_CODE', 'xyz1234567');
const SEAFILE_CODE = 'xyz1234567';

// Should be fine, except if JMR decides to change the location of the SeaFile server... ;) - end with slash
define('SEAFILE_HOST', 'https://seafile.church.tools/');
// Switch message pushing via Pushover/PushBullet on/off
define('ENABLE_PUSH', false);
// the root directory of Churchtools - default is the parent of this
define('CT_ROOT_DIR', __DIR__ . '/..');
const SEAFILE_HOST = 'https://seafile.church.tools/';
// Switch message pushing via Pushover on/off
const ENABLE_PUSH = false;
// The root directory of Churchtools - default is the parent of this file's directory
const CT_ROOT_DIR = __DIR__ . '/..';
// Destination for the backup archives
define('BACKUP_DIR', __DIR__ . '/../_BACKUP');
// show more infos
define('DEBUG', false);
const BACKUP_DIR = __DIR__ . '/../_BACKUP';
// Show debug information
const DEBUG = false;
// Use CLI for extraction
const NATIVE_EXTRACT = false;
```

Nun könnt ihr das script per Cronjob einmal am Tag (z.B. bei uns 4:00 Uhr) oder bei Bedarf manuell so aufrufen:
Expand Down
Loading

0 comments on commit 97664af

Please sign in to comment.