Prepare dapostinstall v2

This commit is contained in:
Marek Miklewicz
2026-06-13 18:28:04 +02:00
parent 53db10cd17
commit 6c377b2242
9 changed files with 411 additions and 354 deletions
+2 -4
View File
@@ -3,13 +3,12 @@
#gedas@mc2.dev #gedas@mc2.dev
### VARS ### ### VARS ###
DEFAULTPACKAGE=NO_LIMIT DEFAULTPACKAGE=NO-LIMIT
DNSMASTER="185.242.132.100" # IP address of this server that should be used on the client host for multiserver DNSMASTER="185.242.132.100" # IP address of this server that should be used on the client host for multiserver
DNSSLAVE="193.178.43.30" # the second DNS server. This server should be able to login to DNSSLAVE via ssh DNSSLAVE="193.178.43.30" # the second DNS server. This server should be able to login to DNSSLAVE via ssh
DNSSLAVEPORT="22" # port for dnsslave DNSSLAVEPORT="22" # port for dnsslave
ADMINUSER="admin" # server main admin user ADMINUSER="admin" # server main admin user
TRUSTED_IPS="127.0.0.1,185.242.134.92,185.242.134.93,185.242.134.94,193.177.165.192,193.177.165.193,193.177.165.194,193.177.165.195,193.177.165.196" #comma s TRUSTED_IPS="127.0.0.1,185.242.134.92,185.242.134.93,185.242.134.94,193.177.165.192,193.177.165.193,193.177.165.194,193.177.165.195,193.177.165.196" # comma separated list of IP addresses
eparated list of IP addresses
### END VARS ### ### END VARS ###
######### FUNCTIONS ######### FUNCTIONS
@@ -1443,4 +1442,3 @@ case "$1" in
createemptybackup) createemptybackup ;; createemptybackup) createemptybackup ;;
*) listFunctions ;; *) listFunctions ;;
esac esac
+121 -294
View File
@@ -1,5 +1,7 @@
#!/bin/bash #!/bin/bash
# VERSION 1.7.8-10.04.2025 # VERSION 1.7.8-10.04.2025
set -euo pipefail
if [ -f "/var/log/dapostinstall.done" ]; then if [ -f "/var/log/dapostinstall.done" ]; then
echo -e "\e[31mSkrypt DApostinstall był już uruchomiony na tym serwerze - przerywam działanie.\e[0m" echo -e "\e[31mSkrypt DApostinstall był już uruchomiony na tym serwerze - przerywam działanie.\e[0m"
exit 1 exit 1
@@ -10,20 +12,75 @@ DADIR=/usr/local/directadmin
CBDIR=/usr/local/directadmin/custombuild CBDIR=/usr/local/directadmin/custombuild
LOG_FILE=/var/log/dapostinstall.log LOG_FILE=/var/log/dapostinstall.log
HTLINK="https://ht.zenadmin.pl" HTLINK="https://ht.zenadmin.pl"
MIN_PASSWORD_LENGTH=18 DEFAULT_NS1=dns3.hitme.net.pl
MAX_PASSWORD_LENGTH=24 DEFAULT_NS2=dns4.hitme.net.pl
ITERATION_LIMIT=100 SETUP_TXT="$DADIR/conf/setup.txt"
# PHP versions and extensions managed through DirectAdmin CustomBuild.
php1_release=8.3
php2_release=8.2
php3_release=8.1
php4_release=7.4
php5_release=no
php6_release=no
php7_release=no
php8_release=no
php9_release=no
ioncube=yes
zend=yes
opcache=yes
imap=yes
imagick=yes
configure_custombuild_php() {
local idx
local release
local release_var
cd "$CBDIR"
da build update
for idx in 1 2 3 4 5 6 7 8 9; do
release_var="php${idx}_release"
release="${!release_var}"
da build set "php${idx}_release" "$release"
if [[ "$release" != "no" ]]; then
da build set "php${idx}_mode" "php-fpm"
fi
done
da build php
da build rewrite_confs
}
build_php_extension() {
local enabled="$1"
local option="$2"
local target="$3"
[[ "$enabled" == "yes" ]] || return 0
cd "$CBDIR"
da build set "$option" yes
da build "$target"
}
exec > >(tee -ia "$LOG_FILE") 2>&1 exec > >(tee -ia "$LOG_FILE") 2>&1
cd $DAPOSTINSTALL_DIR cd "$DAPOSTINSTALL_DIR"
# shellcheck source=lib/common.sh
source "$DAPOSTINSTALL_DIR/lib/common.sh"
require_root
require_dir "$DADIR"
require_dir "$CBDIR"
require_file "$CBDIR/build"
require_file "$SETUP_TXT"
yum -y install epel-release yum -y install epel-release
yum -y install htop wget rsync nano mc ncdu borgbackup screen net-tools htop libmemcached libmemcached-devel yum -y install htop wget rsync nano mc ncdu borgbackup screen net-tools htop libmemcached libmemcached-devel
cp daupdate.sh /opt cp daupdate.sh /opt
chmod 700 /opt/daupdate.sh chmod 700 /opt/daupdate.sh
cd /opt/ cd /opt/
/opt/daupdate.sh update /opt/daupdate.sh update
cd $DAPOSTINSTALL_DIR cd "$DAPOSTINSTALL_DIR"
clear clear
cd $DAPOSTINSTALL_DIR cd "$DAPOSTINSTALL_DIR"
echo "Blokada logowania roota hasłem" echo "Blokada logowania roota hasłem"
sed -i '/PermitRootLogin yes/s/^#//g' /etc/ssh/sshd_config sed -i '/PermitRootLogin yes/s/^#//g' /etc/ssh/sshd_config
@@ -41,7 +98,7 @@ chmod 600 $DADIR/data/users/admin/packages.list
echo "NO-LIMIT" > $DADIR/data/users/admin/packages.list echo "NO-LIMIT" > $DADIR/data/users/admin/packages.list
chown -R diradmin:diradmin $DADIR/data/users/admin/packages* chown -R diradmin:diradmin $DADIR/data/users/admin/packages*
echo "Instalacja spolszczenia DirectAdmina" echo "Instalacja spolszczenia DirectAdmina"
echo "language=pl" >> $DADIR/conf/directadmin.conf echo "language=pl" >> "$DADIR/conf/directadmin.conf"
sed -i 's/language=en/language=pl/gI' $DADIR/data/users/admin/user.conf sed -i 's/language=en/language=pl/gI' $DADIR/data/users/admin/user.conf
sed -i 's/language=en/language=pl/gI' $DADIR/data/users/admin/user.conf sed -i 's/language=en/language=pl/gI' $DADIR/data/users/admin/user.conf
sed -i 's/language=en/language=pl/gI' $DADIR/data/users/admin/packages/NO-LIMIT.pkg sed -i 's/language=en/language=pl/gI' $DADIR/data/users/admin/packages/NO-LIMIT.pkg
@@ -79,51 +136,17 @@ cp pl.po login-pl.po $DADIR/data/skins/evolution/lang/
clear clear
PS3='Jaka skorke ustawic jako domyslna: '
options=("Enhanced" "Evolution")
select opt in "${options[@]}"
do
case $opt in
"Enhanced")
sed -i 's/evolution/enhanced/gI' $DADIR/conf/directadmin.conf
sed -i 's/evolution/enhanced/gI' $DADIR/data/users/admin/packages/NO-LIMIT.pkg
sed -i 's/evolution/enhanced/gI' $DADIR/data/users/admin/user.conf
systemctl restart directadmin
break
;;
"Evolution")
rm -f $DADIR/data/templates/custom/login.html rm -f $DADIR/data/templates/custom/login.html
echo "Skorka evolution zostala ustawiona jako domyslna" echo "Skorka evolution zostala ustawiona jako domyslna"
systemctl restart directadmin systemctl restart directadmin
break
;;
*) echo "Niewlasciwa opcja $REPLY";;
esac
done
echo "Wybierz tryb instalacji"
echo "Instalacja automatyczna instaluje wszystkie dodatki i przyjmuje domyslne ustawienia dla hitme."
echo "Instalacja niestandardowa pozwala pominac niektore komponenty, np. nie instalowac ModSecurity, okreslic inny niz 10022 port SSH czy serwery DNS niz standardowe dla hitme zadajac dodatkowe pytania podczas wykonywania skryptu"
PS3='Wybierz tryb instalacji: '
options=("Automatyczna" "Niestandardowa")
select opt in "${options[@]}"
do
case $opt in
"Automatyczna")
echo "Ustawienie DNSów hitme" echo "Ustawienie DNSów hitme"
sed -i "/ns1=/c\ns1=dns3.hitme.net.pl" $DADIR/conf/directadmin.conf set_key_value "$DADIR/conf/directadmin.conf" "ns1" "$DEFAULT_NS1"
sed -i "/ns2=/c\ns2=dns4.hitme.net.pl" $DADIR/conf/directadmin.conf set_key_value "$DADIR/conf/directadmin.conf" "ns2" "$DEFAULT_NS2"
sed -i "/ns1=/c\ns1=dns3.hitme.net.pl" $DADIR/data/users/admin/user.conf set_key_value "$DADIR/data/users/admin/user.conf" "ns1" "$DEFAULT_NS1"
sed -i "/ns2=/c\ns2=dns4.hitme.net.pl" $DADIR/data/users/admin/user.conf set_key_value "$DADIR/data/users/admin/user.conf" "ns2" "$DEFAULT_NS2"
sed -i "/ns1=/c\ns1=dns3.hitme.net.pl" $DADIR/data/users/admin/reseller.conf set_key_value "$DADIR/data/users/admin/reseller.conf" "ns1" "$DEFAULT_NS1"
sed -i "/ns2=/c\ns2=dns4.hitme.net.pl" $DADIR/data/users/admin/reseller.conf set_key_value "$DADIR/data/users/admin/reseller.conf" "ns2" "$DEFAULT_NS2"
systemctl restart directadmin systemctl restart directadmin
echo "Ustawienie domyslnego portu SSH na 10022" echo "Ustawienie domyslnego portu SSH na 10022"
@@ -185,205 +208,27 @@ echo "Instalacja Security headers"
cd $DAPOSTINSTALL_DIR cd $DAPOSTINSTALL_DIR
cat security-headers.conf >>/etc/httpd/conf/extra/httpd-includes.conf cat security-headers.conf >>/etc/httpd/conf/extra/httpd-includes.conf
cd $CBDIR cd $CBDIR
./build rewrite_confs da build rewrite_confs
cd $DAPOSTINSTALL_DIR cd $DAPOSTINSTALL_DIR
echo "Instalacja certyfikatu Let's Encrypt" echo "Instalacja certyfikatu Let's Encrypt"
$DADIR/scripts/letsencrypt.sh request_single `hostname` 4096 $DADIR/scripts/letsencrypt.sh request_single `hostname` 4096
break
;;
"Niestandardowa")
read -p "Podaj adres NS1 [dns3.hitme.net.pl]: " NS1_DEFAULT
NS1_DEFAULT=${NS1_DEFAULT:-dns3.hitme.net.pl}
read -p "Podaj adres NS2 [dns4.hitme.net.pl]: " NS2_DEFAULT
NS2_DEFAULT=${NS2_DEFAULT:-dns4.hitme.net.pl}
sed -i "/ns1=/c\ns1=$NS1_DEFAULT" $DADIR/conf/directadmin.conf
sed -i "/ns2=/c\ns2=$NS2_DEFAULT" $DADIR/conf/directadmin.conf
sed -i "/ns1=/c\ns1=$NS1_DEFAULT" $DADIR/data/users/admin/user.conf
sed -i "/ns2=/c\ns2=$NS2_DEFAULT" $DADIR/data/users/admin/user.conf
sed -i "/ns1=/c\ns1=$NS1_DEFAULT" $DADIR/data/users/admin/reseller.conf
sed -i "/ns2=/c\ns2=$NS2_DEFAULT" $DADIR/data/users/admin/reseller.conf
systemctl restart directadmin
read -p "Podaj port SSH [10022]: " SSH_PORT
SSH_PORT=${SSH_PORT:-10022}
sed -i '/Port 22/s/^#//g' /etc/ssh/sshd_config
sed -i "s/Port 22/Port $SSH_PORT/g" /etc/ssh/sshd_config
sed -i "s/,22,/,22,$SSH_PORT,/g" /etc/csf/csf.conf
while true; do
read -p "Czy aktywowac dodatkowe zabezpiecznia SSH (T/N)? " yn
case $yn in
[Tt] ) echo "Aktywacja dodatkowych zabezpieczen SSH"
tee -a /etc/ssh/sshd_config > /dev/null <<EOT
Match User root Address 185.242.134.0/24,185.242.133.37,185.242.134.92,185.242.134.93,193.177.165.192,193.177.165.193,193.177.165.194,193.177.165.195,193.177.165.196
PubkeyAuthentication yes
PasswordAuthentication yes
PermitRootLogin yes
EOT
break;;
[nN] ) echo "Pomijam aktywacje dodatkowych zabezpieczen SSH";
break;;
* ) echo "Niewlasciwa odpowiedz";;
esac
done
while true; do
read -p "Czy instalowac klucze logowania HITME do SSH (T/N)? " yn
case $yn in
[Tt] ) echo "Instaluje klucze logowania HITME do SSH"
cd /opt
sh daupdate keyput
break;;
[nN] ) echo "Pomijam instalacje kluczy logowania do SSH";
break;;
* ) echo "Niewlasciwa odpowiedz";;
esac
done
while true; do
read -p "Czy instalowac klucze logowania HITME do DirectAdmina (T/N)? " yn
case $yn in
[Tt] ) echo "Instaluje klucze logowania HITME do DirectAdmina"
cd /opt
sh daupdate klucze
break;;
[nN] ) echo "Pomijam instalacje kluczy logowania do DirectAdmina";
break;;
* ) echo "Niewlasciwa odpowiedz";;
esac
done
echo "Instalacja ModSecurity"
while true; do
read -p "Czy instalowac ModSecurity z reglłkami Malware Experts (T/N)? " yn
case $yn in
[Tt] ) echo "Instaluje ModSecurity + Malware Experts"
wget $HTLINK/hitmemodsec.sh -O /opt/hitmemodsec.sh
sh /opt/hitmemodsec.sh
rm -f hitmemodsec.sh
daupdate antybots
break;;
[nN] ) echo "Pomijam instalacje ModSecurity";
break;;
* ) echo "Niewlasciwa odpowiedz";;
esac
done
while true; do
read -p "Czy instalowac brandowanie hitme dla skorki evolution i serwera www (T/N)? " yn
case $yn in
[Tt] ) echo "Instaluje branowanie hitme dla skorki evolution"
cd $DAPOSTINSTALL_DIR
tar -xvf skin_customizations.tar -C $DADIR/data/users/admin/
wget https://cdn.hitme.pl/da_templates.tar
tar -xf da_templates.tar
cp da_templates/*[1-9]* /home/admin/domains/default/
cp da_templates/index.html /home/admin/domains/default/index.html
cp da_templates/suspended.shtml /home/admin/domains/suspended/index.html
cp da_templates/index-hitme.html /var/www/html/index.html
cd $DAPOSTINSTALL_DIR
break;;
[nN] ) echo "Pomijam instalacje brandowania hitme dla skorki evolution";
break;;
* ) echo "Niewlasciwa odpowiedz";;
esac
done
echo "Certyfikat SSL dla DirectAdmina"
while true; do
read -p "Czy instalowac Let's Encrypt dla DirectAdmina dla hostname `hostname` (T/N)? " yn
case $yn in
[Tt] ) echo "Instaluje Let's encrypt"
$DADIR/scripts/letsencrypt.sh request_single `hostname` 4096
break;;
[nN] ) echo "Pomijam instalacje Let's Encrypt";
break;;
* ) echo "Niewlasciwa odpowiedz";;
esac
done
while true; do
read -p "Czy instalowac Security Headers (T/N)? " yn
case $yn in
[Tt] ) echo "Instalacja Security Headers?"
cd $DAPOSTINSTALL_DIR
cat security-headers.conf >>/etc/httpd/conf/extra/httpd-includes.conf
cd $CBDIR
./build rewrite_confs
cd $DAPOSTINSTALL_DIR
break;;
[nN] ) echo "Pomijam instalacje Security Headers";
break;;
* ) echo "Niewlasciwa odpowiedz";;
esac
done
break
;;
*) echo "Niewlasciwa opcja $REPLY";;
esac
done
echo -e "\e[96mMam wszystkie informacje - rozpoczynam konfiguracje\e[0m" echo -e "\e[96mMam wszystkie informacje - rozpoczynam konfiguracje\e[0m"
echo "Konfiguracja i kompilacja PHP"
configure_custombuild_php
echo "Generowanie maila powitalnego" echo "Generowanie maila powitalnego"
cd $DAPOSTINSTALL_DIR cd $DAPOSTINSTALL_DIR
chmod 755 da_cli.sh chmod 755 da_cli.sh
echo "Generowanie hasla DirectAdmin" echo "Pobieranie hasla DirectAdmin z $SETUP_TXT"
count=0 DA_ADMINPASS=$(get_key_value "$SETUP_TXT" "adminpass")
DA_ADMINPASS=$(
while true; do
((count++))
[ "$count" -gt "$ITERATION_LIMIT" ] && { echo "Błąd: przekroczono limit iteracji generowania hasła" >&2; exit 1; }
base_part=$(tr -dc '[:alnum:]' < /dev/urandom | tr -d 'oO0l1I' | fold -w "$((RANDOM % (MAX_PASSWORD_LENGTH - MIN_PASSWORD_LENGTH + 1) + MIN_PASSWORD_LENGTH))" | head -n1)
special_char=$(tr -dc '[:graph:]' < /dev/urandom | tr -d '#|oO0l1I' | fold -w 1 | head -n1)
special_index=$((RANDOM % ${#base_part}))
password="${base_part:0:special_index}${special_char}${base_part:special_index}"
if echo "$password" | grep -qP '^(?=.*[[:digit:]])(?=.*[[:upper:]])(?=.*[^[:alnum:]]).+$'; then
echo "$password"
break
fi
done
)
DA_OPTIONSCONF=$CBDIR/options.conf DA_OPTIONSCONF=$CBDIR/options.conf
DA_USERCONF=$DADIR/data/users/admin/user.conf DA_USERCONF=$DADIR/data/users/admin/user.conf
@@ -392,53 +237,35 @@ DA_HOSTNAME=$(hostname -f)
DA_IP=$(cat "$DA_USERCONF" | grep 'ip=' | cut -d= -f2) DA_IP=$(cat "$DA_USERCONF" | grep 'ip=' | cut -d= -f2)
DA_NS1=$(cat "$DA_USERCONF" | grep 'ns1=' | cut -d= -f2) DA_NS1=$(cat "$DA_USERCONF" | grep 'ns1=' | cut -d= -f2)
DA_NS2=$(cat "$DA_USERCONF" | grep 'ns2=' | cut -d= -f2) DA_NS2=$(cat "$DA_USERCONF" | grep 'ns2=' | cut -d= -f2)
DA_PHP_LIST=$(get_php_release_list "$DA_OPTIONSCONF")
DA_PHP1=$(cat "$DA_OPTIONSCONF" | grep 'php1_release=' | cut -d= -f2) export DA_HOSTNAME
DA_PHP2=$(cat "$DA_OPTIONSCONF" | grep 'php2_release=' | cut -d= -f2) export DA_IP
DA_PHP3=$(cat "$DA_OPTIONSCONF" | grep 'php3_release=' | cut -d= -f2) export DA_NS1
DA_PHP4=$(cat "$DA_OPTIONSCONF" | grep 'php4_release=' | cut -d= -f2) export DA_NS2
DA_PHP5=$(cat "$DA_OPTIONSCONF" | grep 'php5_release=' | cut -d= -f2) export DA_ADMINPASS
DA_PHP6=$(cat "$DA_OPTIONSCONF" | grep 'php6_release=' | cut -d= -f2) export DA_HASLO="$DA_ADMINPASS"
DA_PHP7=$(cat "$DA_OPTIONSCONF" | grep 'php7_release=' | cut -d= -f2) export SSH_PORT
DA_PHP8=$(cat "$DA_OPTIONSCONF" | grep 'php8_release=' | cut -d= -f2) export DA_PHP_LIST
DA_PHP9=$(cat "$DA_OPTIONSCONF" | grep 'php9_release=' | cut -d= -f2)
sed -i 's/DA_HOSTNAME/'"$DA_HOSTNAME"'/g' mail_powitalny.txt
sed -i 's/DA_HOSTNAME/'"$DA_HOSTNAME"'/g' options.conf sed -i 's/DA_HOSTNAME/'"$DA_HOSTNAME"'/g' options.conf
sed -i 's/DA_IP/'"$DA_IP"'/g' mail_powitalny.txt render_template "$DAPOSTINSTALL_DIR/mail_powitalny.txt" "/root/mail_powitalny.txt"
sed -i 's/DA_NS1/'"$DA_NS1"'/g' mail_powitalny.txt
sed -i 's/DA_NS2/'"$DA_NS2"'/g' mail_powitalny.txt
sed -i 's/DA_HASLO/'"$DA_ADMINPASS"'/g' mail_powitalny.txt
sed -i 's/SSH_PORT/'"$SSH_PORT"'/g' mail_powitalny.txt
sed -i 's/DA_PHP1/'"$DA_PHP1"'/g' mail_powitalny.txt
sed -i 's/DA_PHP2/'"$DA_PHP2"'/g' mail_powitalny.txt
sed -i 's/DA_PHP3/'"$DA_PHP3"'/g' mail_powitalny.txt
sed -i 's/DA_PHP4/'"$DA_PHP4"'/g' mail_powitalny.txt
sed -i 's/DA_PHP5/'"$DA_PHP5"'/g' mail_powitalny.txt
sed -i 's/DA_PHP6/'"$DA_PHP6"'/g' mail_powitalny.txt
sed -i 's/DA_PHP7/'"$DA_PHP7"'/g' mail_powitalny.txt
sed -i 's/DA_PHP8/'"$DA_PHP8"'/g' mail_powitalny.txt
sed -i 's/DA_PHP9/'"$DA_PHP9"'/g' mail_powitalny.txt
mv mail_powitalny.txt /root
echo "instalacja SpamBlocker" echo "instalacja SpamBlocker"
cd $CBDIR cd $CBDIR
./build update da build update
./build set eximconf yes da build set eximconf yes
./build set eximconf_release 4.5 da build set blockcracking yes
./build set blockcracking yes da build set easy_spam_fighter yes
./build set easy_spam_fighter yes da build set spamd spamassassin
./build set spamd spamassassin da build set exim yes
./build set exim yes da build exim
./build exim da build set dovecot_conf yes
./build set dovecot_conf yes da build dovecot_conf
./build dovecot_conf da build spamassassin
./build spamassassin da build update
./build update da build exim_conf
./build exim_conf
systemctl enable spamassassin systemctl enable spamassassin
systemctl restart spamd systemctl restart spamd
@@ -469,25 +296,25 @@ cd $DADIR
./directadmin set one_click_webmail_login 1 ./directadmin set one_click_webmail_login 1
service directadmin restart service directadmin restart
cd custombuild cd custombuild
./build update da build update
./build dovecot_conf da build dovecot_conf
./build exim_conf da build exim_conf
./build roundcube da build roundcube
echo "OneClick PhpMyAdmin" echo "OneClick PhpMyAdmin"
cd $DADIR/ cd $DADIR/
./directadmin set one_click_pma_login 1 ./directadmin set one_click_pma_login 1
systemctl restart directadmin systemctl restart directadmin
cd custombuild cd custombuild
./build update da build update
./build phpmyadmin da build phpmyadmin
echo "PhpMyAdmin tylko z poziomu DirectAdmina" echo "PhpMyAdmin tylko z poziomu DirectAdmina"
cd $CBDIR cd $CBDIR
./build update da build update
./build set phpmyadmin_public no da build set phpmyadmin_public no
./build phpmyadmin da build phpmyadmin
systemctl restart directadmin systemctl restart directadmin
cd $DAPOSTINSTALL_DIR cd $DAPOSTINSTALL_DIR
@@ -505,23 +332,24 @@ mkdir -p $CBDIR/custom/ap2/conf/extra
cp -Rfp /etc/httpd/conf/extra/httpd-alias.conf $CBDIR/custom/ap2/conf/extra cp -Rfp /etc/httpd/conf/extra/httpd-alias.conf $CBDIR/custom/ap2/conf/extra
echo "Alias /.well-known/autoconfig /var/www/html/.well-known/autoconfig" >> $CBDIR/custom/ap2/conf/extra/httpd-alias.conf echo "Alias /.well-known/autoconfig /var/www/html/.well-known/autoconfig" >> $CBDIR/custom/ap2/conf/extra/httpd-alias.conf
echo "Alias /poczta /var/www/html/roundcube" >> $CBDIR/custom/ap2/conf/extra/httpd-alias.conf echo "Alias /poczta /var/www/html/roundcube" >> $CBDIR/custom/ap2/conf/extra/httpd-alias.conf
$CBDIR/build rewrite_confs da build rewrite_confs
echo "Instalacja Imagick i WebP" echo "Instalacja zaleznosci Imagick i WebP"
cd $DAPOSTINSTALL_DIR cd $DAPOSTINSTALL_DIR
if [[ "$imagick" == "yes" ]]; then
dnf -y install mesa-libGL giflib freeglut dnf -y install mesa-libGL giflib freeglut
# rpm -ivh libwebp-tools-1.0.0-8.el8_7.x86_64.rpm # rpm -ivh libwebp-tools-1.0.0-8.el8_7.x86_64.rpm
dnf config-manager --set-enabled crb dnf config-manager --set-enabled crb
dnf install -y giflib-devel dnf install -y giflib-devel
dnf -y install libwebp-devel libjpeg-devel libpng-devel libwebp-tools giflib libvpx libvpx-devel libtiff-devel libXpm-devel libpng-devel ImageMagick-devel dnf -y install libwebp-devel libjpeg-devel libpng-devel libwebp-tools giflib libvpx libvpx-devel libtiff-devel libXpm-devel libpng-devel ImageMagick-devel
# $CBDIR/build set imagick yes fi
# $CBDIR/build imagick
sed -i 's/imagick=no/imagick=yes/g' /usr/local/directadmin/custombuild/options.conf
da build imagick
echo "Instalacja IMAP" echo "Instalacja rozszerzen PHP z CustomBuild"
sed -i 's/imap=no/imap=yes/gI' $CBDIR/options.conf build_php_extension "$ioncube" "ioncube" "ioncube"
$CBDIR/build php_imap build_php_extension "$zend" "zend" "zend"
build_php_extension "$opcache" "opcache" "opcache"
build_php_extension "$imap" "php_imap" "php_imap"
build_php_extension "$imagick" "imagick" "imagick"
echo "Instalacja Memcache i redis" echo "Instalacja Memcache i redis"
yum -y install memcached libmemcached yum -y install memcached libmemcached
@@ -539,7 +367,7 @@ cd $DAPOSTINSTALL_DIR
cd $CBDIR cd $CBDIR
touch custom/php_disable_functions touch custom/php_disable_functions
echo "exec,system,passthru,shell_exec,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname" > custom/php_disable_functions echo "exec,system,passthru,shell_exec,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname" > custom/php_disable_functions
./build secure_php da build secure_php
# Poprawka redis dla AlmaLinux 9 # Poprawka redis dla AlmaLinux 9
if grep -q "AlmaLinux release 9" /etc/redhat-release; then if grep -q "AlmaLinux release 9" /etc/redhat-release; then
@@ -561,12 +389,12 @@ echo '_dmarc="v=DMARC1;p=quarantine;pct=100;sp=none;fo=0:d:s;aspf=s;adkim=r;"' >
echo "Dopuszczenie wszystkich metod HTTPD" echo "Dopuszczenie wszystkich metod HTTPD"
cd $CBDIR cd $CBDIR
./build set http_methods ALL da build set http_methods ALL
./build rewrite_confs da build rewrite_confs
echo "Instalacja composera" echo "Instalacja composera"
cd $CBDIR cd $CBDIR
./build composer da build composer
cd $DAPOSTINSTALL_DIR cd $DAPOSTINSTALL_DIR
echo "Instalacja wp-cli" echo "Instalacja wp-cli"
@@ -629,7 +457,6 @@ echo "dodaje JIT dla PHP"
sh php_zmienne.sh sh php_zmienne.sh
sh da_cli.sh disablemultiserverpage sh da_cli.sh disablemultiserverpage
sh da_cli.sh disablecreateadmin sh da_cli.sh disablecreateadmin
sh da_cli.sh changeuserpass admin $DA_ADMINPASS
sh da_cli.sh createemptybackup sh da_cli.sh createemptybackup
+22
View File
@@ -0,0 +1,22 @@
# Status tlumaczenia skorki enhanced
Porownanie wykonane pomiedzy:
- angielska skorka: `/Users/marek/GPT/ChatGPT/dapostinstall/enhanced/lang/en`
- polskie tlumaczenie: `spolszczenie_enhanced.tar.gz` -> `pl/`
Stan po aktualizacji:
- brakujace pliki wzgledem `lang/en`: 0
- brakujace klucze `LANG_*`: 0
Dodano brakujace pliki:
- `pl/admin/admin_ssl.html`
- `pl/user/dnsprovider.html`
- `pl/user/mod_security.html`
- `pl/user/php_settings.html`
Uzupelniono brakujace klucze w istniejacych plikach, w tym obszary SSL/ACME/HSTS, ModSecurity, DNS Provider, limity wysylki, licencja, Rspamd, PHP Settings oraz nowe pozycje menu.
Uwaga: polskie archiwum nadal zawiera starsze pliki, ktorych nie ma w aktualnym `lang/en`, m.in. katalog `internal/`, obrazki i kilka starszych plikow user-level. Nie blokuje to kompletności aktualnych kluczy `LANG_*`.
+2 -2
View File
@@ -1,6 +1,6 @@
PLUGIN_HOME_TITLE="Migracja poczty za pomocą IMAPSync"; PLUGIN_HOME_TITLE="Migracja poczty za pomocą IMAPSync";
PLUGIN_DESC_HEADER=""; PLUGIN_DESC_HEADER="";
PLUGIN_HOME_DESCRIPTION="Ta strona wyświetla wszystkie migracje skrzynek pocztowych z wykorzystaniem narzędzia IMAPSync. Nowe migracje mogą zostać rozpoczęte za pomocą przycisku "Nowa Migracja Skrzynki e-mail" lub "Nowa Migracja Wielu Skrzynek e-mail.<br><br>zobacz zakończone migracje dostępne w <a href='/CMD_TICKET?sort1=-1' target='_top' id='px_message_link'>Centrum Wiadomości</a>"; PLUGIN_HOME_DESCRIPTION="Ta strona wyświetla wszystkie migracje skrzynek pocztowych z wykorzystaniem narzędzia IMAPSync. Nowe migracje mogą zostać rozpoczęte za pomocą przycisku \"Nowa Migracja Skrzynki e-mail\" lub \"Nowa Migracja Wielu Skrzynek e-mail\".<br><br>zobacz zakończone migracje dostępne w <a href='/CMD_TICKET?sort1=-1' target='_top' id='px_message_link'>Centrum Wiadomości</a>";
PLUGIN_ACCESS_DENIED="Nie masz uprawnień do korzystania z tej strony! Skontaktuj się z administratorem aby uzyskać więcej informacje."; PLUGIN_ACCESS_DENIED="Nie masz uprawnień do korzystania z tej strony! Skontaktuj się z administratorem aby uzyskać więcej informacje.";
PLUGIN_IMPORT_LINK="Nowa Migracja Skrzynki E-mail"; PLUGIN_IMPORT_LINK="Nowa Migracja Skrzynki E-mail";
@@ -57,7 +57,7 @@ PLUGIN_BUTTON_TITLE2="Rozpoczynam Migrację";
PLUGIN_NO_DATA="Nie ma jeszcze nic do pokazania"; PLUGIN_NO_DATA="Nie ma jeszcze nic do pokazania";
PLUGIN_LOGS_NOT_FOUND_ERROR="Żądane logi nie zostały odnalezione na serwerze; PLUGIN_LOGS_NOT_FOUND_ERROR="Żądane logi nie zostały odnalezione na serwerze";
PLUGIN_REMOVED_LOGS_ERROR="Błąd podczas usuwania wybranych logów z serwera "; PLUGIN_REMOVED_LOGS_ERROR="Błąd podczas usuwania wybranych logów z serwera ";
PLUGIN_EMPTY_BAD_DATA_ERROR="Otrzymano puste lub uszkodzone dane z serwera."; PLUGIN_EMPTY_BAD_DATA_ERROR="Otrzymano puste lub uszkodzone dane z serwera.";
PLUGIN_SAVED_TASK_ERROR="Błąd podczas dodawania zadania proszę spróbować później."; PLUGIN_SAVED_TASK_ERROR="Błąd podczas dodawania zadania proszę spróbować później.";
+87
View File
@@ -0,0 +1,87 @@
#!/usr/bin/env bash
log() {
printf '[%s] %s\n' "$(date '+%Y-%m-%d %H:%M:%S')" "$*"
}
fail() {
printf 'ERROR: %s\n' "$*" >&2
exit 1
}
run_step() {
local message="$1"
shift
log "$message"
"$@"
}
require_root() {
[[ "${EUID}" -eq 0 ]] || fail "Ten skrypt musi byc uruchomiony jako root."
}
require_file() {
local path="$1"
[[ -f "$path" ]] || fail "Brak wymaganego pliku: $path"
}
require_dir() {
local path="$1"
[[ -d "$path" ]] || fail "Brak wymaganego katalogu: $path"
}
set_key_value() {
local path="$1"
local key="$2"
local value="$3"
touch "$path"
if grep -qE "^${key}=" "$path"; then
sed -i -E "s|^${key}=.*|${key}=${value}|" "$path"
else
printf '%s=%s\n' "$key" "$value" >> "$path"
fi
}
get_key_value() {
local path="$1"
local key="$2"
local value
value="$(grep -m1 -E "^${key}=" "$path" | cut -d= -f2-)"
[[ -n "$value" ]] || fail "Brak wartosci $key w $path"
printf '%s\n' "$value"
}
get_optional_key_value() {
local path="$1"
local key="$2"
grep -m1 -E "^${key}=" "$path" | cut -d= -f2- || true
}
get_php_release_list() {
local path="$1"
local value
local first=1
local idx
for idx in 1 2 3 4 5 6 7 8 9; do
value="$(get_optional_key_value "$path" "php${idx}_release")"
[[ -n "$value" && "$value" != "no" ]] || continue
if [[ "$first" -eq 1 ]]; then
printf 'PHP %s (domyślna)' "$value"
first=0
else
printf '\nPHP %s' "$value"
fi
done
}
render_template() {
local template="$1"
local output="$2"
perl -pe 's/\{\{([A-Z0-9_]+)\}\}/exists $ENV{$1} ? $ENV{$1} : $&/ge' "$template" > "$output"
}
+11 -19
View File
@@ -12,29 +12,29 @@ i zarządzać backupami. Opcję można skonfigurować tak, aby było to robione
W razie potrzeby dostosowania indywidualnych ustawień, czy też konfiguracji usługi zapraszam do kontaktu. W razie potrzeby dostosowania indywidualnych ustawień, czy też konfiguracji usługi zapraszam do kontaktu.
DANE DO PANELU DIRECTADMIN DANE DO PANELU DIRECTADMIN
Adres do panelu: https://DA_HOSTNAME:2222 Adres do panelu: https://{{DA_HOSTNAME}}:2222
Login administratora: admin Login administratora: admin
Hasło administratora: DA_HASLO Hasło administratora: {{DA_HASLO}}
Adres IP serwera: DA_IP Adres IP serwera: {{DA_IP}}
Port SSH: SSH_PORT Port SSH: {{SSH_PORT}}
Server Hostname: DA_HOSTNAME Server Hostname: {{DA_HOSTNAME}}
Logując się na konto administratora, jeżeli chcemy dodawać użytkowników, należy na poziomie administratora skorzystać z opcji "Dodaj użytkownika." Standardowo użytkownik ma nieograniczoną powierzchnie serwera jak również inne parametry takie jak ilość domen, ilość baz danych czy ilość kont e-maili Logując się na konto administratora, jeżeli chcemy dodawać użytkowników, należy na poziomie administratora skorzystać z opcji "Dodaj użytkownika." Standardowo użytkownik ma nieograniczoną powierzchnie serwera jak również inne parametry takie jak ilość domen, ilość baz danych czy ilość kont e-maili
W ten sposób można zakładać końcowych userów, którym można wydzielać: przestrzeń dyskową, transfer W ten sposób można zakładać końcowych userów, którym można wydzielać: przestrzeń dyskową, transfer
bazy danych, ftp, ilość domen, limity, a co najważniejsze dostęp do panelu, do którego będzie można logować się poprzez adres bazy danych, ftp, ilość domen, limity, a co najważniejsze dostęp do panelu, do którego będzie można logować się poprzez adres
np. http://zaparkowanadomena.pl:2222 lub poprzez adres https://DA_HOSTNAME:2222 jak powyżej. np. http://zaparkowanadomena.pl:2222 lub poprzez adres https://{{DA_HOSTNAME}}:2222 jak powyżej.
POCZTA POCZTA
Po podpięciu domeny i stworzeniu kont pocztowych można korzystać z klientów webowych, czyli webmail (link dostępny w panelu DA) Po podpięciu domeny i stworzeniu kont pocztowych można korzystać z klientów webowych, czyli webmail (link dostępny w panelu DA)
lub logując się bezpośrednio do poczty z adresu: lub logując się bezpośrednio do poczty z adresu:
https://DA_HOSTNAME/poczta (nazwę DA_HOSTNAME można zastąpić nazwą domeny po jej zaparkowaniu). https://{{DA_HOSTNAME}}/poczta (nazwę {{DA_HOSTNAME}} można zastąpić nazwą domeny po jej zaparkowaniu).
Jeśli chcecie Państwo skorzystać z poczty poprzez programy pocztowe takie jak: Outlook czy Mozilla Thunderbird należy użyć następujących danych w programie pocztowym Jeśli chcecie Państwo skorzystać z poczty poprzez programy pocztowe takie jak: Outlook czy Mozilla Thunderbird należy użyć następujących danych w programie pocztowym
Nazwa użytkownika (Login): Pełen adres e-mail do skrzynki Nazwa użytkownika (Login): Pełen adres e-mail do skrzynki
Hasło: Hasło, które zostało podane podczas zakładania skrzynki: Hasło: Hasło, które zostało podane podczas zakładania skrzynki:
Adres Serwera dla POP / IMAP oraz SMTP: DA_HOSTNAME Adres Serwera dla POP / IMAP oraz SMTP: {{DA_HOSTNAME}}
Port serwera POP3: 995 (Szyfrowanie SSL / TLS) Port serwera POP3: 995 (Szyfrowanie SSL / TLS)
Port serwera IMAP: 993 (Szyfrowanie SSL/TLS) Port serwera IMAP: 993 (Szyfrowanie SSL/TLS)
Port SMTP: 465 (szyfrowanie SSL) lub 587 (Szyfrowanie TLS) Port SMTP: 465 (szyfrowanie SSL) lub 587 (Szyfrowanie TLS)
@@ -43,23 +43,15 @@ Port SMTP: 465 (szyfrowanie SSL) lub 587 (Szyfrowanie TLS)
DNS DNS
Adresy DNS, na które należy oddelegować domeny do zaparkowania, dodane w panelu DirectAdmin. Adresy DNS, na które należy oddelegować domeny do zaparkowania, dodane w panelu DirectAdmin.
dns3.hitme.net.pl ip: 185.242.132.100 {{DA_NS1}}
dns4.hitme.net.pl ip: 193.178.43.30 {{DA_NS2}}
Tak oto przygotowana domena będzie można oddelegować na dane DNSy u operatora, u którego jest wykupiona domena. Tak oto przygotowana domena będzie można oddelegować na dane DNSy u operatora, u którego jest wykupiona domena.
Po zmianie dnsów, domena będzie działać i wyświetlać się z serwera. Po zmianie dnsów, domena będzie działać i wyświetlać się z serwera.
Zmiana wersji PHP oraz Wiki Zmiana wersji PHP oraz Wiki
Na serwerze zainstalowane są następujące wersje PHP Na serwerze zainstalowane są następujące wersje PHP
PHP DA_PHP1 (domyślna) {{DA_PHP_LIST}}
PHP DA_PHP2
PHP DA_PHP3
PHP DA_PHP4
PHP DA_PHP5
PHP DA_PHP6
PHP DA_PHP7
PHP DA_PHP8
PHP DA_PHP9
Zmiana domyślnej wersji PHP możliwa jest dla każdej domeny z poziomu panelu DirectAdmin zgodnie z poradnikiem pod adresem: https://wiki.hitme.pl/pomoc/hosting-dedykowany/php/zmiana-wersji-php-w-panelu-directadmin/ Zmiana domyślnej wersji PHP możliwa jest dla każdej domeny z poziomu panelu DirectAdmin zgodnie z poradnikiem pod adresem: https://wiki.hitme.pl/pomoc/hosting-dedykowany/php/zmiana-wersji-php-w-panelu-directadmin/
Jeśli potrzebna jest inna wersja PHP prosimy o kontakt z naszym supportem. Jeśli potrzebna jest inna wersja PHP prosimy o kontakt z naszym supportem.
Binary file not shown.
+161
View File
@@ -0,0 +1,161 @@
#!/usr/bin/env bash
set -euo pipefail
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
fail() {
echo "FAIL: $*" >&2
exit 1
}
assert_file_contains() {
local file="$1"
local pattern="$2"
grep -qE "$pattern" "$file" || fail "$file does not contain pattern: $pattern"
}
assert_file_not_contains() {
local file="$1"
local pattern="$2"
if grep -qE "$pattern" "$file"; then
fail "$file contains forbidden pattern: $pattern"
fi
}
assert_bash_syntax() {
local file="$1"
bash -n "$file" || fail "$file has invalid bash syntax"
}
assert_bash_syntax "$ROOT_DIR/dapostinstall.sh"
assert_bash_syntax "$ROOT_DIR/da_cli.sh"
assert_bash_syntax "$ROOT_DIR/daupdate.sh"
php -l "$ROOT_DIR/lang_pl.php" >/dev/null || fail "lang_pl.php has invalid PHP syntax"
assert_file_contains "$ROOT_DIR/da_cli.sh" '^DEFAULTPACKAGE=NO-LIMIT$'
assert_file_not_contains "$ROOT_DIR/da_cli.sh" '^eparated list of IP addresses$'
assert_file_not_contains "$ROOT_DIR/dapostinstall.sh" 'c\\ns1='
assert_file_not_contains "$ROOT_DIR/dapostinstall.sh" 'c\\ns2='
assert_file_contains "$ROOT_DIR/dapostinstall.sh" 'set_key_value "\$DADIR/conf/directadmin\.conf" "ns1"'
assert_file_contains "$ROOT_DIR/dapostinstall.sh" 'set_key_value "\$DADIR/conf/directadmin\.conf" "ns2"'
assert_file_contains "$ROOT_DIR/dapostinstall.sh" '^DEFAULT_NS1=dns3\.hitme\.net\.pl$'
assert_file_contains "$ROOT_DIR/dapostinstall.sh" '^DEFAULT_NS2=dns4\.hitme\.net\.pl$'
assert_file_contains "$ROOT_DIR/dapostinstall.sh" '^php1_release='
assert_file_contains "$ROOT_DIR/dapostinstall.sh" '^php2_release='
assert_file_contains "$ROOT_DIR/dapostinstall.sh" '^php9_release='
assert_file_contains "$ROOT_DIR/dapostinstall.sh" '^ioncube=yes$'
assert_file_contains "$ROOT_DIR/dapostinstall.sh" '^zend=yes$'
assert_file_contains "$ROOT_DIR/dapostinstall.sh" '^opcache=yes$'
assert_file_contains "$ROOT_DIR/dapostinstall.sh" '^imap=yes$'
assert_file_contains "$ROOT_DIR/dapostinstall.sh" '^imagick=yes$'
assert_file_contains "$ROOT_DIR/dapostinstall.sh" '^SETUP_TXT="\$DADIR/conf/setup\.txt"$'
assert_file_contains "$ROOT_DIR/dapostinstall.sh" 'require_file "\$SETUP_TXT"'
assert_file_contains "$ROOT_DIR/dapostinstall.sh" 'DA_ADMINPASS=\$\(get_key_value "\$SETUP_TXT" "adminpass"\)'
assert_file_contains "$ROOT_DIR/dapostinstall.sh" 'set_key_value "\$DADIR/conf/directadmin\.conf" "ns1" "\$DEFAULT_NS1"'
assert_file_contains "$ROOT_DIR/dapostinstall.sh" 'set_key_value "\$DADIR/conf/directadmin\.conf" "ns2" "\$DEFAULT_NS2"'
assert_file_not_contains "$ROOT_DIR/dapostinstall.sh" 'MIN_PASSWORD_LENGTH'
assert_file_not_contains "$ROOT_DIR/dapostinstall.sh" 'MAX_PASSWORD_LENGTH'
assert_file_not_contains "$ROOT_DIR/dapostinstall.sh" 'ITERATION_LIMIT'
assert_file_not_contains "$ROOT_DIR/dapostinstall.sh" '/dev/urandom'
assert_file_not_contains "$ROOT_DIR/dapostinstall.sh" 'changeuserpass admin'
assert_file_contains "$ROOT_DIR/dapostinstall.sh" '^configure_custombuild_php\(\) \{$'
assert_file_contains "$ROOT_DIR/dapostinstall.sh" 'release_var="php\$\{idx\}_release"'
assert_file_contains "$ROOT_DIR/dapostinstall.sh" 'release="\$\{!release_var\}"'
assert_file_contains "$ROOT_DIR/dapostinstall.sh" 'da build set "php\$\{idx\}_release" "\$release"'
assert_file_contains "$ROOT_DIR/dapostinstall.sh" 'da build set "php\$\{idx\}_mode" "php-fpm"'
assert_file_contains "$ROOT_DIR/dapostinstall.sh" 'da build php'
assert_file_contains "$ROOT_DIR/dapostinstall.sh" 'da build rewrite_confs'
assert_file_not_contains "$ROOT_DIR/dapostinstall.sh" 'eximconf_release'
assert_file_not_contains "$ROOT_DIR/dapostinstall.sh" '\./build'
assert_file_not_contains "$ROOT_DIR/dapostinstall.sh" '^[[:space:]]*\$CBDIR/build'
assert_file_contains "$ROOT_DIR/dapostinstall.sh" 'da build set eximconf yes'
assert_file_contains "$ROOT_DIR/dapostinstall.sh" 'da build exim_conf'
assert_file_contains "$ROOT_DIR/dapostinstall.sh" 'build_php_extension "\$ioncube" "ioncube" "ioncube"'
assert_file_contains "$ROOT_DIR/dapostinstall.sh" 'build_php_extension "\$zend" "zend" "zend"'
assert_file_contains "$ROOT_DIR/dapostinstall.sh" 'build_php_extension "\$opcache" "opcache" "opcache"'
assert_file_contains "$ROOT_DIR/dapostinstall.sh" 'build_php_extension "\$imap" "php_imap" "php_imap"'
assert_file_contains "$ROOT_DIR/dapostinstall.sh" 'build_php_extension "\$imagick" "imagick" "imagick"'
assert_file_not_contains "$ROOT_DIR/dapostinstall.sh" 'sed -i .*imagick=no'
assert_file_not_contains "$ROOT_DIR/dapostinstall.sh" 'sed -i .*imap=no'
assert_file_not_contains "$ROOT_DIR/dapostinstall.sh" "sed -i 's/DA_.*mail_powitalny.txt"
assert_file_not_contains "$ROOT_DIR/dapostinstall.sh" 'mv mail_powitalny.txt /root'
assert_file_contains "$ROOT_DIR/dapostinstall.sh" 'DA_PHP_LIST=\$\(get_php_release_list "\$DA_OPTIONSCONF"\)'
assert_file_contains "$ROOT_DIR/dapostinstall.sh" 'render_template "\$DAPOSTINSTALL_DIR/mail_powitalny.txt" "/root/mail_powitalny.txt"'
assert_file_not_contains "$ROOT_DIR/dapostinstall.sh" 'PS3='
assert_file_not_contains "$ROOT_DIR/dapostinstall.sh" '^select opt in'
assert_file_not_contains "$ROOT_DIR/dapostinstall.sh" '"Niestandardowa"\)'
assert_file_not_contains "$ROOT_DIR/dapostinstall.sh" 'Czy instalowac'
assert_file_not_contains "$ROOT_DIR/dapostinstall.sh" 'Czy aktywowac'
assert_file_not_contains "$ROOT_DIR/dapostinstall.sh" 'Podaj adres NS'
assert_file_not_contains "$ROOT_DIR/dapostinstall.sh" 'Jaka skorke ustawic'
assert_file_not_contains "$ROOT_DIR/dapostinstall.sh" 'Wybierz tryb instalacji'
assert_file_not_contains "$ROOT_DIR/dapostinstall.sh" "s/evolution/enhanced"
assert_file_contains "$ROOT_DIR/dapostinstall.sh" 'Skorka evolution zostala ustawiona jako domyslna'
assert_file_contains "$ROOT_DIR/mail_powitalny.txt" '\{\{DA_HOSTNAME\}\}'
assert_file_contains "$ROOT_DIR/mail_powitalny.txt" '\{\{DA_HASLO\}\}'
assert_file_contains "$ROOT_DIR/mail_powitalny.txt" '\{\{DA_PHP_LIST\}\}'
assert_file_contains "$ROOT_DIR/mail_powitalny.txt" '\{\{DA_NS1\}\}'
assert_file_contains "$ROOT_DIR/mail_powitalny.txt" '\{\{DA_NS2\}\}'
assert_file_not_contains "$ROOT_DIR/mail_powitalny.txt" 'DA_PHP1'
COMMON_SH="$ROOT_DIR/lib/common.sh"
[[ -f "$COMMON_SH" ]] || fail "missing lib/common.sh"
# shellcheck source=/dev/null
source "$COMMON_SH"
tmp_dir="$(mktemp -d)"
trap 'rm -rf "$tmp_dir"' EXIT
kv_file="$tmp_dir/example.conf"
printf 'ns1=old.example\nother=value\n' > "$kv_file"
set_key_value "$kv_file" "ns1" "dns3.hitme.net.pl"
set_key_value "$kv_file" "ns2" "dns4.hitme.net.pl"
grep -qx 'ns1=dns3.hitme.net.pl' "$kv_file" || fail "set_key_value did not replace ns1"
grep -qx 'ns2=dns4.hitme.net.pl' "$kv_file" || fail "set_key_value did not append ns2"
[[ "$(grep -c '^ns1=' "$kv_file")" -eq 1 ]] || fail "set_key_value duplicated ns1"
setup_file="$tmp_dir/setup.txt"
printf 'hostname=server.example\nadminpass=hG7KZfTPq1z8f4KC3N5J4\n' > "$setup_file"
[[ "$(get_key_value "$setup_file" "adminpass")" == "hG7KZfTPq1z8f4KC3N5J4" ]] || fail "get_key_value did not read adminpass"
php_options="$tmp_dir/options.conf"
printf 'php1_release=8.3\nphp2_release=8.2\nphp3_release=no\nphp9_release=7.4\n' > "$php_options"
expected_php=$'PHP 8.3 (domyślna)\nPHP 8.2\nPHP 7.4'
[[ "$(get_php_release_list "$php_options")" == "$expected_php" ]] || fail "get_php_release_list returned unexpected output"
php1_release=8.3
php2_release=8.2
php3_release=8.1
php4_release=7.4
php5_release=no
php6_release=no
php7_release=no
php8_release=no
php9_release=5.6
php_commands="$tmp_dir/php_commands.log"
for idx in 1 2 3 4 5 6 7 8 9; do
release_var="php${idx}_release"
release="${!release_var}"
printf 'da build set php%s_release %s\n' "$idx" "$release" >> "$php_commands"
done
grep -qx 'da build set php1_release 8.3' "$php_commands" || fail "php1_release command is wrong"
grep -qx 'da build set php2_release 8.2' "$php_commands" || fail "php2_release command is wrong"
grep -qx 'da build set php9_release 5.6' "$php_commands" || fail "php9_release command is wrong"
[[ "$(cut -d' ' -f5 "$php_commands" | sort -u | wc -l | tr -d ' ')" -gt 2 ]] || fail "php release commands appear to reuse a single value"
template_file="$tmp_dir/template.txt"
output_file="$tmp_dir/output.txt"
printf 'Host: {{DA_HOSTNAME}}\nPass: {{DA_HASLO}}\nPHP:\n{{DA_PHP_LIST}}\n' > "$template_file"
export DA_HOSTNAME='server.example'
export DA_HASLO='abc/123&xyz'
export DA_PHP_LIST="$expected_php"
render_template "$template_file" "$output_file"
grep -qx 'Host: server.example' "$output_file" || fail "render_template did not replace hostname"
grep -qx 'Pass: abc/123&xyz' "$output_file" || fail "render_template did not safely replace password"
grep -qx 'PHP 8.3 (domyślna)' "$output_file" || fail "render_template did not replace multiline PHP list"
echo "quality checks passed"
-30
View File
@@ -1,30 +0,0 @@
#!/bin/bash
#file should be created as /usr/local/directadmin/scripts/custom/user_modify_pre.sh
#chown diradmin:diradmin /usr/local/directadmin/scripts/custom/user_modify_pre.sh
#chmod 700 /usr/local/directadmin/scripts/custom/user_modify_pre.sh
#Create a login key on destination (mail) server with CMD_MODIFY_USER permissions
da_host='mx1.hitme.net.pl'
da_user='admin'
da_pass='R1g4W43e458H28ObOX1x747S61J57511lyDpfc7fRGXZfo1IX0UrhPP1tZ3apx29'
if [ "${action}" = "package" ]; then
json_data=$(cat <<- EOF
{
"user":"${user}",
"package":"${package}",
"json":"yes",
"action":"package"
}
EOF
)
response=$(curl -s --request "POST" --data "${json_data}" "https://${da_user}:${da_pass}@${da_host}:2222/CMD_MODIFY_USER?json=yes")
if ! echo "${response}" | grep -q \"success\"; then
echo "Problem with a package on ${da_host}:</br>"
echo "${response}"
exit 1
fi
fi