diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
index 103a133f6..8ed3157c1 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/main.yml
@@ -67,84 +67,83 @@ jobs:
# Runs a set of commands using the runners shell
- name: Install deps
run: |
- sudo chown $USER:www-data $HOME/.composer
- pushd app
- sudo -H -u $USER composer config --no-plugins allow-plugins.composer/installers true
- sudo -H -u $USER composer install --no-progress
- 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 -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 all privileges on misp.* to misp@'%';"
- mysql -h 127.0.0.1 --port 3306 -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/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?%HOST%?${HOST}?g" --in-place /etc/apache2/sites-available/misp.conf
- sudo a2dissite 000-default
- sudo a2ensite misp.conf
- cat /etc/apache2/sites-enabled/misp.conf
- sudo a2enmod rewrite
- sudo systemctl restart apache2
- # 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 777 `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 chown -R www-data:www-data `pwd`/.gnupg
- sudo chmod -R 700 `pwd`/.gnupg
- sudo usermod -a -G www-data $USER
- sudo chmod -R 777 `pwd`/app/Plugin/CakeResque/tmp/
- # Ensure the perms of config files
- sudo chown -R $USER:www-data `pwd`/app/Config
- sudo chmod -R 777 `pwd`/app/Config
- 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 chmod -R 777 `pwd`/app/Config
+ sudo chown $USER:www-data $HOME/.composer
+ pushd app
+ sudo -H -u $USER composer config --no-plugins allow-plugins.composer/installers true
+ sudo -H -u $USER composer install --no-progress
+ 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 -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 all privileges on misp.* to misp@'%';"
+ mysql -h 127.0.0.1 --port 3306 -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/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?%HOST%?${HOST}?g" --in-place /etc/apache2/sites-available/misp.conf
+ sudo a2dissite 000-default
+ sudo a2ensite misp.conf
+ cat /etc/apache2/sites-enabled/misp.conf
+ sudo a2enmod rewrite
+ sudo systemctl restart apache2
+ # MISP configuration
+ sudo cp app/Config/bootstrap.default.php app/Config/bootstrap.php
+ sudo cp build/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 build/email.php app/Config/email.php
+ # Ensure the perms
+ sudo chown -R $USER:www-data `pwd`/app/Config
+ sudo chmod -R 777 `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`/build/gpg
+ sudo gpg --list-secret-keys --homedir `pwd`/.gnupg
+ # change perms
+ sudo chown -R $USER:www-data `pwd`
+ sudo chown -R www-data:www-data `pwd`/.gnupg
+ sudo chmod -R 700 `pwd`/.gnupg
+ sudo usermod -a -G www-data $USER
+ sudo chmod -R 777 `pwd`/app/Plugin/CakeResque/tmp/
+ # Ensure the perms of config files
+ sudo chown -R $USER:www-data `pwd`/app/Config
+ sudo chmod -R 777 `pwd`/app/Config
+ app/Console/cake Admin setSetting "MISP.server_settings_skip_backup_rotate" 1
+ sudo chown -R $USER:www-data `pwd`/app/Config
+ sudo chmod -R 777 `pwd`/app/Config
- # fix perms (?)
- namei -m /home/runner/work
- sudo chmod +x /home/runner/work
- sudo chmod +x /home/runner
- sudo chmod +x /home
- sudo chmod +x /
+ # fix perms (?)
+ namei -m /home/runner/work
+ sudo chmod +x /home/runner/work
+ sudo chmod +x /home/runner
+ sudo chmod +x /home
+ sudo chmod +x /
- name: Python setup
run: |
# Dirty install python stuff
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
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
@@ -152,84 +151,87 @@ jobs:
- name: DB Update
run: |
- sudo -E su $USER -c 'app/Console/cake Admin setSetting "MISP.osuser" $USER'
- sudo -E su $USER -c 'app/Console/cake Admin runUpdates'
- sudo -E su $USER -c 'app/Console/cake Admin schemaDiagnostics'
+ app/Console/cake Admin setSetting "MISP.osuser" $USER
+ app/Console/cake Admin runUpdates
+ app/Console/cake Admin schemaDiagnostics
- name: Configure MISP
run: |
- sudo -u $USER app/Console/cake User init | sudo tee ./key.txt
- echo "AUTH=`cat key.txt`" >> $GITHUB_ENV
- sudo -u $USER app/Console/cake Admin setSetting "Session.autoRegenerate" 0
- sudo -u $USER app/Console/cake Admin setSetting "Session.timeout" 600
- sudo -u $USER app/Console/cake Admin setSetting "Session.cookieTimeout" 3600
- sudo -u $USER app/Console/cake Admin setSetting "MISP.host_org_id" 1
- sudo -u $USER app/Console/cake Admin setSetting "MISP.email" "info@admin.test"
- sudo -u $USER app/Console/cake Admin setSetting "MISP.disable_emailing" false
- sudo -u $USER app/Console/cake Admin setSetting --force "debug" true
- sudo -u $USER 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"
- sudo -u $USER app/Console/cake Admin setSetting "MISP.redis_port" 6379
- sudo -u $USER app/Console/cake Admin setSetting "MISP.redis_database" 13
- sudo -u $USER app/Console/cake Admin setSetting "MISP.redis_password" ""
- sudo -u $USER app/Console/cake Admin setSetting "GnuPG.email" "info@admin.test"
- sudo -u $USER app/Console/cake Admin setSetting "GnuPG.homedir" "`pwd`/.gnupg"
- sudo -u $USER app/Console/cake Admin setSetting "GnuPG.password" "travistest"
- sudo -u $USER 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"
- sudo -u $USER app/Console/cake Admin setSetting "Plugin.ZeroMQ_redis_port" 6379
- sudo -u $USER app/Console/cake Admin setSetting "Plugin.ZeroMQ_redis_database" 1
- sudo -u $USER app/Console/cake Admin setSetting "Plugin.ZeroMQ_redis_password" ""
- sudo -u $USER 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 User init | sudo tee ./key.txt
+ echo "AUTH=`cat key.txt`" >> $GITHUB_ENV
+ app/Console/cake Admin setSetting "Session.autoRegenerate" 0
+ app/Console/cake Admin setSetting "Session.timeout" 600
+ app/Console/cake Admin setSetting "Session.cookieTimeout" 3600
+ app/Console/cake Admin setSetting "MISP.host_org_id" 1
+ app/Console/cake Admin setSetting "MISP.email" "info@admin.test"
+ app/Console/cake Admin setSetting "MISP.disable_emailing" false
+ app/Console/cake Admin setSetting --force "debug" true
+ app/Console/cake Admin setSetting "Plugin.CustomAuth_disable_logout" false
+ app/Console/cake Admin setSetting "MISP.redis_host" "127.0.0.1"
+ app/Console/cake Admin setSetting "MISP.redis_port" 6379
+ app/Console/cake Admin setSetting "MISP.redis_database" 13
+ app/Console/cake Admin setSetting "MISP.redis_password" ""
+ app/Console/cake Admin setSetting "GnuPG.email" "info@admin.test"
+ app/Console/cake Admin setSetting "GnuPG.homedir" "`pwd`/.gnupg"
+ app/Console/cake Admin setSetting "GnuPG.password" "travistest"
+ app/Console/cake Admin setSetting "MISP.download_gpg_from_homedir" 1
+ app/Console/cake Admin setSetting "Plugin.ZeroMQ_redis_host" "127.0.0.1"
+ app/Console/cake Admin setSetting "Plugin.ZeroMQ_redis_port" 6379
+ app/Console/cake Admin setSetting "Plugin.ZeroMQ_redis_database" 1
+ app/Console/cake Admin setSetting "Plugin.ZeroMQ_redis_password" ""
+ app/Console/cake Admin setSetting "Plugin.ZeroMQ_enable" 1
+ app/Console/cake Admin setSetting "Plugin.ZeroMQ_audit_notifications_enable" 1
- name: Update Galaxies
- run: sudo -E su $USER -c 'app/Console/cake Admin updateGalaxies'
+ run: app/Console/cake Admin updateGalaxies
- name: Update Taxonomies
- run: sudo -E su $USER -c 'app/Console/cake Admin updateTaxonomies'
+ run: app/Console/cake Admin updateTaxonomies
- 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
- run: sudo -E su $USER -c 'app/Console/cake Admin updateNoticeLists'
+ run: app/Console/cake Admin updateNoticeLists
- 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
- 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
- run: sudo -E su $USER -c 'app/Console/cake Admin redisReady'
+ run: app/Console/cake Admin redisReady
- name: Start workers
run: |
- sudo chmod +x app/Console/worker/start.sh
- sudo -u www-data 'app/Console/worker/start.sh'
+ sudo chmod +x app/Console/worker/start.sh
+ sudo -u www-data 'app/Console/worker/start.sh'
- name: Test if apache is working
run: |
- sudo systemctl status apache2 --no-pager -l
- sudo apache2ctl -S
- curl http://${HOST}
- sudo chmod -R 777 PyMISP
- pushd PyMISP
- echo 'url = "http://'${HOST}'"' >> tests/keys.py
- echo 'key = "'${AUTH}'"' >> tests/keys.py
- cat tests/keys.py
- popd
- . ./venv/bin/activate
- pushd tests
- bash ./build-test.sh
- popd
- deactivate
+ sudo systemctl status apache2 --no-pager -l
+ sudo apache2ctl -S
+ curl -sS http://${HOST}
+
+ - name: Check if dependencies working as expected
+ run: |
+ sudo chmod -R 777 PyMISP
+ pushd PyMISP
+ echo 'url = "http://'${HOST}'"' >> tests/keys.py
+ echo 'key = "'${AUTH}'"' >> tests/keys.py
+ cat tests/keys.py
+ popd
+ . ./venv/bin/activate
+ pushd tests
+ bash ./build-test.sh
+ popd
+ deactivate
- name: Run PHP tests
run: |
- ./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/
+ ./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/
- name: Clone test files
uses: actions/checkout@v4
@@ -237,31 +239,30 @@ jobs:
repository: viper-framework/viper-test-files
path: PyMISP/tests/viper-test-files
-
- name: Run tests
run: |
- pushd tests
- ./curl_tests_GH.sh $AUTH $HOST
- popd
-
- sudo chmod -R g+ws `pwd`/app/tmp/logs
-
- . ./venv/bin/activate
- pushd PyMISP
- cp tests/keys.py .
- python -m pytest -v --durations=0 tests/test_mispevent.py
- python -m pytest -v --durations=0 tests/testlive_comprehensive.py
- popd
- python tests/testlive_security.py -v
- python tests/testlive_sync.py
- python tests/testlive_comprehensive_local.py -v
- cp PyMISP/tests/keys.py PyMISP/examples/events/
- pushd PyMISP/examples/events/
- python ./create_massive_dummy_events.py -l 5 -a 30
- popd
- pip install jsonschema
- python tools/misp-feed/validate.py
- deactivate
+ pushd tests
+ ./curl_tests_GH.sh $AUTH $HOST
+ popd
+
+ sudo chmod -R g+ws `pwd`/app/tmp/logs
+
+ . ./venv/bin/activate
+ pushd PyMISP
+ cp tests/keys.py .
+ python -m pytest -v --durations=0 tests/test_mispevent.py
+ python -m pytest -v --durations=0 tests/testlive_comprehensive.py
+ popd
+ python tests/testlive_security.py -v
+ python tests/testlive_sync.py
+ python tests/testlive_comprehensive_local.py -v
+ cp PyMISP/tests/keys.py PyMISP/examples/events/
+ pushd PyMISP/examples/events/
+ python ./create_massive_dummy_events.py -l 5 -a 30
+ popd
+ pip install jsonschema
+ python tools/misp-feed/validate.py
+ deactivate
- name: Check requirements.txt
run: python tests/check_requirements.py
@@ -270,13 +271,13 @@ jobs:
if: ${{ always() }}
# update logs_test.sh when adding more logsources here
run: |
- tail -n +1 `pwd`/app/tmp/logs/*
- tail -n +1 /var/log/apache2/*.log
+ tail -n +1 `pwd`/app/tmp/logs/*
+ tail -n +1 /var/log/apache2/*.log
- sudo -u $USER app/Console/cake Log export /tmp/logs.json.gz --without-changes
- zcat /tmp/logs.json.gz
+ app/Console/cake Log export /tmp/logs.json.gz --without-changes
+ zcat /tmp/logs.json.gz
- name: Errors in Logs
if: ${{ always() }}
run: |
- ./tests/logs_tests.sh
\ No newline at end of file
+ ./tests/logs_tests.sh
\ No newline at end of file
diff --git a/.travis.yml b/.travis.yml
deleted file mode 100644
index 4378f9c8f..000000000
--- a/.travis.yml
+++ /dev/null
@@ -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
diff --git a/app/Controller/Component/RestResponseComponent.php b/app/Controller/Component/RestResponseComponent.php
index 3ea480278..3f760f056 100644
--- a/app/Controller/Component/RestResponseComponent.php
+++ b/app/Controller/Component/RestResponseComponent.php
@@ -633,7 +633,7 @@ class RestResponseComponent extends Component
}
// 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->write('[');
diff --git a/app/Lib/Tools/JsonTool.php b/app/Lib/Tools/JsonTool.php
index a3c27727e..c23abc7e7 100644
--- a/app/Lib/Tools/JsonTool.php
+++ b/app/Lib/Tools/JsonTool.php
@@ -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)
* @param string $string
diff --git a/app/Model/Datasource/Database/MysqlExtended.php b/app/Model/Datasource/Database/MysqlExtended.php
index df20c4281..4504a3c9f 100644
--- a/app/Model/Datasource/Database/MysqlExtended.php
+++ b/app/Model/Datasource/Database/MysqlExtended.php
@@ -7,6 +7,14 @@ App::uses('Mysql', 'Model/Datasource/Database');
*/
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
* @param string $value
@@ -157,15 +165,9 @@ class MysqlExtended extends Mysql
public function insertMulti($table, $fields, $values)
{
$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));
- $pdoMap = [
- 'integer' => PDO::PARAM_INT,
- 'float' => PDO::PARAM_STR,
- 'boolean' => PDO::PARAM_BOOL,
- 'string' => PDO::PARAM_STR,
- 'text' => PDO::PARAM_STR
- ];
+
$columnMap = [];
foreach ($values[key($values)] as $key => $val) {
if (is_int($val)) {
@@ -174,21 +176,21 @@ class MysqlExtended extends Mysql
$columnMap[$key] = PDO::PARAM_BOOL;
} else {
$type = $this->introspectType($val);
- $columnMap[$key] = $pdoMap[$type];
+ $columnMap[$key] = self::PDO_MAP[$type];
}
}
$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);
$valuesList = array();
- $i = 1;
+ $i = 0;
foreach ($values as $value) {
foreach ($value as $col => $val) {
if ($this->fullDebug) {
$valuesList[] = $val;
}
- $statement->bindValue($i++, $val, $columnMap[$col]);
+ $statement->bindValue(++$i, $val, $columnMap[$col]);
}
}
$result = $statement->execute();
diff --git a/app/Model/Warninglist.php b/app/Model/Warninglist.php
index b4313ddc2..bc3e649d4 100644
--- a/app/Model/Warninglist.php
+++ b/app/Model/Warninglist.php
@@ -390,8 +390,7 @@ class Warninglist extends AppModel
$warninglistId = (int)$this->id;
$result = true;
- $keys = array_keys($list['list']);
- if ($keys === array_keys($keys)) {
+ if (JsonTool::arrayIsList($list['list'])) {
foreach (array_chunk($list['list'], 1000) as $chunk) {
$valuesToInsert = [];
foreach ($chunk as $value) {
diff --git a/travis/database.php b/build/database.php
similarity index 98%
rename from travis/database.php
rename to build/database.php
index 69309330b..ad5cc6a1e 100644
--- a/travis/database.php
+++ b/build/database.php
@@ -60,7 +60,7 @@
class DATABASE_CONFIG {
public $default = array(
- 'datasource' => 'Database/Mysql',
+ 'datasource' => 'Database/MysqlExtended',
'persistent' => false,
'host' => '127.0.0.1',
'login' => 'misp',
diff --git a/travis/email.php b/build/email.php
similarity index 50%
rename from travis/email.php
rename to build/email.php
index 05fdd21c3..6537b42ff 100644
--- a/travis/email.php
+++ b/build/email.php
@@ -1,7 +1,7 @@
'Debug',
- 'log' => true
- );
+ 'log' => true,
+ ];
}
diff --git a/travis/gpg b/build/gpg
similarity index 100%
rename from travis/gpg
rename to build/gpg
diff --git a/build/travis-ci-apache b/build/travis-ci-apache
deleted file mode 100644
index 78f396734..000000000
--- a/build/travis-ci-apache
+++ /dev/null
@@ -1,15 +0,0 @@
-
- ServerAdmin me@me.local
- ServerName misp.local
- DocumentRoot %TRAVIS_BUILD_DIR%/app/webroot
-
- Options -Indexes
- AllowOverride all
- Require all granted
-
-
- LogLevel warn
- ErrorLog /var/log/apache2/misp.local_error.log
- CustomLog /var/log/apache2/misp.local_access.log combined
- ServerSignature Off
-
diff --git a/tests/curl_tests.sh b/tests/curl_tests.sh
deleted file mode 100755
index fa0883cbc..000000000
--- a/tests/curl_tests.sh
+++ /dev/null
@@ -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
diff --git a/tests/curl_tests_GH.sh b/tests/curl_tests_GH.sh
index 146b51eba..5c1015369 100755
--- a/tests/curl_tests_GH.sh
+++ b/tests/curl_tests_GH.sh
@@ -7,13 +7,13 @@ AUTH="$1"
HOST="$2"
# Check if user is logged
-curl -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 -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 -i -H "Authorization: $AUTH" -H "Accept: application/json" -X GET http://${HOST}/servers/getVersion
+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 -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
cut -d, -f2 --complement event.csv | sort > compare.csv
diff compare.csv 1.csv
# Test alert email generating
sudo -u www-data ../app/Console/cake Event testEventNotificationEmail 1 1 > /dev/null
# 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
diff --git a/travis/bootstrap.php b/travis/bootstrap.php
deleted file mode 100644
index ec050e512..000000000
--- a/travis/bootstrap.php
+++ /dev/null
@@ -1,154 +0,0 @@
- '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)
-));
diff --git a/travis/config.php b/travis/config.php
deleted file mode 100644
index 881781223..000000000
--- a/travis/config.php
+++ /dev/null
@@ -1,81 +0,0 @@
- 1,
- 'Security' =>
- array (
- 'level' => 'medium',
- 'salt' => 'Rooraenietu8Eeyo '',
- //'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',
- ),
- ),
- ),
- */
-);
diff --git a/travis/core.php b/travis/core.php
deleted file mode 100644
index c22dee853..000000000
--- a/travis/core.php
+++ /dev/null
@@ -1,285 +0,0 @@
- 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/.php.
- * Make sure the class implements `CakeSessionHandlerInterface` and set Session.handler to
- *
- * 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 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';