diff --git a/app/host_vars/hosts b/app/host_vars/hosts index 77c1a70..c58c6d8 100644 --- a/app/host_vars/hosts +++ b/app/host_vars/hosts @@ -1 +1 @@ -meppel +sydney diff --git a/app/sbin/ODOO_19/audit b/app/sbin/ODOO_19/audit new file mode 100755 index 0000000..1c5b49f --- /dev/null +++ b/app/sbin/ODOO_19/audit @@ -0,0 +1,3 @@ +#!/bin/bash + +/4server/sbin/ODOO_19/listModules $1 diff --git a/app/sbin/ODOO_19/updateModules b/app/sbin/ODOO_19/updateModules new file mode 100755 index 0000000..7e0b575 --- /dev/null +++ b/app/sbin/ODOO_19/updateModules @@ -0,0 +1,60 @@ +#!/bin/bash +export PATH=/4PROJECTS/bin:$PATH + +# -------------------------------------------------- +# Validate parameter +# -------------------------------------------------- +if [ -z "$1" ]; then + echo "Missing Parameters " + exit 1 +fi + +UUID=$1 + +# -------------------------------------------------- +# Load environment helpers +# -------------------------------------------------- +source /4server/sbin/helpers + +if ! get_contract_info "$UUID"; then + echo "Error: Failed to load contract info for $UUID" >&2 + exit 1 +fi + +# -------------------------------------------------- +# Verify container exists +# -------------------------------------------------- +if ! doas docker ps -a --format "{{.Names}}" | grep -q "^${UUID}$"; then + echo "Error: Container $UUID does not exist" >&2 + exit 1 +fi + +echo "Updating all Odoo modules for database: $UUID" +echo "Using DB host: $POSTGRES_HOST" + +# -------------------------------------------------- +# Run Odoo update inside container +# -------------------------------------------------- +if ! doas docker exec -u odoo "$UUID" odoo \ + -u all \ + -d "$UUID" \ + --stop-after-init \ + --db_host="$POSTGRES_HOST" \ + --db_port="$POSTGRES_PORT" \ + --db_user="$POSTGRES_ADMIN_USER" \ + --db_password="$POSTGRES_ADMIN_PASSWORD" +then + echo "Error: Odoo module update failed for $UUID" >&2 + exit 1 +fi + +echo "Module update completed successfully for $UUID" + +# -------------------------------------------------- +# Restart container +# -------------------------------------------------- +echo "Starting container $UUID" +/4server/sbin/startContainer "$UUID" + +echo "Done." +exit 0 diff --git a/app/sbin/api b/app/sbin/api index d7ac081..267e706 100755 --- a/app/sbin/api +++ b/app/sbin/api @@ -373,6 +373,12 @@ def add_git_key(request: AddKeyRequest): return {"message": f"Key saved for container {request.uuid}", "file": file_path} + +@app.get("/client/audit/{uuid}", dependencies=[Depends(verify_api_key)]) +def audit_odoo(uuid: str): + return {"message": run_command([f"{BIN_PATH}/ODOO_19/listModules", uuid])} + + @app.get("/client/logs/{uuid}", dependencies=[Depends(verify_api_key)]) async def get_odoo_log_summary(uuid: str): if not re.fullmatch(r"[0-9a-fA-F\-]+", uuid): diff --git a/app/sbin/backupContainer b/app/sbin/backupContainer index fdfe1b1..b0c4ade 100755 --- a/app/sbin/backupContainer +++ b/app/sbin/backupContainer @@ -1,7 +1,5 @@ #!/bin/bash -# Usage: ./start_by_uuid.sh -# Example: ./start_by_uuid.sh abc-001-xxxx-xxxx-xxxx -exec > /4server/data/log/backupContainer.log 2>&1 +exec >> /4server/data/log/backupContainer_$1.log 2>&1 echo "$(date '+%Y-%m-%d %H:%M') Backup container $1" source /4server/sbin/helpers @@ -20,6 +18,8 @@ get_contract_info # Extract the second part of UUID (split by "-") SECOND_PART=$(echo "$UUID" | cut -d'-' -f2) +echo "Conatiner Type $UUID" + # Decide which script to run case "$SECOND_PART" in 001) @@ -40,4 +40,3 @@ case "$SECOND_PART" in exit 2 ;; esac - diff --git a/app/sbin/checkCalls b/app/sbin/checkCalls index 012e215..6cd6e81 100755 --- a/app/sbin/checkCalls +++ b/app/sbin/checkCalls @@ -25,8 +25,15 @@ for dir in ???-???-*; do /4server/sbin/ODOO_19/restore ${dir%/} $FILENAME rm "${dir}/cc/restore" fi - fi + + if [ -d "${dir}/n8n" ]; then + if [ -f "${dir}/n8n/database.sqlite-journal" ]; then + echo "Restart N8N (journal)for: ${dir%/}" + /4server/sbin/startContainer ${dir%/} + fi + fi + done sleep 60 diff --git a/app/sbin/helpers b/app/sbin/helpers index c8c72a1..58485e6 100755 --- a/app/sbin/helpers +++ b/app/sbin/helpers @@ -21,12 +21,9 @@ done < <(sqlite3 "$DB_PATH" " SELECT 'UUID=' || UUID FROM containers WHERE UUID='$UUID' UNION ALL SELECT 'EMAIL=' || email FROM containers WHERE UUID='$UUID' UNION ALL SELECT 'EXPIRES=' || expires FROM containers WHERE UUID='$UUID' - UNION ALL SELECT 'TAGS=' || tags FROM containers WHERE UUID='$UUID' - UNION ALL SELECT 'ENV=' || env FROM containers WHERE UUID='$UUID' - UNION ALL SELECT 'AFFILIATE=' || affiliate FROM containers WHERE UUID='$UUID' + UNION ALL SELECT 'TAGS=' || replace(replace(tags, char(10), ''), char(13), '') FROM containers WHERE UUID='$UUID' + UNION ALL SELECT 'ENV=' || replace(replace(env, char(10), ''), char(13), '') FROM containers WHERE UUID='$UUID' UNION ALL SELECT 'IMAGE=' || image FROM containers WHERE UUID='$UUID' - UNION ALL SELECT 'HISTORY=' || history FROM containers WHERE UUID='$UUID' - UNION ALL SELECT 'COMMENT=' || comment FROM containers WHERE UUID='$UUID' UNION ALL SELECT 'DOMAINS=' || domains FROM containers WHERE UUID='$UUID' UNION ALL SELECT 'STATUS=' || status FROM containers WHERE UUID='$UUID' UNION ALL SELECT 'CREATED=' || created FROM containers WHERE UUID='$UUID' diff --git a/app/sbin/start/ODOO_19 b/app/sbin/start/ODOO_19 index 3c2a5cf..b119ab4 100755 --- a/app/sbin/start/ODOO_19 +++ b/app/sbin/start/ODOO_19 @@ -64,10 +64,15 @@ find "$BASEURL" -type d -exec chmod 777 {} \; PORT=$((CONTAINERDBID + 2200)) echo "PORT $PORT" mkdir -p ${ETC_DIR} +chmod 777 ${ETC_DIR} echo "GITPATH ${ETC_DIR}gitpath" touch ${ETC_DIR}gitpath +mkdir -p ${BACKUP_DIR} +chmod 777 ${BACKUP_DIR} + mkdir -p ${GIT_DIR}keys +chmod 777 ${GIT_DIR} touch ${GIT_DIR}keys/id_rsa.pub @@ -112,9 +117,9 @@ docker run -d --name "$UUID" \ docker.odoo4projects.com/4projects/odoo_19:$BRANCH -docker exec $UUID chown -R odoo:odoo /home/odoo/.local +docker exec $UUID chown -R odoo:odoo /home/odoo/.local docker exec $UUID chown -R odoo:odoo /mnt/* -docker exec $UUID chown odoo:odoo /git-server/keys/id_rsa.pub +docker exec $UUID chown -R odoo:odoo /git-server chmod 777 /4server/data/$UUID/cc check_and_create_db diff --git a/app/templates/extlinux.conf b/app/templates/extlinux.conf index b9a951b..6b66748 100644 --- a/app/templates/extlinux.conf +++ b/app/templates/extlinux.conf @@ -10,14 +10,14 @@ LABEL virt MENU LABEL Linux virt LINUX vmlinuz-virt INITRD initramfs-virt - APPEND root=LABEL=/ modules=sd-mod,usb-storage,ext4 console=ttyS0,115200n8 console=ttyAMA0,115200n8 + APPEND root=UUID=15665bb5-c475-4ac8-9479-d49df97d5ccb modules=sd-mod,usb-storage,ext4 console=ttyS0,115200n8 console=ttyAMA0,115200n8 LABEL lts MENU DEFAULT MENU LABEL Linux lts LINUX vmlinuz-lts INITRD initramfs-lts - APPEND root=LABEL=/ modules=sd-mod,usb-storage,ext4 console=ttyS0,115200n8 console=ttyAMA0,115200n8 + APPEND root=UUID=15665bb5-c475-4ac8-9479-d49df97d5ccb modules=sd-mod,usb-storage,ext4 console=ttyS0,115200n8 console=ttyAMA0,115200n8 MENU SEPARATOR diff --git a/app/templates/extlinux.conf-DigitalOcean b/app/templates/extlinux.conf-DigitalOcean new file mode 100644 index 0000000..6b66748 --- /dev/null +++ b/app/templates/extlinux.conf-DigitalOcean @@ -0,0 +1,23 @@ +SERIAL ttyS0 115200 +DEFAULT menu.c32 +PROMPT 0 +MENU TITLE Alpine/Linux Boot Menu +MENU HIDDEN +MENU AUTOBOOT Alpine will be booted automatically in # seconds. +TIMEOUT 100 +LABEL virt + + MENU LABEL Linux virt + LINUX vmlinuz-virt + INITRD initramfs-virt + APPEND root=UUID=15665bb5-c475-4ac8-9479-d49df97d5ccb modules=sd-mod,usb-storage,ext4 console=ttyS0,115200n8 console=ttyAMA0,115200n8 + +LABEL lts + MENU DEFAULT + MENU LABEL Linux lts + LINUX vmlinuz-lts + INITRD initramfs-lts + APPEND root=UUID=15665bb5-c475-4ac8-9479-d49df97d5ccb modules=sd-mod,usb-storage,ext4 console=ttyS0,115200n8 console=ttyAMA0,115200n8 + +MENU SEPARATOR + diff --git a/app/templates/extlinux.conf-hostinger b/app/templates/extlinux.conf-hostinger new file mode 100644 index 0000000..b9a951b --- /dev/null +++ b/app/templates/extlinux.conf-hostinger @@ -0,0 +1,23 @@ +SERIAL ttyS0 115200 +DEFAULT menu.c32 +PROMPT 0 +MENU TITLE Alpine/Linux Boot Menu +MENU HIDDEN +MENU AUTOBOOT Alpine will be booted automatically in # seconds. +TIMEOUT 100 +LABEL virt + + MENU LABEL Linux virt + LINUX vmlinuz-virt + INITRD initramfs-virt + APPEND root=LABEL=/ modules=sd-mod,usb-storage,ext4 console=ttyS0,115200n8 console=ttyAMA0,115200n8 + +LABEL lts + MENU DEFAULT + MENU LABEL Linux lts + LINUX vmlinuz-lts + INITRD initramfs-lts + APPEND root=LABEL=/ modules=sd-mod,usb-storage,ext4 console=ttyS0,115200n8 console=ttyAMA0,115200n8 + +MENU SEPARATOR + diff --git a/app/vault/host_vars.img b/app/vault/host_vars.img index 34b9ce7..7cace4d 100644 Binary files a/app/vault/host_vars.img and b/app/vault/host_vars.img differ