build: implement php obfustation

This commit is contained in:
2025-11-18 15:33:11 +03:00
parent d6db083dea
commit 3d078900a1
7 changed files with 207 additions and 8 deletions

34
scripts/build_phar.sh Executable file
View File

@@ -0,0 +1,34 @@
#!/bin/sh
set -e
SRC_PATH="/app"
BUILD_PATH="/build"
MODULE_NAME="oc_telegram_shop"
PHAR_PATH="${BUILD_PATH}/${MODULE_NAME}.phar"
echo "PHP Obfuscation: framework"
yakpro-po --config-file /usr/local/yakpro-po/config.php ${SRC_PATH}/framework -o /tmp/obfuscated
rm -rf ${SRC_PATH}/framework
mv /tmp/obfuscated/yakpro-po/obfuscated ${SRC_PATH}/framework
echo "PHP Obfuscation: src"
yakpro-po --config-file /usr/local/yakpro-po/config.php ${SRC_PATH}/src -o /tmp/obfuscated
rm -rf ${SRC_PATH}/src
mv /tmp/obfuscated/yakpro-po/obfuscated ${SRC_PATH}/src
echo "PHP Obfuscation: bastion"
yakpro-po --config-file /usr/local/yakpro-po/config.php ${SRC_PATH}/bastion -o /tmp/obfuscated
rm -rf ${SRC_PATH}/bastion
mv /tmp/obfuscated/yakpro-po/obfuscated ${SRC_PATH}/bastion
echo "📜 Creating Phar archive..."
rm -rf "${BUILD_PATH}/extracted"
mkdir -p "${BUILD_PATH}"
echo "Source path: ${SRC_PATH}"
echo "Destination: ${PHAR_PATH}"
php -d phar.readonly=0 /scripts/ci/create-phar.php "${SRC_PATH}" "${PHAR_PATH}"
echo "Extracting ..."
php -d phar.readonly=0 /scripts/ci/extract-phar.php "${PHAR_PATH}" "${BUILD_PATH}/extracted"

View File

@@ -71,6 +71,45 @@ echo "Copy .env for production"
cp "${SRC_PATH}/module/oc_telegram_shop/upload/oc_telegram_shop/.env.production" \
"${SRC_PATH}/module/oc_telegram_shop/upload/oc_telegram_shop/.env"
echo "Install PHP Obfuscation lib"
mkdir -p /usr/local
cd /usr/local
wget https://github.com/pk-fr/yakpro-po/archive/refs/heads/master.zip
unzip -o "master.zip" -d /usr/local/yakpro-po
rm master.zip
ls -la /usr/local/yakpro-po
cd /usr/local/yakpro-po
wget https://github.com/nikic/PHP-Parser/archive/refs/heads/4.x.zip -O parser.zip
unzip -o "parser.zip" -d /usr/local/yakpro-po/PHP-Parser
ls -la /usr/local/yakpro-po
ls -la /usr/local/yakpro-po/PHP-Parser
chmod a+x /usr/local/yakpro-po/yakpro-po.php
ln -s /usr/local/yakpro-po/yakpro-po.php /usr/local/bin/yakpro-po
echo "PHP Obfuscation: framework"
yakpro-po --config-file \
"${SRC_PATH}/docker/config.php" \
"${SRC_PATH}/module/oc_telegram_shop/upload/oc_telegram_shop/framework" \
-o /tmp/obfuscated
rm -rf "${SRC_PATH}/module/oc_telegram_shop/upload/oc_telegram_shop/framework"
mv /tmp/obfuscated/yakpro-po/obfuscated "${SRC_PATH}/module/oc_telegram_shop/upload/oc_telegram_shop/framework"
echo "PHP Obfuscation: src"
yakpro-po --config-file \
"${SRC_PATH}/docker/config.php" \
"${SRC_PATH}/module/oc_telegram_shop/upload/oc_telegram_shop/src" \
-o /tmp/obfuscated
rm -rf "${SRC_PATH}/module/oc_telegram_shop/upload/oc_telegram_shop/src"
mv /tmp/obfuscated/yakpro-po/obfuscated "${SRC_PATH}/module/oc_telegram_shop/upload/oc_telegram_shop/src"
echo "PHP Obfuscation: bastion"
yakpro-po --config-file \
"${SRC_PATH}/docker/config.php" \
"${SRC_PATH}/module/oc_telegram_shop/upload/oc_telegram_shop/bastion" \
-o /tmp/obfuscated
rm -rf "${SRC_PATH}/module/oc_telegram_shop/upload/oc_telegram_shop/bastion"
mv /tmp/obfuscated/yakpro-po/obfuscated "${SRC_PATH}/module/oc_telegram_shop/upload/oc_telegram_shop/bastion"
echo "📜 Creating Phar archive..."
rm -rf \
"${SRC_PATH}/module/oc_telegram_shop/upload/oc_telegram_shop/tests" \

View File

@@ -0,0 +1,17 @@
<?php
$pharFile = $argv[1] ?? null;
$dstPath = $argv[2] ?? null;
if (! $dstPath) {
throw new InvalidArgumentException('Dst path must be provided');
}
if (! $pharFile) {
throw new InvalidArgumentException('Phar file must be provided');
}
$phar = new Phar($pharFile);
$phar->extractTo($dstPath);
echo "Phar extracted: $pharFile\n";