Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # helpfunctions.sh
- messageText() {
- local text="$1"
- local color="${2:-white}" # Standardfarbe auf Grün setzen, wenn keine Farbe angegeben ist
- local bold="${3:-true}" # Standard auf Fettdruck setzen, wenn nicht spezifiziert
- # Standardfarbe
- local colorCode=""
- local boldCode=""
- # Set color codes
- case "$color" in
- black) colorCode="\033[0;30m" ;; # Black
- red) colorCode="\033[0;31m" ;; # Red
- green) colorCode="\033[0;32m" ;; # Green
- yellow) colorCode="\033[0;33m" ;; # Yellow
- blue) colorCode="\033[0;34m" ;; # Blue
- magenta) colorCode="\033[0;35m" ;; # Magenta
- cyan) colorCode="\033[0;36m" ;; # Cyan
- lightgray) colorCode="\033[0;37m" ;; # Light Gray
- darkgray) colorCode="\033[1;30m" ;; # Dark Gray
- lightred) colorCode="\033[1;31m" ;; # Light Red
- lightgreen) colorCode="\033[1;32m" ;; # Light Green
- lightyellow) colorCode="\033[1;33m" ;; # Light Yellow
- lightblue) colorCode="\033[1;34m" ;; # Light Blue
- lightmagenta) colorCode="\033[1;35m" ;; # Light Magenta
- lightcyan) colorCode="\033[1;36m" ;; # Light Cyan
- white) colorCode="\033[1;37m" ;; # White
- *) colorCode="\033[0m" ;; # No Color
- esac
- # Fettdruck setzen
- if [ "$bold" = true ]; then
- boldCode="\033[1m"
- fi
- # Ausgabe
- echo -e "${boldCode}${colorCode}${text}\033[0m"
- }
- checkPrerequisites() {
- local command="$1"
- local packet="${2:-$command}"
- local versionCommand="${3:-}"
- local minVersion="${4:-}"
- local installCommand="${5:-sudo apt-get install -y $packet}"
- if ! command -v "$command" &> /dev/null; then
- messageText "$packet ist nicht installiert. Installation wird gestartet..." yellow true
- eval "$installCommand"
- elif [ -n "$versionCommand" ] && [ -n "$minVersion" ]; then
- local installVersion=$($versionCommand | grep -oP '(\d+\.\d+\.\d+)' || echo "")
- if [ "$(printf '%s\n' "$minVersion" "$installVersion" | sort -V | head -n1)" != "$minVersion" ]; then
- messageText "Installiere $packet $minVersion+..." yellow true
- eval "$installCommand"
- else
- messageText "$packet $minVersion+ ist bereits installiert." green true
- fi
- else
- messageText "$packet ist bereits installiert." green true
- fi
- }
- install_docker_compose_v2() {
- # Pfad, an dem das Docker Compose V2 Plugin installiert wird
- COMPOSE_PATH="${HOME}/.docker/cli-plugins/docker-compose"
- # Überprüfe, ob Docker Compose V2 bereits installiert ist
- if docker compose version 2> /dev/null; then
- messageText "Docker Compose V2 ist bereits installiert."
- docker compose version
- else
- ecmessageTextho "Docker Compose V2 ist nicht installiert. Installation wird gestartet..."
- # Erstelle das Verzeichnis für CLI-Plugins, falls es noch nicht existiert
- mkdir -p ~/.docker/cli-plugins/
- # Herunterladen und Installieren von Docker Compose V2
- curl -SL "https://github.com/docker/compose/releases/download/v2.24.6/docker-compose-linux-$(uname -m)" -o "$COMPOSE_PATH"
- # Setze die ausführbare Berechtigung für das Plugin
- chmod +x "$COMPOSE_PATH"
- # Überprüfe erneut, ob Docker Compose V2 erfolgreich installiert wurde
- if docker compose version 2> /dev/null; then
- messageText "Docker Compose V2 wurde erfolgreich installiert."
- docker compose version
- else
- messageText "Die Installation von Docker Compose V2 ist fehlgeschlagen." red
- fi
- fi
- }
- checkOrCreateDockerImage() {
- local IMAGE_NAME="$1"
- local IMAGE_TAG="$2"
- local FRAPPE_PATH="$3"
- local FRAPPE_BRANCH="$4"
- local PYTHON_VERSION="$5"
- local NODE_VERSION="$6"
- local APPS_JSON="$7"
- # Konvertierung von APPS_JSON in Base64
- local APPS_JSON_BASE64=$(echo ${APPS_JSON} | base64 -w 0)
- # Überprüfen, ob das Image bereits existiert
- if [ -z "$(docker images -q ${IMAGE_NAME}:${IMAGE_TAG})" ]; then
- messageText "Image ${IMAGE_NAME}:${IMAGE_TAG} existiert nicht. Erstelle das Image..."
- docker build --build-arg FRAPPE_PATH=${FRAPPE_PATH} \
- --build-arg FRAPPE_BRANCH=${FRAPPE_BRANCH} \
- --build-arg PYTHON_VERSION=${PYTHON_VERSION} \
- --build-arg NODE_VERSION=${NODE_VERSION} \
- --build-arg APPS_JSON_BASE64=${APPS_JSON_BASE64} \
- --tag=${IMAGE_NAME}:${IMAGE_TAG} \
- --file=images/custom/Containerfile .
- else
- messageText "Image ${IMAGE_NAME}:${IMAGE_TAG} existiert bereits."
- fi
- }
- setDNS() {
- local DOMAIN="$1"
- local IP="$2"
- # Sicherheitsüberprüfung für die Eingabeparameter
- if [ -z "$DOMAIN" ] || [ -z "$IP" ]; then
- messageText "Fehler: Domain und IP müssen angegeben werden." red
- return 1 # Beendet die Funktion mit einem Fehlercode
- fi
- messageText "$DOMAIN wird auf $IP gesetzt"
- curl -X 'POST' \
- 'https://api.hosting.ionos.com/dns/v1/zones/eqeqweqweqweqweqweqweqweqweqw/records' \
- -H 'accept: application/json' \
- -H 'X-API-Key: 324243223423423423423423423432432432432423423432432 \
- -H 'Content-Type: application/json' \
- -d "[
- {
- \"name\": \"$DOMAIN\",
- \"type\": \"A\",
- \"content\": \"$IP\",
- \"ttl\": 60,
- \"prio\": 0,
- \"disabled\": false
- }
- ]"
- }
- deleteAllData() {
- # Abfrage, ob alle Daten gelöscht werden sollen
- read -p "Sollen alle Daten wieder gelöscht werden? [Y/n] " -r -e -i Y RESPONSE
- # Standardwert auf 'Y' setzen, wenn keine Eingabe erfolgt
- RESPONSE=${RESPONSE:-Y}
- # Überprüfung der Benutzerantwort
- if [[ "$RESPONSE" =~ ^[Yy]$ ]]; then
- messageText "Daten werden gelöscht..."
- # Hier fügen Sie Befehle ein, um die angelegten Ordner zu löschen
- rm -rf frappe_docker
- rm -rf config_
- # Befehle zum Stoppen und Entfernen der Docker Container
- # Hole die IDs aller existierenden Container
- CONTAINER_IDS=$(docker ps -a -q)
- # Überprüfe, ob die Variable CONTAINER_IDS nicht leer ist
- if [ -n "$CONTAINER_IDS" ]; then
- # Wenn Container existieren, entferne sie
- docker rm -f $CONTAINER_IDS
- else
- messageText "Keine Container zum Entfernen vorhanden." yellow
- fi
- # Führe system prune nur aus, wenn es notwendig ist
- docker system prune -f
- messageText "Alle Daten wurden erfolgreich gelöscht."
- else
- messageText "Die Daten wurden NICHT gelöscht."
- fi
- }
- getAllRunningDocker() {
- docker ps --format 'table {{.ID}}\t{{.Names}}\t{{.Image}}\t{{.Status}}\t{{.Ports}}'
- docker network ls
- }
Add Comment
Please, Sign In to add comment