From eb7e913469e1f2c81105350855a9cf825476466b Mon Sep 17 00:00:00 2001 From: absurdo Date: Fri, 12 May 2023 01:02:45 +0200 Subject: [PATCH] Fixes in install_mariadb --- .../databases/mariadb/install_mariadb.py | 65 ++++++++++++++++--- .../servers/databases/mariadb/mysql_secure.sh | 25 +++++++ .../databases/mysql/standalone_mysql.py | 2 +- templates/admin/multiprogress.phtml | 34 +++++++++- 4 files changed, 116 insertions(+), 10 deletions(-) create mode 100644 scripts/servers/databases/mariadb/mysql_secure.sh diff --git a/scripts/servers/databases/mariadb/install_mariadb.py b/scripts/servers/databases/mariadb/install_mariadb.py index a300edd..9e1b45c 100644 --- a/scripts/servers/databases/mariadb/install_mariadb.py +++ b/scripts/servers/databases/mariadb/install_mariadb.py @@ -39,25 +39,74 @@ if linux_distro=='debian': # /etc/mysql/mariadb.conf.d/50-server.cnf # bind-address = 127.0.0.1 + print('Setting the password...') + + if subprocess.call("sudo mysqladmin -u root password "+args.password, shell=True) > 0: + print('Error, cannot set the MariaDB Root password') + sys.exit(1) + if args.ip: if subprocess.call("sudo sed -i 's/bind-address = 127.0.0.1/bind-address = {}/g' /etc/mysql/mariadb.conf.d/50-server.cnf".format(args.ip), shell=True) > 0: print('Error, cannot install MariaDB...') sys.exit(1) + + elif linux_distro=='arch': - if call("sudo pacman -S --noconfirm mariadb", shell=True) > 0: + if subprocess.call("sudo pacman -S --noconfirm mariadb", shell=True) > 0: print('Error, cannot install MariaDB...') exit(1) -print('Setting the password...') +elif linux_distro=='rocky' or linux_distro=='alma' or linux_distro=='fedora': + + if subprocess.call("sudo dnf install -y mariadb-server expect", shell=True) > 0: + print('Error, cannot install MariaDB...') + exit(1) + + if subprocess.call("sudo systemctl restart mariadb", shell=True) > 0: + print('Error, cannot start mariadb') + sys.exit(1) -if subprocess.call("sudo mysqladmin -u root password "+args.password, shell=True) > 0: - print('Error, cannot set the MariaDB Root password') - sys.exit(1) -else: - print('Mariadb installed successfully') - sys.exit(0) + print('Setting the password...') + + sql_setup="""UPDATE mysql.user SET Password=PASSWORD('{}') WHERE User='root'; + DELETE FROM mysql.user WHERE User=''; + DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1'); + DROP DATABASE IF EXISTS test; + DELETE FROM mysql.db WHERE Db='test' OR Db='test_\%'; + FLUSH PRIVILEGES;""".format(args.password) + """ + with open('./sql_setup.sql', 'w') as f: + f.write(sql_setup) + + if subprocess.call("sudo mysql --user=root < ./sql_setup.sql", shell=True) > 0: + + print('Error, cannot set the password') + sys.exit(1) + else: + print('Mariadb installed successfully') + sys.exit(0) + """ + + if subprocess.call("sudo MYSQL_PASS=%s ./modules/pastafari2/scripts/servers/databases/mariadb/mysql_secure.sh" % args.password, shell=True) > 0: + + print('Error, cannot set the password') + sys.exit(1) + else: + print('Mariadb installed successfully') + sys.exit(0) + + if args.ip: + + if subprocess.call("sudo sed -i 's/pid-file=\/run\/mariadb\/mariadb.pid/pid-file=\/run\/mariadb\/mariadb.pid\nbind-address = {}/g' /etc/my.cnf.d/mariadb-server.cnf".format(args.ip), shell=True) > 0: + print('Error, cannot install MariaDB...') + sys.exit(1) + + if subprocess.call("sudo systemctl enable mariadb", shell=True) > 0: + print('Error, cannot enable mariadb') + sys.exit(1) + if subprocess.call("sudo systemctl restart mariadb", shell=True) > 0: print('Error, cannot restart mariadb') diff --git a/scripts/servers/databases/mariadb/mysql_secure.sh b/scripts/servers/databases/mariadb/mysql_secure.sh new file mode 100644 index 0000000..dc8d917 --- /dev/null +++ b/scripts/servers/databases/mariadb/mysql_secure.sh @@ -0,0 +1,25 @@ +#!/bin/bash + +expect -f - <<-EOF + set timeout 10 + spawn mysql_secure_installation + expect "Enter current password for root (enter for none):" + send -- "\r" + expect "Switch to unix_socket authentication" + send -- "n\r" + expect "Set root password?" + send -- "y\r" + expect "New password:" + send -- "${MYSQL_PASS}\r" + expect "Re-enter new password:" + send -- "${MYSQL_PASS}\r" + expect "Remove anonymous users?" + send -- "y\r" + expect "Disallow root login remotely?" + send -- "y\r" + expect "Remove test database and access to it?" + send -- "y\r" + expect "Reload privilege tables now?" + send -- "y\r" + expect eof +EOF diff --git a/tasks/servers/databases/mysql/standalone_mysql.py b/tasks/servers/databases/mysql/standalone_mysql.py index fef6184..98381f3 100644 --- a/tasks/servers/databases/mysql/standalone_mysql.py +++ b/tasks/servers/databases/mysql/standalone_mysql.py @@ -26,7 +26,7 @@ class ServerTask(Task): self.codename_task='standalone_mysql' - self.files=[['modules/pastafari2/scripts/servers/databases/mariadb/install_mariadb.py', 0o700]] + self.files=[['modules/pastafari2/scripts/servers/databases/mariadb/install_mariadb.py', 0o700], ['modules/pastafari2/scripts/servers/databases/mariadb/mysql_secure.sh', 0o700]] # Format first array element is command with the interpreter, the task is agnostic, the files in os directory. The commands are setted with 750 permission. # First element is the file, next elements are the arguments diff --git a/templates/admin/multiprogress.phtml b/templates/admin/multiprogress.phtml index 3bd682d..a6306c8 100644 --- a/templates/admin/multiprogress.phtml +++ b/templates/admin/multiprogress.phtml @@ -55,7 +55,11 @@ $.ajax({ } - get_log(); + if(!task_completed) { + + get_log(); + + } setInterval(get_log, 1000); @@ -107,6 +111,34 @@ function get_log() { } } + else { + + if(data[i].error==1) { + + $('#task_'+data[i].task_id).find('.progress_text').html(data[i].message); + + task_completed++; + + $('#num_completed').html(task_completed); + + console.log('Task completed '+data[i].task_id); + + if(data[i].error==0) { + + $('#task_'+data[i].task_id).find('i').removeClass('fa-cog fa-spin fa-fw').addClass('fa-check'); + + } + else { + + $('#task_'+data[i].task_id).find('i').removeClass('fa-cog fa-spin fa-fw').addClass('fa-times'); + } + + + } + + + } + position++;