From 115e51132861553d1f46dfeae876b9e7b891997a Mon Sep 17 00:00:00 2001 From: Alexandr Redikultsev Date: Mon, 13 Sep 2021 11:10:39 +0700 Subject: [PATCH] Making Plesk, jitsi and cPanel applications up to date --- WordPress/application.json | 7 +++-- WordPress/assets/login.js | 27 +++++++++---------- WordPress/form.json | 7 ++--- WordPress/user-data.yaml | 6 ++--- cpanel/application.json | 9 +++---- cpanel/assets/login.js | 25 ------------------ cpanel/form.json | 14 ++-------- cpanel/user-data.yaml | 54 ++++++++------------------------------ jitsimeet/application.json | 5 ++-- plesk/application.json | 11 ++++---- plesk/assets/login.js | 27 +++++++++---------- plesk/form.json | 5 ++-- plesk/user-data.yaml | 11 ++++---- 13 files changed, 66 insertions(+), 142 deletions(-) delete mode 100644 cpanel/assets/login.js diff --git a/WordPress/application.json b/WordPress/application.json index f3bbb2f..97f3082 100644 --- a/WordPress/application.json +++ b/WordPress/application.json @@ -1,13 +1,12 @@ { "applications-slug": "wordpress", "application-name": "WordPress on Plesk", - "version": "18", - "os": "centOS7", - "imageURL": "http://images.prod.solus.io/solus-io-centos-plesk-18.0.24.qcow2", + "os": "centOS8", + "imageURL": "https://images.prod.solus.io/solus-io-centos-plesk-latest.qcow2", "login-type": "JS", "login-link": "assets/login.js", "icon": "WordPress", - "cloudinitversion": "v2", + "cloudinitversion": "v2-centos", "longDescription": "", "shortDescription": "", "supportLink": "", diff --git a/WordPress/assets/login.js b/WordPress/assets/login.js index fb5a89c..56c1808 100644 --- a/WordPress/assets/login.js +++ b/WordPress/assets/login.js @@ -6,19 +6,16 @@ fetch('https://{{ domain }}:8443/api/v2/cli/admin/call', { }, method: "POST" }) - .then(function(response) { - if (!response.ok) { - throw Error(response.statusText); - } - }) - .then(function(data) { - var link = data.stdout.split(/\r?\n/); - openWindow(link[0]); - }) - .catch(function() { - try { - openWindow('https://{{ domain }}:8443/login_up.php3?login_name=admin&passwd={{ passwd }}'); - } catch (err) { + .then(function(response) { + if (!response.ok) { + throw Error(response.statusText); + } + return response.json(); + }) + .then(function(data) { + var link = data.stdout.split(/\r?\n/); + openWindow(link[0]); + }) + .catch(function() { openWindow('https://{{domain}}:8443/'); - } - }); \ No newline at end of file + }); diff --git a/WordPress/form.json b/WordPress/form.json index 7dfa02a..64bc35b 100644 --- a/WordPress/form.json +++ b/WordPress/form.json @@ -10,7 +10,7 @@ "wpuser", "wpusermail", "wppasswd", - "wptitle" + "wptitle" ], "properties": { "license": { @@ -36,7 +36,8 @@ "type": "string", "title": "Password", "format": "password", - "minLenght": 8, + "pattern": "^[a-zA-Z0-9_-]*$", + "minLength": 8, "help": "At least 1 capital letter, 1 lowercase letter, 2 digits and 2 special chars." }, "wpuser": { @@ -57,4 +58,4 @@ "title": "Title for your Wordpress Website" } } -} \ No newline at end of file +} diff --git a/WordPress/user-data.yaml b/WordPress/user-data.yaml index 43d413b..5ffdbe7 100644 --- a/WordPress/user-data.yaml +++ b/WordPress/user-data.yaml @@ -8,13 +8,13 @@ write_files: user='{{ user }}' passwd='{{ passwd }}' activation_key={{ license }} - wp_title='{{ wptitleĀ }}' + wp_title='{{ wptitle }}' wp_passwd='{{ wppasswd }}' wp_mail='{{ wpusermail }}' runcmd: - [ curl, -L, "https://raw.githubusercontent.com/solusio/applications/master/WordPress/setup", -o, "/root/setup.sh" ] - [ chmod, +x, "/root/setup.sh" ] - - sh /root/setup.sh | while IFS= read -r line; do printf "%s %s\n" "$(date)" "$line"; done >> /var/log/logfile + - /bin/bash /root/setup.sh | while IFS= read -r line; do printf "%s %s\n" "$(date)" "$line"; done >> /var/log/logfile - echo "complete" > /var/www/vhosts/default/htdocs/__setup_complete.html - rm -r /root/config.ini - - rm -r /root/setup.sh \ No newline at end of file + - rm -r /root/setup.sh diff --git a/cpanel/application.json b/cpanel/application.json index c2b976d..bfc7fa8 100644 --- a/cpanel/application.json +++ b/cpanel/application.json @@ -1,11 +1,10 @@ { "applications-slug": "cpanel", "application-name": "cPanel & WHM", - "version": "86", "os": "centOS7", - "imageURL": "https://cloud.centos.org/centos/7/images/CentOS-7-x86_64-GenericCloud.qcow2", - "login-type": "JS", - "login-link": "assets/login.js", + "imageURL": "https://images.prod.solus.io/solus-io-centos-7-cpanel.qcow2", + "login-type": "URL", + "login-link": "https://{{ hostname }}:2087/", "icon": "cPanel", "cloudinitversion": "v2", "longDescription": "", @@ -16,4 +15,4 @@ "minMemoryMB": 1024, "minSpaceGB": 20 -} \ No newline at end of file +} diff --git a/cpanel/assets/login.js b/cpanel/assets/login.js deleted file mode 100644 index dc8735a..0000000 --- a/cpanel/assets/login.js +++ /dev/null @@ -1,25 +0,0 @@ -let username = 'root'; -let password = '{{ passwd }}'; - -function json(response) { - return response.json() -} - -// Still some issues with CORS headers. Might be better to use a proxy like: -// https://cors-anywhere.herokuapp.com/https://{{ address }}:2087/json-api/create_user_session?api.version=1&user=root&service=whostmgrd -fetch("https://{{ address }}:2087/json-api/create_user_session?api.version=1&user=root&service=whostmgrd" , { - headers: { - "Authorization": "Basic "+ btoa(username+":"+password), - "Origin": "{{ address }}" - }, - method: "GET" -}) - .then(json) - .then(function (data) { - var link = data.data.url; - openWindow(link); - }) - .catch(function (error) { - console.log("Magic link couldn't be created: "+error); - openWindow("https://{{ address }}:2087/"); - }); \ No newline at end of file diff --git a/cpanel/form.json b/cpanel/form.json index 33edeb2..def897c 100644 --- a/cpanel/form.json +++ b/cpanel/form.json @@ -1,15 +1,5 @@ { "title": "cPanel", "description": "Create an exceptional hosting experience.\nIndustry leading hosting platform with world-class support.", - "type": "object", - "required": [ - "passwd" - ], - "properties": { - "passwd": { - "type": "string", - "title": "WHM-Password for root", - "format": "password" - } - } -} \ No newline at end of file + "type": "object" +} diff --git a/cpanel/user-data.yaml b/cpanel/user-data.yaml index e72661c..970743a 100644 --- a/cpanel/user-data.yaml +++ b/cpanel/user-data.yaml @@ -1,50 +1,18 @@ #cloud-config write_files: - - path: /root/cp-installer + - path: /root/setup.sh permissions: '0755' content: | #!/bin/bash - FILE=/root/setup.sh - if test -f "$FILE"; then - /root/setup.sh - /usr/local/cpanel/bin/set_hostname {{ address }} - /usr/local/cpanel/scripts/configure_firewall_for_cpanel - /usr/local/cpanel/cpkeyclt - /usr/local/cpanel/scripts/upcp - /usr/local/cpanel/bin/checkallsslcerts - systemctl disable cpanel-installer.service - rm /etc/systemd/system/cpanel-installer.service - rm /root/setup.sh - rm /root/cp-installer - fi - - path: /etc/systemd/system/cpanel-installer.service - permissions: '0755' - content: | - [Service] - Type=oneshot - RemainAfterExit=yes - ExecStart=/root/cp-installer - [Install] - WantedBy=multi-user.target - [Unit] - Wants=network-online.target multi-user.target - After=network-online.target multi-user.target - - path: /root/reboot-chk - permissions: '0755' - content: | - #!/bin/bash - FILE=/root/isreboot - if test -f "$FILE"; then - echo "nothing to do" - else - touch /root/isreboot - reboot + HOSTNAME={{ hostname }} + match=$(echo "${HOSTNAME}" | grep -oP '^(?!\-)(?:[a-zA-Z\d\-]{0,62}[a-zA-Z\d]\.){1,126}(?!\d+)[a-zA-Z\d]{1,63}$') + if [ -z "$match" ]; then + hostnamectl set-hostname "${HOSTNAME}.local.domain" + HOSTNAME="${HOSTNAME}.local.domain" fi + setenforce 0 + /usr/local/cpanel/bin/set_hostname "${HOSTNAME}" + /usr/local/cpanel/cpkeyclt runcmd: - - curl -L "https://securedownloads.cpanel.net/latest" -o /root/setup.sh - - chmod +x /root/setup.sh - - hostnamectl set-hostname {{ address }} - - echo "SELINUX=disabled" > /etc/selinux/config - - systemctl enable cpanel-installer.service - - echo "{{ passwd }}" | passwd --stdin root - - /root/reboot-chk \ No newline at end of file + - sh /root/setup.sh + - rm -f /root/setup.sh diff --git a/jitsimeet/application.json b/jitsimeet/application.json index c88639e..97b19aa 100644 --- a/jitsimeet/application.json +++ b/jitsimeet/application.json @@ -1,10 +1,9 @@ { "applications-slug": "jitsimeet", "application-name": "Jitsi Meet", - "version": "2.0", "os": "ubuntu2004", - "login-type": "URL", - "login-link": "https://{{ address }}", + "login-type": "JS", + "login-link": "assets.login.js", "imageURL": "https://cloud-images.ubuntu.com/focal/current/focal-server-cloudimg-amd64.img", "icon": "Jitsi", "cloudinitversion": "v2", diff --git a/plesk/application.json b/plesk/application.json index fa16797..5dd0a61 100644 --- a/plesk/application.json +++ b/plesk/application.json @@ -1,18 +1,17 @@ { "applications-slug": "plesk", - "application-name": "Plesk", - "version": "18", - "os": "centOS7", - "imageURL": "http://images.prod.solus.io/solus-io-centos-plesk-18.0.24.qcow2", + "application-name": "Plesk on AlmaLinux", + "os": "AlmaLinux8", + "imageURL": "https://images.prod.solus.io/solus-io-almalinux-8-plesk.qcow2", "login-type": "JS", "login-link": "assets/login.js", "icon": "plesk", - "cloudinitversion": "v2", + "cloudinitversion": "v2-centos", "longDescription": "", "shortDescription": "", "supportLink": "", "costs": "0", "minCPU": "1", - "minMemoryMB": "512", + "minMemoryMB": "2048", "minSpaceGB": "20" } diff --git a/plesk/assets/login.js b/plesk/assets/login.js index fb5a89c..56c1808 100644 --- a/plesk/assets/login.js +++ b/plesk/assets/login.js @@ -6,19 +6,16 @@ fetch('https://{{ domain }}:8443/api/v2/cli/admin/call', { }, method: "POST" }) - .then(function(response) { - if (!response.ok) { - throw Error(response.statusText); - } - }) - .then(function(data) { - var link = data.stdout.split(/\r?\n/); - openWindow(link[0]); - }) - .catch(function() { - try { - openWindow('https://{{ domain }}:8443/login_up.php3?login_name=admin&passwd={{ passwd }}'); - } catch (err) { + .then(function(response) { + if (!response.ok) { + throw Error(response.statusText); + } + return response.json(); + }) + .then(function(data) { + var link = data.stdout.split(/\r?\n/); + openWindow(link[0]); + }) + .catch(function() { openWindow('https://{{domain}}:8443/'); - } - }); \ No newline at end of file + }); diff --git a/plesk/form.json b/plesk/form.json index 8dfa2f1..c081305 100644 --- a/plesk/form.json +++ b/plesk/form.json @@ -20,7 +20,7 @@ "user": { "type": "string", "title": "Username", - "default": "ElvisPlesky" + "default": "admin" }, "rootmail": { "type": "string", @@ -31,7 +31,8 @@ "type": "string", "title": "Password", "format": "password", - "minLenght": 5 + "pattern": "^[a-zA-Z0-9_-]*$", + "minLength": 5 } } } diff --git a/plesk/user-data.yaml b/plesk/user-data.yaml index 406674e..1d0ae6a 100644 --- a/plesk/user-data.yaml +++ b/plesk/user-data.yaml @@ -3,17 +3,16 @@ write_files: - path: /root/config.ini permissions: '0755' content: | - domain="{{ domain }}"" - rootpw="{{ passwd }}"" - user="{{ user }}"" - passwd="{{ passwd }}"" + domain="{{ domain }}" + rootpw="{{ passwd }}" + user="{{ user }}" + passwd="{{ passwd }}" activation_key="{{ license }}" rootmail="{{ rootmail }}" runcmd: - [ curl, "https://raw.githubusercontent.com/solusio/applications/master/plesk/setup", -o, "/root/setup.sh" ] - [ chmod, +x, "/root/setup.sh" ] - - sh /root/setup.sh | while IFS= read -r line; do printf "%s %s\n" "$(date)" "$line"; done >>/var/log/logfile + - /bin/bash /root/setup.sh | while IFS= read -r line; do printf "%s %s\n" "$(date)" "$line"; done >>/var/log/logfile - echo "complete" > /var/www/vhosts/default/htdocs/__setup_complete.html - rm -r /root/config.ini - rm -r /root/setup.sh - \ No newline at end of file