https://t.me/RX1948
Server : LiteSpeed
System : Linux srv104790275 5.15.0-161-generic #171-Ubuntu SMP Sat Oct 11 08:17:01 UTC 2025 x86_64
User : dewac4139 ( 1077)
PHP Version : 8.0.30
Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Directory :  /proc/thread-self/root/opt/cloud-init/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : //proc/thread-self/root/opt/cloud-init/cyberpanel.sh
#!/bin/bash
mount /dev/sr0 /mnt
password=$(cat /mnt/user-data | grep password: | sed 's/password: //')
domain=$(cat /mnt/user-data | grep hostname: | sed 's/hostname: //')
fqdn=$(cat /mnt/user-data | grep fqdn | sed 's/fqdn: //' | awk -F. '{print $(NF-1)"."$NF}')
umount /dev/sr0
# /********************************************************************
# LiteSpeed Cloud Script
# @Author:   LiteSpeed Technologies, Inc. (https://www.litespeedtech.com)
# @Copyright: (c) 2018-2020
# @Version: 1.3
# *********************************************************************/
PANEL=''
PANELPATH=''
EDITION=''
LSDIR='/usr/local/lsws'
CONTEXTPATH="${LSDIR}/Example"
LSHTTPDCFPATH="${LSDIR}/conf/httpd_config.conf"
if [ -e "${LSDIR}/conf/vhosts/wordpress/vhconf.conf" ]; then 
    LSVHCFPATH="${LSDIR}/conf/vhosts/wordpress/vhconf.conf"
else 
    LSVHCFPATH="${LSDIR}/conf/vhosts/Example/vhconf.conf"
fi
CLOUDPERINSTPATH='/var/lib/cloud/scripts/per-instance'
WPCT='noneclassified'
OSNAME=''

check_os(){
    if [ -f /etc/redhat-release ] ; then
        OSNAME=centos
    elif [ -f /etc/lsb-release ] ; then
        OSNAME=ubuntu    
    elif [ -f /etc/debian_version ] ; then
        OSNAME=debian
    fi         
}
check_os

editioncheck() 
{
  if [ -d /usr/local/CyberCP ]; then
    PANEL='cyber'
    PANELPATH='/usr/local/CyberCP'
    LSCPPATH='/usr/local/lscp'
    CPCFPATH="${PANELPATH}/CyberCP/settings.py"
    CPSQLPATH='/etc/cyberpanel/mysqlPassword'
    CPIPPATH='/etc/cyberpanel/machineIP'
  elif [ -d /usr/local/cpanel ]; then
    PANEL='cpanel'
    PANELPATH='/usr/local/cpanel'
  elif [ -d /usr/local/plesk ];then
    PANEL='plesk'
    PANELPATH='/usr/local/plesk'
  elif [ -d /usr/local/directadmin ];then
    PANEL='direct'
    PANELPATH='/usr/local/directadmin'
  fi
  if [ -e ${LSDIR}/bin/openlitespeed ]; then 
    EDITION='openlitespeed'
  elif [ -e ${LSDIR}/bin/litespeed ]; then
    EDITION='litespeed'
  fi  
}
editioncheck

providerck()
{
  if [ "$(sudo cat /sys/devices/virtual/dmi/id/product_uuid | cut -c 1-3)" = 'EC2' ] && [ -d /home/ubuntu ]; then 
    PROVIDER='aws'
  elif [ "$(dmidecode -s bios-vendor)" = 'Google' ];then
    PROVIDER='google'      
  elif [ "$(dmidecode -s bios-vendor)" = 'DigitalOcean' ];then
    PROVIDER='do'
  elif [ "$(dmidecode -s system-product-name | cut -c 1-7)" = 'Alibaba' ];then
    PROVIDER='aliyun'  
  elif [ "$(dmidecode -s system-manufacturer)" = 'Microsoft Corporation' ];then    
    PROVIDER='azure'  
  else
    PROVIDER='undefined'  
  fi
}
providerck

pathupdate()
{
  if [ "${PANEL}" = 'cyber' ]; then  
    PHPMYPATH="${PANELPATH}/public/phpmyadmin"
    WPCT="${PROVIDER}_ols_cyberpanel"
  elif [ "${PANEL}" = '' ]; then
    PHPMYPATH='/var/www/phpmyadmin'  
    DOCPATH=$(grep 'docRoot' ${LSVHCFPATH} | awk '{print $2}')
    echo ${DOCPATH} | grep 'old' > /dev/null
    if [ $? -eq 0 ]; then
      DOCPATH=${DOCPATH::-5}
      DOCPATH=${DOCPATH}/
    fi 
    if [ "$(echo ${DOCPATH} | grep '\$')" != '' ]; then
      VHROOTURL=$(echo ${DOCPATH} | sed 's/$VH_ROOT\///')
      DOCPATH="${LSDIR}/Example/${VHROOTURL}/"
    fi 
    if [ -f '/usr/bin/node' ] && [ "$(grep -n 'appType.*node' ${LSVHCFPATH})" != '' ]; then
      APPLICATION='NODE'
      WPCT="${PROVIDER}_ols_node"
    elif [ -f '/usr/bin/ruby' ] && [ "$(grep -n 'appType.*rails' ${LSVHCFPATH})" != '' ]; then
      APPLICATION='RUBY'
      WPCT="${PROVIDER}_ols_ruby"
    elif [ -f '/usr/bin/python3' ] && [ "$(grep -n 'appType.*wsgi' ${LSVHCFPATH})" != '' ]; then
      APPLICATION='PYTHON'
      CONTEXTPATH="${LSDIR}/Example/demo/demo/settings.py"
      WPCT="${PROVIDER}_ols_python"
    else
      APPLICATION='NONE'  
      WPCT="${PROVIDER}_ols_wordpress"
    fi  
  fi 
  PHPMYCFPATH="${PHPMYPATH}/config.inc.php"
  if [ -f "${DOCPATH}/wp-config.php" ]; then 
    WPCFPATH="${DOCPATH}wp-config.php"
  fi

}
pathupdate
oshmpath()
{
  if [ ${PROVIDER} = 'aws' ] && [ -d /home/ubuntu ]; then 
    HMPATH='/home/ubuntu'
    PUBIP=$(curl http://169.254.169.254/latest/meta-data/public-ipv4)
  elif [ ${PROVIDER} = 'google' ] && [ -d /home/ubuntu ]; then 
    HMPATH='/home/ubuntu'
    PUBIP=$(curl -H "Metadata-Flavor: Google" http://metadata/computeMetadata/v1/instance/network-interfaces/0/access-configs/0/external-ip)    
  elif [ ${PROVIDER} = 'aliyun' ] && [ -d /home/ubuntu ]; then
    HMPATH='/home/ubuntu'
    PUBIP=$(curl http://100.100.100.200/latest/meta-data/eipv4)
  else
    HMPATH='/root'
    #PUBIP=$(ifconfig eth0 | grep 'inet '| awk '{printf $2}')
    PUBIP=$(ip -4 route get 8.8.8.8 | awk {'print $7'} | tr -d '\n')
  fi    
}
oshmpath

doimgversionct()
{ 
  curl "https://wp.api.litespeedtech.com/v?t=image&src=${WPCT}" > /dev/null 2>&1
}

dbpasswordfile()
{
  if [ "${APPLICATION}" = 'NONE' ] || [ "${PANEL}" = 'cyber' ]; then
    if [ ! -e "${HMPATH}/.db_password" ]; then 
      touch "${HMPATH}/.db_password"
      DBPASSPATH="${HMPATH}/.db_password"
    else
      DBPASSPATH="${HMPATH}/.db_password"
      ori_root_mysql_pass=$(grep 'root_mysql_pass' ${DBPASSPATH} | awk -F'=' '{print $2}' | tr -d '"')  
    fi
  fi  
}
litespeedpasswordfile()
{
  if [ ! -e "${HMPATH}/.litespeed_password" ]; then 
    touch "${HMPATH}/.litespeed_password"
  fi
  LSPASSPATH="${HMPATH}/.litespeed_password"
}
## dovecot
APP_DOVECOT_CF='/etc/dovecot/dovecot-sql.conf.ext'
## postfix
APP_POSTFIX_DOMAINS_CF='/etc/postfix/mysql-virtual_domains.cf'
APP_POSTFIX_EMAIL2EMAIL_CF='/etc/postfix/mysql-virtual_email2email.cf'
APP_POSTFIX_FORWARDINGS_CF='/etc/postfix/mysql-virtual_forwardings.cf'
APP_POSTFIX_MAILBOXES_CF='/etc/postfix/mysql-virtual_mailboxes.cf'

if [ ${OSNAME} = 'ubuntu' ] || [ ${OSNAME} = 'debian' ]; then 
  ## pure-ftpd
  APP_PUREFTP_CF='/etc/pure-ftpd/pureftpd-mysql.conf'
  APP_PUREFTPDB_CF='/etc/pure-ftpd/db/mysql.conf'
  ## powerdns
  APP_POWERDNS_CF='/etc/powerdns/pdns.conf'
elif [ ${OSNAME} = 'centos' ]; then
  ## pure-ftpd
  APP_PUREFTP_CF='/etc/pure-ftpd/pureftpd-mysql.conf'
  APP_PUREFTPDB_CF='/etc/pure-ftpd/pureftpd-mysql.conf'
  ## powerdns
  APP_POWERDNS_CF='/etc/pdns/pdns.conf'
fi

#####################################################################
### Generate cert/key/password ###
genlswspwd()
{
  ADMIN_PASS=$(head /dev/urandom | tr -dc A-Za-z0-9 | head -c 16 ; echo '')
  ENCRYPT_PASS=$(${LSDIR}/admin/fcgi-bin/admin_php* -q ${LSDIR}/admin/misc/htpasswd.php ${ADMIN_PASS})
}

gensqlpwd(){
  root_mysql_pass=$(openssl rand -hex 24)
  wordpress_mysql_pass=$(openssl rand -hex 24)
  debian_sys_maint_mysql_pass=$(openssl rand -hex 24)
}
gensaltpwd(){
  GEN_SALT=$(</dev/urandom tr -dc 'a-zA-Z0-9!@#%^&*()-_[]{}<>~+=' | head -c 64 | sed -e 's/[\/&]/\&/g')
}
gensecretkey(){
  GEN_SECRET=$(</dev/urandom tr -dc 'a-zA-Z0-9!@#%^&*()-_[]{}<>~+=' | head -c 50 | sed -e 's/[\/&]/\&/g')
}
gen_selfsigned_cert()
{  
  # set default value
  SSL_HOSTNAME=webadmin
  csr="${SSL_HOSTNAME}.csr"
  key="${SSL_HOSTNAME}.key"
  cert="${SSL_HOSTNAME}.crt"

  # Create the certificate signing request
  openssl req -new -passin pass:password -passout pass:password -out ${csr} >/dev/null 2>&1 <<csrconf
US
NJ
Virtual
LiteSpeedCommunity
Testing
webadmin
.
.
.
csrconf
  [ -f ${csr} ] && openssl req -text -noout -in ${csr} >/dev/null 2>&1
# Create the Key
  openssl rsa -in privkey.pem -passin pass:password -passout pass:password -out ${key} >/dev/null 2>&1
# Create the Certificate
  openssl x509 -in ${csr} -out ${cert} -req -signkey ${key} -days 1000 >/dev/null 2>&1
# Remove file
  rm -f ${SSL_HOSTNAME}.csr 
  rm -f privkey.pem
}

### Tools
linechange(){
  LINENUM=$(grep -n "${1}" ${2} | cut -d: -f 1)
  if [ -n "$LINENUM" ] && [ "$LINENUM" -eq "$LINENUM" ] 2>/dev/null; then
    sed -i "${LINENUM}d" ${2}
    sed -i "${LINENUM}i${3}" ${2}
  fi  
}

### Update/Renew password/key ###
lscpd_cert_update()
{
  if [ "${PANEL}" = 'cyber' ]; then
    cp ${SSL_HOSTNAME}.crt ${LSCPPATH}/conf/cert.pem
    cp ${SSL_HOSTNAME}.key ${LSCPPATH}/conf/key.pem
  fi  
}

web_admin_update()
{
  echo "admin:${ENCRYPT_PASS}" > ${LSDIR}/admin/conf/htpasswd
  echo "admin_pass=${ADMIN_PASS}" > ${LSPASSPATH}
  mv ${SSL_HOSTNAME}.crt ${LSDIR}/admin/conf/${SSL_HOSTNAME}.crt
  mv ${SSL_HOSTNAME}.key ${LSDIR}/admin/conf/${SSL_HOSTNAME}.key
  service lsws restart
}

panel_admin_update()
{
  if [ "${PANEL}" = 'cyber' ]; then   
    python ${PANELPATH}/plogical/adminPass.py --password ${ADMIN_PASS}
  fi  
}

panel_sshkey_update()
{
  if [ "${PANEL}" = 'cyber' ]; then
    ssh-keygen -f /root/.ssh/cyberpanel -t rsa -N ''
  fi
}

panel_IP_update()
{
  if [ "${PANEL}" = 'cyber' ]; then
    echo "${PUBIP}" > ${CPIPPATH}
  fi
}

filepermission_update(){
  chmod 600 ${HMPATH}/.db_password 
  chmod 600 ${HMPATH}/.litespeed_password
}

updatesecretkey(){
  if [ "${PANEL}" = 'cyber' ]; then 
    SECRETPATH=${CPCFPATH}
  elif [ "${APPLICATION}" = 'PYTHON' ]; then  
    SECRETPATH=${CONTEXTPATH}  
  fi  
  LINENUM=$(grep -n 'SECRET_KEY' ${SECRETPATH} | cut -d: -f 1) 
  sed -i "${LINENUM}d" ${SECRETPATH}
  NEWKEY="SECRET_KEY = '${GEN_SECRET}'"
  sed -i "${LINENUM}i${NEWKEY}" ${SECRETPATH}
}

updateCPsqlpwd(){
  PREPWD=$(cat ${CPSQLPATH})
### root user 
  mysql -uroot -p${PREPWD} \
        -e "SET PASSWORD FOR 'root'@'localhost' = PASSWORD('${root_mysql_pass}');"

    for LINENUM in $(grep -n "'PASSWORD':" ${CPCFPATH} | cut -d: -f 1); 
      do 
        NEWDBPWD="        'PASSWORD': '${root_mysql_pass}',"
        sed -i "${LINENUM}s/.*/${NEWDBPWD}/" ${CPCFPATH}
      done
    sed -i "1s/.*/${root_mysql_pass}/" ${CPSQLPATH}
### cyberpanel user    
    mysql -uroot -p${root_mysql_pass} \
        -e "SET PASSWORD FOR 'cyberpanel'@'localhost' = PASSWORD('${root_mysql_pass}');"

### update cyberpanel to applications conf files
#### dovecot
  NEWKEY="connect = host=localhost dbname=cyberpanel user=cyberpanel password=${root_mysql_pass} port=3306"
  linechange 'password=' ${APP_DOVECOT_CF} "${NEWKEY}"

#### postfix
  NEWKEY="password = ${root_mysql_pass}"
  linechange 'password =' ${APP_POSTFIX_DOMAINS_CF} "${NEWKEY}"
  linechange 'password =' ${APP_POSTFIX_EMAIL2EMAIL_CF} "${NEWKEY}"
  linechange 'password =' ${APP_POSTFIX_FORWARDINGS_CF} "${NEWKEY}"
  linechange 'password =' ${APP_POSTFIX_MAILBOXES_CF} "${NEWKEY}"

#### pure-ftpd
  NEWKEY="MYSQLPassword ${root_mysql_pass}"
  linechange 'MYSQLPassword' ${APP_PUREFTP_CF} "${NEWKEY}"
  linechange 'MYSQLPassword' ${APP_PUREFTPDB_CF} "${NEWKEY}"
  if [ "ubuntu" = 'ubuntu' ] || [ "ubuntu" = 'debian' ]; then 
      systemctl restart pure-ftpd-mysql.service
  elif [ "ubuntu" = 'centos' ]; then 
      service pure-ftpd restart
  fi    
  
#### powerdns
  NEWKEY="gmysql-password=${root_mysql_pass}"
  linechange 'gmysql-password' ${APP_POWERDNS_CF} "${NEWKEY}"

### Apply settings
    service lscpd restart
}

renewwppwd(){
  NEWDBPWD="define('DB_PASSWORD', '${wordpress_mysql_pass}');"
  linechange 'DB_PASSWORD' ${WPCFPATH} "${NEWDBPWD}"
}


### Listener '*' to 'IP'
replacelitenerip(){
#for LINENUM in $(grep -n 'map.*Example.*\*' ${LSHTTPDCFPATH} | cut -d: -f 1)
for LINENUM in $(grep -n 'map' ${LSHTTPDCFPATH} | cut -d: -f 1)
  do
    NEWDBPWD="  map                     wordpress ${PUBIP}"
#    NEWDBPWD="  map                     Example ${PUBIP}"
    sed -i "${LINENUM}s/.*/${NEWDBPWD}/" ${LSHTTPDCFPATH}
  done  
}

updatesqlpwd(){
mysql -uroot -p${ori_root_mysql_pass} \
      -e "SET PASSWORD FOR 'root'@'localhost' = PASSWORD('${root_mysql_pass}');"
mysql -uroot -p${root_mysql_pass} \
      -e "SET PASSWORD FOR 'wordpress'@'localhost' = PASSWORD('${wordpress_mysql_pass}');"
mysql -uroot -p${root_mysql_pass} \
      -e "GRANT ALL PRIVILEGES ON wordpress.* TO wordpress@localhost"
#mysql -uroot -p${root_mysql_pass} \
#      -e "ALTER USER 'debian-sys-maint'@'localhost' IDENTIFIED BY '${debian_sys_maint_mysql_pass}'"

#cat > /etc/mysql/debian.cnf <<EOM
### Automatically generated for Debian scripts. DO NOT TOUCH!
#[client]
#host     = localhost
#user     = debian-sys-maint
#password = ${debian_sys_maint_mysql_pass}
#socket   = /var/run/mysqld/mysqld.sock
#[mysql_upgrade]
#host     = localhost
#user     = debian-sys-maint
#password = ${debian_sys_maint_mysql_pass}
#socket   = /var/run/mysqld/mysqld.sock
#EOM
}

renewwpsalt(){
# WordPress Salts
  for KEY in "'AUTH_KEY'" "'SECURE_AUTH_KEY'" "'LOGGED_IN_KEY'" "'NONCE_KEY'" "'AUTH_SALT'" "'SECURE_AUTH_SALT'" "'LOGGED_IN_SALT'" "'NONCE_SALT'"
  do
    LINENUM=$(grep -n "${KEY}" ${WPCFPATH} | cut -d: -f 1)
    sed -i "${LINENUM}d" ${WPCFPATH}
    NEWSALT="define(${KEY}, '${GEN_SALT}');"
    sed -i "${LINENUM}i${NEWSALT}" ${WPCFPATH}
  done
}

renewblowfish(){
#phpmyadmin blowfish
  LINENUM=$(grep -n "'blowfish_secret'" ${PHPMYCFPATH} | cut -d: -f 1)
  sed -i "${LINENUM}d" ${PHPMYCFPATH}
  NEW_SALT="\$cfg['blowfish_secret'] = '${GEN_SALT}';"
  sed -i "${LINENUM}i${NEW_SALT}" ${PHPMYCFPATH}
}

### Update File###
updaterootpwdfile(){
  rm -f ${DBPASSPATH}
  cat >> ${DBPASSPATH} <<EOM
root_mysql_pass="${root_mysql_pass}"
EOM
}

updateCPpwdfile(){
  rm -f ${DBPASSPATH}
  cat >> ${DBPASSPATH} <<EOM
root_mysql_pass="${root_mysql_pass}"
cyberpanel_mysql_pass="${root_mysql_pass}"
EOM
}

updatepwdfile(){
  rm -f ${DBPASSPATH}
  cat >> ${DBPASSPATH} <<EOM
root_mysql_pass="${root_mysql_pass}"
wordpress_mysql_pass="${wordpress_mysql_pass}"
EOM
}

### Update software
upgrade_cyberpanel() {
    if [ -e /tmp/upgrade.py ]; then
      sudo rm -rf /tmp/upgrade.py
    fi
    wget --quiet http://cyberpanel.net/upgrade.py
    sudo chmod 755 /tmp/upgrade.py
    sudo python /tmp/upgrade.py
}

###prevent hijacking
afterssh(){
  NEWKEY="docRoot                   ${DOCPATH}"
  linechange 'docRoot' ${LSVHCFPATH} "${NEWKEY}"

  if [ $(grep 'R.*/index.html.*R' ${LSVHCFPATH} | wc -l) -ne '0' ]; then
    LINENUM=$(grep -n 'R.*/index.html.*R' ${LSVHCFPATH} | tail -1 | cut -d: -f 1)
    sudo sed -i "${LINENUM}d" ${LSVHCFPATH}
  fi
  if [ ${PROVIDER} = 'google' ]; then 
      ${HMPATH}='/home/ubuntu'
  fi    
  sudo sed -i '/afterssh.sh/d' /etc/profile
  sudo service lsws restart
}

aftersshsetup(){
  if [ ${PROVIDER} = 'google' ]; then 
      ${HMPATH}='/home/ubuntu'
  fi   
  if [ -e '/opt/afterssh.sh' ]; then
    sudo rm -rf /opt/afterssh.sh
  fi
 
  sudo cat << EOM > /opt/afterssh.sh
#!/bin/bash
source ${CLOUDPERINSTPATH}/per-instance.sh >> /dev/null 2>&1
afterssh
deleteinstancesh -f
sudo rm -f '${HMPATH}/afterssh.sh'
EOM
sudo chmod a+x ${HMPATH}/afterssh.sh
}

beforessh(){
  if [ -d ${DOCPATH::-1}.old ]; then
    NEWKEY="docRoot                   ${DOCPATH::-1}.old/"
    linechange 'docRoot' ${LSVHCFPATH} "${NEWKEY}"
  fi

  if [ $(grep 'R.*/index.html.*R' ${LSVHCFPATH} | wc -l) -eq '0' ]; then
    NEWKEY='RewriteRule ^(.*)$ http://%{SERVER_NAME}/index.html [R,L]'
    LINENUM=$(grep -n '}' ${LSVHCFPATH} | tail -1 | cut -d: -f 1)
    sed -i "${LINENUM}i${NEWKEY}" ${LSVHCFPATH}
  fi  
  sudo service lsws restart
  echo "/opt/afterssh.sh" >> /etc/profile
  echo "/opt/domainsetup.sh" >> /etc/profile
}

deleteinstancesh(){
  if [ ! -f ${HMPATH}/afterssh.sh ]; then
    sudo rm -f ${CLOUDPERINSTPATH}/per-instance.sh
  fi
  if [ "$1" = '-f' ]; then 
    sudo rm -f ${CLOUDPERINSTPATH}/per-instance.sh
  fi
}

addtohosts(){
  if [ -d /home/ubuntu ]; then
    NEWKEY="127.0.0.1 localhost ubuntu"
    linechange '127.0.0.1' /etc/hosts ""
  fi
}

#Security
installfirewalld(){
  FWDCMD='/usr/bin/firewall-cmd --permanent --zone=public --add-rich-rule'

  /usr/bin/apt-get install firewalld -y
  /bin/systemctl enable firewalld

  ${FWDCMD}='rule family="ipv4" source address="0.0.0.0/0" port protocol="tcp" port="48090" accept'
  ${FWDCMD}='rule family="ipv6" port protocol="tcp" port="48090" accept'
  ${FWDCMD}='rule family="ipv4" source address="0.0.0.0/0" port protocol="tcp" port="80" accept'
  ${FWDCMD}='rule family="ipv6" port protocol="tcp" port="80" accept'
  ${FWDCMD}='rule family="ipv4" source address="0.0.0.0/0" port protocol="tcp" port="443" accept'
  ${FWDCMD}='rule family="ipv6" port protocol="tcp" port="443" accept'
  /usr/bin/firewall-cmd --add-service=ssh --permanent
  /usr/bin/firewall-cmd --add-service=ftp --permanent
  ${FWDCMD}='rule family="ipv4" source address="0.0.0.0/0" port protocol="tcp" port="25" accept'
  ${FWDCMD}='rule family="ipv6" port protocol="tcp" port="25" accept'
  ${FWDCMD}='rule family="ipv4" source address="0.0.0.0/0" port protocol="tcp" port="587" accept'
  ${FWDCMD}='rule family="ipv6" port protocol="tcp" port="587" accept'
  ${FWDCMD}='rule family="ipv4" source address="0.0.0.0/0" port protocol="tcp" port="465" accept'
  ${FWDCMD}='rule family="ipv6" port protocol="tcp" port="465" accept'
  ${FWDCMD}='rule family="ipv4" source address="0.0.0.0/0" port protocol="tcp" port="110" accept'
  ${FWDCMD}='rule family="ipv6" port protocol="tcp" port="110" accept'
  ${FWDCMD}='rule family="ipv4" source address="0.0.0.0/0" port protocol="tcp" port="143" accept'
  ${FWDCMD}='rule family="ipv6" port protocol="tcp" port="143" accept'
  ${FWDCMD}='rule family="ipv4" source address="0.0.0.0/0" port protocol="tcp" port="993" accept'
  ${FWDCMD}='rule family="ipv6" port protocol="tcp" port="993" accept'
  ${FWDCMD}='rule family="ipv4" source address="0.0.0.0/0" port protocol="udp" port="53" accept'
  ${FWDCMD}='rule family="ipv6" port protocol="udp" port="53" accept'
  ${FWDCMD}='rule family="ipv4" source address="0.0.0.0/0" port protocol="tcp" port="53" accept'
  ${FWDCMD}='rule family="ipv6" port protocol="tcp" port="53" accept'
  ${FWDCMD}='rule family="ipv4" source address="0.0.0.0/0" port protocol="tcp" port="40110-40210" accept'
  ${FWDCMD}='rule family="ipv6" port protocol="tcp" port="40110-40210" accept'

  /usr/bin/firewall-cmd --reload
}

check_version() {
  VERSION_1=$1
  OPTION=$2
  VERSION_2=$3

  VERSION_1=${VERSION_1//./ }
  VERSION_2=${VERSION_2//./ }

  VERSION_1_MAJOR=$(awk '{print $1}' <<< "${VERSION_1}")
  VERSION_1_MINOR=$(awk '{print $2}' <<< "${VERSION_1}")
  VERSION_1_PATCH=$(awk '{print $3}' <<< "${VERSION_1}")

  VERSION_2_MAJOR=$(awk '{print $1}' <<< "${VERSION_2}")
  VERSION_2_MINOR=$(awk '{print $2}' <<< "${VERSION_2}")
  VERSION_2_PATCH=$(awk '{print $3}' <<< "${VERSION_2}")

  if [[ "${OPTION}" == '>' ]]; then
    if [[ "${VERSION_1_MAJOR}" -gt "${VERSION_2_MAJOR}" ]] || [[ "${VERSION_1_MINOR}" -gt "${VERSION_2_MINOR}" ]] || [[ "${VERSION_1_PATCH}" -gt "${VERSION_2_PATCH}" ]]; then
      return 0
    fi
  elif [[ "${OPTION}" == '<' ]]; then
    if [[ "${VERSION_1_MAJOR}" -lt "${VERSION_2_MAJOR}" ]] || [[ "${VERSION_1_MINOR}" -lt "${VERSION_2_MINOR}" ]] || [[ "${VERSION_1_PATCH}" -lt "${VERSION_2_PATCH}" ]]; then
      return 0
    fi
  elif [[ "${OPTION}" == '=' ]]; then
    if [[ "${VERSION_1_MAJOR}" -eq "${VERSION_2_MAJOR}" ]] && [[ "${VERSION_1_MINOR}" -eq "${VERSION_2_MINOR}" ]] && [[ "${VERSION_1_PATCH}" -eq "${VERSION_2_PATCH}" ]]; then
      return 0
    fi
  fi

  return 1
}

update_phpmyadmin() {
  INSTALL_PATH="${PHPMYPATH}"  
  LOCAL_VERSION=$(cat ${INSTALL_PATH}/ChangeLog | head -n4 | grep -Eo '[0-9]+\.[0-9]+\.[0-9]')
  LATEST_VERSION=$(curl -s https://www.phpmyadmin.net/home_page/version.php | head -n1)
  URL="https://files.phpmyadmin.net/phpMyAdmin/${LATEST_VERSION}/phpMyAdmin-${LATEST_VERSION}-all-languages.zip"

  if check_version "${LOCAL_VERSION}" '<' "${LATEST_VERSION}"; then
    cd /tmp/
    if [ -e "phpMyAdmin-${LATEST_VERSION}-all-languages.zip" ]; then
      sudo rm -f phpMyAdmin-${LATEST_VERSION}-all-languages.zip
    fi
    curl -Os ${URL}
    unzip -qq phpMyAdmin-${LATEST_VERSION}-all-languages.zip
    cp -pr phpMyAdmin-${LATEST_VERSION}-all-languages/* ${INSTALL_PATH}/
    if [ "${PANEL}" = 'cyber' ]; then
      USER='root'
      GROUP='root'
      chown -R ${USER}:${GROUP} ${INSTALL_PATH}/
     else
      USER='www-data'
      GROUP='www-data'      
      chown -R ${USER}:${GROUP} ${INSTALL_PATH}/  
    fi  
    sudo rm -rf /tmp/phpMyAdmin-${LATEST_VERSION}-all-languages* 
  fi
}

set_tmp() {
  if ! $(cat /proc/mounts | grep -q '/dev/loop0 /tmp'); then
    # Create Loop device
    dd if=/dev/zero of=/usr/.tempdisk bs=100M count=15
    mkfs.ext4 /usr/.tempdisk

    # backup data
    mkdir -p /usr/.tmpbak/
    cp -pr /tmp/* /usr/.tmpbak/

    # mount loop
    mount -o loop,rw,nodev,nosuid,noexec,nofail /usr/.tempdisk /tmp

    # make sure permissions are correct
    chmod 1777 /tmp

    # move tmp files back
    cp -pr /usr/.tmpbak/* /tmp/
    rm -rf /usr/.tmpbak

    # bind mount var/tmp
    mount --bind /tmp /var/tmp

    # setup fstab entries
    echo '/usr/.tempdisk /tmp ext4 loop,rw,noexec,nosuid,nodev,nofail 0 0' >> /etc/fstab
    echo '/tmp /var/tmp none bind 0 0' >> /etc/fstab
  fi
}

maincloud(){
    litespeedpasswordfile
    doimgversionct
    genlswspwd
    addtohosts
    gen_selfsigned_cert
    lscpd_cert_update
    web_admin_update
    dbpasswordfile
    gensqlpwd
    gensaltpwd
    gensecretkey
    set_tmp
  if [ "${PANEL}" = 'cyber' ]; then
    #dbpasswordfile
    panel_admin_update
    panel_sshkey_update
    panel_IP_update
    update_phpmyadmin
    updateCPsqlpwd
    updatesecretkey
    updateCPpwdfile
    filepermission_update
    renewblowfish
    if [ "${OSNAME}" != 'centos' ]; then 
        installfirewalld
    fi    
  elif [ "${APPLICATION}" = 'PYTHON' ]; then
    updatesecretkey
  elif [ "${APPLICATION}" = 'NONE' ]; then
    dbpasswordfile
    renewwppwd
    updatesqlpwd
    updatepwdfile
    replacelitenerip
    renewwpsalt
    update_phpmyadmin
    renewblowfish
    beforessh
    aftersshsetup
  fi
}
maincloud
####################################################################################
/usr/bin/sed -i "s/password.\+/password=${root_mysql_pass}/g" /root/.my.cnf
echo $password > /etc/cyberpanel/adminPass
/usr/bin/adminPass $password

#SSL
SSL_URL=https://sh.$fqdn/cloud-init/ssl/$fqdn.key
STATUS_CODE=$(curl --write-out %{http_code} -sk --output /dev/null ${SSL_URL})
if [[ "$STATUS_CODE" == 200 ]]; then
curl -sk https://sh.$fqdn/cloud-init/ssl/$fqdn.key > /usr/local/lscp/conf/key.pem
curl -sk https://sh.$fqdn/cloud-init/ssl/$fqdn.crt > /usr/local/lscp/conf/cert.pem
systemctl restart lscpd
else
  exit
fi
/usr/bin/curl  https://sh.ultasrv.net/motd > /etc/motd
sh <(curl https://raw.githubusercontent.com/usmannasir/cyberpanel/stable/preUpgrade.sh)

https://t.me/RX1948 - 2025