mirror of https://github.com/MISP/MISP
commit
ba1387edb5
|
@ -67,84 +67,83 @@ jobs:
|
||||||
# Runs a set of commands using the runners shell
|
# Runs a set of commands using the runners shell
|
||||||
- name: Install deps
|
- name: Install deps
|
||||||
run: |
|
run: |
|
||||||
sudo chown $USER:www-data $HOME/.composer
|
sudo chown $USER:www-data $HOME/.composer
|
||||||
pushd app
|
pushd app
|
||||||
sudo -H -u $USER composer config --no-plugins allow-plugins.composer/installers true
|
sudo -H -u $USER composer config --no-plugins allow-plugins.composer/installers true
|
||||||
sudo -H -u $USER composer install --no-progress
|
sudo -H -u $USER composer install --no-progress
|
||||||
popd
|
popd
|
||||||
cp -fa INSTALL/setup/config.php app/Plugin/CakeResque/Config/config.php
|
cp -fa INSTALL/setup/config.php app/Plugin/CakeResque/Config/config.php
|
||||||
# Set perms
|
# Set perms
|
||||||
sudo chown -R $USER:www-data `pwd`
|
sudo chown -R $USER:www-data `pwd`
|
||||||
sudo chmod -R 775 `pwd`
|
sudo chmod -R 775 `pwd`
|
||||||
sudo chmod -R g+ws `pwd`/app/tmp
|
sudo chmod -R g+ws `pwd`/app/tmp
|
||||||
sudo chmod -R g+ws `pwd`/app/tmp/cache
|
sudo chmod -R g+ws `pwd`/app/tmp/cache
|
||||||
sudo chmod -R g+ws `pwd`/app/tmp/cache/persistent
|
sudo chmod -R g+ws `pwd`/app/tmp/cache/persistent
|
||||||
sudo chmod -R g+ws `pwd`/app/tmp/cache/models
|
sudo chmod -R g+ws `pwd`/app/tmp/cache/models
|
||||||
sudo chmod -R g+ws `pwd`/app/tmp/logs
|
sudo chmod -R g+ws `pwd`/app/tmp/logs
|
||||||
sudo chmod -R g+ws `pwd`/app/files
|
sudo chmod -R g+ws `pwd`/app/files
|
||||||
sudo chmod -R g+ws `pwd`/app/files/scripts/tmp
|
sudo chmod -R g+ws `pwd`/app/files/scripts/tmp
|
||||||
sudo chown -R $USER:www-data `pwd`
|
sudo chown -R $USER:www-data `pwd`
|
||||||
# Resque perms
|
# Resque perms
|
||||||
sudo chown -R $USER:www-data `pwd`/app/Plugin/CakeResque/tmp
|
sudo chown -R $USER:www-data `pwd`/app/Plugin/CakeResque/tmp
|
||||||
sudo chmod -R 755 `pwd`/app/Plugin/CakeResque/tmp
|
sudo chmod -R 755 `pwd`/app/Plugin/CakeResque/tmp
|
||||||
# install MySQL
|
# install MySQL
|
||||||
sudo chmod -R 777 `pwd`/INSTALL
|
sudo chmod -R 777 `pwd`/INSTALL
|
||||||
mysql -h 127.0.0.1 --port 3306 -u root -pbar -e "SET GLOBAL sql_mode = 'STRICT_ALL_TABLES';"
|
mysql -h 127.0.0.1 --port 3306 -u root -pbar -e "SET GLOBAL sql_mode = 'STRICT_ALL_TABLES';"
|
||||||
mysql -h 127.0.0.1 --port 3306 -u root -pbar -e "grant usage on *.* to misp@'%' identified by 'blah';"
|
mysql -h 127.0.0.1 --port 3306 -u root -pbar -e "grant usage on *.* to misp@'%' identified by 'blah';"
|
||||||
mysql -h 127.0.0.1 --port 3306 -u root -pbar -e "grant all privileges on misp.* to misp@'%';"
|
mysql -h 127.0.0.1 --port 3306 -u root -pbar -e "grant all privileges on misp.* to misp@'%';"
|
||||||
mysql -h 127.0.0.1 --port 3306 -u misp -pblah misp < INSTALL/MYSQL.sql
|
mysql -h 127.0.0.1 --port 3306 -u misp -pblah misp < INSTALL/MYSQL.sql
|
||||||
# configure apache virtual hosts
|
# configure apache virtual hosts
|
||||||
sudo chmod -R 777 `pwd`/build
|
sudo chmod -R 777 `pwd`/build
|
||||||
sudo mkdir -p /etc/apache2/sites-available
|
sudo mkdir -p /etc/apache2/sites-available
|
||||||
sudo cp -f build/github-action-ci-apache /etc/apache2/sites-available/misp.conf
|
sudo cp -f build/github-action-ci-apache /etc/apache2/sites-available/misp.conf
|
||||||
sudo sed -e "s?%GITHUB_WORKSPACE%?$(pwd)?g" --in-place /etc/apache2/sites-available/misp.conf
|
sudo sed -e "s?%GITHUB_WORKSPACE%?$(pwd)?g" --in-place /etc/apache2/sites-available/misp.conf
|
||||||
sudo sed -e "s?%HOST%?${HOST}?g" --in-place /etc/apache2/sites-available/misp.conf
|
sudo sed -e "s?%HOST%?${HOST}?g" --in-place /etc/apache2/sites-available/misp.conf
|
||||||
sudo a2dissite 000-default
|
sudo a2dissite 000-default
|
||||||
sudo a2ensite misp.conf
|
sudo a2ensite misp.conf
|
||||||
cat /etc/apache2/sites-enabled/misp.conf
|
cat /etc/apache2/sites-enabled/misp.conf
|
||||||
sudo a2enmod rewrite
|
sudo a2enmod rewrite
|
||||||
sudo systemctl restart apache2
|
sudo systemctl restart apache2
|
||||||
# MISP configuration
|
# MISP configuration
|
||||||
sudo chmod -R 777 `pwd`/travis
|
sudo cp app/Config/bootstrap.default.php app/Config/bootstrap.php
|
||||||
sudo cp app/Config/bootstrap.default.php app/Config/bootstrap.php
|
sudo cp build/database.php app/Config/database.php
|
||||||
sudo cp travis/database.php app/Config/database.php
|
sudo cp app/Config/core.default.php app/Config/core.php
|
||||||
sudo cp app/Config/core.default.php app/Config/core.php
|
sudo cp app/Config/config.default.php app/Config/config.php
|
||||||
sudo cp app/Config/config.default.php app/Config/config.php
|
sudo cp build/email.php app/Config/email.php
|
||||||
sudo cp travis/email.php app/Config/email.php
|
# Ensure the perms
|
||||||
# Ensure the perms
|
sudo chown -R $USER:www-data `pwd`/app/Config
|
||||||
sudo chown -R $USER:www-data `pwd`/app/Config
|
sudo chmod -R 777 `pwd`/app/Config
|
||||||
sudo chmod -R 777 `pwd`/app/Config
|
# GPG setup
|
||||||
# GPG setup
|
sudo mkdir `pwd`/.gnupg
|
||||||
sudo mkdir `pwd`/.gnupg
|
# /!\ VERY INSECURE BUT FASTER ON THE BUILD ENV OF TRAVIS
|
||||||
# /!\ VERY INSECURE BUT FASTER ON THE BUILD ENV OF TRAVIS
|
sudo cp -a /dev/urandom /dev/random
|
||||||
sudo cp -a /dev/urandom /dev/random
|
sudo gpg --no-tty --no-permission-warning --pinentry-mode=loopback --passphrase "travistest" --homedir `pwd`/.gnupg --gen-key --batch `pwd`/build/gpg
|
||||||
sudo gpg --no-tty --no-permission-warning --pinentry-mode=loopback --passphrase "travistest" --homedir `pwd`/.gnupg --gen-key --batch `pwd`/travis/gpg
|
sudo gpg --list-secret-keys --homedir `pwd`/.gnupg
|
||||||
sudo gpg --list-secret-keys --homedir `pwd`/.gnupg
|
# change perms
|
||||||
# change perms
|
sudo chown -R $USER:www-data `pwd`
|
||||||
sudo chown -R $USER:www-data `pwd`
|
sudo chown -R www-data:www-data `pwd`/.gnupg
|
||||||
sudo chown -R www-data:www-data `pwd`/.gnupg
|
sudo chmod -R 700 `pwd`/.gnupg
|
||||||
sudo chmod -R 700 `pwd`/.gnupg
|
sudo usermod -a -G www-data $USER
|
||||||
sudo usermod -a -G www-data $USER
|
sudo chmod -R 777 `pwd`/app/Plugin/CakeResque/tmp/
|
||||||
sudo chmod -R 777 `pwd`/app/Plugin/CakeResque/tmp/
|
# Ensure the perms of config files
|
||||||
# Ensure the perms of config files
|
sudo chown -R $USER:www-data `pwd`/app/Config
|
||||||
sudo chown -R $USER:www-data `pwd`/app/Config
|
sudo chmod -R 777 `pwd`/app/Config
|
||||||
sudo chmod -R 777 `pwd`/app/Config
|
app/Console/cake Admin setSetting "MISP.server_settings_skip_backup_rotate" 1
|
||||||
sudo -E su $USER -c 'app/Console/cake Admin setSetting "MISP.server_settings_skip_backup_rotate" 1'
|
sudo chown -R $USER:www-data `pwd`/app/Config
|
||||||
sudo chown -R $USER:www-data `pwd`/app/Config
|
sudo chmod -R 777 `pwd`/app/Config
|
||||||
sudo chmod -R 777 `pwd`/app/Config
|
|
||||||
|
|
||||||
# fix perms (?)
|
# fix perms (?)
|
||||||
namei -m /home/runner/work
|
namei -m /home/runner/work
|
||||||
sudo chmod +x /home/runner/work
|
sudo chmod +x /home/runner/work
|
||||||
sudo chmod +x /home/runner
|
sudo chmod +x /home/runner
|
||||||
sudo chmod +x /home
|
sudo chmod +x /home
|
||||||
sudo chmod +x /
|
sudo chmod +x /
|
||||||
|
|
||||||
- name: Python setup
|
- name: Python setup
|
||||||
run: |
|
run: |
|
||||||
# Dirty install python stuff
|
# Dirty install python stuff
|
||||||
python3 -m virtualenv -p python3 ./venv
|
python3 -m virtualenv -p python3 ./venv
|
||||||
sudo -E su $USER -c 'app/Console/cake Admin setSetting "MISP.python_bin" "$GITHUB_WORKSPACE/venv/bin/python"'
|
app/Console/cake Admin setSetting "MISP.python_bin" "$GITHUB_WORKSPACE/venv/bin/python"
|
||||||
. ./venv/bin/activate
|
. ./venv/bin/activate
|
||||||
export PYTHONPATH=$PYTHONPATH:./app/files/scripts
|
export PYTHONPATH=$PYTHONPATH:./app/files/scripts
|
||||||
pip install ./PyMISP[fileobjects,email] ./app/files/scripts/python-stix ./app/files/scripts/cti-python-stix2 pyzmq redis plyara pytest
|
pip install ./PyMISP[fileobjects,email] ./app/files/scripts/python-stix ./app/files/scripts/cti-python-stix2 pyzmq redis plyara pytest
|
||||||
|
@ -152,84 +151,87 @@ jobs:
|
||||||
|
|
||||||
- name: DB Update
|
- name: DB Update
|
||||||
run: |
|
run: |
|
||||||
sudo -E su $USER -c 'app/Console/cake Admin setSetting "MISP.osuser" $USER'
|
app/Console/cake Admin setSetting "MISP.osuser" $USER
|
||||||
sudo -E su $USER -c 'app/Console/cake Admin runUpdates'
|
app/Console/cake Admin runUpdates
|
||||||
sudo -E su $USER -c 'app/Console/cake Admin schemaDiagnostics'
|
app/Console/cake Admin schemaDiagnostics
|
||||||
|
|
||||||
- name: Configure MISP
|
- name: Configure MISP
|
||||||
run: |
|
run: |
|
||||||
sudo -u $USER app/Console/cake User init | sudo tee ./key.txt
|
app/Console/cake User init | sudo tee ./key.txt
|
||||||
echo "AUTH=`cat key.txt`" >> $GITHUB_ENV
|
echo "AUTH=`cat key.txt`" >> $GITHUB_ENV
|
||||||
sudo -u $USER app/Console/cake Admin setSetting "Session.autoRegenerate" 0
|
app/Console/cake Admin setSetting "Session.autoRegenerate" 0
|
||||||
sudo -u $USER app/Console/cake Admin setSetting "Session.timeout" 600
|
app/Console/cake Admin setSetting "Session.timeout" 600
|
||||||
sudo -u $USER app/Console/cake Admin setSetting "Session.cookieTimeout" 3600
|
app/Console/cake Admin setSetting "Session.cookieTimeout" 3600
|
||||||
sudo -u $USER app/Console/cake Admin setSetting "MISP.host_org_id" 1
|
app/Console/cake Admin setSetting "MISP.host_org_id" 1
|
||||||
sudo -u $USER app/Console/cake Admin setSetting "MISP.email" "info@admin.test"
|
app/Console/cake Admin setSetting "MISP.email" "info@admin.test"
|
||||||
sudo -u $USER app/Console/cake Admin setSetting "MISP.disable_emailing" false
|
app/Console/cake Admin setSetting "MISP.disable_emailing" false
|
||||||
sudo -u $USER app/Console/cake Admin setSetting --force "debug" true
|
app/Console/cake Admin setSetting --force "debug" true
|
||||||
sudo -u $USER app/Console/cake Admin setSetting "Plugin.CustomAuth_disable_logout" false
|
app/Console/cake Admin setSetting "Plugin.CustomAuth_disable_logout" false
|
||||||
sudo -u $USER app/Console/cake Admin setSetting "MISP.redis_host" "127.0.0.1"
|
app/Console/cake Admin setSetting "MISP.redis_host" "127.0.0.1"
|
||||||
sudo -u $USER app/Console/cake Admin setSetting "MISP.redis_port" 6379
|
app/Console/cake Admin setSetting "MISP.redis_port" 6379
|
||||||
sudo -u $USER app/Console/cake Admin setSetting "MISP.redis_database" 13
|
app/Console/cake Admin setSetting "MISP.redis_database" 13
|
||||||
sudo -u $USER app/Console/cake Admin setSetting "MISP.redis_password" ""
|
app/Console/cake Admin setSetting "MISP.redis_password" ""
|
||||||
sudo -u $USER app/Console/cake Admin setSetting "GnuPG.email" "info@admin.test"
|
app/Console/cake Admin setSetting "GnuPG.email" "info@admin.test"
|
||||||
sudo -u $USER app/Console/cake Admin setSetting "GnuPG.homedir" "`pwd`/.gnupg"
|
app/Console/cake Admin setSetting "GnuPG.homedir" "`pwd`/.gnupg"
|
||||||
sudo -u $USER app/Console/cake Admin setSetting "GnuPG.password" "travistest"
|
app/Console/cake Admin setSetting "GnuPG.password" "travistest"
|
||||||
sudo -u $USER app/Console/cake Admin setSetting "MISP.download_gpg_from_homedir" 1
|
app/Console/cake Admin setSetting "MISP.download_gpg_from_homedir" 1
|
||||||
sudo -u $USER app/Console/cake Admin setSetting "Plugin.ZeroMQ_redis_host" "127.0.0.1"
|
app/Console/cake Admin setSetting "Plugin.ZeroMQ_redis_host" "127.0.0.1"
|
||||||
sudo -u $USER app/Console/cake Admin setSetting "Plugin.ZeroMQ_redis_port" 6379
|
app/Console/cake Admin setSetting "Plugin.ZeroMQ_redis_port" 6379
|
||||||
sudo -u $USER app/Console/cake Admin setSetting "Plugin.ZeroMQ_redis_database" 1
|
app/Console/cake Admin setSetting "Plugin.ZeroMQ_redis_database" 1
|
||||||
sudo -u $USER app/Console/cake Admin setSetting "Plugin.ZeroMQ_redis_password" ""
|
app/Console/cake Admin setSetting "Plugin.ZeroMQ_redis_password" ""
|
||||||
sudo -u $USER app/Console/cake Admin setSetting "Plugin.ZeroMQ_enable" 1
|
app/Console/cake Admin setSetting "Plugin.ZeroMQ_enable" 1
|
||||||
sudo -u $USER app/Console/cake Admin setSetting "Plugin.ZeroMQ_audit_notifications_enable" 1
|
app/Console/cake Admin setSetting "Plugin.ZeroMQ_audit_notifications_enable" 1
|
||||||
|
|
||||||
- name: Update Galaxies
|
- name: Update Galaxies
|
||||||
run: sudo -E su $USER -c 'app/Console/cake Admin updateGalaxies'
|
run: app/Console/cake Admin updateGalaxies
|
||||||
|
|
||||||
- name: Update Taxonomies
|
- name: Update Taxonomies
|
||||||
run: sudo -E su $USER -c 'app/Console/cake Admin updateTaxonomies'
|
run: app/Console/cake Admin updateTaxonomies
|
||||||
|
|
||||||
- name: Update Warninglists
|
- name: Update Warninglists
|
||||||
run: sudo -E su $USER -c 'app/Console/cake Admin updateWarningLists --verbose'
|
run: app/Console/cake Admin updateWarningLists --verbose
|
||||||
|
|
||||||
- name: Update Noticelists
|
- name: Update Noticelists
|
||||||
run: sudo -E su $USER -c 'app/Console/cake Admin updateNoticeLists'
|
run: app/Console/cake Admin updateNoticeLists
|
||||||
|
|
||||||
- name: Update Object Templates
|
- name: Update Object Templates
|
||||||
run: sudo -E su $USER -c 'app/Console/cake Admin updateObjectTemplates 1'
|
run: app/Console/cake Admin updateObjectTemplates 1
|
||||||
|
|
||||||
- name: Turn MISP live
|
- name: Turn MISP live
|
||||||
run: sudo -E su $USER -c 'app/Console/cake Admin live 1'
|
run: app/Console/cake Admin live 1
|
||||||
|
|
||||||
- name: Check if Redis is ready
|
- name: Check if Redis is ready
|
||||||
run: sudo -E su $USER -c 'app/Console/cake Admin redisReady'
|
run: app/Console/cake Admin redisReady
|
||||||
|
|
||||||
- name: Start workers
|
- name: Start workers
|
||||||
run: |
|
run: |
|
||||||
sudo chmod +x app/Console/worker/start.sh
|
sudo chmod +x app/Console/worker/start.sh
|
||||||
sudo -u www-data 'app/Console/worker/start.sh'
|
sudo -u www-data 'app/Console/worker/start.sh'
|
||||||
|
|
||||||
- name: Test if apache is working
|
- name: Test if apache is working
|
||||||
run: |
|
run: |
|
||||||
sudo systemctl status apache2 --no-pager -l
|
sudo systemctl status apache2 --no-pager -l
|
||||||
sudo apache2ctl -S
|
sudo apache2ctl -S
|
||||||
curl http://${HOST}
|
curl -sS http://${HOST}
|
||||||
sudo chmod -R 777 PyMISP
|
|
||||||
pushd PyMISP
|
- name: Check if dependencies working as expected
|
||||||
echo 'url = "http://'${HOST}'"' >> tests/keys.py
|
run: |
|
||||||
echo 'key = "'${AUTH}'"' >> tests/keys.py
|
sudo chmod -R 777 PyMISP
|
||||||
cat tests/keys.py
|
pushd PyMISP
|
||||||
popd
|
echo 'url = "http://'${HOST}'"' >> tests/keys.py
|
||||||
. ./venv/bin/activate
|
echo 'key = "'${AUTH}'"' >> tests/keys.py
|
||||||
pushd tests
|
cat tests/keys.py
|
||||||
bash ./build-test.sh
|
popd
|
||||||
popd
|
. ./venv/bin/activate
|
||||||
deactivate
|
pushd tests
|
||||||
|
bash ./build-test.sh
|
||||||
|
popd
|
||||||
|
deactivate
|
||||||
|
|
||||||
- name: Run PHP tests
|
- name: Run PHP tests
|
||||||
run: |
|
run: |
|
||||||
./app/Vendor/bin/parallel-lint --exclude app/Lib/cakephp/ --exclude app/Vendor/ -e php,ctp app/
|
./app/Vendor/bin/parallel-lint --exclude app/Lib/cakephp/ --exclude app/Vendor/ -e php,ctp app/
|
||||||
sudo -u www-data ./app/Vendor/bin/phpunit app/Test/
|
sudo -u www-data ./app/Vendor/bin/phpunit app/Test/
|
||||||
|
|
||||||
- name: Clone test files
|
- name: Clone test files
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
|
@ -237,31 +239,30 @@ jobs:
|
||||||
repository: viper-framework/viper-test-files
|
repository: viper-framework/viper-test-files
|
||||||
path: PyMISP/tests/viper-test-files
|
path: PyMISP/tests/viper-test-files
|
||||||
|
|
||||||
|
|
||||||
- name: Run tests
|
- name: Run tests
|
||||||
run: |
|
run: |
|
||||||
pushd tests
|
pushd tests
|
||||||
./curl_tests_GH.sh $AUTH $HOST
|
./curl_tests_GH.sh $AUTH $HOST
|
||||||
popd
|
popd
|
||||||
|
|
||||||
sudo chmod -R g+ws `pwd`/app/tmp/logs
|
sudo chmod -R g+ws `pwd`/app/tmp/logs
|
||||||
|
|
||||||
. ./venv/bin/activate
|
. ./venv/bin/activate
|
||||||
pushd PyMISP
|
pushd PyMISP
|
||||||
cp tests/keys.py .
|
cp tests/keys.py .
|
||||||
python -m pytest -v --durations=0 tests/test_mispevent.py
|
python -m pytest -v --durations=0 tests/test_mispevent.py
|
||||||
python -m pytest -v --durations=0 tests/testlive_comprehensive.py
|
python -m pytest -v --durations=0 tests/testlive_comprehensive.py
|
||||||
popd
|
popd
|
||||||
python tests/testlive_security.py -v
|
python tests/testlive_security.py -v
|
||||||
python tests/testlive_sync.py
|
python tests/testlive_sync.py
|
||||||
python tests/testlive_comprehensive_local.py -v
|
python tests/testlive_comprehensive_local.py -v
|
||||||
cp PyMISP/tests/keys.py PyMISP/examples/events/
|
cp PyMISP/tests/keys.py PyMISP/examples/events/
|
||||||
pushd PyMISP/examples/events/
|
pushd PyMISP/examples/events/
|
||||||
python ./create_massive_dummy_events.py -l 5 -a 30
|
python ./create_massive_dummy_events.py -l 5 -a 30
|
||||||
popd
|
popd
|
||||||
pip install jsonschema
|
pip install jsonschema
|
||||||
python tools/misp-feed/validate.py
|
python tools/misp-feed/validate.py
|
||||||
deactivate
|
deactivate
|
||||||
|
|
||||||
- name: Check requirements.txt
|
- name: Check requirements.txt
|
||||||
run: python tests/check_requirements.py
|
run: python tests/check_requirements.py
|
||||||
|
@ -270,13 +271,13 @@ jobs:
|
||||||
if: ${{ always() }}
|
if: ${{ always() }}
|
||||||
# update logs_test.sh when adding more logsources here
|
# update logs_test.sh when adding more logsources here
|
||||||
run: |
|
run: |
|
||||||
tail -n +1 `pwd`/app/tmp/logs/*
|
tail -n +1 `pwd`/app/tmp/logs/*
|
||||||
tail -n +1 /var/log/apache2/*.log
|
tail -n +1 /var/log/apache2/*.log
|
||||||
|
|
||||||
sudo -u $USER app/Console/cake Log export /tmp/logs.json.gz --without-changes
|
app/Console/cake Log export /tmp/logs.json.gz --without-changes
|
||||||
zcat /tmp/logs.json.gz
|
zcat /tmp/logs.json.gz
|
||||||
|
|
||||||
- name: Errors in Logs
|
- name: Errors in Logs
|
||||||
if: ${{ always() }}
|
if: ${{ always() }}
|
||||||
run: |
|
run: |
|
||||||
./tests/logs_tests.sh
|
./tests/logs_tests.sh
|
195
.travis.yml
195
.travis.yml
|
@ -1,195 +0,0 @@
|
||||||
language: php
|
|
||||||
|
|
||||||
php:
|
|
||||||
- 7.2
|
|
||||||
- 7.3
|
|
||||||
- 7.4
|
|
||||||
- nightly
|
|
||||||
|
|
||||||
services:
|
|
||||||
- redis
|
|
||||||
|
|
||||||
sudo: required
|
|
||||||
dist: bionic
|
|
||||||
|
|
||||||
addons:
|
|
||||||
mariadb: '10.2'
|
|
||||||
hosts:
|
|
||||||
- misp.local
|
|
||||||
- localhost
|
|
||||||
|
|
||||||
before_install:
|
|
||||||
- git config --global user.name "TravisCI"
|
|
||||||
- export PATH="$HOME/.local/bin:$PATH"
|
|
||||||
|
|
||||||
install:
|
|
||||||
- date
|
|
||||||
- sudo apt-get -y update
|
|
||||||
# Install haveged, because Travis lacks entropy.
|
|
||||||
- sudo apt-get -y install haveged python3 python3-venv python3-pip python3-dev python3-nose python3-redis python3-lxml python3-dateutil python3-msgpack libxml2-dev libzmq3-dev zlib1g-dev apache2 curl php-mysql php-dev php-cli libapache2-mod-php libfuzzy-dev php-mbstring libonig4 php-json php-xml php-opcache php-readline php-redis php-gnupg php-gd
|
|
||||||
- sudo pip3 install --upgrade pip setuptools requests
|
|
||||||
- sudo pip3 install --upgrade -r requirements.txt
|
|
||||||
- sudo pip3 install --upgrade -r requirements-dev.txt
|
|
||||||
- pip3 install --user poetry
|
|
||||||
- phpenv rehash
|
|
||||||
- sudo mkdir $HOME/.composer ; sudo chown $USER:www-data $HOME/.composer
|
|
||||||
- pushd app
|
|
||||||
- sudo -H -u $USER php composer.phar install --no-progress
|
|
||||||
- sudo phpenmod redis
|
|
||||||
- sudo phpenmod gnupg
|
|
||||||
- popd
|
|
||||||
- cp -fa INSTALL/setup/config.php app/Plugin/CakeResque/Config/config.php
|
|
||||||
# Set perms
|
|
||||||
- sudo chown -R $USER:www-data `pwd`
|
|
||||||
- sudo chmod -R 775 `pwd`
|
|
||||||
- sudo chmod -R g+ws `pwd`/app/tmp
|
|
||||||
- sudo chmod -R g+ws `pwd`/app/tmp/cache
|
|
||||||
- sudo chmod -R g+ws `pwd`/app/tmp/cache/persistent
|
|
||||||
- sudo chmod -R g+ws `pwd`/app/tmp/cache/models
|
|
||||||
- sudo chmod -R g+ws `pwd`/app/tmp/logs
|
|
||||||
- sudo chmod -R g+ws `pwd`/app/files
|
|
||||||
- sudo chmod -R g+ws `pwd`/app/files/scripts/tmp
|
|
||||||
- sudo chown -R $USER:www-data `pwd`
|
|
||||||
# Resque perms
|
|
||||||
- sudo chown -R $USER:www-data `pwd`/app/Plugin/CakeResque/tmp
|
|
||||||
- sudo chmod -R 755 `pwd`/app/Plugin/CakeResque/tmp
|
|
||||||
# install MySQL
|
|
||||||
- sudo chmod -R 777 `pwd`/INSTALL
|
|
||||||
- mysql -u root -e "SET GLOBAL sql_mode = 'STRICT_ALL_TABLES';"
|
|
||||||
- mysql -u root -e 'create database misp;'
|
|
||||||
- mysql -u root -e "grant usage on *.* to misp@localhost identified by 'blah'";
|
|
||||||
- mysql -u root -e "grant all privileges on misp.* to misp@localhost;"
|
|
||||||
- mysql -u misp -pblah misp < INSTALL/MYSQL.sql
|
|
||||||
# configure apache virtual hosts
|
|
||||||
- sudo chmod -R 777 `pwd`/build
|
|
||||||
- sudo mkdir -p /etc/apache2/sites-available
|
|
||||||
- sudo cp -f build/travis-ci-apache /etc/apache2/sites-available/misp.local.conf
|
|
||||||
- sudo sed -e "s?%TRAVIS_BUILD_DIR%?$(pwd)?g" --in-place /etc/apache2/sites-available/misp.local.conf
|
|
||||||
- sudo a2dissite 000-default
|
|
||||||
- sudo a2ensite misp.local.conf
|
|
||||||
- sudo a2enmod rewrite
|
|
||||||
- sudo service apache2 restart
|
|
||||||
# MISP configuration
|
|
||||||
- sudo chmod -R 777 `pwd`/travis
|
|
||||||
- sudo cp app/Config/bootstrap.default.php app/Config/bootstrap.php
|
|
||||||
- sudo cp travis/database.php app/Config/database.php
|
|
||||||
- sudo cp app/Config/core.default.php app/Config/core.php
|
|
||||||
- sudo cp app/Config/config.default.php app/Config/config.php
|
|
||||||
- sudo cp travis/email.php app/Config/email.php
|
|
||||||
# Ensure the perms
|
|
||||||
- sudo chown -R $USER:www-data `pwd`/app/Config
|
|
||||||
- sudo chmod -R 770 `pwd`/app/Config
|
|
||||||
# GPG setup
|
|
||||||
- sudo mkdir `pwd`/.gnupg
|
|
||||||
# /!\ VERY INSECURE BUT FASTER ON THE BUILD ENV OF TRAVIS
|
|
||||||
- sudo cp -a /dev/urandom /dev/random
|
|
||||||
- sudo gpg --no-tty --no-permission-warning --pinentry-mode=loopback --passphrase "travistest" --homedir `pwd`/.gnupg --gen-key --batch `pwd`/travis/gpg
|
|
||||||
- sudo gpg --list-secret-keys --homedir `pwd`/.gnupg
|
|
||||||
# change perms
|
|
||||||
- sudo chown -R $USER:www-data `pwd`
|
|
||||||
- sudo chmod +x /home/travis/build
|
|
||||||
- sudo chmod +x /home/travis
|
|
||||||
- sudo chmod +x /home
|
|
||||||
- sudo chmod -R 770 `pwd`/.gnupg
|
|
||||||
# Get authkey
|
|
||||||
- sudo usermod -a -G www-data $USER
|
|
||||||
- sudo -E su $USER -c 'app/Console/cake Admin runUpdates'
|
|
||||||
- sudo -E su $USER -c 'app/Console/cake userInit -q | sudo tee ./key.txt'
|
|
||||||
- sudo -E su $USER -c 'app/Console/cake Admin setSetting "Session.autoRegenerate" 0'
|
|
||||||
- sudo -E su $USER -c 'app/Console/cake Admin setSetting "Session.timeout" 600'
|
|
||||||
- sudo -E su $USER -c 'app/Console/cake Admin setSetting "Session.cookieTimeout" 3600'
|
|
||||||
- sudo -E su $USER -c 'app/Console/cake Admin setSetting "MISP.host_org_id" 1'
|
|
||||||
- sudo -E su $USER -c 'app/Console/cake Admin setSetting "MISP.email" "info@admin.test"'
|
|
||||||
- sudo -E su $USER -c 'app/Console/cake Admin setSetting "MISP.disable_emailing" false'
|
|
||||||
- sudo -E su $USER -c 'app/Console/cake Admin setSetting "debug" true'
|
|
||||||
- sudo -E su $USER -c 'app/Console/cake Admin setSetting "Plugin.CustomAuth_disable_logout" false'
|
|
||||||
- sudo -E su $USER -c 'app/Console/cake Admin setSetting "MISP.redis_host" "127.0.0.1"'
|
|
||||||
- sudo -E su $USER -c 'app/Console/cake Admin setSetting "MISP.redis_port" 6379'
|
|
||||||
- sudo -E su $USER -c 'app/Console/cake Admin setSetting "MISP.redis_database" 13'
|
|
||||||
- sudo -E su $USER -c 'app/Console/cake Admin setSetting "MISP.redis_password" ""'
|
|
||||||
- sudo -E su $USER -c 'app/Console/cake Admin setSetting "GnuPG.email" "info@admin.test"'
|
|
||||||
- sudo -E su $USER -c 'app/Console/cake Admin setSetting "GnuPG.homedir" "`pwd`/.gnupg"'
|
|
||||||
- sudo -E su $USER -c 'app/Console/cake Admin setSetting "GnuPG.password" "travistest"'
|
|
||||||
- sudo -E su $USER -c 'app/Console/cake Admin updateGalaxies'
|
|
||||||
- sudo -E su $USER -c 'app/Console/cake Admin updateTaxonomies'
|
|
||||||
- sudo -E su $USER -c 'app/Console/cake Admin updateWarningLists'
|
|
||||||
- sudo -E su $USER -c 'app/Console/cake Admin updateNoticeLists'
|
|
||||||
- sudo -E su $USER -c 'app/Console/cake Admin updateObjectTemplates 1'
|
|
||||||
- sudo -E su $USER -c 'app/Console/cake Admin setSetting "Plugin.ZeroMQ_enable" true'
|
|
||||||
- sudo -E su $USER -c 'app/Console/cake Live 1'
|
|
||||||
- sudo chmod 777 ./key.txt
|
|
||||||
- sudo chmod -R 777 ./tests
|
|
||||||
# Start workers
|
|
||||||
- sudo chmod +x app/Console/worker/start.sh
|
|
||||||
- sudo -E su $USER -c 'app/Console/worker/start.sh &'
|
|
||||||
- sleep 10
|
|
||||||
# Dirty install python stuff
|
|
||||||
- virtualenv -p python3.6 ./venv
|
|
||||||
- sudo -E su $USER -c 'app/Console/cake Admin setSetting "MISP.python_bin" "$TRAVIS_BUILD_DIR/venv/bin/python"'
|
|
||||||
- . ./venv/bin/activate
|
|
||||||
- pushd cti-python-stix2
|
|
||||||
- pip install .
|
|
||||||
- popd
|
|
||||||
- pushd PyMISP
|
|
||||||
- pip install .[fileobjects]
|
|
||||||
- popd
|
|
||||||
- pip install stix zmq redis plyara
|
|
||||||
- deactivate
|
|
||||||
|
|
||||||
before_script:
|
|
||||||
- curl http://misp.local
|
|
||||||
- AUTH=`cat key.txt`
|
|
||||||
- sudo chmod -R 777 PyMISP
|
|
||||||
- pushd PyMISP
|
|
||||||
- echo 'url = "http://misp.local"' >> tests/keys.py
|
|
||||||
- echo 'key = "'${AUTH}'"' >> tests/keys.py
|
|
||||||
- cat tests/keys.py
|
|
||||||
- popd
|
|
||||||
|
|
||||||
script:
|
|
||||||
- ./app/Vendor/bin/parallel-lint --exclude app/Lib/cakephp/ --exclude app/Vendor/ --exclude app/Lib/random_compat/ -e php,ctp app/
|
|
||||||
- ./app/Vendor/bin/phpunit app/Test/ComplexTypeToolTest.php
|
|
||||||
- ./app/Vendor/bin/phpunit app/Test/JSONConverterToolTest.php
|
|
||||||
# Ensure the perms
|
|
||||||
- sudo chown -R $USER:www-data `pwd`/app/Config
|
|
||||||
- sudo chmod -R 770 `pwd`/app/Config
|
|
||||||
- pushd tests
|
|
||||||
- ./curl_tests.sh $AUTH
|
|
||||||
- popd
|
|
||||||
- pushd PyMISP
|
|
||||||
- git submodule init
|
|
||||||
- git submodule update
|
|
||||||
- travis_retry poetry install -E fileobjects -E openioc -E virustotal -E docs -E pdfexport
|
|
||||||
- poetry run python tests/testlive_comprehensive.py
|
|
||||||
- poetry run python tests/test_mispevent.py
|
|
||||||
- popd
|
|
||||||
- cp PyMISP/tests/keys.py PyMISP/examples/events/
|
|
||||||
- pushd PyMISP/examples/events/
|
|
||||||
- poetry run python ./create_massive_dummy_events.py -l 5 -a 30
|
|
||||||
- popd
|
|
||||||
- python3 tools/misp-feed/validate.py
|
|
||||||
|
|
||||||
after_failure:
|
|
||||||
- curl http://misp.local
|
|
||||||
- cat /etc/apache2/sites-available/misp.local.conf
|
|
||||||
- sudo tail -n +1 `pwd`/app/tmp/logs/*
|
|
||||||
- sudo ls -l /var/log/apache2
|
|
||||||
- sudo cat /var/log/apache2/error.log
|
|
||||||
- sudo cat /var/log/apache2/misp.local_error.log
|
|
||||||
- sudo cat /var/log/apache2/misp.local_access.log
|
|
||||||
- pwd
|
|
||||||
|
|
||||||
notifications:
|
|
||||||
webhooks:
|
|
||||||
urls:
|
|
||||||
- https://webhooks.gitter.im/e/05e30284086a8e948d31
|
|
||||||
on_success: change # options: [always|never|change] default: always
|
|
||||||
on_failure: always # options: [always|never|change] default: always
|
|
||||||
on_start: never # options: [always|never|change] default: always
|
|
||||||
|
|
||||||
after_success:
|
|
||||||
- sudo tail -n +1 `pwd`/app/tmp/logs/*
|
|
||||||
- coveralls
|
|
||||||
- coverage report
|
|
||||||
- coverage xml
|
|
||||||
- codecov
|
|
|
@ -633,7 +633,7 @@ class RestResponseComponent extends Component
|
||||||
}
|
}
|
||||||
|
|
||||||
// If response is big array, encode items separately to save memory
|
// If response is big array, encode items separately to save memory
|
||||||
if (is_array($response) && count($response) > 10000) {
|
if (is_array($response) && count($response) > 10000 && JsonTool::arrayIsList($response)) {
|
||||||
$output = new TmpFileTool();
|
$output = new TmpFileTool();
|
||||||
$output->write('[');
|
$output->write('[');
|
||||||
|
|
||||||
|
|
|
@ -68,6 +68,27 @@ class JsonTool
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see https://www.php.net/manual/en/function.array-is-list.php
|
||||||
|
* @param array $array
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public static function arrayIsList(array $array)
|
||||||
|
{
|
||||||
|
if (function_exists('array_is_list')) {
|
||||||
|
return array_is_list($array);
|
||||||
|
}
|
||||||
|
|
||||||
|
$i = -1;
|
||||||
|
foreach ($array as $k => $v) {
|
||||||
|
++$i;
|
||||||
|
if ($k !== $i) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* JSON supports just unicode strings. This helper method converts non unicode chars to Unicode Replacement Character U+FFFD (UTF-8)
|
* JSON supports just unicode strings. This helper method converts non unicode chars to Unicode Replacement Character U+FFFD (UTF-8)
|
||||||
* @param string $string
|
* @param string $string
|
||||||
|
|
|
@ -7,6 +7,14 @@ App::uses('Mysql', 'Model/Datasource/Database');
|
||||||
*/
|
*/
|
||||||
class MysqlExtended extends Mysql
|
class MysqlExtended extends Mysql
|
||||||
{
|
{
|
||||||
|
const PDO_MAP = [
|
||||||
|
'integer' => PDO::PARAM_INT,
|
||||||
|
'float' => PDO::PARAM_STR,
|
||||||
|
'boolean' => PDO::PARAM_BOOL,
|
||||||
|
'string' => PDO::PARAM_STR,
|
||||||
|
'text' => PDO::PARAM_STR
|
||||||
|
];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Output MD5 as binary, that is faster and uses less memory
|
* Output MD5 as binary, that is faster and uses less memory
|
||||||
* @param string $value
|
* @param string $value
|
||||||
|
@ -157,15 +165,9 @@ class MysqlExtended extends Mysql
|
||||||
public function insertMulti($table, $fields, $values)
|
public function insertMulti($table, $fields, $values)
|
||||||
{
|
{
|
||||||
$table = $this->fullTableName($table);
|
$table = $this->fullTableName($table);
|
||||||
$holder = implode(',', array_fill(0, count($fields), '?'));
|
$holder = substr(str_repeat('?,', count($fields)), 0, -1);
|
||||||
$fields = implode(',', array_map([$this, 'name'], $fields));
|
$fields = implode(',', array_map([$this, 'name'], $fields));
|
||||||
$pdoMap = [
|
|
||||||
'integer' => PDO::PARAM_INT,
|
|
||||||
'float' => PDO::PARAM_STR,
|
|
||||||
'boolean' => PDO::PARAM_BOOL,
|
|
||||||
'string' => PDO::PARAM_STR,
|
|
||||||
'text' => PDO::PARAM_STR
|
|
||||||
];
|
|
||||||
$columnMap = [];
|
$columnMap = [];
|
||||||
foreach ($values[key($values)] as $key => $val) {
|
foreach ($values[key($values)] as $key => $val) {
|
||||||
if (is_int($val)) {
|
if (is_int($val)) {
|
||||||
|
@ -174,21 +176,21 @@ class MysqlExtended extends Mysql
|
||||||
$columnMap[$key] = PDO::PARAM_BOOL;
|
$columnMap[$key] = PDO::PARAM_BOOL;
|
||||||
} else {
|
} else {
|
||||||
$type = $this->introspectType($val);
|
$type = $this->introspectType($val);
|
||||||
$columnMap[$key] = $pdoMap[$type];
|
$columnMap[$key] = self::PDO_MAP[$type];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$sql = "INSERT INTO $table ($fields) VALUES ";
|
$sql = "INSERT INTO $table ($fields) VALUES ";
|
||||||
$sql .= implode(',', array_fill(0, count($values), "($holder)"));
|
$sql .= substr(str_repeat("($holder),", count($values)), 0, -1);
|
||||||
$statement = $this->_connection->prepare($sql);
|
$statement = $this->_connection->prepare($sql);
|
||||||
$valuesList = array();
|
$valuesList = array();
|
||||||
$i = 1;
|
$i = 0;
|
||||||
foreach ($values as $value) {
|
foreach ($values as $value) {
|
||||||
foreach ($value as $col => $val) {
|
foreach ($value as $col => $val) {
|
||||||
if ($this->fullDebug) {
|
if ($this->fullDebug) {
|
||||||
$valuesList[] = $val;
|
$valuesList[] = $val;
|
||||||
}
|
}
|
||||||
$statement->bindValue($i++, $val, $columnMap[$col]);
|
$statement->bindValue(++$i, $val, $columnMap[$col]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$result = $statement->execute();
|
$result = $statement->execute();
|
||||||
|
|
|
@ -390,8 +390,7 @@ class Warninglist extends AppModel
|
||||||
$warninglistId = (int)$this->id;
|
$warninglistId = (int)$this->id;
|
||||||
$result = true;
|
$result = true;
|
||||||
|
|
||||||
$keys = array_keys($list['list']);
|
if (JsonTool::arrayIsList($list['list'])) {
|
||||||
if ($keys === array_keys($keys)) {
|
|
||||||
foreach (array_chunk($list['list'], 1000) as $chunk) {
|
foreach (array_chunk($list['list'], 1000) as $chunk) {
|
||||||
$valuesToInsert = [];
|
$valuesToInsert = [];
|
||||||
foreach ($chunk as $value) {
|
foreach ($chunk as $value) {
|
||||||
|
|
|
@ -60,7 +60,7 @@
|
||||||
class DATABASE_CONFIG {
|
class DATABASE_CONFIG {
|
||||||
|
|
||||||
public $default = array(
|
public $default = array(
|
||||||
'datasource' => 'Database/Mysql',
|
'datasource' => 'Database/MysqlExtended',
|
||||||
'persistent' => false,
|
'persistent' => false,
|
||||||
'host' => '127.0.0.1',
|
'host' => '127.0.0.1',
|
||||||
'login' => 'misp',
|
'login' => 'misp',
|
|
@ -1,7 +1,7 @@
|
||||||
<?php
|
<?php
|
||||||
class EmailConfig {
|
class EmailConfig {
|
||||||
public $default = array(
|
public $default = [
|
||||||
'transport' => 'Debug',
|
'transport' => 'Debug',
|
||||||
'log' => true
|
'log' => true,
|
||||||
);
|
];
|
||||||
}
|
}
|
|
@ -1,15 +0,0 @@
|
||||||
<VirtualHost misp.local>
|
|
||||||
ServerAdmin me@me.local
|
|
||||||
ServerName misp.local
|
|
||||||
DocumentRoot %TRAVIS_BUILD_DIR%/app/webroot
|
|
||||||
<Directory %TRAVIS_BUILD_DIR%/app/webroot>
|
|
||||||
Options -Indexes
|
|
||||||
AllowOverride all
|
|
||||||
Require all granted
|
|
||||||
</Directory>
|
|
||||||
|
|
||||||
LogLevel warn
|
|
||||||
ErrorLog /var/log/apache2/misp.local_error.log
|
|
||||||
CustomLog /var/log/apache2/misp.local_access.log combined
|
|
||||||
ServerSignature Off
|
|
||||||
</VirtualHost>
|
|
|
@ -1,15 +0,0 @@
|
||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
set -e
|
|
||||||
set -x
|
|
||||||
|
|
||||||
AUTH="$1"
|
|
||||||
|
|
||||||
# Check if user is logged
|
|
||||||
curl -i -H "Authorization: $AUTH" -H "Accept: application/json" -X GET http://misp.local/servers/getVersion
|
|
||||||
curl -i -H "Accept: application/json" -H "content-type: application/json" -H "Authorization: $AUTH" --data "@event.json" -X POST http://misp.local/events
|
|
||||||
curl -H "Authorization: $AUTH" -X GET http://misp.local/events/csv/download/1/ignore:1 | sed -e 's/^M//g' | cut -d, -f2 --complement | sort > 1.csv
|
|
||||||
cat 1.csv
|
|
||||||
cut -d, -f2 --complement event.csv | sort > compare.csv
|
|
||||||
diff compare.csv 1.csv
|
|
||||||
curl -i -H "Accept: application/json" -H "content-type: application/json" -H "Authorization: $AUTH" -X POST http://misp.local/events/delete/1
|
|
|
@ -7,13 +7,13 @@ AUTH="$1"
|
||||||
HOST="$2"
|
HOST="$2"
|
||||||
|
|
||||||
# Check if user is logged
|
# Check if user is logged
|
||||||
curl -i -H "Authorization: $AUTH" -H "Accept: application/json" -X GET http://${HOST}/servers/getVersion
|
curl -sS -i -H "Authorization: $AUTH" -H "Accept: application/json" -X GET http://${HOST}/servers/getVersion
|
||||||
curl -i -H "Accept: application/json" -H "content-type: application/json" -H "Authorization: $AUTH" --data "@event.json" -X POST http://${HOST}/events > /dev/null
|
curl -sS -i -H "Accept: application/json" -H "content-type: application/json" -H "Authorization: $AUTH" --data "@event.json" -X POST http://${HOST}/events > /dev/null
|
||||||
curl -H "Authorization: $AUTH" -X GET http://${HOST}/events/csv/download/1/ignore:1 | sed -e 's/^M//g' | cut -d, -f2 --complement | sort > 1.csv
|
curl -sS -H "Authorization: $AUTH" -X GET http://${HOST}/events/csv/download/1/ignore:1 | sed -e 's/^M//g' | cut -d, -f2 --complement | sort > 1.csv
|
||||||
cat 1.csv
|
cat 1.csv
|
||||||
cut -d, -f2 --complement event.csv | sort > compare.csv
|
cut -d, -f2 --complement event.csv | sort > compare.csv
|
||||||
diff compare.csv 1.csv
|
diff compare.csv 1.csv
|
||||||
# Test alert email generating
|
# Test alert email generating
|
||||||
sudo -u www-data ../app/Console/cake Event testEventNotificationEmail 1 1 > /dev/null
|
sudo -u www-data ../app/Console/cake Event testEventNotificationEmail 1 1 > /dev/null
|
||||||
# Delete created event
|
# Delete created event
|
||||||
curl -i -H "Accept: application/json" -H "content-type: application/json" -H "Authorization: $AUTH" -X POST http://${HOST}/events/delete/1
|
curl -sS -i -H "Accept: application/json" -H "content-type: application/json" -H "Authorization: $AUTH" -X POST http://${HOST}/events/delete/1
|
||||||
|
|
|
@ -1,154 +0,0 @@
|
||||||
<?php
|
|
||||||
/**
|
|
||||||
* This file is loaded automatically by the app/webroot/index.php file after core.php
|
|
||||||
*
|
|
||||||
* This file should load/create any application wide configuration settings, such as
|
|
||||||
* Caching, Logging, loading additional configuration files.
|
|
||||||
*
|
|
||||||
* You should also use this file to include any files that provide global functions/constants
|
|
||||||
* that your application uses.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Cache Engine Configuration
|
|
||||||
* Default settings provided below
|
|
||||||
*
|
|
||||||
* File storage engine.
|
|
||||||
*
|
|
||||||
* Cache::config('default', array(
|
|
||||||
* 'engine' => 'File', //[required]
|
|
||||||
* 'duration'=> 3600, //[optional]
|
|
||||||
* 'probability'=> 100, //[optional]
|
|
||||||
* 'path' => CACHE, //[optional] use system tmp directory - remember to use absolute path
|
|
||||||
* 'prefix' => 'cake_', //[optional] prefix every cache file with this string
|
|
||||||
* 'lock' => false, //[optional] use file locking
|
|
||||||
* 'serialize' => true, // [optional]
|
|
||||||
* 'mask' => 0666, // [optional] permission mask to use when creating cache files
|
|
||||||
* ));
|
|
||||||
*
|
|
||||||
* APC (http://pecl.php.net/package/APC)
|
|
||||||
*
|
|
||||||
* Cache::config('default', array(
|
|
||||||
* 'engine' => 'Apc', //[required]
|
|
||||||
* 'duration'=> 3600, //[optional]
|
|
||||||
* 'probability'=> 100, //[optional]
|
|
||||||
* 'prefix' => Inflector::slug(APP_DIR) . '_', //[optional] prefix every cache file with this string
|
|
||||||
* ));
|
|
||||||
*
|
|
||||||
* Xcache (http://xcache.lighttpd.net/)
|
|
||||||
*
|
|
||||||
* Cache::config('default', array(
|
|
||||||
* 'engine' => 'Xcache', //[required]
|
|
||||||
* 'duration'=> 3600, //[optional]
|
|
||||||
* 'probability'=> 100, //[optional]
|
|
||||||
* 'prefix' => Inflector::slug(APP_DIR) . '_', //[optional] prefix every cache file with this string
|
|
||||||
* 'user' => 'user', //user from xcache.admin.user settings
|
|
||||||
* 'password' => 'password', //plaintext password (xcache.admin.pass)
|
|
||||||
* ));
|
|
||||||
*
|
|
||||||
* Memcache (http://memcached.org/)
|
|
||||||
*
|
|
||||||
* Cache::config('default', array(
|
|
||||||
* 'engine' => 'Memcache', //[required]
|
|
||||||
* 'duration'=> 3600, //[optional]
|
|
||||||
* 'probability'=> 100, //[optional]
|
|
||||||
* 'prefix' => Inflector::slug(APP_DIR) . '_', //[optional] prefix every cache file with this string
|
|
||||||
* 'servers' => array(
|
|
||||||
* '127.0.0.1:11211' // localhost, default port 11211
|
|
||||||
* ), //[optional]
|
|
||||||
* 'persistent' => true, // [optional] set this to false for non-persistent connections
|
|
||||||
* 'compress' => false, // [optional] compress data in Memcache (slower, but uses less memory)
|
|
||||||
* ));
|
|
||||||
*
|
|
||||||
* Wincache (http://php.net/wincache)
|
|
||||||
*
|
|
||||||
* Cache::config('default', array(
|
|
||||||
* 'engine' => 'Wincache', //[required]
|
|
||||||
* 'duration'=> 3600, //[optional]
|
|
||||||
* 'probability'=> 100, //[optional]
|
|
||||||
* 'prefix' => Inflector::slug(APP_DIR) . '_', //[optional] prefix every cache file with this string
|
|
||||||
* ));
|
|
||||||
*
|
|
||||||
* Redis (http://http://redis.io/)
|
|
||||||
*
|
|
||||||
* Cache::config('default', array(
|
|
||||||
* 'engine' => 'Redis', //[required]
|
|
||||||
* 'duration'=> 3600, //[optional]
|
|
||||||
* 'probability'=> 100, //[optional]
|
|
||||||
* 'prefix' => Inflector::slug(APP_DIR) . '_', //[optional] prefix every cache file with this string
|
|
||||||
* 'server' => '127.0.0.1' // localhost
|
|
||||||
* 'port' => 6379 // default port 6379
|
|
||||||
* 'timeout' => 0 // timeout in seconds, 0 = unlimited
|
|
||||||
* 'persistent' => true, // [optional] set this to false for non-persistent connections
|
|
||||||
* ));
|
|
||||||
*/
|
|
||||||
Cache::config('default', array('engine' => 'File'));
|
|
||||||
Configure::load('config');
|
|
||||||
|
|
||||||
if (!Configure::read('MISP.baseurl')) {
|
|
||||||
if (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) {
|
|
||||||
Configure::write('MISP.baseurl', sprintf('https://%s:%d', $_SERVER['SERVER_ADDR'], $_SERVER['SERVER_PORT']));
|
|
||||||
} else {
|
|
||||||
Configure::write('MISP.baseurl', sprintf('http://%s:%d', $_SERVER['SERVER_ADDR'], $_SERVER['SERVER_PORT']));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Plugins need to be loaded manually, you can either load them one by one or all of them in a single call
|
|
||||||
* Uncomment one of the lines below, as you need. make sure you read the documentation on CakePlugin to use more
|
|
||||||
* advanced ways of loading plugins
|
|
||||||
*
|
|
||||||
* CakePlugin::loadAll(); // Loads all plugins at once
|
|
||||||
* CakePlugin::load('DebugKit'); //Loads a single plugin named DebugKit
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
CakePlugin::load('SysLog');
|
|
||||||
CakePlugin::load('Assets'); // having Logable
|
|
||||||
CakePlugin::load('SysLogLogable');
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Uncomment the following line to enable client SSL certificate authentication.
|
|
||||||
* It's also necessary to configure the plugin — for more information, please read app/Plugin/CertAuth/reame.md
|
|
||||||
*/
|
|
||||||
// CakePlugin::load('CertAuth');
|
|
||||||
|
|
||||||
/**
|
|
||||||
* You can attach event listeners to the request lifecyle as Dispatcher Filter . By Default CakePHP bundles two filters:
|
|
||||||
*
|
|
||||||
* - AssetDispatcher filter will serve your asset files (css, images, js, etc) from your themes and plugins
|
|
||||||
* - CacheDispatcher filter will read the Cache.check configure variable and try to serve cached content generated from controllers
|
|
||||||
*
|
|
||||||
* Feel free to remove or add filters as you see fit for your application. A few examples:
|
|
||||||
*
|
|
||||||
* Configure::write('Dispatcher.filters', array(
|
|
||||||
* 'MyCacheFilter', // will use MyCacheFilter class from the Routing/Filter package in your app.
|
|
||||||
* 'MyPlugin.MyFilter', // will use MyFilter class from the Routing/Filter package in MyPlugin plugin.
|
|
||||||
* array('callable' => $aFunction, 'on' => 'before', 'priority' => 9), // A valid PHP callback type to be called on beforeDispatch
|
|
||||||
* array('callable' => $anotherMethod, 'on' => 'after'), // A valid PHP callback type to be called on afterDispatch
|
|
||||||
*
|
|
||||||
* ));
|
|
||||||
*/
|
|
||||||
Configure::write('Dispatcher.filters', array(
|
|
||||||
'AssetDispatcher',
|
|
||||||
'CacheDispatcher'
|
|
||||||
));
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Configures default file logging options
|
|
||||||
*/
|
|
||||||
App::uses('CakeLog', 'Log');
|
|
||||||
CakeLog::config('debug', array(
|
|
||||||
'engine' => 'FileLog',
|
|
||||||
'types' => array('notice', 'info', 'debug'),
|
|
||||||
'file' => 'debug',
|
|
||||||
));
|
|
||||||
CakeLog::config('error', array(
|
|
||||||
'engine' => 'FileLog',
|
|
||||||
'types' => array('warning', 'error', 'critical', 'alert', 'emergency'),
|
|
||||||
'file' => 'error',
|
|
||||||
));
|
|
||||||
|
|
||||||
CakePlugin::loadAll(array(
|
|
||||||
'CakeResque' => array('bootstrap' => true)
|
|
||||||
));
|
|
|
@ -1,81 +0,0 @@
|
||||||
<?php
|
|
||||||
$config = array (
|
|
||||||
'debug' => 1,
|
|
||||||
'Security' =>
|
|
||||||
array (
|
|
||||||
'level' => 'medium',
|
|
||||||
'salt' => 'Rooraenietu8Eeyo<Qu2eeNfterd-dd+',
|
|
||||||
'cipherSeed' => '',
|
|
||||||
//'auth'=>array('CertAuth.Certificate'), // additional authentication methods
|
|
||||||
),
|
|
||||||
'MISP' =>
|
|
||||||
array (
|
|
||||||
'baseurl' => 'http://misp.local',
|
|
||||||
'footerpart1' => 'Powered by MISP',
|
|
||||||
'footerpart2' => '© Belgian Defense CERT & NCIRC',
|
|
||||||
'org' => 'ORGNAME',
|
|
||||||
'showorg' => true,
|
|
||||||
'background_jobs' => false,
|
|
||||||
'email' => 'email@address.com',
|
|
||||||
'contact' => 'email@address.com',
|
|
||||||
'cveurl' => 'http://web.nvd.nist.gov/view/vuln/detail?vulnId=',
|
|
||||||
'disablerestalert' => false,
|
|
||||||
'default_event_distribution' => '0',
|
|
||||||
'default_attribute_distribution' => 'event',
|
|
||||||
'tagging' => true,
|
|
||||||
'full_tags_on_event_index' => true,
|
|
||||||
'footer_logo' => '',
|
|
||||||
'take_ownership_xml_import' => false,
|
|
||||||
'unpublishedprivate' => false,
|
|
||||||
),
|
|
||||||
'GnuPG' =>
|
|
||||||
array (
|
|
||||||
'onlyencrypted' => false,
|
|
||||||
'email' => '',
|
|
||||||
'homedir' => '',
|
|
||||||
'password' => '',
|
|
||||||
'bodyonlyencrypted' => false,
|
|
||||||
),
|
|
||||||
'Proxy' =>
|
|
||||||
array (
|
|
||||||
'host' => '',
|
|
||||||
'port' => '',
|
|
||||||
'method' => '',
|
|
||||||
'user' => '',
|
|
||||||
'password' => '',
|
|
||||||
),
|
|
||||||
'SecureAuth' =>
|
|
||||||
array (
|
|
||||||
'amount' => 5,
|
|
||||||
'expire' => 300,
|
|
||||||
),
|
|
||||||
// Uncomment the following to enable client SSL certificate authentication
|
|
||||||
/*
|
|
||||||
'CertAuth' =>
|
|
||||||
array(
|
|
||||||
'ca' => array( 'FIRST.Org' ), // allowed CAs
|
|
||||||
'caId' => 'O', // which attribute will be used to verify the CA
|
|
||||||
'userModel' => 'User', // name of the User class to check if user exists
|
|
||||||
'userModelKey' => 'nids_sid', // User field that will be used for querying
|
|
||||||
'map' => array( // maps client certificate attributes to User properties
|
|
||||||
'O' => 'org',
|
|
||||||
'emailAddress'=>'email',
|
|
||||||
),
|
|
||||||
'syncUser' => true, // should the User be synchronized with an external REST API
|
|
||||||
'userDefaults'=> array( // default user attributes, only used when creating new users
|
|
||||||
'role_id' => 4,
|
|
||||||
),
|
|
||||||
'restApi' => array( // API parameters
|
|
||||||
'url' => 'https://example.com/data/users', // URL to query
|
|
||||||
'headers' => array(), // additional headers, used for authentication
|
|
||||||
'param' => array( 'email' => 'email'), // query parameters to add to the URL, mapped to USer properties
|
|
||||||
'map' => array( // maps REST result to the User properties
|
|
||||||
'uid' => 'nids_sid',
|
|
||||||
'team' => 'org',
|
|
||||||
'email' => 'email',
|
|
||||||
'pgp_public'=> 'gpgkey',
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
*/
|
|
||||||
);
|
|
285
travis/core.php
285
travis/core.php
|
@ -1,285 +0,0 @@
|
||||||
<?php
|
|
||||||
/**
|
|
||||||
* This is core configuration file.
|
|
||||||
*
|
|
||||||
* Use it to configure core behavior of Cake.
|
|
||||||
*
|
|
||||||
* PHP 5
|
|
||||||
*
|
|
||||||
* CakePHP(tm) : Rapid Development Framework (http://cakephp.org)
|
|
||||||
* Copyright 2005-2012, Cake Software Foundation, Inc. (http://cakefoundation.org)
|
|
||||||
*
|
|
||||||
* Licensed under The MIT License
|
|
||||||
* Redistributions of files must retain the above copyright notice.
|
|
||||||
*
|
|
||||||
* @copyright Copyright 2005-2012, Cake Software Foundation, Inc. (http://cakefoundation.org)
|
|
||||||
* @link http://cakephp.org CakePHP(tm) Project
|
|
||||||
* @package app.Config
|
|
||||||
* @since CakePHP(tm) v 0.2.9
|
|
||||||
* @license MIT License (http://www.opensource.org/licenses/mit-license.php)
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* CakePHP Debug Level:
|
|
||||||
*
|
|
||||||
* Production Mode:
|
|
||||||
* 0: No error messages, errors, or warnings shown. Flash messages redirect.
|
|
||||||
*
|
|
||||||
* Development Mode:
|
|
||||||
* 1: Errors and warnings shown, model caches refreshed, flash messages halted.
|
|
||||||
* 2: As in 1, but also with full debug messages and SQL output.
|
|
||||||
*
|
|
||||||
* In production mode, flash messages redirect after a time interval.
|
|
||||||
* In development mode, you need to click the flash message to continue.
|
|
||||||
*/
|
|
||||||
Configure::write('debug', 2); // 0 = for production, 2 = full debug mode
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Configure the Error handler used to handle errors for your application. By default
|
|
||||||
* ErrorHandler::handleError() is used. It will display errors using Debugger, when debug > 0
|
|
||||||
* and log errors with CakeLog when debug = 0.
|
|
||||||
*
|
|
||||||
* Options:
|
|
||||||
*
|
|
||||||
* - `handler` - callback - The callback to handle errors. You can set this to any callable type,
|
|
||||||
* including anonymous functions.
|
|
||||||
* - `level` - int - The level of errors you are interested in capturing.
|
|
||||||
* - `trace` - boolean - Include stack traces for errors in log files.
|
|
||||||
*
|
|
||||||
* @see ErrorHandler for more information on error handling and configuration.
|
|
||||||
*/
|
|
||||||
Configure::write('Error', array(
|
|
||||||
'handler' => 'ErrorHandler::handleError',
|
|
||||||
'level' => E_ALL & ~E_DEPRECATED,
|
|
||||||
'trace' => true
|
|
||||||
));
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Configure the Exception handler used for uncaught exceptions. By default,
|
|
||||||
* ErrorHandler::handleException() is used. It will display a HTML page for the exception, and
|
|
||||||
* while debug > 0, framework errors like Missing Controller will be displayed. When debug = 0,
|
|
||||||
* framework errors will be coerced into generic HTTP errors.
|
|
||||||
*
|
|
||||||
* Options:
|
|
||||||
*
|
|
||||||
* - `handler` - callback - The callback to handle exceptions. You can set this to any callback type,
|
|
||||||
* including anonymous functions.
|
|
||||||
* - `renderer` - string - The class responsible for rendering uncaught exceptions. If you choose a custom class you
|
|
||||||
* should place the file for that class in app/Lib/Error. This class needs to implement a render method.
|
|
||||||
* - `log` - boolean - Should Exceptions be logged?
|
|
||||||
*
|
|
||||||
* @see ErrorHandler for more information on exception handling and configuration.
|
|
||||||
*/
|
|
||||||
Configure::write('Exception', array(
|
|
||||||
'handler' => 'ErrorHandler::handleException',
|
|
||||||
'renderer' => 'ExceptionRenderer',
|
|
||||||
'log' => true,
|
|
||||||
'skipLog' => array(
|
|
||||||
'NotFoundException',
|
|
||||||
)
|
|
||||||
));
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Application wide charset encoding
|
|
||||||
*/
|
|
||||||
Configure::write('App.encoding', 'UTF-8');
|
|
||||||
|
|
||||||
/**
|
|
||||||
* To configure CakePHP *not* to use mod_rewrite and to
|
|
||||||
* use CakePHP pretty URLs, remove these .htaccess
|
|
||||||
* files:
|
|
||||||
*
|
|
||||||
* /.htaccess
|
|
||||||
* /app/.htaccess
|
|
||||||
* /app/webroot/.htaccess
|
|
||||||
*
|
|
||||||
* And uncomment the App.baseUrl below:
|
|
||||||
*/
|
|
||||||
//Configure::write('App.baseUrl', env('SCRIPT_NAME'));
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Uncomment the define below to use CakePHP prefix routes.
|
|
||||||
*
|
|
||||||
* The value of the define determines the names of the routes
|
|
||||||
* and their associated controller actions:
|
|
||||||
*
|
|
||||||
* Set to an array of prefixes you want to use in your application. Use for
|
|
||||||
* admin or other prefixed routes.
|
|
||||||
*
|
|
||||||
* Routing.prefixes = array('admin', 'manager');
|
|
||||||
*
|
|
||||||
* Enables:
|
|
||||||
* `admin_index()` and `/admin/controller/index`
|
|
||||||
* `manager_index()` and `/manager/controller/index`
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
Configure::write('Routing.prefixes', array('admin'));
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Turn off all caching application-wide.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
Configure::write('Cache.disable', false);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Enable cache checking.
|
|
||||||
*
|
|
||||||
* If set to true, for view caching you must still use the controller
|
|
||||||
* public $cacheAction inside your controllers to define caching settings.
|
|
||||||
* You can either set it controller-wide by setting public $cacheAction = true,
|
|
||||||
* or in each action using $this->cacheAction = true.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
//Configure::write('Cache.check', true);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Defines the default error type when using the log() function. Used for
|
|
||||||
* differentiating error logging and debugging. Currently PHP supports LOG_DEBUG.
|
|
||||||
*/
|
|
||||||
define('LOG_ERROR', LOG_ERR);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Session configuration.
|
|
||||||
*
|
|
||||||
* Contains an array of settings to use for session configuration. The defaults key is
|
|
||||||
* used to define a default preset to use for sessions, any settings declared here will override
|
|
||||||
* the settings of the default config.
|
|
||||||
*
|
|
||||||
* ## Options
|
|
||||||
*
|
|
||||||
* - `Session.cookie` - The name of the cookie to use. Defaults to 'CAKEPHP'
|
|
||||||
* - `Session.timeout` - The number of minutes you want sessions to live for. This timeout is handled by CakePHP
|
|
||||||
* - `Session.cookieTimeout` - The number of minutes you want session cookies to live for.
|
|
||||||
* - `Session.checkAgent` - Do you want the user agent to be checked when starting sessions? You might want to set the
|
|
||||||
* value to false, when dealing with older versions of IE, Chrome Frame or certain web-browsing devices and AJAX
|
|
||||||
* - `Session.defaults` - The default configuration set to use as a basis for your session.
|
|
||||||
* There are four builtins: php, cake, cache, database.
|
|
||||||
* - `Session.handler` - Can be used to enable a custom session handler. Expects an array of callables,
|
|
||||||
* that can be used with `session_save_handler`. Using this option will automatically add `session.save_handler`
|
|
||||||
* to the ini array.
|
|
||||||
* - `Session.autoRegenerate` - Enabling this setting, turns on automatic renewal of sessions, and
|
|
||||||
* sessionids that change frequently. See CakeSession::$requestCountdown.
|
|
||||||
* - `Session.ini` - An associative array of additional ini values to set.
|
|
||||||
*
|
|
||||||
* The built in defaults are:
|
|
||||||
*
|
|
||||||
* - 'php' - Uses settings defined in your php.ini.
|
|
||||||
* - 'cake' - Saves session files in CakePHP's /tmp directory.
|
|
||||||
* - 'database' - Uses CakePHP's database sessions.
|
|
||||||
* - 'cache' - Use the Cache class to save sessions.
|
|
||||||
*
|
|
||||||
* To define a custom session handler, save it at /app/Model/Datasource/Session/<name>.php.
|
|
||||||
* Make sure the class implements `CakeSessionHandlerInterface` and set Session.handler to <name>
|
|
||||||
*
|
|
||||||
* To use database sessions, run the app/Config/Schema/sessions.php schema using
|
|
||||||
* the cake shell command: cake schema create Sessions
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
Configure::write('Session', array(
|
|
||||||
'timeout' => 60, // Session timeout, default is 1 hour
|
|
||||||
'defaults' => 'php'
|
|
||||||
));
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The level of CakePHP security.
|
|
||||||
*/
|
|
||||||
Configure::write('Security.level', 'medium');
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A random string used in security hashing methods.
|
|
||||||
*/
|
|
||||||
Configure::write('Security.salt', 'Rooraenietu8Eeyo<Qu2eeNfterd-dd+');
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A random numeric string (digits only) used to encrypt/decrypt strings.
|
|
||||||
*/
|
|
||||||
Configure::write('Security.cipherSeed', '395786739573056621429506834955');
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Apply timestamps with the last modified time to static assets (js, css, images).
|
|
||||||
* Will append a querystring parameter containing the time the file was modified. This is
|
|
||||||
* useful for invalidating browser caches.
|
|
||||||
*
|
|
||||||
* Set to `true` to apply timestamps when debug > 0. Set to 'force' to always enable
|
|
||||||
* timestamping regardless of debug value.
|
|
||||||
*/
|
|
||||||
//Configure::write('Asset.timestamp', true);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Compress CSS output by removing comments, whitespace, repeating tags, etc.
|
|
||||||
* This requires a/var/cache directory to be writable by the web server for caching.
|
|
||||||
* and /vendors/csspp/csspp.php
|
|
||||||
*
|
|
||||||
* To use, prefix the CSS link URL with '/ccss/' instead of '/css/' or use HtmlHelper::css().
|
|
||||||
*/
|
|
||||||
//Configure::write('Asset.filter.css', 'css.php');
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Plug in your own custom JavaScript compressor by dropping a script in your webroot to handle the
|
|
||||||
* output, and setting the config below to the name of the script.
|
|
||||||
*
|
|
||||||
* To use, prefix your JavaScript link URLs with '/cjs/' instead of '/js/' or use JavaScriptHelper::link().
|
|
||||||
*/
|
|
||||||
//Configure::write('Asset.filter.js', 'custom_javascript_output_filter.php');
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The classname and database used in CakePHP's
|
|
||||||
* access control lists.
|
|
||||||
*/
|
|
||||||
Configure::write('Acl.classname', 'DbAcl');
|
|
||||||
Configure::write('Acl.database', 'default');
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Uncomment this line and correct your server timezone to fix
|
|
||||||
* any date & time related errors.
|
|
||||||
*/
|
|
||||||
//date_default_timezone_set('UTC');
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Pick the caching engine to use. If APC is enabled use it.
|
|
||||||
* If running via cli - apc is disabled by default. ensure it's available and enabled in this case
|
|
||||||
*
|
|
||||||
* Note: 'default' and other application caches should be configured in app/Config/bootstrap.php.
|
|
||||||
* Please check the comments in boostrap.php for more info on the cache engines available
|
|
||||||
* and their setttings.
|
|
||||||
*/
|
|
||||||
$engine = 'File';
|
|
||||||
if (function_exists('apcu_dec') && (PHP_SAPI !== 'cli' || ini_get('apc.enable_cli'))) {
|
|
||||||
require_once APP . 'Plugin/ApcuCache/Engine/ApcuEngine.php'; // it is not possible to use plugin
|
|
||||||
$engine = 'Apcu';
|
|
||||||
}
|
|
||||||
|
|
||||||
// In development mode, caches should expire quickly.
|
|
||||||
$duration = '+999 days';
|
|
||||||
if (Configure::read('debug') >= 1) {
|
|
||||||
$duration = '+10 seconds';
|
|
||||||
}
|
|
||||||
|
|
||||||
// Prefix each application on the same server with a different string, to avoid Memcache and APC conflicts.
|
|
||||||
$prefix = 'myapp_';
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Configure the cache used for general framework caching. Path information,
|
|
||||||
* object listings, and translation cache files are stored with this configuration.
|
|
||||||
*/
|
|
||||||
Cache::config('_cake_core_', array(
|
|
||||||
'engine' => $engine,
|
|
||||||
'prefix' => $prefix . 'cake_core_',
|
|
||||||
'path' => CACHE . 'persistent' . DS,
|
|
||||||
'serialize' => ($engine === 'File'),
|
|
||||||
'duration' => $duration
|
|
||||||
));
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Configure the cache for model and datasource caches. This cache configuration
|
|
||||||
* is used to store schema descriptions, and table listings in connections.
|
|
||||||
*/
|
|
||||||
Cache::config('_cake_model_', array(
|
|
||||||
'engine' => $engine,
|
|
||||||
'prefix' => $prefix . 'cake_model_',
|
|
||||||
'path' => CACHE . 'models' . DS,
|
|
||||||
'serialize' => ($engine === 'File'),
|
|
||||||
'duration' => $duration
|
|
||||||
));
|
|
||||||
|
|
||||||
//require_once dirname(__DIR__) . '/Vendor/autoload.php';
|
|
Loading…
Reference in New Issue