build: implement php obfustation
This commit is contained in:
34
scripts/build_phar.sh
Executable file
34
scripts/build_phar.sh
Executable 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"
|
||||
@@ -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" \
|
||||
|
||||
17
scripts/ci/extract-phar.php
Normal file
17
scripts/ci/extract-phar.php
Normal 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";
|
||||
Reference in New Issue
Block a user