Merge branch 'develop'

This commit is contained in:
Dennis Eichhorn 2023-10-15 16:35:12 +00:00
commit 75d8311af4
26 changed files with 462 additions and 403 deletions

View File

@ -7,6 +7,7 @@
<exclude-pattern>*.tpl.php</exclude-pattern>
<exclude-pattern>*.xls.php</exclude-pattern>
<exclude-pattern>*/Build/*</exclude-pattern>
<exclude-pattern>*/MainRepository/*</exclude-pattern>
<exclude-pattern>*/Cache/*</exclude-pattern>
<exclude-pattern>*/Demo/*</exclude-pattern>
<exclude-pattern>*/Docs/*</exclude-pattern>

12
Config/phpmetrics.json Normal file
View File

@ -0,0 +1,12 @@
{
"composer": true,
"excludes": [
".git",
"tests",
"MainRepository",
"vendor",
"Admin/Install/Application",
"Install/Application",
"Resources"
]
}

View File

@ -12,6 +12,8 @@ function module_autoloader($class) {
__DIR__ . '/../../MainRepository/Resources/',
__DIR__ . '/../../MainRepository/Resources/tcpdf/',
__DIR__ . '/../../MainRepository/Resources/Stripe/',
__DIR__ . '/../../src/',
__DIR__ . '/../../../',
];
$class = \ltrim($class, '\\');
@ -37,6 +39,7 @@ function module_autoloader($class) {
}
}
// github and normal
foreach ($paths as $path) {
if (($file = \realpath($path . $class2 . '.php'))) {
include_once $file;
@ -52,6 +55,38 @@ function module_autoloader($class) {
return;
}
}
// own server
foreach ($paths as $path) {
if (($file = \realpath($path . 'oms-' . $class2 . '.php'))) {
include_once $file;
return;
} elseif (($file = \realpath($file = $path . 'oms-' . $class3 . '.php')) && \stripos($file, $class2) !== false) {
include_once $file;
return;
} elseif (\is_file($file = $path . 'oms-' . $class . '.php')) {
include_once $file;
return;
}
}
$paths[] = __DIR__ . '/../../src/Karaka/';
$class = \ltrim(\str_replace('Modules/', '/', $class), '/');
foreach ($paths as $path) {
if (\is_file($file = $path . $class . '.php')) {
include_once $file;
return;
} elseif (\is_file($file = $path . 'oms-' . $class . '.php')) {
include_once $file;
return;
}
}
}
spl_autoload_register('module_autoloader');

View File

@ -0,0 +1,12 @@
#!/bin/bash
CNTX="users"; NAME="Karaka-Management"; PAGE=1
curl "https://api.github.com/$CNTX/$NAME/repos?page=$PAGE&per_page=100" |
grep -e 'clone_url*' |
cut -d \" -f 4 |
xargs -L1 git clone
find . -maxdepth 1 -type d \( ! -name . \) -exec bash -c "cd '{}' && git checkout develop" \;
find . -maxdepth 1 -type d \( ! -name . \) -exec bash -c "cd '{}' && git submodule foreach 'git checkout develop || true'" \;
find ./src -maxdepth 1 -type d \( ! -name . \) -exec bash -c "git -C '{}' pull" \;
find ./src -maxdepth 1 -type d \( ! -name . \) -exec bash -c "Build/php.sh '{}' '{}/build'" \;

View File

@ -0,0 +1,3 @@
#!/bin/bash
find ./Modules -type f -name README.md -exec sh -c 'cat README.md > "{}"' \;

View File

@ -16,7 +16,13 @@ add-apt-repository ppa:ondrej/php
apt-get update
apt-get install php8.1 php8.1-dev php8.1-cli php8.1-common php8.1-mysql php8.1-pgsql php8.1-xdebug php8.1-opcache php8.1-pdo php8.1-sqlite php8.1-mbstring php8.1-curl php8.1-imap php8.1-bcmath php8.1-zip php8.1-dom php8.1-xml php8.1-phar php8.1-gd php-pear apache2 mysql-server wkhtmltopdf tesseract-ocr poppler-utils
apt-get install php8.1 php8.1-dev php8.1-cli php8.1-common php8.1-mysql php8.1-pgsql php8.1-xdebug php8.1-opcache php8.1-pdo php8.1-sqlite php8.1-mbstring php8.1-curl php8.1-imap php8.1-bcmath php8.1-zip php8.1-dom php8.1-xml php8.1-phar php8.1-gd php-pear apache2 mariadb-server mariadb-client wkhtmltopdf tesseract-ocr poppler-utils
apt-get install curl libcurl4-openssl-dev libxml2 libxml2-dev
mysql_secure_installation
systemctl start mariadb
systemctl enable mariadb
a2enmod rewrite
a2enmod headers
@ -49,7 +55,7 @@ borg key export /var/www/html repokey
## Developer
###############################################################
apt-get install npm git composer cmake postgresql postgresql-contrib pcov
apt-get install npm git composer nodejs cmake postgresql postgresql-contrib pcov
composer install
composer update
npm install -D jasmine jasmine-node istanbul jasmine-console-reporter supertest jasmine-supertest selenium-webdriver chromedriver geckodriver eslint

View File

@ -10,7 +10,7 @@ export PROMPT_COMMAND='echo "$(date "+%Y-%m-%d.%H:%M:%S") $(pwd) $(history 1)" >
apt-get update
apt-get upgrade
apt-get install git git-lfs snapd ufw software-properties-common
apt-get install git snapd ufw software-properties-common composer nodejs npm
# Security
@ -39,6 +39,9 @@ service fail2ban restart
apt-get install php8.1 php8.1-dev php8.1-cli php8.1-common php8.1-mysql php8.1-pgsql php8.1-xdebug php8.1-opcache php8.1-pdo php8.1-sqlite php8.1-mbstring php8.1-curl php8.1-imap php8.1-bcmath php8.1-zip php8.1-dom php8.1-xml php8.1-phar php8.1-gd php-pear apache2 libapache2-mpm-itk apache2-utils mariadb-server mariadb-client wkhtmltopdf tesseract-ocr poppler-utils
pecl install pcov
#echo "extension=pcov.so" > /etc/php/cli/conf.d/20-xdebug.ini
mkdir -p /var/cache/apache2
mkdir -p /var/cache/apache2/tmrank
chown -R www-data:www-data /var/cache/apache2
@ -63,12 +66,15 @@ mysql -u root -p
CREATE USER 'jingga'@'%' IDENTIFIED BY 'dYg8#@wLiWJ3vE';
CREATE USER 'demo'@'%' IDENTIFIED BY 'orange';
CREATE USER 'test'@'%' IDENTIFIED BY 'orange';
CREATE DATABASE jingga COMMENT 'Main application database';
CREATE DATABASE demo COMMENT 'Demo application database';
CREATE DATABASE omt COMMENT 'Tests';
GRANT ALL PRIVILEGES ON jingga.* TO 'jingga'@'%';
GRANT ALL PRIVILEGES ON demo.* TO 'demo'@'%';
GRANT ALL PRIVILEGES ON omt.* TO 'test'@'%';
FLUSH PRIVILEGES;
@ -150,6 +156,23 @@ cat << EOF > /etc/apache2/sites-available/000-demo.conf
</VirtualHost>
EOF
cat << EOF > /etc/apache2/sites-available/000-dev.conf
<VirtualHost *:80>
ServerAdmin info@jingga.app
DocumentRoot /var/www/html/dev
ServerName dev.jingga.app
<Directory /var/www/html/dev>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog \${APACHE_LOG_DIR}/error.log
CustomLog \${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
EOF
cat << EOF > /etc/apache2/sites-available/000-services.conf
<VirtualHost *:80>
ServerAdmin info@jingga.app
@ -535,6 +558,7 @@ mkdir -p /var/www/html/backup/bash
chmod -R 766 /var/www/html/backup
a2ensite 000-demo.conf
a2ensite 000-dev.conf
a2ensite 000-shop.conf
a2ensite 000-services.conf
a2ensite 000-software.conf

106
Helper/Scripts/testall.sh Normal file
View File

@ -0,0 +1,106 @@
#!/bin/bash
GITHUB[0]="https://github.com/Karaka-Management/jsOMS.git"
GITHUB[1]="https://github.com/Karaka-Management/Karaka.git"
GITHUB[2]="https://github.com/Karaka-Management/oms-Accounting.git"
GITHUB[3]="https://github.com/Karaka-Management/oms-AccountsPayable.git"
GITHUB[4]="https://github.com/Karaka-Management/oms-AccountsReceivable.git"
GITHUB[5]="https://github.com/Karaka-Management/oms-Admin.git"
GITHUB[6]="https://github.com/Karaka-Management/oms-AreaManager.git"
GITHUB[7]="https://github.com/Karaka-Management/oms-Arrival.git"
GITHUB[8]="https://github.com/Karaka-Management/oms-AssemblyManagement.git"
GITHUB[9]="https://github.com/Karaka-Management/oms-AssetManagement.git"
GITHUB[10]="https://github.com/Karaka-Management/oms-Attribute.git"
GITHUB[11]="https://github.com/Karaka-Management/oms-Auditor.git"
GITHUB[12]="https://github.com/Karaka-Management/oms-Backup.git"
GITHUB[13]="https://github.com/Karaka-Management/oms-Balance.git"
GITHUB[14]="https://github.com/Karaka-Management/oms-BankAccounting.git"
GITHUB[15]="https://github.com/Karaka-Management/oms-Billing.git"
GITHUB[16]="https://github.com/Karaka-Management/oms-BudgetManagement.git"
GITHUB[17]="https://github.com/Karaka-Management/oms-BusinessExpenses.git"
GITHUB[18]="https://github.com/Karaka-Management/oms-Calendar.git"
GITHUB[19]="https://github.com/Karaka-Management/oms-CapacityPlanning.git"
GITHUB[20]="https://github.com/Karaka-Management/oms-CashManagement.git"
GITHUB[21]="https://github.com/Karaka-Management/oms-Chart.git"
GITHUB[22]="https://github.com/Karaka-Management/oms-Chat.git"
GITHUB[23]="https://github.com/Karaka-Management/oms-Checklist.git"
GITHUB[24]="https://github.com/Karaka-Management/oms-ClientEvaluation.git"
GITHUB[25]="https://github.com/Karaka-Management/oms-ClientManagement.git"
GITHUB[26]="https://github.com/Karaka-Management/oms-CMS.git"
GITHUB[27]="https://github.com/Karaka-Management/oms-Comments.git"
GITHUB[28]="https://github.com/Karaka-Management/oms-Contact.git"
GITHUB[29]="https://github.com/Karaka-Management/oms-ContractManagement.git"
GITHUB[30]="https://github.com/Karaka-Management/oms-Controlling.git"
GITHUB[31]="https://github.com/Karaka-Management/oms-CreditManagement.git"
GITHUB[32]="https://github.com/Karaka-Management/oms-Dashboard.git"
GITHUB[33]="https://github.com/Karaka-Management/oms-Database.git"
GITHUB[34]="https://github.com/Karaka-Management/oms-DatabaseEditor.git"
GITHUB[35]="https://github.com/Karaka-Management/oms-Draw.git"
GITHUB[36]="https://github.com/Karaka-Management/oms-Editor.git"
GITHUB[37]="https://github.com/Karaka-Management/oms-EmployeeEvaluation.git"
GITHUB[38]="https://github.com/Karaka-Management/oms-EquipmentManagement.git"
GITHUB[39]="https://github.com/Karaka-Management/oms-EventManagement.git"
GITHUB[40]="https://github.com/Karaka-Management/oms-Exchange.git"
GITHUB[41]="https://github.com/Karaka-Management/oms-Finance.git"
GITHUB[42]="https://github.com/Karaka-Management/oms-FleetManagement.git"
GITHUB[43]="https://github.com/Karaka-Management/oms-Help.git"
GITHUB[44]="https://github.com/Karaka-Management/oms-Helper.git"
GITHUB[45]="https://github.com/Karaka-Management/oms-Home.git"
GITHUB[46]="https://github.com/Karaka-Management/oms-HumanResourceManagement.git"
GITHUB[47]="https://github.com/Karaka-Management/oms-HumanResourceTimeRecording.git"
GITHUB[48]="https://github.com/Karaka-Management/oms-IncomeStatement.git"
GITHUB[49]="https://github.com/Karaka-Management/oms-InvestmentManagement.git"
GITHUB[50]="https://github.com/Karaka-Management/oms-ItemManagement.git"
GITHUB[51]="https://github.com/Karaka-Management/oms-Kanban.git"
GITHUB[52]="https://github.com/Karaka-Management/oms-Knowledgebase.git"
GITHUB[53]="https://github.com/Karaka-Management/oms-KPI.git"
GITHUB[54]="https://github.com/Karaka-Management/oms-Labeling.git"
GITHUB[55]="https://github.com/Karaka-Management/oms-LoanManagement.git"
GITHUB[56]="https://github.com/Karaka-Management/oms-Logistics.git"
GITHUB[57]="https://github.com/Karaka-Management/oms-LotTracking.git"
GITHUB[58]="https://github.com/Karaka-Management/oms-Marketing.git"
GITHUB[59]="https://github.com/Karaka-Management/oms-Media.git"
GITHUB[60]="https://github.com/Karaka-Management/oms-Messages.git"
GITHUB[61]="https://github.com/Karaka-Management/oms-Monitoring.git"
GITHUB[62]="https://github.com/Karaka-Management/oms-MyPrivate.git"
GITHUB[63]="https://github.com/Karaka-Management/oms-Navigation.git"
GITHUB[64]="https://github.com/Karaka-Management/oms-News.git"
GITHUB[65]="https://github.com/Karaka-Management/oms-OnlineResourceWatcher.git"
GITHUB[66]="https://github.com/Karaka-Management/oms-Organization.git"
GITHUB[67]="https://github.com/Karaka-Management/oms-Payment.git"
GITHUB[68]="https://github.com/Karaka-Management/oms-Payroll.git"
GITHUB[69]="https://github.com/Karaka-Management/oms-Production.git"
GITHUB[70]="https://github.com/Karaka-Management/oms-ProductionPlanning.git"
GITHUB[71]="https://github.com/Karaka-Management/oms-Profile.git"
GITHUB[72]="https://github.com/Karaka-Management/oms-ProjectManagement.git"
GITHUB[73]="https://github.com/Karaka-Management/oms-Purchase.git"
GITHUB[74]="https://github.com/Karaka-Management/oms-PurchaseAnalysis.git"
GITHUB[75]="https://github.com/Karaka-Management/oms-QA.git"
GITHUB[76]="https://github.com/Karaka-Management/oms-QualityAssurance.git"
GITHUB[77]="https://github.com/Karaka-Management/oms-QualityControl.git"
GITHUB[78]="https://github.com/Karaka-Management/oms-QualityManagement.git"
GITHUB[79]="https://github.com/Karaka-Management/oms-ResearchDevelopment.git"
GITHUB[80]="https://github.com/Karaka-Management/oms-RiskManagement.git"
GITHUB[81]="https://github.com/Karaka-Management/oms-Sales.git"
GITHUB[82]="https://github.com/Karaka-Management/oms-SalesAnalysis.git"
GITHUB[83]="https://github.com/Karaka-Management/oms-Search.git"
GITHUB[84]="https://github.com/Karaka-Management/oms-ShiftPlanning.git"
GITHUB[85]="https://github.com/Karaka-Management/oms-Shipping.git"
GITHUB[86]="https://github.com/Karaka-Management/oms-Shop.git"
GITHUB[87]="https://github.com/Karaka-Management/oms-Spreadsheet.git"
GITHUB[88]="https://github.com/Karaka-Management/oms-StockTaking.git"
GITHUB[89]="https://github.com/Karaka-Management/oms-SupplierManagement.git"
GITHUB[90]="https://github.com/Karaka-Management/oms-Support.git"
GITHUB[91]="https://github.com/Karaka-Management/oms-Surveys.git"
GITHUB[92]="https://github.com/Karaka-Management/oms-Tag.git"
GITHUB[93]="https://github.com/Karaka-Management/oms-Tasks.git"
GITHUB[94]="https://github.com/Karaka-Management/oms-TestModule.git"
GITHUB[95]="https://github.com/Karaka-Management/oms-Tools.git"
GITHUB[96]="https://github.com/Karaka-Management/oms-WarehouseManagement.git"
GITHUB[97]="https://github.com/Karaka-Management/oms-Workflow.git"
GITHUB[99]="https://github.com/Karaka-Management/phpOMS.git"
for i in "${GITHUB[@]}"
do
sh Build/php.sh "$i" ./src
done

View File

@ -1,10 +1,10 @@
#!/bin/bash
. config.sh
. "${BUILD_PATH}/config.sh"
echo "#################################################"
echo "Start static text inspection"
echo "#################################################"
grep -rlnP '(title|alt|aria\-label)(=\")((?!\<\?).)*(>)' --include \*.tpl.php Modules >> ${INSPECTION_PATH}/Modules/static_text.log
grep -rlnP '(\<td\>|\<th\>|\<caption\>|\<label.*?(\"|l)\>)[0-9a-zA-Z\.\?]+' --include \*.tpl.php Modules >> ${INSPECTION_PATH}/Modules/static_text.log
grep -rlnP '(title|alt|aria\-label)(=\")((?!\<\?).)*(>)' --include \*.tpl.php ${INSPECTION_PATH} >> ${OUTPUT_PATH}/static_text.log
grep -rlnP '(\<td\>|\<th\>|\<caption\>|\<label.*?(\"|l)\>)[0-9a-zA-Z\.\?]+' --include \*.tpl.php ${INSPECTION_PATH} >> ${OUTPUT_PATH}/static_text.log

View File

@ -1,33 +1,20 @@
#!/bin/bash
. config.sh
. "${BUILD_PATH}/config.sh"
echo "#################################################"
echo "Start html syntax inspection"
echo "#################################################"
#
echo "Image alt missing:" > ${INSPECTION_PATH}/Modules/html_syntax.log
grep -rlnP '(\<img)((?!.*?alt=).)*(>)' --include \*.tpl.php Modules >> ${INSPECTION_PATH}/Modules/html_syntax.log
echo "Image alt missing:" > ${OUTPUT_PATH}/html_syntax.log
grep -rlnP '(\<img)((?!.*?alt=).)*(>)' --include \*.tpl.php ${INSPECTION_PATH} >> ${OUTPUT_PATH}/html_syntax.log
echo "Input type missing:" >> ${INSPECTION_PATH}/Modules/html_syntax.log
grep -rlnP '(<input)((?!.*?type=).)*(>)' --include \*.tpl.php Modules >> ${INSPECTION_PATH}/Modules/html_syntax.log
echo "Input type missing:" >> ${OUTPUT_PATH}/html_syntax.log
grep -rlnP '(<input)((?!.*?type=).)*(>)' --include \*.tpl.php ${INSPECTION_PATH} >> ${OUTPUT_PATH}/html_syntax.log
echo "Input name missing:" >> ${INSPECTION_PATH}/Modules/html_syntax.log
grep -rlnP '(<input|<select|<textarea)((?!.*?name=).)*(>)' --include \*.tpl.php Modules >> ${INSPECTION_PATH}/Modules/html_syntax.log
echo "Input name missing:" >> ${OUTPUT_PATH}/html_syntax.log
grep -rlnP '(<input|<select|<textarea)((?!.*?name=).)*(>)' --include \*.tpl.php ${INSPECTION_PATH} >> ${OUTPUT_PATH}/html_syntax.log
echo "Form id missing:" >> ${INSPECTION_PATH}/Modules/html_syntax.log
grep -rlnP '(\<form)((?!.*?(name|id)=).)*(>)' --include \*.tpl.php Modules >> ${INSPECTION_PATH}/Modules/html_syntax.log
#
echo "Image alt missing:" > ${INSPECTION_PATH}/Web/html_syntax.log
grep -rlnP '(\<img)((?!.*?alt=).)*(>)' --include \*.tpl.php Web >> ${INSPECTION_PATH}/Web/html_syntax.log
echo "Input type missing:" >> ${INSPECTION_PATH}/Web/html_syntax.log
grep -rlnP '(<input)((?!.*?type=).)*(>)' --include \*.tpl.php Web >> ${INSPECTION_PATH}/Web/html_syntax.log
echo "Input name missing:" >> ${INSPECTION_PATH}/Web/html_syntax.log
grep -rlnP '(<input|<select|<textarea)((?!.*?name=).)*(>)' --include \*.tpl.php Web >> ${INSPECTION_PATH}/Web/html_syntax.log
echo "Form id missing:" >> ${INSPECTION_PATH}/Web/html_syntax.log
grep -rlnP '(\<form)((?!.*?(name|id)=).)*(>)' --include \*.tpl.php Web >> ${INSPECTION_PATH}/Web/html_syntax.log
echo "Form id missing:" >> ${OUTPUT_PATH}/html_syntax.log
grep -rlnP '(\<form)((?!.*?(name|id)=).)*(>)' --include \*.tpl.php ${INSPECTION_PATH} >> ${OUTPUT_PATH}/html_syntax.log

View File

@ -1,6 +1,6 @@
#!/bin/bash
. config.sh
. "${BUILD_PATH}/config.sh"
echo "#################################################"
echo "Start html tags inspection"
@ -29,6 +29,5 @@ TAG[18]="<embed.*\/>"
for i in "${TAG[@]}"
do
grep -rln "$i" --include \*.tpl.php ${ROOT_PATH}/phpOMS >> ${INSPECTION_PATH}/Framework/html_tags.log
grep -rln "$i" --include \*.tpl.php ${ROOT_PATH}/Modules >> ${INSPECTION_PATH}/Modules/html_tags.log
grep -rln "$i" --include \*.tpl.php ${INSPECTION_PATH} >> ${OUTPUT_PATH}/html_tags.log
done

View File

@ -1,18 +1,13 @@
#!/bin/bash
. config.sh
. "${BUILD_PATH}/config.sh"
echo "#################################################"
echo "Start js security inspection"
echo "#################################################"
# JS code inspection
grep -rlni "onafterprint=\|onbeforeprint=\|onbeforeunload=\|onerror=\|onhaschange=\|onload=\|onmessage=\|onoffline=\|ononline=\|onpagehide=\|onpageshow=\|onpopstate=\|onredo=\|onresize=\|onstorage=\|onund=o\|onunload=\|onblur=\|onchage=\|oncontextmenu=\|onfocus=\|onformchange=\|onforminput=\|oninput=\|oninvalid=\|onreset=\|onselect=\|onsubmit=\|onkeydown=\|onkeypress=\|onkeyup=\|onclick=\|ondblclic=k\|ondrag=\|ondragend=\|ondragenter=\|ondragleave=\|ondragover=\|ondragstart=\|ondrop=\|onmousedown=\|onmousemove=\|onmouseout=\|onmouseover=\|onmouseup=\|onmousewheel=\|onscroll=\|onabor=t\|oncanplay=\|oncanplaythrough=\|ondurationchange=\|onemptied=\|onended=\|onerror=\|onloadeddata=\|onloadedmetadata=\|onloadstart=\|onpause=\|onplay=\|onplaying=\|onprogress=\|onratechange=\|onreadystatechange=\|onseeked=\|onseeking=\|onstalled=\|onsuspend=\|ontimeupdate=\|onvolumechange=" --include=*.js ${ROOT_PATH}/jsOMS >> ${INSPECTION_PATH}/Framework/critical_js.log
grep -rlni "onafterprint=\|onbeforeprint=\|onbeforeunload=\|onerror=\|onhaschange=\|onload=\|onmessage=\|onoffline=\|ononline=\|onpagehide=\|onpageshow=\|onpopstate=\|onredo=\|onresize=\|onstorage=\|onund=o\|onunload=\|onblur=\|onchage=\|oncontextmenu=\|onfocus=\|onformchange=\|onforminput=\|oninput=\|oninvalid=\|onreset=\|onselect=\|onsubmit=\|onkeydown=\|onkeypress=\|onkeyup=\|onclick=\|ondblclic=k\|ondrag=\|ondragend=\|ondragenter=\|ondragleave=\|ondragover=\|ondragstart=\|ondrop=\|onmousedown=\|onmousemove=\|onmouseout=\|onmouseover=\|onmouseup=\|onmousewheel=\|onscroll=\|onabor=t\|oncanplay=\|oncanplaythrough=\|ondurationchange=\|onemptied=\|onended=\|onerror=\|onloadeddata=\|onloadedmetadata=\|onloadstart=\|onpause=\|onplay=\|onplaying=\|onprogress=\|onratechange=\|onreadystatechange=\|onseeked=\|onseeking=\|onstalled=\|onsuspend=\|ontimeupdate=\|onvolumechange=" --include=*.js ${ROOT_PATH}/Modules >> ${INSPECTION_PATH}/Modules/critical_js.log
grep -rlni "onafterprint=\|onbeforeprint=\|onbeforeunload=\|onerror=\|onhaschange=\|onload=\|onmessage=\|onoffline=\|ononline=\|onpagehide=\|onpageshow=\|onpopstate=\|onredo=\|onresize=\|onstorage=\|onund=o\|onunload=\|onblur=\|onchage=\|oncontextmenu=\|onfocus=\|onformchange=\|onforminput=\|oninput=\|oninvalid=\|onreset=\|onselect=\|onsubmit=\|onkeydown=\|onkeypress=\|onkeyup=\|onclick=\|ondblclic=k\|ondrag=\|ondragend=\|ondragenter=\|ondragleave=\|ondragover=\|ondragstart=\|ondrop=\|onmousedown=\|onmousemove=\|onmouseout=\|onmouseover=\|onmouseup=\|onmousewheel=\|onscroll=\|onabor=t\|oncanplay=\|oncanplaythrough=\|ondurationchange=\|onemptied=\|onended=\|onerror=\|onloadeddata=\|onloadedmetadata=\|onloadstart=\|onpause=\|onplay=\|onplaying=\|onprogress=\|onratechange=\|onreadystatechange=\|onseeked=\|onseeking=\|onstalled=\|onsuspend=\|ontimeupdate=\|onvolumechange=" --include=*.js ${ROOT_PATH}/Web >> ${INSPECTION_PATH}/Web/critical_js.log
grep -rlni "onafterprint=\|onbeforeprint=\|onbeforeunload=\|onerror=\|onhaschange=\|onload=\|onmessage=\|onoffline=\|ononline=\|onpagehide=\|onpageshow=\|onpopstate=\|onredo=\|onresize=\|onstorage=\|onund=o\|onunload=\|onblur=\|onchage=\|oncontextmenu=\|onfocus=\|onformchange=\|onforminput=\|oninput=\|oninvalid=\|onreset=\|onselect=\|onsubmit=\|onkeydown=\|onkeypress=\|onkeyup=\|onclick=\|ondblclic=k\|ondrag=\|ondragend=\|ondragenter=\|ondragleave=\|ondragover=\|ondragstart=\|ondrop=\|onmousedown=\|onmousemove=\|onmouseout=\|onmouseover=\|onmouseup=\|onmousewheel=\|onscroll=\|onabor=t\|oncanplay=\|oncanplaythrough=\|ondurationchange=\|onemptied=\|onended=\|onerror=\|onloadeddata=\|onloadedmetadata=\|onloadstart=\|onpause=\|onplay=\|onplaying=\|onprogress=\|onratechange=\|onreadystatechange=\|onseeked=\|onseeking=\|onstalled=\|onsuspend=\|ontimeupdate=\|onvolumechange=" --include=*.js ${INSPECTION_PATH} >> ${OUTPUT_PATH}/critical_js.log
# JS strict type
grep -r -L "\"use strict\";" --include=*.js ${ROOT_PATH}/jsOMS > ${INSPECTION_PATH}/Framework/strict_missing_js.log
grep -r -L "\"use strict\";" --include=*.js ${ROOT_PATH}/Modules > ${INSPECTION_PATH}/Modules/strict_missing_js.log
grep -r -L "\"use strict\";" --include=*.js ${ROOT_PATH}/Web > ${INSPECTION_PATH}/Web/strict_missing_js.log
grep -r -L "\"use strict\";" --include=*.js ${ROOT_PATH}/Model > ${INSPECTION_PATH}/Model/strict_missing_js.log
grep -r -L "\"use strict\";" --include=*.js ${INSPECTION_PATH} > ${OUTPUT_PATH}/strict_missing_js.log

View File

@ -1,10 +1,9 @@
#!/bin/bash
. config.sh
. "${BUILD_PATH}/config.sh"
echo "#################################################"
echo "Start js style inspection"
echo "#################################################"
npx eslint ${ROOT_PATH}/jsOMS -c ${BUILD_PATH}/Config/.eslintrc.json -o ${INSPECTION_PATH}/Framework/eslint.txt
npx eslint ${ROOT_PATH}/jsOMS -c ${BUILD_PATH}/Config/.eslintrc.json -o ${INSPECTION_PATH}/Test/Js/junit_eslint.xml -f junit
npx eslint ${INSPECTION_PATH} -c ${BUILD_PATH}/Config/.eslintrc.json -o ${OUTPUT_PATH}/eslint.txt

View File

@ -1,6 +1,6 @@
#!/bin/bash
. config.sh
. "${BUILD_PATH}/config.sh"
echo "#################################################"
echo "Start json linting inspection"

View File

@ -1,21 +1,12 @@
#!/bin/bash
. config.sh
. "${BUILD_PATH}/config.sh"
echo "#################################################"
echo "Start php linting inspection"
echo "#################################################"
find ${ROOT_PATH}/phpOMS -name "*.php" | xargs -L1 php -l > ${INSPECTION_PATH}/logs/temp.log
sed '/^No syntax.*/ d' < ${INSPECTION_PATH}/logs/temp.log > ${INSPECTION_PATH}/Framework/linting_php.log
find ${INSPECTION_PATH} -name "*.php" | xargs -L1 php -l > ${OUTPUT_PATH}/temp.log
sed '/^No syntax.*/ d' < ${OUTPUT_PATH}/temp.log > ${OUTPUT_PATH}/linting_php.log
find ${ROOT_PATH}/Web -name "*.php" | xargs -L1 php -l > ${INSPECTION_PATH}/logs/temp.log
sed '/^No syntax.*/ d' < ${INSPECTION_PATH}/logs/temp.log > ${INSPECTION_PATH}/Framework/linting_php.log
find ${ROOT_PATH}/Modules -name "*.php" | xargs -L1 php -l > ${INSPECTION_PATH}/logs/temp.log
sed '/^No syntax.*/ d' < ${INSPECTION_PATH}/logs/temp.log > ${INSPECTION_PATH}/Modules/linting_php.log
find ${ROOT_PATH}/Model -name "*.php" | xargs -L1 php -l > ${INSPECTION_PATH}/logs/temp.log
sed '/^No syntax.*/ d' < ${INSPECTION_PATH}/logs/temp.log > ${INSPECTION_PATH}/Model/linting_php.log
rm ${INSPECTION_PATH}/logs/temp.log
rm ${OUTPUT_PATH}/temp.log

View File

@ -1,6 +1,6 @@
#!/bin/bash
. config.sh
. "${BUILD_PATH}/config.sh"
echo "#################################################"
echo "Start php security inspection"
@ -38,21 +38,12 @@ CODE[27]="action=\""
CODE[28]="ReflectionClass"
CODE[29]="TestUtils"
touch ${INSPECTION_PATH}/Framework/critical_php.log
touch ${INSPECTION_PATH}/Modules/critical_php.log
touch ${INSPECTION_PATH}/Model/critical_php.log
touch ${INSPECTION_PATH}/Web/critical_php.log
touch ${OUTPUT_PATH}/critical_php.log
for i in "${CODE[@]}"
do
grep -rlni "$i" --include \*.php ${ROOT_PATH}/phpOMS >> ${INSPECTION_PATH}/Framework/critical_php.log
grep -rlni "$i" --include \*.php ${ROOT_PATH}/Modules >> ${INSPECTION_PATH}/Modules/critical_php.log
grep -rlni "$i" --include \*.php ${ROOT_PATH}/Model >> ${INSPECTION_PATH}/Model/critical_php.log
grep -rlni "$i" --include \*.php ${ROOT_PATH}/Web >> ${INSPECTION_PATH}/Web/critical_php.log
grep -rlni "$i" --include \*.php ${INSPECTION_PATH} >> ${OUTPUT_PATH}/critical_php.log
done
# PHP strict type
grep -r -L "declare(strict_types=1);" --include=*.php --exclude={*.tpl.php,*Hooks.php,*Routes.php,*SearchCommands.php} ${ROOT_PATH}/phpOMS > ${INSPECTION_PATH}/Framework/strict_missing_php.log
grep -r -L "declare(strict_types=1);" --include=*.php --exclude={*.tpl.php,*Hooks.php,*Routes.php,*SearchCommands.php} ${ROOT_PATH}/Modules > ${INSPECTION_PATH}/Modules/strict_missing_php.log
grep -r -L "declare(strict_types=1);" --include=*.php --exclude={*.tpl.php,*Hooks.php,*Routes.php,*SearchCommands.php} ${ROOT_PATH}/Model > ${INSPECTION_PATH}/Model/strict_missing_php.log
grep -r -L "declare(strict_types=1);" --include=*.php --exclude={*.tpl.php,*Hooks.php,*Routes.php,*SearchCommands.php} ${ROOT_PATH}/Web > ${INSPECTION_PATH}/Web/strict_missing_php.log
grep -r -L "declare(strict_types=1);" --include=*.php --exclude={*.tpl.php,*Hooks.php,*Routes.php,*SearchCommands.php} ${INSPECTION_PATH} > ${OUTPUT_PATH}/strict_missing_php.log || true

View File

@ -1,17 +1,11 @@
#!/bin/bash
. config.sh
. "${BUILD_PATH}/config.sh"
echo "#################################################"
echo "Start php stats inspection"
echo "#################################################"
#
php ${ROOT_PATH}/vendor/bin/phploc ${ROOT_PATH}/phpOMS/ > ${INSPECTION_PATH}/Framework/phploc.log
php ${ROOT_PATH}/vendor/bin/phploc ${ROOT_PATH}/Web/ > ${INSPECTION_PATH}/Web/phploc.log
php ${ROOT_PATH}/vendor/bin/phploc ${ROOT_PATH}/Modules/ > ${INSPECTION_PATH}/Modules/phploc.log
php ${ROOT_PATH}/vendor/bin/phploc ${ROOT_PATH}/Model/ > ${INSPECTION_PATH}/Model/phploc.log
#
php ${ROOT_PATH}/vendor/bin/phpmetrics --report-html=${INSPECTION_PATH}/Framework/metrics/metrics.html ${ROOT_PATH}/phpOMS/ >> ${INSPECTION_PATH}/Framework/build.log
php ${ROOT_PATH}/vendor/bin/phpmetrics --report-html=${INSPECTION_PATH}/Modules/metrics/metrics.html ${ROOT_PATH}/Modules/ >> ${INSPECTION_PATH}/Modules/build.log
php ${TOOLS_PATH}/vendor/bin/phploc ${INSPECTION_PATH} > ${OUTPUT_PATH}/phploc.log || true
php ${TOOLS_PATH}/vendor/bin/phpmetrics --config=${BUILD_PATH}/Config/phpmetrics.json --junit=${OUTPUT_PATH}/junit_php.xml --report-html=${OUTPUT_PATH}/metrics ${INSPECTION_PATH} || true

View File

@ -1,17 +1,11 @@
#!/bin/bash
. config.sh
. "${BUILD_PATH}/config.sh"
echo "#################################################"
echo "Start php style inspection"
echo "#################################################"
php ${ROOT_PATH}/vendor/bin/phpcs ${ROOT_PATH}/phpOMS --standard="${BUILD_PATH}/Config/phpcs.xml" -s --report-full=${INSPECTION_PATH}/Framework/phpcs.log --report-junit=${INSPECTION_PATH}/Framework/phpcs.xml
php ${ROOT_PATH}/vendor/bin/phpcs ${ROOT_PATH}/Web --standard="${BUILD_PATH}/Config/phpcs.xml" -s --report-full=${INSPECTION_PATH}/Web/phpcs.log --report-junit=${INSPECTION_PATH}/Web/phpcs.xml
php ${ROOT_PATH}/vendor/bin/phpcs ${ROOT_PATH}/Modules --standard="${BUILD_PATH}/Config/phpcs.xml" -s --report-full=${INSPECTION_PATH}/Modules/phpcs.log --report-junit=${INSPECTION_PATH}/Modules/phpcs.xml
php ${ROOT_PATH}/vendor/bin/phpcs ${ROOT_PATH}/Model --standard="${BUILD_PATH}/Config/phpcs.xml" -s --report-full=${INSPECTION_PATH}/Model/phpcs.log --report-junit=${INSPECTION_PATH}/Model/phpcs.xml
php ${TOOLS_PATH}/vendor/bin/phpcs --severity=1 ${INSPECTION_PATH} --standard="${BUILD_PATH}/Config/phpcs.xml" -s --report-full=${OUTPUT_PATH}/phpcs.log --report-junit=${OUTPUT_PATH}/phpcs.xml || true
php ${ROOT_PATH}/vendor/bin/rector --dry-run --config ${BUILD_PATH}/Config/rector.php process ${ROOT_PATH}/phpOMS > ${INSPECTION_PATH}/Framework/rector.log
php ${ROOT_PATH}/vendor/bin/rector --dry-run --config ${BUILD_PATH}/Config/rector.php process ${ROOT_PATH}/Web > ${INSPECTION_PATH}/Modules/rector.log
php ${ROOT_PATH}/vendor/bin/rector --dry-run --config ${BUILD_PATH}/Config/rector.php process ${ROOT_PATH}/Modules > ${INSPECTION_PATH}/Modules/rector.log
php ${ROOT_PATH}/vendor/bin/rector --dry-run --config ${BUILD_PATH}/Config/rector.php process ${ROOT_PATH}/Web > ${INSPECTION_PATH}/Web/rector.log
php ${TOOLS_PATH}/vendor/bin/rector process --dry-run --config ${BUILD_PATH}/Config/rector.php ${INSPECTION_PATH} > ${OUTPUT_PATH}/rector.log || true

View File

@ -1,21 +1,18 @@
#!/bin/bash
. config.sh
. "${BUILD_PATH}/config.sh"
echo "#################################################"
echo "Start php unit tests inspection"
echo "#################################################"
php -d pcov.enabled=1 ${ROOT_PATH}/vendor/bin/phpunit -v --configuration ${ROOT_PATH}/tests/phpunit_default.xml --log-junit ${INSPECTION_PATH}/Test/Php/junit_php.xml --testdox-html ${INSPECTION_PATH}/Test/Php/index.html --coverage-html ${INSPECTION_PATH}/Test/Php/coverage --coverage-clover ${INSPECTION_PATH}/Test/Php/coverage.xml > ${INSPECTION_PATH}/Test/Php/phpunit.log
php -dpcov.enabled=1 -dxdebug.mode=coverage ${TOOLS_PATH}/vendor/bin/phpunit -v --configuration ${INSPECTION_PATH}/tests/phpunit_default.xml --log-junit ${OUTPUT_PATH}/junit_php.xml --testdox-html ${OUTPUT_PATH}/phpunit.html --coverage-html ${OUTPUT_PATH}/coverage --coverage-clover ${OUTPUT_PATH}/coverage.xml > ${OUTPUT_PATH}/phpunit.log || true
echo "#################################################"
echo "Start php static inspection"
echo "#################################################"
php -d memory_limit=4G ${ROOT_PATH}/vendor/bin/phpstan analyse --autoload-file=${ROOT_PATH}/phpOMS/Autoloader.php -l 9 -c ${BUILD_PATH}/Config/phpstan.neon ${ROOT_PATH}/phpOMS > ${INSPECTION_PATH}/Framework/phpstan.log
php -d memory_limit=4G ${ROOT_PATH}/vendor/bin/phpstan analyse --autoload-file=${ROOT_PATH}/phpOMS/Autoloader.php -l 9 -c ${BUILD_PATH}/Config/phpstan.neon ${ROOT_PATH}/Modules > ${INSPECTION_PATH}/Modules/phpstan.log
php -d memory_limit=4G ${ROOT_PATH}/vendor/bin/phpstan analyse --autoload-file=${ROOT_PATH}/phpOMS/Autoloader.php -l 9 -c ${BUILD_PATH}/Config/phpstan.neon ${ROOT_PATH}/Model > ${INSPECTION_PATH}/Model/phpstan.log
php -d memory_limit=4G ${ROOT_PATH}/vendor/bin/phpstan analyse --autoload-file=${ROOT_PATH}/phpOMS/Autoloader.php -l 9 -c ${BUILD_PATH}/Config/phpstan.neon ${ROOT_PATH}/Web > ${INSPECTION_PATH}/Web/phpstan.log
php -dmemory_limit=4G ${TOOLS_PATH}/vendor/bin/phpstan analyse --error-format=prettyJson --no-progress -l 9 -c ${BUILD_PATH}/Config/phpstan.neon ${INSPECTION_PATH} > ${OUTPUT_PATH}/phpstan.json || true
# Cli debugging
# php -dzend_extension=xdebug.so -dxdebug.mode=debug -dxdebug.profiler_enable=1

View File

@ -1,9 +1,9 @@
#!/bin/bash
. config.sh
. "${BUILD_PATH}/config.sh"
# Mysql required with query logging
# sudo apt-get install percona-toolkit
mysqldumpslow -t 10 /var/log/mysql/mysql-slow.log > ${INSPECTION_PATH}/Sql/slow_queries.log
mysqldumpslow -t 10 -s l /var/log/mysql/mysql-slow.log > ${INSPECTION_PATH}/Sql/locked_queries.log
pt-query-digest /var/log/mysql/mysql-slow.log > ${INSPECTION_PATH}/Sql/query_details.log
mysqldumpslow -t 10 /var/log/mysql/mysql-slow.log > ${OUTPUT_PATH}/slow_queries.log
mysqldumpslow -t 10 -s l /var/log/mysql/mysql-slow.log > ${OUTPUT_PATH}/locked_queries.log
pt-query-digest /var/log/mysql/mysql-slow.log > ${OUTPUT_PATH}/query_details.log

View File

@ -1,14 +1,14 @@
#!/bin/bash
# Include config
. config.sh
. "${BUILD_PATH}/config.sh"
# Setup database
echo "#################################################"
echo "Setup database"
echo "#################################################"
mysql -e 'drop database if exists oms;' -u ${DB_USER} --password="${DB_PASSWORD}"
mysql -e 'create database oms;' -u ${DB_USER} --password="${DB_PASSWORD}"
mysql -e 'drop database if exists omt;' -u ${DB_USER} --password="${DB_PASSWORD}"
mysql -e 'create database omt;' -u ${DB_USER} --password="${DB_PASSWORD}"
# Build js
#. Js/build.sh
@ -26,12 +26,6 @@ echo "MYSQL queries"
echo "#################################################"
. ${BUILD_PATH}/Inspection/Sql/performance.sh
# Stats & metrics
echo "#################################################"
echo "PHP stats"
echo "#################################################"
. ${BUILD_PATH}/Inspection/Php/stats.sh
# Linting
echo "#################################################"
echo "Json and PHP linting"
@ -66,121 +60,23 @@ echo "Custom js inspection"
echo "#################################################"
. ${BUILD_PATH}/Inspection/Js/security.sh
# Build internal test report
# Stats & metrics
echo "#################################################"
echo "Internal test report"
echo "PHP stats"
echo "#################################################"
echo -e "Internal test report" > ${INSPECTION_PATH}/internal_test_report.txt
echo -e "\n\n#################################################" > ${INSPECTION_PATH}/internal_test_report.txt
echo "Unit test" > ${INSPECTION_PATH}/internal_test_report.txt
echo -e "#################################################\n\n" > ${INSPECTION_PATH}/internal_test_report.txt
cat ${INSPECTION_PATH}/Test/Php/phpunit.log > ${INSPECTION_PATH}/internal_test_report.txt
echo -e "\n\n#################################################" > ${INSPECTION_PATH}/internal_test_report.txt
echo "Static test" > ${INSPECTION_PATH}/internal_test_report.txt
echo -e "#################################################\n\n" > ${INSPECTION_PATH}/internal_test_report.txt
cat ${INSPECTION_PATH}/Framework/phpstan.log > ${INSPECTION_PATH}/internal_test_report.txt
cat ${INSPECTION_PATH}/Modules/phpstan.log > ${INSPECTION_PATH}/internal_test_report.txt
cat ${INSPECTION_PATH}/Model/phpstan.log > ${INSPECTION_PATH}/internal_test_report.txt
cat ${INSPECTION_PATH}/Web/phpstan.log > ${INSPECTION_PATH}/internal_test_report.txt
echo -e "\n\n#################################################" > ${INSPECTION_PATH}/internal_test_report.txt
echo "PHP style test" > ${INSPECTION_PATH}/internal_test_report.txt
echo -e "#################################################\n\n" > ${INSPECTION_PATH}/internal_test_report.txt
cat ${INSPECTION_PATH}/Framework/phpcs.log > ${INSPECTION_PATH}/internal_test_report.txt
cat ${INSPECTION_PATH}/Modules/phpcs.log > ${INSPECTION_PATH}/internal_test_report.txt
cat ${INSPECTION_PATH}/Model/phpcs.log > ${INSPECTION_PATH}/internal_test_report.txt
cat ${INSPECTION_PATH}/Web/phpcs.log > ${INSPECTION_PATH}/internal_test_report.txt
cat ${INSPECTION_PATH}/Framework/rector.log > ${INSPECTION_PATH}/internal_test_report.txt
cat ${INSPECTION_PATH}/Modules/rector.log > ${INSPECTION_PATH}/internal_test_report.txt
cat ${INSPECTION_PATH}/Model/rector.log > ${INSPECTION_PATH}/internal_test_report.txt
cat ${INSPECTION_PATH}/Web/rector.log > ${INSPECTION_PATH}/internal_test_report.txt
echo -e "\n\n#################################################" > ${INSPECTION_PATH}/internal_test_report.txt
echo "JS style test" > ${INSPECTION_PATH}/internal_test_report.txt
echo -e "#################################################\n\n" > ${INSPECTION_PATH}/internal_test_report.txt
cat ${INSPECTION_PATH}/Framework/eslint.txt > ${INSPECTION_PATH}/internal_test_report.txt
echo -e "\n\n#################################################" > ${INSPECTION_PATH}/internal_test_report.txt
echo "Stats" > ${INSPECTION_PATH}/internal_test_report.txt
echo -e "#################################################\n\n" > ${INSPECTION_PATH}/internal_test_report.txt
cat ${INSPECTION_PATH}/Framework/phploc.log > ${INSPECTION_PATH}/internal_test_report.txt
cat ${INSPECTION_PATH}/Modules/phploc.log > ${INSPECTION_PATH}/internal_test_report.txt
cat ${INSPECTION_PATH}/Model/phploc.log > ${INSPECTION_PATH}/internal_test_report.txt
cat ${INSPECTION_PATH}/Web/phploc.log > ${INSPECTION_PATH}/internal_test_report.txt
echo -e "\n\n#################################################" > ${INSPECTION_PATH}/internal_test_report.txt
echo "PHP security tests" > ${INSPECTION_PATH}/internal_test_report.txt
echo -e "#################################################\n\n" > ${INSPECTION_PATH}/internal_test_report.txt
cat ${INSPECTION_PATH}/Framework/critical_php.log > ${INSPECTION_PATH}/internal_test_report.txt
cat ${INSPECTION_PATH}/Modules/critical_php.log > ${INSPECTION_PATH}/internal_test_report.txt
cat ${INSPECTION_PATH}/Model/critical_php.log > ${INSPECTION_PATH}/internal_test_report.txt
cat ${INSPECTION_PATH}/Web/critical_php.log > ${INSPECTION_PATH}/internal_test_report.txt
cat ${INSPECTION_PATH}/Framework/strict_missing_php.log > ${INSPECTION_PATH}/internal_test_report.txt
cat ${INSPECTION_PATH}/Modules/strict_missing_php.log > ${INSPECTION_PATH}/internal_test_report.txt
cat ${INSPECTION_PATH}/Model/strict_missing_php.log > ${INSPECTION_PATH}/internal_test_report.txt
cat ${INSPECTION_PATH}/Web/strict_missing_php.log > ${INSPECTION_PATH}/internal_test_report.txt
echo -e "\n\n#################################################" > ${INSPECTION_PATH}/internal_test_report.txt
echo "JS security tests" > ${INSPECTION_PATH}/internal_test_report.txt
echo -e "#################################################\n\n" > ${INSPECTION_PATH}/internal_test_report.txt
cat ${INSPECTION_PATH}/Framework/critical_js.log > ${INSPECTION_PATH}/internal_test_report.txt
cat ${INSPECTION_PATH}/Modules/critical_js.log > ${INSPECTION_PATH}/internal_test_report.txt
cat ${INSPECTION_PATH}/Web/critical_js.log > ${INSPECTION_PATH}/internal_test_report.txt
cat ${INSPECTION_PATH}/Framework/strict_missing_js.log > ${INSPECTION_PATH}/internal_test_report.txt
cat ${INSPECTION_PATH}/Modules/strict_missing_js.log > ${INSPECTION_PATH}/internal_test_report.txt
cat ${INSPECTION_PATH}/Model/strict_missing_js.log > ${INSPECTION_PATH}/internal_test_report.txt
cat ${INSPECTION_PATH}/Web/strict_missing_js.log > ${INSPECTION_PATH}/internal_test_report.txt
echo -e "\n\n#################################################" > ${INSPECTION_PATH}/internal_test_report.txt
echo "Linting tests" > ${INSPECTION_PATH}/internal_test_report.txt
echo -e "#################################################\n\n" > ${INSPECTION_PATH}/internal_test_report.txt
cat ${INSPECTION_PATH}/Framework/linting_php.log > ${INSPECTION_PATH}/internal_test_report.txt
cat ${INSPECTION_PATH}/Modules/linting_php.log > ${INSPECTION_PATH}/internal_test_report.txt
cat ${INSPECTION_PATH}/Model/linting_php.log > ${INSPECTION_PATH}/internal_test_report.txt
cat ${INSPECTION_PATH}/Web/linting_php.log > ${INSPECTION_PATH}/internal_test_report.txt
echo -e "\n\n#################################################" > ${INSPECTION_PATH}/internal_test_report.txt
echo "DB queries" > ${INSPECTION_PATH}/internal_test_report.txt
echo -e "#################################################\n\n" > ${INSPECTION_PATH}/internal_test_report.txt
cat ${INSPECTION_PATH}/Sql/slow_queries.log > ${INSPECTION_PATH}/internal_test_report.txt
cat ${INSPECTION_PATH}/Sql/locked_queries.log > ${INSPECTION_PATH}/internal_test_report.txt
cat ${INSPECTION_PATH}/Sql/query_details.log > ${INSPECTION_PATH}/internal_test_report.txt
echo -e "\n\n#################################################" > ${INSPECTION_PATH}/internal_test_report.txt
echo "Html tags" > ${INSPECTION_PATH}/internal_test_report.txt
echo -e "#################################################\n\n" > ${INSPECTION_PATH}/internal_test_report.txt
cat ${INSPECTION_PATH}/Framework/html_tags.log > ${INSPECTION_PATH}/internal_test_report.txt
cat ${INSPECTION_PATH}/Modules/html_tags.log > ${INSPECTION_PATH}/internal_test_report.txt
echo -e "\n\n#################################################" > ${INSPECTION_PATH}/internal_test_report.txt
echo "Html syntax" > ${INSPECTION_PATH}/internal_test_report.txt
echo -e "#################################################\n\n" > ${INSPECTION_PATH}/internal_test_report.txt
cat ${INSPECTION_PATH}/Modules/html_syntax.log > ${INSPECTION_PATH}/internal_test_report.txt
cat ${INSPECTION_PATH}/Web/html_syntax.log > ${INSPECTION_PATH}/internal_test_report.txt
echo -e "\n\n#################################################" > ${INSPECTION_PATH}/internal_test_report.txt
echo "Static text" > ${INSPECTION_PATH}/internal_test_report.txt
echo -e "#################################################\n\n" > ${INSPECTION_PATH}/internal_test_report.txt
cat ${INSPECTION_PATH}/Modules/static_text.log > ${INSPECTION_PATH}/internal_test_report.txt
cat ${INSPECTION_PATH}/Web/static_text.log > ${INSPECTION_PATH}/internal_test_report.txt
. ${BUILD_PATH}/Inspection/Php/stats.sh
# Build external test report
echo "#################################################"
echo "Test report"
echo "#################################################"
php {TOOLS_PATH}/TestReportGenerator/src/index.php \
-b ${ROOT_PATH} \
php ${TOOLS_PATH}/TestReportGenerator/src/index.php \
-b ${INSPECTION_PATH} \
-l ${BUILD_PATH}/Config/reportLang.php \
-s ${INSPECTION_PATH}/Test/Php/junit_phpcs.xml \
-sj ${INSPECTION_PATH}/Test/Js/junit_eslint.xml \
-a ${INSPECTION_PATH}/Test/Php/phpstan.json \
-c ${INSPECTION_PATH}/Test/Php/coverage.xml \
-u ${INSPECTION_PATH}/Test/Php/junit_php.xml \
-d ${INSPECTION_PATH}/Test/ReportExternal \
-s ${OUTPUT_PATH}/phpcs.xml \
-sj ${OUTPUT_PATH}/junit_eslint.xml \
-a ${OUTPUT_PATH}/phpstan.json \
-c ${OUTPUT_PATH}/coverage.xml \
-u ${OUTPUT_PATH}/junit_php.xml \
-d ${OUTPUT_PATH}/ReportExternal \
--version 1.0.0

View File

@ -1,80 +1,162 @@
const {By,Key,Builder} = require("selenium-webdriver");
require("chromedriver");
const chrome = require('selenium-webdriver/chrome');
let fs = require('fs');
let path = require('path');
const delay = ms => new Promise(resolve => setTimeout(resolve, ms));
async function Screenshot(url, xpath, output) {
let driver = await new Builder().forBrowser("chrome").build();
let driver = await new Builder().forBrowser("chrome").build();
await driver.get(url).then(function () {
return driver.manage().setTimeouts({implicit: 3000});
}).then(function () {
return driver.manage().window().setRect({width: 1440, height: 1024});
}).then(function () {
return driver.findElement(By.id("iLoginButton")).click();
}).then(function () {
return driver.sleep(2000);
}).then(function () {
return driver.findElement(By.xpath(xpath));
}).then(function (ele) {
return ele.takeScreenshot(true);
}).then(function (encodedString) {
return fs.writeFileSync(output, encodedString, 'base64');
});
let dir = path.dirname(output);
if (!fs.existsSync(dir)) {
fs.mkdirSync(dir, { recursive: true });
}
return driver.quit();
await driver.get(url).then(function () {
return driver.manage().setTimeouts({implicit: 3000});
}).then(function () {
return driver.manage().window().setRect({width: 1024, height: 800});
}).then(function () {
return driver.findElement(By.id("iLoginButton")).click();
}).then(function () {
return driver.sleep(2000);
}).then(function () {
return driver.findElement(By.xpath(xpath));
}).then(function (ele) {
return ele.takeScreenshot(true);
}).then(function (encodedString) {
return fs.writeFileSync(output, encodedString, 'base64');
});
return driver.quit();
}
Screenshot(
'http://127.0.0.1/admin/settings/general#c-tab-2',
'//form[@id="fLocalization"]',
__dirname + '/../../Modules/Admin/Docs/Help/img/general/settings-localization.png'
).then(function () {
Screenshot(
'http://127.0.0.1/admin/settings/general#c-tab-2',
'//div[@id="settings-localization-time"]',
__dirname + '/../../Modules/Admin/Docs/Help/img/general/settings-localization-time.png'
);
}).then(function () {
Screenshot(
'http://127.0.0.1/admin/settings/general#c-tab-2',
'//div[@id="settings-localization-numeric"]',
__dirname + '/../../Modules/Admin/Docs/Help/img/general/settings-localization-numeric.png'
);
}).then(function () {
Screenshot(
'http://127.0.0.1/admin/settings/general#c-tab-2',
'//div[@id="settings-localization-precision"]',
__dirname + '/../../Modules/Admin/Docs/Help/img/general/settings-localization-precision.png'
);
}).then(function () {
Screenshot(
'http://127.0.0.1/admin/settings/general#c-tab-2',
'//div[@id="settings-localization-weight"]',
__dirname + '/../../Modules/Admin/Docs/Help/img/general/settings-localization-weight.png'
);
}).then(function () {
Screenshot(
'http://127.0.0.1/admin/settings/general#c-tab-2',
'//div[@id="settings-localization-speed"]',
__dirname + '/../../Modules/Admin/Docs/Help/img/general/settings-localization-speed.png'
);
}).then(function () {
Screenshot(
'http://127.0.0.1/admin/settings/general#c-tab-2',
'//div[@id="settings-localization-length"]',
__dirname + '/../../Modules/Admin/Docs/Help/img/general/settings-localization-length.png'
);
}).then(function () {
Screenshot(
'http://127.0.0.1/admin/settings/general#c-tab-2',
'//div[@id="settings-localization-area"]',
__dirname + '/../../Modules/Admin/Docs/Help/img/general/settings-localization-area.png'
);
}).then(function () {
Screenshot(
'http://127.0.0.1/admin/settings/general#c-tab-2',
'//div[@id="settings-localization-volume"]',
__dirname + '/../../Modules/Admin/Docs/Help/img/general/settings-localization-volume.png'
);
});
const src = [
// Help
[
'http://192.168.178.38/en/help/general',
'//*[@id="content"]',
__dirname + '/../../Modules/Help/Docs/Help/img/help-general-readme.png'
],
[
'http://192.168.178.38/en/help/module/list',
'//*[@id="content"]',
__dirname + '/../../Modules/Help/Docs/Help/img/help-general-module-list.png'
],
[
'http://192.168.178.38/en/backend/help/module/single?id=Admin',
'//*[@id="content"]',
__dirname + '/../../Modules/Help/Docs/Help/img/help-general-module-readme.png'
],
[
'http://192.168.178.38/en/backend/help/module/single?id=Admin&page=Dev%2Fstructure',
'//*[@id="content"]',
__dirname + '/../../Modules/Help/Docs/Help/img/help-general-module-structure.png'
],
[
'http://192.168.178.38/en/help/developer?id=Admin&page=Dev%2Fstructure',
'//*[@id="content"]',
__dirname + '/../../Modules/Help/Docs/Help/img/help-developer-readme.png'
],
// Groups
[
'http://192.168.178.38/en/admin/group/settings?id=3#c-tab-3',
'//*[@id="permissionForm"]',
__dirname + '/../../Modules/Admin/Docs/Help/img/admin-group-settings-permission-form.png'
],
[
'http://192.168.178.38/en/admin/group/settings?id=3#c-tab-3',
'//*[@id="igroup-tabs"]/div[2]/div[3]/div/div[2]/div',
__dirname + '/../../Modules/Admin/Docs/Help/img/admin-group-settings-permission-list.png'
],
// Accounts
[
'http://192.168.178.38/en/admin/account/settings?id=1#c-tab-3',
'//*[@id="permissionForm"]',
__dirname + '/../../Modules/Admin/Docs/Help/img/admin-account-settings-permission-form.png'
],
[
'http://192.168.178.38/en/admin/account/settings?id=1#c-tab-3',
'//*[@id="iaccount-tabs"]/div[2]/div[3]/div/div[2]/div',
__dirname + '/../../Modules/Admin/Docs/Help/img/admin-account-settings-permission-list.png'
],
// Modules
[
'http://192.168.178.38/en/admin/module/info?id=Admin',
'//*[@id="content"]',
__dirname + '/../../Modules/Admin/Docs/Help/img/admin-module-info.png'
],
[
'http://192.168.178.38/en/admin/module/settings?id=Admin#c-tab-1',
'//*[@id="content"]',
__dirname + '/../../Modules/Admin/Docs/Help/img/admin-module-settings-general.png'
],
[
'http://192.168.178.38/en/admin/module/navigation/list?id=Admin',
'//*[@id="content"]',
__dirname + '/../../Modules/Admin/Docs/Help/img/admin-module-settings-navigation.png'
],
[
'http://192.168.178.38/en/admin/module/route/list?id=Admin',
'//*[@id="content"]',
__dirname + '/../../Modules/Admin/Docs/Help/img/admin-module-settings-routes.png'
],
[
'http://192.168.178.38/en/admin/module/hook/list?id=Admin',
'//*[@id="content"]',
__dirname + '/../../Modules/Admin/Docs/Help/img/admin-module-settings-hooks.png'
],
[
'http://192.168.178.38/en/admin/module/log?id=Admin',
'//*[@id="content"]',
__dirname + '/../../Modules/Admin/Docs/Help/img/admin-module-settings-logs.png'
],
// Admin-settings
[
'http://192.168.178.38/en/admin/module/settings?id=Admin#c-tab-1',
'//*[@id="content"]',
__dirname + '/../../Modules/Admin/Docs/Help/img/admin-module-admin-settings-general.png'
],
[
'http://192.168.178.38/en/admin/module/settings?id=Admin#c-tab-2',
'//*[@id="content"]',
__dirname + '/../../Modules/Admin/Docs/Help/img/admin-module-admin-settings-localization.png'
],
[
'http://192.168.178.38/en/admin/module/settings?id=Admin#c-tab-3',
'//*[@id="content"]',
__dirname + '/../../Modules/Admin/Docs/Help/img/admin-module-admin-settings-design.png'
],
[
'http://192.168.178.38/en/admin/module/settings?id=Admin#c-tab-5',
'//*[@id="content"]',
__dirname + '/../../Modules/Admin/Docs/Help/img/admin-module-admin-settings-list.png'
],
];
const length = src.length;
(async function loop() {
for (let i = 0; i < length; ++i) {
try {
Screenshot(
src[i][0],
src[i][1],
src[i][2]
);
await delay(1000);
} catch(error) {
console.error(error);
}
}
})();
// "C:\Program Files\nodejs\node.exe" Build/Js/createImages.js

View File

@ -1,15 +0,0 @@
<?php
declare(strict_types=1);
$postBody = $_POST['payload'] ?? '';
$payload = \json_decode($postBody, true);
if (isset($payload['organization'], $payload['organization']['login'])
&& $payload['organization']['login'] === 'Karaka'
) {
\shell_exec('./buildProject.sh > /dev/null 2>/dev/null &');
echo 'Installing';
} else {
echo 'Invalid payload';
}

View File

@ -1,95 +0,0 @@
#!/bin/bash
# Include config
. config.sh
# Clean setup
echo "#################################################"
echo "Remove old setup"
echo "#################################################"
# Previous cleanup
rm -r -f ${ROOT_PATH}
rm -r -f ${BASE_PATH}/phpOMS
rm -r -f ${BASE_PATH}/jsOMS
rm -r -f ${BASE_PATH}/cssOMS
rm -r -f ${TOOLS_PATH}
rm -r -f ${INSPECTION_PATH}
mkdir -p ${INSPECTION_PATH}
cd ${BASE_PATH}
echo "#################################################"
echo "Setup repositories"
echo "#################################################"
# Create git repositories
for i in "${GITHUB_URL[@]}"
do
git clone -b ${GIT_BRANCH} $i >/dev/null
done
cd ${ROOT_PATH}
git submodule update --init --recursive >/dev/null
git submodule foreach git checkout develop >/dev/null
echo "#################################################"
echo "Setup build output"
echo "#################################################"
# Creating directories for inspection
mkdir -p ${INSPECTION_PATH}/logs
mkdir -p ${INSPECTION_PATH}/Framework/logs
mkdir -p ${INSPECTION_PATH}/Framework/metrics
#mkdir -p ${INSPECTION_PATH}/Framework/pdepend
mkdir -p ${INSPECTION_PATH}/Framework/phpcs
mkdir -p ${INSPECTION_PATH}/Framework/phpcpd
mkdir -p ${INSPECTION_PATH}/Framework/linting
mkdir -p ${INSPECTION_PATH}/Framework/html
mkdir -p ${INSPECTION_PATH}/Modules/logs
mkdir -p ${INSPECTION_PATH}/Modules/metrics
#mkdir -p ${INSPECTION_PATH}/Modules/pdepend
mkdir -p ${INSPECTION_PATH}/Modules/phpcs
mkdir -p ${INSPECTION_PATH}/Modules/phpcpd
mkdir -p ${INSPECTION_PATH}/Modules/linting
mkdir -p ${INSPECTION_PATH}/Modules/html
mkdir -p ${INSPECTION_PATH}/Web/logs
mkdir -p ${INSPECTION_PATH}/Web/metrics
#mkdir -p ${INSPECTION_PATH}/Web/pdepend
mkdir -p ${INSPECTION_PATH}/Web/phpcs
mkdir -p ${INSPECTION_PATH}/Web/phpcpd
mkdir -p ${INSPECTION_PATH}/Web/linting
mkdir -p ${INSPECTION_PATH}/Web/html
mkdir -p ${INSPECTION_PATH}/Framework
mkdir -p ${INSPECTION_PATH}/Web
mkdir -p ${INSPECTION_PATH}/Model
mkdir -p ${INSPECTION_PATH}/Modules
mkdir -p ${INSPECTION_PATH}/Test/Php
mkdir -p ${INSPECTION_PATH}/Test/Js
mkdir -p ${INSPECTION_PATH}/Test/sitespeed
mkdir -p ${INSPECTION_PATH}/Sql
# Permission handling
chmod -R 777 ${ROOT_PATH}
# Setup tools for inspection
mkdir -p ${TOOLS_PATH}
echo "#################################################"
echo "Setup tools"
echo "#################################################"
cd ${ROOT_PATH}
composer install
npm install
cd ${BUILD_PATH}
# Run inspection
. ${BUILD_PATH}/Inspection/inspect.sh

View File

@ -1,21 +1,19 @@
#!/bin/bash
# Paths
BASE_PATH="/var/www/html"
ROOT_PATH="/var/www/html/Karaka"
BUILD_PATH="/var/www/html/Build"
BASE_PATH="${BUILD_PATH}/.."
ROOT_PATH="${BUILD_PATH}/.."
TOOLS_PATH="/var/www/html/Tools"
TOOLS_PATH="${BUILD_PATH}/.."
RELEASE_PATH="/var/www/html/Release"
INSPECTION_PATH="/var/www/html/Inspection"
# Web
WEB_URL="http://jingga.app"
MAIL_ADDR=""
# Authentications
DB_USER="root"
DB_PASSWORD="root"
DB_USER="test"
DB_PASSWORD="orange"
# Git variables
GITHUB_URL[0]="https://github.com/Karaka-Management/Karaka.git"

47
php.sh Normal file
View File

@ -0,0 +1,47 @@
#!/bin/bash
# Include config
BUILD_PATH="$(dirname "$(readlink -f "$0")")"
. "${BUILD_PATH}/config.sh"
if [ $# -eq 0 ]; then
echo "No parameters provided."
exit 1
fi
REPO_PATH="$1"
BASE_NAME=$(basename "$REPO_PATH" .git)
INSPECTION_PATH="$(realpath "$2")/${BASE_NAME}"
OUTPUT_PATH="$(realpath "$2")/${BASE_NAME}/build"
if [ "$OUTPUT_PATH" == "/" ] || [ "$INSPECTION_PATH" == "/" ]; then
echo "Bad path"
exit 1
fi
rm -rf "${INSPECTION_PATH}"
git clone --recurse-submodules ${REPO_PATH} ${INSPECTION_PATH}
git -C ${INSPECTION_PATH} checkout develop
git -C ${INSPECTION_PATH} pull
git -C ${INSPECTION_PATH} submodule foreach 'git checkout develop || true'
git -C ${INSPECTION_PATH} submodule foreach 'git pull || true'
mkdir -p "${OUTPUT_PATH}"
mkdir -p "${OUTPUT_PATH}/ReportExternal"
mkdir -p "${OUTPUT_PATH}/coverage"
mkdir -p "${OUTPUT_PATH}/phpunit"
mkdir -p "${OUTPUT_PATH}/metrics"
if [[ ${BASE_NAME} == *"oms-"* ]]; then
mkdir -p ${INSPECTION_PATH}/MainRepository
cp -R ${INSPECTION_PATH}/../../Karaka/* ${INSPECTION_PATH}/MainRepository
# git clone --recurse-submodules https://github.com/Karaka-Management/Karaka.git ${INSPECTION_PATH}/MainRepository
# git -C ${INSPECTION_PATH}/MainRepository checkout develop
# git -C ${INSPECTION_PATH}/MainRepository pull
# git -C ${INSPECTION_PATH}/MainRepository submodule foreach 'git checkout develop || true'
# git -C ${INSPECTION_PATH}/MainRepository submodule foreach 'git pull || true'
fi
# Run inspection
. ${BUILD_PATH}/Inspection/inspect.sh