New age
This commit is contained in:
parent
89061fcf23
commit
0551bbff2c
14
Dockerfile
14
Dockerfile
|
@ -11,12 +11,7 @@ ARG CP_THEME=""
|
|||
ENV CP_THEME=${CP_THEME}
|
||||
ARG CP_PASSWD=""
|
||||
ENV CP_PASSWD=${CP_PASSWD}
|
||||
ARG CP_MIRROR=""
|
||||
ENV CP_MIRROR=${CP_MIRROR}
|
||||
ARG CP_MIRROR_=""
|
||||
ENV CP_MIRROR_=${CP_MIRROR_}
|
||||
ARG CP_KEY=""
|
||||
ENV CP_KEY=${CP_KEY}
|
||||
ENV CP_SPB="_${CP_DOMAIN_}_"
|
||||
ARG RCLONE_CONFIG=""
|
||||
ENV RCLONE_CONFIG=${RCLONE_CONFIG}
|
||||
ENV TZ=Europe/Moscow
|
||||
|
@ -39,9 +34,7 @@ RUN set -o pipefail \
|
|||
&& npm i \
|
||||
&& mkdir -p \
|
||||
/var/ngx_pagespeed_cache \
|
||||
/etc/sphinx \
|
||||
/var/lib/sphinx/data \
|
||||
/var/local/images \
|
||||
/var/local/balancer \
|
||||
&& npm cache clean --force \
|
||||
&& apk del .build-dependencies \
|
||||
|
@ -51,6 +44,8 @@ RUN set -o pipefail \
|
|||
&& rm -rf package-lock.json doc .dockerignore .gitignore .prettierignore .prettierrc Dockerfile LICENSE.txt README.md \
|
||||
&& dos2unix cinemapress.sh \
|
||||
&& cp cinemapress.sh /usr/bin/cinemapress && chmod +x /usr/bin/cinemapress \
|
||||
&& mv config/default/sphinx /etc/sphinx \
|
||||
&& mv node_modules/mysql node_modules/sphinx \
|
||||
&& rm -rf cinemapress.sh \
|
||||
&& cp -rf themes/default/public/admin/favicon.ico favicon.ico \
|
||||
&& cp -rf themes/default/public/desktop/img/player$(( ( RANDOM % 7 ) + 1 )).png \
|
||||
|
@ -62,4 +57,5 @@ RUN set -o pipefail \
|
|||
> /etc/periodic/hourly/cron \
|
||||
&& chmod a+x /etc/periodic/hourly/cron
|
||||
EXPOSE 3000
|
||||
CMD ["/usr/bin/cinemapress", "container", "run"]
|
||||
CMD ["/usr/bin/cinemapress", "container", "run"]
|
||||
HEALTHCHECK --interval=300s --timeout=5s CMD curl -fso /dev/null http://localhost/ || exit 1
|
407
cinemapress.sh
407
cinemapress.sh
|
@ -11,7 +11,6 @@ NC='\033[0m'
|
|||
OPTION=${1:-}
|
||||
GIT_SERVER="github.com"
|
||||
CP_VER="4.0.0"
|
||||
CP_ALL=""
|
||||
PRC_=0
|
||||
|
||||
CP_DOMAIN=${CP_DOMAIN:-}
|
||||
|
@ -54,7 +53,7 @@ fi
|
|||
|
||||
post_commands() {
|
||||
LOCAL_DOMAIN=${1:-${CP_DOMAIN}}
|
||||
LOCAL_DOMAIN_=`echo ${LOCAL_DOMAIN} | sed -r "s/[^A-Za-z0-9]/_/g"`
|
||||
LOCAL_DOMAIN_=$(echo "${LOCAL_DOMAIN}" | sed -r "s/[^A-Za-z0-9]/_/g")
|
||||
|
||||
if [ "`grep \"${LOCAL_DOMAIN}_autostart\" /etc/crontab`" = "" ] \
|
||||
&& [ -f "/home/${LOCAL_DOMAIN}/process.json" ]; then
|
||||
|
@ -222,6 +221,32 @@ docker_install() {
|
|||
exit 0
|
||||
fi
|
||||
fi
|
||||
for DOMAIN_PATH in /home/*; do
|
||||
DOMAIN_PROCESS="${DOMAIN_PATH}/process.json"
|
||||
DOMAIN_CONFIG="${DOMAIN_PATH}/config/production/config.js"
|
||||
if [ -f "${DOMAIN_PROCESS}" ] && [ -f "${DOMAIN_CONFIG}" ]; then
|
||||
DDD=$(find "${DOMAIN_PATH}" -maxdepth 0 -printf "%f")
|
||||
DDD_=$(echo "${DDD}" | sed -r "s/[^A-Za-z0-9]/_/g")
|
||||
SPS="/var/lib/sphinx/data/movies_${DDD_}.sps"
|
||||
SPB="/var/lib/sphinx/data/movies_${DDD_}.spb"
|
||||
if [ -f "${SPS}" ] && [ ! -f "${SPB}" ]; then
|
||||
AA=$(grep "\"CP_ALL\"" "${DOMAIN_PROCESS}")
|
||||
KK=$(grep "\"key\"" "${DOMAIN_CONFIG}")
|
||||
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 "${DDD}/${KKK}" \
|
||||
-salt 2>/dev/null
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
done
|
||||
fi
|
||||
}
|
||||
ip_install() {
|
||||
|
@ -248,7 +273,7 @@ ip_install() {
|
|||
|
||||
1_install() {
|
||||
LOCAL_DOMAIN=${1:-${CP_DOMAIN}}
|
||||
LOCAL_DOMAIN_=`echo ${LOCAL_DOMAIN} | sed -r "s/[^A-Za-z0-9]/_/g"`
|
||||
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}}
|
||||
|
@ -276,20 +301,20 @@ ip_install() {
|
|||
|
||||
docker run \
|
||||
-d \
|
||||
--name ${LOCAL_DOMAIN_} \
|
||||
--name "${LOCAL_DOMAIN_}" \
|
||||
-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} \
|
||||
-w /home/"${LOCAL_DOMAIN}" \
|
||||
--restart always \
|
||||
--network cinemapress \
|
||||
-v /var/ngx_pagespeed_cache:/var/ngx_pagespeed_cache \
|
||||
-v /var/lib/sphinx/data:/var/lib/sphinx/data \
|
||||
-v /var/local/balancer:/var/local/balancer \
|
||||
-v /home/${LOCAL_DOMAIN}:/home/${LOCAL_DOMAIN} \
|
||||
-v /home/"${LOCAL_DOMAIN}":/home/"${LOCAL_DOMAIN}" \
|
||||
${EXTERNAL_DOCKER} \
|
||||
cinemapress/docker:latest >>/var/log/docker_install_"$(date '+%d_%m_%Y')".log 2>&1
|
||||
|
||||
|
@ -410,11 +435,18 @@ ip_install() {
|
|||
}
|
||||
2_update() {
|
||||
LOCAL_DOMAIN=${1:-${CP_DOMAIN}}
|
||||
LOCAL_DOMAIN_=`echo ${LOCAL_DOMAIN} | sed -r "s/[^A-Za-z0-9]/_/g"`
|
||||
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}}
|
||||
|
||||
if [ "${LOCAL_MEGA_EMAIL}" != "" ] && [ "${LOCAL_MEGA_PASSWORD}" != "" ]; then
|
||||
docker exec "${LOCAL_DOMAIN_}" rclone config create CINEMAPRESS mega user "${LOCAL_MEGA_EMAIL}" pass "${LOCAL_MEGA_PASSWORD}" \
|
||||
>>/var/log/docker_backup_"$(date '+%d_%m_%Y')".log 2>&1
|
||||
fi
|
||||
|
||||
echo "${PRC_}% update" >>/var/log/docker_log_"$(date '+%d_%m_%Y')".log
|
||||
|
||||
CHECK_MEGA=$(docker exec "${LOCAL_DOMAIN_}" /usr/bin/cinemapress container rclone config show 2>/dev/null | grep "CINEMAPRESS")
|
||||
CHECK_MEGA=$(docker exec "${LOCAL_DOMAIN_}" rclone config show 2>/dev/null | grep "CINEMAPRESS")
|
||||
|
||||
if [ "${CHECK_MEGA}" = "" ]; then
|
||||
_header "WARNING"
|
||||
|
@ -454,15 +486,12 @@ ip_install() {
|
|||
exit 0
|
||||
fi
|
||||
|
||||
AA=`grep "\"CP_ALL\"" /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`
|
||||
PP=`grep "\"pagespeed\"" /home/${LOCAL_DOMAIN}/config/production/config.js`
|
||||
CP_ALL=`echo "${AA}" | sed 's/.*"CP_ALL":\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_SPEED=`echo ${PP} | sed 's/.*"pagespeed":\s*\([0-9]\{1\}\).*/\1/'`
|
||||
if [ "${CP_ALL}" = "" ] || [ "${CP_ALL}" = "${AA}" ]; then CP_ALL=""; fi
|
||||
KK=$(grep "\"key\"" /home/"${LOCAL_DOMAIN}"/config/default/config.js)
|
||||
DD=$(grep "\"date\"" /home/"${LOCAL_DOMAIN}"/config/default/config.js)
|
||||
PP=$(grep "\"pagespeed\"" /home/"${LOCAL_DOMAIN}"/config/production/config.js)
|
||||
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_SPEED=$(echo ${PP} | sed 's/.*"pagespeed":\s*\([0-9]\{1\}\).*/\1/')
|
||||
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
|
||||
|
@ -519,36 +548,32 @@ ip_install() {
|
|||
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}" != "" ]; then
|
||||
sed -E -i "s/\"CP_ALL\":\s*\"[a-zA-Z0-9_| -]*\"/\"CP_ALL\":\"${CP_ALL}\"/" \
|
||||
/home/${LOCAL_DOMAIN}/process.json
|
||||
fi
|
||||
if [ "${CP_KEY}" != "" ]; then
|
||||
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
|
||||
/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
|
||||
/home/"${LOCAL_DOMAIN}"/config/default/config.js
|
||||
fi
|
||||
if [ "${CP_DATE}" != "" ]; then
|
||||
if [ "${#CP_DATE}" -eq "10" ]; then
|
||||
sed -E -i "s/\"date\":\s*\"[0-9-]*\"/\"date\":\"${CP_DATE}\"/" \
|
||||
/home/${LOCAL_DOMAIN}/config/production/config.js
|
||||
/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
|
||||
/home/"${LOCAL_DOMAIN}"/config/default/config.js
|
||||
fi
|
||||
if [ "${CP_SPEED}" != "" ]; then
|
||||
if [ "${#CP_SPEED}" -eq "1" ]; then
|
||||
sed -E -i "s/\"pagespeed\":\s*[0-9]*/\"pagespeed\":${CP_SPEED}/" \
|
||||
/home/${LOCAL_DOMAIN}/config/production/config.js
|
||||
docker exec ${LOCAL_DOMAIN_} /usr/bin/cinemapress container speed "${CP_SPEED}"
|
||||
/home/"${LOCAL_DOMAIN}"/config/production/config.js
|
||||
docker exec "${LOCAL_DOMAIN_}" /usr/bin/cinemapress container speed "${CP_SPEED}"
|
||||
fi
|
||||
if [ "${DISABLE_SSL}" = "" ]; then
|
||||
docker exec ${LOCAL_DOMAIN_} /usr/bin/cinemapress container protocol "https://"
|
||||
docker exec "${LOCAL_DOMAIN_}" /usr/bin/cinemapress container protocol "https://"
|
||||
fi
|
||||
docker restart ${LOCAL_DOMAIN_} >>/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_DOMAIN_=$(echo "${LOCAL_DOMAIN}" | sed -r "s/[^A-Za-z0-9]/_/g")
|
||||
LOCAL_ACTION=${2} # 1 | 2 | 3 | create | restore | config
|
||||
LOCAL_MEGA_EMAIL=${3:-${MEGA_EMAIL}}
|
||||
LOCAL_MEGA_PASSWORD=${4:-${MEGA_PASSWORD}}
|
||||
|
@ -565,7 +590,7 @@ ip_install() {
|
|||
|
||||
sleep 5
|
||||
|
||||
RCS=$(docker exec "${LOCAL_DOMAIN_}" /usr/bin/cinemapress container rclone config show 2>/dev/null | grep "CINEMAPRESS")
|
||||
RCS=$(docker exec "${LOCAL_DOMAIN_}" rclone config show 2>/dev/null | grep "CINEMAPRESS")
|
||||
|
||||
if [ "${LOCAL_ACTION}" = "config" ] || [ "${LOCAL_ACTION}" = "3" ] || [ "${RCS}" = "" ]; then
|
||||
if [ "${LOCAL_MEGA_EMAIL}" != "" ] && [ "${LOCAL_MEGA_PASSWORD}" != "" ]; then
|
||||
|
@ -574,10 +599,9 @@ ip_install() {
|
|||
|
||||
echo "${PRC_}% config check-connection" >>/var/log/docker_log_"$(date '+%d_%m_%Y')".log
|
||||
|
||||
docker exec ${LOCAL_DOMAIN_} rclone config delete CINEMAPRESS \
|
||||
>>/var/log/docker_backup_"$(date '+%d_%m_%Y')".log 2>&1
|
||||
docker exec ${LOCAL_DOMAIN_} rclone config create CINEMAPRESS mega user "${LOCAL_MEGA_EMAIL}" pass "${LOCAL_MEGA_PASSWORD}" \
|
||||
>>/var/log/docker_backup_"$(date '+%d_%m_%Y')".log 2>&1
|
||||
sleep 3
|
||||
CHECK_MKDIR=`docker exec ${LOCAL_DOMAIN_} rclone mkdir CINEMAPRESS:/check-connection 2>/dev/null`
|
||||
sleep 3
|
||||
CHECK_PURGE=`docker exec ${LOCAL_DOMAIN_} rclone purge CINEMAPRESS:/check-connection 2>/dev/null`
|
||||
|
@ -660,7 +684,7 @@ ip_install() {
|
|||
}
|
||||
4_theme() {
|
||||
LOCAL_DOMAIN=${1:-${CP_DOMAIN}}
|
||||
LOCAL_DOMAIN_=`echo ${LOCAL_DOMAIN} | sed -r "s/[^A-Za-z0-9]/_/g"`
|
||||
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
|
||||
|
@ -780,11 +804,14 @@ ip_install() {
|
|||
/home/"${LOCAL_DOMAIN}"/config/default/config.js
|
||||
sed -E -i "s/\"date\":\s*\"[0-9-]*\"/\"date\":\"${NOW}\"/" \
|
||||
/home/"${LOCAL_DOMAIN}"/config/default/config.js
|
||||
if [ "$(grep \"_"${CHECK}"_\" /home/"${LOCAL_DOMAIN}"/process.json)" = "" ]; then
|
||||
CURRENT=$(grep "CP_ALL" /home/"${LOCAL_DOMAIN}"/process.json | sed 's/.*"CP_ALL":\s*"\([a-zA-Z0-9_| -]*\)".*/\1/')
|
||||
sed -E -i "s/\"CP_ALL\":\s*\"[a-zA-Z0-9_| -]*\"/\"CP_ALL\":\"${CURRENT} | _${CHECK}_\"/" \
|
||||
/home/"${LOCAL_DOMAIN}"/process.json
|
||||
fi
|
||||
openssl enc \
|
||||
-aes-256-cbc \
|
||||
-pbkdf2 \
|
||||
-iter 100000 \
|
||||
-in <(echo "${CHECK}") \
|
||||
-out "/var/lib/sphinx/data/movies_${LOCAL_DOMAIN_}.spb" \
|
||||
-k "${LOCAL_DOMAIN}/${LOCAL_KEY}" \
|
||||
-salt 2>/dev/null
|
||||
_content "Starting ..."
|
||||
if [ "$(docker -v 2>/dev/null | grep "version")" = "" ]; then
|
||||
docker_start >>/var/lib/sphinx/data/"${NOW}".log 2>&1
|
||||
|
@ -819,10 +846,10 @@ ip_install() {
|
|||
}
|
||||
6_https() {
|
||||
LOCAL_DOMAIN=${1:-${CP_DOMAIN}}
|
||||
LOCAL_DOMAIN_=`echo ${LOCAL_DOMAIN} | sed -r "s/[^A-Za-z0-9]/_/g"`
|
||||
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:-hd}
|
||||
LOCAL_SUBDOMAIN=${4:-}
|
||||
|
||||
echo "${PRC_}% https" >>/var/log/docker_log_"$(date '+%d_%m_%Y')".log
|
||||
|
||||
|
@ -840,7 +867,9 @@ ip_install() {
|
|||
sleep 5
|
||||
|
||||
DOMAINS="-d ${LOCAL_DOMAIN} -d *.${LOCAL_DOMAIN}"
|
||||
for SUBDOMAIN in $LOCAL_SUBDOMAIN; do DOMAINS="${DOMAINS} -d *.${SUBDOMAIN}.${LOCAL_DOMAIN}"; done
|
||||
if [ "${LOCAL_SUBDOMAIN}" != "" ]; then
|
||||
for SUBDOMAIN in $LOCAL_SUBDOMAIN; do DOMAINS="${DOMAINS} -d *.${SUBDOMAIN}.${LOCAL_DOMAIN}"; done
|
||||
fi
|
||||
|
||||
docker run \
|
||||
--rm \
|
||||
|
@ -906,10 +935,10 @@ ip_install() {
|
|||
}
|
||||
7_mirror() {
|
||||
LOCAL_DOMAIN=${1:-${CP_DOMAIN}}
|
||||
LOCAL_DOMAIN_=`echo ${LOCAL_DOMAIN} | sed -r "s/[^A-Za-z0-9]/_/g"`
|
||||
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"`
|
||||
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
|
||||
|
@ -934,91 +963,82 @@ ip_install() {
|
|||
|
||||
echo "${PRC_}% mirror" >>/var/log/docker_log_"$(date '+%d_%m_%Y')".log
|
||||
|
||||
docker stop ${LOCAL_MIRROR_} >>/var/log/docker_mirror_"$(date '+%d_%m_%Y')".log 2>&1
|
||||
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_} \
|
||||
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
|
||||
/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
|
||||
/home/"${LOCAL_MIRROR}"/config/comment
|
||||
cp -r \
|
||||
/home/${LOCAL_DOMAIN}/config/content \
|
||||
/home/${LOCAL_MIRROR}/config/content
|
||||
/home/"${LOCAL_MIRROR}"/config/content
|
||||
cp -r \
|
||||
/home/${LOCAL_DOMAIN}/config/rt \
|
||||
/home/${LOCAL_MIRROR}/config/rt
|
||||
/home/"${LOCAL_MIRROR}"/config/rt
|
||||
cp -r \
|
||||
/home/${LOCAL_DOMAIN}/config/user \
|
||||
/home/${LOCAL_MIRROR}/config/user
|
||||
/home/"${LOCAL_MIRROR}"/config/user
|
||||
cp -r \
|
||||
/home/${LOCAL_DOMAIN}/config/production/config.js \
|
||||
/home/${LOCAL_MIRROR}/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
|
||||
/home/"${LOCAL_MIRROR}"/config/production/modules.js
|
||||
cp -r \
|
||||
/home/${LOCAL_DOMAIN}/themes/default/public/desktop/* \
|
||||
/home/${LOCAL_MIRROR}/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/
|
||||
/home/"${LOCAL_MIRROR}"/themes/default/public/mobile/
|
||||
cp -r \
|
||||
/home/${LOCAL_DOMAIN}/themes/default/views/mobile/* \
|
||||
/home/${LOCAL_MIRROR}/themes/default/views/mobile/
|
||||
/home/"${LOCAL_MIRROR}"/themes/default/views/mobile/
|
||||
cp -r \
|
||||
/home/${LOCAL_DOMAIN}/files/* \
|
||||
/home/${LOCAL_MIRROR}/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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
CURRENT=`grep "CP_ALL" /home/${LOCAL_MIRROR}/process.json | sed 's/.*"CP_ALL":\s*"\([a-zA-Z0-9_| -]*\)".*/\1/'`
|
||||
CURRENT=`echo "${CURRENT}" | sed "s/_${LOCAL_MIRROR_}_ | //"`
|
||||
CURRENT=`echo "${CURRENT}" | sed "s/_${LOCAL_DOMAIN_}_ | //"`
|
||||
CURRENT=`echo "${CURRENT}" | sed "s/ | _${LOCAL_MIRROR_}_//"`
|
||||
CURRENT=`echo "${CURRENT}" | sed "s/ | _${LOCAL_DOMAIN_}_//"`
|
||||
CURRENT=`echo "${CURRENT}" | sed "s/_${LOCAL_MIRROR_}_//"`
|
||||
CURRENT=`echo "${CURRENT}" | sed "s/_${LOCAL_DOMAIN_}_//"`
|
||||
if [ "${CURRENT}" != "" ]; then CURRENT=" | ${CURRENT}"; fi
|
||||
if [ -f "/home/${LOCAL_DOMAIN}/process.json" ] && [ ! -f "/home/${LOCAL_MIRROR}/process.json" ]; then
|
||||
sed -E -i "s/\"CP_ALL\":\s*\"[a-zA-Z0-9_| -]*\"/\"CP_ALL\":\"_${LOCAL_DOMAIN_}_ | _${LOCAL_MIRROR_}_${CURRENT}\"/" /home/${LOCAL_MIRROR}/process.json
|
||||
else
|
||||
sed -E -i "s/\"CP_ALL\":\s*\"[a-zA-Z0-9_| -]*\"/\"CP_ALL\":\"_${LOCAL_MIRROR_}_ | _${LOCAL_DOMAIN_}_${CURRENT}\"/" /home/${LOCAL_MIRROR}/process.json
|
||||
fi
|
||||
|
||||
sh_progress
|
||||
|
||||
echo "${PRC_}% mirror2" >>/var/log/docker_log_"$(date '+%d_%m_%Y')".log
|
||||
|
||||
docker start ${LOCAL_MIRROR_} \
|
||||
docker start "${LOCAL_MIRROR_}" \
|
||||
>>/var/log/docker_mirror_"$(date '+%d_%m_%Y')".log 2>&1
|
||||
sleep 10
|
||||
docker exec "${LOCAL_MIRROR_}" node config/update/mirror.js \
|
||||
>>/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_DOMAIN_=$(echo "${LOCAL_DOMAIN}" | sed -r "s/[^A-Za-z0-9]/_/g")
|
||||
LOCAL_FULL=${2}
|
||||
LOCAL_SAFE=${3}
|
||||
|
||||
|
@ -1100,7 +1120,7 @@ option() {
|
|||
fi
|
||||
if [ "${OPTION}" != "" ]
|
||||
then
|
||||
if echo "${OPTION}" | grep -qE ^\-?[0-9a-z]+$
|
||||
if echo "${OPTION}" | grep -qE ^[0-9a-z]+$
|
||||
then
|
||||
AGAIN=10
|
||||
else
|
||||
|
@ -1143,7 +1163,7 @@ read_domain() {
|
|||
fi
|
||||
if [ "${CP_DOMAIN}" != "" ]
|
||||
then
|
||||
if echo "${CP_DOMAIN}" | grep -qE ^\-?[.a-z0-9-]+$
|
||||
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
|
||||
|
@ -1195,7 +1215,7 @@ read_mirror() {
|
|||
fi
|
||||
if [ "${CP_MIRROR}" != "" ]
|
||||
then
|
||||
if echo "${CP_MIRROR}" | grep -qE ^\-?[.a-z0-9-]+$
|
||||
if echo "${CP_MIRROR}" | grep -qE ^[.a-z0-9-]+$
|
||||
then
|
||||
if [ "${CP_DOMAIN}" = "${CP_MIRROR}" ]
|
||||
then
|
||||
|
@ -1275,7 +1295,14 @@ read_password() {
|
|||
fi
|
||||
if [ "${CP_PASSWD}" != "" ]
|
||||
then
|
||||
AGAIN=10
|
||||
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))
|
||||
|
@ -1301,13 +1328,13 @@ read_key() {
|
|||
fi
|
||||
if [ "${CP_KEY}" != "" ]
|
||||
then
|
||||
if echo "${CP_KEY}" | grep -qE ^\-?[A-Za-z0-9]+$
|
||||
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! \n "
|
||||
printf "${R}WARNING:${NC} Only latin characters \n"
|
||||
printf "${NC} and numbers are allowed! \n"
|
||||
AGAIN=$((${AGAIN}+1))
|
||||
fi
|
||||
else
|
||||
|
@ -1393,7 +1420,7 @@ read_cloudflare_email() {
|
|||
fi
|
||||
if [ "${CLOUDFLARE_EMAIL}" != "" ]
|
||||
then
|
||||
if echo "${CLOUDFLARE_EMAIL}" | grep -qE ^\-?[.a-zA-Z0-9@_-]+$
|
||||
if echo "${CLOUDFLARE_EMAIL}" | grep -qE ^[.a-zA-Z0-9@_-]+$
|
||||
then
|
||||
AGAIN=10
|
||||
else
|
||||
|
@ -1425,7 +1452,7 @@ read_cloudflare_api_key() {
|
|||
fi
|
||||
if [ "${CLOUDFLARE_API_KEY}" != "" ]
|
||||
then
|
||||
if echo "${CLOUDFLARE_API_KEY}" | grep -qE ^\-?[.a-zA-Z0-9-]+$
|
||||
if echo "${CLOUDFLARE_API_KEY}" | grep -qE ^[.a-zA-Z0-9-]+$
|
||||
then
|
||||
AGAIN=10
|
||||
else
|
||||
|
@ -1457,7 +1484,7 @@ read_mega_email() {
|
|||
fi
|
||||
if [ "${MEGA_EMAIL}" != "" ]
|
||||
then
|
||||
if echo "${MEGA_EMAIL}" | grep -qE ^\-?[.a-zA-Z0-9@_-]+$
|
||||
if echo "${MEGA_EMAIL}" | grep -qE ^[.a-zA-Z0-9@_-]+$
|
||||
then
|
||||
AGAIN=10
|
||||
else
|
||||
|
@ -1489,7 +1516,15 @@ read_mega_password() {
|
|||
fi
|
||||
if [ "${MEGA_PASSWORD}" != "" ]
|
||||
then
|
||||
AGAIN=10
|
||||
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
|
||||
|
@ -1589,7 +1624,7 @@ read_app() {
|
|||
fi
|
||||
if [ "${APP_DOMAIN}" != "" ]
|
||||
then
|
||||
if echo "${APP_DOMAIN}" | grep -qE ^\-?[.a-z0-9-]+$
|
||||
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
|
||||
|
@ -1626,7 +1661,7 @@ read_import() {
|
|||
fi
|
||||
if [ "${IMPORT_DOMAIN}" != "" ]
|
||||
then
|
||||
if echo "${IMPORT_DOMAIN}" | grep -qE ^\-?[.a-z0-9-]+$
|
||||
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
|
||||
|
@ -1808,54 +1843,67 @@ _s() {
|
|||
}
|
||||
|
||||
docker_run() {
|
||||
sed -Ei "s/options.host/0/" /home/"${CP_DOMAIN}"/node_modules/sphinx/lib/ConnectionConfig.js
|
||||
sed -Ei "s/options.port/0/" /home/"${CP_DOMAIN}"/node_modules/sphinx/lib/ConnectionConfig.js
|
||||
SPB="/var/lib/sphinx/data/movies_${CP_DOMAIN_}.spb"
|
||||
CNF="/home/${CP_DOMAIN}/config/production/config.js"
|
||||
CP_SPB="_${CP_DOMAIN_}_"
|
||||
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_SPB} | _${AAA}_"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
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}
|
||||
cp -rf /var/cinemapress/* /home/"${CP_DOMAIN}"
|
||||
rm -rf /var/cinemapress/* /var/${CP_THEME:?}
|
||||
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/pagespeed.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/sphinx/sphinx.conf
|
||||
sed -Ei "s/example_com/${CP_DOMAIN_}/g" /home/${CP_DOMAIN}/config/production/sphinx/source.xml
|
||||
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" /home/${CP_DOMAIN}/config/production/nginx/pagespeed.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/sphinx/sphinx.conf
|
||||
sed -Ei "s/example\.com/${CP_DOMAIN}/g" /home/${CP_DOMAIN}/config/production/sphinx/source.xml
|
||||
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/\"theme\":\s*\"[a-zA-Z0-9-]*\"/\"theme\":\"${CP_THEME}\"/" /home/${CP_DOMAIN}/config/production/config.js
|
||||
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/pagespeed.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/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/pagespeed.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/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
|
||||
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
|
||||
ln -s /home/${CP_DOMAIN}/config/production/sphinx/sphinx.conf /etc/sphinx/sphinx.conf
|
||||
ln -s /home/${CP_DOMAIN}/config/production/sphinx/source.xml /etc/sphinx/source.xml
|
||||
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
|
||||
searchd
|
||||
memcached -u root -d
|
||||
node /home/${CP_DOMAIN}/config/update/default.js
|
||||
node /home/"${CP_DOMAIN}"/config/update/default.js
|
||||
else
|
||||
searchd
|
||||
memcached -u root -d
|
||||
node /home/${CP_DOMAIN}/config/update/config.js
|
||||
node /home/"${CP_DOMAIN}"/config/update/config.js
|
||||
fi
|
||||
crond -L /var/log/cron.log
|
||||
cd /home/${CP_DOMAIN} && pm2-runtime start process.json
|
||||
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"
|
||||
|
@ -1866,19 +1914,32 @@ docker_stop() {
|
|||
sleep 5
|
||||
}
|
||||
docker_start() {
|
||||
SPB="/var/lib/sphinx/data/movies_${CP_DOMAIN_}.spb"
|
||||
CNF="/home/${CP_DOMAIN}/config/production/config.js"
|
||||
CP_SPB="_${CP_DOMAIN_}_"
|
||||
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_SPB} | _${AAA}_"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
sed -Ei "s/app\.use\(rebooting\(\)\);/\/\/app\.use\(rebooting\(\)\);/" "/home/${CP_DOMAIN}/app.js"
|
||||
searchd
|
||||
memcached -u root -d
|
||||
crond -L /var/log/cron.log
|
||||
node /home/${CP_DOMAIN}/config/update/config.js
|
||||
cd /home/${CP_DOMAIN} && pm2 restart process.json --update-env
|
||||
node /home/"${CP_DOMAIN}"/config/update/config.js
|
||||
cd /home/"${CP_DOMAIN}" && pm2 restart process.json --update-env
|
||||
}
|
||||
docker_restart() {
|
||||
docker_stop
|
||||
docker_start
|
||||
}
|
||||
docker_reload() {
|
||||
cd /home/${CP_DOMAIN} && pm2 reload process.json
|
||||
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)
|
||||
|
@ -1894,8 +1955,8 @@ docker_logs() {
|
|||
_s
|
||||
}
|
||||
docker_zero() {
|
||||
sed -i "s/xmlpipe_command =.*/xmlpipe_command =/" "/home/${CP_DOMAIN}/config/production/sphinx/sphinx.conf"
|
||||
indexer xmlpipe2_${CP_DOMAIN_} --rotate
|
||||
sed -i "s/xmlpipe_command =.*/xmlpipe_command =/" "/etc/sphinx/sphinx.conf"
|
||||
indexer "xmlpipe2_${CP_DOMAIN_}" --rotate
|
||||
(sleep 2; echo flush_all; sleep 2; echo quit;) | telnet 127.0.0.1 11211
|
||||
}
|
||||
docker_cron() {
|
||||
|
@ -1958,7 +2019,7 @@ docker_backup() {
|
|||
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
|
||||
PORT_DOMAIN=$(grep "mysql41" /home/"${CP_DOMAIN}"/config/production/sphinx/sphinx.conf | sed 's/.*:\([0-9]*\):mysql41.*/\1/')
|
||||
PORT_DOMAIN=$(grep "mysql41" /etc/sphinx/sphinx.conf | sed 's/.*:\([0-9]*\):mysql41.*/\1/')
|
||||
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}"
|
||||
|
@ -2110,54 +2171,54 @@ while [ "${WHILE}" -lt "2" ]; do
|
|||
WHILE=$((${WHILE}+1))
|
||||
case ${OPTION} in
|
||||
"i"|"install"|1 )
|
||||
read_domain ${2}
|
||||
read_domain "${2}"
|
||||
sh_yes "reboot"
|
||||
read_lang ${3}
|
||||
read_theme ${4}
|
||||
read_password ${5}
|
||||
_s ${5}
|
||||
read_lang "${3}"
|
||||
read_theme "${4}"
|
||||
read_password "${5}"
|
||||
_s "${5}"
|
||||
sh_progress
|
||||
1_install ${2} ${3} ${4} ${5}
|
||||
1_install "${2}" "${3}" "${4}" "${5}"
|
||||
sh_progress 100
|
||||
success_install
|
||||
post_commands
|
||||
exit 0
|
||||
;;
|
||||
"u"|"update"|2 )
|
||||
read_domain ${2}
|
||||
read_domain "${2}"
|
||||
sh_not
|
||||
_s ${2}
|
||||
_s "${2}"
|
||||
sh_progress
|
||||
2_update ${2}
|
||||
2_update "${2}" "${3}" "${4}"
|
||||
sh_progress 100
|
||||
post_commands
|
||||
exit 0
|
||||
;;
|
||||
"b"|"backup"|3 )
|
||||
read_domain ${2}
|
||||
read_domain "${2}"
|
||||
sh_not
|
||||
_s ${2}
|
||||
_s "${2}"
|
||||
sh_progress
|
||||
3_backup ${2} ${3} ${4} ${5} ${6} ${7}
|
||||
3_backup "${2}" "${3}" "${4}" "${5}" "${6}" "${7}"
|
||||
sh_progress 100
|
||||
exit 0
|
||||
;;
|
||||
"t"|"theme"|4 )
|
||||
read_domain ${2}
|
||||
read_domain "${2}"
|
||||
sh_not
|
||||
read_theme ${3}
|
||||
_s ${3}
|
||||
read_theme "${3}"
|
||||
_s "${3}"
|
||||
sh_progress
|
||||
4_theme ${2} ${3} ${4}
|
||||
4_theme "${2}" "${3}" "${4}"
|
||||
sh_progress 100
|
||||
exit 0
|
||||
;;
|
||||
"d"|"database"|5 )
|
||||
read_domain ${2}
|
||||
read_domain "${2}"
|
||||
sh_not
|
||||
read_key ${3}
|
||||
_s ${3}
|
||||
5_database ${2} ${3}
|
||||
read_key "${3}"
|
||||
_s "${3}"
|
||||
5_database "${2}" "${3}"
|
||||
exit 0
|
||||
;;
|
||||
"h"|"https"|6 )
|
||||
|
@ -2171,35 +2232,35 @@ while [ "${WHILE}" -lt "2" ]; do
|
|||
exit 0
|
||||
;;
|
||||
"m"|"mirror"|7 )
|
||||
read_domain ${2}
|
||||
read_mirror ${3}
|
||||
_s ${3}
|
||||
read_domain "${2}"
|
||||
read_mirror "${3}"
|
||||
_s "${3}"
|
||||
sh_progress
|
||||
7_mirror ${2} ${3}
|
||||
7_mirror "${2}" "${3}"
|
||||
sh_progress 100
|
||||
exit 0
|
||||
;;
|
||||
"r"|"rm"|"remove"|8 )
|
||||
read_domain ${2}
|
||||
read_domain "${2}"
|
||||
sh_not
|
||||
_s ${2}
|
||||
_s "${2}"
|
||||
sh_progress
|
||||
8_remove ${2} ${3} ${4}
|
||||
8_remove "${2}" "${3}" "${4}"
|
||||
sh_progress 100
|
||||
exit 0
|
||||
;;
|
||||
"en"|"ru" )
|
||||
ip_install ${1}
|
||||
ip_install "${1}"
|
||||
exit 0
|
||||
;;
|
||||
"passwd" )
|
||||
_br
|
||||
read_domain ${2}
|
||||
read_domain "${2}"
|
||||
sh_not
|
||||
read_password ${3}
|
||||
_s ${3}
|
||||
read_password "${3}"
|
||||
_s "${3}"
|
||||
sh_progress
|
||||
docker exec ${CP_DOMAIN_} /usr/bin/cinemapress container "${1}" "${CP_PASSWD}" \
|
||||
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 \
|
||||
|
@ -2209,10 +2270,10 @@ while [ "${WHILE}" -lt "2" ]; do
|
|||
;;
|
||||
"images" )
|
||||
_br
|
||||
read_domain ${2}
|
||||
read_domain "${2}"
|
||||
sh_not
|
||||
read_key ${3}
|
||||
_s ${3}
|
||||
read_key "${3}"
|
||||
_s "${3}"
|
||||
if [ -f "/home/${CP_DOMAIN}/files/poster/.latest" ]; then
|
||||
wget --progress=bar:force -O /var/images.tar \
|
||||
"http://d.cinemapress.io/${CP_KEY}/${CP_DOMAIN}?lang=${CP_LANG}&status=LATEST" 2>&1 | sh_wget
|
||||
|
@ -2966,7 +3027,7 @@ while [ "${WHILE}" -lt "2" ]; do
|
|||
"static" )
|
||||
read_domain "${2}"
|
||||
sh_not
|
||||
RCS=$(docker exec "${CP_DOMAIN_}" /usr/bin/cinemapress container rclone config show 2>/dev/null | grep "CINEMASTATIC")
|
||||
RCS=$(docker exec "${CP_DOMAIN_}" rclone config show 2>/dev/null | grep "CINEMASTATIC")
|
||||
if [ "${RCS}" = "" ]; then
|
||||
if [ "${4}" != "" ]; then
|
||||
docker exec "${CP_DOMAIN_}" rclone config delete CINEMASTATIC \
|
||||
|
|
|
@ -423,7 +423,7 @@ searchd
|
|||
{
|
||||
|
||||
listen = 127.0.0.1:9312
|
||||
listen = 127.0.0.1:9306:mysql41
|
||||
listen = 127.0.0.1:3306:mysql41
|
||||
log = /home/example.com/log/searchd.log
|
||||
pid_file = /home/example.com/log/searchd.pid
|
||||
read_timeout = 5
|
||||
|
|
|
@ -30,9 +30,9 @@ module.exports = {
|
|||
},
|
||||
"pagespeed": 0,
|
||||
"loadavg": {
|
||||
"one": 720,
|
||||
"five": 600,
|
||||
"fifteen": 480,
|
||||
"one": 1200,
|
||||
"five": 960,
|
||||
"fifteen": 720,
|
||||
"message": "The server is overloaded by [percent] please come back later."
|
||||
},
|
||||
"publish": {
|
||||
|
@ -98,7 +98,7 @@ module.exports = {
|
|||
"codes": {
|
||||
"head": "",
|
||||
"footer": "",
|
||||
"robots": "User-agent: *\nDisallow: /\nDisallow: /type/*/*\nDisallow: /type-*/*\nDisallow: /movie/*/*\nDisallow: /movie-*/*\nDisallow: /year/*/*\nDisallow: /year-*/*\nDisallow: /genre/*/*\nDisallow: /genre-*/*\nDisallow: /country/*/*\nDisallow: /country-*/*\nDisallow: /director/*/*\nDisallow: /director-*/*\nDisallow: /actor/*/*\nDisallow: /actor-*/*\nDisallow: /search\nDisallow: /*?sorting*\nDisallow: /*?tag*\nDisallow: /*?q*\nDisallow: /*?random*\nDisallow: /*?PageSpeed*\nDisallow: /*?desktop*\nDisallow: /*?year*\nDisallow: /*?genre*\nDisallow: /*?country*\nDisallow: /iframe\nDisallow: /noindex\nDisallow: /admin*"
|
||||
"robots": "User-agent: *\nDisallow: /\nDisallow: /type/*/*\nDisallow: /type-*/*\nDisallow: /movie/*/*\nDisallow: /movie-*/*\nDisallow: /year/*/*\nDisallow: /year-*/*\nDisallow: /genre/*/*\nDisallow: /genre-*/*\nDisallow: /country/*/*\nDisallow: /country-*/*\nDisallow: /director/*/*\nDisallow: /director-*/*\nDisallow: /actor/*/*\nDisallow: /actor-*/*\nDisallow: /search\nDisallow: /*?sorting*\nDisallow: /*?tag*\nDisallow: /*?q*\nDisallow: /*?random*\nDisallow: /*?PageSpeed*\nDisallow: /*?desktop*\nDisallow: /*?year*\nDisallow: /*?genre*\nDisallow: /*?country*\nDisallow: /iframe\nDisallow: /noindex\nDisallow: /mobile-version/noindex\nDisallow: /tv-version\nDisallow: /admin*"
|
||||
},
|
||||
"index": {
|
||||
"type": {
|
||||
|
|
|
@ -30,9 +30,9 @@ module.exports = {
|
|||
},
|
||||
"pagespeed": 0,
|
||||
"loadavg": {
|
||||
"one": 720,
|
||||
"five": 600,
|
||||
"fifteen": 480,
|
||||
"one": 1200,
|
||||
"five": 960,
|
||||
"fifteen": 720,
|
||||
"message": "Сервер перегружен на [percent] пожалуйста зайдите позже."
|
||||
},
|
||||
"publish": {
|
||||
|
@ -99,7 +99,7 @@ module.exports = {
|
|||
"codes": {
|
||||
"head": "",
|
||||
"footer": "",
|
||||
"robots": "User-agent: *\nDisallow: /\nDisallow: /type/*/*\nDisallow: /type-*/*\nDisallow: /movie/*/*\nDisallow: /movie-*/*\nDisallow: /year/*/*\nDisallow: /year-*/*\nDisallow: /genre/*/*\nDisallow: /genre-*/*\nDisallow: /country/*/*\nDisallow: /country-*/*\nDisallow: /director/*/*\nDisallow: /director-*/*\nDisallow: /actor/*/*\nDisallow: /actor-*/*\nDisallow: /search\nDisallow: /*?sorting*\nDisallow: /*?tag*\nDisallow: /*?q*\nDisallow: /*?random*\nDisallow: /*?PageSpeed*\nDisallow: /*?desktop*\nDisallow: /*?year*\nDisallow: /*?genre*\nDisallow: /*?country*\nDisallow: /iframe\nDisallow: /noindex\nDisallow: /admin*"
|
||||
"robots": "User-agent: *\nDisallow: /\nDisallow: /type/*/*\nDisallow: /type-*/*\nDisallow: /movie/*/*\nDisallow: /movie-*/*\nDisallow: /year/*/*\nDisallow: /year-*/*\nDisallow: /genre/*/*\nDisallow: /genre-*/*\nDisallow: /country/*/*\nDisallow: /country-*/*\nDisallow: /director/*/*\nDisallow: /director-*/*\nDisallow: /actor/*/*\nDisallow: /actor-*/*\nDisallow: /search\nDisallow: /*?sorting*\nDisallow: /*?tag*\nDisallow: /*?q*\nDisallow: /*?random*\nDisallow: /*?PageSpeed*\nDisallow: /*?desktop*\nDisallow: /*?year*\nDisallow: /*?genre*\nDisallow: /*?country*\nDisallow: /iframe\nDisallow: /noindex\nDisallow: /mobile-version/noindex\nDisallow: /tv-version\nDisallow: /admin*"
|
||||
},
|
||||
"index": {
|
||||
"type": {
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -252,7 +252,7 @@
|
|||
"content_description": "Последние обновления фильмов",
|
||||
"content_tags": "Коллекции,Обновления",
|
||||
"content_image": "/files/content/collection4.png",
|
||||
"content_movies": "1129900,1111004,926540,839650,843649,961715,835086,924311,489414,935940,994864,768561,916498,840829,462193"
|
||||
"content_movies": "1190387,1101569,977990,1055528,894972,512673,1060511,1330091,1016160,1111004,1179073,472386,1042726,1128272,1143242"
|
||||
},
|
||||
{
|
||||
"content_url": "poslednie-obnovleniya-serialov",
|
||||
|
@ -260,7 +260,7 @@
|
|||
"content_description": "Последние обновления сериалов",
|
||||
"content_tags": "Коллекции,Обновления",
|
||||
"content_image": "/files/content/collection5.png",
|
||||
"content_movies": "1118138,1227803,1044004,1228254,1147693,460586,1111018,585727,1178445,464963,1197956,1167154,502838,1048143,1112514"
|
||||
"content_movies": "1188292,1263496,1188597,1162527,1048602,1263845,1044004,1181436,1118138,1048143,929473,1132285,891433,1197956,1197711"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
|
@ -43,14 +43,14 @@ var CP_save = require(path.join(
|
|||
'..',
|
||||
'..',
|
||||
'lib',
|
||||
'CP_save.min.js'
|
||||
'CP_save.js'
|
||||
));
|
||||
var CP_get = require(path.join(
|
||||
path.dirname(__filename),
|
||||
'..',
|
||||
'..',
|
||||
'lib',
|
||||
'CP_get.min.js'
|
||||
'CP_get.js'
|
||||
));
|
||||
|
||||
/**
|
||||
|
|
|
@ -11,7 +11,8 @@ var fs = require('fs');
|
|||
* Global env.
|
||||
*/
|
||||
|
||||
var save = process.argv && typeof process.argv[2] !== 'undefined' && process.argv[2];
|
||||
var save =
|
||||
process.argv && typeof process.argv[2] !== 'undefined' && process.argv[2];
|
||||
var domain = '';
|
||||
|
||||
try {
|
||||
|
@ -44,14 +45,14 @@ var CP_save = require(path.join(
|
|||
'..',
|
||||
'..',
|
||||
'lib',
|
||||
'CP_save.min.js'
|
||||
'CP_save.js'
|
||||
));
|
||||
var CP_get = require(path.join(
|
||||
path.dirname(__filename),
|
||||
'..',
|
||||
'..',
|
||||
'lib',
|
||||
'CP_get.min.js'
|
||||
'CP_get.js'
|
||||
));
|
||||
|
||||
/**
|
||||
|
|
|
@ -51,7 +51,7 @@ function tryParseJSON(jsonString) {
|
|||
* Module dependencies.
|
||||
*/
|
||||
|
||||
var CP_save = require(path.join(path.dirname(__filename), '..', '..', 'lib', 'CP_save.min.js'));
|
||||
var CP_save = require(path.join(path.dirname(__filename), '..', '..', 'lib', 'CP_save.js'));
|
||||
|
||||
/**
|
||||
* Configuration dependencies.
|
||||
|
@ -135,9 +135,11 @@ async.series(
|
|||
var c = objAdd(objReplace(config_default, config), config);
|
||||
c.theme = thm;
|
||||
c.protocol = prt || prt2 ? 'https://' : config.protocol;
|
||||
c.database = config_default.database
|
||||
? config_default.database
|
||||
: c.database;
|
||||
c.database =
|
||||
config_default.database &&
|
||||
config_default.database.toLowerCase() !== 'FREE'.toLowerCase()
|
||||
? config_default.database
|
||||
: c.database;
|
||||
c.domain = config_default.domain
|
||||
? config_default.domain
|
||||
: c.domain;
|
||||
|
|
|
@ -39,7 +39,7 @@ var CP_save = require(path.join(
|
|||
'..',
|
||||
'..',
|
||||
'lib',
|
||||
'CP_save.min.js'
|
||||
'CP_save.js'
|
||||
));
|
||||
|
||||
/**
|
||||
|
|
241
config/update/mirror.js
Normal file
241
config/update/mirror.js
Normal file
|
@ -0,0 +1,241 @@
|
|||
'use strict';
|
||||
|
||||
/**
|
||||
* Node dependencies.
|
||||
*/
|
||||
|
||||
var path = require('path');
|
||||
var fs = require('fs');
|
||||
|
||||
/**
|
||||
* Global env.
|
||||
*/
|
||||
|
||||
var domain = '';
|
||||
|
||||
try {
|
||||
var p = tryParseJSON(
|
||||
fs.readFileSync(
|
||||
path.join(path.dirname(__filename), '..', '..', 'process.json'),
|
||||
'utf8'
|
||||
)
|
||||
);
|
||||
var e = p.apps[0].env;
|
||||
if (e && e['CP_RT']) {
|
||||
domain = '_' + e['CP_RT'].replace('rt_', '') + '_';
|
||||
}
|
||||
for (var prop in e) {
|
||||
if (e.hasOwnProperty(prop)) {
|
||||
process.env[prop] = e[prop];
|
||||
}
|
||||
}
|
||||
} catch (err) {
|
||||
console.log('NOT FILE PROCESS DATA');
|
||||
process.exit();
|
||||
}
|
||||
|
||||
/**
|
||||
* Module dependencies.
|
||||
*/
|
||||
|
||||
var CP_save = require(path.join(
|
||||
path.dirname(__filename),
|
||||
'..',
|
||||
'..',
|
||||
'lib',
|
||||
'CP_save.js'
|
||||
));
|
||||
var CP_get = require(path.join(
|
||||
path.dirname(__filename),
|
||||
'..',
|
||||
'..',
|
||||
'lib',
|
||||
'CP_get.js'
|
||||
));
|
||||
|
||||
/**
|
||||
* Node dependencies.
|
||||
*/
|
||||
|
||||
var async = require('async');
|
||||
|
||||
/**
|
||||
* Valid JSON.
|
||||
*
|
||||
* @param {String} jsonString
|
||||
*/
|
||||
|
||||
function tryParseJSON(jsonString) {
|
||||
try {
|
||||
var o = JSON.parse(jsonString);
|
||||
if (o && typeof o === 'object') {
|
||||
return o;
|
||||
}
|
||||
} catch (e) {}
|
||||
return {};
|
||||
}
|
||||
|
||||
var indexed = 0;
|
||||
|
||||
async.series(
|
||||
[
|
||||
function(callback) {
|
||||
var i = 1;
|
||||
async.forever(
|
||||
function(next) {
|
||||
CP_get.movies(
|
||||
{ from: process.env.CP_RT, certainly: true },
|
||||
500,
|
||||
'',
|
||||
i,
|
||||
false,
|
||||
function(err, movies) {
|
||||
i++;
|
||||
if (err) {
|
||||
console.error(err);
|
||||
return next('STOP');
|
||||
}
|
||||
if (movies && movies.length) {
|
||||
async.eachOfLimit(
|
||||
movies,
|
||||
1,
|
||||
function(movie, key, callback) {
|
||||
var old = movie.all_movies;
|
||||
delete movie.all_movies;
|
||||
if (old && old === domain) {
|
||||
return callback();
|
||||
}
|
||||
CP_save.save(movie, 'rt', function(err, result) {
|
||||
console.log(
|
||||
result,
|
||||
old.replace(/(^_|_$)/gi, '') +
|
||||
' -> ' +
|
||||
domain.replace(/(^_|_$)/gi, '')
|
||||
);
|
||||
return callback(err);
|
||||
});
|
||||
},
|
||||
function(err) {
|
||||
if (err) console.error(err);
|
||||
return next();
|
||||
}
|
||||
);
|
||||
} else {
|
||||
return next('STOP');
|
||||
}
|
||||
}
|
||||
);
|
||||
},
|
||||
function() {
|
||||
console.log('INDEXED: ', indexed);
|
||||
return callback();
|
||||
}
|
||||
);
|
||||
},
|
||||
function(callback) {
|
||||
var i = 1;
|
||||
async.forever(
|
||||
function(next) {
|
||||
CP_get.contents(
|
||||
{ from: process.env.CP_RT, certainly: true },
|
||||
500,
|
||||
i,
|
||||
false,
|
||||
function(err, contents) {
|
||||
i++;
|
||||
if (err) {
|
||||
console.error(err);
|
||||
return next('STOP');
|
||||
}
|
||||
if (contents && contents.length) {
|
||||
async.eachOfLimit(
|
||||
contents,
|
||||
1,
|
||||
function(content, key, callback) {
|
||||
var old = content.all_contents;
|
||||
delete content.all_contents;
|
||||
if (old && old === domain) {
|
||||
return callback();
|
||||
}
|
||||
CP_save.save(content, 'content', function(err, result) {
|
||||
console.log(
|
||||
result,
|
||||
old.replace(/(^_|_$)/gi, '') +
|
||||
' -> ' +
|
||||
domain.replace(/(^_|_$)/gi, '')
|
||||
);
|
||||
return callback(err);
|
||||
});
|
||||
},
|
||||
function(err) {
|
||||
if (err) console.error(err);
|
||||
return next();
|
||||
}
|
||||
);
|
||||
} else {
|
||||
return next('STOP');
|
||||
}
|
||||
}
|
||||
);
|
||||
},
|
||||
function() {
|
||||
return callback();
|
||||
}
|
||||
);
|
||||
},
|
||||
function(callback) {
|
||||
var i = 1;
|
||||
async.forever(
|
||||
function(next) {
|
||||
CP_get.comments(
|
||||
{ from: process.env.CP_RT, certainly: true },
|
||||
500,
|
||||
'',
|
||||
i,
|
||||
function(err, comments) {
|
||||
i++;
|
||||
if (err) {
|
||||
console.error(err);
|
||||
return next('STOP');
|
||||
}
|
||||
if (comments && comments.length) {
|
||||
async.eachOfLimit(
|
||||
comments,
|
||||
1,
|
||||
function(comment, key, callback) {
|
||||
var old = comment.all_comments;
|
||||
delete comment.all_comments;
|
||||
if (old && old === domain) {
|
||||
return callback();
|
||||
}
|
||||
CP_save.save(comment, 'comment', function(err, result) {
|
||||
console.log(
|
||||
result,
|
||||
old.replace(/(^_|_$)/gi, '') +
|
||||
' -> ' +
|
||||
domain.replace(/(^_|_$)/gi, '')
|
||||
);
|
||||
return callback(err);
|
||||
});
|
||||
},
|
||||
function(err) {
|
||||
if (err) console.error(err);
|
||||
return next();
|
||||
}
|
||||
);
|
||||
} else {
|
||||
return next('STOP');
|
||||
}
|
||||
}
|
||||
);
|
||||
},
|
||||
function() {
|
||||
return callback();
|
||||
}
|
||||
);
|
||||
}
|
||||
],
|
||||
function() {
|
||||
return process.exit();
|
||||
}
|
||||
);
|
|
@ -10,7 +10,7 @@
|
|||
// @supportURL https://enota.club/
|
||||
// @icon https://avatars3.githubusercontent.com/u/16612433?s=200
|
||||
// @license MIT
|
||||
// @version 2020.1
|
||||
// @version 2020.5
|
||||
// @run-at document-end
|
||||
// @include http://*/*/movies?id=*
|
||||
// @include https://*/*/movies?id=*
|
||||
|
@ -27,8 +27,6 @@
|
|||
// @grant GM_xmlhttpRequest
|
||||
// ==/UserScript==
|
||||
|
||||
autoComplete();
|
||||
|
||||
var omdb = getCookie('omdb');
|
||||
var tmdb = getCookie('tmdb');
|
||||
|
||||
|
@ -37,6 +35,8 @@ if (!tmdb) inputTMDb();
|
|||
|
||||
var urls = [];
|
||||
|
||||
autoComplete();
|
||||
|
||||
function parseData() {
|
||||
var movieData = {};
|
||||
|
||||
|
@ -93,26 +93,6 @@ function parseData() {
|
|||
return;
|
||||
}
|
||||
|
||||
if ((!tmdb && tmdb_id) || (!omdb && imdb_id)) {
|
||||
icon.setAttribute('class', 'fa fa-bug');
|
||||
text.innerHTML = ' API keys not filled!';
|
||||
return;
|
||||
}
|
||||
|
||||
if (kp_id && (lang === 'ru' || (!imdb_id && !tmdb_id && !douban_id))) {
|
||||
urls.push('https://rating.kinopoisk.ru/' + kp_id + '.xml');
|
||||
urls.push(
|
||||
'https://api1573848848.apicollaps.cc/franchise/details?' +
|
||||
'token=6006bca37f7681fe1edf75fcf936aecc&' +
|
||||
'kinopoisk_id=' +
|
||||
'' +
|
||||
kp_id
|
||||
);
|
||||
}
|
||||
if (douban_id && (lang === 'zh' || (!imdb_id && !tmdb_id && !kp_id))) {
|
||||
urls.push('https://api.douban.com/v2/movie/subject/' + '' + douban_id);
|
||||
urls.push('https://movie.douban.com/subject/' + '' + douban_id);
|
||||
}
|
||||
if (tmdb && tmdb_id) {
|
||||
urls.push(
|
||||
'https://api.themoviedb.org/3/' +
|
||||
|
@ -128,23 +108,25 @@ function parseData() {
|
|||
tmdb
|
||||
);
|
||||
}
|
||||
if (omdb && imdb_id) {
|
||||
urls.push(
|
||||
'https://www.omdbapi.com/?' + 'i=tt' + imdb_id + '&' + 'apikey=' + omdb
|
||||
);
|
||||
}
|
||||
if (kp_id && lang !== 'ru') {
|
||||
urls.push('https://rating.kinopoisk.ru/' + kp_id + '.xml');
|
||||
if (
|
||||
kp_id &&
|
||||
(lang === 'ru' || lang === 'uk' || (!imdb_id && !tmdb_id && !douban_id))
|
||||
) {
|
||||
urls.push(
|
||||
'https://api1573848848.apicollaps.cc/franchise/details?' +
|
||||
'token=6006bca37f7681fe1edf75fcf936aecc&' +
|
||||
'kinopoisk_id=' +
|
||||
'' +
|
||||
kp_id
|
||||
);
|
||||
urls.push('https://pleer.video/' + kp_id + '.json');
|
||||
urls.push('https://rating.kinopoisk.ru/' + kp_id + '.xml');
|
||||
}
|
||||
if (douban_id && lang !== 'zh') {
|
||||
urls.push('https://movie.douban.com/subject/' + '' + douban_id);
|
||||
if (douban_id && (lang === 'zh' || (!imdb_id && !tmdb_id && !kp_id))) {
|
||||
urls.push('https://api.douban.com/v2/movie/subject/' + douban_id);
|
||||
urls.push('https://movie.douban.com/subject/' + douban_id);
|
||||
}
|
||||
if (omdb && imdb_id && lang === 'en') {
|
||||
urls.push('https://www.omdbapi.com/?i=tt' + imdb_id + '&apikey=' + omdb);
|
||||
}
|
||||
|
||||
function api() {
|
||||
|
@ -156,7 +138,7 @@ function parseData() {
|
|||
if (lang !== 'ru' && (r === 'translate' || r === 'quality')) {
|
||||
continue;
|
||||
}
|
||||
movieData[r] = movieData[r] ? movieData[r] : res[r];
|
||||
movieData[r] = res[r] ? res[r] : movieData[r];
|
||||
if (
|
||||
url.indexOf('omdbapi.com') + 1 &&
|
||||
(r === 'imdb_rating' || r === 'imdb_vote')
|
||||
|
@ -168,10 +150,11 @@ function parseData() {
|
|||
api();
|
||||
});
|
||||
} else {
|
||||
if (!movieData.title_ru && !movieData.title_en) {
|
||||
if (!movieData.title_ru || !movieData.title_en) {
|
||||
icon.setAttribute('class', 'fa fa-bug');
|
||||
text.innerHTML = ' No information!';
|
||||
console.log(movieData);
|
||||
autoComplete();
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -183,15 +166,25 @@ function parseData() {
|
|||
: '';
|
||||
|
||||
if (movieData.title_ru) {
|
||||
document.querySelector('[name="movie.title_ru"]').value =
|
||||
movieData.title_ru;
|
||||
document.querySelector(
|
||||
'[name="movie.title_ru"]'
|
||||
).value = document.querySelector('[name="movie.title_ru"]').value
|
||||
? document.querySelector('[name="movie.title_ru"]').value
|
||||
: movieData.title_ru;
|
||||
}
|
||||
if (movieData.title_en) {
|
||||
document.querySelector('[name="movie.title_en"]').value =
|
||||
movieData.title_en;
|
||||
document.querySelector(
|
||||
'[name="movie.title_en"]'
|
||||
).value = document.querySelector('[name="movie.title_en"]').value
|
||||
? document.querySelector('[name="movie.title_en"]').value
|
||||
: movieData.title_en;
|
||||
}
|
||||
if (movieData.type) {
|
||||
document.querySelector('[name="movie.type"]').value = movieData.type;
|
||||
document.querySelector(
|
||||
'[name="movie.type"]'
|
||||
).value = document.querySelector('[name="movie.type"]').value
|
||||
? document.querySelector('[name="movie.type"]').value
|
||||
: movieData.type;
|
||||
}
|
||||
if (movieData.premiere) {
|
||||
document.querySelector('[name="movie.premiere"]').value =
|
||||
|
@ -227,18 +220,32 @@ function parseData() {
|
|||
document.querySelector('[name="movie.year"]').value = movieData.year;
|
||||
}
|
||||
if (movieData.country) {
|
||||
document.querySelector('[name="movie.country"]').value =
|
||||
movieData.country;
|
||||
document.querySelector(
|
||||
'[name="movie.country"]'
|
||||
).value = document.querySelector('[name="movie.country"]').value
|
||||
? document.querySelector('[name="movie.country"]').value
|
||||
: movieData.country;
|
||||
}
|
||||
if (movieData.genre) {
|
||||
document.querySelector('[name="movie.genre"]').value = movieData.genre;
|
||||
document.querySelector(
|
||||
'[name="movie.genre"]'
|
||||
).value = document.querySelector('[name="movie.genre"]').value
|
||||
? document.querySelector('[name="movie.genre"]').value
|
||||
: movieData.genre;
|
||||
}
|
||||
if (movieData.actor) {
|
||||
document.querySelector('[name="movie.actor"]').value = movieData.actor;
|
||||
document.querySelector(
|
||||
'[name="movie.actor"]'
|
||||
).value = document.querySelector('[name="movie.actor"]').value
|
||||
? document.querySelector('[name="movie.actor"]').value
|
||||
: movieData.actor;
|
||||
}
|
||||
if (movieData.director) {
|
||||
document.querySelector('[name="movie.director"]').value =
|
||||
movieData.director;
|
||||
document.querySelector(
|
||||
'[name="movie.director"]'
|
||||
).value = document.querySelector('[name="movie.director"]').value
|
||||
? document.querySelector('[name="movie.director"]').value
|
||||
: movieData.director;
|
||||
}
|
||||
if (movieData.kp_rating) {
|
||||
document.querySelector('[name="movie.kp_rating"]').value =
|
||||
|
@ -260,6 +267,10 @@ function parseData() {
|
|||
document.querySelector('[name="movie.imdb_id"]').value =
|
||||
movieData.imdb_id;
|
||||
}
|
||||
if (movieData.tmdb_id) {
|
||||
document.querySelector('[name="movie.tmdb_id"]').value =
|
||||
movieData.tmdb_id;
|
||||
}
|
||||
if (
|
||||
movieData.description &&
|
||||
document.querySelector('[name="movie.description"]').value.length < 900
|
||||
|
@ -394,7 +405,9 @@ function getAPI(url, callback) {
|
|||
console.error(e);
|
||||
}
|
||||
var res = {};
|
||||
if (url.indexOf('apicollaps.cc') + 1) {
|
||||
if (url.indexOf('pleer.video') + 1) {
|
||||
res = parsePleer(result);
|
||||
} else if (url.indexOf('apicollaps.cc') + 1) {
|
||||
res = parseKP(result);
|
||||
} else if (url.indexOf('omdbapi.com') + 1) {
|
||||
res = parseOMDb(result);
|
||||
|
@ -546,6 +559,7 @@ function parseKP(r) {
|
|||
if (!r.id) return {};
|
||||
var res = r;
|
||||
return {
|
||||
imdb_id: res.imdb_id ? res.imdb_id.replace(/[^0-9]/g, '') : '',
|
||||
title_ru: res.name
|
||||
? res.name
|
||||
.split('(')[0]
|
||||
|
@ -578,7 +592,7 @@ function parseKP(r) {
|
|||
).join(','),
|
||||
actor: (res.actors
|
||||
? res.actors.map(function(v, i) {
|
||||
return i < 10 ? v : null;
|
||||
return i < 5 ? v : null;
|
||||
})
|
||||
: []
|
||||
)
|
||||
|
@ -586,7 +600,7 @@ function parseKP(r) {
|
|||
.join(','),
|
||||
director: (res.director
|
||||
? res.director.map(function(v, i) {
|
||||
return i < 10 ? v : null;
|
||||
return i < 3 ? v : null;
|
||||
})
|
||||
: []
|
||||
)
|
||||
|
@ -609,6 +623,46 @@ function parseKP(r) {
|
|||
};
|
||||
}
|
||||
|
||||
function parsePleer(r) {
|
||||
if (!r.kp_id) return {};
|
||||
var res = r;
|
||||
return {
|
||||
imdb_id: res.imdb_id ? res.imdb_id : '',
|
||||
tmdb_id: res.tmdb_id ? res.tmdb_id : '',
|
||||
title_ru: res.title_ru ? res.title_ru : '',
|
||||
title_en: res.title_en ? res.title_en : '',
|
||||
year: res.year ? res.year : '',
|
||||
type: res.type ? '1' : '0',
|
||||
genre: res.genre ? res.genre : '',
|
||||
country: res.country ? res.country : '',
|
||||
actor: res.actor
|
||||
? res.actor
|
||||
.split(',')
|
||||
.map(function(v, i) {
|
||||
return i <= 4 ? v : null;
|
||||
})
|
||||
.filter(Boolean)
|
||||
.join(',')
|
||||
: '',
|
||||
director: res.director
|
||||
? res.director
|
||||
.split(',')
|
||||
.map(function(v, i) {
|
||||
return i <= 2 ? v : null;
|
||||
})
|
||||
.filter(Boolean)
|
||||
.join(',')
|
||||
: '',
|
||||
description: res.description ? res.description : '',
|
||||
poster: '1',
|
||||
kp_rating: res.kp_rating,
|
||||
kp_vote: res.kp_vote,
|
||||
imdb_rating: res.imdb_rating,
|
||||
imdb_vote: res.imdb_vote,
|
||||
premiere: res.premiere ? res.premiere : ''
|
||||
};
|
||||
}
|
||||
|
||||
function parseDouban(res) {
|
||||
return {
|
||||
title_ru: res.title ? res.title : '',
|
||||
|
@ -675,6 +729,20 @@ function autoComplete() {
|
|||
right.parentNode.insertBefore(autoBtn, right);
|
||||
}
|
||||
autoBtn.addEventListener('click', parseData, false);
|
||||
if (window.location.hash && window.location.hash.substring(1)) {
|
||||
window.history.forward(1);
|
||||
var ids = window.location.hash.substring(1).split(',');
|
||||
document.querySelector('[name="movie.kp_id"]').value = ids.shift();
|
||||
document.querySelector('[name="movie.id"]').value = '';
|
||||
window.location.hash = ids.join(',');
|
||||
if (autoBtn.fireEvent) {
|
||||
autoBtn.fireEvent('onclick');
|
||||
} else {
|
||||
var evObj = document.createEvent('Events');
|
||||
evObj.initEvent('click', true, false);
|
||||
autoBtn.dispatchEvent(evObj);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function inputOMDb() {
|
||||
|
|
|
@ -5,7 +5,6 @@
|
|||
*/
|
||||
|
||||
var adop = require('adop');
|
||||
var exec = require('child_process').exec;
|
||||
var request = require('request');
|
||||
var sinoni = require('sinoni');
|
||||
var async = require('async');
|
||||
|
@ -45,8 +44,8 @@ try {
|
|||
* Module dependencies.
|
||||
*/
|
||||
|
||||
var CP_get = require('./CP_get.min');
|
||||
var CP_save = require('./CP_save.min');
|
||||
var CP_get = require('./CP_get');
|
||||
var CP_save = require('./CP_save');
|
||||
var CP_cache = require('./CP_cache');
|
||||
var CP_translit = require('../lib/CP_translit');
|
||||
var CP_structure = require('../lib/CP_structure');
|
||||
|
|
1303
lib/CP_get.js
Normal file
1303
lib/CP_get.js
Normal file
File diff suppressed because it is too large
Load diff
1
lib/CP_get.min.js
vendored
1
lib/CP_get.min.js
vendored
File diff suppressed because one or more lines are too long
371
lib/CP_save.js
Normal file
371
lib/CP_save.js
Normal file
|
@ -0,0 +1,371 @@
|
|||
'use strict';
|
||||
|
||||
/**
|
||||
* Module dependencies.
|
||||
*/
|
||||
|
||||
var CP_sphinx = require('../lib/CP_sphinx');
|
||||
|
||||
/**
|
||||
* Configuration dependencies.
|
||||
*/
|
||||
|
||||
var config = require('../config/production/config');
|
||||
|
||||
/**
|
||||
* Node dependencies.
|
||||
*/
|
||||
|
||||
var async = require('async');
|
||||
var path = require('path');
|
||||
var exec = require('child_process').exec;
|
||||
var fs = require('fs');
|
||||
|
||||
/**
|
||||
* Callback.
|
||||
*
|
||||
* @callback Callback
|
||||
* @param {Object} err
|
||||
* @param {String} [result]
|
||||
*/
|
||||
|
||||
/**
|
||||
* Save config.
|
||||
*
|
||||
* @param {Object} content
|
||||
* @param {String} name
|
||||
* @param {Callback} callback
|
||||
*/
|
||||
|
||||
function saveContent(content, name, callback) {
|
||||
if (name === 'config' || name === 'modules') {
|
||||
if (
|
||||
name === 'config' &&
|
||||
typeof content === 'object' &&
|
||||
config.domain !== content.domain
|
||||
) {
|
||||
config.domain = content.domain;
|
||||
}
|
||||
|
||||
var data = JSON.stringify(content, null, '\t');
|
||||
var dir = path.join(path.dirname(__filename), '..', 'config', 'production');
|
||||
cp(
|
||||
path.join(dir, name + '.js'),
|
||||
path.join(dir, name + '.prev.js'),
|
||||
function(err) {
|
||||
if (err) return callback(err);
|
||||
fs.writeFile(
|
||||
path.join(dir, name + '.js'),
|
||||
'module.exports = ' + data + ';',
|
||||
function(err) {
|
||||
if (err) {
|
||||
cp(
|
||||
path.join(dir, name + '.prev.js'),
|
||||
path.join(dir, name + '.js'),
|
||||
function(err) {
|
||||
if (err) console.error(err);
|
||||
}
|
||||
);
|
||||
return callback(err);
|
||||
}
|
||||
exec('pm2 id ' + config.domain, function(err, ids) {
|
||||
ids = ids ? JSON.parse(ids) : [];
|
||||
async.eachOfLimit(
|
||||
ids,
|
||||
1,
|
||||
function(id, key, callback) {
|
||||
if (
|
||||
typeof process.env.pm_id === 'undefined' ||
|
||||
parseInt(id) === parseInt(process.env.pm_id)
|
||||
) {
|
||||
callback(null);
|
||||
} else {
|
||||
exec('pm2 reload ' + id, function(err) {
|
||||
return err ? callback(err) : callback(null);
|
||||
});
|
||||
}
|
||||
},
|
||||
function(err) {
|
||||
return err
|
||||
? callback(err)
|
||||
: callback(null, [process.env.pm_id, ids]);
|
||||
}
|
||||
);
|
||||
});
|
||||
}
|
||||
);
|
||||
}
|
||||
);
|
||||
} else {
|
||||
var db = name + '_' + config.domain.replace(/[^A-Za-z0-9]/g, '_');
|
||||
|
||||
if (content.delete) {
|
||||
CP_sphinx.query(
|
||||
'DELETE FROM ' + db + ' WHERE id IN (' + content.id + ')',
|
||||
function(err) {
|
||||
if (err) return callback(err);
|
||||
callback(null, 'Delete ID ' + content.id);
|
||||
}
|
||||
);
|
||||
} else if (content.id) {
|
||||
if (
|
||||
content.duplicate &&
|
||||
(content.actor ||
|
||||
content.genre ||
|
||||
content.country ||
|
||||
content.director ||
|
||||
content.year)
|
||||
) {
|
||||
return callback(null, '');
|
||||
}
|
||||
CP_sphinx.query(
|
||||
'SELECT * FROM ' +
|
||||
process.env[
|
||||
'CP' + '_' + (name === 'comment' ? 'COMMENT' : 'XML' + 'PIPE' + '2')
|
||||
] +
|
||||
(content.duplicate ? ', ' + process.env['CP' + '_' + 'RT'] : '') +
|
||||
' WHERE id = ' +
|
||||
content.id,
|
||||
function(err, results) {
|
||||
if (err) return callback(err);
|
||||
var result = results && results.length ? results[0] : {};
|
||||
delete content.duplicate;
|
||||
try {
|
||||
var cnt = content.custom ? JSON.parse(content.custom) : {};
|
||||
var res = result.custom ? JSON.parse(result.custom) : {};
|
||||
cnt = Object.assign({}, res, cnt);
|
||||
content.custom = JSON.stringify(cnt);
|
||||
} catch (e) {
|
||||
console.error(e);
|
||||
}
|
||||
content = Object.assign({}, result, content);
|
||||
if (
|
||||
content.title_ru ||
|
||||
content.title_en ||
|
||||
content.user_login ||
|
||||
content.content_title ||
|
||||
content.comment_text
|
||||
) {
|
||||
var query = insertQuery(content, name);
|
||||
CP_sphinx.query(query, function(err) {
|
||||
if (err) return callback(err);
|
||||
callback(
|
||||
null,
|
||||
'Insert ID ' +
|
||||
(content.id ||
|
||||
content.kp_id ||
|
||||
content.content_url ||
|
||||
content.comment_id)
|
||||
);
|
||||
});
|
||||
} else {
|
||||
callback(null, '');
|
||||
}
|
||||
}
|
||||
);
|
||||
} else {
|
||||
var query = insertQuery(content, name);
|
||||
CP_sphinx.query(query, function(err) {
|
||||
if (err) return callback(err);
|
||||
callback(null, 'Insert data.');
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Copy config.
|
||||
*
|
||||
* @param {String} oldName
|
||||
* @param {String} newName
|
||||
* @param {Callback} callback
|
||||
*/
|
||||
|
||||
function cp(oldName, newName, callback) {
|
||||
exec('cp ' + oldName + ' ' + newName, function(error, stdout, stderr) {
|
||||
if (error) return callback(error);
|
||||
if (stdout) console.log(stdout);
|
||||
if (stderr) console.log(stderr);
|
||||
callback(null);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Create insert query.
|
||||
*
|
||||
* @param {Object} content
|
||||
* @param {String} name
|
||||
* @return {String}
|
||||
*/
|
||||
|
||||
function insertQuery(content, name) {
|
||||
var id = content.id ? content.id : 0;
|
||||
delete content.id;
|
||||
|
||||
if (name === 'rt') {
|
||||
if (!id) {
|
||||
id = content.kp_id;
|
||||
}
|
||||
if (!content.query_id) {
|
||||
content.query_id = content.kp_id;
|
||||
}
|
||||
if (content.custom) {
|
||||
try {
|
||||
var cst = JSON.parse(content.custom);
|
||||
cst.unique = typeof cst.unique !== 'undefined' ? cst.unique : true;
|
||||
cst.lastmod = new Date().toJSON();
|
||||
content.custom = JSON.stringify(cst);
|
||||
} catch (e) {
|
||||
console.error(e);
|
||||
content.custom = JSON.stringify({
|
||||
unique: true,
|
||||
lastmod: new Date().toJSON()
|
||||
});
|
||||
}
|
||||
} else {
|
||||
content.custom = JSON.stringify({
|
||||
unique: true,
|
||||
lastmod: new Date().toJSON()
|
||||
});
|
||||
}
|
||||
if (!content.all_movies) {
|
||||
content.all_movies =
|
||||
'_' + config.domain.replace(/[^A-Za-z0-9]/g, '_') + '_';
|
||||
}
|
||||
} else if (name === 'content') {
|
||||
if (!id) {
|
||||
id = new Date().getTime();
|
||||
}
|
||||
if (!content.all_contents) {
|
||||
content.all_contents =
|
||||
'_' + config.domain.replace(/[^A-Za-z0-9]/g, '_') + '_';
|
||||
}
|
||||
content.content_publish =
|
||||
new Date().getTime() + 719528 * 1000 * 60 * 60 * 24;
|
||||
} else if (name === 'comment') {
|
||||
if (!id) {
|
||||
id = content.comment_id || new Date().getTime();
|
||||
}
|
||||
if (!content.all_comments) {
|
||||
content.all_comments =
|
||||
'_' + config.domain.replace(/[^A-Za-z0-9]/g, '_') + '_';
|
||||
}
|
||||
if (!content.comment_publish) {
|
||||
content.comment_publish =
|
||||
new Date().getTime() + 719528 * 1000 * 60 * 60 * 24;
|
||||
}
|
||||
content.comment_id = id;
|
||||
}
|
||||
|
||||
var list = {
|
||||
rt: [
|
||||
'id',
|
||||
'kp_id',
|
||||
'rating',
|
||||
'vote',
|
||||
'kp_rating',
|
||||
'kp_vote',
|
||||
'imdb_rating',
|
||||
'imdb_vote',
|
||||
'premiere',
|
||||
'type',
|
||||
'poster',
|
||||
'title_ru',
|
||||
'title_en',
|
||||
'title_page',
|
||||
'description',
|
||||
'description_short',
|
||||
'pictures',
|
||||
'custom',
|
||||
'query_id',
|
||||
'search',
|
||||
'year',
|
||||
'country',
|
||||
'director',
|
||||
'genre',
|
||||
'actor',
|
||||
'player',
|
||||
'translate',
|
||||
'quality',
|
||||
'all_movies'
|
||||
],
|
||||
user: [
|
||||
'user_id',
|
||||
'user_custom',
|
||||
'user_login',
|
||||
'user_avatar',
|
||||
'user_email',
|
||||
'user_confirm',
|
||||
'user_date',
|
||||
'user_text',
|
||||
'all_users'
|
||||
],
|
||||
content: [
|
||||
'content_publish',
|
||||
'content_url',
|
||||
'content_title',
|
||||
'content_description',
|
||||
'content_image',
|
||||
'content_tags',
|
||||
'content_movies',
|
||||
'all_contents'
|
||||
],
|
||||
comment: [
|
||||
'comment_custom',
|
||||
'comment_publish',
|
||||
'comment_id',
|
||||
'content_id',
|
||||
'movie_id',
|
||||
'season_id',
|
||||
'episode_id',
|
||||
'user_id',
|
||||
'reply_id',
|
||||
'comment_like',
|
||||
'comment_dislike',
|
||||
'comment_confirm',
|
||||
'comment_star',
|
||||
'comment_url',
|
||||
'comment_text',
|
||||
'comment_title',
|
||||
'comment_anonymous',
|
||||
'comment_avatar',
|
||||
'comment_admin',
|
||||
'comment_ip',
|
||||
'comment_vote_ip',
|
||||
'all_comments'
|
||||
]
|
||||
};
|
||||
var keys = Object.keys(content).filter(function(k) {
|
||||
return list[name].indexOf(k.toLowerCase()) !== -1;
|
||||
});
|
||||
var insert = [];
|
||||
for (var i = 0, len = keys.length; i < len; i++) {
|
||||
insert.push(sphinxEscape(content[keys[i]]));
|
||||
}
|
||||
|
||||
keys.unshift('id');
|
||||
insert.unshift(id);
|
||||
|
||||
var db = name + '_' + config.domain.replace(/[^A-Za-z0-9]/g, '_');
|
||||
|
||||
return (
|
||||
'REPLACE INTO ' +
|
||||
db +
|
||||
' ( ' +
|
||||
keys.join(', ') +
|
||||
" ) VALUES ( '" +
|
||||
insert.join("', '") +
|
||||
"' )"
|
||||
);
|
||||
}
|
||||
|
||||
function sphinxEscape(stringToEscape) {
|
||||
return ('' + stringToEscape)
|
||||
.replace(/'/gi, "\\'")
|
||||
.replace(/\n/gi, '\\n')
|
||||
.replace(/\r/gi, '\\r');
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
save: saveContent
|
||||
};
|
1
lib/CP_save.min.js
vendored
1
lib/CP_save.min.js
vendored
File diff suppressed because one or more lines are too long
111
lib/CP_sphinx.js
Normal file
111
lib/CP_sphinx.js
Normal file
|
@ -0,0 +1,111 @@
|
|||
'use strict';
|
||||
|
||||
/**
|
||||
* Module dependencies.
|
||||
*/
|
||||
|
||||
var CP_cache = require('./CP_cache');
|
||||
|
||||
/**
|
||||
* Configuration dependencies.
|
||||
*/
|
||||
|
||||
var config = require('../config/production/config');
|
||||
|
||||
/**
|
||||
* Node dependencies.
|
||||
*/
|
||||
|
||||
var exec = require('child_process').exec;
|
||||
var sphinx = require('sphinx');
|
||||
var md5 = require('md5');
|
||||
|
||||
/**
|
||||
* Callback.
|
||||
*
|
||||
* @callback Callback
|
||||
* @param {Object} err
|
||||
* @param {Object} [render]
|
||||
*/
|
||||
|
||||
/**
|
||||
* Query to sphinx.
|
||||
*
|
||||
* @param {String} query
|
||||
* @param {Callback} callback
|
||||
*/
|
||||
|
||||
function sphinxQuery(query, callback) {
|
||||
var hash = md5(query);
|
||||
|
||||
return config.cache.time
|
||||
? CP_cache.get(hash, function(err, render) {
|
||||
return render
|
||||
? callback(null, render)
|
||||
: getSphinx(function(err, render) {
|
||||
return err ? callback(err) : callback(null, render);
|
||||
});
|
||||
})
|
||||
: getSphinx(function(err, render) {
|
||||
return err ? callback(err) : callback(null, render);
|
||||
});
|
||||
|
||||
/**
|
||||
* Sphinx.
|
||||
*
|
||||
* @param {Callback} callback
|
||||
*/
|
||||
|
||||
function getSphinx(callback) {
|
||||
var connection = sphinx.createConnection({});
|
||||
|
||||
connection.connect(function(err) {
|
||||
if (err) {
|
||||
connection.end();
|
||||
if (
|
||||
err.code === 'PROTOCOL_CONNECTION_LOST' ||
|
||||
err.code === 'ECONNREFUSED'
|
||||
) {
|
||||
restartSphinx(function(err, render) {
|
||||
callback(err, render);
|
||||
});
|
||||
} else {
|
||||
callback(err);
|
||||
}
|
||||
} else {
|
||||
connection.query(query, function(err, results) {
|
||||
connection.end();
|
||||
if (err) return callback(err);
|
||||
|
||||
callback(null, results);
|
||||
|
||||
if (config.cache.time && results) {
|
||||
CP_cache.set(hash, results, config.cache.time);
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Restart sphinx.
|
||||
*
|
||||
* @param {Callback} callback
|
||||
*/
|
||||
|
||||
function restartSphinx(callback) {
|
||||
exec('searchd --stop');
|
||||
setTimeout(function() {
|
||||
exec('searchd');
|
||||
setTimeout(function() {
|
||||
getSphinx(function(err, render) {
|
||||
return err ? callback(err) : callback(null, render);
|
||||
});
|
||||
}, 2500);
|
||||
}, 2500);
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
query: sphinxQuery
|
||||
};
|
1
lib/CP_sphinx.min.js
vendored
1
lib/CP_sphinx.min.js
vendored
File diff suppressed because one or more lines are too long
|
@ -4,7 +4,7 @@
|
|||
* Module dependencies.
|
||||
*/
|
||||
|
||||
var CP_get = require('../lib/CP_get.min');
|
||||
var CP_get = require('../lib/CP_get');
|
||||
var CP_structure = require('../lib/CP_structure');
|
||||
|
||||
/**
|
||||
|
|
|
@ -25,12 +25,6 @@ function mobileVersion(url) {
|
|||
var data = '';
|
||||
|
||||
if (/:\/\/m\.|\/mobile-version/i.test(url)) {
|
||||
data +=
|
||||
'<link rel="canonical" href="' +
|
||||
url
|
||||
.replace('://m.', '://' + (config.botdomain || config.subdomain))
|
||||
.replace('/mobile-version', '') +
|
||||
'">';
|
||||
var css = fs.readFileSync(
|
||||
path.join(
|
||||
path.dirname(__dirname),
|
||||
|
|
36
package.json
36
package.json
|
@ -16,45 +16,45 @@
|
|||
},
|
||||
"homepage": "https://CinemaPress.io/",
|
||||
"dependencies": {
|
||||
"pm2": "4.2.3",
|
||||
"whois": "2.12.0",
|
||||
"async": "3.1.0",
|
||||
"pm2": "4.4.0",
|
||||
"whois": "2.12.1",
|
||||
"async": "3.2.0",
|
||||
"base64-stream": "1.0.0",
|
||||
"body-parser": "1.19.0",
|
||||
"cheerio": "1.0.0-rc.3",
|
||||
"cookie-parser": "1.4.4",
|
||||
"ejs": "3.0.1",
|
||||
"cookie-parser": "1.4.5",
|
||||
"ejs": "3.1.2",
|
||||
"eval": "0.1.4",
|
||||
"express": "4.17.1",
|
||||
"html-entities": "1.2.1",
|
||||
"html-entities": "1.3.1",
|
||||
"html-minifier": "4.0.0",
|
||||
"i18n": "0.8.4",
|
||||
"i18n": "0.9.0",
|
||||
"imap": "0.8.19",
|
||||
"ip-range-check": "0.2.0",
|
||||
"isbot": "2.5.4",
|
||||
"isbot": "2.5.7",
|
||||
"limax": "2.0.0",
|
||||
"mailparser-mit": "1.0.0",
|
||||
"mimemessage": "1.0.5",
|
||||
"maxmind": "4.1.0",
|
||||
"maxmind": "4.1.1",
|
||||
"md5": "2.2.1",
|
||||
"memcached": "2.2.2",
|
||||
"moment": "2.24.0",
|
||||
"moment": "2.25.0",
|
||||
"multer": "1.4.2",
|
||||
"mysql": "2.17.1",
|
||||
"mysql": "2.18.1",
|
||||
"os-utils": "0.0.14",
|
||||
"request": "2.88.0",
|
||||
"sharp": "0.23.4",
|
||||
"request": "2.88.2",
|
||||
"sharp": "0.25.2",
|
||||
"sinoni": "1.2.5",
|
||||
"ua-parser-js": "0.7.21",
|
||||
"nodemailer": "6.4.2",
|
||||
"nodemailer": "6.4.6",
|
||||
"lru-cache": "5.1.1",
|
||||
"adop": "2.3.0",
|
||||
"object-path": "0.11.4",
|
||||
"react": "16.12.0",
|
||||
"react-dom": "16.12.0",
|
||||
"react": "16.13.1",
|
||||
"react-dom": "16.13.1",
|
||||
"avataaars": "1.2.1",
|
||||
"@dicebear/avatars": "4.0.2",
|
||||
"@dicebear/avatars-avataaars-sprites": "4.0.2"
|
||||
"@dicebear/avatars": "4.0.8",
|
||||
"@dicebear/avatars-avataaars-sprites": "4.0.8"
|
||||
},
|
||||
"devDependencies": {
|
||||
"prettier": "1.19.1"
|
||||
|
|
|
@ -4,8 +4,8 @@
|
|||
* Module dependencies.
|
||||
*/
|
||||
|
||||
var CP_get = require('../lib/CP_get.min');
|
||||
var CP_save = require('../lib/CP_save.min');
|
||||
var CP_get = require('../lib/CP_get');
|
||||
var CP_save = require('../lib/CP_save');
|
||||
var CP_cache = require('../lib/CP_cache');
|
||||
var CP_structure = require('../lib/CP_structure');
|
||||
|
||||
|
|
|
@ -4,8 +4,8 @@
|
|||
* Module dependencies.
|
||||
*/
|
||||
|
||||
var CP_get = require('../lib/CP_get.min');
|
||||
var CP_save = require('../lib/CP_save.min');
|
||||
var CP_get = require('../lib/CP_get');
|
||||
var CP_save = require('../lib/CP_save');
|
||||
|
||||
/**
|
||||
* Configuration dependencies.
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
* Module dependencies.
|
||||
*/
|
||||
|
||||
var CP_get = require('../lib/CP_get.min');
|
||||
var CP_get = require('../lib/CP_get');
|
||||
var CP_tv = require('../modules/CP_tv');
|
||||
var CP_translit = require('../lib/CP_translit');
|
||||
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
* Module dependencies.
|
||||
*/
|
||||
|
||||
var CP_get = require('../lib/CP_get.min');
|
||||
var CP_get = require('../lib/CP_get');
|
||||
var CP_player = require('../modules/CP_player');
|
||||
|
||||
/**
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
|
||||
var CP_structure = require('../../lib/CP_structure');
|
||||
var CP_page = require('../../lib/CP_page');
|
||||
var CP_get = require('../../lib/CP_get.min');
|
||||
var CP_get = require('../../lib/CP_get');
|
||||
|
||||
var CP_comments = require('../../modules/CP_comments');
|
||||
|
||||
|
@ -210,7 +210,7 @@ function allCategory(type, options, callback) {
|
|||
soon: function(callback) {
|
||||
return modules.soon.status
|
||||
? CP_get.additional(
|
||||
{ all_movies: process.env.CP_ALL },
|
||||
{ all_movies: process.env.CP_SPB },
|
||||
'soon',
|
||||
options,
|
||||
function(err, movies) {
|
||||
|
@ -483,7 +483,7 @@ function oneCategory(type, key, page, sorting, options, callback) {
|
|||
soon: function(callback) {
|
||||
return modules.soon.status
|
||||
? CP_get.additional(
|
||||
{ all_movies: process.env.CP_ALL },
|
||||
{ all_movies: process.env.CP_SPB },
|
||||
'soon',
|
||||
options,
|
||||
function(err, movies) {
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
*/
|
||||
|
||||
var CP_page = require('../../lib/CP_page');
|
||||
var CP_get = require('../../lib/CP_get.min');
|
||||
var CP_get = require('../../lib/CP_get');
|
||||
|
||||
var CP_comments = require('../../modules/CP_comments');
|
||||
|
||||
|
@ -132,7 +132,7 @@ function allContents(tag, options, callback) {
|
|||
soon: function(callback) {
|
||||
return modules.soon.status
|
||||
? CP_get.additional(
|
||||
{ all_movies: process.env.CP_ALL },
|
||||
{ all_movies: process.env.CP_SPB },
|
||||
'soon',
|
||||
options,
|
||||
function(err, movies) {
|
||||
|
@ -361,7 +361,7 @@ function oneContent(url, page, sorting, options, callback) {
|
|||
soon: function(callback) {
|
||||
return modules.soon.status
|
||||
? CP_get.additional(
|
||||
{ all_movies: process.env.CP_ALL },
|
||||
{ all_movies: process.env.CP_SPB },
|
||||
'soon',
|
||||
options,
|
||||
function(err, movies) {
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
*/
|
||||
|
||||
var CP_page = require('../../lib/CP_page');
|
||||
var CP_get = require('../../lib/CP_get.min');
|
||||
var CP_get = require('../../lib/CP_get');
|
||||
|
||||
var CP_episode = require('../../modules/CP_episode');
|
||||
var CP_comments = require('../../modules/CP_comments');
|
||||
|
@ -113,7 +113,7 @@ function dataIndex(options, callback) {
|
|||
soon: function(callback) {
|
||||
return modules.soon.status
|
||||
? CP_get.additional(
|
||||
{ all_movies: process.env.CP_ALL },
|
||||
{ all_movies: process.env.CP_SPB },
|
||||
'soon',
|
||||
options,
|
||||
function(err, movies) {
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
*/
|
||||
|
||||
var CP_page = require('../../lib/CP_page');
|
||||
var CP_get = require('../../lib/CP_get.min');
|
||||
var CP_get = require('../../lib/CP_get');
|
||||
var CP_decode = require('../../lib/CP_decode');
|
||||
|
||||
var CP_comments = require('../../modules/CP_comments');
|
||||
|
@ -146,7 +146,7 @@ function dataMovie(id, type, options, callback) {
|
|||
soon: function(callback) {
|
||||
return modules.soon.status
|
||||
? CP_get.additional(
|
||||
{ all_movies: process.env.CP_ALL },
|
||||
{ all_movies: process.env.CP_SPB },
|
||||
'soon',
|
||||
options,
|
||||
function(err, movies) {
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
|
||||
var CP_translit = require('../../lib/CP_translit');
|
||||
var CP_structure = require('../../lib/CP_structure');
|
||||
var CP_get = require('../../lib/CP_get.min');
|
||||
var CP_get = require('../../lib/CP_get');
|
||||
|
||||
/**
|
||||
* Configuration dependencies.
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
*/
|
||||
|
||||
var CP_cache = require('../lib/CP_cache');
|
||||
var CP_get = require('../lib/CP_get.min');
|
||||
var CP_get = require('../lib/CP_get');
|
||||
var CP_regexp = require('../lib/CP_regexp');
|
||||
|
||||
/**
|
||||
|
|
|
@ -951,5 +951,6 @@
|
|||
"Название организации для поиска всех её IP": "اسم المنظمة للبحث عن كافة IP الخاص به",
|
||||
"Добавить все IP": "إضافة كافة IP",
|
||||
"Поиск по WHOIS в реальном времени": "البحث عن WHOIS في الوقت الحقيقي",
|
||||
"Что такое бесплатная и премиум тема оформления CinemaPress?": "ما هو حر وقسط موضوع التصميم CinemaPress؟"
|
||||
"Что такое бесплатная и премиум тема оформления CinemaPress?": "ما هو حر وقسط موضوع التصميم CinemaPress؟",
|
||||
"Добавьте в парсинг хотя бы один веб-сайт": "إضافة إعراب ما لا يقل عن موقع واحد"
|
||||
}
|
|
@ -951,5 +951,6 @@
|
|||
"Название организации для поиска всех её IP": "Името на организацията, за да търсите всички свои IP",
|
||||
"Добавить все IP": "Добавяне на всички IP",
|
||||
"Поиск по WHOIS в реальном времени": "Търсене за WHOIS в реално време",
|
||||
"Что такое бесплатная и премиум тема оформления CinemaPress?": "Какво е безплатно и премия дизайн тема CinemaPress?"
|
||||
"Что такое бесплатная и премиум тема оформления CinemaPress?": "Какво е безплатно и премия дизайн тема CinemaPress?",
|
||||
"Добавьте в парсинг хотя бы один веб-сайт": "Добави разбор най-малко един уеб сайт"
|
||||
}
|
|
@ -951,5 +951,6 @@
|
|||
"Название организации для поиска всех её IP": "তার আইপি সব জন্য অনুসন্ধান করতে সংগঠনের নামে",
|
||||
"Добавить все IP": "সব আইপি যোগ করুন",
|
||||
"Поиск по WHOIS в реальном времени": "রিয়েল টাইমে WHOIS জন্য অনুসন্ধান করুন",
|
||||
"Что такое бесплатная и премиум тема оформления CinemaPress?": "বিনামূল্যে এবং প্রিমিয়াম নকশা থিম CinemaPress কি?"
|
||||
"Что такое бесплатная и премиум тема оформления CinemaPress?": "বিনামূল্যে এবং প্রিমিয়াম নকশা থিম CinemaPress কি?",
|
||||
"Добавьте в парсинг хотя бы один веб-сайт": "পার্সিং যোগ অন্তত একটি ওয়েব সাইট এ"
|
||||
}
|
|
@ -951,5 +951,6 @@
|
|||
"Название организации для поиска всех её IP": "Název organizace hledat všechny jeho IP",
|
||||
"Добавить все IP": "Přidejte všechny IP",
|
||||
"Поиск по WHOIS в реальном времени": "Vyhledávat WHOIS v reálném čase",
|
||||
"Что такое бесплатная и премиум тема оформления CinemaPress?": "To, co je zdarma a prémie téma designu CinemaPress?"
|
||||
"Что такое бесплатная и премиум тема оформления CinemaPress?": "To, co je zdarma a prémie téma designu CinemaPress?",
|
||||
"Добавьте в парсинг хотя бы один веб-сайт": "Přidejte analýze nejméně jedna webu"
|
||||
}
|
|
@ -951,5 +951,6 @@
|
|||
"Название организации для поиска всех её IP": "Navnet på organisationen for at søge efter alle sine IP",
|
||||
"Добавить все IP": "Tilføj alle IP",
|
||||
"Поиск по WHOIS в реальном времени": "Søg efter WHOIS i realtid",
|
||||
"Что такое бесплатная и премиум тема оформления CinemaPress?": "Hvad er gratis og premium design tema CinemaPress?"
|
||||
"Что такое бесплатная и премиум тема оформления CinemaPress?": "Hvad er gratis og premium design tema CinemaPress?",
|
||||
"Добавьте в парсинг хотя бы один веб-сайт": "Tilføj parsing mindst ét websted"
|
||||
}
|
|
@ -951,5 +951,6 @@
|
|||
"Название организации для поиска всех её IP": "Der Name der Organisation, für alle seine IP zu suchen",
|
||||
"Добавить все IP": "In alle IP",
|
||||
"Поиск по WHOIS в реальном времени": "Suchen Sie nach WHOIS in Echtzeit",
|
||||
"Что такое бесплатная и премиум тема оформления CinemaPress?": "Was ist kostenlos und Premium-Design-Thema CinemaPress?"
|
||||
"Что такое бесплатная и премиум тема оформления CinemaPress?": "Was ist kostenlos und Premium-Design-Thema CinemaPress?",
|
||||
"Добавьте в парсинг хотя бы один веб-сайт": "Fügen sie das parsing mindestens eine website"
|
||||
}
|
|
@ -951,5 +951,6 @@
|
|||
"Название организации для поиска всех её IP": "Το όνομα του οργανισμού για να αναζητήσετε όλα τα IP της",
|
||||
"Добавить все IP": "Προσθέστε όλα τα IP",
|
||||
"Поиск по WHOIS в реальном времени": "Αναζήτηση WHOIS σε πραγματικό χρόνο",
|
||||
"Что такое бесплатная и премиум тема оформления CinemaPress?": "Τι είναι δωρεάν και υψηλής ποιότητας σχεδιασμό θέμα CinemaPress;"
|
||||
"Что такое бесплатная и премиум тема оформления CinemaPress?": "Τι είναι δωρεάν και υψηλής ποιότητας σχεδιασμό θέμα CinemaPress;",
|
||||
"Добавьте в парсинг хотя бы один веб-сайт": "Προσθέστε το parsing τουλάχιστον μία ιστοσελίδα"
|
||||
}
|
|
@ -950,5 +950,6 @@
|
|||
"Название организации для поиска всех её IP": "The name of the organization to search for all its IPs",
|
||||
"Добавить все IP": "Add all IPs",
|
||||
"Поиск по WHOIS в реальном времени": "Real-time WHOIS search",
|
||||
"Что такое бесплатная и премиум тема оформления CinemaPress?": "What is a free and premium CinemaPress theme?"
|
||||
"Что такое бесплатная и премиум тема оформления CinemaPress?": "What is a free and premium CinemaPress theme?",
|
||||
"Добавьте в парсинг хотя бы один веб-сайт": "Add at least one website to parsing"
|
||||
}
|
|
@ -951,5 +951,6 @@
|
|||
"Название организации для поиска всех её IP": "El nombre de la organización a la búsqueda de la totalidad de su IP",
|
||||
"Добавить все IP": "Añadir todos los IP",
|
||||
"Поиск по WHOIS в реальном времени": "Buscar WHOIS en tiempo real",
|
||||
"Что такое бесплатная и премиум тема оформления CinemaPress?": "¿Cuál es CinemaPress diseño de tema libre y de alta calidad?"
|
||||
"Что такое бесплатная и премиум тема оформления CinemaPress?": "¿Cuál es CinemaPress diseño de tema libre y de alta calidad?",
|
||||
"Добавьте в парсинг хотя бы один веб-сайт": "Añadir el análisis en un sitio web por lo menos"
|
||||
}
|
|
@ -951,5 +951,6 @@
|
|||
"Название организации для поиска всех её IP": "Nimi korralduse otsida kõiki oma IP",
|
||||
"Добавить все IP": "Lisa kõik IP",
|
||||
"Поиск по WHOIS в реальном времени": "Otsi WHOIS reaalajas",
|
||||
"Что такое бесплатная и премиум тема оформления CinemaPress?": "Mis on tasuta ja premium kujundus CinemaPress?"
|
||||
"Что такое бесплатная и премиум тема оформления CinemaPress?": "Mis on tasuta ja premium kujundus CinemaPress?",
|
||||
"Добавьте в парсинг хотя бы один веб-сайт": "Lisa sõelumiskood vähemalt ühte veebisaiti"
|
||||
}
|
|
@ -951,5 +951,6 @@
|
|||
"Название организации для поиска всех её IP": "Nimi organisaation etsiä kaikki sen IP",
|
||||
"Добавить все IP": "Lisää kaikki IP",
|
||||
"Поиск по WHOIS в реальном времени": "Hae whois reaaliajassa",
|
||||
"Что такое бесплатная и премиум тема оформления CinemaPress?": "Mikä on ilmainen ja Premium teema CinemaPress?"
|
||||
"Что такое бесплатная и премиум тема оформления CinemaPress?": "Mikä on ilmainen ja Premium teema CinemaPress?",
|
||||
"Добавьте в парсинг хотя бы один веб-сайт": "Lisää jäsennys ainakin yksi web-sivusto"
|
||||
}
|
|
@ -951,5 +951,6 @@
|
|||
"Название организации для поиска всех её IP": "Le nom de l'organisation pour rechercher l'ensemble de ses IP",
|
||||
"Добавить все IP": "Ajouter tous les IP",
|
||||
"Поиск по WHOIS в реальном времени": "Recherche de WHOIS en temps réel",
|
||||
"Что такое бесплатная и премиум тема оформления CinemaPress?": "Quel est le thème de la conception libre et prime CinemaPress?"
|
||||
"Что такое бесплатная и премиум тема оформления CinemaPress?": "Quel est le thème de la conception libre et prime CinemaPress?",
|
||||
"Добавьте в парсинг хотя бы один веб-сайт": "Ajouter l'analyse syntaxique au moins un site web"
|
||||
}
|
|
@ -951,5 +951,6 @@
|
|||
"Название организации для поиска всех её IP": "अपने आईपी के सभी के लिए खोज करने के लिए संगठन के नाम",
|
||||
"Добавить все IP": "सभी IP जोड़ें",
|
||||
"Поиск по WHOIS в реальном времени": "वास्तविक समय में WHOIS के लिए खोज",
|
||||
"Что такое бесплатная и премиум тема оформления CinemaPress?": "नि: शुल्क और प्रीमियम डिजाइन विषय CinemaPress क्या है?"
|
||||
"Что такое бесплатная и премиум тема оформления CinemaPress?": "नि: शुल्क और प्रीमियम डिजाइन विषय CinemaPress क्या है?",
|
||||
"Добавьте в парсинг хотя бы один веб-сайт": "पार्स जोड़े कम से कम एक वेब साइट पर"
|
||||
}
|
|
@ -951,5 +951,6 @@
|
|||
"Название организации для поиска всех её IP": "Ime organizacije u potrazi za sve svoje IP",
|
||||
"Добавить все IP": "Dodaj sve IP",
|
||||
"Поиск по WHOIS в реальном времени": "Potražite WHOIS u realnom vremenu",
|
||||
"Что такое бесплатная и премиум тема оформления CinemaPress?": "Što je slobodan i premium dizajn tema CinemaPress?"
|
||||
"Что такое бесплатная и премиум тема оформления CinemaPress?": "Što je slobodan i premium dizajn tema CinemaPress?",
|
||||
"Добавьте в парсинг хотя бы один веб-сайт": "Dodaj parsiranje barem jednu web-stranici"
|
||||
}
|
|
@ -951,5 +951,6 @@
|
|||
"Название организации для поиска всех её IP": "A szervezet neve keresni az összes IP-",
|
||||
"Добавить все IP": "Add az összes IP-",
|
||||
"Поиск по WHOIS в реальном времени": "Keresése WHOIS valós időben",
|
||||
"Что такое бесплатная и премиум тема оформления CinemaPress?": "Mi ingyenes és prémium dizájn CinemaPress?"
|
||||
"Что такое бесплатная и премиум тема оформления CinemaPress?": "Mi ingyenes és prémium dizájn CinemaPress?",
|
||||
"Добавьте в парсинг хотя бы один веб-сайт": "Add elemzésekor legalább egy webhelyet"
|
||||
}
|
|
@ -951,5 +951,6 @@
|
|||
"Название организации для поиска всех её IP": "Nama organisasi untuk mencari semua IP-nya",
|
||||
"Добавить все IP": "Tambahkan semua IP",
|
||||
"Поиск по WHOIS в реальном времени": "Mencari WHOIS secara real time",
|
||||
"Что такое бесплатная и премиум тема оформления CinemaPress?": "Apa yang gratis dan premium tema desain CinemaPress?"
|
||||
"Что такое бесплатная и премиум тема оформления CinemaPress?": "Apa yang gratis dan premium tema desain CinemaPress?",
|
||||
"Добавьте в парсинг хотя бы один веб-сайт": "Menambahkan parsing pada satu situs web paling"
|
||||
}
|
|
@ -951,5 +951,6 @@
|
|||
"Название организации для поиска всех её IP": "Il nome dell'organizzazione per la ricerca di tutti i suoi IP",
|
||||
"Добавить все IP": "Aggiungere tutti gli IP",
|
||||
"Поиск по WHOIS в реальном времени": "Cerca WHOIS in tempo reale",
|
||||
"Что такое бесплатная и премиум тема оформления CinemaPress?": "Qual è gratuita e premium tema di disegno CinemaPress?"
|
||||
"Что такое бесплатная и премиум тема оформления CinemaPress?": "Qual è gratuita e premium tema di disegno CinemaPress?",
|
||||
"Добавьте в парсинг хотя бы один веб-сайт": "Aggiungere l'analisi almeno un sito web"
|
||||
}
|
|
@ -951,5 +951,6 @@
|
|||
"Название организации для поиска всех её IP": "そのIPのすべてを検索するための組織の名前",
|
||||
"Добавить все IP": "すべてのIPを追加します。",
|
||||
"Поиск по WHOIS в реальном времени": "リアルタイムでWHOIS検索",
|
||||
"Что такое бесплатная и премиум тема оформления CinemaPress?": "無料、プレミアムデザインテーマのCinemaPressは何ですか?"
|
||||
"Что такое бесплатная и премиум тема оформления CinemaPress?": "無料、プレミアムデザインテーマのCinemaPressは何ですか?",
|
||||
"Добавьте в парсинг хотя бы один веб-сайт": "解析に少なくとも一つのWebサイトを追加"
|
||||
}
|
|
@ -951,5 +951,6 @@
|
|||
"Название организации для поиска всех её IP": "조직의 이름은 IP를 모두 검색하기",
|
||||
"Добавить все IP": "모든 IP 추가",
|
||||
"Поиск по WHOIS в реальном времени": "실시간으로 WHOIS 검색",
|
||||
"Что такое бесплатная и премиум тема оформления CinemaPress?": "무료 및 프리미엄 디자인 테마 CinemaPress은 무엇인가?"
|
||||
"Что такое бесплатная и премиум тема оформления CinemaPress?": "무료 및 프리미엄 디자인 테마 CinemaPress은 무엇인가?",
|
||||
"Добавьте в парсинг хотя бы один веб-сайт": "구문 분석을 추가 적어도 하나의 웹 사이트에서"
|
||||
}
|
|
@ -951,5 +951,6 @@
|
|||
"Название организации для поиска всех её IP": "Organizacijos pavadinimas ieškoti visą savo IP",
|
||||
"Добавить все IP": "Pridėti visas IP",
|
||||
"Поиск по WHOIS в реальном времени": "Ieškoti WHOIS realiu laiku",
|
||||
"Что такое бесплатная и премиум тема оформления CinemaPress?": "Kas yra nemokama ir aukščiausios kokybės dizainas tema CinemaPress?"
|
||||
"Что такое бесплатная и премиум тема оформления CinemaPress?": "Kas yra nemokama ir aukščiausios kokybės dizainas tema CinemaPress?",
|
||||
"Добавьте в парсинг хотя бы один веб-сайт": "Pridėti apdorojant ne mažiau kaip viena svetaine"
|
||||
}
|
|
@ -951,5 +951,6 @@
|
|||
"Название организации для поиска всех её IP": "Organizācijas nosaukums, lai meklētu visu savu IP",
|
||||
"Добавить все IP": "Pievienot visus IP",
|
||||
"Поиск по WHOIS в реальном времени": "Meklēt WHOIS reāllaikā",
|
||||
"Что такое бесплатная и премиум тема оформления CinemaPress?": "Kas ir bezmaksas un premium dizaina tēma CinemaPress?"
|
||||
"Что такое бесплатная и премиум тема оформления CinemaPress?": "Kas ir bezmaksas un premium dizaina tēma CinemaPress?",
|
||||
"Добавьте в парсинг хотя бы один веб-сайт": "Pievienot parsēšana vismaz vienā tīmekļa vietnē"
|
||||
}
|
|
@ -951,5 +951,6 @@
|
|||
"Название организации для поиска всех её IP": "De naam van de organisatie om te zoeken voor al haar IP",
|
||||
"Добавить все IP": "Voeg alle IP",
|
||||
"Поиск по WHOIS в реальном времени": "Zoek naar WHOIS in real time",
|
||||
"Что такое бесплатная и премиум тема оформления CinemaPress?": "Wat is gratis en premium design thema CinemaPress?"
|
||||
"Что такое бесплатная и премиум тема оформления CinemaPress?": "Wat is gratis en premium design thema CinemaPress?",
|
||||
"Добавьте в парсинг хотя бы один веб-сайт": "Voeg de parsing ten minste één website"
|
||||
}
|
|
@ -951,5 +951,6 @@
|
|||
"Название организации для поиска всех её IP": "Nazwa organizacji, aby szukać wszystkich jego IP",
|
||||
"Добавить все IP": "Dodaj wszystkie IP",
|
||||
"Поиск по WHOIS в реальном времени": "Szukaj WHOIS w czasie rzeczywistym",
|
||||
"Что такое бесплатная и премиум тема оформления CinemaPress?": "Co to jest za darmo i premii projekt motyw CinemaPress?"
|
||||
"Что такое бесплатная и премиум тема оформления CinemaPress?": "Co to jest za darmo i premii projekt motyw CinemaPress?",
|
||||
"Добавьте в парсинг хотя бы один веб-сайт": "Dodaj analizowania co najmniej jednego miejsca w sieci web"
|
||||
}
|
|
@ -951,5 +951,6 @@
|
|||
"Название организации для поиска всех её IP": "O nome da organização de pesquisa para toda a sua IP",
|
||||
"Добавить все IP": "Adicionar todos os IP",
|
||||
"Поиск по WHOIS в реальном времени": "Procurar WHOIS em tempo real",
|
||||
"Что такое бесплатная и премиум тема оформления CinemaPress?": "O que é livre e premium CinemaPress tema de design?"
|
||||
"Что такое бесплатная и премиум тема оформления CinemaPress?": "O que é livre e premium CinemaPress tema de design?",
|
||||
"Добавьте в парсинг хотя бы один веб-сайт": "Adicionar a análise, pelo menos um site"
|
||||
}
|
|
@ -951,5 +951,6 @@
|
|||
"Название организации для поиска всех её IP": "Numele organizației pentru a căuta toate IP sale",
|
||||
"Добавить все IP": "Adăugați toate IP",
|
||||
"Поиск по WHOIS в реальном времени": "Caută WHOIS, în timp real",
|
||||
"Что такое бесплатная и премиум тема оформления CinemaPress?": "Ce este liber și prima temă de design CinemaPress?"
|
||||
"Что такое бесплатная и премиум тема оформления CinemaPress?": "Ce este liber și prima temă de design CinemaPress?",
|
||||
"Добавьте в парсинг хотя бы один веб-сайт": "Adăugați parsarea cel puțin un site web"
|
||||
}
|
|
@ -950,5 +950,6 @@
|
|||
"Название организации для поиска всех её IP": "Название организации для поиска всех её IP",
|
||||
"Добавить все IP": "Добавить все IP",
|
||||
"Поиск по WHOIS в реальном времени": "Поиск по WHOIS в реальном времени",
|
||||
"Что такое бесплатная и премиум тема оформления CinemaPress?": "Что такое бесплатная и премиум тема оформления CinemaPress?"
|
||||
"Что такое бесплатная и премиум тема оформления CinemaPress?": "Что такое бесплатная и премиум тема оформления CinemaPress?",
|
||||
"Добавьте в парсинг хотя бы один веб-сайт": "Добавьте в парсинг хотя бы один веб-сайт"
|
||||
}
|
|
@ -951,5 +951,6 @@
|
|||
"Название организации для поиска всех её IP": "Názov organizácie hľadať všetky jeho IP",
|
||||
"Добавить все IP": "Pridajte všetky IP",
|
||||
"Поиск по WHOIS в реальном времени": "Vyhľadávať WHOIS v reálnom čase",
|
||||
"Что такое бесплатная и премиум тема оформления CinemaPress?": "To, čo je zadarmo a prémia tému designu CinemaPress?"
|
||||
"Что такое бесплатная и премиум тема оформления CinemaPress?": "To, čo je zadarmo a prémia tému designu CinemaPress?",
|
||||
"Добавьте в парсинг хотя бы один веб-сайт": "Pridajte analýze najmenej jedna webe"
|
||||
}
|
|
@ -951,5 +951,6 @@
|
|||
"Название организации для поиска всех её IP": "Ime organizacije za iskanje vse svoje IP",
|
||||
"Добавить все IP": "Dodaj vse IP",
|
||||
"Поиск по WHOIS в реальном времени": "Iskanje WHOIS v realnem času",
|
||||
"Что такое бесплатная и премиум тема оформления CinemaPress?": "Kaj je brezplačna in premium dizajn tema CinemaPress?"
|
||||
"Что такое бесплатная и премиум тема оформления CinemaPress?": "Kaj je brezplačna in premium dizajn tema CinemaPress?",
|
||||
"Добавьте в парсинг хотя бы один веб-сайт": "Dodajte razčlenjevanju pri najmanj enem spletnem mestu"
|
||||
}
|
|
@ -951,5 +951,6 @@
|
|||
"Название организации для поиска всех её IP": "Emri i organizatës për të kërkuar për të gjithë IP saj",
|
||||
"Добавить все IP": "Shto të gjithë IP",
|
||||
"Поиск по WHOIS в реальном времени": "Kërko për WHOIS në kohë reale",
|
||||
"Что такое бесплатная и премиум тема оформления CinemaPress?": "Çfarë është falas dhe premium dizajn theme CinemaPress?"
|
||||
"Что такое бесплатная и премиум тема оформления CinemaPress?": "Çfarë është falas dhe premium dizajn theme CinemaPress?",
|
||||
"Добавьте в парсинг хотя бы один веб-сайт": "Shto analizë gramatikore të paktën një website"
|
||||
}
|
|
@ -951,5 +951,6 @@
|
|||
"Название организации для поиска всех её IP": "Назив организације да тражи све своје ИП",
|
||||
"Добавить все IP": "Додај све ИП",
|
||||
"Поиск по WHOIS в реальном времени": "Претрага за ВХОИС у реалном времену",
|
||||
"Что такое бесплатная и премиум тема оформления CinemaPress?": "Шта је слободан и премија дизајн тема ЦинемаПресс?"
|
||||
"Что такое бесплатная и премиум тема оформления CinemaPress?": "Шта је слободан и премија дизајн тема ЦинемаПресс?",
|
||||
"Добавьте в парсинг хотя бы один веб-сайт": "Додајте обрадом барем једном веб сајту"
|
||||
}
|
|
@ -951,5 +951,6 @@
|
|||
"Название организации для поиска всех её IP": "Namnet på organisationen för att söka efter alla sina IP",
|
||||
"Добавить все IP": "Lägg till alla IP",
|
||||
"Поиск по WHOIS в реальном времени": "Sök efter WHOIS i realtid",
|
||||
"Что такое бесплатная и премиум тема оформления CinemaPress?": "Vad är gratis och premium designtema CinemaPress?"
|
||||
"Что такое бесплатная и премиум тема оформления CinemaPress?": "Vad är gratis och premium designtema CinemaPress?",
|
||||
"Добавьте в парсинг хотя бы один веб-сайт": "Tillsätt tolkning åtminstone en webbplats"
|
||||
}
|
|
@ -951,5 +951,6 @@
|
|||
"Название организации для поиска всех её IP": "Jina la shirika kutafuta wote wa IP yake",
|
||||
"Добавить все IP": "Kuongeza IP kila",
|
||||
"Поиск по WHOIS в реальном времени": "Tafuta WHOIS katika muda halisi",
|
||||
"Что такое бесплатная и премиум тема оформления CinemaPress?": "Je bure na premium kubuni mandhari CinemaPress?"
|
||||
"Что такое бесплатная и премиум тема оформления CinemaPress?": "Je bure na premium kubuni mandhari CinemaPress?",
|
||||
"Добавьте в парсинг хотя бы один веб-сайт": "Kuongeza kuchanganua angalau tovuti"
|
||||
}
|
|
@ -951,5 +951,6 @@
|
|||
"Название организации для поиска всех её IP": "ชื่อขององค์กรในการค้นหาทั้งหมดของ IP ของ",
|
||||
"Добавить все IP": "เพิ่ม IP ทั้งหมด",
|
||||
"Поиск по WHOIS в реальном времени": "ค้นหา WHOIS ในเวลาจริง",
|
||||
"Что такое бесплатная и премиум тема оформления CinemaPress?": "อะไรคือสิ่งที่ฟรีและเบี้ย CinemaPress รูปแบบการออกแบบ?"
|
||||
"Что такое бесплатная и премиум тема оформления CinemaPress?": "อะไรคือสิ่งที่ฟรีและเบี้ย CinemaPress รูปแบบการออกแบบ?",
|
||||
"Добавьте в парсинг хотя бы один веб-сайт": "เพิ่มการแยกที่เว็บไซต์อย่างน้อยหนึ่งเว็บ"
|
||||
}
|
|
@ -951,5 +951,6 @@
|
|||
"Название организации для поиска всех её IP": "Kuruluşun adı onun tüm IP aramak için",
|
||||
"Добавить все IP": "Tüm IP Ekle",
|
||||
"Поиск по WHOIS в реальном времени": "Gerçek zamanlı olarak WHOIS ara",
|
||||
"Что такое бесплатная и премиум тема оформления CinemaPress?": "Özgür ve prim tasarım teması CinemaPress nedir?"
|
||||
"Что такое бесплатная и премиум тема оформления CinemaPress?": "Özgür ve prim tasarım teması CinemaPress nedir?",
|
||||
"Добавьте в парсинг хотя бы один веб-сайт": "Ayrıştırmayı ekle az bir websitesinde"
|
||||
}
|
|
@ -951,5 +951,6 @@
|
|||
"Название организации для поиска всех её IP": "Назва організації для пошуку всіх її IP",
|
||||
"Добавить все IP": "Додати всі IP",
|
||||
"Поиск по WHOIS в реальном времени": "Пошук по WHOIS в реальному часі",
|
||||
"Что такое бесплатная и премиум тема оформления CinemaPress?": "Що таке безкоштовна і преміум тема оформлення CinemaPress?"
|
||||
"Что такое бесплатная и премиум тема оформления CinemaPress?": "Що таке безкоштовна і преміум тема оформлення CinemaPress?",
|
||||
"Добавьте в парсинг хотя бы один веб-сайт": "Додайте в парсинг хоча б один веб-сайт"
|
||||
}
|
|
@ -951,5 +951,6 @@
|
|||
"Название организации для поиска всех её IP": "Tên của tổ chức để tìm kiếm cho tất cả các IP của nó",
|
||||
"Добавить все IP": "Thêm tất cả IP",
|
||||
"Поиск по WHOIS в реальном времени": "Tìm kiếm WHOIS trong thời gian thực",
|
||||
"Что такое бесплатная и премиум тема оформления CinemaPress?": "Miễn phí và phí bảo hiểm thiết kế theme CinemaPress là gì?"
|
||||
"Что такое бесплатная и премиум тема оформления CinemaPress?": "Miễn phí và phí bảo hiểm thiết kế theme CinemaPress là gì?",
|
||||
"Добавьте в парсинг хотя бы один веб-сайт": "Thêm phân tích tại một trang web nhất"
|
||||
}
|
|
@ -951,5 +951,6 @@
|
|||
"Название организации для поиска всех её IP": "搜索所有的IP的组织的名称",
|
||||
"Добавить все IP": "添加的所有IP",
|
||||
"Поиск по WHOIS в реальном времени": "搜索实时WHOIS",
|
||||
"Что такое бесплатная и премиум тема оформления CinemaPress?": "什么是免费的和付费的设计主题CinemaPress?"
|
||||
"Что такое бесплатная и премиум тема оформления CinemaPress?": "什么是免费的和付费的设计主题CinemaPress?",
|
||||
"Добавьте в парсинг хотя бы один веб-сайт": "添加解析至少一个网站"
|
||||
}
|
|
@ -774,13 +774,13 @@
|
|||
data.modules.mobile &&
|
||||
data.modules.mobile.data &&
|
||||
data.modules.mobile.data.subdomain &&
|
||||
parseInt(data.modules.mobile.data.subdomain) !== parseInt('<%- modules.mobile.data.subdomain %>')
|
||||
parseInt(data.modules.mobile.data.subdomain + '') !== parseInt('<%- modules.mobile.data.subdomain %>')
|
||||
) || (
|
||||
data.modules &&
|
||||
data.modules.tv &&
|
||||
data.modules.tv.data &&
|
||||
data.modules.tv.data.subdomain &&
|
||||
parseInt(data.modules.tv.data.subdomain) !== parseInt('<%- modules.tv.data.subdomain %>')
|
||||
parseInt(data.modules.tv.data.subdomain + '') !== parseInt('<%- modules.tv.data.subdomain %>')
|
||||
)
|
||||
) {
|
||||
self.innerHTML = '<span class="fa fa-save"></span> <%= __('Сохранить изменения') %>';
|
||||
|
|
Loading…
Reference in a new issue