Guest User

Untitled

a guest
Feb 22nd, 2024
39
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 6.78 KB | Source Code | 0 0
  1. # helpfunctions.sh
  2. messageText() {
  3.     local text="$1"
  4.     local color="${2:-white}" # Standardfarbe auf Grün setzen, wenn keine Farbe angegeben ist
  5.     local bold="${3:-true}"   # Standard auf Fettdruck setzen, wenn nicht spezifiziert
  6.  
  7.     # Standardfarbe
  8.     local colorCode=""
  9.     local boldCode=""
  10.  
  11.     # Set color codes
  12.     case "$color" in
  13.     black)    colorCode="\033[0;30m" ;; # Black
  14.     red)      colorCode="\033[0;31m" ;; # Red
  15.     green)    colorCode="\033[0;32m" ;; # Green
  16.     yellow)   colorCode="\033[0;33m" ;; # Yellow
  17.     blue)     colorCode="\033[0;34m" ;; # Blue
  18.     magenta)  colorCode="\033[0;35m" ;; # Magenta
  19.     cyan)     colorCode="\033[0;36m" ;; # Cyan
  20.     lightgray) colorCode="\033[0;37m" ;; # Light Gray
  21.     darkgray)  colorCode="\033[1;30m" ;; # Dark Gray
  22.     lightred)  colorCode="\033[1;31m" ;; # Light Red
  23.     lightgreen) colorCode="\033[1;32m" ;; # Light Green
  24.     lightyellow) colorCode="\033[1;33m" ;; # Light Yellow
  25.     lightblue) colorCode="\033[1;34m" ;; # Light Blue
  26.     lightmagenta) colorCode="\033[1;35m" ;; # Light Magenta
  27.     lightcyan) colorCode="\033[1;36m" ;; # Light Cyan
  28.     white)     colorCode="\033[1;37m" ;; # White
  29.     *)         colorCode="\033[0m"    ;; # No Color
  30.     esac
  31.  
  32.  
  33.     # Fettdruck setzen
  34.     if [ "$bold" = true ]; then
  35.     boldCode="\033[1m"
  36.     fi
  37.  
  38.     # Ausgabe
  39.     echo -e "${boldCode}${colorCode}${text}\033[0m"
  40. }
  41.  
  42. checkPrerequisites() {
  43.     local command="$1"
  44.     local packet="${2:-$command}"
  45.     local versionCommand="${3:-}"
  46.     local minVersion="${4:-}"
  47.     local installCommand="${5:-sudo apt-get install -y $packet}"
  48.  
  49.     if ! command -v "$command" &> /dev/null; then
  50.     messageText "$packet ist nicht installiert. Installation wird gestartet..." yellow true
  51.     eval "$installCommand"
  52.     elif [ -n "$versionCommand" ] && [ -n "$minVersion" ]; then
  53.     local installVersion=$($versionCommand | grep -oP '(\d+\.\d+\.\d+)' || echo "")
  54.     if [ "$(printf '%s\n' "$minVersion" "$installVersion" | sort -V | head -n1)" != "$minVersion" ]; then
  55.         messageText "Installiere $packet $minVersion+..." yellow true
  56.         eval "$installCommand"
  57.     else
  58.         messageText "$packet $minVersion+ ist bereits installiert." green true
  59.     fi
  60.     else
  61.     messageText "$packet ist bereits installiert." green true
  62.     fi
  63. }
  64.  
  65. install_docker_compose_v2() {
  66.     # Pfad, an dem das Docker Compose V2 Plugin installiert wird
  67.     COMPOSE_PATH="${HOME}/.docker/cli-plugins/docker-compose"
  68.  
  69.     # Überprüfe, ob Docker Compose V2 bereits installiert ist
  70.     if docker compose version 2> /dev/null; then
  71.         messageText "Docker Compose V2 ist bereits installiert."
  72.         docker compose version
  73.     else
  74.         ecmessageTextho "Docker Compose V2 ist nicht installiert. Installation wird gestartet..."
  75.  
  76.         # Erstelle das Verzeichnis für CLI-Plugins, falls es noch nicht existiert
  77.         mkdir -p ~/.docker/cli-plugins/
  78.  
  79.         # Herunterladen und Installieren von Docker Compose V2
  80.         curl -SL "https://github.com/docker/compose/releases/download/v2.24.6/docker-compose-linux-$(uname -m)" -o "$COMPOSE_PATH"
  81.  
  82.         # Setze die ausführbare Berechtigung für das Plugin
  83.         chmod +x "$COMPOSE_PATH"
  84.  
  85.         # Überprüfe erneut, ob Docker Compose V2 erfolgreich installiert wurde
  86.         if docker compose version 2> /dev/null; then
  87.             messageText "Docker Compose V2 wurde erfolgreich installiert."
  88.             docker compose version
  89.         else
  90.             messageText "Die Installation von Docker Compose V2 ist fehlgeschlagen." red
  91.         fi
  92.     fi
  93. }
  94.  
  95. checkOrCreateDockerImage() {
  96.     local IMAGE_NAME="$1"
  97.     local IMAGE_TAG="$2"
  98.     local FRAPPE_PATH="$3"
  99.     local FRAPPE_BRANCH="$4"
  100.     local PYTHON_VERSION="$5"
  101.     local NODE_VERSION="$6"
  102.     local APPS_JSON="$7"
  103.     # Konvertierung von APPS_JSON in Base64
  104.     local APPS_JSON_BASE64=$(echo ${APPS_JSON} | base64 -w 0)
  105.     # Überprüfen, ob das Image bereits existiert
  106.     if [ -z "$(docker images -q ${IMAGE_NAME}:${IMAGE_TAG})" ]; then
  107.     messageText "Image ${IMAGE_NAME}:${IMAGE_TAG} existiert nicht. Erstelle das Image..."
  108.     docker build --build-arg FRAPPE_PATH=${FRAPPE_PATH} \
  109.                     --build-arg FRAPPE_BRANCH=${FRAPPE_BRANCH} \
  110.                     --build-arg PYTHON_VERSION=${PYTHON_VERSION} \
  111.                     --build-arg NODE_VERSION=${NODE_VERSION} \
  112.                     --build-arg APPS_JSON_BASE64=${APPS_JSON_BASE64} \
  113.                     --tag=${IMAGE_NAME}:${IMAGE_TAG} \
  114.                     --file=images/custom/Containerfile .
  115.     else
  116.     messageText "Image ${IMAGE_NAME}:${IMAGE_TAG} existiert bereits."
  117.     fi
  118. }
  119.  
  120. setDNS() {
  121.     local DOMAIN="$1"
  122.     local IP="$2"
  123.  
  124.     # Sicherheitsüberprüfung für die Eingabeparameter
  125.     if [ -z "$DOMAIN" ] || [ -z "$IP" ]; then
  126.     messageText "Fehler: Domain und IP müssen angegeben werden." red
  127.     return 1 # Beendet die Funktion mit einem Fehlercode
  128.     fi
  129.  
  130.     messageText "$DOMAIN wird auf $IP gesetzt"
  131.     curl -X 'POST' \
  132.     'https://api.hosting.ionos.com/dns/v1/zones/eqeqweqweqweqweqweqweqweqweqw/records' \
  133.     -H 'accept: application/json' \
  134.     -H 'X-API-Key: 324243223423423423423423423432432432432423423432432 \
  135.    -H 'Content-Type: application/json' \
  136.    -d "[
  137.        {
  138.        \"name\": \"$DOMAIN\",
  139.        \"type\": \"A\",
  140.        \"content\": \"$IP\",
  141.        \"ttl\": 60,
  142.        \"prio\": 0,
  143.        \"disabled\": false
  144.        }
  145.    ]"
  146. }
  147.  
  148. deleteAllData() {
  149.    # Abfrage, ob alle Daten gelöscht werden sollen
  150.    read -p "Sollen alle Daten wieder gelöscht werden? [Y/n] " -r -e -i Y RESPONSE
  151.  
  152.    # Standardwert auf 'Y' setzen, wenn keine Eingabe erfolgt
  153.    RESPONSE=${RESPONSE:-Y}
  154.  
  155.    # Überprüfung der Benutzerantwort
  156.    if [[ "$RESPONSE" =~ ^[Yy]$ ]]; then
  157.        messageText "Daten werden gelöscht..."
  158.  
  159.        # Hier fügen Sie Befehle ein, um die angelegten Ordner zu löschen
  160.        rm -rf frappe_docker
  161.        rm -rf config_
  162.        
  163.        # Befehle zum Stoppen und Entfernen der Docker Container
  164.        # Hole die IDs aller existierenden Container
  165.        CONTAINER_IDS=$(docker ps -a -q)
  166.  
  167.        # Überprüfe, ob die Variable CONTAINER_IDS nicht leer ist
  168.        if [ -n "$CONTAINER_IDS" ]; then
  169.            # Wenn Container existieren, entferne sie
  170.            docker rm -f $CONTAINER_IDS
  171.        else
  172.            messageText "Keine Container zum Entfernen vorhanden." yellow
  173.        fi
  174.  
  175.        # Führe system prune nur aus, wenn es notwendig ist
  176.        docker system prune -f
  177.  
  178.        messageText "Alle Daten wurden erfolgreich gelöscht."
  179.    else
  180.        messageText "Die Daten wurden NICHT gelöscht."
  181.    fi
  182.  
  183. }
  184.  
  185. getAllRunningDocker() {
  186.    docker ps --format 'table {{.ID}}\t{{.Names}}\t{{.Image}}\t{{.Status}}\t{{.Ports}}'
  187.    docker network ls
  188. }
Add Comment
Please, Sign In to add comment