{"id":7463,"sha1":"4b8eac9450261bc45bc0bc4ef9ac00248098ffe6","playbook":{"id":5305,"items":{"plays":1,"tasks":3,"results":15,"hosts":5,"files":1,"records":0},"arguments":{"version":null,"verbosity":0,"private_key_file":"/home/ssh-gateway/.ssh/id_rsa","remote_user":"root","connection":"ssh","timeout":null,"ssh_common_args":null,"sftp_extra_args":null,"scp_extra_args":null,"ssh_extra_args":null,"ask_pass":false,"connection_password_file":null,"force_handlers":false,"flush_cache":false,"become":false,"become_method":"sudo","become_user":null,"become_ask_pass":false,"become_password_file":null,"tags":["all"],"skip_tags":[],"check":false,"diff":false,"inventory":["/home/ssh-gateway/ansible/ansible-luca/ioncube-canary-inventory"],"listhosts":false,"subset":null,"extra_vars":"Not saved by ARA as configured by 'ignored_arguments'","vault_ids":[],"ask_vault_pass":false,"vault_password_files":[],"forks":20,"module_path":null,"syntax":false,"listtasks":false,"listtags":false,"step":false,"start_at_task":null,"args":["ioncube-fixer.yaml"]},"labels":[{"id":1,"name":"remote_user:root"},{"id":2,"name":"check:False"},{"id":3,"name":"tags:all"}],"started":"2026-03-04T10:27:49.130939Z","ended":"2026-03-04T10:28:06.034605Z","duration":"00:00:16.903666","name":null,"ansible_version":"2.16.13","client_version":"1.7.4","python_version":"3.10.10","server_version":"1.7.4","status":"completed","path":"/home/ssh-gateway/ansible/ansible-luca/ioncube-fixer.yaml","controller":"ssh-gw-4.layershift.com","user":"root"},"content":"---\n- name: RM10252 - PHP EOL Checker\n  hosts: all\n  gather_facts: false\n\n  tasks:\n    - name: Get Info\n      plesk_info:\n      register: plsk\n\n    - name: Fixing poorly loaded ioncube Zend module\n      ansible.builtin.shell: |\n        set -o pipefail\n        paths=$(find /opt/alt/php* -name \"default.ini\" | xargs grep -l \"^zend_extension=.*ioncube_loader_lin.*\" 2>/dev/null)\n\n        if [[ -n \"$paths\" ]]; then\n          package_names=$(echo \"$paths\" | awk -F'/' '{ print $3 \"-\" $4 \"-ioncube-loader\" }' )\n\n          while IFS= read -r path <&3 && IFS= read -r package <&4; do\n\n            if [[ \"$package\" == *\"alt-php\"* && \"$path\" == \"/opt/alt/php\"* ]]; then\n              echo \"[ INFO ] Installing package: $package\"\n              \n              if [[ ! -f \"$healthy_ioncube\" ]]; then\n                dnf install -y --disableexcludes=all \"$package\"\n              fi\n              rc=$?\n\n              if [ \"$rc\" == 0 ]; then\n                echo \"[ INFO ] Removing the ioncube_loader_lin.so module from $path!\"\n                sed -i '/zend_extension=\\/opt\\/alt\\/php.*\\/ioncube_loader_lin_.*\\.so/d' \"$path\"\n\n                php_bin=$(echo $path | sed 's|/etc/php.d/default.ini|/usr/bin/php|')\n                ioncube_ini=$(echo $path | sed 's|/php.d/default.ini|/php.d.all/ioncube_loader.ini|')\n                dest_path=$(echo $path | sed 's|default.ini|10-ioncube_loader.ini|')\n\n                ln -s \"$ioncube_ini\" \"$dest_path\"\n\n                if ! \"$php_bin\" -i |  grep -wE \"ionCube.*v1[4-5]\"; then\n                  echo \"[ ERROR ] Ioncube wasn't enabled successfully!\"\n                  exit 128\n                else\n                  echo \"[ INFO ] Ioncube was enabled successfully!\"\n                fi\n\n              else\n                echo \"[ ERROR ] Failed to install $package. Stopping script!\"\n                exit 128\n              fi\n\n            else\n              echo \"[ ERROR ] Something went wrong: $path $package\"\n              exit 128\n            fi\n\n          done 3<<< \"$paths\" 4<<< \"$package_names\"\n          find /opt/alt/php* -name \"ioncube_loader_lin*.so\" -type f -delete\n\n        else\n          echo \"[ INFO ] ioncube_loader_lin.so file wasn't found!\"\n        fi\n\n      args:\n        executable: /bin/bash\n      register: output\n      when: (plsk.plesk_found and plsk.imunify_found) or (plsk.plesk_found and plsk.cloudlinux_found)\n      changed_when: output.rc == 0\n      failed_when: false\n\n    - name: Record servers where the script failed\n      ansible.builtin.lineinfile:\n        create: true\n        mode: '0644'\n        path: RM10252/hostnames\n        line: \"{{ inventory_hostname }}\"\n      when: output.rc != 0\n      delegate_to: localhost\n","created":"2026-03-04T10:27:49.151428Z","updated":"2026-03-04T10:27:49.151449Z","path":"/home/ssh-gateway/ansible/ansible-luca/ioncube-fixer.yaml"}