CinemaPress/cinemapress.sh

5023 lines
228 KiB
Bash
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
R='\033[0;31m'
G='\033[0;32m'
Y='\033[0;33m'
C='\033[1;34m'
B='\033[0;36m'
S='\033[0;90m'
NC='\033[0m'
OPTION=${1:-}
GIT_SERVER="github.com"
CP_VER="5.0.0"
PRC_=0
CP_DOMAIN=${CP_DOMAIN:-}
CP_LANG=${CP_LANG:-}
CP_THEME=${CP_THEME:-}
CP_PASSWD=${CP_PASSWD:-}
CP_MIRROR=${CP_MIRROR:-}
CP_KEY=${CP_KEY:-}
CLOUDFLARE_EMAIL=${CLOUDFLARE_EMAIL:-}
CLOUDFLARE_API_KEY=${CLOUDFLARE_API_KEY:-}
MEGA_EMAIL=${MEGA_EMAIL:-}
MEGA_PASSWORD=${MEGA_PASSWORD:-}
FTP_USERNAME=${FTP_USERNAME:-}
FTP_PASSWORD=${FTP_PASSWORD:-}
FTP_HOSTNAME=${FTP_HOSTNAME:-}
FTP_NAME=${FTP_NAME:-}
CP_DOMAIN_=$(echo "${CP_DOMAIN}" | sed -r "s/[^A-Za-z0-9]/_/g")
CP_MIRROR_=$(echo "${CP_DOMAIN}" | sed -r "s/[^A-Za-z0-9]/_/g")
CP_SPB=""
CP_IP="domain"
EXTERNAL_PORT=""
EXTERNAL_DOCKER=""
CP_OS="`awk '/^ID=/' /etc/*os-release | awk -F'=' '{ print tolower($2) }'`"
CP_MEM=$(free -m | grep -oP '\d+' | sed '1!d')
if echo "${CP_MEM}" | grep -qE '^[0-9]+$'; then
DOCKER_MEM=("--memory" "$(( CP_MEM / 2 ))m")
else
DOCKER_MEM=()
fi
post_commands() {
LOCAL_DOMAIN=${1:-${CP_DOMAIN}}
LOCAL_DOMAIN_=$(echo "${LOCAL_DOMAIN}" | sed -r "s/[^A-Za-z0-9]/_/g")
if [ "$(grep "%d_%m_%Y" /etc/crontab)" != "" ]; then
sed -i "s/%d_%m_%Y/\\\%d_\\\%m_\\\%Y/g" /etc/crontab &> /dev/null
fi
if [ "$(grep "${LOCAL_DOMAIN}_autostart" /etc/crontab)" = "" ] \
&& [ -f "/home/${LOCAL_DOMAIN}/process.json" ] \
&& [ -f "/home/${LOCAL_DOMAIN}/app.js" ]; then
echo -e "\n" >>/etc/crontab
echo "# ----- ${LOCAL_DOMAIN}_autostart --------------------------------------" >>/etc/crontab
echo "@reboot root /usr/bin/cinemapress autostart \"${LOCAL_DOMAIN}\" >>\"/home/${LOCAL_DOMAIN}/log/autostart_\$(date '+\%d_\%m_\%Y').log\" 2>&1" >>/etc/crontab
echo "# ----- ${LOCAL_DOMAIN}_autostart --------------------------------------" >>/etc/crontab
fi
if [ "$(grep "${LOCAL_DOMAIN}_renew" /etc/crontab)" = "" ] \
&& [ -d "/home/${LOCAL_DOMAIN}/config/production/nginx/ssl.d/live/${LOCAL_DOMAIN}/" ]; then
sed -i "s/.*${LOCAL_DOMAIN}_ssl.*//g" /etc/crontab &> /dev/null
sed -i "s/.*${LOCAL_DOMAIN}\/config\/production\/nginx\/ssl\.d.*//g" /etc/crontab &> /dev/null
echo -e "\n" >>/etc/crontab
echo "# ----- ${LOCAL_DOMAIN}_renew --------------------------------------" >>/etc/crontab
echo "0 23 * * * root /usr/bin/cinemapress renew \"${LOCAL_DOMAIN}\" >>\"/home/${LOCAL_DOMAIN}/log/renew_\$(date '+\%d_\%m_\%Y').log\" 2>&1" >>/etc/crontab
echo "# ----- ${LOCAL_DOMAIN}_renew --------------------------------------" >>/etc/crontab
fi
}
docker_install() {
if [ "${CP_OS}" != "alpine" ] && [ "${CP_OS}" != "\"alpine\"" ]; then
if [ "`basename "${0}"`" != "cinemapress" ] || [ "${1}" != "" ]; then
echo ""; echo -n "☐ Downloading cinemapress.sh ...";
wget -qO /usr/bin/cinemapress https://gitlab.com/CinemaPress/CinemaPress/raw/master/cinemapress.sh -o /dev/null && \
chmod +x /usr/bin/cinemapress
echo -e "\\r${G}✓ Downloading cinemapress.sh ...${NC}"
echo -n "☐ Installing packages ..."
if [ "${CP_OS}" = "debian" ] || [ "${CP_OS}" = "\"debian\"" ]; then
DEBIAN_FRONTEND=noninteractive apt-get -y -qq update >>/var/log/docker_install_"$(date '+%d_%m_%Y')".log 2>&1
DEBIAN_FRONTEND=noninteractive apt-get -y -qq install sudo >>/var/log/docker_install_"$(date '+%d_%m_%Y')".log 2>&1
DEBIAN_FRONTEND=noninteractive apt-get -y -qq install wget >>/var/log/docker_install_"$(date '+%d_%m_%Y')".log 2>&1
DEBIAN_FRONTEND=noninteractive apt-get -y -qq install curl >>/var/log/docker_install_"$(date '+%d_%m_%Y')".log 2>&1
DEBIAN_FRONTEND=noninteractive apt-get -y -qq install nano >>/var/log/docker_install_"$(date '+%d_%m_%Y')".log 2>&1
DEBIAN_FRONTEND=noninteractive apt-get -y -qq install htop >>/var/log/docker_install_"$(date '+%d_%m_%Y')".log 2>&1
DEBIAN_FRONTEND=noninteractive apt-get -y -qq install lsb-release >>/var/log/docker_install_"$(date '+%d_%m_%Y')".log 2>&1
DEBIAN_FRONTEND=noninteractive apt-get -y -qq install ca-certificates >>/var/log/docker_install_"$(date '+%d_%m_%Y')".log 2>&1
DEBIAN_FRONTEND=noninteractive apt-get -y -qq install git-core >>/var/log/docker_install_"$(date '+%d_%m_%Y')".log 2>&1
DEBIAN_FRONTEND=noninteractive apt-get -y -qq install openssl >>/var/log/docker_install_"$(date '+%d_%m_%Y')".log 2>&1
DEBIAN_FRONTEND=noninteractive apt-get -y -qq install net-tools >>/var/log/docker_install_"$(date '+%d_%m_%Y')".log 2>&1
DEBIAN_FRONTEND=noninteractive apt-get -y -qq install netcat >>/var/log/docker_install_"$(date '+%d_%m_%Y')".log 2>&1
DEBIAN_FRONTEND=noninteractive apt-get -y -qq install cron >>/var/log/docker_install_"$(date '+%d_%m_%Y')".log 2>&1
DEBIAN_FRONTEND=noninteractive apt-get -y -qq install zip >>/var/log/docker_install_"$(date '+%d_%m_%Y')".log 2>&1
DEBIAN_FRONTEND=noninteractive apt-get -y -qq install gzip >>/var/log/docker_install_"$(date '+%d_%m_%Y')".log 2>&1
DEBIAN_FRONTEND=noninteractive apt-get -y -qq install bzip2 >>/var/log/docker_install_"$(date '+%d_%m_%Y')".log 2>&1
DEBIAN_FRONTEND=noninteractive apt-get -y -qq install unzip >>/var/log/docker_install_"$(date '+%d_%m_%Y')".log 2>&1
DEBIAN_FRONTEND=noninteractive apt-get -y -qq install gcc >>/var/log/docker_install_"$(date '+%d_%m_%Y')".log 2>&1
DEBIAN_FRONTEND=noninteractive apt-get -y -qq install make >>/var/log/docker_install_"$(date '+%d_%m_%Y')".log 2>&1
DEBIAN_FRONTEND=noninteractive apt-get -y -qq install libssl-dev >>/var/log/docker_install_"$(date '+%d_%m_%Y')".log 2>&1
DEBIAN_FRONTEND=noninteractive apt-get -y -qq install locales >>/var/log/docker_install_"$(date '+%d_%m_%Y')".log 2>&1
DEBIAN_FRONTEND=noninteractive apt-get -y -qq install lsof >>/var/log/docker_install_"$(date '+%d_%m_%Y')".log 2>&1
elif [ "${CP_OS}" = "ubuntu" ] || [ "${CP_OS}" = "\"ubuntu\"" ]; then
DEBIAN_FRONTEND=noninteractive apt-get -y -qq update >>/var/log/docker_install_"$(date '+%d_%m_%Y')".log 2>&1
DEBIAN_FRONTEND=noninteractive apt-get -y -qq install sudo >>/var/log/docker_install_"$(date '+%d_%m_%Y')".log 2>&1
DEBIAN_FRONTEND=noninteractive apt-get -y -qq install wget >>/var/log/docker_install_"$(date '+%d_%m_%Y')".log 2>&1
DEBIAN_FRONTEND=noninteractive apt-get -y -qq install curl >>/var/log/docker_install_"$(date '+%d_%m_%Y')".log 2>&1
DEBIAN_FRONTEND=noninteractive apt-get -y -qq install nano >>/var/log/docker_install_"$(date '+%d_%m_%Y')".log 2>&1
DEBIAN_FRONTEND=noninteractive apt-get -y -qq install htop >>/var/log/docker_install_"$(date '+%d_%m_%Y')".log 2>&1
DEBIAN_FRONTEND=noninteractive apt-get -y -qq install lsb-release >>/var/log/docker_install_"$(date '+%d_%m_%Y')".log 2>&1
DEBIAN_FRONTEND=noninteractive apt-get -y -qq install ca-certificates >>/var/log/docker_install_"$(date '+%d_%m_%Y')".log 2>&1
DEBIAN_FRONTEND=noninteractive apt-get -y -qq install git-core >>/var/log/docker_install_"$(date '+%d_%m_%Y')".log 2>&1
DEBIAN_FRONTEND=noninteractive apt-get -y -qq install openssl >>/var/log/docker_install_"$(date '+%d_%m_%Y')".log 2>&1
DEBIAN_FRONTEND=noninteractive apt-get -y -qq install netcat >>/var/log/docker_install_"$(date '+%d_%m_%Y')".log 2>&1
DEBIAN_FRONTEND=noninteractive apt-get -y -qq install net-tools >>/var/log/docker_install_"$(date '+%d_%m_%Y')".log 2>&1
DEBIAN_FRONTEND=noninteractive apt-get -y -qq install cron >>/var/log/docker_install_"$(date '+%d_%m_%Y')".log 2>&1
DEBIAN_FRONTEND=noninteractive apt-get -y -qq install zip >>/var/log/docker_install_"$(date '+%d_%m_%Y')".log 2>&1
DEBIAN_FRONTEND=noninteractive apt-get -y -qq install gzip >>/var/log/docker_install_"$(date '+%d_%m_%Y')".log 2>&1
DEBIAN_FRONTEND=noninteractive apt-get -y -qq install bzip2 >>/var/log/docker_install_"$(date '+%d_%m_%Y')".log 2>&1
DEBIAN_FRONTEND=noninteractive apt-get -y -qq install unzip >>/var/log/docker_install_"$(date '+%d_%m_%Y')".log 2>&1
DEBIAN_FRONTEND=noninteractive apt-get -y -qq install gcc >>/var/log/docker_install_"$(date '+%d_%m_%Y')".log 2>&1
DEBIAN_FRONTEND=noninteractive apt-get -y -qq install make >>/var/log/docker_install_"$(date '+%d_%m_%Y')".log 2>&1
DEBIAN_FRONTEND=noninteractive apt-get -y -qq install libssl-dev >>/var/log/docker_install_"$(date '+%d_%m_%Y')".log 2>&1
DEBIAN_FRONTEND=noninteractive apt-get -y -qq install locales >>/var/log/docker_install_"$(date '+%d_%m_%Y')".log 2>&1
DEBIAN_FRONTEND=noninteractive apt-get -y -qq install lsof >>/var/log/docker_install_"$(date '+%d_%m_%Y')".log 2>&1
DEBIAN_FRONTEND=noninteractive apt-get -y -qq install syslog-ng >>/var/log/docker_install_"$(date '+%d_%m_%Y')".log 2>&1
elif [ "${CP_OS}" = "fedora" ] || [ "${CP_OS}" = "\"fedora\"" ]; then
dnf -y install sudo >>/var/log/docker_install_"$(date '+%d_%m_%Y')".log 2>&1
dnf -y install wget >>/var/log/docker_install_"$(date '+%d_%m_%Y')".log 2>&1
dnf -y install curl >>/var/log/docker_install_"$(date '+%d_%m_%Y')".log 2>&1
dnf -y install nano >>/var/log/docker_install_"$(date '+%d_%m_%Y')".log 2>&1
dnf -y install htop >>/var/log/docker_install_"$(date '+%d_%m_%Y')".log 2>&1
dnf -y install lsb-release >>/var/log/docker_install_"$(date '+%d_%m_%Y')".log 2>&1
dnf -y install ca-certificates >>/var/log/docker_install_"$(date '+%d_%m_%Y')".log 2>&1
dnf -y install git-core >>/var/log/docker_install_"$(date '+%d_%m_%Y')".log 2>&1
dnf -y install openssl >>/var/log/docker_install_"$(date '+%d_%m_%Y')".log 2>&1
dnf -y install netcat >>/var/log/docker_install_"$(date '+%d_%m_%Y')".log 2>&1
dnf -y install cron >>/var/log/docker_install_"$(date '+%d_%m_%Y')".log 2>&1
dnf -y install zip >>/var/log/docker_install_"$(date '+%d_%m_%Y')".log 2>&1
dnf -y install gzip >>/var/log/docker_install_"$(date '+%d_%m_%Y')".log 2>&1
dnf -y install bzip2 >>/var/log/docker_install_"$(date '+%d_%m_%Y')".log 2>&1
dnf -y install unzip >>/var/log/docker_install_"$(date '+%d_%m_%Y')".log 2>&1
dnf -y install gcc >>/var/log/docker_install_"$(date '+%d_%m_%Y')".log 2>&1
dnf -y install make >>/var/log/docker_install_"$(date '+%d_%m_%Y')".log 2>&1
dnf -y install libssl-dev >>/var/log/docker_install_"$(date '+%d_%m_%Y')".log 2>&1
dnf -y install locales >>/var/log/docker_install_"$(date '+%d_%m_%Y')".log 2>&1
dnf -y install lsof >>/var/log/docker_install_"$(date '+%d_%m_%Y')".log 2>&1
elif [ "${CP_OS}" = "centos" ] || [ "${CP_OS}" = "\"centos\"" ]; then
yum install -y epel-release >>/var/log/docker_install_"$(date '+%d_%m_%Y')".log 2>&1
yum install -y sudo >>/var/log/docker_install_"$(date '+%d_%m_%Y')".log 2>&1
yum install -y wget >>/var/log/docker_install_"$(date '+%d_%m_%Y')".log 2>&1
yum install -y curl >>/var/log/docker_install_"$(date '+%d_%m_%Y')".log 2>&1
yum install -y nano >>/var/log/docker_install_"$(date '+%d_%m_%Y')".log 2>&1
yum install -y htop >>/var/log/docker_install_"$(date '+%d_%m_%Y')".log 2>&1
yum install -y lsb-release >>/var/log/docker_install_"$(date '+%d_%m_%Y')".log 2>&1
yum install -y ca-certificates >>/var/log/docker_install_"$(date '+%d_%m_%Y')".log 2>&1
yum install -y git-core >>/var/log/docker_install_"$(date '+%d_%m_%Y')".log 2>&1
yum install -y openssl >>/var/log/docker_install_"$(date '+%d_%m_%Y')".log 2>&1
yum install -y netcat >>/var/log/docker_install_"$(date '+%d_%m_%Y')".log 2>&1
yum install -y net-tools >>/var/log/docker_install_"$(date '+%d_%m_%Y')".log 2>&1
yum install -y cron >>/var/log/docker_install_"$(date '+%d_%m_%Y')".log 2>&1
yum install -y zip >>/var/log/docker_install_"$(date '+%d_%m_%Y')".log 2>&1
yum install -y gzip >>/var/log/docker_install_"$(date '+%d_%m_%Y')".log 2>&1
yum install -y bzip2 >>/var/log/docker_install_"$(date '+%d_%m_%Y')".log 2>&1
yum install -y unzip >>/var/log/docker_install_"$(date '+%d_%m_%Y')".log 2>&1
yum install -y gcc >>/var/log/docker_install_"$(date '+%d_%m_%Y')".log 2>&1
yum install -y make >>/var/log/docker_install_"$(date '+%d_%m_%Y')".log 2>&1
yum install -y libssl-dev >>/var/log/docker_install_"$(date '+%d_%m_%Y')".log 2>&1
yum install -y locales >>/var/log/docker_install_"$(date '+%d_%m_%Y')".log 2>&1
yum install -y lsof >>/var/log/docker_install_"$(date '+%d_%m_%Y')".log 2>&1
fi
echo -e "\\r${G}✓ Installing packages ...${NC}"
echo ""
fi
if [ "$(docker -v 2>/dev/null)" = "" ]; then
clear
_line
_logo
_header "DOCKER"
_content
_content "Installing Docker ..."
_content
_s
sed -Ei "s/#SyslogFacility AUTH/SyslogFacility AUTH/g" /etc/ssh/sshd_config >/dev/null
sed -Ei "s/#LogLevel INFO/LogLevel ERROR/g" /etc/ssh/sshd_config >/dev/null
sed -Ei "s/#MaxAuthTries 6/MaxAuthTries 3/g" /etc/ssh/sshd_config >/dev/null
sed -Ei "s/#ClientAliveCountMax 3/ClientAliveCountMax 99999/g" /etc/ssh/sshd_config >/dev/null
sed -Ei "s/#ClientAliveInterval 0/ClientAliveInterval 20/g" /etc/ssh/sshd_config >/dev/null
if [ "${CP_OS}" = "debian" ] || [ "${CP_OS}" = "\"debian\"" ]; then
CP_ARCH="`dpkg --print-architecture`"
DEBIAN_FRONTEND=noninteractive apt-get -y -qq remove docker docker-engine docker.io containerd runc
DEBIAN_FRONTEND=noninteractive apt-get -y -qq update
DEBIAN_FRONTEND=noninteractive apt-get -y -qq install apt-transport-https
DEBIAN_FRONTEND=noninteractive apt-get -y -qq install ca-certificates
DEBIAN_FRONTEND=noninteractive apt-get -y -qq install curl
DEBIAN_FRONTEND=noninteractive apt-get -y -qq install gnupg2
DEBIAN_FRONTEND=noninteractive apt-get -y -qq install software-properties-common
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --yes --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
if [ "${CP_ARCH}" = "amd64" ] || [ "${CP_ARCH}" = "x86_64" ] || [ "${CP_ARCH}" = "i386" ]
then
CP_ARCH="amd64"
elif [ "${CP_ARCH}" = "armhf" ] || [ "${CP_ARCH}" = "armel" ]
then
CP_ARCH="armhf"
elif [ "${CP_ARCH}" = "arm64" ]
then
CP_ARCH="arm64"
fi
sed -i "s~.*docker.com.*~~g" /etc/apt/sources.list &> /dev/null
echo "deb [arch=${CP_ARCH} signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
DEBIAN_FRONTEND=noninteractive apt-get -y -qq update
DEBIAN_FRONTEND=noninteractive apt-get -y -qq install docker-ce
DEBIAN_FRONTEND=noninteractive apt-get -y -qq install docker-ce-cli
DEBIAN_FRONTEND=noninteractive apt-get -y -qq install containerd.io
systemctl restart ssh
elif [ "${CP_OS}" = "ubuntu" ] || [ "${CP_OS}" = "\"ubuntu\"" ]; then
CP_ARCH="`dpkg --print-architecture`"
DEBIAN_FRONTEND=noninteractive apt-get -y -qq remove docker docker-engine docker.io containerd runc
DEBIAN_FRONTEND=noninteractive apt-get -y -qq update
DEBIAN_FRONTEND=noninteractive apt-get -y -qq install apt-transport-https
DEBIAN_FRONTEND=noninteractive apt-get -y -qq install ca-certificates
DEBIAN_FRONTEND=noninteractive apt-get -y -qq install curl
DEBIAN_FRONTEND=noninteractive apt-get -y -qq install gnupg-agent
DEBIAN_FRONTEND=noninteractive apt-get -y -qq install software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --yes --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
if [ "${CP_ARCH}" = "amd64" ] || [ "${CP_ARCH}" = "x86_64" ] || [ "${CP_ARCH}" = "i386" ]
then
CP_ARCH="amd64"
elif [ "${CP_ARCH}" = "armhf" ] || [ "${CP_ARCH}" = "armel" ]
then
CP_ARCH="armhf"
elif [ "${CP_ARCH}" = "arm64" ]
then
CP_ARCH="arm64"
elif [ "${CP_ARCH}" = "ppc64el" ] || [ "${CP_ARCH}" = "ppc" ] || [ "${CP_ARCH}" = "powerpc" ]
then
CP_ARCH="ppc64el"
elif [ "${CP_ARCH}" = "s390x" ]
then
CP_ARCH="s390x"
fi
sed -i "s~.*docker.com.*~~g" /etc/apt/sources.list &> /dev/null
echo "deb [arch=${CP_ARCH} signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
DEBIAN_FRONTEND=noninteractive apt-get -y -qq update
DEBIAN_FRONTEND=noninteractive apt-get -y -qq install docker-ce
DEBIAN_FRONTEND=noninteractive apt-get -y -qq install docker-ce-cli
DEBIAN_FRONTEND=noninteractive apt-get -y -qq install containerd.io
systemctl restart ssh
elif [ "${CP_OS}" = "fedora" ] || [ "${CP_OS}" = "\"fedora\"" ]; then
dnf -y remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine
dnf -y install dnf-plugins-core
dnf config-manager \
--add-repo \
https://download.docker.com/linux/fedora/docker-ce.repo
dnf -y install docker-ce
dnf -y install docker-ce-cli
dnf -y install containerd.io
systemctl start docker
systemctl enable docker
systemctl restart sshd
elif [ "${CP_OS}" = "centos" ] || [ "${CP_OS}" = "\"centos\"" ]; then
yum remove -y docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
yum install -y docker-ce
yum install -y docker-ce-cli
yum install -y containerd.io
systemctl start docker
systemctl enable docker
systemctl restart sshd
fi
if [ "$(docker -v 2>/dev/null)" = "" ]; then
clear
_header "ERROR"
_content
_content "Docker is not installed, try installing manually!"
_content
_s
exit 0
fi
fi
fi
}
ip_install() {
IP1=`ip route get 1 | awk '{print $NF;exit}'`
IP2=`ip route get 8.8.4.4 | head -1 | cut -d' ' -f8`
IP3=`ip route get 8.8.4.4 | head -1 | awk '{print $7}'`
if [ "`expr "${IP1}" : '[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*$'`" = "0" ] \
&& [ "`expr "${IP2}" : '[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*$'`" = "0" ] \
&& [ "`expr "${IP3}" : '[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*$'`" = "0" ]; then exit 1; fi
if [ "`expr "${IP1}" : '[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*$'`" != "0" ]; then IP_DOMAIN="${IP1}"; \
elif [ "`expr "${IP2}" : '[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*$'`" != "0" ]; then IP_DOMAIN="${IP2}"; \
elif [ "`expr "${IP3}" : '[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*$'`" != "0" ]; then IP_DOMAIN="${IP3}"; fi
CP_IP="ip"
CP_LANG="${1}"
CP_THEME="tarly"
CP_PASSWD="test"
sh_yes
_s
sh_progress
1_install "${IP_DOMAIN}" "${CP_LANG}" "${CP_THEME}" "${CP_PASSWD}"
sh_progress 100
success_install
}
1_install() {
LOCAL_DOMAIN=${1:-${CP_DOMAIN}}
LOCAL_DOMAIN_=$(echo "${LOCAL_DOMAIN}" | sed -r "s/[^A-Za-z0-9]/_/g")
LOCAL_LANG=${2:-${CP_LANG}}
LOCAL_THEME=${3:-${CP_THEME}}
LOCAL_PASSWD=${4:-${CP_PASSWD}}
echo "${PRC_}% install" >>/var/log/docker_log_"$(date '+%d_%m_%Y')".log
if [ "$(grep "_uptimerobot" /etc/crontab)" != "" ]; then
touch "/home/.uptimerobot" &>/dev/null
fi
# MEMTOTATAL=$(grep MemTotal /proc/meminfo | awk '{print $2}')
# SWAPTOTAL=$(grep SwapTotal /proc/meminfo | awk '{print $2}')
# MEMORY_DOCKER=""
# if [ "${MEMTOTATAL}" -gt 0 ]; then
# MEMDOCKER=$(("${MEMTOTATAL}"-"${MEMTOTATAL}"*10/100))
# if [ "${MEMDOCKER}" -gt 0 ]; then
# SWAPDOCKER=$(("${MEMDOCKER}"+"${SWAPTOTAL}"-"${SWAPTOTAL}"*10/100))
# MEMORY_DOCKER="--memory ${MEMDOCKER}k --memory-swap ${SWAPDOCKER}k --oom-kill-disable"
# fi
# fi
if [ ! "$(docker network ls | grep cinemapress)" ]; then
docker network create \
--driver bridge \
cinemapress >>/var/log/docker_install_"$(date '+%d_%m_%Y')".log 2>&1
fi
# docker build -t cinemapress/docker https://github.com/CinemaPress/CinemaPress.git
docker pull cinemapress/docker:latest >>/var/log/docker_install_"$(date '+%d_%m_%Y')".log 2>&1
docker run \
-d \
--name "${LOCAL_DOMAIN_}" \
"${DOCKER_MEM[@]}" \
-e "CP_DOMAIN=${LOCAL_DOMAIN}" \
-e "CP_DOMAIN_=${LOCAL_DOMAIN_}" \
-e "CP_LANG=${LOCAL_LANG}" \
-e "CP_THEME=${LOCAL_THEME}" \
-e "CP_PASSWD=${LOCAL_PASSWD}" \
-e "RCLONE_CONFIG=/home/${LOCAL_DOMAIN}/config/production/rclone.conf" \
-w /home/"${LOCAL_DOMAIN}" \
--restart always \
--network cinemapress \
-v /var/lib/sphinx/data:/var/lib/sphinx/data \
-v /var/local/balancer:/var/local/balancer \
-v /home/"${LOCAL_DOMAIN}":/home/"${LOCAL_DOMAIN}" \
${EXTERNAL_DOCKER} \
cinemapress/docker:latest >>/var/log/docker_install_"$(date '+%d_%m_%Y')".log 2>&1
WEBSITE_RUN=1
while [ "${WEBSITE_RUN}" != "50" ]; do
sleep 3
WEBSITE_RUN=$((1+${WEBSITE_RUN}))
if [ "`docker ps -aq -f status=running -f name=^/${LOCAL_DOMAIN_}\$ 2>/dev/null`" != "" ]; then
WEBSITE_RUN=50
fi
done
sh_progress
echo "${PRC_}% nginx" >>/var/log/docker_log_"$(date '+%d_%m_%Y')".log
DIR_SUCCESS=1
while [ "${DIR_SUCCESS}" != "10" ]; do
sleep 3
DIR_SUCCESS=$((1+${DIR_SUCCESS}))
if [ -d "/home/${LOCAL_DOMAIN}/" ]; then
ln -s /home/"${LOCAL_DOMAIN}"/ /root/"${LOCAL_DOMAIN}" >/dev/null
DIR_SUCCESS=10
fi
done
if [ "`docker ps -aq -f status=running -f name=^/nginx\$ 2>/dev/null`" != "" ]; then
docker restart nginx >>/var/log/docker_install_"$(date '+%d_%m_%Y')".log 2>&1
else
if [ "${CP_IP}" = "domain" ] \
&& [ "`netstat -tunlp | grep 0.0.0.0:80`" = "" ] \
&& [ "`netstat -tunlp | grep :::80`" = "" ]; then
# docker build -t cinemapress/nginx https://github.com/CinemaPress/CinemaPress.git#:config/default/nginx
# docker build -t cinemapress/fail2ban https://github.com/CinemaPress/CinemaPress.git#:config/default/fail2ban
# docker build -t cinemapress/filestash https://github.com/CinemaPress/CinemaPress.git#:config/default/filestash
BOTS=()
if [ ! -f "/etc/nginx/bots.d/blockbots.conf" ] \
&& [ -f "/home/${LOCAL_DOMAIN}/config/production/nginx/bots.d/blockbots.conf" ]; then
mkdir -p /etc/nginx/bots.d
cp -rf /home/"${LOCAL_DOMAIN}"/config/production/nginx/bots.d/* /etc/nginx/bots.d/
fi
if [ -f "/etc/nginx/bots.d/blockbots.conf" ]; then
BOTS=(-v /etc/nginx/bots.d:/etc/nginx/bots.d)
fi
docker run \
-d \
--name nginx \
"${DOCKER_MEM[@]}" \
--restart always \
--network cinemapress \
-v /var/log/nginx:/var/log/nginx \
-v /var/local/balancer:/var/local/balancer \
-v /home:/home \
"${BOTS[@]}" \
-p 80:80 \
-p 443:443 \
cinemapress/nginx:latest >>/var/log/docker_install_"$(date '+%d_%m_%Y')".log 2>&1
NGINX_RUN=1
while [ "${NGINX_RUN}" != "50" ]; do
sleep 3
NGINX_RUN=$((1+${NGINX_RUN}))
if [ "`docker ps -aq -f status=running -f name=^/nginx\$ 2>/dev/null`" != "" ]; then
NGINX_RUN=50
fi
done
sh_progress
echo "${PRC_}% fail2ban" >>/var/log/docker_log_"$(date '+%d_%m_%Y')".log
if [ ! -f "/var/log/nginx/access.log" ]; then touch "/var/log/nginx/access.log"; fi
if [ ! -f "/var/log/auth.log" ]; then touch "/var/log/auth.log"; fi
docker run \
-d \
--name fail2ban \
"${DOCKER_MEM[@]}" \
--restart always \
--network host \
--cap-add NET_ADMIN \
--cap-add NET_RAW \
-v /home/${LOCAL_DOMAIN}/config/production/fail2ban:/data \
-v /var/log:/var/log:ro \
cinemapress/fail2ban:latest >>/var/log/docker_install_"$(date '+%d_%m_%Y')".log 2>&1
FAIL2BAN_RUN=1
while [ "${FAIL2BAN_RUN}" != "50" ]; do
sleep 3
FAIL2BAN_RUN=$((1+${FAIL2BAN_RUN}))
if [ "`docker ps -aq -f status=running -f name=^/fail2ban\$ 2>/dev/null`" != "" ]; then
FAIL2BAN_RUN=50
fi
done
sh_progress
echo "${PRC_}% filestash" >>/var/log/docker_log_"$(date '+%d_%m_%Y')".log
docker run \
-d \
--name filestash \
"${DOCKER_MEM[@]}" \
--restart always \
--network cinemapress \
cinemapress/filestash >>/var/log/docker_install_"$(date '+%d_%m_%Y')".log 2>&1
FILESTASH_RUN=1
while [ "${FILESTASH_RUN}" != "50" ]; do
sleep 3
FILESTASH_RUN=$((1+${FILESTASH_RUN}))
if [ "`docker ps -aq -f status=running -f name=^/filestash\$ 2>/dev/null`" != "" ]; then
docker exec "${LOCAL_DOMAIN_}" /usr/bin/cinemapress container ftp
FILESTASH_RUN=50
fi
done
fi
fi
sleep 20
if [ "$(grep "_uptimerobot" /etc/crontab)" != "" ]; then
touch "/home/.uptimerobot" &>/dev/null
fi
}
2_update() {
LOCAL_DOMAIN=${1:-${CP_DOMAIN}}
LOCAL_DOMAIN_=$(echo "${LOCAL_DOMAIN}" | sed -r "s/[^A-Za-z0-9]/_/g")
LOCAL_MEGA_EMAIL=${2:-${MEGA_EMAIL}}
LOCAL_MEGA_PASSWORD=${3:-${MEGA_PASSWORD}}
LOCAL_NAME_STORAGE=${4:-mega}
LOCAL_FTP_HOST=${5}
if [ "${LOCAL_MEGA_EMAIL}" != "" ] && [ "${LOCAL_MEGA_PASSWORD}" != "" ]; then
LOCAL_CONF_STORAGE=()
if [ "${LOCAL_NAME_STORAGE}" = "mega" ]; then
LOCAL_CONF_STORAGE=(mega user "${LOCAL_MEGA_EMAIL}" pass "${LOCAL_MEGA_PASSWORD}")
elif [ "${LOCAL_NAME_STORAGE}" = "opendrive" ]; then
LOCAL_CONF_STORAGE=(opendrive username "${LOCAL_MEGA_EMAIL}" password "${LOCAL_MEGA_PASSWORD}")
elif [ "${LOCAL_NAME_STORAGE}" = "ftp" ]; then
LOCAL_CONF_STORAGE=(ftp user "${LOCAL_MEGA_EMAIL}" pass "${LOCAL_MEGA_PASSWORD}" host "${LOCAL_FTP_HOST}")
fi
docker exec "${LOCAL_DOMAIN_}" rclone config create CINEMAPRESS "${LOCAL_CONF_STORAGE[@]}" \
>>/var/log/docker_backup_"$(date '+%d_%m_%Y')".log 2>&1
sleep 10
fi
echo "${PRC_}% update" >>/var/log/docker_log_"$(date '+%d_%m_%Y')".log
if [ "$(grep "_uptimerobot" /etc/crontab)" != "" ]; then
touch "/home/.uptimerobot" &>/dev/null
fi
CHECK_MEGA=$(docker exec -t "${LOCAL_DOMAIN_}" rclone config show 2>/dev/null | grep "CINEMAPRESS")
if [ "${CHECK_MEGA}" = "" ]; then
_header "WARNING"
_content
_content "You have no configuration to create a backup!"
_content
_content "Configure for MEGA.nz cloud storage in one line:"
_content
printf " ~# cinemapress b %s config \"email\" \"pass\"" "${LOCAL_DOMAIN}"
_br
_content
_content "email - your email on MEGA.nz"
_content "pass - your password on MEGA.nz"
_content
_content "Configure for FTP storage in one line:"
_content
printf " ~# cinemapress b %s ftp \"user\" \"pass\" \"host\"" "${LOCAL_DOMAIN}"
_br
_content
_content "user - your username on FTP"
_content "pass - your password on FTP"
_content "host - your IP/host on FTP"
_content
_s
exit 0
fi
KILOBYTE_ALL=$(df -k /home | tail -1 | awk '{print $4}')
KILOBYTE_DIR=614400
if [ "${KILOBYTE_ALL}" -lt "${KILOBYTE_DIR}" ]; then
_header "WARNING"
_content
_content "Less than 600 MB of free space left on the server!"
_content "You need to increase disk space."
_content
_s
exit 0
fi
if [ ! -f "/home/${LOCAL_DOMAIN}/config/production/config.js" ]; then
_header "WARNING"
_content
_content "File config.js not found!"
_content
_s
exit 0
fi
AA=$(grep "\"CP_ALL\"" /home/"${LOCAL_DOMAIN}"/process.json)
XX=$(grep "\"CP_XMLPIPE2\"" /home/"${LOCAL_DOMAIN}"/process.json)
KK=$(grep "\"key\"" /home/"${LOCAL_DOMAIN}"/config/default/config.js)
DD=$(grep "\"date\"" /home/"${LOCAL_DOMAIN}"/config/default/config.js)
BM=$(grep "\"bomain\"" /home/"${LOCAL_DOMAIN}"/config/production/config.js)
CP_ALL=$(echo ${AA} | sed 's/.*"CP_ALL":\s*"\([a-zA-Z0-9_| -]*\)".*/\1/')
CP_XMLPIPE2=$(echo ${XX} | sed 's/.*"CP_XMLPIPE2":\s*"\([a-zA-Z0-9_| -]*\)".*/\1/')
CP_KEY=$(echo ${KK} | sed 's/.*"key":\s*"\(FREE\|[a-zA-Z0-9-]\{32\}\)".*/\1/')
CP_DATE=$(echo ${DD} | sed 's/.*"date":\s*"\([0-9-]*\)".*/\1/')
CP_BOMAIN=$(echo ${BM} | sed 's/.*"bomain":\s*"\([a-zA-Z0-9.-]*\)".*/\1/')
if [ "${CP_ALL}" = "" ] || [ "${CP_ALL}" = "${AA}" ]; then CP_ALL=""; fi
if [ "${CP_XMLPIPE2}" = "" ] || [ "${CP_XMLPIPE2}" = "${AA}" ]; then CP_XMLPIPE2=""; fi
DISABLE_SSL=$(grep "#ssl" /home/"${LOCAL_DOMAIN}"/config/production/nginx/conf.d/default.conf 2>/dev/null)
rm -rf /home/"${LOCAL_DOMAIN}"/config/production/nginx/conf.d/default.conf
mkdir -p /var/temp
if [ ! -d /var/temp/nginx ]; then
mkdir -p /var/temp/nginx
cp -rf /home/"${LOCAL_DOMAIN}"/config/production/nginx/* /var/temp/nginx/ 2>/dev/null
fi
if [ ! -d /var/temp/windows ] && [ -d /home/"${LOCAL_DOMAIN}"/files/windows ]; then
mv -f /home/"${LOCAL_DOMAIN}"/files/windows /var/temp/windows 2>/dev/null
fi
if [ ! -d /var/temp/linux ] && [ -d /home/"${LOCAL_DOMAIN}"/files/linux ]; then
mv -f /home/"${LOCAL_DOMAIN}"/files/linux /var/temp/linux 2>/dev/null
fi
if [ ! -d /var/temp/osx ] && [ -d /home/"${LOCAL_DOMAIN}"/files/osx ]; then
mv -f /home/"${LOCAL_DOMAIN}"/files/osx /var/temp/osx 2>/dev/null
fi
if [ ! -d /var/temp/poster ]; then
mv -f /home/"${LOCAL_DOMAIN}"/files/poster /var/temp/poster 2>/dev/null
fi
if [ ! -d /var/temp/picture ]; then
mv -f /home/"${LOCAL_DOMAIN}"/files/picture /var/temp/picture 2>/dev/null
fi
if [ -f /home/"${CP_BOMAIN}"/config/production/nginx/conf.d/default.conf ]; then
mv -f /home/"${CP_BOMAIN}"/config/production/nginx/conf.d/default.conf \
/home/"${CP_BOMAIN}"/config/production/nginx/conf.d/disabled.conf 2>/dev/null
fi
3_backup "${LOCAL_DOMAIN}" "create"
8_remove "${LOCAL_DOMAIN}" "full" "safe"
if [ ! -d /var/temp/sphinx ]; then
mkdir -p /var/temp/sphinx
cp -rf /var/lib/sphinx/data/* /var/temp/sphinx/ 2>/dev/null
fi
1_install "${LOCAL_DOMAIN}"
if [ -d /var/temp/sphinx ] && [ -d /var/lib/sphinx/data ]; then
cp -rf /var/temp/sphinx/* /var/lib/sphinx/data/ 2>/dev/null
rm -rf /var/temp/sphinx
fi
if [ -d /var/temp/nginx ] && [ -d /home/"${LOCAL_DOMAIN}"/config/production/nginx ]; then
cp -rf /var/temp/nginx/* /home/"${LOCAL_DOMAIN}"/config/production/nginx/ 2>/dev/null
rm -rf /var/temp/nginx
fi
if [ -d /var/temp/windows ] && [ ! -d /home/"${LOCAL_DOMAIN}"/files/windows ]; then
mv -f /var/temp/windows /home/"${LOCAL_DOMAIN}"/files/windows 2>/dev/null
fi
if [ -d /var/temp/linux ] && [ ! -d /home/"${LOCAL_DOMAIN}"/files/linux ]; then
mv -f /var/temp/linux /home/"${LOCAL_DOMAIN}"/files/linux 2>/dev/null
fi
if [ -d /var/temp/osx ] && [ ! -d /home/"${LOCAL_DOMAIN}"/files/osx ]; then
mv -f /var/temp/osx /home/"${LOCAL_DOMAIN}"/files/osx 2>/dev/null
fi
if [ -d /var/temp/poster ]; then
rm -rf /home/"${LOCAL_DOMAIN}"/files/poster
mv -f /var/temp/poster /home/"${LOCAL_DOMAIN}"/files/poster 2>/dev/null
fi
if [ -d /var/temp/picture ]; then
rm -rf /home/"${LOCAL_DOMAIN}"/files/picture
mv -f /var/temp/picture /home/"${LOCAL_DOMAIN}"/files/picture 2>/dev/null
fi
3_backup "${LOCAL_DOMAIN}" "restore"
docker exec nginx nginx -s reload >>/var/log/docker_update_"$(date '+%d_%m_%Y')".log 2>&1
if [ "${CP_ALL}" != "" ] && [ ! -f "/var/lib/sphinx/data/movies_${CP_DOMAIN_}.spb" ]; then
sed -E -i "s/\"CP_ALL\":\s*\"[a-zA-Z0-9_| -]*\"/\"CP_ALL\":\"${CP_ALL}\"/" \
/home/"${LOCAL_DOMAIN}"/process.json
fi
if [ "${CP_XMLPIPE2}" != "" ]; then
sed -E -i "s/\"CP_XMLPIPE2\":\s*\"[a-zA-Z0-9_| -]*\"/\"CP_XMLPIPE2\":\"${CP_XMLPIPE2}\"/" \
/home/"${LOCAL_DOMAIN}"/process.json
fi
if [ "${#CP_KEY}" -eq "4" ] || [ "${#CP_KEY}" -eq "32" ]; then
sed -E -i "s/\"key\":\s*\"(FREE|[a-zA-Z0-9-]{32})\"/\"key\":\"${CP_KEY}\"/" \
/home/"${LOCAL_DOMAIN}"/config/production/config.js
sed -E -i "s/\"key\":\s*\"(FREE|[a-zA-Z0-9-]{32})\"/\"key\":\"${CP_KEY}\"/" \
/home/"${LOCAL_DOMAIN}"/config/default/config.js
fi
if [ "${#CP_DATE}" -eq "10" ]; then
sed -E -i "s/\"date\":\s*\"[0-9-]*\"/\"date\":\"${CP_DATE}\"/" \
/home/"${LOCAL_DOMAIN}"/config/production/config.js
sed -E -i "s/\"date\":\s*\"[0-9-]*\"/\"date\":\"${CP_DATE}\"/" \
/home/"${LOCAL_DOMAIN}"/config/default/config.js
fi
if [ "${DISABLE_SSL}" = "" ]; then
docker exec "${LOCAL_DOMAIN_}" /usr/bin/cinemapress container protocol "https://"
fi
if [ -f /home/"${CP_BOMAIN}"/config/production/nginx/conf.d/disabled.conf ]; then
mv -f /home/"${CP_BOMAIN}"/config/production/nginx/conf.d/disabled.conf \
/home/"${CP_BOMAIN}"/config/production/nginx/conf.d/default.conf 2>/dev/null
fi
for all_server in /home/*/config/production/nginx/conf.d/default.conf; do
[ -f "${all_server}" ] || continue
sed -i '/pagespeed/d' "${all_server}"
done
docker exec nginx nginx -s reload >>/var/log/docker_update_"$(date '+%d_%m_%Y')".log 2>&1
docker restart "${LOCAL_DOMAIN_}" >>/var/log/docker_update_"$(date '+%d_%m_%Y')".log 2>&1
sleep 10
}
3_backup() {
LOCAL_DOMAIN=${1:-${CP_DOMAIN}}
LOCAL_DOMAIN_=$(echo "${LOCAL_DOMAIN}" | sed -r "s/[^A-Za-z0-9]/_/g")
LOCAL_ACTION=${2} # 1 | 2 | 3 | create | restore | config | opendrive | ftp
LOCAL_MEGA_EMAIL=${3:-${MEGA_EMAIL}}
LOCAL_MEGA_PASSWORD=${4:-${MEGA_PASSWORD}}
LOCAL_ACTION2=${5} # 1 | 2 | create | restore
LOCAL_DOMAIN2=${6:-${LOCAL_DOMAIN}}
echo "${PRC_}% backup" >>/var/log/docker_log_"$(date '+%d_%m_%Y')".log
if [ "$(grep "_uptimerobot" /etc/crontab)" != "" ]; then
touch "/home/.uptimerobot" &>/dev/null
fi
if [ -f "/var/rclone.conf" ] && [ ! -f "/home/${LOCAL_DOMAIN}/config/production/rclone.conf" ]; then
cp -r /var/rclone.conf /home/"${LOCAL_DOMAIN}"/config/production/rclone.conf
elif [ -f "/home/${LOCAL_DOMAIN}/config/production/rclone.conf" ]; then
cp -r /home/"${LOCAL_DOMAIN}"/config/production/rclone.conf /var/rclone.conf
fi
sleep 5
RCS=$(docker exec -t "${LOCAL_DOMAIN_}" rclone config show 2>/dev/null | grep "CINEMAPRESS")
LOCAL_CONF_STORAGE=()
if [ "${LOCAL_ACTION}" = "opendrive" ]; then
LOCAL_CONF_STORAGE=(opendrive username "${LOCAL_MEGA_EMAIL}" password "${LOCAL_MEGA_PASSWORD}")
docker exec "${LOCAL_DOMAIN_}" rclone config create CINEMAPRESS "${LOCAL_CONF_STORAGE[@]}" \
>>/var/log/docker_backup_"$(date '+%d_%m_%Y')".log 2>&1
sh_progress 100
exit 0
elif [ "${LOCAL_ACTION}" = "ftp" ]; then
if [ "${LOCAL_DOMAIN2}" = "static" ]; then
LOCAL_CONF_STORAGE=(ftp user "${LOCAL_MEGA_EMAIL}" pass "${LOCAL_MEGA_PASSWORD}" host "${LOCAL_ACTION2}")
docker exec "${LOCAL_DOMAIN_}" rclone config create CINEMASTATIC "${LOCAL_CONF_STORAGE[@]}" \
>>/var/log/docker_backup_"$(date '+%d_%m_%Y')".log 2>&1
sh_progress 100
exit 0
fi
LOCAL_CONF_STORAGE=(ftp user "${LOCAL_MEGA_EMAIL}" pass "${LOCAL_MEGA_PASSWORD}" host "${LOCAL_ACTION2}")
docker exec "${LOCAL_DOMAIN_}" rclone config create CINEMAPRESS "${LOCAL_CONF_STORAGE[@]}" \
>>/var/log/docker_backup_"$(date '+%d_%m_%Y')".log 2>&1
sh_progress 100
exit 0
else
LOCAL_CONF_STORAGE=(mega user "${LOCAL_MEGA_EMAIL}" pass "${LOCAL_MEGA_PASSWORD}")
fi
if [ "${LOCAL_ACTION}" = "config" ] || [ "${LOCAL_ACTION}" = "3" ] || [ "${RCS}" = "" ]; then
if [ "${LOCAL_MEGA_EMAIL}" != "" ] && [ "${LOCAL_MEGA_PASSWORD}" != "" ]; then
sh_progress
echo "${PRC_}% config check-connection" >>/var/log/docker_log_"$(date '+%d_%m_%Y')".log
docker exec "${LOCAL_DOMAIN_}" rclone config create CINEMAPRESS "${LOCAL_CONF_STORAGE[@]}" \
>>/var/log/docker_backup_"$(date '+%d_%m_%Y')".log 2>&1
sleep 10
CHECK_MKDIR=$(docker exec -t "${LOCAL_DOMAIN_}" rclone mkdir CINEMAPRESS:/check-connection 2>/dev/null)
sleep 3
CHECK_RMDIR=$(docker exec -t "${LOCAL_DOMAIN_}" rclone rmdir CINEMAPRESS:/check-connection 2>/dev/null)
if [ "${CHECK_MKDIR}" != "" ] || [ "${CHECK_RMDIR}" != "" ]; then
_header "ERROR"
_content
_content "Cannot connect to backup storage."
_content
_s
exit 0
fi
cp -r /home/"${LOCAL_DOMAIN}"/config/production/rclone.conf /var/rclone.conf
if [ "${LOCAL_ACTION2}" = "create" ] || [ "${LOCAL_ACTION2}" = "1" ]; then
docker exec "${LOCAL_DOMAIN_}" /usr/bin/cinemapress container backup create hand \
>>/var/log/docker_backup_"$(date '+%d_%m_%Y')".log 2>&1
elif [ "${LOCAL_ACTION2}" = "restore" ] || [ "${LOCAL_ACTION2}" = "2" ]; then
docker exec "${LOCAL_DOMAIN_}" /usr/bin/cinemapress container backup restore "${LOCAL_DOMAIN2}" \
>>/var/log/docker_backup_"$(date '+%d_%m_%Y')".log 2>&1
docker exec nginx nginx -s reload \
>>/var/log/docker_backup_"$(date '+%d_%m_%Y')".log 2>&1
fi
else
_header "ERROR RCLONE CONFIG"
_content
_content "Configure for MEGA.nz cloud storage in one line:"
_content
printf " ~# cinemapress b %s config \"email\" \"pass\"" "${LOCAL_DOMAIN}"
_br
_content
_content "email - your email on MEGA.nz"
_content "pass - your password on MEGA.nz"
_content
_content "Configure for FTP storage in one line:"
_content
printf " ~# cinemapress b %s ftp \"user\" \"pass\" \"host\"" "${LOCAL_DOMAIN}"
_br
_content
_content "user - your username on FTP"
_content "pass - your password on FTP"
_content "host - your IP/host on FTP"
_content
_content "after creating config, you can create/restore backup:"
_content
printf " ~# cinemapress b %s create" "${LOCAL_DOMAIN}"
_br
printf " ~# cinemapress b %s restore" "${LOCAL_DOMAIN}"
_br
_content
_s
exit 0
fi
else
if [ "${LOCAL_ACTION}" = "" ]; then
_header "MAKE A CHOICE"
printf "${C}---- ${G}1)${NC} create ${S}-------------------- Create New Backup Website ${C}----\n"
printf "${C}---- ${G}2)${NC} restore ${S}------------ Restore Website From Last Backup ${C}----\n"
_s
read -e -p 'OPTION [1-2]: ' LOCAL_ACTION
LOCAL_ACTION=$(echo "${LOCAL_ACTION}" | iconv -c -t UTF-8)
_br
fi
sh_progress
echo "${PRC_}% backup check-connection" >>/var/log/docker_log_"$(date '+%d_%m_%Y')".log
CHECK_MKDIR=$(docker exec -t "${LOCAL_DOMAIN_}" rclone mkdir CINEMAPRESS:/check-connection 2>/dev/null)
sleep 3
CHECK_RMDIR=$(docker exec -t "${LOCAL_DOMAIN_}" rclone rmdir CINEMAPRESS:/check-connection 2>/dev/null)
if [ "${CHECK_MKDIR}" != "" ] || [ "${CHECK_RMDIR}" != "" ]; then
_header "ERROR"
_content
_content "Cannot connect to backup storage."
_content
_s
exit 0
fi
if [ "${LOCAL_ACTION}" = "create" ] || [ "${LOCAL_ACTION}" = "1" ]; then
docker exec "${LOCAL_DOMAIN_}" /usr/bin/cinemapress container backup create hand \
>>/var/log/docker_backup_"$(date '+%d_%m_%Y')".log 2>&1
elif [ "${LOCAL_ACTION}" = "restore" ] || [ "${LOCAL_ACTION}" = "2" ]; then
docker exec "${LOCAL_DOMAIN_}" /usr/bin/cinemapress container backup restore \
>>/var/log/docker_backup_"$(date '+%d_%m_%Y')".log 2>&1
docker exec nginx nginx -s reload \
>>/var/log/docker_backup_"$(date '+%d_%m_%Y')".log 2>&1
fi
fi
sleep 10
}
4_theme() {
LOCAL_DOMAIN=${1:-${CP_DOMAIN}}
LOCAL_DOMAIN_=$(echo "${LOCAL_DOMAIN}" | sed -r "s/[^A-Za-z0-9]/_/g")
LOCAL_THEME=${2:-${CP_THEME}}
echo "${PRC_}% theme" >>/var/log/docker_log_"$(date '+%d_%m_%Y')".log
YES="NOT"
if [ -d "/home/${LOCAL_DOMAIN}/themes/${LOCAL_THEME}" ]; then
_header "${LOCAL_THEME}";
_content
_content "This theme exists!"
_content
_s
if [ ${3} ]
then
YES=${3}
YES=`echo ${YES} | iconv -c -t UTF-8`
echo "Update? [YES/not] : ${YES}"
else
read -e -p 'Update? [YES/not] : ' YES
YES=`echo ${YES} | iconv -c -t UTF-8`
fi
_br
if [ "${YES}" != "ДА" ] && [ "${YES}" != "Да" ] && [ "${YES}" != "да" ] && [ "${YES}" != "YES" ] && [ "${YES}" != "Yes" ] && [ "${YES}" != "yes" ] && [ "${YES}" != "Y" ] && [ "${YES}" != "y" ] && [ "${YES}" != "" ]
then
exit 0
else
git clone https://${GIT_SERVER}/CinemaPress/Theme-"${LOCAL_THEME}".git \
/var/"${LOCAL_THEME}" >>/var/log/docker_theme_"$(date '+%d_%m_%Y')".log 2>&1
mkdir -p /home/"${LOCAL_DOMAIN}"/themes/"${LOCAL_THEME}"/
cp -rf /var/"${LOCAL_THEME}"/* /home/"${LOCAL_DOMAIN}"/themes/"${LOCAL_THEME}"/
sed -Ei "s/\"theme\":\s*\"[a-zA-Z0-9-]*\"/\"theme\":\"${LOCAL_THEME}\"/" \
/home/"${LOCAL_DOMAIN}"/config/production/config.js
docker exec "${LOCAL_DOMAIN_}" node optimal.js "${LOCAL_THEME}" \
>>/var/log/docker_theme_"$(date '+%d_%m_%Y')".log 2>&1
fi
else
git clone https://${GIT_SERVER}/CinemaPress/Theme-"${LOCAL_THEME}".git \
/var/"${LOCAL_THEME}" >>/var/log/docker_theme_"$(date '+%d_%m_%Y')".log 2>&1
mkdir -p /home/"${LOCAL_DOMAIN}"/themes/"${LOCAL_THEME}"/
cp -rf /var/"${LOCAL_THEME}"/* /home/"${LOCAL_DOMAIN}"/themes/"${LOCAL_THEME}"/
sed -Ei "s/\"theme\":\s*\"[a-zA-Z0-9-]*\"/\"theme\":\"${LOCAL_THEME}\"/" \
/home/"${LOCAL_DOMAIN}"/config/production/config.js
docker exec "${LOCAL_DOMAIN_}" node optimal.js "${LOCAL_THEME}" \
>>/var/log/docker_theme_"$(date '+%d_%m_%Y')".log 2>&1
fi
rm -rf /var/"${LOCAL_THEME:?}"
sh_progress
echo "${PRC_}% theme" >>/var/log/docker_log_"$(date '+%d_%m_%Y')".log
if [ "$(docker -v 2>/dev/null)" != "" ]; then
docker restart "${LOCAL_DOMAIN_}" >>/var/log/docker_theme_"$(date '+%d_%m_%Y')".log 2>&1
fi
sleep 10
}
5_database() {
LOCAL_DOMAIN=${1:-${CP_DOMAIN}}
LOCAL_DOMAIN_=$(echo "${LOCAL_DOMAIN}" | sed -r "s/[^A-Za-z0-9]/_/g")
echo "${PRC_}% database" >>/var/log/docker_log_"$(date '+%d_%m_%Y')".log
_header "MOVIES"
_content
_content "Update movies information"
_content "using the instructions:"
_content "https://enota.club/threads/3043"
_content
_s
exit 0
}
6_https() {
LOCAL_DOMAIN=${1:-${CP_DOMAIN}}
LOCAL_DOMAIN_=$(echo "${LOCAL_DOMAIN}" | sed -r "s/[^A-Za-z0-9]/_/g")
LOCAL_CLOUDFLARE_EMAIL=${2:-${CLOUDFLARE_EMAIL}}
LOCAL_CLOUDFLARE_API_KEY=${3:-${CLOUDFLARE_API_KEY}}
LOCAL_SUBDOMAIN=${4:-}
echo "${PRC_}% https" >>/var/log/docker_log_"$(date '+%d_%m_%Y')".log
if [ "$(grep "_uptimerobot" /etc/crontab)" != "" ]; then
touch "/home/.uptimerobot" &>/dev/null
fi
NGX="/home/${LOCAL_DOMAIN}/config/production/nginx"
if [ "${LOCAL_CLOUDFLARE_EMAIL}" != "" ] \
&& [ "${LOCAL_CLOUDFLARE_API_KEY}" != "" ]; then
echo -e "dns_cloudflare_email = \"${LOCAL_CLOUDFLARE_EMAIL}\"\ndns_cloudflare_api_key = \"${LOCAL_CLOUDFLARE_API_KEY}\"" \
> "${NGX}/cloudflare.ini"
_header "Generating, please wait ..."
_br
sleep 5
DOMAINS=(-d "${LOCAL_DOMAIN}" -d *."${LOCAL_DOMAIN}")
if [ "${LOCAL_SUBDOMAIN}" != "" ]; then
for SUBDOMAIN in $LOCAL_SUBDOMAIN; do DOMAINS=("${DOMAINS[@]}" -d *."${SUBDOMAIN}"."${LOCAL_DOMAIN}"); done
fi
docker run \
--rm \
-v "${NGX}/ssl.d:/etc/letsencrypt" \
-v "${NGX}/letsencrypt:/var/lib/letsencrypt" \
-v "${NGX}/cloudflare.ini:/cloudflare.ini" \
certbot/dns-cloudflare \
certonly \
--dns-cloudflare \
--dns-cloudflare-credentials /cloudflare.ini \
--email "support@${LOCAL_DOMAIN}" \
--non-interactive \
--agree-tos \
"${DOMAINS[@]}" \
--server https://acme-v02.api.letsencrypt.org/directory \
>>/var/log/docker_https_"$(date '+%d_%m_%Y')".log 2>&1
sleep 15
if [ -d "${NGX}/ssl.d/live/${LOCAL_DOMAIN}/" ]; then
openssl dhparam -out "${NGX}/ssl.d/live/${LOCAL_DOMAIN}/dhparam.pem" 2048 \
>>/var/log/docker_https_"$(date '+%d_%m_%Y')".log 2>&1
sed -Ei "s~/self-signed/~/live/~g" "${NGX}/ssl.d/default.conf"
sed -Ei "s/ssl_stapling off;/ssl_stapling on;/g" "${NGX}/ssl.d/default.conf"
sed -Ei "s/#ssl //g" "${NGX}/conf.d/default.conf"
sed -Ei "s/\"protocol\":\s*\"http:/\"protocol\":\"https:/" \
"/home/${LOCAL_DOMAIN}/config/production/config.js" >/dev/null
docker restart "${LOCAL_DOMAIN_}" \
>>/var/log/docker_https_"$(date '+%d_%m_%Y')".log 2>&1
_header "Generating wildcard certificate, completed successfully!"
_br
else
_header "ERROR"
_content
_content "Wildcard SSL certificate is not generated,"
_content "check the correct Email and Global API Key."
_content
_s
fi
elif [ "${LOCAL_CLOUDFLARE_EMAIL}" = "ss" ]; then
rm -rf "${NGX}"/ssl.d/self-signed/"${LOCAL_DOMAIN}"
mkdir -p "${NGX}"/ssl.d/self-signed/"${LOCAL_DOMAIN}"
openssl req \
-x509 \
-nodes \
-days 3650 \
-subj "/C=CA/ST=QC/O=${LOCAL_DOMAIN}/CN=${LOCAL_DOMAIN}" \
-addext "subjectAltName=DNS:${LOCAL_DOMAIN}" \
-newkey rsa:2048 \
-keyout "${NGX}"/ssl.d/self-signed/"${LOCAL_DOMAIN}"/privkey.pem \
-out "${NGX}"/ssl.d/self-signed/"${LOCAL_DOMAIN}"/fullchain.pem
openssl dhparam \
-out "${NGX}"/ssl.d/self-signed/"${LOCAL_DOMAIN}"/dhparam.pem 2048
sed -Ei "s/live/self-signed/g" "${NGX}/ssl.d/default.conf"
sed -Ei "s/ssl_stapling on;/ssl_stapling off;/g" "${NGX}/ssl.d/default.conf"
sed -Ei "s/#ssl //g" "${NGX}/conf.d/default.conf"
sed -Ei "s/\"protocol\":\s*\"http:/\"protocol\":\"https:/" \
"/home/${LOCAL_DOMAIN}/config/production/config.js" >/dev/null
docker restart "${LOCAL_DOMAIN_}" \
>>/var/log/docker_https_"$(date '+%d_%m_%Y')".log 2>&1
_header "Generating self-signed certificate, completed successfully!"
_br
fi
sleep 10
}
7_mirror() {
LOCAL_DOMAIN=${1:-${CP_DOMAIN}}
LOCAL_DOMAIN_=$(echo "${LOCAL_DOMAIN}" | sed -r "s/[^A-Za-z0-9]/_/g")
LOCAL_MIRROR=${2:-${CP_MIRROR}}
LOCAL_MIRROR_=$(echo "${LOCAL_MIRROR}" | sed -r "s/[^A-Za-z0-9]/_/g")
if [ ! -f "/home/${LOCAL_MIRROR}/process.json" ]; then
if [ -f "/home/${LOCAL_DOMAIN}/process.json" ]; then
M_="${LOCAL_MIRROR_}"
LOCAL_MIRROR="${LOCAL_DOMAIN}"
LOCAL_MIRROR_="${LOCAL_DOMAIN_}"
LOCAL_DOMAIN=""
LOCAL_DOMAIN_="${M_}"
else
_header "ERROR"
_content
_content "First create a mirror website ${LOCAL_MIRROR},"
_content "import the movie database and"
_content "configure HTTPS on it (if you use it)."
_content
_s
exit 0
fi
fi
sh_progress
echo "${PRC_}% mirror" >>/var/log/docker_log_"$(date '+%d_%m_%Y')".log
if [ "$(grep "_uptimerobot" /etc/crontab)" != "" ]; then
touch "/home/.uptimerobot" &>/dev/null
fi
docker stop "${LOCAL_MIRROR_}" >>/var/log/docker_mirror_"$(date '+%d_%m_%Y')".log 2>&1
if [ -f "/home/${LOCAL_DOMAIN}/process.json" ]; then
3_backup "${LOCAL_DOMAIN}" "create"
docker stop "${LOCAL_DOMAIN_}" \
>>/var/log/docker_mirror_"$(date '+%d_%m_%Y')".log 2>&1
rm -rf \
/home/"${LOCAL_MIRROR}"/config/comment \
/home/"${LOCAL_MIRROR}"/config/content \
/home/"${LOCAL_MIRROR}"/config/rt \
/home/"${LOCAL_MIRROR}"/config/user
cp -r \
/home/${LOCAL_DOMAIN}/config/comment \
/home/"${LOCAL_MIRROR}"/config/comment
cp -r \
/home/${LOCAL_DOMAIN}/config/content \
/home/"${LOCAL_MIRROR}"/config/content
cp -r \
/home/${LOCAL_DOMAIN}/config/rt \
/home/"${LOCAL_MIRROR}"/config/rt
cp -r \
/home/${LOCAL_DOMAIN}/config/user \
/home/"${LOCAL_MIRROR}"/config/user
cp -r \
/home/${LOCAL_DOMAIN}/config/production/config.js \
/home/"${LOCAL_MIRROR}"/config/production/config.js
cp -r \
/home/${LOCAL_DOMAIN}/config/production/modules.js \
/home/"${LOCAL_MIRROR}"/config/production/modules.js
cp -r \
/home/${LOCAL_DOMAIN}/themes/default/public/desktop/* \
/home/"${LOCAL_MIRROR}"/themes/default/public/desktop/
cp -r \
/home/${LOCAL_DOMAIN}/themes/default/public/mobile/* \
/home/"${LOCAL_MIRROR}"/themes/default/public/mobile/
cp -r \
/home/${LOCAL_DOMAIN}/themes/default/views/mobile/* \
/home/"${LOCAL_MIRROR}"/themes/default/views/mobile/
cp -r \
/home/${LOCAL_DOMAIN}/files/* \
/home/"${LOCAL_MIRROR}"/files/
sed -Ei \
"s/${LOCAL_DOMAIN_}:3000/${LOCAL_MIRROR_}:3000/g" \
/home/${LOCAL_DOMAIN}/config/production/nginx/conf.d/default.conf
fi
if [ "${LOCAL_DOMAIN_}" != "" ]; then
for f in /home/"${LOCAL_MIRROR}"/config/comment/comment_${LOCAL_DOMAIN_}.*; do
mv -f "${f}" "`echo ${f} | sed s/comment_${LOCAL_DOMAIN_}/comment_${LOCAL_MIRROR_}/`" 2>/dev/null
done
for f in /home/"${LOCAL_MIRROR}"/config/content/content_${LOCAL_DOMAIN_}.*; do
mv -f "${f}" "`echo ${f} | sed s/content_${LOCAL_DOMAIN_}/content_${LOCAL_MIRROR_}/`" 2>/dev/null
done
for f in /home/"${LOCAL_MIRROR}"/config/rt/rt_${LOCAL_DOMAIN_}.*; do
mv -f "${f}" "`echo ${f} | sed s/rt_${LOCAL_DOMAIN_}/rt_${LOCAL_MIRROR_}/`" 2>/dev/null
done
for f in /home/"${LOCAL_MIRROR}"/config/user/user_${LOCAL_DOMAIN_}.*; do
mv -f "${f}" "`echo ${f} | sed s/user_${LOCAL_DOMAIN_}/user_${LOCAL_MIRROR_}/`" 2>/dev/null
done
fi
sh_progress
echo "${PRC_}% mirror2" >>/var/log/docker_log_"$(date '+%d_%m_%Y')".log
docker start "${LOCAL_MIRROR_}" \
>>/var/log/docker_mirror_"$(date '+%d_%m_%Y')".log 2>&1
sleep 10
docker exec "${LOCAL_MIRROR_}" /usr/bin/cinemapress container mirror \
>>/var/log/docker_mirror_"$(date '+%d_%m_%Y')".log 2>&1
sleep 10
docker exec nginx nginx -s reload \
>>/var/log/docker_mirror_"$(date '+%d_%m_%Y')".log 2>&1
sleep 10
}
8_remove() {
LOCAL_DOMAIN=${1:-${CP_DOMAIN}}
LOCAL_DOMAIN_=$(echo "${LOCAL_DOMAIN}" | sed -r "s/[^A-Za-z0-9]/_/g")
LOCAL_FULL=${2}
LOCAL_SAFE=${3}
echo "${PRC_}% remove" >>/var/log/docker_log_"$(date '+%d_%m_%Y')".log
if [ "$(grep "_uptimerobot" /etc/crontab)" != "" ]; then
touch "/home/.uptimerobot" &>/dev/null
fi
if [ "${LOCAL_SAFE}" = "safe" ] && [ -f "/home/${LOCAL_DOMAIN}/config/production/config.js" ]; then
T=`grep "\"theme\"" /home/${LOCAL_DOMAIN}/config/production/config.js`
L=`grep "\"language\"" /home/${LOCAL_DOMAIN}/config/production/config.js`
CP_THEME=`echo ${T} | sed 's/.*"theme":\s*"\([a-zA-Z0-9_-]*\)".*/\1/'`
CP_LANG=`echo ${L} | sed 's/.*"language":\s*"\([a-z]*\)".*/\1/'`
if [ "${CP_THEME}" = "" ] \
|| [ "${CP_LANG}" = "" ] \
|| [ "${CP_THEME}" = "${T}" ] \
|| [ "${CP_LANG}" = "${L}" ]; then
_header "ERROR"
_content
_content "The field has an invalid value:"
_content "CP_THEME: ${CP_THEME}"
_content "CP_LANG: ${CP_LANG}"
_content
_line
exit 0
fi
fi
docker stop ${LOCAL_DOMAIN_} >>/var/log/docker_remove_"$(date '+%d_%m_%Y')".log 2>&1
docker rm -f ${LOCAL_DOMAIN_} >>/var/log/docker_remove_"$(date '+%d_%m_%Y')".log 2>&1
# docker build -t cinemapress/docker https://github.com/CinemaPress/CinemaPress.git
docker pull cinemapress/docker:latest >>/var/log/docker_remove_"$(date '+%d_%m_%Y')".log 2>&1
sed -i "s/.*${LOCAL_DOMAIN}.*//g" /etc/crontab &> /dev/null
rm -rf /home/${LOCAL_DOMAIN:?}
rm -rf /root/${LOCAL_DOMAIN:?}
if [ "${LOCAL_FULL}" != "" ]; then
echo "STOP NGINX" >>/var/log/docker_remove_"$(date '+%d_%m_%Y')".log 2>&1
docker stop nginx >>/var/log/docker_remove_"$(date '+%d_%m_%Y')".log 2>&1
echo "RM NGINX" >>/var/log/docker_remove_"$(date '+%d_%m_%Y')".log 2>&1
docker rm -f nginx >>/var/log/docker_remove_"$(date '+%d_%m_%Y')".log 2>&1
echo "PULL NGINX" >>/var/log/docker_remove_"$(date '+%d_%m_%Y')".log 2>&1
# docker build -t cinemapress/nginx https://github.com/CinemaPress/CinemaPress.git#:config/default/nginx
docker pull cinemapress/nginx:latest >>/var/log/docker_remove_"$(date '+%d_%m_%Y')".log 2>&1
# echo "STOP FAIL2BAN" >>/var/log/docker_remove_"$(date '+%d_%m_%Y')".log 2>&1
# docker stop fail2ban >>/var/log/docker_remove_"$(date '+%d_%m_%Y')".log 2>&1
# echo "RM FAIL2BAN" >>/var/log/docker_remove_"$(date '+%d_%m_%Y')".log 2>&1
# docker rm -f fail2ban >>/var/log/docker_remove_"$(date '+%d_%m_%Y')".log 2>&1
# echo "PULL FAIL2BAN" >>/var/log/docker_remove_"$(date '+%d_%m_%Y')".log 2>&1
# # docker build -t cinemapress/fail2ban https://github.com/CinemaPress/CinemaPress.git#:config/default/fail2ban
# docker pull cinemapress/fail2ban:latest >>/var/log/docker_remove_"$(date '+%d_%m_%Y')".log 2>&1
# echo "STOP FILESTASH" >>/var/log/docker_remove_"$(date '+%d_%m_%Y')".log 2>&1
# docker stop filestash >>/var/log/docker_remove_"$(date '+%d_%m_%Y')".log 2>&1
# echo "RM FILESTASH" >>/var/log/docker_remove_"$(date '+%d_%m_%Y')".log 2>&1
# docker rm -f filestash >>/var/log/docker_remove_"$(date '+%d_%m_%Y')".log 2>&1
# echo "PULL FILESTASH" >>/var/log/docker_remove_"$(date '+%d_%m_%Y')".log 2>&1
# # docker build -t cinemapress/filestash https://github.com/CinemaPress/CinemaPress.git#:config/default/filestash
# docker pull cinemapress/filestash:latest >>/var/log/docker_remove_"$(date '+%d_%m_%Y')".log 2>&1
fi
echo "RMI OLD" >>/var/log/docker_remove_"$(date '+%d_%m_%Y')".log 2>&1
docker rmi -f $(docker images -f 'dangling=true' -q) >>/var/log/docker_remove_"$(date '+%d_%m_%Y')".log 2>&1
sleep 10
}
option() {
clear
_line
_logo
_header "MAKE A CHOICE"
printf "${C}---- ${G}i)${NC} install ${S}------------------ Create Movies / TV Website ${C}----\n"
printf "${C}---- ${G}u)${NC} update ${S}------------------- Upgrade CinemaPress System ${C}----\n"
printf "${C}---- ${G}b)${NC} backup ${S}-------------------- Backup System Master Data ${C}----\n"
printf "${C}---- ${G}t)${NC} theme ${S}------------- Install / Update Website Template ${C}----\n"
printf "${C}---- ${G}h)${NC} https ${S}-------------- Getting Wildcard SSL Certificate ${C}----\n"
printf "${C}---- ${G}r)${NC} remove ${S}---------------------------- Uninstall Website ${C}----\n"
_s
AGAIN=1
while [ "${AGAIN}" -lt "10" ]
do
if [ ${1} ]
then
OPTION=${1}
echo "OPTION: ${OPTION}"
else
read -e -p 'OPTION: ' OPTION
OPTION=`echo ${OPTION} | iconv -c -t UTF-8`
fi
if [ "${OPTION}" != "" ]
then
if echo "${OPTION}" | grep -qE ^[0-9a-z]+$
then
AGAIN=10
else
printf "${R}WARNING:${NC} Enter the letter of the option. \n"
AGAIN=$((${AGAIN}+1))
fi
else
printf "${R}WARNING:${NC} Make your choice. \n"
AGAIN=$((${AGAIN}+1))
fi
done
printf "\n${NC}"
}
read_domain() {
CP_DOMAIN=${1:-${CP_DOMAIN}}
if [ "${CP_DOMAIN}" = "" ]; then
_header "DOMAIN NAME OR IP"
AGAIN=1
while [ "${AGAIN}" -lt "10" ]
do
if [ ${1} ]
then
CP_DOMAIN=${1}
CP_DOMAIN=`echo ${CP_DOMAIN} | iconv -c -t UTF-8`
echo ": ${CP_DOMAIN}"
else
AUTO_DOMAIN=""
cd /home && for D in *; do
if [ -d "$D" ] && [ -f "$D/process.json" ] && [ -f "$D/app.js" ] && [ "${AUTO_DOMAIN}" = "" ]; then
AUTO_DOMAIN="$D"
fi
done
if [ "${AUTO_DOMAIN}" = "" ]; then
read -e -p ': ' CP_DOMAIN
else
read -e -p ': ' -i "${AUTO_DOMAIN}" CP_DOMAIN
fi
CP_DOMAIN=`echo ${CP_DOMAIN} | iconv -c -t UTF-8`
fi
if [ "${CP_DOMAIN}" != "" ]
then
if echo "${CP_DOMAIN}" | grep -qE ^[.a-z0-9-]+$
then
CP_DOMAIN_=`echo ${CP_DOMAIN} | sed -r "s/[^A-Za-z0-9]/_/g" | sed -r "s/www\.//g" | sed -r "s/http:\/\///g" | sed -r "s/https:\/\///g"`
if [ "`expr "${CP_DOMAIN}" : '[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*$'`" != "0" ]; then
CP_IP="ip"
fi
AGAIN=10
else
printf "${NC} You entered: ${R}${CP_DOMAIN}${NC} \n"
printf "${R}WARNING:${NC} Only latin lowercase characters, \n"
printf "${NC} numbers, dots, and hyphens are allowed! \n"
AGAIN=$((${AGAIN}+1))
fi
else
printf "${R}WARNING:${NC} Domain name cannot be blank. \n"
AGAIN=$((${AGAIN}+1))
fi
done
if [ "${CP_DOMAIN}" = "" ]; then exit 1; fi
fi
if [ "`expr "${CP_DOMAIN}" : '[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*$'`" != "0" ]; then
while [ "`netstat -tunlp 2>/dev/null | grep :${EXTERNAL_PORT}`" != "" ]; do
RND=`sh_random 1 9999`
EXTERNAL_PORT=$((30000+${RND}))
done
if [ "`netstat -tunlp | grep 0.0.0.0:80`" = "" ] \
&& [ "`netstat -tunlp | grep :::80`" = "" ]; then
EXTERNAL_PORT="80"
fi
EXTERNAL_DOCKER="-p ${EXTERNAL_PORT}:3000"
CP_IP="ip"
fi
CP_DOMAIN_=`echo ${CP_DOMAIN} | sed -r "s/[^A-Za-z0-9]/_/g"`
}
read_mirror() {
CP_MIRROR=${1:-${CP_MIRROR}}
if [ "${CP_MIRROR}" = "" ]; then
_header "MIRROR WEBSITE"
AGAIN=1
while [ "${AGAIN}" -lt "10" ]
do
if [ ${1} ]
then
CP_MIRROR=${1}
CP_MIRROR=`echo ${CP_MIRROR} | iconv -c -t UTF-8`
echo ": ${CP_MIRROR}"
else
read -e -p ': ' CP_MIRROR
CP_MIRROR=`echo ${CP_MIRROR} | iconv -c -t UTF-8`
fi
if [ "${CP_MIRROR}" != "" ]
then
if echo "${CP_MIRROR}" | grep -qE ^[.a-z0-9-]+$
then
if [ "${CP_DOMAIN}" = "${CP_MIRROR}" ]
then
printf "${R}WARNING:${NC} The mirror of the website cannot be \n"
printf "${NC} the same as the domain of the main website! \n"
AGAIN=$((${AGAIN}+1))
else
CP_MIRROR_=`echo ${CP_MIRROR} | sed -r "s/[^A-Za-z0-9]/_/g" | sed -r "s/www\.//g" | sed -r "s/http:\/\///g" | sed -r "s/https:\/\///g"`
AGAIN=10
fi
else
printf "${NC} You entered: ${R}${CP_MIRROR}${NC} \n"
printf "${R}WARNING:${NC} Only latin lowercase characters, \n"
printf "${NC} numbers, dots, and hyphens are allowed! \n"
AGAIN=$((${AGAIN}+1))
fi
else
printf "${R}WARNING:${NC} Mirror domain name cannot be blank. \n"
AGAIN=$((${AGAIN}+1))
fi
done
if [ "${CP_MIRROR}" = "" ]; then exit 1; fi
fi
CP_MIRROR_=`echo ${CP_MIRROR} | sed -r "s/[^A-Za-z0-9]/_/g" | sed -r "s/www\.//g" | sed -r "s/http:\/\///g" | sed -r "s/https:\/\///g"`
}
read_theme() {
CP_THEME=${1:-${CP_THEME}}
if [ "${CP_THEME}" = "" ]; then
_header "WEBSITE THEME"
AGAIN=1
while [ "${AGAIN}" -lt "10" ]
do
if [ ${1} ]
then
CP_THEME=${1}
CP_THEME=$(echo ${CP_THEME} | iconv -c -t UTF-8)
echo ": ${CP_THEME}"
else
read -e -p ': ' -i "snow" CP_THEME
CP_THEME=$(echo ${CP_THEME} | iconv -c -t UTF-8)
fi
if [ "${CP_THEME}" = "" ]
then
AGAIN=10
CP_THEME='tarly'
echo ": ${CP_THEME}"
else
if [ "${CP_THEME}" = "default" ] || [ "${CP_THEME}" = "hodor" ] || [ "${CP_THEME}" = "sansa" ] || [ "${CP_THEME}" = "robb" ] || [ "${CP_THEME}" = "ramsay" ] || [ "${CP_THEME}" = "tyrion" ] || [ "${CP_THEME}" = "cersei" ] || [ "${CP_THEME}" = "joffrey" ] || [ "${CP_THEME}" = "drogo" ] || [ "${CP_THEME}" = "bran" ] || [ "${CP_THEME}" = "arya" ] || [ "${CP_THEME}" = "mormont" ] || [ "${CP_THEME}" = "tarly" ] || [ "${CP_THEME}" = "daenerys" ] || [ "${CP_THEME}" = "tormund" ] || [ "${CP_THEME}" = "snow" ] || [ "${CP_THEME}" = "dustin" ]
then
AGAIN=10
else
printf "%b There is no such theme! \n" "${NC}"
printf "%bWARNING:%b Currently there are theme: hodor, sansa, robb, ramsay, tyrion, cersei \n" "${R}" "${NC}"
printf "%b joffrey, drogo, bran, arya, mormont, tarly и daenerys, tormund, snow, dustin \n" "${NC}"
AGAIN=$(("${AGAIN}"+1))
fi
fi
done
if [ "${CP_THEME}" = "" ]; then exit 1; fi
fi
}
read_password() {
CP_PASSWD=${1:-${CP_PASSWD}}
if [ "${CP_PASSWD}" = "" ]; then
_header "PASSWORD ADMIN PANEL"
AGAIN=1
while [ "${AGAIN}" -lt "10" ]
do
if [ ${1} ]
then
CP_PASSWD=${1}
CP_PASSWD=`echo ${CP_PASSWD} | iconv -c -t UTF-8`
echo ": ${CP_PASSWD}"
else
read -e -p ': ' -i "`echo ${RANDOM} | tr '[0-9]' '[a-z]'`${RANDOM}`echo ${RANDOM} | tr '[0-9]' '[a-z]'`" CP_PASSWD
CP_PASSWD=`echo ${CP_PASSWD} | iconv -c -t UTF-8`
fi
if [ "${CP_PASSWD}" != "" ]
then
if echo "${CP_PASSWD}" | grep -qE ^[a-zA-Z0-9]+$
then
AGAIN=10
else
printf "${NC} You entered: ${R}${CP_PASSWD}${NC} \n"
printf "${R}WARNING:${NC} Only latin characters and numbers! \n"
AGAIN=$((${AGAIN}+1))
fi
else
printf "${R}WARNING:${NC} Admin panel password cannot be empty. \n"
AGAIN=$((${AGAIN}+1))
fi
done
if [ "${CP_PASSWD}" = "" ]; then exit 1; fi
fi
}
read_key() {
CP_KEY=${1:-${CP_KEY}}
if [ "${CP_KEY}" = "" ]; then
_header "DATABASE KEY"
AGAIN=1
while [ "${AGAIN}" -lt "10" ]
do
if [ ${1} ]; then
CP_KEY=${1}
CP_KEY=`echo ${CP_KEY} | iconv -c -t UTF-8`
echo ": ${CP_KEY}"
else
read -e -p ': ' CP_KEY
CP_KEY=`echo ${CP_KEY} | iconv -c -t UTF-8`
fi
if [ "${CP_KEY}" != "" ]
then
if echo "${CP_KEY}" | grep -qE ^[A-Za-z0-9]+$
then
AGAIN=10
else
printf "${NC} You entered: ${R}${CP_KEY}${NC} \n "
printf "${R}WARNING:${NC} Only latin characters \n"
printf "${NC} and numbers are allowed! \n"
AGAIN=$((${AGAIN}+1))
fi
else
printf "${R}WARNING:${NC} You can purchase a key \n "
printf "${NC} in the admin panel of your website. \n "
AGAIN=$((${AGAIN}+1))
fi
done
if [ "${CP_KEY}" = "" ]; then exit 1; fi
fi
if [ "${CP_LANG}" = "" ]; then
L=`grep "\"language\"" /home/${CP_DOMAIN}/config/production/config.js`
CP_LANG=`echo "${L}" | sed 's/.*"language":\s*"\([a-z]*\)".*/\1/'`
if [ "${CP_LANG}" = "" ] \
|| [ "${CP_LANG}" = "${L}" ]; then
_header "ERROR";
_content
_content "Failed to determine"
_content "the language of the website."
_content
_s
exit 0
fi
fi
}
read_lang() {
CP_LANG=${1:-${CP_LANG}}
if [ "${CP_LANG}" = "" ]; then
_header "WEBSITE LANGUAGE"
AGAIN=1
while [ "${AGAIN}" -lt "10" ]
do
if [ ${1} ]
then
CP_LANG=${1}
CP_LANG=`echo ${CP_LANG} | iconv -c -t UTF-8`
echo ": ${CP_LANG}"
else
read -e -p ': ' -i "en" CP_LANG
CP_LANG=`echo ${CP_LANG} | iconv -c -t UTF-8`
fi
if [ "${CP_LANG}" = "" ]
then
AGAIN=10
CP_LANG='en'
echo ": ${CP_LANG}"
else
if [ "${CP_LANG}" = "ru" ] || [ "${CP_LANG}" = "en" ] || [ "${CP_LANG}" = "Русский" ] || [ "${CP_LANG}" = "English" ] || [ "${CP_LANG}" = "русский" ] || [ "${CP_LANG}" = "english" ]
then
if [ "${CP_LANG}" = "ru" ] || [ "${CP_LANG}" = "Русский" ] || [ "${CP_LANG}" = "русский" ]
then
CP_LANG="ru"
else
CP_LANG="en"
fi
AGAIN=10
else
printf "${NC} There is no such language! \n"
printf "${R}WARNING:${NC} Currently there are \n"
printf "${NC} languages: ru and en. \n"
AGAIN=$((${AGAIN}+1))
fi
fi
done
if [ "${CP_LANG}" = "" ]; then exit 1; fi
fi
}
read_cloudflare_zone_id() {
CLOUDFLARE_ZONE_ID=${1:-${CLOUDFLARE_ZONE_ID}}
if [ "${CLOUDFLARE_ZONE_ID}" = "" ]; then
_header "CLOUDFLARE ZONE ID"
AGAIN=1
while [ "${AGAIN}" -lt "10" ]
do
if [ ${1} ]
then
CLOUDFLARE_ZONE_ID=${1}
CLOUDFLARE_ZONE_ID=`echo ${CLOUDFLARE_ZONE_ID} | iconv -c -t UTF-8`
echo ": ${CLOUDFLARE_ZONE_ID}"
else
read -e -p ': ' CLOUDFLARE_ZONE_ID
CLOUDFLARE_ZONE_ID=`echo ${CLOUDFLARE_ZONE_ID} | iconv -c -t UTF-8`
fi
if [ "${CLOUDFLARE_ZONE_ID}" != "" ]
then
if echo "${CLOUDFLARE_ZONE_ID}" | grep -qE ^[.a-zA-Z0-9-]+$
then
AGAIN=10
else
printf "${NC} You entered: ${R}${CLOUDFLARE_ZONE_ID}${NC} \n"
printf "${R}WARNING:${NC} Only latin characters \n"
printf "${NC} and numbers are allowed! \n"
AGAIN=$((${AGAIN}+1))
fi
fi
done
if [ "${CLOUDFLARE_ZONE_ID}" = "" ]; then exit 1; fi
fi
}
read_cloudflare_email() {
CLOUDFLARE_EMAIL=${1:-${CLOUDFLARE_EMAIL}}
if [ "${CLOUDFLARE_EMAIL}" = "" ]; then
_header "CLOUDFLARE EMAIL"
AGAIN=1
while [ "${AGAIN}" -lt "10" ]
do
if [ ${1} ]
then
CLOUDFLARE_EMAIL=${1}
CLOUDFLARE_EMAIL=`echo ${CLOUDFLARE_EMAIL} | iconv -c -t UTF-8`
echo ": ${CLOUDFLARE_EMAIL}"
else
read -e -p ': ' CLOUDFLARE_EMAIL
CLOUDFLARE_EMAIL=`echo ${CLOUDFLARE_EMAIL} | iconv -c -t UTF-8`
fi
if [ "${CLOUDFLARE_EMAIL}" != "" ]
then
if echo "${CLOUDFLARE_EMAIL}" | grep -qE ^[.a-zA-Z0-9@_-]+$
then
AGAIN=10
else
printf "${NC} You entered: ${R}${CLOUDFLARE_EMAIL}${NC} \n"
printf "${R}WARNING:${NC} Only latin characters, @, numbers, \n"
printf "${NC} dots, underscore and hyphens are allowed! \n"
AGAIN=$((${AGAIN}+1))
fi
fi
done
if [ "${CLOUDFLARE_EMAIL}" = "" ]; then exit 1; fi
fi
}
read_cloudflare_api_key() {
CLOUDFLARE_API_KEY=${1:-${CLOUDFLARE_API_KEY}}
if [ "${CLOUDFLARE_API_KEY}" = "" ]; then
_header "CLOUDFLARE API KEY"
AGAIN=1
while [ "${AGAIN}" -lt "10" ]
do
if [ ${1} ]
then
CLOUDFLARE_API_KEY=${1}
CLOUDFLARE_API_KEY=`echo ${CLOUDFLARE_API_KEY} | iconv -c -t UTF-8`
echo ": ${CLOUDFLARE_API_KEY}"
else
read -e -p ': ' CLOUDFLARE_API_KEY
CLOUDFLARE_API_KEY=`echo ${CLOUDFLARE_API_KEY} | iconv -c -t UTF-8`
fi
if [ "${CLOUDFLARE_API_KEY}" != "" ]
then
if echo "${CLOUDFLARE_API_KEY}" | grep -qE ^[.a-zA-Z0-9-]+$
then
AGAIN=10
else
printf "${NC} You entered: ${R}${CLOUDFLARE_API_KEY}${NC} \n"
printf "${R}WARNING:${NC} Only latin characters \n"
printf "${NC} and numbers are allowed! \n"
AGAIN=$((${AGAIN}+1))
fi
fi
done
if [ "${CLOUDFLARE_API_KEY}" = "" ]; then exit 1; fi
fi
}
read_mega_email() {
MEGA_EMAIL=${1:-${MEGA_EMAIL}}
if [ "${MEGA_EMAIL}" = "" ]; then
_header "BACKUP EMAIL"
AGAIN=1
while [ "${AGAIN}" -lt "10" ]
do
if [ ${1} ]
then
MEGA_EMAIL=${1}
MEGA_EMAIL=`echo ${MEGA_EMAIL} | iconv -c -t UTF-8`
echo ": ${MEGA_EMAIL}"
else
read -e -p ': ' MEGA_EMAIL
MEGA_EMAIL=`echo ${MEGA_EMAIL} | iconv -c -t UTF-8`
fi
if [ "${MEGA_EMAIL}" != "" ]
then
if echo "${MEGA_EMAIL}" | grep -qE ^[.a-zA-Z0-9@_-]+$
then
AGAIN=10
else
printf "${NC} You entered: ${R}${MEGA_EMAIL}${NC} \n"
printf "${R}WARNING:${NC} Only latin characters, @, numbers, \n"
printf "${NC} dots, underscore and hyphens are allowed! \n"
AGAIN=$((${AGAIN}+1))
fi
fi
done
if [ "${MEGA_EMAIL}" = "" ]; then exit 1; fi
fi
}
read_mega_password() {
MEGA_PASSWORD=${1:-${MEGA_PASSWORD}}
if [ "${MEGA_PASSWORD}" = "" ]; then
_header "BACKUP PASSWORD"
AGAIN=1
while [ "${AGAIN}" -lt "10" ]
do
if [ ${1} ]
then
MEGA_PASSWORD=${1}
MEGA_PASSWORD=`echo ${MEGA_PASSWORD} | iconv -c -t UTF-8`
echo ": ${MEGA_PASSWORD}"
else
read -e -p ': ' MEGA_PASSWORD
MEGA_PASSWORD=`echo ${MEGA_PASSWORD} | iconv -c -t UTF-8`
fi
if [ "${MEGA_PASSWORD}" != "" ]
then
if echo "${MEGA_PASSWORD}" | grep -qE ^[.a-zA-Z0-9@_-!?]+$
then
AGAIN=10
else
printf "${NC} You entered: ${R}${MEGA_PASSWORD}${NC} \n"
printf "${R}WARNING:${NC} Only latin characters \n"
printf "${NC} and numbers are allowed! \n"
AGAIN=$((${AGAIN}+1))
fi
fi
done
if [ "${MEGA_PASSWORD}" = "" ]; then exit 1; fi
fi
}
read_cms() {
NAME_CMS=${1:-${NAME_CMS}}
if [ "${NAME_CMS}" = "" ]; then
_header "NAME CMS"
AGAIN=1
while [ "${AGAIN}" -lt "10" ]
do
if [ ${1} ]
then
NAME_CMS=${1}
NAME_CMS=`echo ${NAME_CMS} | iconv -c -t UTF-8`
echo ": ${NAME_CMS}"
else
read -e -p ': ' -i "php-mysql" NAME_CMS
NAME_CMS=`echo ${NAME_CMS} | iconv -c -t UTF-8`
fi
if [ "${NAME_CMS}" = "" ]
then
AGAIN=10
NAME_CMS='php-mysql'
echo ": ${NAME_CMS}"
else
if [ "${NAME_CMS}" = "php-mysql" ] || [ "${NAME_CMS}" = "wordpress" ] || [ "${NAME_CMS}" = "drupal" ] || [ "${NAME_CMS}" = "joomla" ] || [ "${NAME_CMS}" = "dle" ] || [ "${NAME_CMS}" = "backup" ]
then
AGAIN=10
else
printf "${NC} There is no such CMS! \n"
printf "${R}WARNING:${NC} Currently there are \n"
printf "${NC} CMS: wordpress, drupal, joomla, dle and php-mysql. \n"
AGAIN=$((${AGAIN}+1))
fi
fi
done
if [ "${NAME_CMS}" = "" ]; then exit 1; fi
fi
}
read_os() {
NAME_OS=${1:-${NAME_OS}}
if [ "${NAME_OS}" = "" ]; then
_header "NAME OS"
AGAIN=1
while [ "${AGAIN}" -lt "10" ]
do
if [ ${1} ]
then
NAME_OS=${1}
NAME_OS=`echo ${NAME_OS} | iconv -c -t UTF-8`
echo ": ${NAME_OS}"
else
read -e -p ': ' -i "windows" NAME_OS
NAME_OS=`echo ${NAME_OS} | iconv -c -t UTF-8`
fi
if [ "${NAME_OS}" = "" ]
then
AGAIN=10
NAME_OS='windows'
echo ": ${NAME_OS}"
else
if [ "${NAME_OS}" = "macos" ] || [ "${NAME_OS}" = "ios" ] || [ "${NAME_OS}" = "apple" ]
then
NAME_OS="osx"
fi
if [ "${NAME_OS}" = "windows" ] || [ "${NAME_OS}" = "linux" ] || [ "${NAME_OS}" = "osx" ]
then
AGAIN=10
else
printf "${NC} There is no such OS! \n"
printf "${R}WARNING:${NC} Currently there are \n"
printf "${NC} OS: windows, linux and osx. \n"
AGAIN=$((${AGAIN}+1))
fi
fi
done
if [ "${NAME_OS}" = "" ]; then exit 1; fi
fi
}
read_app() {
APP_DOMAIN=${1:-${APP_DOMAIN}}
if [ "${APP_DOMAIN}" = "" ]; then
_header "DOMAIN NAME FOR SPLASH SCREEN"
AGAIN=1
while [ "${AGAIN}" -lt "10" ]
do
if [ ${1} ]
then
APP_DOMAIN=${1}
APP_DOMAIN=`echo ${APP_DOMAIN} | iconv -c -t UTF-8`
echo ": ${APP_DOMAIN}"
else
read -e -p ': ' APP_DOMAIN
APP_DOMAIN=`echo ${APP_DOMAIN} | iconv -c -t UTF-8`
fi
if [ "${APP_DOMAIN}" != "" ]
then
if echo "${APP_DOMAIN}" | grep -qE ^[.a-z0-9-]+$
then
APP_DOMAIN_=`echo ${APP_DOMAIN} | sed -r "s/[^A-Za-z0-9]/_/g" | sed -r "s/www\.//g" | sed -r "s/http:\/\///g" | sed -r "s/https:\/\///g"`
AGAIN=10
else
printf "${NC} You entered: ${R}${APP_DOMAIN}${NC} \n"
printf "${R}WARNING:${NC} Only latin lowercase characters, \n"
printf "${NC} numbers, dots, and hyphens are allowed! \n"
AGAIN=$((${AGAIN}+1))
fi
else
printf "${R}WARNING:${NC} Domain name for splash screen cannot be blank. \n"
AGAIN=$((${AGAIN}+1))
fi
done
if [ "${APP_DOMAIN}" = "" ]; then exit 1; fi
fi
APP_DOMAIN_=`echo ${APP_DOMAIN} | sed -r "s/[^A-Za-z0-9]/_/g"`
}
read_import() {
IMPORT_DOMAIN=${1:-${IMPORT_DOMAIN}}
if [ "${IMPORT_DOMAIN}" = "" ]; then
_header "IMPORT DOMAIN NAME"
AGAIN=1
while [ "${AGAIN}" -lt "10" ]
do
if [ ${1} ]
then
IMPORT_DOMAIN=${1}
IMPORT_DOMAIN=`echo ${IMPORT_DOMAIN} | iconv -c -t UTF-8`
echo ": ${IMPORT_DOMAIN}"
else
read -e -p ': ' IMPORT_DOMAIN
IMPORT_DOMAIN=`echo ${IMPORT_DOMAIN} | iconv -c -t UTF-8`
fi
if [ "${IMPORT_DOMAIN}" != "" ]
then
if echo "${IMPORT_DOMAIN}" | grep -qE ^[.a-z0-9-]+$
then
IMPORT_DOMAIN_=`echo ${IMPORT_DOMAIN} | sed -r "s/[^A-Za-z0-9]/_/g" | sed -r "s/www\.//g" | sed -r "s/http:\/\///g" | sed -r "s/https:\/\///g"`
AGAIN=10
else
printf "${NC} You entered: ${R}${IMPORT_DOMAIN}${NC} \n"
printf "${R}WARNING:${NC} Only latin lowercase characters, \n"
printf "${NC} numbers, dots, and hyphens are allowed! \n"
AGAIN=$((${AGAIN}+1))
fi
else
printf "${R}WARNING:${NC} Import domain name cannot be blank. \n"
AGAIN=$((${AGAIN}+1))
fi
done
if [ "${IMPORT_DOMAIN}" = "" ]; then exit 1; fi
fi
IMPORT_DOMAIN_=`echo ${IMPORT_DOMAIN} | sed -r "s/[^A-Za-z0-9]/_/g"`
}
read_bomain() {
CP_BOMAIN=${1:-${CP_BOMAIN}}
if [ "${CP_BOMAIN}" = "" ]; then
_header "DOMAIN FOR BOTS / ALTERNATE DOMAIN"
AGAIN=1
while [ "${AGAIN}" -lt "10" ]
do
if [ ${1} ]
then
CP_BOMAIN=${1}
CP_BOMAIN=`echo ${CP_BOMAIN} | iconv -c -t UTF-8`
echo ": ${CP_BOMAIN}"
else
read -e -p ': ' CP_BOMAIN
CP_BOMAIN=`echo ${CP_BOMAIN} | iconv -c -t UTF-8`
fi
if [ "${CP_BOMAIN}" != "" ]
then
if echo "${CP_BOMAIN}" | grep -qE ^[.a-z0-9-]+$
then
if [ "${CP_DOMAIN}" = "${CP_BOMAIN}" ]
then
printf "${R}WARNING:${NC} The alternate domain cannot be \n"
printf "${NC} the same as the domain for users! \n"
AGAIN=$((${AGAIN}+1))
else
CP_BOMAIN_=`echo ${CP_BOMAIN} | sed -r "s/[^A-Za-z0-9]/_/g" | sed -r "s/www\.//g" | sed -r "s/http:\/\///g" | sed -r "s/https:\/\///g"`
AGAIN=10
fi
else
printf "${NC} You entered: ${R}${CP_BOMAIN}${NC} \n"
printf "${R}WARNING:${NC} Only latin lowercase characters, \n"
printf "${NC} numbers, dots, and hyphens are allowed! \n"
AGAIN=$((${AGAIN}+1))
fi
else
printf "${R}WARNING:${NC} Alternate domain name cannot be blank. \n"
AGAIN=$((${AGAIN}+1))
fi
done
if [ "${CP_BOMAIN}" = "" ]; then exit 1; fi
fi
CP_BOMAIN_=`echo ${CP_BOMAIN} | sed -r "s/[^A-Za-z0-9]/_/g" | sed -r "s/www\.//g" | sed -r "s/http:\/\///g" | sed -r "s/https:\/\///g"`
}
read_mode() {
CP_MODE=${1:-${CP_MODE}}
if [ "${CP_MODE}" = "" ]; then
_header "MODE debug/production"
AGAIN=1
while [ "${AGAIN}" -lt "10" ]
do
if [ ${1} ]
then
CP_MODE=${1}
CP_MODE=$(echo ${CP_MODE} | iconv -c -t UTF-8)
echo ": ${CP_MODE}"
else
read -e -p ': ' -i "production" CP_MODE
CP_MODE=$(echo ${CP_MODE} | iconv -c -t UTF-8)
fi
if [ "${CP_MODE}" = "" ]
then
AGAIN=10
CP_MODE='production'
echo ": ${CP_MODE}"
else
if [ "${CP_MODE}" = "production" ] || [ "${CP_MODE}" = "debug" ]
then
AGAIN=10
else
printf "%b There is no mode! \n" "${NC}"
printf "%bWARNING:%b Currently: debug, production \n" "${R}" "${NC}"
AGAIN=$(("${AGAIN}"+1))
fi
fi
done
if [ "${CP_MODE}" = "" ]; then exit 1; fi
fi
}
read_ftp_name() {
FTP_NAME=${1:-${FTP_NAME}}
if [ "${FTP_NAME}" = "" ]; then
_header "FTP NAME"
AGAIN=1
while [ "${AGAIN}" -lt "10" ]
do
if [ ${1} ]
then
FTP_NAME=${1}
FTP_NAME=`echo ${FTP_NAME} | iconv -c -t UTF-8`
echo ": ${FTP_NAME}"
else
AUTO_FTP_NAME=""
for N in {1..9}; do
CINEMATORRENT=$(docker exec -t "${CP_DOMAIN_}" rclone config show 2>/dev/null | grep "CINEMATORRENT${N}")
if [ "${CINEMATORRENT}" = "" ]; then
AUTO_FTP_NAME="CINEMATORRENT${N}"
break
fi
done
read -e -p ': ' -i "${AUTO_FTP_NAME}" FTP_NAME
FTP_NAME=`echo ${FTP_NAME} | iconv -c -t UTF-8`
fi
if [ "${FTP_NAME}" != "" ]
then
if echo "${FTP_NAME}" | grep -qE ^[A-Z0-9]+$
then
AGAIN=10
else
printf "${NC} You entered: ${R}${FTP_NAME}${NC} \n"
printf "${R}WARNING:${NC} Only upper case latin characters \n"
printf "${NC} and numbers are allowed! \n"
AGAIN=$((${AGAIN}+1))
fi
fi
done
if [ "${FTP_NAME}" = "" ]; then exit 1; fi
fi
}
read_ftp_username() {
FTP_USERNAME=${1:-${FTP_USERNAME}}
if [ "${FTP_USERNAME}" = "" ]; then
_header "FTP USERNAME"
AGAIN=1
while [ "${AGAIN}" -lt "10" ]
do
if [ ${1} ]
then
FTP_USERNAME=${1}
FTP_USERNAME=`echo ${FTP_USERNAME} | iconv -c -t UTF-8`
echo ": ${FTP_USERNAME}"
else
read -e -p ': ' FTP_USERNAME
FTP_USERNAME=`echo ${FTP_USERNAME} | iconv -c -t UTF-8`
fi
if [ "${FTP_USERNAME}" != "" ]
then
if echo "${FTP_USERNAME}" | grep -qE ^[.a-zA-Z0-9@_-]+$
then
AGAIN=10
else
printf "${NC} You entered: ${R}${FTP_USERNAME}${NC} \n"
printf "${R}WARNING:${NC} Only latin characters, @, numbers, \n"
printf "${NC} dots, underscore and hyphens are allowed! \n"
AGAIN=$((${AGAIN}+1))
fi
fi
done
if [ "${FTP_USERNAME}" = "" ]; then exit 1; fi
fi
}
read_ftp_password() {
FTP_PASSWORD=${1:-${FTP_PASSWORD}}
if [ "${FTP_PASSWORD}" = "" ]; then
_header "FTP PASSWORD"
AGAIN=1
while [ "${AGAIN}" -lt "10" ]
do
if [ ${1} ]
then
FTP_PASSWORD=${1}
FTP_PASSWORD=`echo ${FTP_PASSWORD} | iconv -c -t UTF-8`
echo ": ${FTP_PASSWORD}"
else
read -e -p ': ' FTP_PASSWORD
FTP_PASSWORD=`echo ${FTP_PASSWORD} | iconv -c -t UTF-8`
fi
if [ "${FTP_PASSWORD}" != "" ]
then
AGAIN=10
fi
done
if [ "${FTP_PASSWORD}" = "" ]; then exit 1; fi
fi
}
read_ftp_hostname() {
FTP_HOSTNAME=${1:-${FTP_HOSTNAME}}
if [ "${FTP_HOSTNAME}" = "" ]; then
_header "FTP HOSTNAME"
AGAIN=1
while [ "${AGAIN}" -lt "10" ]
do
if [ ${1} ]
then
FTP_HOSTNAME=${1}
FTP_HOSTNAME=`echo ${FTP_HOSTNAME} | iconv -c -t UTF-8`
echo ": ${FTP_HOSTNAME}"
else
read -e -p ': ' FTP_HOSTNAME
FTP_HOSTNAME=`echo ${FTP_HOSTNAME} | iconv -c -t UTF-8`
fi
if [ "${FTP_HOSTNAME}" != "" ]
then
if echo "${FTP_HOSTNAME}" | grep -qE ^[.:a-zA-Z0-9-]+$
then
AGAIN=10
else
printf "${NC} You entered: ${R}${FTP_HOSTNAME}${NC} \n"
printf "${R}WARNING:${NC} Only latin characters, numbers, \n"
printf "${NC} dots and hyphens are allowed! \n"
AGAIN=$((${AGAIN}+1))
fi
fi
done
if [ "${FTP_HOSTNAME}" = "" ]; then exit 1; fi
fi
}
sh_yes() {
if [ -f "/home/${CP_DOMAIN}/process.json" ]; then
clear
_line
_logo
_header "${CP_DOMAIN}";
_content
_content "Website on this domain is installed!"
_content
if [ -n "${1}" ]; then
docker exec "${CP_DOMAIN_}" /usr/bin/cinemapress container "passwd" "${1}" \
>>/var/log/docker_passwd_"$(date '+%d_%m_%Y')".log 2>&1
docker exec nginx nginx -s reload \
>>/var/log/docker_passwd_"$(date '+%d_%m_%Y')".log 2>&1
_content "USERNAME: admin"
_content "PASSWORD: ${1}"
_content
_content "Reboot after 10 seconds ..."
_content "To cancel, press Ctrl + C"
_content
_s
sleep 10
reboot
fi
_s
exit 0
fi
}
sh_not() {
if [ ! -f "/home/${CP_DOMAIN}/process.json" ] && [ ! -f "/home/${CP_DOMAIN}/index.php" ]; then
clear
_line
_logo
_header "${CP_DOMAIN}";
_content
_content "Website on this domain is not installed!"
_content
_s
exit 0
fi
}
sh_random() {
FLOOR=${1}
RANGE=${2}
number=0
while [ "${number}" -le ${FLOOR} ]
do
number=$RANDOM
let "number %= $RANGE"
done
echo ${number}
}
sh_wget() {
local flag=false c count cr=$'\r' nl=$'\n'
while IFS='' read -d '' -rn 1 c
do
if $flag
then
printf '%s' "$c"
else
if [[ $c != $cr && $c != $nl ]]
then
count=0
else
((count++))
if ((count > 1))
then
flag=true
fi
fi
fi
done
}
sh_progress() {
if [ "${PRC_}" = "" ]; then PRC_=0; fi
if [ "${1}" != "" ]; then PRC_=${1}; fi
LR='\033[1;31m'; LG='\033[1;32m'; LY='\033[1;33m'; LC='\033[1;36m'; LW='\033[1;37m'; NC='\033[0m'
if [ "${PRC_}" = "0" ]; then TME=$(date +"%s"); fi
SEC=`printf "%04d\n" $(($(date +"%s")-${TME}))`; SEC="$SEC sec"
PRC=`printf "%.0f" ${PRC_}`
SHW=`printf "%3d\n" ${PRC}`
LNE=`printf "%.0f" $((${PRC}/2))`
LRR=`printf "%.0f" $((${PRC}/2-12))`; if [ ${LRR} -le 0 ]; then LRR=0; fi;
LYY=`printf "%.0f" $((${PRC}/2-24))`; if [ ${LYY} -le 0 ]; then LYY=0; fi;
LCC=`printf "%.0f" $((${PRC}/2-36))`; if [ ${LCC} -le 0 ]; then LCC=0; fi;
LGG=`printf "%.0f" $((${PRC}/2-48))`; if [ ${LGG} -le 0 ]; then LGG=0; fi;
LRR_=""; LYY_=""; LCC_=""; LGG_=""
for ((i=1;i<=13;i++))
do
DOTS=""; for ((ii=${i};ii<13;ii++)); do DOTS="${DOTS}."; done
if [ ${i} -le ${LNE} ]; then LRR_="${LRR_}#"; else LRR_="${LRR_}."; fi
echo -ne " ${LW}${SEC} ${LR}${LRR_}${DOTS}${LY}............${LC}............${LG}............ ${SHW}%${NC}\r"
if [ ${LNE} -ge 1 ]; then sleep .05; fi
done
for ((i=14;i<=25;i++))
do
DOTS=""; for ((ii=${i};ii<25;ii++)); do DOTS="${DOTS}."; done
if [ ${i} -le ${LNE} ]; then LYY_="${LYY_}#"; else LYY_="${LYY_}."; fi
echo -ne " ${LW}${SEC} ${LR}${LRR_}${LY}${LYY_}${DOTS}${LC}............${LG}............ ${SHW}%${NC}\r"
if [ ${LNE} -ge 14 ]; then sleep .05; fi
done
for ((i=26;i<=37;i++))
do
DOTS=""; for ((ii=${i};ii<37;ii++)); do DOTS="${DOTS}."; done
if [ ${i} -le ${LNE} ]; then LCC_="${LCC_}#"; else LCC_="${LCC_}."; fi
echo -ne " ${LW}${SEC} ${LR}${LRR_}${LY}${LYY_}${LC}${LCC_}${DOTS}${LG}............ ${SHW}%${NC}\r"
if [ ${LNE} -ge 26 ]; then sleep .05; fi
done
for ((i=38;i<=49;i++))
do
DOTS=""; for ((ii=${i};ii<49;ii++)); do DOTS="${DOTS}."; done
if [ ${i} -le ${LNE} ]; then LGG_="${LGG_}#"; else LGG_="${LGG_}."; fi
echo -ne " ${LW}${SEC} ${LR}${LRR_}${LY}${LYY_}${LC}${LCC_}${LG}${LGG_}${DOTS} ${SHW}%${NC}\r"
if [ ${LNE} -ge 38 ]; then sleep .05; fi
done
if [ "${PRC}" = "100" ]; then
printf "\n\n${NC}"
fi
PRC_=$((10+${PRC_}))
if [ ${PRC_} -gt 100 ]; then PRC_=100; fi
}
_content_l() {
__C=${1}; _M=$((${#__C})); _L=1; _R=$((57-${_M})); L_=""; R_=""
if [ "$((${#__C}%2))" != "0" ]; then _R=$((${_R})); fi
for ((l=1;l<=${_L};l++)); do L_=" ${L_}"; done
for ((r=1;r<=${_R};r++)); do R_=" ${R_}"; done
printf "${C}----${NC}${L_}${1}${R_}${C}----\n${NC}"
}
_content() {
__C=${1}; _M=$((${#__C}/2)); _L=$((29-${_M})); _R=$((29-${_M})); L_=""; R_=""
if [ "$((${#__C}%2))" != "0" ]; then _R=$((${_R}-1)); fi
for ((l=1;l<=${_L};l++)); do L_=" ${L_}"; done
for ((r=1;r<=${_R};r++)); do R_=" ${R_}"; done
printf "${C}----${NC}${L_}${1}${R_}${C}----\n${NC}"
}
_header() {
_C=${1}; _M=$((${#_C}/2)); _L=$((31-${_M})); _R=$((31-${_M})); L_=""; R_=""
if [ "$((${#_C}%2))" != "0" ]; then _R=$((${_R}-1)); fi
for ((l=1;l<=${_L};l++)); do L_="-${L_}"; done
for ((r=1;r<=${_R};r++)); do R_="-${R_}"; done
printf "${C}${L_}[ ${Y}${1}${C} ]${R_}\n${NC}"
}
_logo() {
printf " ${B} _______ ${G}_ ${B} ______ ${G} \n"
printf " ${B}(_______${G}|_) ${B}(_____ \ ${G} \n"
printf " ${B} _ ${G} _ ____ _____ ____ _____${B} _____) )${G}___ _____ ___ ___ \n"
printf " ${B}| | ${G}| | _ \| ___ | \(____ ${B}| ____/ ${G}___) ___ |/___)/___) \n"
printf " ${B}| |_____${G}| | | | | ____| | | / ___ ${B}| | ${G}| | | ____|___ |___ | \n"
printf " ${B} \______)${G}_|_| |_|_____)_|_|_\_____${B}|_| ${G}|_| |_____|___/(___/ \n"
printf "\n${NC}"
}
_line() {
printf "${C}------------------------------------------------------------------\n${NC}"
}
_br() {
if [ "${1}" = "" ]; then
printf "\n${NC}"
fi
}
_s() {
if [ "${1}" = "" ]; then
_line
_br
else
_br
fi
}
docker_run() {
if [ ! -d "/home/${CP_DOMAIN}/config/production" ]; then
find /var/cinemapress -maxdepth 1 -type f -iname '\.gitkeep' -delete
cp -rf /var/cinemapress/* /home/"${CP_DOMAIN}"
rm -rf /var/cinemapress/* /var/${CP_THEME:?}
cp -rf /home/"${CP_DOMAIN}"/config/locales/${CP_LANG}/default/sphinx/source.xml /etc/sphinx/source.xml
rm -rf /home/"${CP_DOMAIN}"/config/locales/${CP_LANG}/default/sphinx
cp -rf /home/"${CP_DOMAIN}"/config/locales/${CP_LANG}/* /home/"${CP_DOMAIN}"/config/
cp -rf /home/"${CP_DOMAIN}"/config/default/* /home/"${CP_DOMAIN}"/config/production/
cp -rf /home/"${CP_DOMAIN}"/files/bbb.mp4 /var/local/balancer/bbb.mp4
sed -Ei "s/127.0.0.1:3000/${CP_DOMAIN_}:3000/g" /home/"${CP_DOMAIN}"/config/production/nginx/conf.d/default.conf
sed -Ei "s/example_com/${CP_DOMAIN_}/g" /home/"${CP_DOMAIN}"/config/production/nginx/conf.d/default.conf
sed -Ei "s/example_com/${CP_DOMAIN_}/g" /home/"${CP_DOMAIN}"/config/production/nginx/error.d/default.conf
sed -Ei "s/example_com/${CP_DOMAIN_}/g" /home/"${CP_DOMAIN}"/config/production/nginx/ssl.d/default.conf
sed -Ei "s/example_com/${CP_DOMAIN_}/g" /home/"${CP_DOMAIN}"/config/production/nginx/any.d/default.conf
sed -Ei "s/example_com/${CP_DOMAIN_}/g" /home/"${CP_DOMAIN}"/config/production/config.js
sed -Ei "s/example_com/${CP_DOMAIN_}/g" /home/"${CP_DOMAIN}"/config/default/config.js
sed -Ei "s/example_com/${CP_DOMAIN_}/g" /home/"${CP_DOMAIN}"/process.json
sed -Ei "s/example_com/${CP_DOMAIN_}/g" /etc/sphinx/sphinx.conf
sed -Ei "s/example_com/${CP_DOMAIN_}/g" /etc/sphinx/source.xml
sed -Ei "s/example\.com/${CP_DOMAIN}/g" /home/"${CP_DOMAIN}"/config/production/nginx/conf.d/default.conf
sed -Ei "s/example\.com/${CP_DOMAIN}/g" /home/"${CP_DOMAIN}"/config/production/nginx/error.d/default.conf
sed -Ei "s/example\.com/${CP_DOMAIN}/g" /home/"${CP_DOMAIN}"/config/production/nginx/ssl.d/default.conf
sed -Ei "s/example\.com/${CP_DOMAIN}/g" /home/"${CP_DOMAIN}"/config/production/nginx/any.d/default.conf
sed -Ei "s/example\.com/${CP_DOMAIN}/g" /home/"${CP_DOMAIN}"/config/production/config.js
sed -Ei "s/example\.com/${CP_DOMAIN}/g" /home/"${CP_DOMAIN}"/config/default/config.js
sed -Ei "s/example\.com/${CP_DOMAIN}/g" /home/"${CP_DOMAIN}"/process.json
sed -Ei "s/example\.com/${CP_DOMAIN}/g" /etc/sphinx/sphinx.conf
sed -Ei "s/example\.com/${CP_DOMAIN}/g" /etc/sphinx/source.xml
sed -Ei "s/\"theme\":\s*\"[a-zA-Z0-9-]*\"/\"theme\":\"${CP_THEME}\"/" /home/"${CP_DOMAIN}"/config/production/config.js
cp -rf /home/"${CP_DOMAIN}"/config/production/config.js /home/"${CP_DOMAIN}"/config/production/config.prev.js
cp -rf /home/"${CP_DOMAIN}"/config/production/modules.js /home/"${CP_DOMAIN}"/config/production/modules.prev.js
cp -rf /home/"${CP_DOMAIN}"/config/production/config.js /home/"${CP_DOMAIN}"/config/production/config.backup.js
cp -rf /home/"${CP_DOMAIN}"/config/production/modules.js /home/"${CP_DOMAIN}"/config/production/modules.backup.js
git clone https://${GIT_SERVER}/CinemaPress/Theme-${CP_THEME}.git /var/${CP_THEME}
mkdir -p /home/"${CP_DOMAIN}"/themes/${CP_THEME}/
cp -rf /var/${CP_THEME}/* /home/"${CP_DOMAIN}"/themes/${CP_THEME}/
node /home/"${CP_DOMAIN}"/optimal.js
OPENSSL=$(echo "${CP_PASSWD}" | openssl passwd -1 -stdin -salt CP)
echo "admin:${OPENSSL}" > /home/"${CP_DOMAIN}"/config/production/nginx/pass.d/"${CP_DOMAIN}".pass
echo "${CP_DOMAIN}:${OPENSSL}" >> /home/"${CP_DOMAIN}"/config/production/nginx/pass.d/"${CP_DOMAIN}".pass
if [ "${CP_IP}" = "ip" ]; then rm -rf /home/"${CP_DOMAIN}"/config/production/nginx/conf.d/default.conf; fi
if [ ! -f "/var/lib/sphinx/data/movies_${CP_DOMAIN_}.sps" ]; then indexer --all; fi
sleep 5
searchd
sleep 5
node /home/"${CP_DOMAIN}"/config/update/default.js
if [ ! -f "/var/log/${CP_DOMAIN_}.pid" ]; then
nohup /usr/bin/cinemapress container cron run >"/var/log/${CP_DOMAIN_}.log" 2>&1 &
echo $! >"/var/log/${CP_DOMAIN_}.pid"
fi
else
searchd
node /home/"${CP_DOMAIN}"/config/update/config.js
#node /home/"${CP_DOMAIN}"/config/update/mirror.js
fi
crond -L /var/log/cron.log
cd /home/"${CP_DOMAIN}" && pm2-runtime start process.json
}
docker_stop() {
sed -Ei "s/\/\/app\.use\(rebooting\(\)\);/app\.use\(rebooting\(\)\);/" "/home/${CP_DOMAIN}/app.js"
touch "/home/${CP_DOMAIN}/.uptimerobot"
pm2 reload all
searchd --stop
killall crond
sleep 5
}
docker_start() {
sed -Ei "s/app\.use\(rebooting\(\)\);/\/\/app\.use\(rebooting\(\)\);/" "/home/${CP_DOMAIN}/app.js"
rm -f "/home/${CP_DOMAIN}/.uptimerobot"
searchd
crond -L /var/log/cron.log
node /home/"${CP_DOMAIN}"/config/update/config.js
cd /home/"${CP_DOMAIN}" && pm2 delete process.json && pm2 start process.json
}
docker_restart() {
docker_stop
docker_start
}
docker_reload() {
cd /home/"${CP_DOMAIN}" && pm2 reload process.json
}
docker_logs() {
SHOW_ERR_LOGS=$(pm2 logs --err --lines 50 --nostream | curl -s -F 'clbin=<-' https://clbin.com)
SHOW_OUT_LOGS=$(pm2 logs --out --lines 50 --nostream | curl -s -F 'clbin=<-' https://clbin.com)
_header "ERR LOGS"
_content
_content "${SHOW_ERR_LOGS}"
_content
_header "OUT LOGS"
_content
_content "${SHOW_OUT_LOGS}"
_content
_s
}
docker_zero() {
if [ -n "${1}" ]; then
sed -E -i "s/\"CP_XMLPIPE2\":\s*\"[a-zA-Z0-9_| -]*\"/\"CP_XMLPIPE2\":\"xmlpipe2_${CP_DOMAIN_}\"/" \
/home/"${CP_DOMAIN}"/process.json
sed -Ei "s/\"only_realtime\":\s*[0-9]*/\"only_realtime\":0/" \
/home/"${CP_DOMAIN}"/config/production/config.js
else
sed -E -i "s/\"CP_XMLPIPE2\":\s*\"[a-zA-Z0-9_| -]*\"/\"CP_XMLPIPE2\":\"rt_${CP_DOMAIN_}\"/" \
/home/"${CP_DOMAIN}"/process.json
sed -Ei "s/\"only_realtime\":\s*[0-9]*/\"only_realtime\":1/" \
/home/"${CP_DOMAIN}"/config/production/config.js
fi
cd /home/"${CP_DOMAIN}" && pm2 delete process.json && pm2 start process.json
}
docker_zero_rt() {
searchd --stop
sleep 2
rm -rf /home/"${CP_DOMAIN}"/config/rt/* /home/"${CP_DOMAIN}"/config/binlog/*
searchd
cd /home/"${CP_DOMAIN}" && pm2 delete process.json && pm2 start process.json
}
docker_hand() {
if [ -n "${1}" ]; then
node /home/"${CP_DOMAIN}"/config/update/hand.js "player"
else
node /home/"${CP_DOMAIN}"/config/update/hand.js
fi
}
docker_movies() {
if [ -n "${1}" ]; then
if [ -f /home/"${CP_DOMAIN}"/log/cron_movies.pid ]; then
MOVIES_PID=$(cat /home/"${CP_DOMAIN}"/log/cron_movies.pid)
kill -9 "${MOVIES_PID}"
rm -f /home/"${CP_DOMAIN}"/log/cron_movies.pid
fi
echo $$ >/home/"${CP_DOMAIN}"/log/cron_movies.pid
node /home/"${CP_DOMAIN}"/lib/CP_movies.js "run"
rm -f /home/"${CP_DOMAIN}"/log/cron_movies.pid
else
if [ ! -f /home/"${CP_DOMAIN}"/log/cron_movies.pid ]; then
echo $$ >/home/"${CP_DOMAIN}"/log/cron_movies.pid
node /home/"${CP_DOMAIN}"/lib/CP_movies.js
rm -f /home/"${CP_DOMAIN}"/log/cron_movies.pid
else
echo "[SKIP] The autocomplete movies of the previous task has not finished yet!"
fi
fi
}
docker_cron() {
nohup /usr/bin/cinemapress torrent "${CP_DOMAIN}" upload \
>> /home/"${CP_DOMAIN}"/log/torrent_"$(date '+%d_%m_%Y')".log 2>&1 &
if [ ! -f /home/"${CP_DOMAIN}"/log/cron_movies.pid ]; then
echo $$ >/home/"${CP_DOMAIN}"/log/cron_movies.pid
if [ -n "${1}" ]; then
node /home/"${CP_DOMAIN}"/lib/CP_movies.js "run"
else
node /home/"${CP_DOMAIN}"/lib/CP_movies.js
fi
rm -f /home/"${CP_DOMAIN}"/log/cron_movies.pid
else
echo "[SKIP] The autocomplete movies of the previous task has not finished yet!"
fi
node /home/"${CP_DOMAIN}"/lib/CP_cron.js
}
docker_restore() {
WEB_DIR=${1:-${CP_DOMAIN}}
LATEST_DIR=${2:-latest}
RCS=$(rclone config show 2>/dev/null | grep "CINEMAPRESS")
if [ "${RCS}" = "" ]; then exit 0; fi
docker_stop
rm -rf /var/mega/new && mkdir -p /var/mega/new
mkdir -p /home/"${CP_DOMAIN}"/config/custom
sleep 5
sleep 3; rclone -vv --ignore-size copy CINEMAPRESS:"${WEB_DIR}"/"${LATEST_DIR}"/config.tar /var/mega/new/"${CP_DOMAIN}"/
sleep 3; rclone -vv --ignore-size copy CINEMAPRESS:"${WEB_DIR}"/"${LATEST_DIR}"/themes.tar /var/mega/new/"${CP_DOMAIN}"/
sleep 5
if [ -f /var/mega/new/"${CP_DOMAIN}"/config.tar ]; then
cd /home/"${CP_DOMAIN}" && \
tar -xf /var/mega/new/"${CP_DOMAIN}"/config.tar
else
cd /home/"${CP_DOMAIN}" && \
tar -xf /var/mega/"${CP_DOMAIN}"/config.tar
fi
if [ -f /var/mega/new/"${CP_DOMAIN}"/themes.tar ]; then
cd /home/"${CP_DOMAIN}" && \
tar --exclude=themes/default/views/desktop \
-xf /var/mega/new/"${CP_DOMAIN}"/themes.tar
else
cd /home/"${CP_DOMAIN}" && \
tar --exclude=themes/default/views/desktop \
-xf /var/mega/"${CP_DOMAIN}"/themes.tar
fi
cp -rf /home/"${CP_DOMAIN}"/config/custom/* /home/"${CP_DOMAIN}"/ 2>/dev/null
sleep 5
if [ -f "/home/${CP_DOMAIN}/config/comment/comment_${CP_DOMAIN_}.ram" ]; then
COMMENTSIZE=$(wc -c <"/home/${CP_DOMAIN}/config/comment/comment_${CP_DOMAIN_}.ram")
if [ "${COMMENTSIZE}" -le "20" ]; then
rm -rf /home/"${CP_DOMAIN}"/config/comment/*;
fi
else
rm -rf /home/"${CP_DOMAIN}"/config/comment/*;
fi
if [ -f "/home/${CP_DOMAIN}/config/user/user_${CP_DOMAIN_}.ram" ]; then
USERSIZE=$(wc -c <"/home/${CP_DOMAIN}/config/user/user_${CP_DOMAIN_}.ram")
if [ "${USERSIZE}" -le "20" ]; then
rm -rf /home/"${CP_DOMAIN}"/config/user/*;
fi
else
rm -rf /home/"${CP_DOMAIN}"/config/user/*;
fi
R=$(grep "\"only_realtime\"" /home/"${CP_DOMAIN}"/config/production/config.js)
ONLY_REALTIME=$(echo "${R}" | sed 's/.*"only_realtime":\s*\([0-9]*\).*/\1/')
if [ "${ONLY_REALTIME}" = "1" ]; then
docker_zero
fi
docker_start
}
docker_backup() {
RCS=$(rclone config show 2>/dev/null | grep "CINEMAPRESS")
if [ "${RCS}" = "" ]; then exit 0; fi
BACKUP_DAY=$(date +%d)
BACKUP_NOW=$(date +%Y-%m-%d)
BACKUP_DELETE=$(date +%Y-%m-%d -d "@$(($(date +%s) - 432000))")
T=$(grep "\"theme\"" /home/"${CP_DOMAIN}"/config/production/config.js)
THEME_NAME=$(echo "${T}" | sed 's/.*"theme":\s*"\([a-zA-Z0-9-]*\)".*/\1/')
if [ "${THEME_NAME}" = "" ] || [ "${THEME_NAME}" = "${T}" ]; then exit 0; fi
if [ -f "/var/log/${CP_DOMAIN_}.pid" ]; then
NOHUP_PID=$(cat "/var/log/${CP_DOMAIN_}.pid")
if [ "${NOHUP_PID}" != "" ]; then
kill -9 "${NOHUP_PID}" >>"/var/log/${CP_DOMAIN_}.log"
echo "KILL NOHUP PID ${NOHUP_PID}" >>"/var/log/${CP_DOMAIN_}.log"
fi
fi
if [ -f "/home/${CP_DOMAIN}/log/cron_movies.pid" ]; then
CRON_PID=$(cat "/home/${CP_DOMAIN}/log/cron_movies.pid")
if [ "${CRON_PID}" != "" ]; then
kill -9 "${CRON_PID}" >>"/var/log/${CP_DOMAIN_}.log"
echo "KILL CRON PID ${CRON_PID}" >>"/var/log/${CP_DOMAIN_}.log"
fi
rm -f "/home/${CP_DOMAIN}/log/cron_movies.pid"
fi
PORT_DOMAIN=$(grep "mysql41" /etc/sphinx/sphinx.conf | sed 's/.*:\([0-9]*\):mysql41.*/\1/')
# echo "FLUSH RAMCHUNK"
# echo "FLUSH RAMCHUNK rt_${CP_DOMAIN_};" | mysql -h0 -P"${PORT_DOMAIN}"
# echo "FLUSH RAMCHUNK content_${CP_DOMAIN_};" | mysql -h0 -P"${PORT_DOMAIN}"
# echo "FLUSH RAMCHUNK comment_${CP_DOMAIN_};" | mysql -h0 -P"${PORT_DOMAIN}"
# echo "FLUSH RAMCHUNK user_${CP_DOMAIN_};" | mysql -h0 -P"${PORT_DOMAIN}"
# sleep 10
# FLUSH_RAMCHUNK=1
# while [ "${FLUSH_RAMCHUNK}" != "100" ]; do
# sleep 3
# FLUSH_RAMCHUNK=$((1+FLUSH_RAMCHUNK))
# TMP_FILES=$(ls /home/"${CP_DOMAIN}"/config/rt/ | grep ".tmp.")
# OLD_FILES=$(ls /home/"${CP_DOMAIN}"/config/rt/ | grep ".old.")
# if [ "${TMP_FILES}" = "" ]; then
# echo "${FLUSH_RAMCHUNK}) TMP FILES: ${TMP_FILES}"
# fi
# if [ "${OLD_FILES}" = "" ]; then
# echo "${FLUSH_RAMCHUNK}) OLD FILES: ${OLD_FILES}"
# fi
# if [ "${TMP_FILES}" = "" ] && [ "${OLD_FILES}" = "" ]; then
# FLUSH_RAMCHUNK=100
# fi
# done
echo "OPTIMIZE INDEX"
echo "OPTIMIZE INDEX rt_${CP_DOMAIN_};" | mysql -h0 -P"${PORT_DOMAIN}"
echo "OPTIMIZE INDEX content_${CP_DOMAIN_};" | mysql -h0 -P"${PORT_DOMAIN}"
echo "OPTIMIZE INDEX comment_${CP_DOMAIN_};" | mysql -h0 -P"${PORT_DOMAIN}"
echo "OPTIMIZE INDEX user_${CP_DOMAIN_};" | mysql -h0 -P"${PORT_DOMAIN}"
sleep 10
OPTIMIZE_INDEX=1
while [ "${OPTIMIZE_INDEX}" != "100" ]; do
sleep 3
OPTIMIZE_INDEX=$((1+OPTIMIZE_INDEX))
TMP_FILES=$(ls /home/"${CP_DOMAIN}"/config/rt/ | grep ".tmp.")
OLD_FILES=$(ls /home/"${CP_DOMAIN}"/config/rt/ | grep ".old.")
if [ "${TMP_FILES}" = "" ]; then
echo "${OPTIMIZE_INDEX}) TMP FILES: ${TMP_FILES}"
fi
if [ "${OLD_FILES}" = "" ]; then
echo "${OPTIMIZE_INDEX}) OLD FILES: ${OLD_FILES}"
fi
if [ "${TMP_FILES}" = "" ] && [ "${OLD_FILES}" = "" ]; then
OPTIMIZE_INDEX=100
fi
done
echo "FLUSH RTINDEX"
echo "FLUSH RTINDEX rt_${CP_DOMAIN_};" | mysql -h0 -P"${PORT_DOMAIN}"
echo "FLUSH RTINDEX content_${CP_DOMAIN_};" | mysql -h0 -P"${PORT_DOMAIN}"
echo "FLUSH RTINDEX comment_${CP_DOMAIN_};" | mysql -h0 -P"${PORT_DOMAIN}"
echo "FLUSH RTINDEX user_${CP_DOMAIN_};" | mysql -h0 -P"${PORT_DOMAIN}"
sleep 10
rm -rf /var/mega/"${CP_DOMAIN:?}" && mkdir -p /var/mega/"${CP_DOMAIN}"
cd /home/"${CP_DOMAIN}" && \
tar --ignore-failed-read \
--exclude=config/update \
--exclude=config/default \
--exclude=config/locales \
--exclude=config/production/fail2ban \
--exclude=config/production/filestash \
--exclude=config/production/sphinx \
--exclude=config/production/nginx \
--exclude=config/production/mail \
--exclude=config/production/php \
-uf /var/mega/"${CP_DOMAIN}"/config.tar \
config
cd /home/"${CP_DOMAIN}" && \
tar --ignore-failed-read \
--exclude=files/GeoLite2-Country.mmdb \
--exclude=files/GeoLite2-ASN.mmdb \
--exclude=files/poster \
--exclude=files/torrent \
--exclude=files/picture \
--exclude=files/windows \
--exclude=files/linux \
--exclude=files/osx \
--exclude=files/bbb.mp4 \
--exclude=files/content/collage.psd \
-uf /var/mega/"${CP_DOMAIN}"/themes.tar \
themes/default/public/desktop \
themes/default/public/mobile \
themes/default/views/mobile \
themes/"${THEME_NAME}" \
files
sleep 3; rclone delete --rmdirs CINEMAPRESS:"${CP_DOMAIN}"/"${BACKUP_NOW}" &> /dev/null
if [ "${BACKUP_DAY}" != "10" ]; then
rclone delete --rmdirs CINEMAPRESS:"${CP_DOMAIN}"/"${BACKUP_DELETE}" &> /dev/null;
rclone rmdirs CINEMAPRESS:"${CP_DOMAIN}"/"${BACKUP_DELETE}" &> /dev/null;
fi
sleep 3; rclone delete --rmdirs CINEMAPRESS:"${CP_DOMAIN}"/latest &> /dev/null
sleep 3; rclone -vv --ignore-size copy /var/mega/"${CP_DOMAIN}"/config.tar CINEMAPRESS:"${CP_DOMAIN}"/"${BACKUP_NOW}"/
sleep 3; rclone -vv --ignore-size copy /var/mega/"${CP_DOMAIN}"/themes.tar CINEMAPRESS:"${CP_DOMAIN}"/"${BACKUP_NOW}"/
sleep 3; rclone -vv --ignore-size copy /var/mega/"${CP_DOMAIN}"/config.tar CINEMAPRESS:"${CP_DOMAIN}"/latest/
sleep 3; rclone -vv --ignore-size copy /var/mega/"${CP_DOMAIN}"/themes.tar CINEMAPRESS:"${CP_DOMAIN}"/latest/
KILOBYTE_ALL=$(df -k /home | tail -1 | awk '{print $4}')
KILOBYTE_DIR=$(du -d 0 /home/"${CP_DOMAIN}"/files | cut -f1)
RCST=$(rclone config show 2>/dev/null | grep "CINEMASTATIC")
if [ "${1}" = "" ] && [ "${RCST}" != "" ] && [ "${BACKUP_DAY}" = "10" ] && [ "${KILOBYTE_ALL}" -gt "${KILOBYTE_DIR}" ]; then
CHECK_MKDIR=$(rclone mkdir CINEMASTATIC:/check-connection 2>/dev/null)
sleep 3
CHECK_RMDIR=$(rclone rmdir CINEMASTATIC:/check-connection 2>/dev/null)
if [ "${CHECK_MKDIR}" = "" ] && [ "${CHECK_RMDIR}" = "" ]; then
cd /home/"${CP_DOMAIN}" && tar -uf /home/"${CP_DOMAIN}"/static.tar \
files/poster \
files/picture
if [ -d "/home/${CP_DOMAIN}/files/windows" ]; then
cd /home/"${CP_DOMAIN}" && tar -uf /home/"${CP_DOMAIN}"/app.tar \
files/windows \
files/linux \
files/osx &>/dev/null
sleep 3; rclone -vv delete CINEMASTATIC:"${CP_DOMAIN}"/app.tar
sleep 3; rclone -vv --ignore-size copy /home/"${CP_DOMAIN}"/app.tar CINEMASTATIC:"${CP_DOMAIN}"/
fi
sleep 3; rclone -vv delete CINEMASTATIC:"${CP_DOMAIN}"/static.tar
sleep 3; rclone -vv --ignore-size copy /home/"${CP_DOMAIN}"/static.tar CINEMASTATIC:"${CP_DOMAIN}"/
rm -rf /home/"${CP_DOMAIN}"/static.tar /home/"${CP_DOMAIN}"/app.tar
fi
fi
CHECK_MKDIR=$(rclone mkdir CINEMAPRESS:/check-connection 2>/dev/null)
sleep 3
CHECK_RMDIR=$(rclone rmdir CINEMAPRESS:/check-connection 2>/dev/null)
if [ "${CHECK_MKDIR}" != "" ] || [ "${CHECK_RMDIR}" != "" ]; then
_header "ERROR"
_content
_content "Cannot connect to backup storage."
_content
_s
exit 0
fi
}
docker_mirror() {
node /home/"${CP_DOMAIN}"/config/update/mirror.js
}
docker_actual() {
node /home/"${CP_DOMAIN}"/config/update/actual.js
}
docker_available() {
node /home/"${CP_DOMAIN}"/config/update/available.js "${1}"
}
docker_rclone() {
sleep 3; rclone "${1}" "${2}"
}
docker_cinematheme() {
rm -rf /var/theme && mkdir -p /var/theme
cd /var/theme && cinematheme "${@}"
sleep 3
cd /var/theme/ && for i in */; do
if [ "${i%%/}" != "" ]; then
sed -Ei "s/\"theme\":\s*\"[a-zA-Z0-9-]*\"/\"theme\":\"${i%%/}\"/" \
/home/"${CP_DOMAIN}"/config/production/config.js
fi
done
cp -rf /var/theme/* /home/"${CP_DOMAIN}"/themes/
pm2 delete process.json &>/dev/null
cd /home/"${CP_DOMAIN}" && pm2 start process.json &>/dev/null
sleep 3
rm -rf /var/theme
}
docker_spb() {
SPB="/var/lib/sphinx/data/movies_${CP_DOMAIN_}.spb"
CNF="/home/${CP_DOMAIN}/config/production/config.js"
PRC="/home/${CP_DOMAIN}/process.json"
CP_SPB=""
if [ ! -f "${SPB}" ] && [ -f "${CNF}" ] && [ -f "${PRC}" ]; then
AA=$(grep "\"CP_ALL\"" "${PRC}")
KK=$(grep "\"key\"" "${CNF}")
AAA=$(echo ${AA} | sed 's/.*"CP_ALL":\s*".*[ |"]\{1\}_\([A-Za-z0-9]\{7\}\)_[ |"]\{1\}.*/\1/')
KKK=$(echo ${KK} | sed 's/.*"key":\s*"\(FREE\|[a-zA-Z0-9-]\{32\}\)".*/\1/')
if [ "${#AAA}" -eq "7" ] && [ "${#KKK}" -eq "32" ]; then
openssl enc \
-aes-256-cbc \
-pbkdf2 \
-iter 100000 \
-in <(echo "${AAA}") \
-out "${SPB}" \
-k "${CP_DOMAIN}/${KKK}" \
-salt 2>/dev/null
fi
fi
if [ -f "${SPB}" ] && [ -f "${CNF}" ]; then
KK=$(grep "\"key\"" "${CNF}")
KKK=$(echo ${KK} | sed 's/.*"key":\s*"\(FREE\|[a-zA-Z0-9-]\{32\}\)".*/\1/')
if [ "${#KKK}" -eq "32" ]; then
AAA=$(openssl enc -aes-256-cbc -pbkdf2 -iter 100000 -in "${SPB}" -out - -k "${CP_DOMAIN}/${KKK}" -d 2>/dev/null)
if [ "${#AAA}" -eq "7" ]; then
CP_SPB="_${CP_DOMAIN_}_ | _${AAA}_"
fi
fi
fi
}
docker_passwd() {
OPENSSL=`echo "${1}" | openssl passwd -1 -stdin -salt CP`
echo "admin:${OPENSSL}" > "/home/${CP_DOMAIN}/config/production/nginx/pass.d/${CP_DOMAIN}.pass"
echo "${CP_DOMAIN}:${OPENSSL}" >> "/home/${CP_DOMAIN}/config/production/nginx/pass.d/${CP_DOMAIN}.pass"
}
docker_ssl_on() {
if [ -d "/home/${CP_DOMAIN}/config/production/nginx/ssl.d/live/${CP_DOMAIN}/" ] || \
[ -d "/home/${CP_DOMAIN}/config/production/nginx/ssl.d/self-signed/${CP_DOMAIN}/" ]; then
sed -Ei "s/ #ssl include \/home\/${CP_DOMAIN}\/config\/production\/nginx\/ssl\.d\/default\.conf;/ include \/home\/${CP_DOMAIN}\/config\/production\/nginx\/ssl.d\/default.conf;/" \
"/home/${CP_DOMAIN}/config/production/nginx/conf.d/default.conf"
fi
}
docker_ssl_off() {
sed -Ei "s/ include \/home\/${CP_DOMAIN}\/config\/production\/nginx\/ssl\.d\/default\.conf;/ #ssl include \/home\/${CP_DOMAIN}\/config\/production\/nginx\/ssl.d\/default.conf;/" \
"/home/${CP_DOMAIN}/config/production/nginx/conf.d/default.conf"
}
docker_ftp_on() {
sed -Ei "s/#ftp //g" "/home/${CP_DOMAIN}/config/production/nginx/conf.d/default.conf"
}
docker_torrent_on() {
sed -Ei "s/#torrent //g" "/home/${CP_DOMAIN}/config/production/nginx/conf.d/default.conf"
}
success_install(){
CP_URL="${CP_DOMAIN}"
if [ "${CP_IP}" = "ip" ] && [ "${EXTERNAL_PORT}" != "80" ]; then
CP_URL="${CP_DOMAIN}:${EXTERNAL_PORT}"
else
docker exec -d nginx nginx -s reload
fi
clear
_line
_logo
_header "${CP_DOMAIN}";
_content
if [ "${CP_IP}" = "domain" ]; then
_content "Website successfully installed!"
else
_content "Test website successfully installed!"
fi
_content
_content "${CP_URL}"
_content "${CP_URL}/admin"
if [ "${CP_IP}" = "domain" ]; then
_content
_content "USERNAME: admin"
_content "PASSWORD: ${CP_PASSWD}"
fi
_content
_content "We strongly recommend immediately"
_content "setting up automatic backup!"
_content "root@vps:~# cinemapress backup"
_content
_content "Issues: github.com/CinemaPress"
_content
_s
}
if [ ${EUID} -ne 0 ]; then
printf "${R}WARNING:${NC} Run as root user! \n${NC}"
exit 1
fi
if [ "${CP_OS}" = "alpine" ] || [ "${CP_OS}" = "\"alpine\"" ] || \
[ "${CP_OS}" = "debian" ] || [ "${CP_OS}" = "\"debian\"" ] || \
[ "${CP_OS}" = "ubuntu" ] || [ "${CP_OS}" = "\"ubuntu\"" ] || \
[ "${CP_OS}" = "fedora" ] || [ "${CP_OS}" = "\"fedora\"" ] || \
[ "${CP_OS}" = "centos" ] || [ "${CP_OS}" = "\"centos\"" ]; then
true
else
_header "ERROR"
_content
_content "This OS is not supported."
_content "Please reinstall to"
_content "CentOS 7 or Debian 9/10 or Ubuntu 18/19 or Fedora 28/29"
_content
_s
exit 0
fi
docker_install
if [ "$(docker -v 2>/dev/null | grep "version")" = "" ]; then
docker_spb 2>/dev/null
fi
WHILE=0
while [ "${WHILE}" -lt "2" ]; do
WHILE=$((${WHILE}+1))
case ${OPTION} in
"i"|"install"|1 )
read_domain "${2}"
sh_yes "${5}"
read_lang "${3}"
read_theme "${4}"
read_password "${5}"
_s "${5}"
sh_progress
1_install "${2}" "${3}" "${4}" "${5}"
sh_progress 100
success_install
post_commands
exit 0
;;
"u"|"update"|2 )
read_domain "${2}"
sh_not
_s "${2}"
sh_progress
2_update "${2}" "${3}" "${4}" "${5}" "${6}"
sh_progress 100
post_commands
exit 0
;;
"b"|"backup"|3 )
read_domain "${2}"
sh_not
_s "${2}"
sh_progress
3_backup "${2}" "${3}" "${4}" "${5}" "${6}" "${7}"
sh_progress 100
exit 0
;;
"t"|"theme"|4 )
read_domain "${2}"
sh_not
read_theme "${3}"
_s "${3}"
sh_progress
4_theme "${2}" "${3}" "${4}"
sh_progress 100
exit 0
;;
"d"|"database"|5 )
read_domain "${2}"
sh_not
read_key "${3}"
_s "${3}"
5_database "${2}" "${3}"
exit 0
;;
"h"|"https"|6 )
read_domain "${2}"
sh_not
read_cloudflare_email "${3}"
read_cloudflare_api_key "${4}"
_s "${4}"
6_https "${2}" "${3}" "${4}" "${5}"
post_commands
exit 0
;;
"m"|"mirror"|7 )
read_domain "${2}"
read_mirror "${3}"
_s "${3}"
sh_progress
7_mirror "${2}" "${3}"
sh_progress 100
exit 0
;;
"r"|"rm"|"remove"|8 )
read_domain "${2}"
sh_not
_s "${2}"
sh_progress
8_remove "${2}" "${3}" "${4}"
sh_progress 100
exit 0
;;
"en"|"ru" )
ip_install "${1}"
exit 0
;;
"passwd" )
_br "${3}"
read_domain "${2}"
sh_not
read_password "${3}"
_s "${3}"
sh_progress
docker exec "${CP_DOMAIN_}" /usr/bin/cinemapress container "${1}" "${CP_PASSWD}" \
>>/var/log/docker_passwd_"$(date '+%d_%m_%Y')".log 2>&1
sh_progress
docker exec nginx nginx -s reload \
>>/var/log/docker_passwd_"$(date '+%d_%m_%Y')".log 2>&1
sh_progress 100
exit 0
;;
"images" )
_header "IMAGES"
_content
_content "No images!"
_content
_s
exit 0
;;
"premium" )
_header "PREMIUM"
_content
_content "No premium themes!"
_content
_s
exit 0
;;
"upd" )
docker_install "UPD"
exit 0
;;
"ss"|"self-signed" )
read_domain "${2}"
sh_not
_s "${2}"
6_https "${2}" "ss"
exit 0
;;
"stop"|"start"|"restart" )
_br "${2}"
read_domain "${2}"
sh_not
_s "${2}"
docker ${1} ${CP_DOMAIN_} >>/var/log/docker_${1}_"$(date '+%d_%m_%Y')".log 2>&1
exit 0
;;
"zero" )
_br "${2}"
read_domain "${2}"
sh_not
_s "${2}"
_header "WARNING";
_content
_content "This command will delete all movies!"
_content
_s
if [ ${3} ]; then
YES=${3}
YES=`echo ${YES} | iconv -c -t UTF-8`
echo "Deactivate Automatic Index? [NOT/yes] : ${YES}"
else
read -e -p 'Deactivate Automatic Index? [NOT/yes] : ' YES
YES=`echo ${YES} | iconv -c -t UTF-8`
fi
_br
if [ "${YES}" != "ДА" ] && [ "${YES}" != "Да" ] && [ "${YES}" != "да" ] && [ "${YES}" != "YES" ] && [ "${YES}" != "Yes" ] && [ "${YES}" != "yes" ] && [ "${YES}" != "Y" ] && [ "${YES}" != "y" ]; then
docker exec "${CP_DOMAIN_}" /usr/bin/cinemapress container zero "NOT" \
>>/var/log/docker_zero_"$(date '+%d_%m_%Y')".log 2>&1
else
docker exec "${CP_DOMAIN_}" /usr/bin/cinemapress container zero \
>>/var/log/docker_zero_"$(date '+%d_%m_%Y')".log 2>&1
fi
exit 0
;;
"zero_rt"|"zero_realtime" )
_br "${2}"
read_domain "${2}"
sh_not
_s "${2}"
_header "WARNING";
_content
_content "This command will delete all movies!"
_content
_s
if [ ${3} ]; then
YES=${3}
YES=`echo ${YES} | iconv -c -t UTF-8`
echo "Delete Realtime Index? [NOT/yes] : ${YES}"
else
read -e -p 'Delete Realtime Index? [NOT/yes] : ' YES
YES=`echo ${YES} | iconv -c -t UTF-8`
fi
_br
if [ "${YES}" != "ДА" ] && [ "${YES}" != "Да" ] && [ "${YES}" != "да" ] && [ "${YES}" != "YES" ] && [ "${YES}" != "Yes" ] && [ "${YES}" != "yes" ] && [ "${YES}" != "Y" ] && [ "${YES}" != "y" ]; then
exit 0
else
docker exec "${CP_DOMAIN_}" /usr/bin/cinemapress container zero_rt \
>>/var/log/docker_zero_rt_"$(date '+%d_%m_%Y')".log 2>&1
fi
exit 0
;;
"hand" )
_br "${2}"
read_domain "${2}"
sh_not
_s "${2}"
docker exec "${CP_DOMAIN_}" /usr/bin/cinemapress container hand "${3}"
exit 0
;;
"main_mirror" )
_br "${2}"
read_domain "${2}"
sh_not
_s "${2}"
docker exec "${CP_DOMAIN_}" /usr/bin/cinemapress container mirror
exit 0
;;
"movies" )
_br "${2}"
read_domain "${2}"
sh_not
_s "${2}"
docker exec "${CP_DOMAIN_}" /usr/bin/cinemapress container movies
exit 0
;;
"reload"|"actual"|"available"|"reindex"|"speed"|"cron" )
_br "${2}"
read_domain "${2}"
sh_not
_s "${2}"
docker exec "${CP_DOMAIN_}" /usr/bin/cinemapress container "${1}" "${3}"
_br
exit 0
;;
"container" )
if [ "${2}" = "run" ]; then
docker_run
elif [ "${2}" = "stop" ]; then
docker_stop
elif [ "${2}" = "start" ]; then
docker_start
elif [ "${2}" = "restart" ]; then
docker_restart
elif [ "${2}" = "reload" ]; then
docker_reload
elif [ "${2}" = "logs" ]; then
docker_logs
elif [ "${2}" = "zero" ]; then
docker_zero "${3}"
elif [ "${2}" = "zero_rt" ]; then
docker_zero_rt
elif [ "${2}" = "hand" ]; then
docker_hand "${3}"
elif [ "${2}" = "movies" ]; then
docker_movies "${3}"
elif [ "${2}" = "cron" ]; then
docker_cron "${3}"
elif [ "${2}" = "actual" ]; then
docker_actual
elif [ "${2}" = "mirror" ]; then
docker_mirror
elif [ "${2}" = "available" ] || [ "${2}" = "reindex" ]; then
docker_available "${3}"
elif [ "${2}" = "passwd" ]; then
docker_passwd "${3}"
elif [ "${2}" = "rclone" ]; then
docker_rclone "${3}" "${4}"
elif [ "${2}" = "cinematheme" ]; then
docker_cinematheme "${@}"
elif [ "${2}" = "backup" ]; then
if [ "${3}" = "create" ] || [ "${3}" = "1" ]; then
docker_backup "${4}"
elif [ "${3}" = "restore" ] || [ "${3}" = "2" ]; then
docker_restore "${4}" "${5}"
fi
elif [ "${2}" = "protocol" ]; then
if [ "${3}" = "http://" ]; then
docker_ssl_off
else
docker_ssl_on
fi
elif [ "${2}" = "ftp" ]; then
docker_ftp_on
elif [ "${2}" = "torrent" ]; then
docker_torrent_on
fi
exit 0
;;
"combine"|"c" )
CP_DOMAIN=""
CP_LANG=""
CP_THEME=""
CP_PASSWD=""
CP_MIRROR=""
CP_KEY=""
CLOUDFLARE_EMAIL=""
CLOUDFLARE_API_KEY=""
MEGA_EMAIL=""
MEGA_PASSWORD=""
if [ "${2}" = "chrm" ] || [ "${2}" = "create_https_restore_mirror" ] || [ "${2}" = "ihrm" ] || [ "${2}" = "install_https_restore_mirror" ]; then
read_domain ${3}
read_mirror ${4}
read_lang ${5}
read_theme ${6}
read_password ${7}
read_cloudflare_email ${8}
read_cloudflare_api_key ${9}
read_mega_email ${10}
read_mega_password ${11}
_s ${11}
sh_progress
1_install "${CP_MIRROR}"
6_https "${CP_MIRROR}" "${CLOUDFLARE_EMAIL}" "${CLOUDFLARE_API_KEY}"
3_backup "${CP_MIRROR}" "config" "${MEGA_EMAIL}" "${MEGA_PASSWORD}" "restore" "${CP_DOMAIN}"
7_mirror "${CP_DOMAIN}" "${CP_MIRROR}"
post_commands "${CP_MIRROR}"
sh_progress 100
exit 0
elif [ "${2}" = "crm" ] || [ "${2}" = "create_restore_mirror" ] || [ "${2}" = "irm" ] || [ "${2}" = "install_restore_mirror" ]; then
read_domain ${3}
read_mirror ${4}
read_lang ${5}
read_theme ${6}
read_password ${7}
read_mega_email ${8}
read_mega_password ${9}
_s ${9}
sh_progress
1_install "${CP_MIRROR}"
3_backup "${CP_MIRROR}" "config" "${MEGA_EMAIL}" "${MEGA_PASSWORD}" "restore" "${CP_DOMAIN}"
7_mirror "${CP_DOMAIN}" "${CP_MIRROR}"
post_commands "${CP_MIRROR}"
sh_progress 100
exit 0
elif [ "${2}" = "chm" ] || [ "${2}" = "create_https_mirror" ] || [ "${2}" = "ihm" ] || [ "${2}" = "install_https_mirror" ]; then
read_domain ${3}
read_mirror ${4}
read_lang ${5}
read_theme ${6}
read_password ${7}
read_cloudflare_email ${8}
read_cloudflare_api_key ${9}
_s ${9}
sh_progress
1_install "${CP_MIRROR}"
6_https "${CP_MIRROR}" "${CLOUDFLARE_EMAIL}" "${CLOUDFLARE_API_KEY}"
7_mirror "${CP_DOMAIN}" "${CP_MIRROR}"
post_commands "${CP_MIRROR}"
sh_progress 100
exit 0
elif [ "${2}" = "chb" ] || [ "${2}" = "create_https_backup" ] || [ "${2}" = "ihb" ] || [ "${2}" = "install_https_backup" ]; then
read_domain ${3}
sh_yes
read_lang ${4}
read_theme ${5}
read_password ${6}
read_cloudflare_email ${7}
read_cloudflare_api_key ${8}
read_mega_email ${9}
read_mega_password ${10}
_s ${10}
sh_progress
1_install "${CP_DOMAIN}"
6_https "${CP_DOMAIN}" "${CLOUDFLARE_EMAIL}" "${CLOUDFLARE_API_KEY}"
3_backup "${CP_DOMAIN}" "config" "${MEGA_EMAIL}" "${MEGA_PASSWORD}" "create"
post_commands "${CP_DOMAIN}"
sh_progress 100
exit 0
elif [ "${2}" = "chr" ] || [ "${2}" = "create_https_restore" ] || [ "${2}" = "ihr" ] || [ "${2}" = "install_https_restore" ]; then
read_domain ${3}
sh_yes
read_lang ${4}
read_theme ${5}
read_password ${6}
read_cloudflare_email ${7}
read_cloudflare_api_key ${8}
read_mega_email ${9}
read_mega_password ${10}
_s ${10}
sh_progress
1_install "${CP_DOMAIN}"
6_https "${CP_DOMAIN}" "${CLOUDFLARE_EMAIL}" "${CLOUDFLARE_API_KEY}"
3_backup "${CP_DOMAIN}" "config" "${MEGA_EMAIL}" "${MEGA_PASSWORD}" "restore"
post_commands "${CP_DOMAIN}"
sh_progress 100
exit 0
elif [ "${2}" = "ch" ] || [ "${2}" = "create_https" ] || [ "${2}" = "ih" ] || [ "${2}" = "install_https" ]; then
read_domain ${3}
sh_yes
read_lang ${4}
read_theme ${5}
read_password ${6}
read_cloudflare_email ${7}
read_cloudflare_api_key ${8}
_s ${8}
sh_progress
1_install "${CP_DOMAIN}"
6_https "${CP_DOMAIN}" "${CLOUDFLARE_EMAIL}" "${CLOUDFLARE_API_KEY}"
post_commands "${CP_DOMAIN}"
sh_progress 100
exit 0
elif [ "${2}" = "cb" ] || [ "${2}" = "create_backup" ] || [ "${2}" = "ib" ] || [ "${2}" = "install_backup" ]; then
read_domain ${3}
sh_yes
read_lang ${4}
read_theme ${5}
read_password ${6}
read_mega_email ${7}
read_mega_password ${8}
_s ${8}
sh_progress
1_install "${CP_DOMAIN}"
3_backup "${CP_DOMAIN}" "config" "${MEGA_EMAIL}" "${MEGA_PASSWORD}" "create"
post_commands "${CP_DOMAIN}"
sh_progress 100
exit 0
elif [ "${2}" = "cr" ] || [ "${2}" = "create_restore" ] || [ "${2}" = "ir" ] || [ "${2}" = "install_restore" ]; then
read_domain ${3}
sh_yes
read_lang ${4}
read_theme ${5}
read_password ${6}
read_mega_email ${7}
read_mega_password ${8}
_s ${8}
sh_progress
1_install "${CP_DOMAIN}"
3_backup "${CP_DOMAIN}" "config" "${MEGA_EMAIL}" "${MEGA_PASSWORD}" "restore"
post_commands "${CP_DOMAIN}"
sh_progress 100
exit 0
fi
exit 0
;;
"autostart" )
read_domain "${2}"
docker start "${CP_DOMAIN_}"
docker start fail2ban
docker start filestash
docker start nginx
exit 0
;;
"renew" )
_br "${2}"
read_domain "${2}"
sh_not
_s "${2}"
quiet=""
if [ "${3}" != "" ]; then
quiet="--dry-run"
else
sleep $(( ( "${RANDOM}" % 900 ) ))
fi
docker run \
--rm \
-v /home/${CP_DOMAIN}/config/production/nginx/ssl.d:/etc/letsencrypt \
-v /home/${CP_DOMAIN}/config/production/nginx/letsencrypt:/var/lib/letsencrypt \
-v /home/${CP_DOMAIN}/config/production/nginx/cloudflare.ini:/cloudflare.ini \
-v /var/log/letsencrypt:/var/log/letsencrypt \
certbot/dns-cloudflare \
renew \
--dns-cloudflare \
--dns-cloudflare-credentials /cloudflare.ini \
${quiet}
docker exec -d nginx nginx -s reload
post_commands
exit 0
;;
"optimal" )
_br "${2}"
read_domain "${2}"
sh_not
_s "${2}"
docker exec -t "${CP_DOMAIN_}" node optimal.js
exit 0
;;
"mode" )
_br "${2}"
read_domain "${2}"
sh_not
read_mode "${3}"
_s "${2}"
sh_progress
sed -i "s~\"NODE_ENV\": \"production\"~\"NODE_ENV\": \"${CP_MODE}\"~" "/home/${CP_DOMAIN}/process.json" &>/dev/null
sed -i "s~\"NODE_ENV\": \"debug\"~\"NODE_ENV\": \"${CP_MODE}\"~" "/home/${CP_DOMAIN}/process.json" &>/dev/null
sh_progress
docker exec -t "${CP_DOMAIN_}" /usr/bin/cinemapress container reload &>/dev/null
sh_progress 100
exit 0
;;
"l"|"ll"|"lp"|"lm"|"lms"|"ls"|"llp"|"log"|"logs"|"live"|"lb"|"lbt"|"lbf"|"lbb" )
if [ "${1}" = "lb" ] || [ "${1}" = "lbt" ] || [ "${1}" = "lbf" ] || [ "${1}" = "lbb" ] || [ "${2}" = "bot" ] || [ "${2}" = "bots" ]; then
RR='\o033[0;31m'
GG='\o033[0;32m'
YY='\o033[0;33m'
BB='\o033[1;36m'
NCC='\o033[0m'
_br
if [ "${1}" = "live" ]; then
_line
_header "BOT DETECTED"
_line
_br
tail \
-n0 -f /home/*/log/err*.log \
-n0 -f /home/*/log/out*.log \
| sed \
-e 's/\([0-9T:-]*\):\s*/\1/' \
-e 's/\(TRUE BOT DETECTED\)/ \o033[32mTRUE\o033[39m/' \
-e 's/\(FAKE BOT DETECTED\)/ \o033[31mFAKE\o033[39m/' \
-e 's/\(BAD BOT DETECTED \[CAPTCHA \(TRUE\|FALSE\)\]\)/ \o033[36mBAD?\o033[39m [CAPTCHA]/' \
-e 's/\(BAD BOT DETECTED\)/ \o033[33mBAD!\o033[39m/'
_br
fi
if [ "${3}" = "" ] && { [ "${1}" = "lb" ] || [ "${2}" = "bot" ] || [ "${2}" = "bots" ]; }; then
_line
_header "BOT DETECTED"
_line
_br
grep \
"BOT DETECTED" /home/*/log/err*.log /home/*/log/out*.log \
| sed -E "s/\/home\/([0-9A-Za-z.-]{10})([0-9A-Za-z.-]*)\/log\/(out|err)-0\.log:([0-9T:-]*):\s*/\4 \1/" \
| sed -E "s/TRUE BOT DETECTED/ ${GG}TRUE${NCC}/" \
| sed -E "s/FAKE BOT DETECTED/ ${RR}FAKE${NCC}/" \
| sed -E "s/BAD BOT DETECTED \[CAPTCHA (TRUE|FALSE)\]/ ${BB}BAD?${NCC} [CAPTCHA]/" \
| sed -E "s/BAD BOT DETECTED/ ${YY}BAD!${NCC}/" \
| sort -k1
_br
_line
_br
fi
if [ "${1}" = "lbt" ] || [ "${3}" = "true" ]; then
_line
_header "TRUE BOT DETECTED"
_line
_br
grep \
"TRUE BOT DETECTED" /home/*/log/err*.log /home/*/log/out*.log \
| sed -E "s/\/home\/([0-9A-Za-z.-]{10})([0-9A-Za-z.-]*)\/log\/(out|err)-0\.log:([0-9T:-]*):\s*/\4 \1/" \
| sed -E "s/TRUE BOT DETECTED/ ${GG}TRUE${NCC}/" \
| sort -k1
_br
_line
_br
fi
if [ "${1}" = "lbf" ] || [ "${3}" = "fake" ]; then
_line
_header "FAKE BOT DETECTED"
_line
_br
grep \
"FAKE BOT DETECTED" /home/*/log/err*.log /home/*/log/out*.log \
| sed -E "s/\/home\/([0-9A-Za-z.-]{10})([0-9A-Za-z.-]*)\/log\/(out|err)-0\.log:([0-9T:-]*):\s*/\4 \1/" \
| sed -E "s/FAKE BOT DETECTED/ ${RR}FAKE${NCC}/" \
| sort -k1
_br
_line
_br
fi
if [ "${1}" = "lbb" ] || [ "${3}" = "bad" ]; then
_line
_header "BAD BOT DETECTED"
_line
_br
grep \
"BAD BOT DETECTED" /home/*/log/err*.log /home/*/log/out*.log \
| sed -E "s/\/home\/([0-9A-Za-z.-]{10})([0-9A-Za-z.-]*)\/log\/(out|err)-0\.log:([0-9T:-]*):\s*/\4 \1/" \
| sed -E "s/BAD BOT DETECTED \[CAPTCHA (TRUE|FALSE)\]/ ${BB}BAD?${NCC} [CAPTCHA]/" \
| sed -E "s/BAD BOT DETECTED/ ${YY}BAD!${NCC}/" \
| sort -k1
_br
_line
_br
fi
exit 0
fi
if [ "${1}" = "ll" ] || [ "${1}" = "live" ] || [ "${2}" = "live" ] || [ "${2}" = "l" ]; then
_br
tail \
-n0 -f /var/log/nginx/*.log \
-n0 -f /home/*/log/err*.log \
-n0 -f /home/*/log/out*.log
exit 0
fi
if [ "${1}" = "llp" ] || [ "${1}" = "lp" ]; then
_br
tail \
-n0 -f /var/log/nginx/*.log \
-n0 -f /home/*/log/err*.log \
-n0 -f /home/*/log/out*.log \
| grep -v ping
exit 0
fi
if [ "${1}" = "lm" ]; then
_br
tail \
-n0 -f /home/*/log/movies*.log
exit 0
fi
if [ "${1}" = "ls" ] || [ "${1}" = "lms" ]; then
_br
tail \
-n0 -f /home/*/log/movies*.log \
| grep -v REALTIME
exit 0
fi
_br "${2}"
read_domain "${2}"
sh_not
_s "${2}"
_header "DOCKER CONTAINER"
_content
if docker network ls | grep -q cinemapress
then
_content "Network: runnind"
else
_content "Network: stopped"
fi
if [ "$(docker ps -aq -f health=healthy -f name=^/${CP_DOMAIN_}\$ 2>/dev/null)" != "" ]; then
_content "Website: runnind"
else
_content "Website: stopped"
fi
if [ "$(docker ps -aq -f health=healthy -f name=^/nginx\$ 2>/dev/null)" != "" ]; then
NGINX_STATUS=$(docker exec -t nginx nginx -t | grep successful)
if [ "${NGINX_STATUS}" != "" ]; then
_content "Nginx: runnind"
else
_content "Nginx: error"
docker exec -t nginx nginx -t
fi
else
_content "Nginx: stopped"
fi
if [ "$(docker ps -aq -f health=healthy -f name=^/fail2ban\$ 2>/dev/null)" != "" ]; then
_content "Fail2ban: runnind"
else
_content "Fail2ban: stopped"
fi
if [ "$(docker ps -aq -f status=running -f name=^/filestash\$ 2>/dev/null)" != "" ]; then
_content "FTP: runnind"
else
_content "FTP: stopped"
fi
if [ "$(docker ps -aq -f status=running -f name=^/mail\$ 2>/dev/null)" != "" ]; then
_content "MailServer: runnind"
else
_content "MailServer: stopped"
fi
_content
_header "NGINX LOGS"
_content
_content "$(tail -n50 /var/log/nginx/*.log | curl -s -F 'clbin=<-' https://clbin.com)"
_content
docker exec -t "${CP_DOMAIN_}" /usr/bin/cinemapress container logs
exit 0
;;
"clear_vps"|"clean_vps"|"flush_vps"|"clear_all"|"clean_all"|"flush_all" )
_br
sh_progress
docker rm -f $(docker ps -aq) >>/var/log/docker_remove_"$(date '+%d_%m_%Y')".log 2>&1
docker rmi -f $(docker images -q) >>/var/log/docker_remove_"$(date '+%d_%m_%Y')".log 2>&1
for D in /home/*; do
if [ -f "${D}/process.json" ] || [ -f "${D}/index.php" ]; then
DD=`find ${D} -maxdepth 0 -printf "%f"`
sed -i "s/.*${DD}.*//g" /etc/crontab &> /dev/null
rm -rf /home/${DD:?}
rm -rf /root/${DD:?}
fi
done
rm -rf \
/var/log/* \
/var/ngx_pagespeed_cache \
/var/lib/sphinx/tmp \
/var/lib/sphinx/old \
/etc/nginx/bots.d \
/var/lib/cinemapress \
/var/docker-mailserver
sh_progress 100
exit 0
;;
"clear_log"|"clean_log"|"clear_logs"|"clean_logs"|"logrotate" )
CP_SIZE=${2:-"+102400"}
find /var/log -type f -name '*.log' -size "${CP_SIZE}" -exec rm -rf {} \; \
>>/var/log/docker_logrotate_"$(date '+%d_%m_%Y')".log 2>&1
find /var/log -type f -name '*.gz' -exec rm -rf {} \; \
>>/var/log/docker_logrotate_"$(date '+%d_%m_%Y')".log 2>&1
rm -rf /var/ngx_pagespeed_cache/*
if [ "${CP_OS}" != "alpine" ] && [ "${CP_OS}" != "\"alpine\"" ]; then
docker restart fail2ban >>/var/log/docker_logrotate_"$(date '+%d_%m_%Y')".log 2>&1
docker restart filestash >>/var/log/docker_logrotate_"$(date '+%d_%m_%Y')".log 2>&1
docker restart nginx >>/var/log/docker_logrotate_"$(date '+%d_%m_%Y')".log 2>&1
fi
exit 0
;;
"any"|"default_server"|"ds" )
for all_server in /home/*/config/production/nginx/conf.d/default.conf; do
[ -f "${all_server}" ] || continue
sed -i "s~ include ${all_server/conf.d/any.d}~#any include ${all_server/conf.d/any.d}~" "${all_server}"
done
if [ "${2}" = "none" ]; then
_br
_header "DEFAULT SERVER"
_content
_content "NONE"
_content
_content "(wait 20 seconds)"
_content
_line
_br
mkdir -p /home/default_server/config/production/nginx/conf.d/
mkdir -p /home/default_server/config/production/nginx/any.d/
echo "server {
listen 80 default_server;
listen [::]:80 default_server;
root /home/default_server;
server_name _;
deny all;
location / {return 444;}
}
" > /home/default_server/config/production/nginx/any.d/default.conf
echo " include /home/default_server/config/production/nginx/any.d/default.conf;" \
> /home/default_server/config/production/nginx/conf.d/default.conf
docker restart nginx &>/dev/null
exit 0
fi
read_domain "${2}"
sh_not
sed -i "s~#any include /home/${CP_DOMAIN}/config/production/nginx/any.d/default.conf~ include /home/${CP_DOMAIN}/config/production/nginx/any.d/default.conf~" \
/home/"${CP_DOMAIN}"/config/production/nginx/conf.d/default.conf
_br
_header "DEFAULT SERVER"
_content
_content "${CP_DOMAIN}"
_content
_content "(wait 60 seconds)"
_content
_line
_br
exit 0
;;
"bot"|"bot_https"|"domain"|"domain_https" )
_br "${2}"
read_domain "${2}"
sh_not
_s "${2}"
read_bomain "${3}"
if [ "${1}" = "bot_https" ] || [ "${1}" = "domain_https" ]; then
read_cloudflare_email "${4}"
read_cloudflare_api_key "${5}"
fi
_s "${3}"
sh_progress
if [ ! -f /home/"${CP_BOMAIN}"/process.json ]; then
sh_progress
1_install "${CP_BOMAIN}" "en" "default" "pass"
fi
if [ "${CLOUDFLARE_EMAIL}" != "" ] && [ "${CLOUDFLARE_API_KEY}" != "" ]; then
sh_progress
6_https "${CP_BOMAIN}" "${CLOUDFLARE_EMAIL}" "${CLOUDFLARE_API_KEY}"
fi
sh_progress
sed -i "s~root /home/${CP_BOMAIN};~root /home/${CP_DOMAIN};~g" \
/home/"${CP_BOMAIN}"/config/production/nginx/conf.d/default.conf
sed -i "s~/home/${CP_BOMAIN}/config/production/nginx/pass.d/${CP_BOMAIN}.pass~/home/${CP_DOMAIN}/config/production/nginx/pass.d/${CP_DOMAIN}.pass~g" \
/home/"${CP_BOMAIN}"/config/production/nginx/conf.d/default.conf
sed -i "s~/home/${CP_BOMAIN}/config/production/nginx/error.d/default.conf~/home/${CP_DOMAIN}/config/production/nginx/error.d/default.conf~g" \
/home/"${CP_BOMAIN}"/config/production/nginx/conf.d/default.conf
sed -i "s~server ${CP_BOMAIN_}:3000~server ${CP_DOMAIN_}:3000~g" \
/home/"${CP_BOMAIN}"/config/production/nginx/conf.d/default.conf
sh_progress
docker stop "${CP_BOMAIN_}" >>/var/log/docker_bot_"$(date '+%d_%m_%Y')".log 2>&1
sh_progress
docker rm -f "${CP_BOMAIN_}" >>/var/log/docker_bot_"$(date '+%d_%m_%Y')".log 2>&1
sh_progress
rm -rf /home/"${CP_BOMAIN}"/config/production/nginx/bots.d \
/home/"${CP_BOMAIN}"/config/production/nginx/error.d \
/home/"${CP_BOMAIN}"/config/production/nginx/html \
/home/"${CP_BOMAIN}"/config/production/nginx/pagespeed.d \
/home/"${CP_BOMAIN}"/config/production/nginx/pass.d \
/home/"${CP_BOMAIN}"/config/production/nginx/nginx.sh \
/home/"${CP_BOMAIN}"/config/production/nginx/nginx.conf \
/home/"${CP_BOMAIN}"/config/production/nginx/mime.types \
/home/"${CP_BOMAIN}"/config/production/nginx/Dockerfile \
/home/"${CP_BOMAIN}"/config/production/nginx/conf.d/globalblacklist.conf \
/home/"${CP_BOMAIN}"/config/production/nginx/conf.d/real_ip.conf
rm -rf /tmp/nginx && mv /home/"${CP_BOMAIN}"/config/production/nginx /tmp/nginx \
>>/var/log/docker_bot_"$(date '+%d_%m_%Y')".log 2>&1
rm -rf /home/"${CP_BOMAIN:?}"
mkdir -p /home/"${CP_BOMAIN}"/config/production
mkdir -p /home/"${CP_BOMAIN}"/log
mv /tmp/nginx /home/"${CP_BOMAIN}"/config/production/nginx
touch /home/"${CP_BOMAIN}"/process.json
sh_progress 100
NGINX_STATUS=$(docker exec -t nginx nginx -t | grep successful)
if [ "${NGINX_STATUS}" != "" ]; then
docker exec nginx nginx -s reload >>/var/log/docker_bot_"$(date '+%d_%m_%Y')".log 2>&1
_header "DOMAIN FOR BOTS / ALTERNATE DOMAIN"
_content
_content "${CP_BOMAIN}"
_content
_line
else
_header "ERROR"
_content
docker exec -t nginx nginx -t
_content
_line
fi
post_commands "${CP_BOMAIN}"
_br
exit 0
;;
"bench"|"benchmark"|"speedtest" )
SPEED_LOCATION=${2:-"eu"}
bash <(wget "https://raw.githubusercontent.com/laset-com/speedtest/master/speedtest.sh" -qO-) "-${SPEED_LOCATION}"
exit 0
;;
"import" )
if [ "${2}" = "dle" ]; then
read_domain "${3}"
sh_not
read_import "${4}"
_s "${4}"
FILE_EXPORT="http://${IMPORT_DOMAIN}/uploads/files/${CP_DOMAIN}.xml"
CREATE_EXPORT=$(wget -qO- "http://${IMPORT_DOMAIN}/dle2cinemapress.php?domain=${CP_DOMAIN}")
if [ "${CREATE_EXPORT}" != "ok" ]; then
_header "ERROR"
_content
_content "The website ${IMPORT_DOMAIN} is temporarily unavailable,"
_content "please try again later."
_content "http://${IMPORT_DOMAIN}/dle2cinemapress.php?domain=${CP_DOMAIN}"
_content
_s
exit 0
else
sleep 2
fi
_line
_content "Downloading ..."
wget -qO "/home/${CP_DOMAIN}/config/production/sphinx/export.xml" "${FILE_EXPORT}" || \
rm -rf "/home/${CP_DOMAIN}/config/production/sphinx/export.xml"
if [ -f "/home/${CP_DOMAIN}/config/production/sphinx/export.xml" ]; then
_content "Import ..."
rm -rf "/home/${CP_DOMAIN}/config/production/sphinx/source.xml"
mv "/home/${CP_DOMAIN}/config/production/sphinx/export.xml" \
"/home/${CP_DOMAIN}/config/production/sphinx/source.xml"
docker exec "${CP_DOMAIN_}" indexer "xmlpipe2_${CP_DOMAIN_}" --rotate >/dev/null
_content "Done!"
else
_header "ERROR"
_content
_content "Failed to download export file,"
_content "please try again later."
_content "${FILE_EXPORT}"
_content
_s
exit 0
fi
fi
exit 0
;;
"app" )
read_domain "${2}"
sh_not
if [ "${3}" = "windows" ] || [ "${3}" = "linux" ] || [ "${3}" = "osx" ]; then
NAME_OS="${3}"
if [ "${4}" = "" ]; then
APP_DOMAIN="app.${2}"
else
APP_DOMAIN="${4}"
fi
_br
else
read_os "${3}"
read_app "${4}"
_s "${4}"
fi
PROTOCOLS=$(grep "\"protocol\"" /home/"${CP_DOMAIN}"/config/production/config.js)
PROTOCOL=$(echo "${PROTOCOLS}" | sed 's/.*"protocol":\s*"\(https\|http\).*/\1/')
sh_progress
docker rm $(docker ps -aq) >>/var/log/docker_app_"$(date '+%d_%m_%Y')".log 2>&1
sh_progress
docker rmi -f $(docker images -f 'dangling=true' -q) >>/var/log/docker_app_"$(date '+%d_%m_%Y')".log 2>&1
sh_progress
docker run \
--rm \
-v /home/"${CP_DOMAIN}"/config/app/icons:/icons \
-v /home/"${CP_DOMAIN}"/config/app/"${NAME_OS}":/cinemaapp \
cinemapress/app:latest \
--name "${CP_DOMAIN_}" \
--platform "${NAME_OS}" \
--arch "x64" \
--app-copyright "CinemaPress App" \
--app-version "${CP_VER}" \
--icon "/icons/icon.png" \
--width "1280px" \
--height "800px" \
--min-width "0" \
--min-height "0" \
--user-agent "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:99.0) Gecko/20100101 Firefox/99.0 CinemaPress App" \
--ignore-certificate \
--insecure \
--internal-urls ".*" \
--disable-context-menu \
--disable-dev-tools \
--single-instance \
--darwin-dark-mode-support \
--background-color "#1a2035" \
--verbose \
--win32metadata "{\"CompanyName\": \"${CP_DOMAIN}\",\"FileDescription\": \"${CP_DOMAIN}\",\"OriginalFilename\": \"${CP_DOMAIN}\",\"ProductName\": \"${CP_DOMAIN}\",\"InternalName\": \"${CP_DOMAIN}\"}" \
"${PROTOCOL}://${APP_DOMAIN}" \
"/cinemaapp/" \
>>/var/log/docker_app_"$(date '+%d_%m_%Y')".log 2>&1
sleep 10
sh_progress
rm -rf /home/${CP_DOMAIN}/files/"${NAME_OS}"
mkdir -p /home/${CP_DOMAIN}/files/"${NAME_OS}"
mv /home/${CP_DOMAIN}/config/app/"${NAME_OS}"/* \
/home/${CP_DOMAIN}/config/app/"${NAME_OS}"/app >/dev/null 2>&1;
if [ -f /home/${CP_DOMAIN}/config/app/"${NAME_OS}"/app/"${CP_DOMAIN_}".exe ]; then
mv /home/${CP_DOMAIN}/config/app/"${NAME_OS}"/app/"${CP_DOMAIN_}".exe \
/home/${CP_DOMAIN}/config/app/"${NAME_OS}"/app/app.exe
fi
cd /home/${CP_DOMAIN}/config/app/"${NAME_OS}" && \
zip -rq /home/${CP_DOMAIN}/files/"${NAME_OS}"/app_"${CP_VER}".zip app
rm -rf /home/${CP_DOMAIN}/config/app/"${NAME_OS}"
docker image prune -af >>/var/log/docker_app_"$(date '+%d_%m_%Y')".log 2>&1
sh_progress 100
_line
_header "/files/${NAME_OS}/app_${CP_VER}.zip"
_line
_br
exit 0
;;
"splash" )
if [ "${4}" = "" ]; then exit 0; fi
_br
sh_progress
PROTOCOLS=$(grep "\"protocol\"" /home/"${2}"/config/production/config.js)
PROTOCOL=$(echo "${PROTOCOLS}" | sed 's/.*"protocol":\s*"\(https\|http\).*/\1/')
SPLASH_DOMAIN="${PROTOCOL}:\/\/app.${2}"
if [ "${6}" != "" ]; then SPLASH_DOMAIN="${6//\//\\\/}"; fi
GIT=${5:-github}
cd /home/"${2}"/files/splash && \
echo "config" >> .gitignore && \
echo "screen.html" >> .gitignore && \
git init >/dev/null 2>&1; \
cp -rf config .git/config; \
cp -rf screen.html index.html; \
sed -Ei "s/\/\/example\.com/${SPLASH_DOMAIN}/g" index.html; \
sed -Ei "s/config_name/${3}/g" .git/config; \
sed -Ei "s/config_password/${4}/g" .git/config; \
if [ "${GIT}" != "github" ]; then
sed -Ei "s/github/gitlab/g" .git/config;
fi;
git add . >/dev/null 2>&1; \
git commit -a -m "${3}" >/dev/null 2>&1; \
git branch -M main >/dev/null 2>&1; \
git push -u origin main >/dev/null 2>&1
sh_progress
sleep 20
sh_progress 100
_line
_header "DOMAIN NAME FOR SPLASH SCREEN"
_line
_header "${3}.${GIT}.io"
_line
_br
exit 0
;;
"ms"|"mailserver"|"mail"|"setup.sh"|"./setup.sh" )
if [ "${2}" = "help" ]; then
wget -qO /usr/bin/mailcinema https://raw.githubusercontent.com/docker-mailserver/docker-mailserver/2527ebfaf2b3eee11b11c4ee589010e8c7a61a99/setup.sh
sed -Ei "s/\\\$0/cinemapress ms/" /usr/bin/mailcinema
chmod a+x /usr/bin/mailcinema
/usr/bin/mailcinema
elif [ "${3}" = "" ]; then
read_domain "${2}"
sh_not
SSL_TYPE=()
SSL_DIR=()
if [ -d "/home/${CP_DOMAIN}/config/production/nginx/ssl.d/live/${CP_DOMAIN}/" ]; then
SSL_TYPE=(-e "SSL_TYPE=letsencrypt")
SSL_DIR=(-v /home/"${CP_DOMAIN}"/config/production/nginx/ssl.d:/etc/letsencrypt:ro)
fi
docker run \
-d \
--name mail \
--hostname "mail.${CP_DOMAIN}" \
--restart always \
--cap-add NET_ADMIN \
--cap-add SYS_PTRACE \
-v /var/docker-mailserver:/tmp/docker-mailserver \
"${SSL_DIR[@]}" \
-e ENABLE_SPAMASSASSIN=1 \
-e SPAMASSASSIN_SPAM_TO_INBOX=1 \
-e ENABLE_CLAMAV=1 \
-e ENABLE_FAIL2BAN=1 \
-e DMS_DEBUG=1 \
"${SSL_TYPE[@]}" \
-p 25:25 \
-p 143:143 \
-p 465:465 \
-p 587:587 \
-p 993:993 \
cinemapress/mail
wget -qO /usr/bin/mailcinema https://raw.githubusercontent.com/docker-mailserver/docker-mailserver/2527ebfaf2b3eee11b11c4ee589010e8c7a61a99/setup.sh
sed -Ei "s/\\\$0/cinemapress ms/" /usr/bin/mailcinema
chmod a+x /usr/bin/mailcinema
_br
_line
_header "MAIL SERVER ${CP_DOMAIN} STARTED"
_line
printf "${Y}Type:${NC} ${G}A${NC}"
_br
printf "${Y}Name:${NC} ${G}mail.${CP_DOMAIN}${NC}"
_br
printf "${Y}Content:${NC} ${G}IP of your server${NC}"
_br
_line
printf "${Y}Type:${NC} ${G}A${NC}"
_br
printf "${Y}Name:${NC} ${G}imap.${CP_DOMAIN}${NC}"
_br
printf "${Y}Content:${NC} ${G}IP of your server${NC}"
_br
_line
printf "${Y}Type:${NC} ${G}A${NC}"
_br
printf "${Y}Name:${NC} ${G}smtp.${CP_DOMAIN}${NC}"
_br
printf "${Y}Content:${NC} ${G}IP of your server${NC}"
_br
_line
printf "${Y}Type:${NC} ${G}MX${NC}"
_br
printf "${Y}Name:${NC} ${G}${CP_DOMAIN}${NC}"
_br
printf "${Y}Content:${NC} ${G}mail.${CP_DOMAIN}${NC}"
_br
printf "${Y}Priority:${NC} ${G}1${NC}"
_br
_line
printf "${Y}Type:${NC} ${G}TXT${NC}"
_br
printf "${Y}Name:${NC} ${G}${CP_DOMAIN}${NC}"
_br
printf "${Y}Content:${NC} ${G}v=spf1 mx -all${NC}"
_br
_line
_br
else
/usr/bin/mailcinema "${2}" "${3}" "${4}" "${5}" "${6}" "${7}" "${8}" "${9}"
sleep 5
_br
if [ "${3}" = "dkim" ] && [ -d "/var/docker-mailserver/opendkim/keys" ]; then
docker restart mail &>/dev/null
sleep 15
cd /var/docker-mailserver/opendkim/keys/ && for f in */; do
if [ -d "${f}" ] && [ -f "/var/docker-mailserver/opendkim/keys/${f%%/}/mail.txt" ]; then
CONTENT_DKIM=""
_header "${f%%/}"
printf "${Y}Type:${NC} ${G}TXT${NC}"
_br
printf "${Y}Name:${NC} ${G}mail._domainkey${NC}"
_br
while IFS= read -r line; do CONTENT_DKIM_ONE=$(echo ${line} | sed 's/.*"\(.*\)".*/\1/'); CONTENT_DKIM="${CONTENT_DKIM}${CONTENT_DKIM_ONE}"; done < "/var/docker-mailserver/opendkim/keys/${f%%/}/mail.txt"
printf "${Y}Content:${NC} ${G}${CONTENT_DKIM}${NC}"
_br
_line
_br
fi
done
fi
fi
exit 0
;;
"temp"|"template"|"design"|"cinematheme"|"ct"|"uncss" )
read_domain "${2}"
sh_not
ARRAY_PAGE=()
if [ "${3}" = "-h" ]; then
docker exec -it "${CP_DOMAIN_}" /usr/bin/cinematheme -h
elif [ "${3}" != "" ]; then
docker exec -it "${CP_DOMAIN_}" /usr/bin/cinemapress container cinematheme "${@}"
else
_line
read -r -e -p '[Name Theme] -n ' NAME_THEME
_line
read -r -e -p '[URL Index] -i ' INDEX_PAGE
_line
read -r -e -p '[URL Movie] -m ' MOVIE_PAGE
_line
read -r -e -p '[URL Category] -c ' CATEGORY_PAGE
_line
read -r -e -p '[URL Categories] -s ' CATEGORIES_PAGE
_line
read -r -e -p '[URL Episode] -e ' EPISODE_PAGE
_line
read -r -e -p '[URL Picture] -p ' PICTURE_PAGE
_line
read -r -e -p '[URL Trailer] -t ' TRAILER_PAGE
_line
read -r -e -p '[URL Online] -o ' ONLINE_PAGE
_line
read -r -e -p '[URL Download] -d ' DOWNLOAD_PAGE
_line
_br
if [ "${NAME_THEME}" != "" ]; then ARRAY_PAGE+=(-n "${NAME_THEME}"); fi
if [ "${INDEX_PAGE}" != "" ]; then ARRAY_PAGE+=(-i "${INDEX_PAGE}"); fi
if [ "${MOVIE_PAGE}" != "" ]; then ARRAY_PAGE+=(-m "${MOVIE_PAGE}"); fi
if [ "${CATEGORY_PAGE}" != "" ]; then ARRAY_PAGE+=(-c "${CATEGORY_PAGE}"); fi
if [ "${CATEGORIES_PAGE}" != "" ]; then ARRAY_PAGE+=(-s "${CATEGORIES_PAGE}"); fi
if [ "${EPISODE_PAGE}" != "" ]; then ARRAY_PAGE+=(-e "${EPISODE_PAGE}"); fi
if [ "${PICTURE_PAGE}" != "" ]; then ARRAY_PAGE+=(-p "${PICTURE_PAGE}"); fi
if [ "${TRAILER_PAGE}" != "" ]; then ARRAY_PAGE+=(-t "${TRAILER_PAGE}"); fi
if [ "${ONLINE_PAGE}" != "" ]; then ARRAY_PAGE+=(-o "${ONLINE_PAGE}"); fi
if [ "${DOWNLOAD_PAGE}" != "" ]; then ARRAY_PAGE+=(-d "${DOWNLOAD_PAGE}"); fi
if [ "${1}" = "uncss" ]; then
ARRAY_PAGE+=(--uncss);
docker exec -it "${CP_DOMAIN_}" /usr/bin/cinematheme "${ARRAY_PAGE[@]}"
else
docker exec -it "${CP_DOMAIN_}" /usr/bin/cinemapress container cinematheme "${ARRAY_PAGE[@]}"
fi
_br
fi
exit 0
;;
"cms" )
read_domain ${2}
sh_yes
read_cms "${3}"
_s ${3}
NAME_CMS=${NAME_CMS:-}
MYSQL_PASSWORD="$(date +%s%N | sha256sum | base64 | head -c 12)"
MYSQL_DATABASE="${CP_DOMAIN_}"
MYSQL_USER="${CP_DOMAIN_}"
ADMIN_USER="cinemaadmin"
ADMIN_PASSWORD="$(date +%s%N | sha256sum | base64 | head -c 12)"
if [ "${NAME_CMS}" = "backup" ] && [ "${4}" = "create" ]; then
if [ -f "/var/lib/cinemapress/dump/backup.sql" ]; then
echo "ERROR: Backup file found /var/lib/cinemapress/dump/backup.sql"
exit 0
fi
docker exec mysql sh -c 'exec mysqldump -A -uroot' \
> "/var/lib/cinemapress/dump/backup.sql"
echo "SUCCESS: Backup file /var/lib/cinemapress/dump/backup.sql"
exit 0
fi
if [ "${NAME_CMS}" = "backup" ] && [ "${4}" = "restore" ]; then
if [ ! -f "/var/lib/cinemapress/dump/restore.sql" ]; then
echo "ERROR: Restore file not found /var/lib/cinemapress/dump/restore.sql"
exit 0
fi
docker exec -i mysql sh -c 'exec mysql -uroot' \
< "/var/lib/cinemapress/dump/restore.sql"
echo "SUCCESS: Restore file /var/lib/cinemapress/dump/restore.sql"
exit 0
fi
mkdir -p /var/lib/cinemapress/php
mkdir -p /var/lib/cinemapress/mysql
mkdir -p /var/lib/cinemapress/dump
mkdir -p /home/"${CP_DOMAIN}"/config/production/nginx/conf.d
mkdir -p /home/"${CP_DOMAIN}"/config/production/nginx/pass.d
mkdir -p /home/"${CP_DOMAIN}"/config/production/nginx/ssl.d
mkdir -p /home/"${CP_DOMAIN}"/config/production/nginx/any.d
mkdir -p /home/"${CP_DOMAIN}"/config/production/nginx/conf.d
mkdir -p /home/"${CP_DOMAIN}"/config/production/nginx/letsencrypt
if [ ! "$(docker network ls | grep cinemapress)" ]; then
docker network create \
--driver bridge \
cinemapress
fi
if [ "`docker ps -aq -f status=running -f name=^/nginx\$ 2>/dev/null`" = "" ]; then
if [ "${CP_IP}" = "domain" ] \
&& [ "`netstat -tunlp | grep 0.0.0.0:80`" = "" ] \
&& [ "`netstat -tunlp | grep :::80`" = "" ]; then
# docker build -t cinemapress/nginx https://github.com/CinemaPress/CinemaPress.git#:config/default/nginx
docker run \
-d \
--name nginx \
--restart always \
--network cinemapress \
-v /var/log/nginx:/var/log/nginx \
-v /var/local/balancer:/var/local/balancer \
-v /home:/home \
-p 80:80 \
-p 443:443 \
cinemapress/nginx:latest
NGINX_RUN=1
while [ "${NGINX_RUN}" != "50" ]; do
sleep 3
NGINX_RUN=$((1+${NGINX_RUN}))
if [ "`docker ps -aq -f status=running -f name=^/nginx\$ 2>/dev/null`" != "" ]; then
NGINX_RUN=50
fi
done
fi
fi
if [ ! "$(docker ps -a | grep php)" ]; then
docker run \
-d \
--name php \
--restart always \
--network cinemapress \
-v /home:/home \
cinemapress/php:latest
fi
if [ ! "$(docker ps -a | grep mysql)" ]; then
docker run \
-d \
--name mysql \
--restart always \
--network cinemapress \
-v /var/lib/cinemapress/mysql:/var/lib/mysql \
-e MYSQL_ALLOW_EMPTY_PASSWORD=yes \
mariadb:10 \
--character-set-server=utf8mb4 \
--collation-server=utf8mb4_unicode_ci
fi
sleep 30
docker exec mysql sh -c \
"exec mysql -uroot -e \"FLUSH PRIVILEGES;CREATE DATABASE ${MYSQL_DATABASE} /*\!40100 DEFAULT CHARACTER SET utf8mb4 */;CREATE USER '${MYSQL_USER}'@'%' IDENTIFIED BY '${MYSQL_PASSWORD}';GRANT ALL PRIVILEGES ON ${MYSQL_DATABASE}.* TO '${MYSQL_USER}'@'%';FLUSH PRIVILEGES;\""
sleep 30
docker exec mysql sh -c \
"exec mysql -uroot -e \"FLUSH PRIVILEGES;DROP USER '${MYSQL_USER}'@'%';CREATE USER '${MYSQL_USER}'@'%' IDENTIFIED BY '${MYSQL_PASSWORD}';GRANT ALL PRIVILEGES ON ${MYSQL_DATABASE}.* TO '${MYSQL_USER}'@'%';FLUSH PRIVILEGES;\""
if [ ! "$(docker ps -a | grep adminer)" ]; then
docker run \
-d \
--name adminer \
--restart always \
--network cinemapress \
-e ADMINER_DEFAULT_SERVER=mysql \
-e ADMINER_DESIGN='galkaev' \
adminer:fastcgi
OPENSSL=`echo "${ADMIN_PASSWORD}" | openssl passwd -1 -stdin -salt CP`
echo "cinemaadmin:${OPENSSL}" > /home/${CP_DOMAIN}/config/production/nginx/pass.d/${CP_DOMAIN}.pass
else
ADMIN_PASSWORD=""
fi
if [ "${NAME_CMS}" = "wordpress" ]; then
wget -qO "wordpress.tar.gz" "https://wordpress.org/wordpress-latest.tar.gz"
tar -xzf "wordpress.tar.gz" -C /var
rm -rf "wordpress.tar.gz"
cp -rf /var/wordpress/* /home/${CP_DOMAIN}/
{
echo "<?php"
echo "define( 'DB_NAME', '${MYSQL_DATABASE}' );"
echo "define( 'DB_USER', '${MYSQL_USER}' );"
echo "define( 'DB_PASSWORD', '${MYSQL_PASSWORD}' );"
echo "define( 'DB_HOST', 'mysql' );"
echo "define( 'DB_CHARSET', 'utf8mb4' );"
echo "define( 'DB_COLLATE', '' );"
echo "define( 'AUTH_KEY', '$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | head -c 64)' );"
echo "define( 'SECURE_AUTH_KEY', '$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | head -c 64)' );"
echo "define( 'LOGGED_IN_KEY', '$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | head -c 64)' );"
echo "define( 'NONCE_KEY', '$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | head -c 64)' );"
echo "define( 'AUTH_SALT', '$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | head -c 64)' );"
echo "define( 'SECURE_AUTH_SALT', '$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | head -c 64)' );"
echo "define( 'LOGGED_IN_SALT', '$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | head -c 64)' );"
echo "define( 'NONCE_SALT', '$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | head -c 64)' );"
echo "\$table_prefix = 'wp_';"
echo "define( 'WP_DEBUG', false );"
echo "if ( ! defined( 'ABSPATH' ) ) {"
echo " define( 'ABSPATH', __DIR__ . '/' );"
echo "}"
echo "require_once ABSPATH . 'wp-settings.php';"
} >> /home/${CP_DOMAIN}/wp-config.php
elif [ "${NAME_CMS}" = "drupal" ]; then
wget -qO "drupal.tar.gz" "https://www.drupal.org/download-latest/tar.gz"
tar -xzf "drupal.tar.gz" -C /var
mv /var/drupal-*/* /var/drupal-*/.htaccess /var/drupal-*/.csslintrc /var/drupal-*/.editorconfig /var/drupal-*/.eslintignore /var/drupal-*/.eslintrc.json /var/drupal-*/.gitattributes /home/${CP_DOMAIN}/
mkdir -p /home/${CP_DOMAIN}/sites/default/files/translations
chmod a+w /home/${CP_DOMAIN}/sites/default/files
chmod a+w /home/${CP_DOMAIN}/sites/default/files/translations
cp /home/${CP_DOMAIN}/sites/default/default.settings.php /home/${CP_DOMAIN}/sites/default/settings.php
chmod a+w /home/${CP_DOMAIN}/sites/default/settings.php
rm -rf "drupal.tar.gz"
elif [ "${NAME_CMS}" = "joomla" ]; then
wget -qO "joomla3.tar.gz" "https://downloads.joomla.org/cms/joomla3/3-10-3/Joomla_3-10-3-Stable-Full_Package.tar.gz?format=gz"
tar -xzf "joomla3.tar.gz" -C /home/${CP_DOMAIN}/
touch /home/${CP_DOMAIN}/configuration.php
chmod 644 /home/${CP_DOMAIN}/configuration.php
rm -rf "joomla3.tar.gz"
elif [ "${NAME_CMS}" = "dle" ]; then
wget -qO "dle_trial.zip" "https://dle-news.ru/files/dle_trial.zip"
mkdir -p /var/dle
unzip "dle_trial.zip" -d /var/dle/
rm -rf "dle_trial.zip"
cp -rf /var/dle/upload/* /home/${CP_DOMAIN}/
chmod 777 /home/${CP_DOMAIN}/templates
chmod 777 $(find /home/${CP_DOMAIN}/templates -type d)
chmod 666 $(find /home/${CP_DOMAIN}/templates -type f)
chmod 777 /home/${CP_DOMAIN}/backup
chmod 777 $(find /home/${CP_DOMAIN}/backup -type d)
chmod 777 /home/${CP_DOMAIN}/uploads
chmod 777 $(find /home/${CP_DOMAIN}/uploads -type d)
chmod 777 /home/${CP_DOMAIN}/engine/data
chmod 777 /home/${CP_DOMAIN}/engine/cache
chmod 777 /home/${CP_DOMAIN}/engine/cache/system
elif [ "${MYSQL_USER}" != "" ] && [ "${MYSQL_PASSWORD}" != "" ] && [ "${MYSQL_DATABASE}" != "" ]; then
{
echo "<html>"
echo "<head>"
echo " <title>Hello CinemaPress</title>"
echo "</head>"
echo "<body>"
echo " <?php"
echo " \$link = mysqli_connect('mysql', '${MYSQL_USER}', '${MYSQL_PASSWORD}', '${MYSQL_DATABASE}');"
echo " if (!\$link) {"
echo " die('ERROR: ' . mysqli_error());"
echo " }"
echo " echo 'Hello, CinemaPress!';"
echo " mysqli_close(\$link);"
echo " ?>"
echo "</body>"
echo "</html>"
} >> /home/${CP_DOMAIN}/index.php
else
{
echo "<html>"
echo "<head>"
echo " <title>Hello CinemaPress</title>"
echo "</head>"
echo "<body>"
echo " <?php"
echo " echo 'Hello, CinemaPress!';"
echo " ?>"
echo "</body>"
echo "</html>"
} >> /home/${CP_DOMAIN}/index.php
fi
{
echo "server {"
echo " listen 80;"
echo " listen [::]:80;"
echo " #ssl include /home/${CP_DOMAIN}/config/production/nginx/ssl.d/default.conf;"
echo " root /home/${CP_DOMAIN};"
echo " index index.php index.html index.htm;"
echo " server_name .${CP_DOMAIN};"
echo " access_log /var/log/nginx/access_${CP_DOMAIN}.log;"
echo " include /etc/nginx/bots.d/ddos.conf;"
echo " include /etc/nginx/bots.d/blockbots.conf;"
echo " keepalive_timeout 10;"
echo " client_max_body_size 64m;"
echo " if ( \$host ~* ^www\.(?<domain>.+) ) {"
echo " rewrite ^/(.*)$ \$scheme://\$domain/\$1 permanent;"
echo " }"
echo " if ( \$request_method !~ ^(GET|POST)$ ) {"
echo " return 444;"
echo " }"
echo " location ~* ^/(bin|.*\.sh|.*\.conf)($|\/) {"
echo " return 404;"
echo " }"
echo " location / {"
echo " try_files \$uri \$uri/ /index.php?\$query_string;"
echo " }"
echo " location ~* \.php$ {"
echo " try_files \$uri \$uri/ /index.php last;"
echo " fastcgi_split_path_info (.+?\.php)(/.*)$;"
echo " fastcgi_pass php:9000;"
echo " fastcgi_index index.php;"
echo " include fastcgi_params;"
echo " fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name;"
echo " fastcgi_param PATH_INFO \$fastcgi_path_info;"
echo " }"
echo " location ~* .php/ { rewrite (.*.php)/ \$1 last; }"
echo " location ~ \/cinemaadmin {"
echo " auth_basic \"Login Adminer!\";"
echo " auth_basic_user_file /home/${CP_DOMAIN}/config/production/nginx/pass.d/${CP_DOMAIN}.pass;"
echo " rewrite ^/cinemaadmin(/.*)$ \$1 break;"
echo " try_files \$uri \$uri/ /index.php last;"
echo " fastcgi_split_path_info (.+?\.php)(/.*)$;"
echo " fastcgi_pass adminer:9000;"
echo " fastcgi_index index.php;"
echo " include fastcgi_params;"
echo " fastcgi_param SCRIPT_FILENAME /var/www/html/index.php;"
echo " fastcgi_param DOCUMENT_ROOT /var/www/html/;"
echo " }"
echo " location ~ /\.ht {"
echo " deny all;"
echo " }"
echo " location = /favicon.ico {"
echo " log_not_found off; access_log off;"
echo " }"
echo " location = /robots.txt {"
echo " log_not_found off; access_log off; allow all;"
echo " }"
echo " location ~* \.(css|gif|ico|jpeg|jpg|js|png)$ {"
echo " expires max; log_not_found off;"
echo " }"
echo "}"
} >> /home/${CP_DOMAIN}/config/production/nginx/conf.d/default.conf
{
echo "listen 443 ssl;"
echo "listen [::]:443 ssl;"
echo "ssl_certificate /home/${CP_DOMAIN}/config/production/nginx/ssl.d/live/${CP_DOMAIN}/fullchain.pem;"
echo "ssl_certificate_key /home/${CP_DOMAIN}/config/production/nginx/ssl.d/live/${CP_DOMAIN}/privkey.pem;"
echo "ssl_dhparam /home/${CP_DOMAIN}/config/production/nginx/ssl.d/live/${CP_DOMAIN}/dhparam.pem;"
echo "ssl_session_cache shared:SSL:10m;"
echo "ssl_session_timeout 1d;"
echo "ssl_stapling on;"
echo "ssl_stapling_verify on;"
echo "ssl_prefer_server_ciphers on;"
echo "ssl_protocols TLSv1.2;"
echo "ssl_ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS;"
echo "resolver 1.1.1.1;"
echo "resolver_timeout 10s;"
echo "add_header X-Content-Type-Options \"nosniff\";"
echo "add_header Strict-Transport-Security \"max-age=31536000; includeSubDomains\" always;"
} >> /home/"${CP_DOMAIN}"/config/production/nginx/ssl.d/default.conf
if [ "`docker ps -aq -f status=running -f name=^/nginx\$ 2>/dev/null`" != "" ]; then
docker exec nginx nginx -s reload
fi
_line
_header "${NAME_CMS}"
_line
echo "Website: http://${CP_DOMAIN}"
echo "MYSQL HOST: mysql"
if [ "${MYSQL_DATABASE}" != "" ]; then echo "MYSQL DATABASE: ${MYSQL_DATABASE}"; fi;
if [ "${MYSQL_USER}" != "" ]; then echo "MYSQL USER: ${MYSQL_USER}"; fi;
if [ "${MYSQL_PASSWORD}" != "" ]; then echo "MYSQL PASSWORD: ${MYSQL_PASSWORD}"; fi;
if [ "${ADMIN_PASSWORD}" != "" ]; then
echo "Adminer: http://${CP_DOMAIN}/cinemaadmin"
if [ "${ADMIN_USER}" != "" ]; then echo "USER: ${ADMIN_USER}"; fi;
if [ "${ADMIN_PASSWORD}" != "" ]; then echo "PASSWORD: ${ADMIN_PASSWORD}"; fi;
fi
_line
exit 0
;;
"redirect" )
if [ "${2}" = "" ] || [ "${3}" = "" ]; then
echo "ERROR: cinemapress redirect example.co hd.example.com"
exit 0
fi
mkdir -p /home/"${2}"/config/production/nginx/ssl.d
mkdir -p /home/"${2}"/config/production/nginx/conf.d
mkdir -p /home/"${2}"/config/production/nginx/letsencrypt
touch /home/"${2}"/index.php
{
echo "server {"
echo " listen 80;"
echo " listen [::]:80;"
echo " #ssl include /home/${2}/config/production/nginx/ssl.d/default.conf;"
echo " server_name .${2};"
echo " return 301 \$scheme://${3}\$request_uri;"
echo "}"
} > /home/"${2}"/config/production/nginx/conf.d/default.conf
if [ "${4}" = "bot" ]; then
{
echo "server {"
echo " listen 80;"
echo " listen [::]:80;"
echo " #ssl include /home/${2}/config/production/nginx/ssl.d/default.conf;"
echo " server_name .${2};"
echo " if ( \$http_user_agent ~* (google|yandex|bing|yahoo|baidu|duckduckgo|mail|ask|aol|msn) ) {"
echo " return 301 \$scheme://${3}\$request_uri;"
echo " }"
echo " return 444;"
echo "}"
} > /home/"${2}"/config/production/nginx/conf.d/default.conf
fi
{
echo "listen 443 ssl;"
echo "listen [::]:443 ssl;"
echo "ssl_certificate /home/${2}/config/production/nginx/ssl.d/live/${2}/fullchain.pem;"
echo "ssl_certificate_key /home/${2}/config/production/nginx/ssl.d/live/${2}/privkey.pem;"
echo "ssl_dhparam /home/${2}/config/production/nginx/ssl.d/live/${2}/dhparam.pem;"
echo "ssl_session_cache shared:SSL:10m;"
echo "ssl_session_timeout 1d;"
echo "ssl_stapling on;"
echo "ssl_stapling_verify on;"
echo "ssl_prefer_server_ciphers on;"
echo "ssl_protocols TLSv1.2;"
echo "ssl_ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS;"
echo "resolver 1.1.1.1;"
echo "resolver_timeout 10s;"
echo "add_header X-Content-Type-Options \"nosniff\";"
echo "add_header Strict-Transport-Security \"max-age=31536000; includeSubDomains\" always;"
} > /home/"${2}"/config/production/nginx/ssl.d/default.conf
if [ -d "/home/${2}/config/production/nginx/ssl.d/live/${2}/" ] || \
[ -d "/home/${2}/config/production/nginx/ssl.d/self-signed/${2}/" ]; then
sed -Ei "s/ #ssl include \/home\/${2}\/config\/production\/nginx\/ssl\.d\/default\.conf;/ include \/home\/${2}\/config\/production\/nginx\/ssl.d\/default.conf;/" \
"/home/${2}/config/production/nginx/conf.d/default.conf"
fi
NGINX_STATUS=$(docker exec -t nginx nginx -t | grep successful)
if [ "${NGINX_STATUS}" != "" ]; then
docker exec nginx nginx -s reload >/dev/null
echo "REDIRECT ${2} -> ${3}"
else
echo "ERROR NGINX:"
docker exec -t nginx nginx -t
fi
exit 0
;;
"static" )
read_domain "${2}"
sh_not
if [ "${4}" != "" ]; then
if [ "${3}" = "config" ]; then
docker exec "${CP_DOMAIN_}" rclone config create CINEMASTATIC mega user "${4}" pass "${5}" \
>>/var/log/docker_static_"$(date '+%d_%m_%Y')".log 2>&1
elif [ "${3}" = "ftp" ]; then
docker exec "${CP_DOMAIN_}" rclone config create CINEMASTATIC ftp user "${4}" pass "${5}" host "${6}" \
>>/var/log/docker_static_"$(date '+%d_%m_%Y')".log 2>&1
else
RCS=$(docker exec -t "${CP_DOMAIN_}" rclone config show 2>/dev/null | grep "CINEMASTATIC")
if [ "${RCS}" = "" ]; then
docker exec "${CP_DOMAIN_}" rclone config create CINEMASTATIC mega user "${3}" pass "${4}" \
>>/var/log/docker_static_"$(date '+%d_%m_%Y')".log 2>&1
fi
fi
sleep 10
CHECK_MKDIR=$(docker exec -t "${CP_DOMAIN_}" rclone mkdir CINEMASTATIC:/check-connection 2>/dev/null)
sleep 3
CHECK_RMDIR=$(docker exec -t "${CP_DOMAIN_}" rclone rmdir CINEMASTATIC:/check-connection 2>/dev/null)
if [ "${CHECK_MKDIR}" != "" ] || [ "${CHECK_RMDIR}" != "" ]; then
_header "ERROR"
_content
_content "Cannot connect to backup storage."
_content
_s
exit 0
fi
cp -r /home/"${CP_DOMAIN}"/config/production/rclone.conf /var/rclone.conf
fi
if [ "${3}" = "restore" ] || [ "${5}" = "restore" ] || [ "${6}" = "restore" ] || [ "${7}" = "restore" ]; then
sleep 3; docker exec "${CP_DOMAIN_}" rclone -vv copy CINEMASTATIC:${CP_DOMAIN}/static.tar /home/${CP_DOMAIN}/
cd /home/${CP_DOMAIN} && tar -xf /home/${CP_DOMAIN}/static.tar
rm -rf /home/${CP_DOMAIN}/static.tar
sleep 3; docker exec "${CP_DOMAIN_}" rclone -vv copy CINEMASTATIC:${CP_DOMAIN}/app.tar /home/${CP_DOMAIN}/
if [ -f "/home/${CP_DOMAIN}/app.tar" ]; then
cd /home/${CP_DOMAIN} && tar -xf /home/${CP_DOMAIN}/app.tar
rm -rf /home/${CP_DOMAIN}/app.tar
fi
elif [ "${3}" = "create" ] || [ "${5}" = "create" ] || [ "${6}" = "create" ] || [ "${7}" = "create" ]; then
cd /home/${CP_DOMAIN} && tar -uf /home/${CP_DOMAIN}/static.tar \
files/poster \
files/picture
if [ -d "/home/${CP_DOMAIN}/files/windows" ]; then
cd /home/${CP_DOMAIN} && tar -uf /home/${CP_DOMAIN}/app.tar \
files/windows \
files/linux \
files/osx &>/dev/null
sleep 3; docker exec "${CP_DOMAIN_}" rclone -vv delete CINEMASTATIC:${CP_DOMAIN}/app.tar
sleep 10; docker exec "${CP_DOMAIN_}" rclone -vv cleanup CINEMASTATIC:
sleep 10; docker exec "${CP_DOMAIN_}" rclone -vv copy /home/${CP_DOMAIN}/app.tar CINEMASTATIC:${CP_DOMAIN}/
fi
sleep 3; docker exec "${CP_DOMAIN_}" rclone -vv delete CINEMASTATIC:${CP_DOMAIN}/static.tar
sleep 10; docker exec "${CP_DOMAIN_}" rclone -vv cleanup CINEMASTATIC:
sleep 10; docker exec "${CP_DOMAIN_}" rclone -vv copy /home/${CP_DOMAIN}/static.tar CINEMASTATIC:${CP_DOMAIN}/
rm -rf /home/${CP_DOMAIN}/static.tar /home/${CP_DOMAIN}/app.tar
fi
exit 0
;;
"scp" )
if [ "${2}" = "" ] || [ "${3}" = "" ]; then
exit 0
fi
read_domain "${2}"
scp -r -q root@"${3}":/var/lib/sphinx/data/movies_"${CP_DOMAIN_}"* /var/lib/sphinx/data/
exit 0
;;
"cf"|"subdomains"|"sub" )
_br "${4}"
read_domain "${2}"
read_cloudflare_email "${3}"
read_cloudflare_api_key "${4}"
_s "${4}"
CLOUDFLARE_ZONE_ID=$(curl -s -X GET "https://api.cloudflare.com/client/v4/zones?name=${CP_DOMAIN}" \
-H "X-Auth-Email: ${CLOUDFLARE_EMAIL}" \
-H "X-Auth-Key: ${CLOUDFLARE_API_KEY}" \
-H "Content-Type: application/json" | \
sed -rn 's/.*"result":\[\{"id":"([A-Za-z0-9]*)".*/\1/p')
if [ "${CLOUDFLARE_ZONE_ID}" = "" ]; then
_line
printf "${Y} ☐ ZONE NOT FOUND [ ${NC}${CP_DOMAIN}${Y} ]\n${NC}"
_line
exit 0
fi
if [ -f "/home/${CP_DOMAIN}/files/${CP_DOMAIN}.sub.txt" ]; then
STATUS1=$(curl -s -X POST "https://api.cloudflare.com/client/v4/zones/${CLOUDFLARE_ZONE_ID}/dns_records/import" \
-H "X-Auth-Email: ${CLOUDFLARE_EMAIL}" \
-H "X-Auth-Key: ${CLOUDFLARE_API_KEY}" \
--form "file=@/home/${CP_DOMAIN}/files/${CP_DOMAIN}.sub.txt" \
--form 'proxied=false' | \
sed -rn 's/.*"success":(true|false).*/\1/p')
_line
if [ "${STATUS1}" = "true" ]; then
printf "${G} ✓ SUCCESS [ ${NC}${CP_DOMAIN}.sub.txt${G} ]\n${NC}"
else
printf "${R} ☐ ERROR [ ${NC}${CP_DOMAIN}.sub.txt${R} ]\n${NC}"
fi
fi
if [ -f "/home/${CP_DOMAIN}/files/${CP_DOMAIN}.proxied.sub.txt" ]; then
STATUS2=$(curl -s -X POST "https://api.cloudflare.com/client/v4/zones/${CLOUDFLARE_ZONE_ID}/dns_records/import" \
-H "X-Auth-Email: ${CLOUDFLARE_EMAIL}" \
-H "X-Auth-Key: ${CLOUDFLARE_API_KEY}" \
--form "file=@/home/${CP_DOMAIN}/files/${CP_DOMAIN}.proxied.sub.txt" \
--form 'proxied=true' | \
sed -rn 's/.*"success":(true|false).*/\1/p')
_line
if [ "${STATUS2}" = "true" ]; then
printf "${G} ✓ SUCCESS [ ${NC}${CP_DOMAIN}.proxied.sub.txt${G} ]\n${NC}"
else
printf "${R} ☐ ERROR [ ${NC}${CP_DOMAIN}.proxied.sub.txt${R} ]\n${NC}"
fi
fi
if [ "${STATUS1}" != "" ] || [ "${STATUS2}" != "" ]; then _s; fi
exit 0
;;
"debug" )
CRASH=()
CRASH+=("
---------------------------------------------------
")
CRASH+=("TOP")
CRASH+=("
---------------------------------------------------
")
CRASH+=("$(top -b -n 1)")
CRASH+=("
---------------------------------------------------
")
CRASH+=("DF")
CRASH+=("
---------------------------------------------------
")
CRASH+=("$(df -h)")
CRASH+=("
---------------------------------------------------
")
CRASH+=("DOCKER STATS")
CRASH+=("
---------------------------------------------------
")
CRASH+=("$(docker stats -a --no-stream)")
CRASH+=("
---------------------------------------------------
")
CRASH+=("DOCKER PS")
CRASH+=("
---------------------------------------------------
")
CRASH+=("$(docker ps -a)")
CRASH+=("
---------------------------------------------------
")
CRASH+=("PS")
CRASH+=("
---------------------------------------------------
")
CRASH+=("$(ps auxf)")
CRASH+=("
---------------------------------------------------
")
for D in /home/*; do
if [ -f "${D}/process.json" ] || [ -f "${D}/index.php" ]; then
DD=$(find "${D}" -maxdepth 0 -printf "%f")
DD_=$(echo "${DD}" | sed -r "s/[^A-Za-z0-9]/_/g")
if [ "$(docker ps -aq -f status=running -f name=^/"${DD_}"\$ 2>/dev/null)" != "" ]; then
CRASH+=("PING ${DD}")
CRASH+=("
---------------------------------------------------
")
CRASH+=("$(docker exec -t "${DD_}" cinemapress ping 2>/dev/null)")
CRASH+=("
---------------------------------------------------
")
CRASH+=("PS ${DD}")
CRASH+=("
---------------------------------------------------
")
CRASH+=("$(docker exec -t "${DD_}" ps 2>/dev/null)")
CRASH+=("
---------------------------------------------------
")
CRASH+=("PM2 LIST")
CRASH+=("
---------------------------------------------------
")
CRASH+=("$(docker exec -t "${DD_}" pm2 list 2>/dev/null)")
CRASH+=("
---------------------------------------------------
")
CRASH+=("PM2 ERR")
CRASH+=("
---------------------------------------------------
")
CRASH+=("$(docker exec -t "${DD_}" pm2 logs --err --lines 50 --nostream 2>/dev/null)")
CRASH+=("
---------------------------------------------------
")
CRASH+=("PM2 OUT")
CRASH+=("
---------------------------------------------------
")
CRASH+=("$(docker exec -t "${DD_}" pm2 logs --out --lines 50 --nostream 2>/dev/null)")
CRASH+=("
---------------------------------------------------
")
CRASH+=("CRON LOG ${DD}")
CRASH+=("
---------------------------------------------------
")
CRASH+=("$(docker exec -t "${DD_}" tail -n 50 "/home/${DD}/log/cron_$(date '+%d_%m_%Y').log" | grep -v CP_save)")
CRASH+=("
---------------------------------------------------
")
fi
CRASH+=("NGINX ACCESS ${DD}")
CRASH+=("
---------------------------------------------------
")
CRASH+=("$(tail -n 50 "/var/log/nginx/access_${DD}.log")")
CRASH+=("
---------------------------------------------------
")
fi
done
CRASH+=("NGINX ACCESS")
CRASH+=("
---------------------------------------------------
")
CRASH+=("$(tail -n 50 /var/log/nginx/access.log)")
CRASH+=("
---------------------------------------------------
")
CRASH+=("NGINX ERROR")
CRASH+=("
---------------------------------------------------
")
CRASH+=("$(tail -n 50 /var/log/nginx/error.log)")
CRASH+=("
---------------------------------------------------
")
DEBUG_URL=$(echo "${CRASH[@]}" | curl -s -F 'clbin=<-' https://clbin.com)
_br
_header "DEBUG LOGS"
_content
_content "${DEBUG_URL}?hl"
_content
_s
exit 0
;;
"people" )
_br "${3}"
read_domain "${2}"
read_theme "${3}"
_s "${3}"
if [ "${CP_DOMAIN}" = "" ] || [ "${CP_THEME}" = "" ]; then
exit 0
fi
PEOPLE_INFO="jpg"
if [ "${4}" = "json" ] || [ "${4}" = "jpg" ] || [ "${4}" = "all" ]; then
PEOPLE_INFO="${4}"
fi
PEOPLE_LANG="ru"
if [ "${5}" = "ru" ] || [ "${5}" = "en" ] || [ "${5}" = "all" ]; then
PEOPLE_LANG="${5}"
fi
PEOPLE_CACHE=""
if [ "${6}" = "cache" ]; then
PEOPLE_CACHE="${6}"
fi
if [ "${CP_OS}" = "debian" ] || [ "${CP_OS}" = "\"debian\"" ] || \
[ "${CP_OS}" = "ubuntu" ] || [ "${CP_OS}" = "\"ubuntu\"" ]; then
DEBIAN_FRONTEND=noninteractive apt-get -y -qq install jq
elif [ "${CP_OS}" = "fedora" ] || [ "${CP_OS}" = "\"fedora\"" ]; then
dnf -y install jq
elif [ "${CP_OS}" = "centos" ] || [ "${CP_OS}" = "\"centos\"" ]; then
yum install -y jq
fi
api="https://api.themoviedb.org/3/person/id?api_key=269890f657dddf4635473cf4cf456576&language=ru"
if [ "${PEOPLE_LANG}" = "en" ]; then
api="https://api.themoviedb.org/3/person/id?api_key=269890f657dddf4635473cf4cf456576&language=en"
fi
tmp_dir="/var/tmp-people"
mkdir -p "${tmp_dir}"
json_dir="/var/json-people"
mkdir -p "${json_dir}"
if [ "${PEOPLE_INFO}" = "all" ] || [ "${PEOPLE_INFO}" = "jpg" ]; then
people_images="/home/${CP_DOMAIN}/files/poster/people"
mkdir -p "${people_images}"
fi
if [ "${PEOPLE_INFO}" = "all" ] || [ "${PEOPLE_INFO}" = "json" ]; then
director_dir="/home/${CP_DOMAIN}/themes/${CP_THEME}/views/director"
actor_dir="/home/${CP_DOMAIN}/themes/${CP_THEME}/views/actor"
director_dir_tmp="${tmp_dir}/director"
actor_dir_tmp="${tmp_dir}/actor"
mkdir -p "${director_dir_tmp}"
mkdir -p "${actor_dir_tmp}"
mkdir -p "${director_dir}"
mkdir -p "${actor_dir}"
rm -rf "${director_dir}"
rm -rf "${actor_dir}"
fi
for l in {1..10}; do
start=$(( l * 310000 - 309999 ))
stop=$(( l * 310000 ))
( for (( i=start; i<=stop; i++ )); do
people_url="${api//id/${i}}"
people="${json_dir}/${i}.json"
if [ "${PEOPLE_CACHE}" = "cache" ]; then
if [ ! -f "${people}" ]; then
wget "${people_url}" -qO "${people}"
fi
else
wget "${people_url}" -qO "${people}"
fi
if [ ! -f "${people}" ]; then
rm -f "${people}"
continue
fi
people_json="$(cat "${people}")"
profile_path=$( echo "${people_json}" | jq -r ".profile_path" )
if [ "${profile_path}" = "null" ] || [ "${profile_path}" = "" ]; then
rm -f "${people}"
continue
fi
adult=$( echo "${people_json}" | jq -r ".adult" )
if [ "${adult}" != "false" ]; then
rm -f "${people}"
continue
fi
name=$( echo "${people_json}" | jq -r ".name" )
if [ "${PEOPLE_INFO}" = "all" ] || [ "${PEOPLE_INFO}" = "jpg" ]; then
if [ "${PEOPLE_CACHE}" = "cache" ]; then
if [ ! -f "${people_images}/${name}.jpg" ]; then
wget "https://image.tmdb.org/t/p/w185${profile_path}" -qO "${people_images}/${name}.jpg"
fi
else
wget "https://image.tmdb.org/t/p/w185${profile_path}" -qO "${people_images}/${name}.jpg"
fi
echo "${i}/${stop}) ${name}.jpg"
fi
if [ "${PEOPLE_INFO}" = "all" ] || [ "${PEOPLE_INFO}" = "json" ]; then
known_for_department=$( echo "${people_json}" | jq -r ".known_for_department" )
department=""
if [ "${known_for_department}" = "Directing" ]; then
department="${director_dir_tmp}"
else
department="${actor_dir_tmp}"
fi
mv "${people}" "${department}/${name}.json" &>/dev/null
echo "${i}/${stop}) ${name}.json"
fi
if [ "${PEOPLE_LANG}" = "all" ] || [ "${PEOPLE_LANG}" = "ru" ]; then
also_known_as=$( echo "${people_json}" | jq -r ".also_known_as[] | @base64" )
for row in ${also_known_as}; do
other_name="$(echo "${row}" | base64 --decode)"
other_name="${other_name//Ё/Е}"
other_name="${other_name//ё/е}"
if [ "${PEOPLE_LANG}" = "all" ]; then
if [ "${PEOPLE_INFO}" = "all" ] || [ "${PEOPLE_INFO}" = "json" ]; then
cd "${department}" && ln -s "${name}.json" "${other_name}.json" &>/dev/null
fi
if [ "${PEOPLE_INFO}" = "all" ] || [ "${PEOPLE_INFO}" = "jpg" ]; then
cd "${people_images}" && ln -s "${name}.jpg" "${other_name}.jpg" &>/dev/null
fi
echo "${i}/${stop}) ${name} » ${other_name}"
else
cyrillic="$(echo "${other_name}" | grep -Eo "[А-Яа-я]*")"
if [ -n "${cyrillic}" ]; then
if [ "${PEOPLE_INFO}" = "all" ] || [ "${PEOPLE_INFO}" = "json" ]; then
cd "${department}" && ln -s "${name}.json" "${other_name}.json" &>/dev/null
fi
if [ "${PEOPLE_INFO}" = "all" ] || [ "${PEOPLE_INFO}" = "jpg" ]; then
cd "${people_images}" && ln -s "${name}.jpg" "${other_name}.jpg" &>/dev/null
fi
echo "${i}/${stop}) ${name} » ${other_name}"
fi
fi
done
fi
done ) &
done
wait
if [ "${PEOPLE_INFO}" = "all" ] || [ "${PEOPLE_INFO}" = "json" ]; then
mv "${actor_dir_tmp}" "${actor_dir}"
mv "${director_dir_tmp}" "${director_dir}"
fi
rm -rf "${tmp_dir}"
exit 0
;;
"ping" )
curl -s --fail http://localhost:3000/ping || exit 1
exit 0
;;
"uptimerobot" )
MIN=$(date '+%M')
if [ "${MIN}" = "00" ] || [ "${MIN}" = "01" ]; then
rm -f "/home/.uptimerobot"
for D_MIN in /home/*; do
DD_MIN=$(find "${D_MIN}" -maxdepth 0 -printf "%f")
rm -f "/home/${DD_MIN}/.uptimerobot"
done
fi
if [ -n "${2}" ] && [ "${2}" != "push" ]; then
[ -f "/home/${2}/app.js" ] || [ -f "/home/${2}/index.php" ] || exit 0
[ ! -f "/home/.uptimerobot" ] || [ ! -f "/home/${2}/.uptimerobot" ] || exit 0
touch "/home/${2}/.uptimerobot"
sleep $(( ( "${RANDOM}" % 30 ) ))
DD=${2}
DD_=$(echo "${2}" | sed -r "s/[^A-Za-z0-9]/_/g")
PONG1=$(docker exec -t "${DD_}" /usr/bin/cinemapress ping 2>/dev/null)
if [ "${PONG1}" != "pong" ]; then
echo "$(date) ${DD} DOCKER warning"
sleep $(( ( "${RANDOM}" % 30 ) ))
PONG1=$(docker exec -t "${DD_}" /usr/bin/cinemapress ping 2>/dev/null)
if [ "${PONG1}" != "pong" ]; then
echo "$(date) ${DD} DOCKER restart"
docker restart "${DD_}"
sleep $(( ( "${RANDOM}" % 30 ) ))
fi
fi
PONG2=$(curl -s --fail -A "PING" http://"${DD}"/ping || curl -s --fail http://ping."${DD}"/ping)
if [ "${PONG2}" = "pong" ]; then
echo "$(date) ${DD} WEBSITE online"
else
/usr/bin/cinemapress debug
if [ -n "${3}" ] && [ -n "${4}" ]; then
echo "$(date) ${DD} WEBSITE push"
curl -d "{\"chat_id\":${4}, \"text\":\"Website down?\", \"reply_markup\": {\"inline_keyboard\": [[{\"text\":\"ping.${DD}\", \"url\": \"http://ping.${DD}\"}]]} }" -H "Content-Type: application/json" -X POST "https://api.telegram.org/bot${3}/sendMessage" &>/dev/null
else
echo "$(date) ${DD} WEBSITE restart"
docker stop "${DD_}"
sleep 5
docker start "${DD_}"
docker stop nginx
sleep 5
docker start nginx
fi
fi
rm -f "/home/${2}/.uptimerobot"
else
for D in /home/*; do
DD=$(find "${D}" -maxdepth 0 -printf "%f")
DD_=$(echo "${DD}" | sed -r "s/[^A-Za-z0-9]/_/g")
PONG1=$(curl -s --fail -A "PING" http://"${DD}"/ping || curl -s --fail http://ping."${DD}"/ping)
if { [ -f "${D}/app.js" ] || [ -f "${D}/index.php" ]; } && [ "${PONG1}" = "pong" ]; then
if [ "$(grep "${DD}_uptimerobot" /etc/crontab)" = "" ]; then
echo -e "\n" >>/etc/crontab
echo "# ----- ${DD}_uptimerobot --------------------------------------" >>/etc/crontab
echo "*/2 * * * * root /usr/bin/cinemapress uptimerobot \"${DD}\" \"${3}\" \"${4}\" >>\"/home/${DD}/log/uptimerobot_\$(date '+\%d_\%m_\%Y').log\" 2>&1" >>/etc/crontab
echo "# ----- ${DD}_uptimerobot --------------------------------------" >>/etc/crontab
echo "Added to monitoring: ${DD}"
fi
else
echo "Not added to monitoring: ${DD}"
fi
done
fi
exit 0
;;
"aria2"|"cloudtorrent"|"torrent"|"torrentclient" )
_br "${2}"
read_domain "${2}"
sh_not
_s "${2}"
LOCAL_ACTION="${3}"
if [ "${LOCAL_ACTION}" = "" ]; then
_header "MAKE A CHOICE"
printf "${C}---- ${G}1)${NC} run ${S}------------------------ Run Torrent Cloud Client ${C}----\n"
printf "${C}---- ${G}2)${NC} ftp ${S}---------------------- Configuration FTP Storages ${C}----\n"
printf "${C}---- ${G}3)${NC} show ${S}-------------------------- Show FTP Storage List ${C}----\n"
printf "${C}---- ${G}4)${NC} delete ${S}--------------------------- Delete FTP Storage ${C}----\n"
_s
read -e -p 'OPTION [1-4]: ' LOCAL_ACTION
LOCAL_ACTION=$(echo "${LOCAL_ACTION}" | iconv -c -t UTF-8)
_br
fi
if [ "${LOCAL_ACTION}" = "run" ] || [ "${LOCAL_ACTION}" = "1" ]; then
if [ "${CP_OS}" = "debian" ] || [ "${CP_OS}" = "\"debian\"" ] || \
[ "${CP_OS}" = "ubuntu" ] || [ "${CP_OS}" = "\"ubuntu\"" ]; then
DEBIAN_FRONTEND=noninteractive apt-get -y -qq install jq
elif [ "${CP_OS}" = "fedora" ] || [ "${CP_OS}" = "\"fedora\"" ]; then
dnf -y install jq
elif [ "${CP_OS}" = "centos" ] || [ "${CP_OS}" = "\"centos\"" ]; then
yum install -y jq
fi
RPC_SECRET=$(cat "/dev/urandom" | tr -dc 'a-zA-Z0-9' | fold -w 10 | head -n 1)
RPC_SECRET=$(printf '%s\n' "${RPC_SECRET}" | awk '{ print toupper($0) }')
if [ "`docker ps -aq -f status=running -f name=^/torrent\$ 2>/dev/null`" != "" ]; then
docker stop torrent >>/var/log/docker_torrent_"$(date '+%d_%m_%Y')".log 2>&1
docker rm -f torrent >>/var/log/docker_torrent_"$(date '+%d_%m_%Y')".log 2>&1
fi
docker run \
-d \
--name torrent \
"${DOCKER_MEM[@]}" \
--restart always \
--network cinemapress \
--env="PUID=${UID}" \
--env="PGID=${GID}" \
--env="UMASK_SET=022" \
--env="RPC_SECRET=${RPC_SECRET}" \
--env="RPC_PORT=6800" \
-p 6800:6800 \
--env="LISTEN_PORT=6888" \
-p 6888:6888 \
-p 6888:6888/udp \
-v "/home/${CP_DOMAIN}/files/torrent/config":/config \
-v "/home/${CP_DOMAIN}/files/torrent/downloads":/downloads \
p3terx/aria2-pro >>/var/log/docker_torrent_"$(date '+%d_%m_%Y')".log 2>&1
TORRENT_RUN=1
while [ "${TORRENT_RUN}" != "50" ]; do
sleep 3
TORRENT_RUN=$((1+${TORRENT_RUN}))
if [ "`docker ps -aq -f status=running -f name=^/torrent\$ 2>/dev/null`" != "" ]; then
docker exec "${CP_DOMAIN_}" /usr/bin/cinemapress container torrent
TORRENT_RUN=50
fi
done
mkdir -p "/home/${CP_DOMAIN}/files/torrent/uploads"
_line
_content
_content "Torrent client is running!"
_content
_content "torrent.${CP_DOMAIN}/index.html"
_content
_content "RPC ADDRESS: torrent.${CP_DOMAIN}:80/jsonrpc"
_content "RPC SECRET: ${RPC_SECRET}"
_content "RPC METHOD: POST"
_content
_content "Configure your video storage."
_content
_s
elif [ "${LOCAL_ACTION}" = "ftp" ] || [ "${LOCAL_ACTION}" = "2" ]; then
read_ftp_name "${4}"
read_ftp_hostname "${5}"
read_ftp_username "${6}"
read_ftp_password "${7}"
FTP_PASSWORD="$(docker exec -t "${CP_DOMAIN_}" /usr/bin/cinemapress rclone_obscure "${FTP_PASSWORD}")"
IFS=':' read -r -a HOST_PORT <<< "${FTP_HOSTNAME}"
if [ "${HOST_PORT[1]}" = "" ]; then
TORRENT_STORAGE=(ftp user "${FTP_USERNAME}" pass "${FTP_PASSWORD}" host "${HOST_PORT[0]}")
else
TORRENT_STORAGE=(ftp user "${FTP_USERNAME}" pass "${FTP_PASSWORD}" host "${HOST_PORT[0]}" port "${HOST_PORT[1]}")
fi
docker exec "${CP_DOMAIN_}" rclone config create "${FTP_NAME}" "${TORRENT_STORAGE[@]}" \
>>/var/log/docker_torrent_"$(date '+%d_%m_%Y')".log 2>&1
_s
elif [ "${LOCAL_ACTION}" = "show" ] || [ "${LOCAL_ACTION}" = "3" ]; then
if [ "${CP_OS}" = "alpine" ] || [ "${CP_OS}" = "\"alpine\"" ]; then
rclone config show
else
docker exec -t "${CP_DOMAIN_}" rclone config show
fi
elif [ "${LOCAL_ACTION}" = "delete" ] || [ "${LOCAL_ACTION}" = "4" ]; then
read_ftp_name "${4}"
docker exec -t "${CP_DOMAIN_}" rclone config delete "${FTP_NAME}"
elif [ "${LOCAL_ACTION}" = "upload" ] || [ "${LOCAL_ACTION}" = "uploads" ] || [ "${LOCAL_ACTION}" = "5" ]; then
if [ ! -d "/home/${CP_DOMAIN}/files/torrent/uploads" ]; then
exit 0
fi
if [ -d "/home/${CP_DOMAIN}/files/torrent/.process" ]; then
if [ -f "/home/${CP_DOMAIN}/files/torrent/.1hour" ]; then
if [ -f "/home/${CP_DOMAIN}/files/torrent/.2hours" ]; then
if [ -f "/home/${CP_DOMAIN}/files/torrent/.3hours" ]; then
if [ -f "/home/${CP_DOMAIN}/files/torrent/.4hours" ]; then
if [ -f "/home/${CP_DOMAIN}/files/torrent/.5hours" ]; then
/usr/bin/cinemapress kill_rclone "${CP_DOMAIN}"
rm -rf \
"/home/${CP_DOMAIN}/files/torrent/.1hour" \
"/home/${CP_DOMAIN}/files/torrent/.2hours" \
"/home/${CP_DOMAIN}/files/torrent/.3hours" \
"/home/${CP_DOMAIN}/files/torrent/.4hours" \
"/home/${CP_DOMAIN}/files/torrent/.5hours"
mkdir -p "/home/${CP_DOMAIN}/files/torrent/uploads"
cp -rf \
/home/"${CP_DOMAIN}"/files/torrent/.process/* \
/home/"${CP_DOMAIN}"/files/torrent/uploads/
rm -rf /home/"${CP_DOMAIN}"/files/torrent/.process
else
echo "$(date '+%Y/%m/%d %H:%M:%S') Uploading video files takes 5 hours."
touch "/home/${CP_DOMAIN}/files/torrent/.5hours"
exit 0
fi
else
echo "$(date '+%Y/%m/%d %H:%M:%S') Uploading video files takes 4 hours."
touch "/home/${CP_DOMAIN}/files/torrent/.4hours"
exit 0
fi
else
echo "$(date '+%Y/%m/%d %H:%M:%S') Uploading video files takes 3 hours."
touch "/home/${CP_DOMAIN}/files/torrent/.3hours"
exit 0
fi
else
echo "$(date '+%Y/%m/%d %H:%M:%S') Uploading video files takes 2 hours."
touch "/home/${CP_DOMAIN}/files/torrent/.2hours"
exit 0
fi
else
echo "$(date '+%Y/%m/%d %H:%M:%S') Uploading video files takes 1 hour."
touch "/home/${CP_DOMAIN}/files/torrent/.1hour"
exit 0
fi
fi
if [ -z "$(ls -A "/home/${CP_DOMAIN}/files/torrent/uploads")" ]; then
echo "$(date '+%Y/%m/%d %H:%M:%S') The folder /home/${CP_DOMAIN}/files/torrent/uploads is empty."
exit 0
fi
CINEMATORRENT_ARRAY=()
CINEMATORRENT_ACTIVE="false"
for N in {1..9}; do
CINEMATORRENT_NAME="CINEMATORRENT${N}"
if [ "${CP_OS}" = "alpine" ] || [ "${CP_OS}" = "\"alpine\"" ]; then
CINEMATORRENT=$(rclone config show 2>/dev/null | grep "${CINEMATORRENT_NAME}")
else
CINEMATORRENT=$(docker exec -t "${CP_DOMAIN_}" rclone config show 2>/dev/null | grep "${CINEMATORRENT_NAME}")
fi
if [ "${CINEMATORRENT}" = "" ]; then continue; fi
CINEMATORRENT_ACTIVE="true"
echo "$(date '+%Y/%m/%d %H:%M:%S')${CINEMATORRENT_NAME}"
CINEMATORRENT_ARRAY+=("${CINEMATORRENT_NAME}")
done
if [ "${CINEMATORRENT_ACTIVE}" = "false" ]; then
echo "$(date '+%Y/%m/%d %H:%M:%S') You don't have an FTP server configuration."
exit 0
fi
mv "/home/${CP_DOMAIN}/files/torrent/uploads" "/home/${CP_DOMAIN}/files/torrent/.process"
mkdir -p "/home/${CP_DOMAIN}/files/torrent/uploads"
for DIR in "/home/${CP_DOMAIN}/files/torrent/.process"/*; do
if [ ! -f "${DIR}" ]; then continue; fi
DIR_NAME="${DIR##*/}"
IFS='.' read -r -a FILE_ARR <<< "${DIR_NAME}"
if [ "${FILE_ARR[1]}" = "dir" ] || \
[ "${FILE_ARR[1]}" = "Dir" ] || \
[ "${FILE_ARR[1]}" = "DIR" ]; then
mkdir -p "/home/${CP_DOMAIN}/files/torrent/.process/${FILE_ARR[0]}"
mv "${DIR}" \
"/home/${CP_DOMAIN}/files/torrent/.process/${FILE_ARR[0]}/${DIR##*/${FILE_ARR[0]}.${FILE_ARR[1]}.}"
fi
done
for CINEMATORRENT_NAME in "${CINEMATORRENT_ARRAY[@]}"; do
CFOLDER="/home/${CP_DOMAIN}/files/torrent/.process/${CINEMATORRENT_NAME}"
if [ ! -d "${CFOLDER}" ]; then continue; fi
echo "$(date '+%Y/%m/%d %H:%M:%S') UPLOAD TO ${CINEMATORRENT_NAME}"
for DIR in "${CFOLDER}"/*; do
DIR_NAME="${DIR##*/}"
if [ -d "${DIR}" ]; then
echo "$(date '+%Y/%m/%d %H:%M:%S') CREATE DIR ${DIR_NAME}"
if [ "${CP_OS}" = "alpine" ] || [ "${CP_OS}" = "\"alpine\"" ]; then
rclone -vv --retries 2 --low-level-retries 2 mkdir "${CINEMATORRENT_NAME}":"${DIR_NAME}"
else
docker exec -t "${CP_DOMAIN_}" rclone -vv --retries 2 --low-level-retries 2 mkdir "${CINEMATORRENT_NAME}":"${DIR_NAME}"
fi
for FILE in "${CFOLDER}/${DIR_NAME}"/*; do
FILE_NAME="${FILE##*/}"
if [ -f "${FILE}" ]; then
echo "$(date '+%Y/%m/%d %H:%M:%S') UPLOAD FILE ${DIR_NAME}/${FILE_NAME}"
if [ "${CP_OS}" = "alpine" ] || [ "${CP_OS}" = "\"alpine\"" ]; then
{ rclone -vv --retries 2 --low-level-retries 2 --ignore-size copy \
"${CFOLDER}/${DIR_NAME}/${FILE_NAME}" "${CINEMATORRENT_NAME}:${DIR_NAME}/"; } && \
rm -rf "${FILE}"
else
{ docker exec -t "${CP_DOMAIN_}" rclone -vv --retries 2 --low-level-retries 2 --ignore-size copy \
"${CFOLDER}/${DIR_NAME}/${FILE_NAME}" "${CINEMATORRENT_NAME}:${DIR_NAME}/"; } && \
rm -rf "${FILE}"
fi
fi
done
elif [ -f "${DIR}" ]; then
FILE_NAME="${DIR##*/}"
echo "$(date '+%Y/%m/%d %H:%M:%S') UPLOAD FILE ${FILE_NAME}"
if [ "${CP_OS}" = "alpine" ] || [ "${CP_OS}" = "\"alpine\"" ]; then
{ rclone -vv --retries 2 --low-level-retries 2 --ignore-size copy \
"${CFOLDER}/${FILE_NAME}" "${CINEMATORRENT_NAME}:${DIR_NAME}/"; } && \
rm -rf "${DIR}"
else
{ docker exec -t "${CP_DOMAIN_}" rclone -vv --retries 2 --low-level-retries 2 --ignore-size copy \
"${CFOLDER}/${FILE_NAME}" "${CINEMATORRENT_NAME}:${DIR_NAME}/"; } && \
rm -rf "${DIR}"
fi
fi
done
rm -rf "${CFOLDER}"
done
PFOLDER="/home/${CP_DOMAIN}/files/torrent/.process"
for DIR in "${PFOLDER}"/*; do
DIR_NAME="${DIR##*/}"
if [ -d "${DIR}" ]; then
for CINEMATORRENT_NAME in "${CINEMATORRENT_ARRAY[@]}"; do
echo "$(date '+%Y/%m/%d %H:%M:%S') CREATE DIR ${CINEMATORRENT_NAME}:${DIR_NAME}"
if [ "${CP_OS}" = "alpine" ] || [ "${CP_OS}" = "\"alpine\"" ]; then
rclone -vv --retries 2 --low-level-retries 2 mkdir "${CINEMATORRENT_NAME}":"${DIR_NAME}"
else
docker exec -t "${CP_DOMAIN_}" rclone -vv --retries 2 --low-level-retries 2 mkdir "${CINEMATORRENT_NAME}":"${DIR_NAME}"
fi
done
for FILE in "${PFOLDER}/${DIR_NAME}"/*; do
FILE_NAME="${FILE##*/}"
if [ -f "${FILE}" ]; then
echo "$(date '+%Y/%m/%d %H:%M:%S') UPLOAD FILE ${DIR_NAME}/${FILE_NAME}"
FILE_UPLOADED="false"
for CINEMATORRENT_NAME in "${CINEMATORRENT_ARRAY[@]}"; do
echo "$(date '+%Y/%m/%d %H:%M:%S') UPLOAD TO ${CINEMATORRENT_NAME}"
if [ "${CP_OS}" = "alpine" ] || [ "${CP_OS}" = "\"alpine\"" ]; then
{ rclone -vv --retries 2 --low-level-retries 2 --ignore-size copy \
"${PFOLDER}/${DIR_NAME}/${FILE_NAME}" "${CINEMATORRENT_NAME}:${DIR_NAME}/"; } && \
FILE_UPLOADED="true"
else
{ docker exec -t "${CP_DOMAIN_}" rclone -vv --retries 2 --low-level-retries 2 --ignore-size copy \
"${PFOLDER}/${DIR_NAME}/${FILE_NAME}" "${CINEMATORRENT_NAME}:${DIR_NAME}/"; } && \
FILE_UPLOADED="true"
fi
done
if [ "${FILE_UPLOADED}" = "true" ]; then
echo "$(date '+%Y/%m/%d %H:%M:%S') DELETE FILE ${FILE}"
rm -rf "${FILE}"
fi
fi
done
elif [ -f "${DIR}" ]; then
FILE_UPLOADED="false"
for CINEMATORRENT_NAME in "${CINEMATORRENT_ARRAY[@]}"; do
FILE_NAME="${DIR##*/}"
echo "$(date '+%Y/%m/%d %H:%M:%S') UPLOAD FILE ${FILE_NAME}"
if [ "${CP_OS}" = "alpine" ] || [ "${CP_OS}" = "\"alpine\"" ]; then
{ rclone -vv --retries 2 --low-level-retries 2 --ignore-size copy \
"${PFOLDER}/${FILE_NAME}" "${CINEMATORRENT_NAME}:${DIR_NAME}/"; } && \
FILE_UPLOADED="true"
else
{ docker exec -t "${CP_DOMAIN_}" rclone -vv --retries 2 --low-level-retries 2 --ignore-size copy \
"${PFOLDER}/${FILE_NAME}" "${CINEMATORRENT_NAME}:${DIR_NAME}/"; } && \
FILE_UPLOADED="true"
fi
done
if [ "${FILE_UPLOADED}" = "true" ]; then
echo "$(date '+%Y/%m/%d %H:%M:%S') DELETE FILE ${DIR}"
rm -rf "${DIR}"
fi
fi
done
rm -rf "/home/${CP_DOMAIN}/files/torrent/.process"
rm -rf \
"/home/${CP_DOMAIN}/files/torrent/.1hour" \
"/home/${CP_DOMAIN}/files/torrent/.2hours" \
"/home/${CP_DOMAIN}/files/torrent/.3hours" \
"/home/${CP_DOMAIN}/files/torrent/.4hours" \
"/home/${CP_DOMAIN}/files/torrent/.5hours"
fi
exit 0
;;
"kill_rclone" )
_br "${2}"
read_domain "${2}"
sh_not
_s "${2}"
if [ "${CP_OS}" = "alpine" ] || [ "${CP_OS}" = "\"alpine\"" ]; then
ps -ef | grep "rclone" | grep -v 'grep' | awk '{ print $1 }' | xargs kill
else
docker exec -t "${CP_DOMAIN_}" /usr/bin/cinemapress kill_rclone "${CP_DOMAIN}"
fi
exit 0
;;
"local" )
echo ""; echo -n "☐ Change to a local build cinemapress.sh ...";
sed -Ei "s/# docker build/docker build/g" /usr/bin/cinemapress >/dev/null
sed -Ei "s/docker pull/# docker pull/g" /usr/bin/cinemapress >/dev/null
sleep 1
echo -e "\\r${G}✓ Change to a local build cinemapress.sh ...${NC}"
echo ""
exit 0
;;
"rclone_obscure" )
echo "$(echo "${2}" | rclone obscure -)"
exit 0
;;
"help"|"H"|"--help"|"-h"|"-H" )
clear
_line
_logo
_header "HELP"
_br
printf " ~# cinemapress [OPTION]"; _br; _br;
printf " OPTIONS:"; _br; _br;
printf " en - Fast install EN website"; _br;
printf " ru - Fast install RU website"; _br;
printf " passwd - Change the password for access to the admin panel"; _br;
printf " stop - Stop website (docker container)"; _br;
printf " start - Start website (docker container)"; _br;
printf " restart - Restart website (docker container)"; _br;
printf " reload - Reload website (PM2)"; _br;
printf " zero - Delete all data from the automatic database"; _br;
printf " zero_rt - Delete all data from the realtime database"; _br;
printf " logs - Show all logs"; _br;
printf " logs live - Show all logs realtime"; _br;
printf " logs bot - Show logs for fake and true bots"; _br;
printf " live bot - Show realtime logs for fake and true bots"; _br;
printf " lbf - Show logs for fake bots"; _br;
printf " lbt - Show logs for true bots"; _br;
printf " lbb - Show logs for bad bots"; _br;
printf " crash - Getting debug information after a site crash"; _br;
printf " bench - System info, I/O test and speedtest"; _br;
printf " actual - Updating data from an automatic database"; _br;
printf " to a manual database (year, list of actors, list"; _br;
printf " of genres, list of countries, list of directors,"; _br;
printf " premiere date, rating and number of votes)"; _br;
printf " clear_vps - Complete deletion of all data on the VPS"; _br;
printf " app - Create movie application"; _br;
printf " cms - Install other CMS (php-mysql,wordpress,drupal,joomla,dle)"; _br;
printf " cms example.com backup [create,restore]"; _br;
printf " bot - Install website for bots"; _br;
printf " bot_https - Install website for bots and generate SSL"; _br;
printf " ds - The domain that is the main on the server and accepts all requests"; _br;
printf " ds none - Deny access to the site by IP address"; _br;
printf " cf - Adding all subdomains to CloudFlare"; _br;
printf " mode - debug: more information about the speed and memory of each request"; _br;
printf " uptimerobot - Ping check for container and website every 2 minutes, if the website"; _br;
printf " is offline, the server will be rebooted"; _br;
printf " redirect movie.co hd.movie.com - Redirect from movie.co to hd.movie.com"; _br;
printf " redirect movie.co hd.movie.com bot - Redirect only for bots (Googlebot, etc.)"; _br;
printf " splash example.com git_login git_token [github,gitlab] [http://app-movies.com]"; _br;
printf " static example.com mega_login mega_pass [create,restore]"; _br; _br;
printf " combine install_https_restore_mirror"; _br;
printf " combine install_restore_mirror"; _br;
printf " combine install_https_mirror"; _br;
printf " combine install_https_backup"; _br;
printf " combine install_https_restore"; _br;
printf " combine install_https"; _br;
printf " combine install_backup"; _br;
printf " combine install_restore"; _br; _br;
printf " nohup cinemapress [FULL COMMAND] > log 2>&1; tail -f log"; _br; _br;
exit 0
;;
"version"|"ver"|"v"|"V"|"--version"|"--ver"|"-v"|"-V" )
echo "CinemaPress ${CP_VER}"
_br
echo "Copyright (c) 2014 - ... CinemaPress"
_br
exit 0
;;
* )
option ${1}
;;
esac
done