Add Check & Rebuild script for automated quality assurance; update README with usage instructions and modify cache timestamps in config
This commit is contained in:
39
README.md
39
README.md
@@ -351,11 +351,48 @@ Um die Entwicklung und Wartung zu erleichtern, wurden benutzerdefinierte Scripts
|
|||||||
- **Prävention**: Stelle sicher, dass neue Custom-Dateien mit korrekten Berechtigungen erstellt werden (z.B. via Docker-Container als `www-data`).
|
- **Prävention**: Stelle sicher, dass neue Custom-Dateien mit korrekten Berechtigungen erstellt werden (z.B. via Docker-Container als `www-data`).
|
||||||
|
|
||||||
### Allgemeine Tipps
|
### Allgemeine Tipps
|
||||||
- Nach Änderungen immer `docker exec espocrm php /var/www/html/command.php Rebuild` ausführen.
|
- **WICHTIG**: Nach jeder Änderung an Custom-Dateien das Check & Rebuild Script ausführen:
|
||||||
|
```bash
|
||||||
|
./custom/scripts/check_and_rebuild.sh
|
||||||
|
```
|
||||||
|
Das Script prüft automatisch auf häufige Fehler (JSON-Syntax, Dateirechte) und führt bei Fehlerfreiheit den Rebuild durch.
|
||||||
|
|
||||||
|
- Manueller Rebuild (nur falls Script nicht funktioniert):
|
||||||
|
```bash
|
||||||
|
docker exec espocrm php /var/www/html/command.php Rebuild
|
||||||
|
```
|
||||||
|
|
||||||
- Logs prüfen: `tail -n 100 /var/lib/docker/volumes/vmh-espocrm_espocrm/_data/data/logs/espo-YYYY-MM-DD.log`
|
- Logs prüfen: `tail -n 100 /var/lib/docker/volumes/vmh-espocrm_espocrm/_data/data/logs/espo-YYYY-MM-DD.log`
|
||||||
- Bei Relationship-Problemen: Logs nach "404" und "Link does not exist" durchsuchen: `tail -n 500 /var/lib/docker/volumes/vmh-espocrm_espocrm/_data/data/logs/espo-$(date +%Y-%m-%d).log | grep -A 3 "404\|Link does not exist"`
|
- Bei Relationship-Problemen: Logs nach "404" und "Link does not exist" durchsuchen: `tail -n 500 /var/lib/docker/volumes/vmh-espocrm_espocrm/_data/data/logs/espo-$(date +%Y-%m-%d).log | grep -A 3 "404\|Link does not exist"`
|
||||||
- Bei DB-Problemen: Custom-Scripts wie `workflow_manager.php` verwenden.
|
- Bei DB-Problemen: Custom-Scripts wie `workflow_manager.php` verwenden.
|
||||||
|
|
||||||
|
### Check & Rebuild Script
|
||||||
|
|
||||||
|
Das Script `custom/scripts/check_and_rebuild.sh` automatisiert die Qualitätssicherung und führt folgende Prüfungen durch:
|
||||||
|
|
||||||
|
1. **JSON-Syntax-Validierung**: Prüft alle `.json` Dateien im `custom/` Verzeichnis auf gültiges JSON
|
||||||
|
2. **Dateirechte-Prüfung**: Stellt sicher, dass alle Dateien `www-data:www-data` als Owner haben
|
||||||
|
3. **System-Checks**: Validiert Existenz von Cache- und Logs-Verzeichnissen
|
||||||
|
4. **Automatischer Rebuild**: Bei Fehlerfreiheit wird der Rebuild durchgeführt
|
||||||
|
|
||||||
|
**Verwendung:**
|
||||||
|
```bash
|
||||||
|
# Im EspoCRM-Root-Verzeichnis ausführen
|
||||||
|
./custom/scripts/check_and_rebuild.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
**Ausgabe:**
|
||||||
|
- ✓ Grün: Alles in Ordnung
|
||||||
|
- ⚠ Gelb: Warnungen (Rebuild wird trotzdem ausgeführt)
|
||||||
|
- ✗ Rot: Fehler (Rebuild wird NICHT ausgeführt)
|
||||||
|
|
||||||
|
**Bei Berechtigungsfehlern:**
|
||||||
|
```bash
|
||||||
|
sudo chown -R www-data:www-data custom/
|
||||||
|
sudo find custom/ -type f -name "*.json" -exec chmod 664 {} \;
|
||||||
|
sudo find custom/ -type d -exec chmod 775 {} \;
|
||||||
|
```
|
||||||
|
|
||||||
## 9. Portal-Freigabe-System
|
## 9. Portal-Freigabe-System
|
||||||
|
|
||||||
Um Entitäten für Portalnutzer (Contact-Entität) freizugeben, wurde ein konsistentes Freigabe-System implementiert:
|
Um Entitäten für Portalnutzer (Contact-Entität) freizugeben, wurde ein konsistentes Freigabe-System implementiert:
|
||||||
|
|||||||
157
custom/scripts/check_and_rebuild.sh
Executable file
157
custom/scripts/check_and_rebuild.sh
Executable file
@@ -0,0 +1,157 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# EspoCRM Check & Rebuild Script
|
||||||
|
# Prüft auf häufige Fehler und führt bei Fehlerfreiheit einen Rebuild durch
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
|
||||||
|
CUSTOM_DIR="$SCRIPT_DIR/custom"
|
||||||
|
ERRORS=0
|
||||||
|
WARNINGS=0
|
||||||
|
|
||||||
|
echo "=========================================="
|
||||||
|
echo "EspoCRM Check & Rebuild Script"
|
||||||
|
echo "=========================================="
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# Farben für Output
|
||||||
|
RED='\033[0;31m'
|
||||||
|
YELLOW='\033[1;33m'
|
||||||
|
GREEN='\033[0;32m'
|
||||||
|
BLUE='\033[0;34m'
|
||||||
|
NC='\033[0m' # No Color
|
||||||
|
|
||||||
|
# 1. JSON-Syntax prüfen
|
||||||
|
echo -e "${BLUE}[1/3] Prüfe JSON-Syntax...${NC}"
|
||||||
|
echo "---"
|
||||||
|
|
||||||
|
JSON_FILES=$(find "$CUSTOM_DIR" -type f -name "*.json" 2>/dev/null)
|
||||||
|
JSON_COUNT=$(echo "$JSON_FILES" | grep -c . || echo 0)
|
||||||
|
|
||||||
|
if [ "$JSON_COUNT" -eq 0 ]; then
|
||||||
|
echo -e "${YELLOW}⚠ Warnung: Keine JSON-Dateien im custom/ Verzeichnis gefunden${NC}"
|
||||||
|
WARNINGS=$((WARNINGS + 1))
|
||||||
|
else
|
||||||
|
echo "Gefundene JSON-Dateien: $JSON_COUNT"
|
||||||
|
|
||||||
|
INVALID_JSON=0
|
||||||
|
while IFS= read -r file; do
|
||||||
|
if [ -n "$file" ]; then
|
||||||
|
if ! jq empty "$file" 2>/dev/null; then
|
||||||
|
echo -e "${RED}✗ Fehler: Ungültiges JSON in $file${NC}"
|
||||||
|
ERRORS=$((ERRORS + 1))
|
||||||
|
INVALID_JSON=$((INVALID_JSON + 1))
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
done <<< "$JSON_FILES"
|
||||||
|
|
||||||
|
if [ "$INVALID_JSON" -eq 0 ]; then
|
||||||
|
echo -e "${GREEN}✓ Alle JSON-Dateien sind gültig${NC}"
|
||||||
|
else
|
||||||
|
echo -e "${RED}✗ $INVALID_JSON JSON-Dateien mit Syntaxfehlern gefunden${NC}"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# 2. Dateirechte prüfen
|
||||||
|
echo -e "${BLUE}[2/3] Prüfe Dateirechte...${NC}"
|
||||||
|
echo "---"
|
||||||
|
|
||||||
|
WRONG_OWNER=0
|
||||||
|
CUSTOM_FILES=$(find "$CUSTOM_DIR" -type f 2>/dev/null || echo "")
|
||||||
|
|
||||||
|
if [ -z "$CUSTOM_FILES" ]; then
|
||||||
|
echo -e "${YELLOW}⚠ Warnung: Keine Dateien im custom/ Verzeichnis gefunden${NC}"
|
||||||
|
WARNINGS=$((WARNINGS + 1))
|
||||||
|
else
|
||||||
|
while IFS= read -r file; do
|
||||||
|
if [ -n "$file" ]; then
|
||||||
|
OWNER=$(stat -c '%U:%G' "$file" 2>/dev/null || echo "unknown:unknown")
|
||||||
|
if [ "$OWNER" != "www-data:www-data" ]; then
|
||||||
|
echo -e "${YELLOW}⚠ Warnung: Falsche Dateirechte für $file (Owner: $OWNER, erwartet: www-data:www-data)${NC}"
|
||||||
|
WRONG_OWNER=$((WRONG_OWNER + 1))
|
||||||
|
WARNINGS=$((WARNINGS + 1))
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
done <<< "$CUSTOM_FILES"
|
||||||
|
|
||||||
|
if [ "$WRONG_OWNER" -eq 0 ]; then
|
||||||
|
echo -e "${GREEN}✓ Alle Dateien haben korrekte Berechtigungen (www-data:www-data)${NC}"
|
||||||
|
else
|
||||||
|
echo -e "${YELLOW}⚠ $WRONG_OWNER Dateien mit falschen Berechtigungen gefunden${NC}"
|
||||||
|
echo ""
|
||||||
|
echo "Zum Beheben aller Berechtigungen ausführen:"
|
||||||
|
echo " sudo chown -R www-data:www-data $CUSTOM_DIR"
|
||||||
|
echo " sudo chmod -R 664 $CUSTOM_DIR/**/*.json"
|
||||||
|
echo " sudo chmod -R 775 $CUSTOM_DIR/**/*/ # Verzeichnisse"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# 3. Cache-Verzeichnis prüfen
|
||||||
|
echo -e "${BLUE}[3/3] Prüfe System...${NC}"
|
||||||
|
echo "---"
|
||||||
|
|
||||||
|
if [ ! -d "$SCRIPT_DIR/data/cache" ]; then
|
||||||
|
echo -e "${RED}✗ Fehler: Cache-Verzeichnis existiert nicht${NC}"
|
||||||
|
ERRORS=$((ERRORS + 1))
|
||||||
|
else
|
||||||
|
echo -e "${GREEN}✓ Cache-Verzeichnis existiert${NC}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -d "$SCRIPT_DIR/data/logs" ]; then
|
||||||
|
echo -e "${RED}✗ Fehler: Logs-Verzeichnis existiert nicht${NC}"
|
||||||
|
ERRORS=$((ERRORS + 1))
|
||||||
|
else
|
||||||
|
echo -e "${GREEN}✓ Logs-Verzeichnis existiert${NC}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "=========================================="
|
||||||
|
echo "Zusammenfassung:"
|
||||||
|
echo "---"
|
||||||
|
|
||||||
|
if [ "$ERRORS" -eq 0 ] && [ "$WARNINGS" -eq 0 ]; then
|
||||||
|
echo -e "${GREEN}✓ Keine Fehler oder Warnungen gefunden${NC}"
|
||||||
|
elif [ "$ERRORS" -eq 0 ]; then
|
||||||
|
echo -e "${YELLOW}⚠ $WARNINGS Warnung(en) gefunden (Rebuild wird trotzdem ausgeführt)${NC}"
|
||||||
|
else
|
||||||
|
echo -e "${RED}✗ $ERRORS Fehler und $WARNINGS Warnung(en) gefunden${NC}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "=========================================="
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# Entscheidung: Rebuild durchführen oder nicht
|
||||||
|
if [ "$ERRORS" -gt 0 ]; then
|
||||||
|
echo -e "${RED}REBUILD WIRD NICHT DURCHGEFÜHRT${NC}"
|
||||||
|
echo "Bitte behebe die oben genannten Fehler und führe das Script erneut aus."
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
echo -e "${GREEN}Starte Rebuild...${NC}"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# Rebuild durchführen
|
||||||
|
if command -v docker &> /dev/null; then
|
||||||
|
if docker exec espocrm php /var/www/html/command.php rebuild 2>&1; then
|
||||||
|
echo ""
|
||||||
|
echo -e "${GREEN}=========================================="
|
||||||
|
echo "✓ REBUILD ERFOLGREICH ABGESCHLOSSEN"
|
||||||
|
echo "==========================================${NC}"
|
||||||
|
exit 0
|
||||||
|
else
|
||||||
|
echo ""
|
||||||
|
echo -e "${RED}=========================================="
|
||||||
|
echo "✗ REBUILD FEHLGESCHLAGEN"
|
||||||
|
echo "==========================================${NC}"
|
||||||
|
echo "Prüfe die Logs unter data/logs/ für weitere Details."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo -e "${RED}✗ Docker nicht gefunden. Rebuild kann nicht durchgeführt werden.${NC}"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
@@ -349,8 +349,8 @@ return [
|
|||||||
0 => 'youtube.com',
|
0 => 'youtube.com',
|
||||||
1 => 'google.com'
|
1 => 'google.com'
|
||||||
],
|
],
|
||||||
'cacheTimestamp' => 1768938316,
|
'cacheTimestamp' => 1768938511,
|
||||||
'microtime' => 1768938316.687896,
|
'microtime' => 1768938511.815557,
|
||||||
'siteUrl' => 'https://crm.bitbylaw.com',
|
'siteUrl' => 'https://crm.bitbylaw.com',
|
||||||
'fullTextSearchMinLength' => 4,
|
'fullTextSearchMinLength' => 4,
|
||||||
'appTimestamp' => 1768843902,
|
'appTimestamp' => 1768843902,
|
||||||
|
|||||||
Reference in New Issue
Block a user