mirror of
https://github.com/stefanpejcic/openpanel
synced 2025-06-26 18:28:26 +00:00
Update INSTALL.sh
This commit is contained in:
parent
6e4952f263
commit
2f5f9577d3
68
INSTALL.sh
68
INSTALL.sh
@ -48,6 +48,7 @@ OVERLAY=false
|
|||||||
IPSETS=true
|
IPSETS=true
|
||||||
SET_HOSTNAME_NOW=false
|
SET_HOSTNAME_NOW=false
|
||||||
SELFHOSTED_SCREENSHOTS=false
|
SELFHOSTED_SCREENSHOTS=false
|
||||||
|
SEND_EMAIL_AFTER_INSTALL=false
|
||||||
|
|
||||||
# Paths
|
# Paths
|
||||||
LOG_FILE="openpanel_install.log"
|
LOG_FILE="openpanel_install.log"
|
||||||
@ -334,6 +335,7 @@ parse_args() {
|
|||||||
echo "Available options:"
|
echo "Available options:"
|
||||||
echo " --hostname=<hostname> Set the hostname."
|
echo " --hostname=<hostname> Set the hostname."
|
||||||
echo " --version=<version> Set a custom OpenPanel version to be installed."
|
echo " --version=<version> Set a custom OpenPanel version to be installed."
|
||||||
|
echo " --email=<stefan@example.net> Set email address to receive email with admin credentials and future notifications."
|
||||||
echo " --skip-requirements Skip the requirements check."
|
echo " --skip-requirements Skip the requirements check."
|
||||||
echo " --skip-panel-check Skip checking if existing panels are installed."
|
echo " --skip-panel-check Skip checking if existing panels are installed."
|
||||||
echo " --skip-apt-update Skip the APT update."
|
echo " --skip-apt-update Skip the APT update."
|
||||||
@ -422,6 +424,11 @@ parse_args() {
|
|||||||
CUSTOM_VERSION=true
|
CUSTOM_VERSION=true
|
||||||
version="${1#*=}"
|
version="${1#*=}"
|
||||||
;;
|
;;
|
||||||
|
--email=*)
|
||||||
|
# Extract path after "--email="
|
||||||
|
SEND_EMAIL_AFTER_INSTALL=true
|
||||||
|
EMAIL="${1#*=}"
|
||||||
|
;;
|
||||||
-h|--help)
|
-h|--help)
|
||||||
show_help
|
show_help
|
||||||
exit 0
|
exit 0
|
||||||
@ -1086,7 +1093,7 @@ set_system_cronjob(){
|
|||||||
|
|
||||||
echo "Setting cronjobs.."
|
echo "Setting cronjobs.."
|
||||||
|
|
||||||
mv /usr/local/panel/conf/cron /etc/cron.d/openpanel
|
mv ${OPENPANEL_DIR}conf/cron /etc/cron.d/openpanel
|
||||||
chown root:root /etc/cron.d/openpanel
|
chown root:root /etc/cron.d/openpanel
|
||||||
chmod 0600 /etc/cron.d/openpanel
|
chmod 0600 /etc/cron.d/openpanel
|
||||||
}
|
}
|
||||||
@ -1217,6 +1224,57 @@ set_custom_hostname(){
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
set_email_address_and_email_admin_logins(){
|
||||||
|
if [ "$SEND_EMAIL_AFTER_INSTALL" = true ]; then
|
||||||
|
# Check if the provided email is valid
|
||||||
|
if [[ $EMAIL =~ ^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$ ]]; then
|
||||||
|
echo "Setting email address $EMAIL for notifications"
|
||||||
|
opencli config update email "$EMAIL"
|
||||||
|
# Send an email alert
|
||||||
|
|
||||||
|
generate_random_token_one_time_only() {
|
||||||
|
local config_file="${OPENPANEL_DIR}conf/panel.config"
|
||||||
|
TOKEN_ONE_TIME="$(tr -dc 'a-zA-Z0-9' < /dev/urandom | head -c 64)"
|
||||||
|
local new_value="mail_security_token=$TOKEN_ONE_TIME"
|
||||||
|
sed -i "s|^mail_security_token=.*$|$new_value|" "${OPENPANEL_DIR}conf/panel.config"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
email_notification() {
|
||||||
|
local title="$1"
|
||||||
|
local message="$2"
|
||||||
|
generate_random_token_one_time_only
|
||||||
|
TRANSIENT=$(awk -F'=' '/^mail_security_token/ {print $2}' "${OPENPANEL_DIR}conf/panel.config")
|
||||||
|
|
||||||
|
SSL=$(awk -F'=' '/^ssl/ {print $2}' "${OPENPANEL_DIR}conf/panel.config")
|
||||||
|
|
||||||
|
# Determine protocol based on SSL configuration
|
||||||
|
if [ "$SSL" = "yes" ]; then
|
||||||
|
PROTOCOL="https"
|
||||||
|
else
|
||||||
|
PROTOCOL="http"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Send email using appropriate protocol
|
||||||
|
curl -k -X POST "$PROTOCOL://127.0.0.1:2087/send_email" -F "transient=$TRANSIENT" -F "recipient=$EMAIL" -F "subject=$title" -F "body=$message"
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
server_hostname=$(hostname)
|
||||||
|
email_notification "OpenPanel successfully installed on [ $server_hostname ]" "OpenAdmin URL: http://$server_hostname:2087/ | username: admin | password: $admin_password"
|
||||||
|
else
|
||||||
|
echo "Address provided: $EMAIL is not a valid email address. Admin login credentials and future notifications will not be sent."
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
generate_and_set_ssl_for_panels() {
|
generate_and_set_ssl_for_panels() {
|
||||||
if [ -z "$SKIP_SSL" ]; then
|
if [ -z "$SKIP_SSL" ]; then
|
||||||
echo "Checking if SSL can be generated for the server hostname.."
|
echo "Checking if SSL can be generated for the server hostname.."
|
||||||
@ -1317,6 +1375,14 @@ success_message() {
|
|||||||
echo "Password: $admin_password"
|
echo "Password: $admin_password"
|
||||||
echo " "
|
echo " "
|
||||||
print_space_and_line
|
print_space_and_line
|
||||||
|
|
||||||
|
# added in 0.2.0
|
||||||
|
|
||||||
|
# this will be removed for production
|
||||||
|
wget https://gist.github.com/stefanpejcic/620de2557f7a69aa65a60135dc8d298c/raw -O /usr/local/admin/templates/system/email_template.html
|
||||||
|
|
||||||
|
# email to user the new logins
|
||||||
|
set_email_address_and_email_admin_logins
|
||||||
|
|
||||||
# Redirect again stdout and stderr to the log file
|
# Redirect again stdout and stderr to the log file
|
||||||
exec > >(tee -a "$LOG_FILE")
|
exec > >(tee -a "$LOG_FILE")
|
||||||
|
Loading…
Reference in New Issue
Block a user