# yaml-language-server: $schema=./values.schema.json
image:
  repository: docker.io/serverlein/tsn-ranksystem-webserver
  pullPolicy: IfNotPresent
  tag: latest@sha256:2fe3cb77ebb0e82a8f103949e52dba59334366678b1dc83f334142c711d4dadc

securityContext:
  container:
    readOnlyRootFilesystem: false

ranksystem:
  cron_enabled: true
  cron_schedule: "*/5 * * * *"

workload:
  main:
    podSpec:
      initContainers:
        download-ranksystem:
          enabled: true
          type: init
          imageSelector: "image"
          command:
            - /bin/sh
            - -c
          args:
            - |
              web_location={{ .Values.persistence.web.targetSelector.main.main.mountPath }}
              indexFile=${web_location}/index.php

              if [ ! -f "${indexFile}" ]; then
                # download with curl as git & wget not available
                # automatically fetch newest version
                LOCATION=$(curl -s https://api.github.com/repos/Newcomer1989/TSN-Ranksystem/releases/latest \
                | grep "tarball_url" \
                | awk '{ print $2 }' \
                | sed 's/,$//'       \
                | sed 's/"//g' )     \
                ; curl -sL -o ${web_location}/ranksystem.tar.gz $LOCATION
                # unzip file
                tar -xzf ${web_location}/ranksystem.tar.gz
                # get topfolder
                top_folder=$(find ${web_location} -type d -name "Newcomer*" -exec basename \{} .po \;)
                # move to topfolder
                mv ${top_folder}/* ${web_location}
                # delete obsolete folders & files
                rm -rf ${web_location}/ranksystem.tar.gz ${top_folder}

                webinterface_location=${web_location}/webinterface
                navFile=${webinterface_location}/_nav.php
                workerFile=${web_location}/worker.php

                # remove annoying SSL message (doesnt work with traefik/ingress)
                sed -i "$(($(wc -l < ${navFile})-4)),$(($(wc -l < ${navFile})))d" ${navFile}

                # change help() to check() in worker.php
                sed -i "s/\bhelp();/check();/g" ${workerFile}
                echo "Files downloaded and installed."
                echo "Folder :$PWD"
                echo "Files:"
                ls
              else
                echo "Files Located. No action needed."
              fi
      containers:
        main:
          lifecycle:
            postStart:
              type: exec
              command:
                - /bin/sh
                - -c
                - |
                  web_location={{ .Values.persistence.web.targetSelector.main.main.mountPath }}
                  if [ -f "${web_location}/install.php" ]; then
                    curl -v -X POST -d "dbtype=mysql&dbhost={{ .Values.mariadb.creds.plainhost | trimAll "\"" }}&dbname={{ .Values.mariadb.mariadbDatabase }}&dbuser={{ .Values.mariadb.mariadbUsername }}&dbpass={{ .Values.mariadb.creds.mariadbPassword | trimAll "\"" }}&install=&installchecked=" http://localhost/install.php
                    sleep 1;
                    curl -v -X POST -d "user=ranksystem&pass=ranksystem&confweb=" http://localhost/install.php
                    echo "Install script executed."
                  else
                    echo "Install script doesnt exists, no further action is needed."
                  fi
  ranksystem-cron:
    enabled: "{{ .Values.ranksystem.cron_enabled }}"
    type: CronJob
    schedule: "{{ .Values.ranksystem.cron_schedule }}"
    podSpec:
      restartPolicy: OnFailure
      containers:
        ranksystem-cron:
          primary: true
          enabled: true
          imageSelector: "image"
          probes:
            liveness:
              enabled: false
            readiness:
              enabled: false
            startup:
              enabled: false
          command:
            - /bin/sh
            - -c
            - |
              name={{ include "tc.v1.common.lib.chart.names.fullname" $ }}
              port={{ .Values.service.main.ports.main.port }}
              while ! curl -s -o -v /dev/null http://${name}:${port}/worker.php; do sleep 1; done && \
              curl -v -X GET -d "action=run_command" http://${name}:${port}/worker.php

service:
  main:
    ports:
      main:
        targetPort: 80
        port: 9300
persistence:
  web:
    enabled: true
    targetSelector:
      main:
        main:
          mountPath: /var/www/html
        download-ranksystem:
          mountPath: /var/www/html
mariadb:
  enabled: true
  mariadbUsername: ranksystem
  mariadbDatabase: ranksystem
