update server scripts
This commit is contained in:
parent
db657149f4
commit
381d575ea7
|
@ -1,105 +1,196 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# Function to check if Apache is installed
|
# Function to install Apache if not installed
|
||||||
check_apache() {
|
install_apache_if_needed() {
|
||||||
if ! command -v apache2 &> /dev/null; then
|
if ! dpkg -l apache2 > /dev/null 2>&1; then
|
||||||
dialog --msgbox "Apache is not installed. Installing now..." 10 50
|
echo "Apache is not installed. Installing..."
|
||||||
sudo apt update
|
if sudo apt-get install -y apache2; then
|
||||||
sudo apt install -y apache2
|
echo "Apache installed successfully."
|
||||||
dialog --msgbox "Apache has been installed successfully." 10 50
|
else
|
||||||
else
|
echo "Failed to install Apache. Exiting."
|
||||||
dialog --msgbox "Apache is already installed." 10 50
|
exit 1
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# Function to start Apache service
|
# Function to install Certbot if not installed
|
||||||
|
install_certbot_if_needed() {
|
||||||
|
if ! command -v certbot &> /dev/null; then
|
||||||
|
echo "Certbot is not installed. Installing..."
|
||||||
|
if sudo apt-get install -y certbot python3-certbot-apache; then
|
||||||
|
echo "Certbot installed successfully."
|
||||||
|
else
|
||||||
|
echo "Failed to install Certbot. Exiting."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to start Apache
|
||||||
start_apache() {
|
start_apache() {
|
||||||
sudo systemctl start apache2
|
sudo systemctl start apache2
|
||||||
dialog --msgbox "Apache service started." 10 30
|
dialog --msgbox "Apache started." 10 30
|
||||||
}
|
}
|
||||||
|
|
||||||
# Function to stop Apache service
|
# Function to stop Apache
|
||||||
stop_apache() {
|
stop_apache() {
|
||||||
sudo systemctl stop apache2
|
sudo systemctl stop apache2
|
||||||
dialog --msgbox "Apache service stopped." 10 30
|
dialog --msgbox "Apache stopped." 10 30
|
||||||
}
|
}
|
||||||
|
|
||||||
# Function to restart Apache service
|
# Function to restart Apache
|
||||||
restart_apache() {
|
restart_apache() {
|
||||||
sudo systemctl restart apache2
|
sudo systemctl restart apache2
|
||||||
dialog --msgbox "Apache service restarted." 10 30
|
dialog --msgbox "Apache restarted." 10 30
|
||||||
}
|
}
|
||||||
|
|
||||||
# Function to enable Apache service
|
# Function to enable Apache at boot
|
||||||
enable_apache() {
|
enable_apache_at_boot() {
|
||||||
sudo systemctl enable apache2
|
sudo systemctl enable apache2
|
||||||
dialog --msgbox "Apache service enabled." 10 30
|
dialog --msgbox "Apache enabled at boot." 10 30
|
||||||
}
|
}
|
||||||
|
|
||||||
# Function to disable Apache service
|
# Function to disable Apache at boot
|
||||||
disable_apache() {
|
disable_apache_at_boot() {
|
||||||
sudo systemctl disable apache2
|
sudo systemctl disable apache2
|
||||||
dialog --msgbox "Apache service disabled." 10 30
|
dialog --msgbox "Apache disabled at boot." 10 30
|
||||||
}
|
}
|
||||||
|
|
||||||
# Function to configure Apache virtual host
|
# Function to secure Apache installation
|
||||||
configure_apache_virtual_host() {
|
secure_apache() {
|
||||||
DOMAIN=$(dialog --inputbox "Enter the domain name (e.g., example.com):" 10 50 3>&1 1>&2 2>&3 3>&-)
|
echo "Apache does not require additional security configuration."
|
||||||
if [ $? -eq 1 ]; then return; fi
|
dialog --msgbox "Apache installation secured." 10 30
|
||||||
|
}
|
||||||
|
|
||||||
sudo mkdir -p /var/www/$DOMAIN/html
|
# Function to configure Apache virtual hosts
|
||||||
sudo chown -R $USER:$USER /var/www/$DOMAIN/html
|
configure_apache_virtual_hosts() {
|
||||||
sudo chmod -R 755 /var/www/$DOMAIN
|
DOMAIN=$(dialog --inputbox "Enter the domain name for the virtual host (e.g., example.com):" 10 40 3>&1 1>&2 2>&3 3>&-)
|
||||||
|
if [[ -n "$DOMAIN" ]]; then
|
||||||
cat <<EOF | sudo tee /etc/apache2/sites-available/$DOMAIN.conf > /dev/null
|
sudo mkdir -p /var/www/$DOMAIN/public_html
|
||||||
|
sudo chown -R www-data:www-data /var/www/$DOMAIN/public_html
|
||||||
|
sudo chmod -R 755 /var/www/$DOMAIN
|
||||||
|
cat << EOF | sudo tee /etc/apache2/sites-available/$DOMAIN.conf > /dev/null
|
||||||
<VirtualHost *:80>
|
<VirtualHost *:80>
|
||||||
ServerAdmin webmaster@localhost
|
ServerAdmin webmaster@$DOMAIN
|
||||||
ServerName $DOMAIN
|
ServerName $DOMAIN
|
||||||
ServerAlias www.$DOMAIN
|
DocumentRoot /var/www/$DOMAIN/public_html
|
||||||
DocumentRoot /var/www/$DOMAIN/html
|
ErrorLog \${APACHE_LOG_DIR}/error.log
|
||||||
ErrorLog ${APACHE_LOG_DIR}/error.log
|
CustomLog \${APACHE_LOG_DIR}/access.log combined
|
||||||
CustomLog ${APACHE_LOG_DIR}/access.log combined
|
|
||||||
</VirtualHost>
|
</VirtualHost>
|
||||||
EOF
|
EOF
|
||||||
|
sudo a2ensite $DOMAIN.conf
|
||||||
sudo a2ensite $DOMAIN.conf
|
sudo systemctl reload apache2
|
||||||
sudo systemctl reload apache2
|
dialog --msgbox "Virtual host for $DOMAIN configured successfully." 10 60
|
||||||
dialog --msgbox "Apache virtual host for $DOMAIN configured successfully." 10 50
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# Main function to configure Apache
|
# Function to enable or disable Apache virtual host (site)
|
||||||
configure_apache() {
|
enable_disable_apache_site() {
|
||||||
check_apache
|
SITE=$(dialog --inputbox "Enter the site configuration file name (without .conf):" 10 40 3>&1 1>&2 2>&3 3>&-)
|
||||||
|
ACTION=$(dialog --clear --backtitle "Enable/Disable Apache Site" \
|
||||||
|
--title "Enable/Disable Apache Site" \
|
||||||
|
--menu "Choose an action:" 10 40 2 \
|
||||||
|
1 "Enable" \
|
||||||
|
2 "Disable" \
|
||||||
|
3>&1 1>&2 2>&3 3>&-)
|
||||||
|
|
||||||
|
case $ACTION in
|
||||||
|
1)
|
||||||
|
sudo a2ensite $SITE.conf
|
||||||
|
sudo systemctl reload apache2
|
||||||
|
dialog --msgbox "Apache site $SITE enabled." 10 30
|
||||||
|
;;
|
||||||
|
2)
|
||||||
|
sudo a2dissite $SITE.conf
|
||||||
|
sudo systemctl reload apache2
|
||||||
|
dialog --msgbox "Apache site $SITE disabled." 10 30
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
dialog --msgbox "Invalid option." 10 30
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to enable or disable Apache modules
|
||||||
|
enable_disable_apache_module() {
|
||||||
|
MODULE=$(dialog --inputbox "Enter the name of the Apache module to enable/disable (e.g., rewrite):" 10 40 3>&1 1>&2 2>&3 3>&-)
|
||||||
|
ACTION=$(dialog --clear --backtitle "Enable/Disable Apache Module" \
|
||||||
|
--title "Enable/Disable Apache Module" \
|
||||||
|
--menu "Choose an action:" 10 40 2 \
|
||||||
|
1 "Enable" \
|
||||||
|
2 "Disable" \
|
||||||
|
3>&1 1>&2 2>&3 3>&-)
|
||||||
|
|
||||||
|
case $ACTION in
|
||||||
|
1)
|
||||||
|
sudo a2enmod $MODULE
|
||||||
|
sudo systemctl restart apache2
|
||||||
|
dialog --msgbox "Apache module $MODULE enabled." 10 30
|
||||||
|
;;
|
||||||
|
2)
|
||||||
|
sudo a2dismod $MODULE
|
||||||
|
sudo systemctl restart apache2
|
||||||
|
dialog --msgbox "Apache module $MODULE disabled." 10 30
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
dialog --msgbox "Invalid option." 10 30
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to configure Certbot for Apache
|
||||||
|
configure_certbot() {
|
||||||
|
DOMAIN=$(dialog --inputbox "Enter the domain name for which you want to configure Certbot (e.g., example.com):" 10 40 3>&1 1>&2 2>&3 3>&-)
|
||||||
|
if [[ -n "$DOMAIN" ]]; then
|
||||||
|
sudo certbot --apache -d $DOMAIN
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to configure Apache
|
||||||
|
configure_apache() {
|
||||||
while true; do
|
while true; do
|
||||||
local APACHE_CHOICE
|
CHOICE=$(dialog --clear --backtitle "Configure Apache" \
|
||||||
APACHE_CHOICE=$(dialog --clear --backtitle "Apache Configuration" \
|
--title "Apache Menu" \
|
||||||
--title "Apache Menu" \
|
--menu "Choose an option:" 20 60 11 \
|
||||||
--menu "Choose an option:" 20 60 10 \
|
1 "Install/Check Apache" \
|
||||||
1 "Start Apache" \
|
2 "Start Apache" \
|
||||||
2 "Stop Apache" \
|
3 "Stop Apache" \
|
||||||
3 "Restart Apache" \
|
4 "Restart Apache" \
|
||||||
4 "Enable Apache at Boot" \
|
5 "Enable Apache at Boot" \
|
||||||
5 "Disable Apache at Boot" \
|
6 "Disable Apache at Boot" \
|
||||||
6 "Configure Virtual Host" \
|
7 "Secure Apache Installation" \
|
||||||
7 "Back to Main Menu" \
|
8 "Configure Virtual Host" \
|
||||||
3>&1 1>&2 2>&3 3>&-)
|
9 "Enable/Disable Apache Site" \
|
||||||
|
10 "Enable/Disable Apache Module" \
|
||||||
|
11 "Configure Certbot" \
|
||||||
|
12 "Return to Main Menu" \
|
||||||
|
3>&1 1>&2 2>&3 3>&-)
|
||||||
|
|
||||||
|
clear
|
||||||
|
|
||||||
# Check if user canceled
|
# Check if user canceled
|
||||||
if [ $? -eq 1 ]; then break; fi
|
if [ $? -eq 1 ]; then
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
|
||||||
case "$APACHE_CHOICE" in
|
case $CHOICE in
|
||||||
1) start_apache ;;
|
1) install_apache_if_needed ;;
|
||||||
2) stop_apache ;;
|
2) start_apache ;;
|
||||||
3) restart_apache ;;
|
3) stop_apache ;;
|
||||||
4) enable_apache ;;
|
4) restart_apache ;;
|
||||||
5) disable_apache ;;
|
5) enable_apache_at_boot ;;
|
||||||
6) configure_apache_virtual_host ;;
|
6) disable_apache_at_boot ;;
|
||||||
7) break ;;
|
7) secure_apache ;;
|
||||||
*) dialog --msgbox "Invalid option. Please choose a valid option." 10 30 ;;
|
8) configure_apache_virtual_hosts ;;
|
||||||
|
9) enable_disable_apache_site ;;
|
||||||
|
10) enable_disable_apache_module ;;
|
||||||
|
11) configure_certbot ;;
|
||||||
|
12) break ;;
|
||||||
|
*) dialog --msgbox "Invalid option." 10 30 ;;
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
# Execute the main function to configure Apache
|
# Show main configuration menu
|
||||||
configure_apache
|
configure_apache
|
||||||
|
|
||||||
|
|
|
@ -1,81 +1,169 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# Function to check if MariaDB is installed
|
# Function to install MariaDB if not installed
|
||||||
check_mariadb() {
|
install_mariadb_if_needed() {
|
||||||
if ! command -v mariadb &> /dev/null; then
|
if ! dpkg -l mariadb-server > /dev/null 2>&1; then
|
||||||
dialog --msgbox "MariaDB is not installed. Installing now..." 10 50
|
echo "MariaDB is not installed. Installing..."
|
||||||
sudo apt update
|
if sudo apt-get install -y mariadb-server; then
|
||||||
sudo apt install -y mariadb-server
|
echo "MariaDB installed successfully."
|
||||||
sudo mysql_secure_installation
|
else
|
||||||
dialog --msgbox "MariaDB has been installed and secured successfully." 10 50
|
echo "Failed to install MariaDB. Exiting."
|
||||||
else
|
exit 1
|
||||||
dialog --msgbox "MariaDB is already installed." 10 50
|
fi
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# Function to start MariaDB service
|
# Function to start MariaDB
|
||||||
start_mariadb() {
|
start_mariadb() {
|
||||||
sudo systemctl start mariadb
|
sudo systemctl start mariadb
|
||||||
dialog --msgbox "MariaDB service started." 10 30
|
dialog --msgbox "MariaDB started." 10 30
|
||||||
}
|
}
|
||||||
|
|
||||||
# Function to stop MariaDB service
|
# Function to stop MariaDB
|
||||||
stop_mariadb() {
|
stop_mariadb() {
|
||||||
sudo systemctl stop mariadb
|
sudo systemctl stop mariadb
|
||||||
dialog --msgbox "MariaDB service stopped." 10 30
|
dialog --msgbox "MariaDB stopped." 10 30
|
||||||
}
|
}
|
||||||
|
|
||||||
# Function to restart MariaDB service
|
# Function to restart MariaDB
|
||||||
restart_mariadb() {
|
restart_mariadb() {
|
||||||
sudo systemctl restart mariadb
|
sudo systemctl restart mariadb
|
||||||
dialog --msgbox "MariaDB service restarted." 10 30
|
dialog --msgbox "MariaDB restarted." 10 30
|
||||||
}
|
}
|
||||||
|
|
||||||
# Function to enable MariaDB service
|
# Function to enable MariaDB at boot
|
||||||
enable_mariadb() {
|
enable_mariadb_at_boot() {
|
||||||
sudo systemctl enable mariadb
|
sudo systemctl enable mariadb
|
||||||
dialog --msgbox "MariaDB service enabled." 10 30
|
dialog --msgbox "MariaDB enabled at boot." 10 30
|
||||||
}
|
}
|
||||||
|
|
||||||
# Function to disable MariaDB service
|
# Function to disable MariaDB at boot
|
||||||
disable_mariadb() {
|
disable_mariadb_at_boot() {
|
||||||
sudo systemctl disable mariadb
|
sudo systemctl disable mariadb
|
||||||
dialog --msgbox "MariaDB service disabled." 10 30
|
dialog --msgbox "MariaDB disabled at boot." 10 30
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to secure MariaDB installation
|
||||||
|
secure_mariadb() {
|
||||||
|
sudo mysql_secure_installation
|
||||||
|
dialog --msgbox "MariaDB installation secured." 10 30
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to create a database
|
||||||
|
create_database() {
|
||||||
|
DATABASE=$(dialog --inputbox "Enter the name of the database to create:" 10 40 3>&1 1>&2 2>&3 3>&-)
|
||||||
|
if [[ -n "$DATABASE" ]]; then
|
||||||
|
mysql -e "CREATE DATABASE IF NOT EXISTS $DATABASE;"
|
||||||
|
dialog --msgbox "Database '$DATABASE' created successfully." 10 60
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to create a table
|
||||||
|
create_table() {
|
||||||
|
DATABASE=$(dialog --inputbox "Enter the name of the database:" 10 40 3>&1 1>&2 2>&3 3>&-)
|
||||||
|
TABLE=$(dialog --inputbox "Enter the name of the table to create:" 10 40 3>&1 1>&2 2>&3 3>&-)
|
||||||
|
if [[ -n "$DATABASE" && -n "$TABLE" ]]; then
|
||||||
|
mysql -e "USE $DATABASE; CREATE TABLE IF NOT EXISTS $TABLE (id INT AUTO_INCREMENT PRIMARY KEY);"
|
||||||
|
dialog --msgbox "Table '$TABLE' created in database '$DATABASE' successfully." 10 60
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to insert data into a table
|
||||||
|
insert_data() {
|
||||||
|
DATABASE=$(dialog --inputbox "Enter the name of the database:" 10 40 3>&1 1>&2 2>&3 3>&-)
|
||||||
|
TABLE=$(dialog --inputbox "Enter the name of the table to insert data into:" 10 40 3>&1 1>&2 2>&3 3>&-)
|
||||||
|
DATA=$(dialog --inputbox "Enter data to insert into table (e.g., 'value1, value2'):" 10 60 3>&1 1>&2 2>&3 3>&-)
|
||||||
|
if [[ -n "$DATABASE" && -n "$TABLE" && -n "$DATA" ]]; then
|
||||||
|
mysql -e "USE $DATABASE; INSERT INTO $TABLE VALUES ($DATA);"
|
||||||
|
dialog --msgbox "Data inserted into table '$TABLE' in database '$DATABASE' successfully." 10 60
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to query data from a table
|
||||||
|
query_data() {
|
||||||
|
DATABASE=$(dialog --inputbox "Enter the name of the database:" 10 40 3>&1 1>&2 2>&3 3>&-)
|
||||||
|
TABLE=$(dialog --inputbox "Enter the name of the table to query from:" 10 40 3>&1 1>&2 2>&3 3>&-)
|
||||||
|
if [[ -n "$DATABASE" && -n "$TABLE" ]]; then
|
||||||
|
QUERY=$(dialog --inputbox "Enter SQL query (e.g., 'SELECT * FROM $TABLE;'):" 10 60 3>&1 1>&2 2>&3 3>&-)
|
||||||
|
if [[ -n "$QUERY" ]]; then
|
||||||
|
mysql -e "USE $DATABASE; $QUERY"
|
||||||
|
dialog --msgbox "Query executed successfully." 10 60
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to backup the database
|
||||||
|
backup_database() {
|
||||||
|
DATABASE=$(dialog --inputbox "Enter the name of the database to backup:" 10 40 3>&1 1>&2 2>&3 3>&-)
|
||||||
|
if [[ -n "$DATABASE" ]]; then
|
||||||
|
mysqldump $DATABASE > $DATABASE.sql
|
||||||
|
dialog --msgbox "Database '$DATABASE' backed up to '$DATABASE.sql' successfully." 10 60
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to restore the database
|
||||||
|
restore_database() {
|
||||||
|
DATABASE=$(dialog --inputbox "Enter the name of the database to restore into:" 10 40 3>&1 1>&2 2>&3 3>&-)
|
||||||
|
if [[ -n "$DATABASE" ]]; then
|
||||||
|
FILE=$(dialog --inputbox "Enter the path to the SQL file to restore:" 10 60 3>&1 1>&2 2>&3 3>&-)
|
||||||
|
if [[ -f "$FILE" ]]; then
|
||||||
|
mysql $DATABASE < $FILE
|
||||||
|
dialog --msgbox "Database '$DATABASE' restored successfully." 10 60
|
||||||
|
else
|
||||||
|
dialog --msgbox "File not found or invalid." 10 60
|
||||||
|
fi
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# Function to configure MariaDB
|
# Function to configure MariaDB
|
||||||
configure_mariadb() {
|
configure_mariadb() {
|
||||||
check_mariadb
|
|
||||||
|
|
||||||
while true; do
|
while true; do
|
||||||
local MARIADB_CHOICE
|
CHOICE=$(dialog --clear --backtitle "Configure MariaDB" \
|
||||||
MARIADB_CHOICE=$(dialog --clear --backtitle "MariaDB Configuration" \
|
--title "MariaDB Menu" \
|
||||||
--title "MariaDB Menu" \
|
--menu "Choose an option:" 20 60 12 \
|
||||||
--menu "Choose an option:" 20 60 10 \
|
1 "Install/Check MariaDB" \
|
||||||
1 "Start MariaDB" \
|
2 "Start MariaDB" \
|
||||||
2 "Stop MariaDB" \
|
3 "Stop MariaDB" \
|
||||||
3 "Restart MariaDB" \
|
4 "Restart MariaDB" \
|
||||||
4 "Enable MariaDB at Boot" \
|
5 "Enable MariaDB at Boot" \
|
||||||
5 "Disable MariaDB at Boot" \
|
6 "Disable MariaDB at Boot" \
|
||||||
6 "Secure MariaDB Installation" \
|
7 "Secure MariaDB Installation" \
|
||||||
7 "Back to Main Menu" \
|
8 "Create Database" \
|
||||||
3>&1 1>&2 2>&3 3>&-)
|
9 "Create Table" \
|
||||||
|
10 "Insert Data into Table" \
|
||||||
|
11 "Query Data from Table" \
|
||||||
|
12 "Backup Database" \
|
||||||
|
13 "Restore Database" \
|
||||||
|
14 "Return to Main Menu" \
|
||||||
|
3>&1 1>&2 2>&3 3>&-)
|
||||||
|
|
||||||
|
clear
|
||||||
|
|
||||||
# Check if user canceled
|
# Check if user canceled
|
||||||
if [ $? -eq 1 ]; then break; fi
|
if [ $? -eq 1 ]; then
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
|
||||||
case "$MARIADB_CHOICE" in
|
case $CHOICE in
|
||||||
1) start_mariadb ;;
|
1) install_mariadb_if_needed ;;
|
||||||
2) stop_mariadb ;;
|
2) start_mariadb ;;
|
||||||
3) restart_mariadb ;;
|
3) stop_mariadb ;;
|
||||||
4) enable_mariadb ;;
|
4) restart_mariadb ;;
|
||||||
5) disable_mariadb ;;
|
5) enable_mariadb_at_boot ;;
|
||||||
6) sudo mysql_secure_installation ;;
|
6) disable_mariadb_at_boot ;;
|
||||||
7) break ;;
|
7) secure_mariadb ;;
|
||||||
*) dialog --msgbox "Invalid option. Please choose a valid option." 10 30 ;;
|
8) create_database ;;
|
||||||
|
9) create_table ;;
|
||||||
|
10) insert_data ;;
|
||||||
|
11) query_data ;;
|
||||||
|
12) backup_database ;;
|
||||||
|
13) restore_database ;;
|
||||||
|
14) break ;;
|
||||||
|
*) dialog --msgbox "Invalid option." 10 30 ;;
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
# Execute the main function to configure MariaDB
|
# Show main configuration menu
|
||||||
configure_mariadb
|
configure_mariadb
|
||||||
|
|
||||||
|
|
|
@ -1,106 +1,202 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# Function to check if NGINX is installed
|
# Function to install Nginx if not installed
|
||||||
check_nginx() {
|
install_nginx_if_needed() {
|
||||||
if ! command -v nginx &> /dev/null; then
|
if ! dpkg -l nginx > /dev/null 2>&1; then
|
||||||
dialog --msgbox "NGINX is not installed. Installing now..." 10 50
|
echo "Nginx is not installed. Installing..."
|
||||||
sudo apt update
|
if sudo apt-get install -y nginx; then
|
||||||
sudo apt install -y nginx
|
echo "Nginx installed successfully."
|
||||||
dialog --msgbox "NGINX has been installed successfully." 10 50
|
else
|
||||||
else
|
echo "Failed to install Nginx. Exiting."
|
||||||
dialog --msgbox "NGINX is already installed." 10 50
|
exit 1
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# Function to start NGINX service
|
# Function to install Certbot if not installed
|
||||||
|
install_certbot_if_needed() {
|
||||||
|
if ! command -v certbot &> /dev/null; then
|
||||||
|
echo "Certbot is not installed. Installing..."
|
||||||
|
if sudo apt-get install -y certbot python3-certbot-nginx; then
|
||||||
|
echo "Certbot installed successfully."
|
||||||
|
else
|
||||||
|
echo "Failed to install Certbot. Exiting."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to start Nginx
|
||||||
start_nginx() {
|
start_nginx() {
|
||||||
sudo systemctl start nginx
|
sudo systemctl start nginx
|
||||||
dialog --msgbox "NGINX service started." 10 30
|
dialog --msgbox "Nginx started." 10 30
|
||||||
}
|
}
|
||||||
|
|
||||||
# Function to stop NGINX service
|
# Function to stop Nginx
|
||||||
stop_nginx() {
|
stop_nginx() {
|
||||||
sudo systemctl stop nginx
|
sudo systemctl stop nginx
|
||||||
dialog --msgbox "NGINX service stopped." 10 30
|
dialog --msgbox "Nginx stopped." 10 30
|
||||||
}
|
}
|
||||||
|
|
||||||
# Function to restart NGINX service
|
# Function to restart Nginx
|
||||||
restart_nginx() {
|
restart_nginx() {
|
||||||
sudo systemctl restart nginx
|
sudo systemctl restart nginx
|
||||||
dialog --msgbox "NGINX service restarted." 10 30
|
dialog --msgbox "Nginx restarted." 10 30
|
||||||
}
|
}
|
||||||
|
|
||||||
# Function to enable NGINX service
|
# Function to enable Nginx at boot
|
||||||
enable_nginx() {
|
enable_nginx_at_boot() {
|
||||||
sudo systemctl enable nginx
|
sudo systemctl enable nginx
|
||||||
dialog --msgbox "NGINX service enabled." 10 30
|
dialog --msgbox "Nginx enabled at boot." 10 30
|
||||||
}
|
}
|
||||||
|
|
||||||
# Function to disable NGINX service
|
# Function to disable Nginx at boot
|
||||||
disable_nginx() {
|
disable_nginx_at_boot() {
|
||||||
sudo systemctl disable nginx
|
sudo systemctl disable nginx
|
||||||
dialog --msgbox "NGINX service disabled." 10 30
|
dialog --msgbox "Nginx disabled at boot." 10 30
|
||||||
}
|
}
|
||||||
|
|
||||||
# Function to configure NGINX virtual host
|
# Function to secure Nginx installation
|
||||||
configure_nginx_virtual_host() {
|
secure_nginx() {
|
||||||
DOMAIN=$(dialog --inputbox "Enter the domain name (e.g., example.com):" 10 50 3>&1 1>&2 2>&3 3>&-)
|
echo "Nginx does not require additional security configuration."
|
||||||
if [ $? -eq 1 ]; then return; fi
|
dialog --msgbox "Nginx installation secured." 10 30
|
||||||
|
}
|
||||||
|
|
||||||
sudo mkdir -p /var/www/$DOMAIN/html
|
# Function to configure Nginx virtual hosts
|
||||||
sudo chown -R $USER:$USER /var/www/$DOMAIN/html
|
configure_nginx_virtual_hosts() {
|
||||||
sudo chmod -R 755 /var/www/$DOMAIN
|
DOMAIN=$(dialog --inputbox "Enter the domain name for the virtual host (e.g., example.com):" 10 40 3>&1 1>&2 2>&3 3>&-)
|
||||||
|
if [[ -n "$DOMAIN" ]]; then
|
||||||
cat <<EOF | sudo tee /etc/nginx/sites-available/$DOMAIN > /dev/null
|
sudo mkdir -p /var/www/$DOMAIN/html
|
||||||
|
sudo chown -R www-data:www-data /var/www/$DOMAIN/html
|
||||||
|
sudo chmod -R 755 /var/www/$DOMAIN
|
||||||
|
cat << EOF | sudo tee /etc/nginx/sites-available/$DOMAIN > /dev/null
|
||||||
server {
|
server {
|
||||||
listen 80;
|
listen 80;
|
||||||
server_name $DOMAIN www.$DOMAIN;
|
listen [::]:80;
|
||||||
|
|
||||||
|
server_name $DOMAIN;
|
||||||
|
|
||||||
root /var/www/$DOMAIN/html;
|
root /var/www/$DOMAIN/html;
|
||||||
index index.html index.htm;
|
index index.html;
|
||||||
|
|
||||||
location / {
|
location / {
|
||||||
try_files $uri $uri/ =404;
|
try_files \$uri \$uri/ =404;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
EOF
|
EOF
|
||||||
|
sudo ln -s /etc/nginx/sites-available/$DOMAIN /etc/nginx/sites-enabled/
|
||||||
sudo ln -s /etc/nginx/sites-available/$DOMAIN /etc/nginx/sites-enabled/
|
sudo systemctl reload nginx
|
||||||
sudo nginx -t && sudo systemctl reload nginx
|
dialog --msgbox "Virtual host for $DOMAIN configured successfully." 10 60
|
||||||
dialog --msgbox "NGINX virtual host for $DOMAIN configured successfully." 10 50
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# Main function to configure NGINX
|
# Function to enable or disable Nginx virtual host (site)
|
||||||
configure_nginx() {
|
enable_disable_nginx_site() {
|
||||||
check_nginx
|
SITE=$(dialog --inputbox "Enter the site configuration file name (without .conf):" 10 40 3>&1 1>&2 2>&3 3>&-)
|
||||||
|
ACTION=$(dialog --clear --backtitle "Enable/Disable Nginx Site" \
|
||||||
|
--title "Enable/Disable Nginx Site" \
|
||||||
|
--menu "Choose an action:" 10 40 2 \
|
||||||
|
1 "Enable" \
|
||||||
|
2 "Disable" \
|
||||||
|
3>&1 1>&2 2>&3 3>&-)
|
||||||
|
|
||||||
|
case $ACTION in
|
||||||
|
1)
|
||||||
|
sudo ln -s /etc/nginx/sites-available/$SITE /etc/nginx/sites-enabled/
|
||||||
|
sudo systemctl reload nginx
|
||||||
|
dialog --msgbox "Nginx site $SITE enabled." 10 30
|
||||||
|
;;
|
||||||
|
2)
|
||||||
|
sudo rm -f /etc/nginx/sites-enabled/$SITE
|
||||||
|
sudo systemctl reload nginx
|
||||||
|
dialog --msgbox "Nginx site $SITE disabled." 10 30
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
dialog --msgbox "Invalid option." 10 30
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to enable or disable Nginx modules
|
||||||
|
enable_disable_nginx_module() {
|
||||||
|
MODULE=$(dialog --inputbox "Enter the name of the Nginx module to enable/disable (e.g., ssl):" 10 40 3>&1 1>&2 2>&3 3>&-)
|
||||||
|
ACTION=$(dialog --clear --backtitle "Enable/Disable Nginx Module" \
|
||||||
|
--title "Enable/Disable Nginx Module" \
|
||||||
|
--menu "Choose an action:" 10 40 2 \
|
||||||
|
1 "Enable" \
|
||||||
|
2 "Disable" \
|
||||||
|
3>&1 1>&2 2>&3 3>&-)
|
||||||
|
|
||||||
|
case $ACTION in
|
||||||
|
1)
|
||||||
|
sudo ln -s /etc/nginx/modules-available/$MODULE.conf /etc/nginx/modules-enabled/
|
||||||
|
sudo systemctl restart nginx
|
||||||
|
dialog --msgbox "Nginx module $MODULE enabled." 10 30
|
||||||
|
;;
|
||||||
|
2)
|
||||||
|
sudo rm -f /etc/nginx/modules-enabled/$MODULE.conf
|
||||||
|
sudo systemctl restart nginx
|
||||||
|
dialog --msgbox "Nginx module $MODULE disabled." 10 30
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
dialog --msgbox "Invalid option." 10 30
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to configure Certbot for Nginx
|
||||||
|
configure_certbot() {
|
||||||
|
DOMAIN=$(dialog --inputbox "Enter the domain name for which you want to configure Certbot (e.g., example.com):" 10 40 3>&1 1>&2 2>&3 3>&-)
|
||||||
|
if [[ -n "$DOMAIN" ]]; then
|
||||||
|
sudo certbot --nginx -d $DOMAIN
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to configure Nginx
|
||||||
|
configure_nginx() {
|
||||||
while true; do
|
while true; do
|
||||||
local NGINX_CHOICE
|
CHOICE=$(dialog --clear --backtitle "Configure Nginx" \
|
||||||
NGINX_CHOICE=$(dialog --clear --backtitle "NGINX Configuration" \
|
--title "Nginx Menu" \
|
||||||
--title "NGINX Menu" \
|
--menu "Choose an option:" 20 60 11 \
|
||||||
--menu "Choose an option:" 20 60 10 \
|
1 "Install/Check Nginx" \
|
||||||
1 "Start NGINX" \
|
2 "Start Nginx" \
|
||||||
2 "Stop NGINX" \
|
3 "Stop Nginx" \
|
||||||
3 "Restart NGINX" \
|
4 "Restart Nginx" \
|
||||||
4 "Enable NGINX at Boot" \
|
5 "Enable Nginx at Boot" \
|
||||||
5 "Disable NGINX at Boot" \
|
6 "Disable Nginx at Boot" \
|
||||||
6 "Configure Virtual Host" \
|
7 "Secure Nginx Installation" \
|
||||||
7 "Back to Main Menu" \
|
8 "Configure Virtual Host" \
|
||||||
3>&1 1>&2 2>&3 3>&-)
|
9 "Enable/Disable Nginx Site" \
|
||||||
|
10 "Enable/Disable Nginx Module" \
|
||||||
|
11 "Configure Certbot" \
|
||||||
|
12 "Return to Main Menu" \
|
||||||
|
3>&1 1>&2 2>&3 3>&-)
|
||||||
|
|
||||||
|
clear
|
||||||
|
|
||||||
# Check if user canceled
|
# Check if user canceled
|
||||||
if [ $? -eq 1 ]; then break; fi
|
if [ $? -eq 1 ]; then
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
|
||||||
case "$NGINX_CHOICE" in
|
case $CHOICE in
|
||||||
1) start_nginx ;;
|
1) install_nginx_if_needed ;;
|
||||||
2) stop_nginx ;;
|
2) start_nginx ;;
|
||||||
3) restart_nginx ;;
|
3) stop_nginx ;;
|
||||||
4) enable_nginx ;;
|
4) restart_nginx ;;
|
||||||
5) disable_nginx ;;
|
5) enable_nginx_at_boot ;;
|
||||||
6) configure_nginx_virtual_host ;;
|
6) disable_nginx_at_boot ;;
|
||||||
7) break ;;
|
7) secure_nginx ;;
|
||||||
*) dialog --msgbox "Invalid option. Please choose a valid option." 10 30 ;;
|
8) configure_nginx_virtual_hosts ;;
|
||||||
|
9) enable_disable_nginx_site ;;
|
||||||
|
10) enable_disable_nginx_module ;;
|
||||||
|
11) configure_certbot ;;
|
||||||
|
12) break ;;
|
||||||
|
*) dialog --msgbox "Invalid option." 10 30 ;;
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
# Execute the main function to configure NGINX
|
# Show main configuration menu
|
||||||
configure_nginx
|
configure_nginx
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,274 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Function to install PHP if not installed
|
||||||
|
install_php_if_needed() {
|
||||||
|
if ! dpkg -l php > /dev/null 2>&1; then
|
||||||
|
echo "PHP is not installed. Installing..."
|
||||||
|
if sudo apt-get install -y php; then
|
||||||
|
echo "PHP installed successfully."
|
||||||
|
else
|
||||||
|
echo "Failed to install PHP. Exiting."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to configure PHP
|
||||||
|
configure_php() {
|
||||||
|
while true; do
|
||||||
|
OPTION=$(dialog --clear --backtitle "Configure PHP" \
|
||||||
|
--title "PHP Configuration Menu" \
|
||||||
|
--menu "Choose an option:" 15 60 4 \
|
||||||
|
1 "Configure PHP.ini" \
|
||||||
|
2 "Set PHP Error Reporting" \
|
||||||
|
3 "Set PHP Timezone" \
|
||||||
|
4 "Return to Main Menu" \
|
||||||
|
3>&1 1>&2 2>&3)
|
||||||
|
|
||||||
|
clear
|
||||||
|
|
||||||
|
# Check if user canceled
|
||||||
|
if [ $? -eq 1 ]; then
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
|
||||||
|
case $OPTION in
|
||||||
|
1) sudo nano /etc/php/7.4/apache2/php.ini ;; # Adjust version if needed
|
||||||
|
2) echo "error_reporting = E_ALL" | sudo tee -a /etc/php/7.4/apache2/php.ini ;; # Adjust version if needed
|
||||||
|
3) TZ=$(dialog --inputbox "Enter PHP timezone (e.g., America/New_York):" 10 40 3>&1 1>&2 2>&3)
|
||||||
|
sudo sed -i "s|^;date.timezone =|date.timezone = $TZ|" /etc/php/7.4/apache2/php.ini ;; # Adjust version if needed
|
||||||
|
4) break ;;
|
||||||
|
*) dialog --msgbox "Invalid option." 10 30 ;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to install Docker if not installed
|
||||||
|
install_docker_if_needed() {
|
||||||
|
if ! command -v docker &> /dev/null; then
|
||||||
|
echo "Docker is not installed. Installing..."
|
||||||
|
if curl -fsSL https://get.docker.com | sudo sh; then
|
||||||
|
echo "Docker installed successfully."
|
||||||
|
else
|
||||||
|
echo "Failed to install Docker. Exiting."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to configure Docker
|
||||||
|
configure_docker() {
|
||||||
|
while true; do
|
||||||
|
OPTION=$(dialog --clear --backtitle "Configure Docker" \
|
||||||
|
--title "Docker Configuration Menu" \
|
||||||
|
--menu "Choose an option:" 15 60 6 \
|
||||||
|
1 "Create Docker Network" \
|
||||||
|
2 "Manage Docker Containers" \
|
||||||
|
3 "Manage Docker Images" \
|
||||||
|
4 "Manage Docker Volumes" \
|
||||||
|
5 "Manage Docker Compose" \
|
||||||
|
6 "Return to Main Menu" \
|
||||||
|
3>&1 1>&2 2>&3)
|
||||||
|
|
||||||
|
clear
|
||||||
|
|
||||||
|
# Check if user canceled
|
||||||
|
if [ $? -eq 1 ]; then
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
|
||||||
|
case $OPTION in
|
||||||
|
1) NETWORK=$(dialog --inputbox "Enter Docker network name:" 10 40 3>&1 1>&2 2>&3)
|
||||||
|
sudo docker network create $NETWORK ;;
|
||||||
|
2) manage_docker_containers ;;
|
||||||
|
3) manage_docker_images ;;
|
||||||
|
4) manage_docker_volumes ;;
|
||||||
|
5) manage_docker_compose ;;
|
||||||
|
6) break ;;
|
||||||
|
*) dialog --msgbox "Invalid option." 10 30 ;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to manage Docker containers
|
||||||
|
manage_docker_containers() {
|
||||||
|
while true; do
|
||||||
|
ACTION=$(dialog --clear --backtitle "Manage Docker Containers" \
|
||||||
|
--title "Docker Container Management" \
|
||||||
|
--menu "Choose an action:" 15 60 4 \
|
||||||
|
1 "List Containers" \
|
||||||
|
2 "Start Container" \
|
||||||
|
3 "Stop Container" \
|
||||||
|
4 "Return to Docker Menu" \
|
||||||
|
3>&1 1>&2 2>&3)
|
||||||
|
|
||||||
|
clear
|
||||||
|
|
||||||
|
# Check if user canceled
|
||||||
|
if [ $? -eq 1 ]; then
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
|
||||||
|
case $ACTION in
|
||||||
|
1) sudo docker ps -a ;;
|
||||||
|
2) CONTAINER=$(dialog --inputbox "Enter the container ID or name:" 10 40 3>&1 1>&2 2>&3)
|
||||||
|
sudo docker start $CONTAINER ;;
|
||||||
|
3) CONTAINER=$(dialog --inputbox "Enter the container ID or name:" 10 40 3>&1 1>&2 2>&3)
|
||||||
|
sudo docker stop $CONTAINER ;;
|
||||||
|
4) break ;;
|
||||||
|
*) dialog --msgbox "Invalid option." 10 30 ;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to manage Docker images
|
||||||
|
manage_docker_images() {
|
||||||
|
while true; do
|
||||||
|
ACTION=$(dialog --clear --backtitle "Manage Docker Images" \
|
||||||
|
--title "Docker Image Management" \
|
||||||
|
--menu "Choose an action:" 15 60 4 \
|
||||||
|
1 "List Images" \
|
||||||
|
2 "Pull Image" \
|
||||||
|
3 "Remove Image" \
|
||||||
|
4 "Return to Docker Menu" \
|
||||||
|
3>&1 1>&2 2>&3)
|
||||||
|
|
||||||
|
clear
|
||||||
|
|
||||||
|
# Check if user canceled
|
||||||
|
if [ $? -eq 1 ]; then
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
|
||||||
|
case $ACTION in
|
||||||
|
1) sudo docker images ;;
|
||||||
|
2) IMAGE=$(dialog --inputbox "Enter the image name (e.g., ubuntu):" 10 40 3>&1 1>&2 2>&3)
|
||||||
|
sudo docker pull $IMAGE ;;
|
||||||
|
3) IMAGE=$(dialog --inputbox "Enter the image ID or name:" 10 40 3>&1 1>&2 2>&3)
|
||||||
|
sudo docker rmi $IMAGE ;;
|
||||||
|
4) break ;;
|
||||||
|
*) dialog --msgbox "Invalid option." 10 30 ;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to manage Docker volumes
|
||||||
|
manage_docker_volumes() {
|
||||||
|
while true; do
|
||||||
|
ACTION=$(dialog --clear --backtitle "Manage Docker Volumes" \
|
||||||
|
--title "Docker Volume Management" \
|
||||||
|
--menu "Choose an action:" 15 60 4 \
|
||||||
|
1 "List Volumes" \
|
||||||
|
2 "Create Volume" \
|
||||||
|
3 "Remove Volume" \
|
||||||
|
4 "Return to Docker Menu" \
|
||||||
|
3>&1 1>&2 2>&3)
|
||||||
|
|
||||||
|
clear
|
||||||
|
|
||||||
|
# Check if user canceled
|
||||||
|
if [ $? -eq 1 ]; then
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
|
||||||
|
case $ACTION in
|
||||||
|
1) sudo docker volume ls ;;
|
||||||
|
2) VOLUME=$(dialog --inputbox "Enter the volume name:" 10 40 3>&1 1>&2 2>&3)
|
||||||
|
sudo docker volume create $VOLUME ;;
|
||||||
|
3) VOLUME=$(dialog --inputbox "Enter the volume name or ID:" 10 40 3>&1 1>&2 2>&3)
|
||||||
|
sudo docker volume rm $VOLUME ;;
|
||||||
|
4) break ;;
|
||||||
|
*) dialog --msgbox "Invalid option." 10 30 ;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to manage Docker Compose
|
||||||
|
manage_docker_compose() {
|
||||||
|
while true; do
|
||||||
|
ACTION=$(dialog --clear --backtitle "Manage Docker Compose" \
|
||||||
|
--title "Docker Compose Management" \
|
||||||
|
--menu "Choose an action:" 15 60 4 \
|
||||||
|
1 "Run Docker Compose" \
|
||||||
|
2 "Stop Docker Compose" \
|
||||||
|
3 "Remove Docker Compose" \
|
||||||
|
4 "Return to Docker Menu" \
|
||||||
|
3>&1 1>&2 2>&3)
|
||||||
|
|
||||||
|
clear
|
||||||
|
|
||||||
|
# Check if user canceled
|
||||||
|
if [ $? -eq 1 ]; then
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
|
||||||
|
case $ACTION in
|
||||||
|
1) docker_compose_up ;;
|
||||||
|
2) docker_compose_down ;;
|
||||||
|
3) docker_compose_remove ;;
|
||||||
|
4) break ;;
|
||||||
|
*) dialog --msgbox "Invalid option." 10 30 ;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to run Docker Compose
|
||||||
|
docker_compose_up() {
|
||||||
|
COMPOSE_FILE=$(dialog --inputbox "Enter the Docker Compose file (e.g., docker-compose.yaml):" 10 40 3>&1 1>&2 2>&3)
|
||||||
|
if [[ -n "$COMPOSE_FILE" ]]; then
|
||||||
|
sudo docker-compose -f $COMPOSE_FILE up -d
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to stop Docker Compose
|
||||||
|
docker_compose_down() {
|
||||||
|
COMPOSE_FILE=$(dialog --inputbox "Enter the Docker Compose file (e.g., docker-compose.yaml):" 10 40 3>&1 1>&2 2>&3)
|
||||||
|
if [[ -n "$COMPOSE_FILE" ]]; then
|
||||||
|
sudo docker-compose -f $COMPOSE_FILE down
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to remove Docker Compose
|
||||||
|
docker_compose_remove() {
|
||||||
|
COMPOSE_FILE=$(dialog --inputbox "Enter the Docker Compose file (e.g., docker-compose.yaml):" 10 40 3>&1 1>&2 2>&3)
|
||||||
|
if [[ -n "$COMPOSE_FILE" ]]; then
|
||||||
|
sudo docker-compose -f $COMPOSE_FILE down --volumes --remove-orphans
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to display the main menu
|
||||||
|
main_menu() {
|
||||||
|
while true; do
|
||||||
|
CHOICE=$(dialog --clear --backtitle "Server Utilities Installation and Configuration" \
|
||||||
|
--title "Main Menu" \
|
||||||
|
--menu "Choose an option:" 15 60 5 \
|
||||||
|
1 "Install/Check PHP" \
|
||||||
|
2 "Configure PHP" \
|
||||||
|
3 "Install/Check Docker" \
|
||||||
|
4 "Configure Docker" \
|
||||||
|
5 "Return to Main Menu" \
|
||||||
|
3>&1 1>&2 2>&3)
|
||||||
|
|
||||||
|
clear
|
||||||
|
|
||||||
|
# Check if user canceled
|
||||||
|
if [ $? -eq 1 ]; then
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
|
||||||
|
case $CHOICE in
|
||||||
|
1) install_php_if_needed ;;
|
||||||
|
2) configure_php ;;
|
||||||
|
3) install_docker_if_needed ;;
|
||||||
|
4) configure_docker ;;
|
||||||
|
5) break ;;
|
||||||
|
*) dialog --msgbox "Invalid option." 10 30 ;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
echo "Server utilities installation and configuration script completed."
|
||||||
|
}
|
||||||
|
|
||||||
|
# Display main menu
|
||||||
|
main_menu
|
||||||
|
|
|
@ -0,0 +1,139 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Function to install Postfix if not installed
|
||||||
|
install_postfix_if_needed() {
|
||||||
|
if ! dpkg -l postfix > /dev/null 2>&1; then
|
||||||
|
echo "Postfix is not installed. Installing..."
|
||||||
|
if sudo apt-get install -y postfix; then
|
||||||
|
echo "Postfix installed successfully."
|
||||||
|
else
|
||||||
|
echo "Failed to install Postfix. Exiting."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to configure Postfix interactively
|
||||||
|
configure_postfix() {
|
||||||
|
echo "Configuring Postfix..."
|
||||||
|
if ! sudo dpkg-reconfigure postfix; then
|
||||||
|
echo "Failed to configure Postfix."
|
||||||
|
dialog --title "Error" --msgbox "Failed to configure Postfix." 10 60
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
echo "Postfix configured successfully."
|
||||||
|
dialog --title "Success" --msgbox "Postfix configured successfully." 10 60
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to start Postfix service
|
||||||
|
start_postfix() {
|
||||||
|
echo "Starting Postfix service..."
|
||||||
|
if ! sudo systemctl start postfix; then
|
||||||
|
echo "Failed to start Postfix service."
|
||||||
|
dialog --title "Error" --msgbox "Failed to start Postfix service." 10 60
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
echo "Postfix service started successfully."
|
||||||
|
dialog --title "Success" --msgbox "Postfix service started successfully." 10 60
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to stop Postfix service
|
||||||
|
stop_postfix() {
|
||||||
|
echo "Stopping Postfix service..."
|
||||||
|
if ! sudo systemctl stop postfix; then
|
||||||
|
echo "Failed to stop Postfix service."
|
||||||
|
dialog --title "Error" --msgbox "Failed to stop Postfix service." 10 60
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
echo "Postfix service stopped successfully."
|
||||||
|
dialog --title "Success" --msgbox "Postfix service stopped successfully." 10 60
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to restart Postfix service
|
||||||
|
restart_postfix() {
|
||||||
|
echo "Restarting Postfix service..."
|
||||||
|
if ! sudo systemctl restart postfix; then
|
||||||
|
echo "Failed to restart Postfix service."
|
||||||
|
dialog --title "Error" --msgbox "Failed to restart Postfix service." 10 60
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
echo "Postfix service restarted successfully."
|
||||||
|
dialog --title "Success" --msgbox "Postfix service restarted successfully." 10 60
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to enable Postfix service at boot
|
||||||
|
enable_postfix_at_boot() {
|
||||||
|
echo "Enabling Postfix service at boot..."
|
||||||
|
if ! sudo systemctl enable postfix; then
|
||||||
|
echo "Failed to enable Postfix service at boot."
|
||||||
|
dialog --title "Error" --msgbox "Failed to enable Postfix service at boot." 10 60
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
echo "Postfix service enabled at boot successfully."
|
||||||
|
dialog --title "Success" --msgbox "Postfix service enabled at boot successfully." 10 60
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to disable Postfix service at boot
|
||||||
|
disable_postfix_at_boot() {
|
||||||
|
echo "Disabling Postfix service at boot..."
|
||||||
|
if ! sudo systemctl disable postfix; then
|
||||||
|
echo "Failed to disable Postfix service at boot."
|
||||||
|
dialog --title "Error" --msgbox "Failed to disable Postfix service at boot." 10 60
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
echo "Postfix service disabled at boot successfully."
|
||||||
|
dialog --title "Success" --msgbox "Postfix service disabled at boot successfully." 10 60
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to configure Postfix securely (optional)
|
||||||
|
secure_postfix() {
|
||||||
|
echo "Securing Postfix configuration..."
|
||||||
|
# You can add additional secure configuration steps here if needed
|
||||||
|
echo "Postfix configuration secured successfully."
|
||||||
|
dialog --title "Success" --msgbox "Postfix configuration secured successfully." 10 60
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to display the main menu
|
||||||
|
main_menu() {
|
||||||
|
while true; do
|
||||||
|
CHOICE=$(dialog --clear --backtitle "Postfix Configuration" \
|
||||||
|
--title "Postfix Menu" \
|
||||||
|
--menu "Choose an option:" 15 60 9 \
|
||||||
|
1 "Install/Check Postfix" \
|
||||||
|
2 "Configure Postfix" \
|
||||||
|
3 "Start Postfix" \
|
||||||
|
4 "Stop Postfix" \
|
||||||
|
5 "Restart Postfix" \
|
||||||
|
6 "Enable Postfix at Boot" \
|
||||||
|
7 "Disable Postfix at Boot" \
|
||||||
|
8 "Secure Postfix Configuration" \
|
||||||
|
9 "Exit" \
|
||||||
|
3>&1 1>&2 2>&3 3>&-)
|
||||||
|
|
||||||
|
clear
|
||||||
|
|
||||||
|
# Check if user canceled
|
||||||
|
if [ $? -eq 1 ]; then
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
|
||||||
|
case $CHOICE in
|
||||||
|
1) install_postfix_if_needed ;;
|
||||||
|
2) configure_postfix ;;
|
||||||
|
3) start_postfix ;;
|
||||||
|
4) stop_postfix ;;
|
||||||
|
5) restart_postfix ;;
|
||||||
|
6) enable_postfix_at_boot ;;
|
||||||
|
7) disable_postfix_at_boot ;;
|
||||||
|
8) secure_postfix ;;
|
||||||
|
9) break ;;
|
||||||
|
*) dialog --msgbox "Invalid option." 10 30 ;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
echo "Postfix configuration script completed."
|
||||||
|
}
|
||||||
|
|
||||||
|
# Display main menu
|
||||||
|
main_menu
|
||||||
|
|
|
@ -1,80 +1,170 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# Function to check if PostgreSQL is installed
|
# Function to install PostgreSQL if not installed
|
||||||
check_postgresql() {
|
install_postgresql_if_needed() {
|
||||||
if ! command -v psql &> /dev/null; then
|
if ! dpkg -l postgresql > /dev/null 2>&1; then
|
||||||
dialog --msgbox "PostgreSQL is not installed. Installing now..." 10 50
|
echo "PostgreSQL is not installed. Installing..."
|
||||||
sudo apt update
|
if sudo apt-get install -y postgresql; then
|
||||||
sudo apt install -y postgresql postgresql-contrib
|
echo "PostgreSQL installed successfully."
|
||||||
dialog --msgbox "PostgreSQL has been installed successfully." 10 50
|
else
|
||||||
else
|
echo "Failed to install PostgreSQL. Exiting."
|
||||||
dialog --msgbox "PostgreSQL is already installed." 10 50
|
exit 1
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# Function to start PostgreSQL service
|
# Function to start PostgreSQL
|
||||||
start_postgresql() {
|
start_postgresql() {
|
||||||
sudo systemctl start postgresql
|
sudo systemctl start postgresql
|
||||||
dialog --msgbox "PostgreSQL service started." 10 30
|
dialog --msgbox "PostgreSQL started." 10 30
|
||||||
}
|
}
|
||||||
|
|
||||||
# Function to stop PostgreSQL service
|
# Function to stop PostgreSQL
|
||||||
stop_postgresql() {
|
stop_postgresql() {
|
||||||
sudo systemctl stop postgresql
|
sudo systemctl stop postgresql
|
||||||
dialog --msgbox "PostgreSQL service stopped." 10 30
|
dialog --msgbox "PostgreSQL stopped." 10 30
|
||||||
}
|
}
|
||||||
|
|
||||||
# Function to restart PostgreSQL service
|
# Function to restart PostgreSQL
|
||||||
restart_postgresql() {
|
restart_postgresql() {
|
||||||
sudo systemctl restart postgresql
|
sudo systemctl restart postgresql
|
||||||
dialog --msgbox "PostgreSQL service restarted." 10 30
|
dialog --msgbox "PostgreSQL restarted." 10 30
|
||||||
}
|
}
|
||||||
|
|
||||||
# Function to enable PostgreSQL service
|
# Function to enable PostgreSQL at boot
|
||||||
enable_postgresql() {
|
enable_postgresql_at_boot() {
|
||||||
sudo systemctl enable postgresql
|
sudo systemctl enable postgresql
|
||||||
dialog --msgbox "PostgreSQL service enabled." 10 30
|
dialog --msgbox "PostgreSQL enabled at boot." 10 30
|
||||||
}
|
}
|
||||||
|
|
||||||
# Function to disable PostgreSQL service
|
# Function to disable PostgreSQL at boot
|
||||||
disable_postgresql() {
|
disable_postgresql_at_boot() {
|
||||||
sudo systemctl disable postgresql
|
sudo systemctl disable postgresql
|
||||||
dialog --msgbox "PostgreSQL service disabled." 10 30
|
dialog --msgbox "PostgreSQL disabled at boot." 10 30
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to secure PostgreSQL installation
|
||||||
|
secure_postgresql() {
|
||||||
|
sudo passwd postgres
|
||||||
|
sudo -u postgres psql -c "ALTER USER postgres PASSWORD 'your_password';"
|
||||||
|
dialog --msgbox "PostgreSQL installation secured." 10 30
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to create a database
|
||||||
|
create_database() {
|
||||||
|
DATABASE=$(dialog --inputbox "Enter the name of the database to create:" 10 40 3>&1 1>&2 2>&3 3>&-)
|
||||||
|
if [[ -n "$DATABASE" ]]; then
|
||||||
|
sudo -u postgres createdb $DATABASE
|
||||||
|
dialog --msgbox "Database '$DATABASE' created successfully." 10 60
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to create a table
|
||||||
|
create_table() {
|
||||||
|
DATABASE=$(dialog --inputbox "Enter the name of the database:" 10 40 3>&1 1>&2 2>&3 3>&-)
|
||||||
|
TABLE=$(dialog --inputbox "Enter the name of the table to create:" 10 40 3>&1 1>&2 2>&3 3>&-)
|
||||||
|
if [[ -n "$DATABASE" && -n "$TABLE" ]]; then
|
||||||
|
sudo -u postgres psql -d $DATABASE -c "CREATE TABLE $TABLE (id SERIAL PRIMARY KEY);"
|
||||||
|
dialog --msgbox "Table '$TABLE' created in database '$DATABASE' successfully." 10 60
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to insert data into a table
|
||||||
|
insert_data() {
|
||||||
|
DATABASE=$(dialog --inputbox "Enter the name of the database:" 10 40 3>&1 1>&2 2>&3 3>&-)
|
||||||
|
TABLE=$(dialog --inputbox "Enter the name of the table to insert data into:" 10 40 3>&1 1>&2 2>&3 3>&-)
|
||||||
|
DATA=$(dialog --inputbox "Enter data to insert into table (e.g., 'value1, value2'):" 10 60 3>&1 1>&2 2>&3 3>&-)
|
||||||
|
if [[ -n "$DATABASE" && -n "$TABLE" && -n "$DATA" ]]; then
|
||||||
|
sudo -u postgres psql -d $DATABASE -c "INSERT INTO $TABLE VALUES ($DATA);"
|
||||||
|
dialog --msgbox "Data inserted into table '$TABLE' in database '$DATABASE' successfully." 10 60
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to query data from a table
|
||||||
|
query_data() {
|
||||||
|
DATABASE=$(dialog --inputbox "Enter the name of the database:" 10 40 3>&1 1>&2 2>&3 3>&-)
|
||||||
|
TABLE=$(dialog --inputbox "Enter the name of the table to query from:" 10 40 3>&1 1>&2 2>&3 3>&-)
|
||||||
|
if [[ -n "$DATABASE" && -n "$TABLE" ]]; then
|
||||||
|
QUERY=$(dialog --inputbox "Enter SQL query (e.g., 'SELECT * FROM $TABLE;'):" 10 60 3>&1 1>&2 2>&3 3>&-)
|
||||||
|
if [[ -n "$QUERY" ]]; then
|
||||||
|
sudo -u postgres psql -d $DATABASE -c "$QUERY"
|
||||||
|
dialog --msgbox "Query executed successfully." 10 60
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to backup the database
|
||||||
|
backup_database() {
|
||||||
|
DATABASE=$(dialog --inputbox "Enter the name of the database to backup:" 10 40 3>&1 1>&2 2>&3 3>&-)
|
||||||
|
if [[ -n "$DATABASE" ]]; then
|
||||||
|
sudo -u postgres pg_dump $DATABASE > $DATABASE.sql
|
||||||
|
dialog --msgbox "Database '$DATABASE' backed up to '$DATABASE.sql' successfully." 10 60
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to restore the database
|
||||||
|
restore_database() {
|
||||||
|
DATABASE=$(dialog --inputbox "Enter the name of the database to restore into:" 10 40 3>&1 1>&2 2>&3 3>&-)
|
||||||
|
if [[ -n "$DATABASE" ]]; then
|
||||||
|
FILE=$(dialog --inputbox "Enter the path to the SQL file to restore:" 10 60 3>&1 1>&2 2>&3 3>&-)
|
||||||
|
if [[ -f "$FILE" ]]; then
|
||||||
|
sudo -u postgres psql -d $DATABASE < $FILE
|
||||||
|
dialog --msgbox "Database '$DATABASE' restored successfully." 10 60
|
||||||
|
else
|
||||||
|
dialog --msgbox "File not found or invalid." 10 60
|
||||||
|
fi
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# Function to configure PostgreSQL
|
# Function to configure PostgreSQL
|
||||||
configure_postgresql() {
|
configure_postgresql() {
|
||||||
check_postgresql
|
|
||||||
|
|
||||||
while true; do
|
while true; do
|
||||||
local POSTGRESQL_CHOICE
|
CHOICE=$(dialog --clear --backtitle "Configure PostgreSQL" \
|
||||||
POSTGRESQL_CHOICE=$(dialog --clear --backtitle "PostgreSQL Configuration" \
|
--title "PostgreSQL Menu" \
|
||||||
--title "PostgreSQL Menu" \
|
--menu "Choose an option:" 20 60 14 \
|
||||||
--menu "Choose an option:" 20 60 10 \
|
1 "Install/Check PostgreSQL" \
|
||||||
1 "Start PostgreSQL" \
|
2 "Start PostgreSQL" \
|
||||||
2 "Stop PostgreSQL" \
|
3 "Stop PostgreSQL" \
|
||||||
3 "Restart PostgreSQL" \
|
4 "Restart PostgreSQL" \
|
||||||
4 "Enable PostgreSQL at Boot" \
|
5 "Enable PostgreSQL at Boot" \
|
||||||
5 "Disable PostgreSQL at Boot" \
|
6 "Disable PostgreSQL at Boot" \
|
||||||
6 "Create PostgreSQL User" \
|
7 "Secure PostgreSQL Installation" \
|
||||||
7 "Back to Main Menu" \
|
8 "Create Database" \
|
||||||
3>&1 1>&2 2>&3 3>&-)
|
9 "Create Table" \
|
||||||
|
10 "Insert Data into Table" \
|
||||||
|
11 "Query Data from Table" \
|
||||||
|
12 "Backup Database" \
|
||||||
|
13 "Restore Database" \
|
||||||
|
14 "Return to Main Menu" \
|
||||||
|
3>&1 1>&2 2>&3 3>&-)
|
||||||
|
|
||||||
|
clear
|
||||||
|
|
||||||
# Check if user canceled
|
# Check if user canceled
|
||||||
if [ $? -eq 1 ]; then break; fi
|
if [ $? -eq 1 ]; then
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
|
||||||
case "$POSTGRESQL_CHOICE" in
|
case $CHOICE in
|
||||||
1) start_postgresql ;;
|
1) install_postgresql_if_needed ;;
|
||||||
2) stop_postgresql ;;
|
2) start_postgresql ;;
|
||||||
3) restart_postgresql ;;
|
3) stop_postgresql ;;
|
||||||
4) enable_postgresql ;;
|
4) restart_postgresql ;;
|
||||||
5) disable_postgresql ;;
|
5) enable_postgresql_at_boot ;;
|
||||||
6) create_postgresql_user ;;
|
6) disable_postgresql_at_boot ;;
|
||||||
7) break ;;
|
7) secure_postgresql ;;
|
||||||
*) dialog --msgbox "Invalid option. Please choose a valid option." 10 30 ;;
|
8) create_database ;;
|
||||||
|
9) create_table ;;
|
||||||
|
10) insert_data ;;
|
||||||
|
11) query_data ;;
|
||||||
|
12) backup_database ;;
|
||||||
|
13) restore_database ;;
|
||||||
|
14) break ;;
|
||||||
|
*) dialog --msgbox "Invalid option." 10 30 ;;
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
# Execute the main function to configure PostgreSQL
|
# Show main configuration menu
|
||||||
configure_postgresql
|
configure_postgresql
|
||||||
|
|
||||||
|
|
|
@ -1,128 +1,169 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# Function to check if SQLite is installed
|
# Function to install SQLite if not installed
|
||||||
check_sqlite() {
|
install_sqlite_if_needed() {
|
||||||
if ! command -v sqlite3 &> /dev/null; then
|
if ! dpkg -l sqlite3 > /dev/null 2>&1; then
|
||||||
dialog --msgbox "SQLite is not installed. Installing now..." 10 50
|
echo "SQLite is not installed. Installing..."
|
||||||
sudo apt update
|
if sudo apt-get install -y sqlite3; then
|
||||||
sudo apt install -y sqlite3
|
echo "SQLite installed successfully."
|
||||||
dialog --msgbox "SQLite has been installed successfully." 10 50
|
else
|
||||||
else
|
echo "Failed to install SQLite. Exiting."
|
||||||
dialog --msgbox "SQLite is already installed." 10 50
|
exit 1
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Function to start SQLite
|
||||||
|
start_sqlite() {
|
||||||
|
sudo systemctl start sqlite3
|
||||||
|
dialog --msgbox "SQLite started." 10 30
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to stop SQLite
|
||||||
|
stop_sqlite() {
|
||||||
|
sudo systemctl stop sqlite3
|
||||||
|
dialog --msgbox "SQLite stopped." 10 30
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to restart SQLite
|
||||||
|
restart_sqlite() {
|
||||||
|
sudo systemctl restart sqlite3
|
||||||
|
dialog --msgbox "SQLite restarted." 10 30
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to enable SQLite at boot
|
||||||
|
enable_sqlite_at_boot() {
|
||||||
|
sudo systemctl enable sqlite3
|
||||||
|
dialog --msgbox "SQLite enabled at boot." 10 30
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to disable SQLite at boot
|
||||||
|
disable_sqlite_at_boot() {
|
||||||
|
sudo systemctl disable sqlite3
|
||||||
|
dialog --msgbox "SQLite disabled at boot." 10 30
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to secure SQLite installation
|
||||||
|
secure_sqlite() {
|
||||||
|
echo "SQLite does not require additional security configuration."
|
||||||
|
dialog --msgbox "SQLite installation secured." 10 30
|
||||||
|
}
|
||||||
|
|
||||||
# Function to create a SQLite database
|
# Function to create a SQLite database
|
||||||
create_sqlite_database() {
|
create_sqlite_database() {
|
||||||
DB_PATH=$(dialog --inputbox "Enter the path and name of the SQLite database to create (e.g., /path/to/db.sqlite):" 10 50 3>&1 1>&2 2>&3 3>&-)
|
DATABASE=$(dialog --inputbox "Enter the name of the SQLite database to create:" 10 40 3>&1 1>&2 2>&3 3>&-)
|
||||||
if [ $? -eq 1 ]; then return; fi
|
if [[ -n "$DATABASE" ]]; then
|
||||||
|
touch $DATABASE.db
|
||||||
sqlite3 $DB_PATH "VACUUM;"
|
dialog --msgbox "SQLite database '$DATABASE.db' created successfully." 10 60
|
||||||
dialog --msgbox "SQLite database $DB_PATH created successfully." 10 30
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# Function to create a SQLite table
|
# Function to create a table in SQLite
|
||||||
create_sqlite_table() {
|
create_sqlite_table() {
|
||||||
DB_PATH=$(dialog --inputbox "Enter the path and name of the SQLite database (to create table in):" 10 50 3>&1 1>&2 2>&3 3>&-)
|
DATABASE=$(dialog --inputbox "Enter the name of the SQLite database:" 10 40 3>&1 1>&2 2>&3 3>&-)
|
||||||
if [ $? -eq 1 ]; then return; fi
|
TABLE=$(dialog --inputbox "Enter the name of the table to create in SQLite:" 10 40 3>&1 1>&2 2>&3 3>&-)
|
||||||
|
if [[ -n "$DATABASE" && -n "$TABLE" ]]; then
|
||||||
TABLE_NAME=$(dialog --inputbox "Enter the name of the table to create:" 10 40 3>&1 1>&2 2>&3 3>&-)
|
sqlite3 $DATABASE.db "CREATE TABLE $TABLE (id INTEGER PRIMARY KEY);"
|
||||||
if [ $? -eq 1 ]; then return; fi
|
dialog --msgbox "Table '$TABLE' created in SQLite database '$DATABASE.db' successfully." 10 60
|
||||||
|
fi
|
||||||
COLUMNS=$(dialog --inputbox "Enter table columns (e.g., id INTEGER PRIMARY KEY, name TEXT):" 10 50 3>&1 1>&2 2>&3 3>&-)
|
|
||||||
if [ $? -eq 1 ]; then return; fi
|
|
||||||
|
|
||||||
sqlite3 $DB_PATH "CREATE TABLE $TABLE_NAME ($COLUMNS);"
|
|
||||||
dialog --msgbox "Table $TABLE_NAME created successfully in SQLite database $DB_PATH." 10 30
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# Function to insert data into a SQLite table
|
# Function to insert data into SQLite table
|
||||||
insert_sqlite_data() {
|
insert_data_into_sqlite() {
|
||||||
DB_PATH=$(dialog --inputbox "Enter the path and name of the SQLite database (to insert data into table):" 10 50 3>&1 1>&2 2>&3 3>&-)
|
DATABASE=$(dialog --inputbox "Enter the name of the SQLite database:" 10 40 3>&1 1>&2 2>&3 3>&-)
|
||||||
if [ $? -eq 1 ]; then return; fi
|
TABLE=$(dialog --inputbox "Enter the name of the SQLite table to insert data into:" 10 40 3>&1 1>&2 2>&3 3>&-)
|
||||||
|
DATA=$(dialog --inputbox "Enter data to insert into SQLite table (e.g., 'value1, value2'):" 10 60 3>&1 1>&2 2>&3 3>&-)
|
||||||
TABLE_NAME=$(dialog --inputbox "Enter the name of the table to insert data into:" 10 40 3>&1 1>&2 2>&3 3>&-)
|
if [[ -n "$DATABASE" && -n "$TABLE" && -n "$DATA" ]]; then
|
||||||
if [ $? -eq 1 ]; then return; fi
|
sqlite3 $DATABASE.db "INSERT INTO $TABLE VALUES ($DATA);"
|
||||||
|
dialog --msgbox "Data inserted into SQLite table '$TABLE' in database '$DATABASE.db' successfully." 10 60
|
||||||
COLUMNS=$(dialog --inputbox "Enter column names (e.g., name, age):" 10 50 3>&1 1>&2 2>&3 3>&-)
|
fi
|
||||||
if [ $? -eq 1 ]; then return; fi
|
|
||||||
|
|
||||||
VALUES=$(dialog --inputbox "Enter values to insert (e.g., 'John', 30):" 10 50 3>&1 1>&2 2>&3 3>&-)
|
|
||||||
if [ $? -eq 1 ]; then return; fi
|
|
||||||
|
|
||||||
sqlite3 $DB_PATH "INSERT INTO $TABLE_NAME ($COLUMNS) VALUES ($VALUES);"
|
|
||||||
dialog --msgbox "Data inserted successfully into table $TABLE_NAME of SQLite database $DB_PATH." 10 30
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# Function to query data from a SQLite table
|
# Function to query data from SQLite table
|
||||||
query_sqlite_data() {
|
query_data_from_sqlite() {
|
||||||
DB_PATH=$(dialog --inputbox "Enter the path and name of the SQLite database (to query data from table):" 10 50 3>&1 1>&2 2>&3 3>&-)
|
DATABASE=$(dialog --inputbox "Enter the name of the SQLite database:" 10 40 3>&1 1>&2 2>&3 3>&-)
|
||||||
if [ $? -eq 1 ]; then return; fi
|
TABLE=$(dialog --inputbox "Enter the name of the SQLite table to query from:" 10 40 3>&1 1>&2 2>&3 3>&-)
|
||||||
|
if [[ -n "$DATABASE" && -n "$TABLE" ]]; then
|
||||||
QUERY=$(dialog --inputbox "Enter SQL query (e.g., SELECT * FROM table_name):" 10 50 3>&1 1>&2 2>&3 3>&-)
|
QUERY=$(dialog --inputbox "Enter SQLite query (e.g., 'SELECT * FROM $TABLE;'):" 10 60 3>&1 1>&2 2>&3 3>&-)
|
||||||
if [ $? -eq 1 ]; then return; fi
|
if [[ -n "$QUERY" ]]; then
|
||||||
|
sqlite3 $DATABASE.db "$QUERY"
|
||||||
RESULT=$(sqlite3 -header -column $DB_PATH "$QUERY")
|
dialog --msgbox "Query executed successfully." 10 60
|
||||||
dialog --msgbox "Query result:\n\n$RESULT" 20 70
|
fi
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# Function to back up a SQLite database
|
# Function to backup SQLite database
|
||||||
backup_sqlite_database() {
|
backup_sqlite_database() {
|
||||||
DB_PATH=$(dialog --inputbox "Enter the path and name of the SQLite database to backup:" 10 50 3>&1 1>&2 2>&3 3>&-)
|
DATABASE=$(dialog --inputbox "Enter the name of the SQLite database to backup:" 10 40 3>&1 1>&2 2>&3 3>&-)
|
||||||
if [ $? -eq 1 ]; then return; fi
|
if [[ -n "$DATABASE" ]]; then
|
||||||
|
cp $DATABASE.db $DATABASE.backup.db
|
||||||
BACKUP_FILE=$(dialog --inputbox "Enter the path and name of the backup file (e.g., /home/user/backup.sql):" 10 50 3>&1 1>&2 2>&3 3>&-)
|
dialog --msgbox "SQLite database '$DATABASE.db' backed up to '$DATABASE.backup.db' successfully." 10 60
|
||||||
if [ $? -eq 1 ]; then return; fi
|
fi
|
||||||
|
|
||||||
sqlite3 $DB_PATH ".backup $BACKUP_FILE"
|
|
||||||
dialog --msgbox "Backup of SQLite database $DB_PATH successfully saved to $BACKUP_FILE." 10 30
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# Function to restore a SQLite database from backup
|
# Function to restore SQLite database
|
||||||
restore_sqlite_database() {
|
restore_sqlite_database() {
|
||||||
DB_PATH=$(dialog --inputbox "Enter the path and name of the SQLite database to restore to:" 10 50 3>&1 1>&2 2>&3 3>&-)
|
DATABASE=$(dialog --inputbox "Enter the name of the SQLite database to restore into:" 10 40 3>&1 1>&2 2>&3 3>&-)
|
||||||
if [ $? -eq 1 ]; then return; fi
|
if [[ -n "$DATABASE" ]]; then
|
||||||
|
FILE=$(dialog --inputbox "Enter the path to the SQLite backup file to restore:" 10 60 3>&1 1>&2 2>&3 3>&-)
|
||||||
BACKUP_FILE=$(dialog --inputbox "Enter the path and name of the backup file (e.g., /home/user/backup.sql):" 10 50 3>&1 1>&2 2>&3 3>&-)
|
if [[ -f "$FILE" ]]; then
|
||||||
if [ $? -eq 1 ]; then return; fi
|
cp $FILE $DATABASE.db
|
||||||
|
dialog --msgbox "SQLite database '$DATABASE.db' restored successfully." 10 60
|
||||||
sqlite3 $DB_PATH ".restore $BACKUP_FILE"
|
else
|
||||||
dialog --msgbox "SQLite database $DB_PATH successfully restored from $BACKUP_FILE." 10 30
|
dialog --msgbox "File not found or invalid." 10 60
|
||||||
|
fi
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# Main function to configure SQLite
|
# Function to configure SQLite
|
||||||
configure_sqlite() {
|
configure_sqlite() {
|
||||||
check_sqlite
|
|
||||||
|
|
||||||
while true; do
|
while true; do
|
||||||
local SQLITE_CHOICE
|
CHOICE=$(dialog --clear --backtitle "Configure SQLite" \
|
||||||
SQLITE_CHOICE=$(dialog --clear --backtitle "SQLite Configuration" \
|
--title "SQLite Menu" \
|
||||||
--title "SQLite Menu" \
|
--menu "Choose an option:" 20 60 13 \
|
||||||
--menu "Choose an option:" 20 60 10 \
|
1 "Install/Check SQLite" \
|
||||||
1 "Create Database" \
|
2 "Start SQLite" \
|
||||||
2 "Create Table" \
|
3 "Stop SQLite" \
|
||||||
3 "Insert Data into Table" \
|
4 "Restart SQLite" \
|
||||||
4 "Query Data from Table" \
|
5 "Enable SQLite at Boot" \
|
||||||
5 "Backup Database" \
|
6 "Disable SQLite at Boot" \
|
||||||
6 "Restore Database" \
|
7 "Secure SQLite Installation" \
|
||||||
7 "Back to Main Menu" \
|
8 "Create SQLite Database" \
|
||||||
3>&1 1>&2 2>&3 3>&-)
|
9 "Create Table in SQLite" \
|
||||||
|
10 "Insert Data into SQLite Table" \
|
||||||
|
11 "Query Data from SQLite Table" \
|
||||||
|
12 "Backup SQLite Database" \
|
||||||
|
13 "Restore SQLite Database" \
|
||||||
|
14 "Return to Main Menu" \
|
||||||
|
3>&1 1>&2 2>&3 3>&-)
|
||||||
|
|
||||||
|
clear
|
||||||
|
|
||||||
# Check if user canceled
|
# Check if user canceled
|
||||||
if [ $? -eq 1 ]; then break; fi
|
if [ $? -eq 1 ]; then
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
|
||||||
case "$SQLITE_CHOICE" in
|
case $CHOICE in
|
||||||
1) create_sqlite_database ;;
|
1) install_sqlite_if_needed ;;
|
||||||
2) create_sqlite_table ;;
|
2) start_sqlite ;;
|
||||||
3) insert_sqlite_data ;;
|
3) stop_sqlite ;;
|
||||||
4) query_sqlite_data ;;
|
4) restart_sqlite ;;
|
||||||
5) backup_sqlite_database ;;
|
5) enable_sqlite_at_boot ;;
|
||||||
6) restore_sqlite_database ;;
|
6) disable_sqlite_at_boot ;;
|
||||||
7) break ;;
|
7) secure_sqlite ;;
|
||||||
*) dialog --msgbox "Invalid option. Please choose a valid option." 10 30 ;;
|
8) create_sqlite_database ;;
|
||||||
|
9) create_sqlite_table ;;
|
||||||
|
10) insert_data_into_sqlite ;;
|
||||||
|
11) query_data_from_sqlite ;;
|
||||||
|
12) backup_sqlite_database ;;
|
||||||
|
13) restore_sqlite_database ;;
|
||||||
|
14) break ;;
|
||||||
|
*) dialog --msgbox "Invalid option." 10 30 ;;
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
# Execute the main function to configure SQLite
|
# Show main configuration menu
|
||||||
configure_sqlite
|
configure_sqlite
|
||||||
|
|
||||||
|
|
|
@ -2,11 +2,74 @@
|
||||||
|
|
||||||
# Function to create users
|
# Function to create users
|
||||||
create_user() {
|
create_user() {
|
||||||
|
local USERNAME
|
||||||
|
local FULLNAME
|
||||||
|
local PASSWORD
|
||||||
|
local GROUPS
|
||||||
|
local SELECTED_GROUPS
|
||||||
|
|
||||||
|
# Prompt for username
|
||||||
USERNAME=$(dialog --inputbox "Enter the username of the new user:" 10 40 3>&1 1>&2 2>&3 3>&-)
|
USERNAME=$(dialog --inputbox "Enter the username of the new user:" 10 40 3>&1 1>&2 2>&3 3>&-)
|
||||||
useradd -m $USERNAME
|
if [[ -z "$USERNAME" ]]; then
|
||||||
passwd $USERNAME
|
dialog --msgbox "Username cannot be empty. User creation canceled." 10 30
|
||||||
dialog --msgbox "User $USERNAME created successfully." 10 30
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Check if username already exists
|
||||||
|
if id "$USERNAME" &>/dev/null; then
|
||||||
|
dialog --msgbox "User $USERNAME already exists. User creation canceled." 10 30
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Prompt for full name
|
||||||
|
FULLNAME=$(dialog --inputbox "Enter the full name of the new user:" 10 40 3>&1 1>&2 2>&3 3>&-)
|
||||||
|
if [[ -z "$FULLNAME" ]]; then
|
||||||
|
dialog --msgbox "Full name cannot be empty. User creation canceled." 10 30
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Prompt for password
|
||||||
|
PASSWORD=$(dialog --passwordbox "Enter the password for user $USERNAME:" 10 40 3>&1 1>&2 2>&3 3>&-)
|
||||||
|
if [[ -z "$PASSWORD" ]]; then
|
||||||
|
dialog --msgbox "Password cannot be empty. User creation canceled." 10 30
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Get list of available groups
|
||||||
|
GROUPS=$(getent group | cut -d: -f1)
|
||||||
|
GROUPS_ARR=()
|
||||||
|
for group in $GROUPS; do
|
||||||
|
GROUPS_ARR+=("$group" "" off)
|
||||||
|
done
|
||||||
|
|
||||||
|
# Select groups to add user
|
||||||
|
SELECTED_GROUPS=$(dialog --checklist "Select groups to add user $USERNAME:" 20 60 10 "${GROUPS_ARR[@]}" 3>&1 1>&2 2>&3 3>&-)
|
||||||
|
if [[ -z "$SELECTED_GROUPS" ]]; then
|
||||||
|
dialog --msgbox "No groups selected. User $USERNAME will not be added to any groups." 10 30
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Create the user
|
||||||
|
useradd -m -c "$FULLNAME" "$USERNAME"
|
||||||
|
if [[ $? -eq 0 ]]; then
|
||||||
|
echo "$USERNAME:$PASSWORD" | chpasswd
|
||||||
|
if [[ $? -eq 0 ]]; then
|
||||||
|
dialog --msgbox "User $USERNAME created successfully." 10 30
|
||||||
|
# Add user to selected groups
|
||||||
|
for group in $SELECTED_GROUPS; do
|
||||||
|
usermod -aG "$group" "$USERNAME"
|
||||||
|
if [[ $? -ne 0 ]]; then
|
||||||
|
dialog --msgbox "Failed to add user $USERNAME to group $group." 10 30
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
else
|
||||||
|
dialog --msgbox "Failed to set password for user $USERNAME. User creation canceled." 10 30
|
||||||
|
userdel -r "$USERNAME" # Rollback user creation if password setting failed
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
dialog --msgbox "Failed to create user $USERNAME. User creation canceled." 10 30
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# Call the function to create users
|
# Call the function to create users
|
||||||
create_user
|
create_user
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@ main_menu() {
|
||||||
while true; do
|
while true; do
|
||||||
CHOICE=$(dialog --clear --backtitle "PeppermintOS Server Configuration" \
|
CHOICE=$(dialog --clear --backtitle "PeppermintOS Server Configuration" \
|
||||||
--title "Main Menu" \
|
--title "Main Menu" \
|
||||||
--menu "Choose an option:" 20 60 12 \
|
--menu "Choose an option:" 20 60 15 \
|
||||||
1 "Configure SSH" \
|
1 "Configure SSH" \
|
||||||
2 "Configure Static IP" \
|
2 "Configure Static IP" \
|
||||||
3 "Update and Install Packages" \
|
3 "Update and Install Packages" \
|
||||||
|
@ -14,10 +14,12 @@ main_menu() {
|
||||||
6 "Create User" \
|
6 "Create User" \
|
||||||
7 "Configure Nginx" \
|
7 "Configure Nginx" \
|
||||||
8 "Configure Apache2" \
|
8 "Configure Apache2" \
|
||||||
9 "Configure MariaDB" \
|
9 "Configure Postfix" \
|
||||||
10 "Configure PostgreSQL" \
|
10 "Configure MariaDB" \
|
||||||
11 "Configure SQLite" \
|
11 "Configure PostgreSQL" \
|
||||||
12 "Exit" \
|
12 "Configure SQLite" \
|
||||||
|
13 "Configure PHP and Docker" \
|
||||||
|
14 "Exit" \
|
||||||
3>&1 1>&2 2>&3 3>&-)
|
3>&1 1>&2 2>&3 3>&-)
|
||||||
|
|
||||||
# Check if user canceled or exited
|
# Check if user canceled or exited
|
||||||
|
@ -38,10 +40,12 @@ main_menu() {
|
||||||
6) sudo ./create_user.sh ;;
|
6) sudo ./create_user.sh ;;
|
||||||
7) sudo ./configure_nginx.sh ;;
|
7) sudo ./configure_nginx.sh ;;
|
||||||
8) sudo ./configure_apache2.sh ;;
|
8) sudo ./configure_apache2.sh ;;
|
||||||
9) sudo ./configure_mariadb.sh ;;
|
9) sudo ./configure_postfix.sh ;;
|
||||||
10) sudo ./configure_postgresql.sh ;;
|
10) sudo ./configure_mariadb.sh ;;
|
||||||
11) sudo ./configure_sqlite.sh ;;
|
11) sudo ./configure_postgresql.sh ;;
|
||||||
12) clear; echo "Exiting..."; exit 0 ;;
|
12) sudo ./configure_sqlite.sh ;;
|
||||||
|
13) sudo ./configure_php_and_docker.sh ;;
|
||||||
|
14) clear; echo "Exiting..."; exit 0 ;;
|
||||||
*) dialog --msgbox "Invalid option." 10 30 ;;
|
*) dialog --msgbox "Invalid option." 10 30 ;;
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
|
@ -59,9 +63,13 @@ This tool will help you configure various aspects of your server, including:
|
||||||
6. Create User: Add new users to your system.
|
6. Create User: Add new users to your system.
|
||||||
7. Nginx: Configure the Nginx web server.
|
7. Nginx: Configure the Nginx web server.
|
||||||
8. Apache2: Configure the Apache2 web server.
|
8. Apache2: Configure the Apache2 web server.
|
||||||
9. MariaDB: Set up the MariaDB database server.
|
9. Postfix: Configure the Postfix mail server.
|
||||||
10. PostgreSQL: Set up the PostgreSQL database server.
|
10. MariaDB: Set up the MariaDB database server.
|
||||||
11. SQLite: Configure the SQLite database.
|
11. PostgreSQL: Set up the PostgreSQL database server.
|
||||||
|
12. SQLite: Configure the SQLite database.
|
||||||
|
13. PHP: Configure PHP and related settings.
|
||||||
|
14. Docker: Configure Docker and manage containers.
|
||||||
|
15. Exit: Exit the configuration tool.
|
||||||
|
|
||||||
Please select an option from the menu to begin." 20 60
|
Please select an option from the menu to begin." 20 60
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue