diff --git a/CHANGES_NEXT_RELEASE b/CHANGES_NEXT_RELEASE index 27c9c941..492d5542 100644 --- a/CHANGES_NEXT_RELEASE +++ b/CHANGES_NEXT_RELEASE @@ -12,3 +12,4 @@ - Remove ngsiv1 support for updateAction (#714) - Fix: check timer string in lower case in TimedRule checker - Fix: dep of chai get-func-name to 2.0.0 to avoid installation errors +- Remove: RPM stuff diff --git a/rpm/SPECS/cep.spec b/Changelog similarity index 63% rename from rpm/SPECS/cep.spec rename to Changelog index 560acc26..8333758f 100644 --- a/rpm/SPECS/cep.spec +++ b/Changelog @@ -1,466 +1,329 @@ -# Copyright 2015 Telefonica Investigacion y Desarrollo, S.A.U -# -# This file is part of perseo-fe. -# -# perseo-fe is free software: you can redistribute it and/or -# modify it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# perseo-fe is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero -# General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with perseo-fe. If not, see http://www.gnu.org/licenses/. -# -# For those usages not covered by this license please contact with -# iot_support at tid dot es - -Summary: Perseo Complex Event Processing -Name: perseo-cep -Version: %{_product_version} -Release: %{_product_release} -License: AGPLv3 -BuildRoot: %{_topdir}/BUILDROOT/ -BuildArch: x86_64 -# Requires: nodejs >= 0.10.24 -Requires: logrotate -Requires(post): /sbin/chkconfig, /usr/sbin/useradd npm -Requires(preun): /sbin/chkconfig, /sbin/service -Requires(postun): /sbin/service -Group: Applications/Engineering -Vendor: Telefonica I+D -BuildRequires: npm - -%description -Perseo is the Complex Event Process for IoT platform. - -# System folders -%define _srcdir $RPM_BUILD_ROOT/../../.. -%define _service_name perseo -%define _install_dir /opt/perseo -%define _perseoCep_log_dir /var/log/perseo - -# RPM Building folder -%define _build_root_project %{buildroot}%{_install_dir} -# -------------------------------------------------------------------------------------------- # -# prep section, setup macro: -# -------------------------------------------------------------------------------------------- # -%prep -echo "[INFO] Preparing installation" -# Create rpm/BUILDROOT folder -rm -Rf $RPM_BUILD_ROOT && mkdir -p $RPM_BUILD_ROOT -[ -d %{_build_root_project} ] || mkdir -p %{_build_root_project} - -# Copy src files -cp -R %{_srcdir}/lib \ - %{_srcdir}/bin \ - %{_srcdir}/config.js \ - %{_srcdir}/package.json \ - %{_build_root_project} - -[ -f %{_srcdir}/npm-shrinkwrap.json ] && /bin/cp %{_srcdir}/npm-shrinkwrap.json %{_build_root_project} - -cp -R %{_topdir}/SOURCES/etc %{buildroot} - -# -------------------------------------------------------------------------------------------- # -# Build section: -# -------------------------------------------------------------------------------------------- # -%build -echo "[INFO] Building RPM" -cd %{_build_root_project} - -# Only production modules. We have found that --force is required to make this work for Node v8 -rm -fR node_modules/ -npm cache clear --force -npm install --production - -# -------------------------------------------------------------------------------------------- # -# pre-install section: -# -------------------------------------------------------------------------------------------- # -%pre -echo "[INFO] Creating %{_project_user} user" -grep ^%{_project_user}: /etc/passwd -RET_VAL=$? -if [ "$RET_VAL" != "0" ]; then - /usr/sbin/useradd -s "/bin/bash" -d %{_install_dir} %{_project_user} - RET_VAL=$? - if [ "$RET_VAL" != "0" ]; then - echo "[ERROR] Unable create %{_project_user} user" \ - exit $RET_VAL - fi -fi - -# -------------------------------------------------------------------------------------------- # -# post-install section: -# -------------------------------------------------------------------------------------------- # -%post -echo "[INFO] Configuring application" - -echo "[INFO] Creating the home Perseo directory" -mkdir -p _install_dir -echo "[INFO] Creating log directory" -mkdir -p %{_perseoCep_log_dir} -touch %{_perseoCep_log_dir}/perseo.log -chown -f %{_project_user}:%{_project_user} %{_perseoCep_log_dir} -chown -f %{_project_user}:%{_project_user} %{_perseoCep_log_dir}/perseo.log* -chown -R %{_project_user}:%{_project_user} _install_dir -chmod g+s %{_perseoCep_log_dir} -setfacl -d -m g::rwx %{_perseoCep_log_dir} -setfacl -d -m o::rx %{_perseoCep_log_dir} - -echo "[INFO] Configuring application service" -cd /etc/init.d -chkconfig --add %{_service_name} - -echo "Done" - -# -------------------------------------------------------------------------------------------- # -# pre-uninstall section: -# -------------------------------------------------------------------------------------------- # -%preun - -echo "[INFO] stoping service %{_service_name}" -service %{_service_name} stop &> /dev/null - -if [ $1 == 0 ]; then - - echo "[INFO] Removing application log files" - # Log - [ -d %{_perseoCep_log_dir} ] && rm -rf %{_perseoCep_log_dir} - - echo "[INFO] Removing application files" - # Installed files - [ -d %{_install_dir} ] && rm -rf %{_install_dir} - - echo "[INFO] Removing application user" - userdel -fr %{_project_user} - - echo "[INFO] Removing application service" - chkconfig --del %{_service_name} - rm -f /etc/init.d/%{_service_name} - echo "Done" -fi - -# -------------------------------------------------------------------------------------------- # -# post-uninstall section: -# clean section: -# -------------------------------------------------------------------------------------------- # -%postun -%clean -rm -rf $RPM_BUILD_ROOT - -# -------------------------------------------------------------------------------------------- # -# Files to add to the RPM -# -------------------------------------------------------------------------------------------- # -%files -%defattr(755,%{_project_user},%{_project_user},755) -%config /etc/init.d/%{_service_name} -%config /etc/sysconfig/logrotate-%{_service_name}-size -%config /etc/logrotate.d/logrotate-%{_service_name}.conf -%config /etc/cron.d/cron-logrotate-%{_service_name}-size -%{_install_dir} - -%changelog -* Thu May 18 2023 Alvaro Vega 1.27.0 -- Add: support to run tests with node 18 -- Fix: do not flat in to map object or array attributes of event (#720) -- Remove: unnecessary event data transformations (stripped, location parse, datetime parse) (#706, #712) -- Upgrade uuid dep from ~1.4.2 to 9.0.0 -- Set Nodejs 16 as minimum version in packages.json (effectively removing Nodev12 and Nodev14 from supported versions) - -* Thu Oct 27 2022 Alvaro Vega 1.26.0 -- Fix: update actions with filter of timed based rules are not tried to execute after first failure updating entities (#708) - -* Fri Jul 1 2022 Alvaro Vega 1.25.0 -- Add: full detail about batch update error or success in logs -- Fix: check rule.name match with EPL rule.text ruleName when update a text rule (#699) -- Fix: ensure datetime attrs from entity for nosignal events are in ISO format instead of epoc -- Fix: expanding an object variable in action of rule (#692) -- Fix: for EPL with context + insert + select rule (without expression) (#652) -- Fix: format of internalCurrentTime fixed to ISO 8601 -- Fix: typo in non signal event internalCurentTime -> internalCurrentTime -- Upgrade NodeJS version from 14-slim to 16-slim in Dockerfile - -* Thu May 26 2022 Alvaro Vega 1.24.0 -- Fix: changed detection of rule loop by checking max number of rule executions triggered by the same notification (with the same correlator) (new env var PERSEO_MAX_RULES_BY_CORR) (#678) -- Fix: replace deprecated dep shortid by nanoid -- Upgrade ngsijs dep from ~1.3.0 to 1.4.1 -- Upgrade express dep from ~4.16.4 to 4.18.1 -- Upgrade uuid dep from ~1.4.2 to 3.4.0 - -* Wed May 11 2022 Alvaro Vega 1.23.0 -- Add: keep original array and object value in event sent to perseo-core (#662) -- Set Nodejs 12 as minimum version in packages.json (effectively removing Nodev10 from supported versions) -- Fix: Dockerfile to include initial packages upgrade -- Upgrade async dep from 2.6.2 to 2.6.4 due to security vulnerability (CWE-1321) - -* Fri Apr 22 2022 Fermin Galan 1.22.0 -- Add: service to authentication action parameters (and associated env var PERSEO_AUTHENTICATION_SERVICE) -- Fix: check properly 401 error response (i.e. token expired) from CB requests -- Fix: improve CB error management when response has no data (#659) -- Fix: avoid modify ruleName epl if already unique (#654) -- Fix: preselect in ruleWithContext (#630) - -* Tue Mar 15 2022 Alvaro Vega 1.21.0 -- Add: authentication as action parameters for updateAction (#638) -- Add: support for insert into stream rules (in detail: ) (#630) -- Add: externalCBUrl as action parameters for updateAction (#625) -- Add: PERSEO_MONGO_AUTH_SOURCE variable (#607) -- Add: Add graceful shutdown listening to SIGINT (#617) -- Fix: ensure timed rules are provided to perseo-core with ruleName in EPL are in unique format (perseo-core#191) (needs perseo-core 1.9.0) -- Fix: fill proper srv and subsrc in logs of noSignal (#624) -- Fix: set 'None' as default type of entity for updateAction (#611) -- Upgrade mongodb dep driver from 3.6.8 to 3.6.12 -- Upgrade logops dep from 2.1.0 to 2.1.2 due to colors dependency corruption -- Upgrade nodemailer dep from 6.4.18 to 6.6.5 -- Upgrade NodeJS version from 12 to 14 in Dockerfile - -* Fri Nov 12 2021 Alvaro Vega 1.20.0 -- Add: log context rule in core involved ops (#550) -- Add: include json (representated as string) in event delivered to perseo-core for each notification field (#579) -- Fix: parse metadata geo:json of type Point in a the same special way than geo:point when process event for perseo-core (#576) -- Fix: lat long order of geo:json of type Point -- Fix: parse attribute geo:json of type Point in a the same special way than geo:point when process event for perseo-core (#576) -- Fix: some mongodb driver warns about deprecations (#570) -- Fix: use more robust regex for select detection for context (#548) - -* Tue Oct 5 2021 Alvaro Vega 1.19.0 -- Fix: ensure remove CR LF chars in EPL text for core (#556) -- Fix: do not exit process when error < 500 is propagated from core, just log error (#557) -- Fix: reset location to not expand it in all attributes event (#560) - -* Thu Sep 30 2021 Alvaro Vega 1.18.0 -- Add: support for "pre select" clauses (in detail: ) -- Fix: remove cbnotif from correlator (#536) -- Fix: failed rules updatescounter not working in metrics API -- Fix: return error 400 from perseo-core instead of 500 (#539) -- Fix: ngsiv2 initial notification does not include a list of subservices in servicePath header when is / (#527) -- Update ngsijs dep from 1.2.1 to 1.3.0 -- Update mongodb dep driver from 3.6.3 to 3.6.8 -- Update nodemailer dep from 6.4.8 to 6.4.18 -- Update requests dep from 2.88.0 to 2.88.2 - -* Fri Apr 16 2021 Alvaro Vega 1.17.0 -- Add: 'CC' and 'BCC' message fields to emailAction (#444) -- Add: allow use sms/smpp/smtp conf from action (#517)(#269) -- Add: notify TimeInstant value to core for NGSIv2 (#503) -- Fix: config smtp auth user and password: unbind them from config smtp secure flag (#514) -- Fix: convert geojsonpolygon filter into ngsiv2 geoquery (#512) -- Fix: router logs to print object details -- Fix: expand `location` geo:json of type Point in event field to core for NGSIv2 (#505) -- Fix: expand `location` event field to core for NGSIv2 (#504) -- Update dep nodemailer from 1.11.0 to 6.4.8 -- Update dep nodemailer-smtp-transport from 0.1.13 to 2.7.2 -- Upgrade NodeJS version from 10.19.0 to 12 in Dockerfile -- Convert Dockerfile to multistage builds and add a distroless option - -* Fri Feb 19 2021 Alvaro Vega 1.16.0 -- Fix: pagination-based update action for filter results (so removing the limit to 20 entities in the previous implementation) (#455) -- Fix: check if there is entities before update them (#485) -- Fix: updateAction is using always `append` in actionType (#484) - -* Tue Jan 12 2021 Alvaro Vega 1.15.0 -- Add: PUT plain rule -- Fix: documentation API /version method (#445) -- Set 'null' instead of '[?]' when no data available for macro substitution (#469) -- Update mongo dep driver from 2.2.36 to 3.6.3 (#480) - -* Fri Nov 6 2020 Alvaro Vega 1.14.0 -- Add check max value used by setInterval in nonSignal rule (#464) -- Avoid stop perseo after uncaught exception, just report fatal and details but continue -- Add internalCurrentTime to nosignal event (#460) -- Fix postAction crash using a non string template (#459) -- Use unique (by node) correlator_suffix to detect rule loops (#456) -- Log checkNoSignal error using current context (#422) - -* Tue May 12 2020 Fermin Galan 1.13.0 -- Add: service and subservice as action parameters for updateAction (#349) -- Fix: broken email action -- Make optional PM2 usage in docker entrypoint -- Upgrade NodeJS version from 10.17.0 to 10.19.0 in Dockerfile -- Set Nodejs 10.17.0 as minimum version in packages.json (effectively removing Nodev8 as supported version) - -* Mon Feb 10 2020 Alvaro Vega 1.12.0 -- Fix nosignal actions in HA: both nodes are executing the same rule at the same time -- Add: /api-docs endpoint providing swagger-based documentation of the HTTP endpoints exposed by Perseo FE -- Fix: improving logs system, adding more traces and changes to avoid too verbose messages at INFO level -- Hardening: software quality improvement based on ISO25010 recommendations - -* Mon Dec 16 2019 Fermin Galan 1.11.0 -- Add: special context for timed rules (#411) -- Fix: use event for expanding action update filter (#417) -- Update some node dependencies: - - async: from ~0.9.2 to 2.6.2 - - express: from ~4.16.1 to ~4.16.4 - - request: from ~2.83.0 to 2.88.0 -- Hardening: MongoDB connection logic to avoid deprecated parameteres -- Upgrade NodeJS version from 8.16.1 to 10.17.0 in Dockerfile due to Node 8 End-of-Life - -* Tue Oct 29 2019 Fermin Galan 1.10.0 -- Add: include stripped (non flatten) data into event (#377) -- Add: castType (PERSEO_CAST_TYPE) to enable NGSIv2 type based casting (default is to use JSON native types in values) -- Add: authentication config env vars (#349) -- Add: full support for pagination in APIs /rules and /vrules (#364) -- Add: Fiware-Total-Count header to response when count -- Add: missed correlatorid headers in updateAction with NGSIv2 -- Add: try expandVars for numeric, boolean and json in attributes of updateAction and text of postAction (#362) -- Add: NGSI filter to updateAction (#335) -- Add: count to response to get all rules (cep + vr) -- Add: update entity using NGSIv2 with a trust token (#317) -- Add: new logs about rule provision, deleting, etc (#346) -- Add: config env vars for isMaster and slaveDelay -- Set default version to 2 (NGSIv2) for updateAction by default -- Refactor updateAction doItWithToken to include version 1 and 2 -- Upgrade NodeJS version from 8.16.0 to 8.16.1 in Dockerfile due to security issues -- Upgrade ngsijs dependency from 1.2.0 to 1.2.1 -- Upgrade mongodb dependency from ~2.2.31 to ~2.2.35 - -* Tue Jun 04 2019 Fermin Galan 1.9.0 -- Upgrade from node:8.12.0-slim to node:8.16.0-slim as base image in Dockerfile -- Add: allow SMS actions with multiple phone destinations (#337) -- Fix: replace findOne + orderby to find + sort + limit in LastTime executionsStore (#339) - -* Fri Feb 08 2019 Fermin Galan 1.8.0 -- Add: NGSIv2 support in both notification reception and CB update action -- Change on the PERSEO_ORION_URL env var behaviour. Now it represents Context Broker base URL instead of the - updateContext endpoint -- Add: 'ruleName' as variable automatically in rule text field (EPL) on rule creation time (#307) -- Set Nodejs 8.12.0 as minimum version in packages.json (effectively removing Nodev4 and Nodev6 as supported versions) -- Add: use NodeJS 8 in Dockerfile -- Add: use PM2 in Dockerfile -- Add: new ngsijs ~1.2.0 dependency -- Add: new rewire ~4.0.1 dev dependency -- Upgrade depedency logops from 1.0.0-alpha.7 to 2.1.0 -- Upgrade dev dependency istanbul from ~0.1.34 to ~0.4.5 -- Upgrade dev dependency mocha from 2.4.5 to to 5.2.0 -- Upgrade dev dependency chai from ~1.8.0 to ~4.1.2 -- Upgrade dev dependency sinon from ~1.7.3 to ~6.1.0 -- Upgrade dev dependency sinon-chai from 2.4.0 to ~3.2.0 -- Remove: old unused development dependencies - * grunt and grunt related module - * closure-linter-wrapper - -* Thu Sep 20 2018 Fermin Galan 1.7.0 -- Add: new parameter to updateAction card: actionType: APPEND (default) or UPDATE (#278) -- Using precise dependencies (~=) in packages.json -- Provide default value (false) for tls.rejectUnauthorized config option (#272, partially) - -* Wed Oct 18 2017 Fermin Galan 1.6.0 -- FEATURE update node version to 4.8.4 -- Fixed timer leak in HA-refresh scenarios [#253] -- Modify main section of package.json from lib/perseo to bin/perseo -- Add native SMPP support [#246] -- Add PERSEO_MONGO_ENDPOINT, PERSEO_MONGO_USER and PERSEO_MONGO_PASSWORD variables to compose a full mongo connection string [#243] -- Remove PERSEO_MONGO_HOST variable (use PERSEO_MONGO_ENDPOINT instead) [#243] -- Add smpp dependence to npm-shrinkwrap [#249] - -* Thu Feb 02 2017 Daniel Moran 1.5.0 -- Fix: Blocked actions in queue when error (#221) -- Add: Retrieve loop detection, with mark (#226) -- Add: metrics REST API (#227) -- Fix: Alarms for database (replicaset) (#230) -- Change: Default value for refresh rules to core in config.js, now 5 minutes -- Change: Default value for DB checking in config.js, now 5 seconds -- Add: Several actions per rule (#197) - -* Thu Dec 01 2016 Daniel Moran 1.4.0 -- Add: Update axn with multiple attrs (#210) -- Change: Logs for alarms in ERROR level and use of ALARM-ON and ALARM-OFF prefixes to signal alarm raising/releasing in log (#218). See doc. -- Add: Admit several comma-separated servicepaths in header for notifications (#117) -- Remove (rollback feature introduced in 1.2.0): break rule execution loops (PR #225) - - -* Fri Oct 28 2016 Daniel Moran 1.3.0 -- Add: Processing location attributes for EPL (#198) -- Add: Processing time attributes for EPL (#205) -- Fix: Post axn w/o template (#207) - - -* Mon Oct 03 2016 Daniel Moran 1.2.0 -- Add: propagate metadata to core (#182) -- Add: improved post action (#144) -- Fix: weird behaviour post action (#191) -- Add: break rule execution loops (#190) - - -* Wed Sep 07 2016 Daniel Moran 1.1.0 -- Fix: modified the permissions of the PID file to be readable by third party SW -- Add: Allow notices and rules paths to be configured by environment variables (issue #161) -- Fix: align and fix log traces, add comp field (issue #166) -- Add: add 'from' field in log traces (issue #166) -- Add: GET /admin/log (issue #169) -- Fix: env var for next core bug (issue #171) -- Change: default value for next core to none (issue #172) -- Fix: false error log when action is executed (issue #176) -- Fix: saving invalid visual rule in updates (issue #177) - - -* Wed Jun 08 2016 Daniel Moran 1.0.0 -- Fix: serialize actions execution -- Fix: Use current orion db model for no-signal rules (#128) -- Add: Change log level at run-time with PUT (#131) -- Add: Use srv and subsrv in log traces (#132) -- Add: Use 'fiware-correlator' instead of 'unica-correlator' (#133) -- Fix: Bug in update action when origin entity does not have type (#136) -- Fix: Verify checkInterval is valid even if coming from DB (#140) -- Fix: refreshing deleted no-signal rules (regular rules refreshing after deletion was already working) (#141) -- Change: do not lower subservice taken from header (#146) -- Fix: insert service/subservice into core events, taking them from header -- Change: make subject optional for email action -- Add: Take configuration for environment variables for STMP y SMPP Adapter (#153) - - - -* Wed Dec 09 2015 Daniel Moran 0.7.0 -- Modify Perseo's executable to add environment variable-based configuration. -- Add string subsitution for more action parameters (#114) -- Add configuration for secure SMTP servers (#122) - -* Thu May 21 2015 Daniel Moran 0.6.0 -- Fix entity's attributes in NSR action (#73) -- Fix #75 (undo #55) Params in updateAction is not an array -- Add auth for update action -- Fix Configuration for no HA (#86) -- Fix Use service/subservice instead of tenant/service (#39) -- Extract params for checkDB to config.js (#6) - -* Thu Feb 26 2015 Daniel Moran 0.5.0 -- Fiware-Service validation (#29) -- Fiware-ServicePath validation (#32) -- Change HA model for execution of actions -- Fix error if parameter "type" exist in Update entity action (#30) -- Added 'twitter' action -- Changed 'update' action, any entity -- Do not allow 'id' and 'type' as attribute names -- Change parameter for POST action from 'URL' to 'url' -- Fix error in VR for updateAction (#55) -- Fix validation rule name (#44, #15) -- Fix negative and zero check intervals for NSR (#53) -- Fix missing 'from' in SMS (#67) - -* Mon Jan 19 2015 Daniel Moran 0.4.1 -- Fix: using logops as logging library - -* Thu Dec 18 2014 Daniel Moran 0.4.0 -- Use EPL context again -- Show number of no-signal rules and checkers clearly in debug logs -- Take service/subservice from original event in actions -- Allow names of attributes to be any string -- Include propagation to next core in the main request, allowing it to fail with only a error log -- Remove service/subservice from examples/ -- Simplify names of rules and contexts at core -- Add action card for updateAttribute in VR -- Improve logs for alarm generation -- Add periodical check of databases - -* Tue Dec 2 2014 Carlos Romero Brox 0.2.0 -- Add non-signal cards -- Fix header fields not recognized -- Force lowercase for service and servicepath -- Show more characters of data in logs -- Refresh core after DB is setup -- Improve examples -- Add generic POST action +1.27.0 (May 18th, 2023) + +- Add: support to run tests with node 18 +- Fix: do not flat in to map object or array attributes of event (#720) +- Remove: unnecessary event data transformations (stripped, location parse, datetime parse) (#706, #712) +- Upgrade uuid dep from ~1.4.2 to 9.0.0 +- Set Nodejs 16 as minimum version in packages.json (effectively removing Nodev12 and Nodev14 from supported versions) + +1.26.0 (October 27, 2022) + +- Fix: update actions with filter of timed based rules are not tried to execute after first failure updating entities (#708) + + +1.25.0 (July 1st, 2022) + +- Add: full detail about batch update error or success in logs +- Fix: check rule.name match with EPL rule.text ruleName when update a text rule (#699) +- Fix: ensure datetime attrs from entity for nosignal events are in ISO format instead of epoc +- Fix: expanding an object variable in action of rule (#692) +- Fix: for EPL with context + insert + select rule (without expression) (#652) +- Fix: format of internalCurrentTime fixed to ISO 8601 +- Fix: typo in non signal event internalCurentTime -> internalCurrentTime +- Upgrade NodeJS version from 14-slim to 16-slim in Dockerfile + +1.24.0 (May 26th, 2022) + +- Fix: changed detection of rule loop by checking max number of rule executions triggered by the same notification (with the same correlator) (new env var PERSEO_MAX_RULES_BY_CORR) (#678) +- Fix: replace deprecated dep shortid by nanoid +- Upgrade ngsijs dep from ~1.3.0 to 1.4.1 +- Upgrade express dep from ~4.16.4 to 4.18.1 +- Upgrade uuid dep from ~1.4.2 to 3.4.0 + +1.23.0 (May 11th, 2022) + +- Add: keep original array and object value in event sent to perseo-core (#662) +- Set Nodejs 12 as minimum version in packages.json (effectively removing Nodev10 from supported versions) +- Fix: Dockerfile to include initial packages upgrade +- Upgrade async dep from 2.6.2 to 2.6.4 due to security vulnerability (CWE-1321) + +1.22.0 (April 22nd, 2022) + +- Add: service to authentication action parameters (and associated env var PERSEO_AUTHENTICATION_SERVICE) +- Fix: check properly 401 error response (i.e. token expired) from CB requests +- Fix: improve CB error management when response has no data (#659) +- Fix: avoid modify ruleName epl if already unique (#654) +- Fix: preselect in ruleWithContext (#630) + +1.21.0 (March 15th, 2022) + +- Add: authentication as action parameters for updateAction (#638) +- Add: support for insert into stream rules (in detail: ) (#630) +- Add: externalCBUrl as action parameters for updateAction (#625) +- Add: PERSEO_MONGO_AUTH_SOURCE variable (#607) +- Add: Add graceful shutdown listening to SIGINT (#617) +- Fix: ensure timed rules are provided to perseo-core with ruleName in EPL are in unique format (perseo-core#191) (needs perseo-core 1.9.0) +- Fix: fill proper srv and subsrc in logs of noSignal (#624) +- Fix: set 'None' as default type of entity for updateAction (#611) +- Upgrade mongodb dep driver from 3.6.8 to 3.6.12 +- Upgrade logops dep from 2.1.0 to 2.1.2 due to colors dependency corruption +- Upgrade nodemailer dep from 6.4.18 to 6.6.5 +- Upgrade NodeJS version from 12 to 14 in Dockerfile + +1.20.0 (November 12th, 2021) + +- Add: log context rule in core involved ops (#550) +- Add: include json (representated as string) in event delivered to perseo-core for each notification field (#579) +- Fix: parse metadata geo:json of type Point in a the same special way than geo:point when process event for perseo-core (#576) +- Fix: lat long order of geo:json of type Point +- Fix: parse attribute geo:json of type Point in a the same special way than geo:point when process event for perseo-core (#576) +- Fix: some mongodb driver warns about deprecations (#570) +- Fix: use more robust regex for select detection for context (#548) + +1.19.0 (October 5th, 2021) + +- Fix: ensure remove CR LF chars in EPL text for core (#556) +- Fix: do not exit process when error < 500 is propagated from core, just log error (#557) +- Fix: reset location to not expand it in all attributes event (#560) + +1.18.0 (September 30th, 2021) + +- Add: support for "pre select" clauses (in detail: ) +- Fix: remove cbnotif from correlator (#536) +- Fix: failed rules updatescounter not working in metrics API +- Fix: return error 400 from perseo-core instead of 500 (#539) +- Fix: ngsiv2 initial notification does not include a list of subservices in servicePath header when is / (#527) +- Update ngsijs dep from 1.2.1 to 1.3.0 +- Update mongodb dep driver from 3.6.3 to 3.6.8 +- Update nodemailer dep from 6.4.8 to 6.4.18 +- Update requests dep from 2.88.0 to 2.88.2 + +1.17.0 (April 16th, 2021) + +- Add: 'CC' and 'BCC' message fields to emailAction (#444) +- Add: allow use sms/smpp/smtp conf from action (#517)(#269) +- Add: notify TimeInstant value to core for NGSIv2 (#503) +- Fix: config smtp auth user and password: unbind them from config smtp secure flag (#514) +- Fix: convert geojsonpolygon filter into ngsiv2 geoquery (#512) +- Fix: router logs to print object details +- Fix: expand `location` geo:json of type Point in event field to core for NGSIv2 (#505) +- Fix: expand `location` event field to core for NGSIv2 (#504) +- Update dep nodemailer from 1.11.0 to 6.4.8 +- Update dep nodemailer-smtp-transport from 0.1.13 to 2.7.2 +- Upgrade NodeJS version from 10.19.0 to 12 in Dockerfile +- Convert Dockerfile to multistage builds and add a distroless option + +1.16.0 (February 19th, 2021) + +- Fix: pagination-based update action for filter results (so removing the limit to 20 entities in the previous implementation) (#455) +- Fix: check if there is entities before update them (#485) +- Fix: updateAction is using always `append` in actionType (#484) + +1.15.0 (January 12th, 2021) + +- Add: PUT plain rule +- Fix: documentation API /version method (#445) +- Set 'null' instead of '[?]' when no data available for macro substitution (#469) +- Update mongo dep driver from 2.2.36 to 3.6.3 (#480) + +1.14.0 (November 6th, 2020) + +- Add check max value used by setInterval in nonSignal rule (#464) +- Avoid stop perseo after uncaught exception, just report fatal and details but continue +- Add internalCurrentTime to nosignal event (#460) +- Fix postAction crash using a non string template (#459) +- Use unique (by node) correlator_suffix to detect rule loops (#456) +- Log checkNoSignal error using current context (#422) + +1.13.0 (May 12th, 2020) + +- Add: service and subservice as action parameters for updateAction (#349) +- Fix: broken email action +- Make optional PM2 usage in docker entrypoint +- Upgrade NodeJS version from 10.17.0 to 10.19.0 in Dockerfile +- Set Nodejs 10.17.0 as minimum version in packages.json (effectively removing Nodev8 as supported version) + +1.12.0 (February 10th, 2020) + +- Fix nosignal actions in HA: both nodes are executing the same rule at the same time +- Add: /api-docs endpoint providing swagger-based documentation of the HTTP endpoints exposed by Perseo FE +- Fix: improving logs system, adding more traces and changes to avoid too verbose messages at INFO level +- Hardening: software quality improvement based on ISO25010 recommendations + +1.11.0 (December 16th, 2019) + +- Add: special context for timed rules (#411) +- Fix: use event for expanding action update filter (#417) +- Update some node dependencies: + - async: from ~0.9.2 to 2.6.2 + - express: from ~4.16.1 to ~4.16.4 + - request: from ~2.83.0 to 2.88.0 +- Hardening: MongoDB connection logic to avoid deprecated parameteres +- Upgrade NodeJS version from 8.16.1 to 10.17.0 in Dockerfile due to Node 8 End-of-Life + +1.10.0 (October 29th, 2019) + +- Add: include stripped (non flatten) data into event (#377) +- Add: castType (PERSEO_CAST_TYPE) to enable NGSIv2 type based casting (default is to use JSON native types in values) +- Add: authentication config env vars (#349) +- Add: full support for pagination in APIs /rules and /vrules (#364) +- Add: Fiware-Total-Count header to response when count +- Add: missed correlatorid headers in updateAction with NGSIv2 +- Add: try expandVars for numeric, boolean and json in attributes of updateAction and text of postAction (#362) +- Add: NGSI filter to updateAction (#335) +- Add: count to response to get all rules (cep + vr) +- Add: update entity using NGSIv2 with a trust token (#317) +- Add: new logs about rule provision, deleting, etc (#346) +- Add: config env vars for isMaster and slaveDelay +- Set default version to 2 (NGSIv2) for updateAction by default +- Refactor updateAction doItWithToken to include version 1 and 2 +- Upgrade NodeJS version from 8.16.0 to 8.16.1 in Dockerfile due to security issues +- Upgrade ngsijs dependency from 1.2.0 to 1.2.1 +- Upgrade mongodb dependency from ~2.2.31 to ~2.2.35 + +1.9.0 (June 4th, 2019) + +- Upgrade from node:8.12.0-slim to node:8.16.0-slim as base image in Dockerfile +- Add: allow SMS actions with multiple phone destinations (#337) +- Fix: replace findOne + orderby to find + sort + limit in LastTime executionsStore (#339) + +1.8.0 (February 8th, 2019) + +- Add: NGSIv2 support in both notification reception and CB update action +- Change on the PERSEO_ORION_URL env var behaviour. Now it represents Context Broker base URL instead of the + updateContext endpoint +- Add: 'ruleName' as variable automatically in rule text field (EPL) on rule creation time (#307) +- Set Nodejs 8.12.0 as minimum version in packages.json (effectively removing Nodev4 and Nodev6 as supported versions) +- Add: use NodeJS 8 in Dockerfile +- Add: use PM2 in Dockerfile +- Add: new ngsijs ~1.2.0 dependency +- Add: new rewire ~4.0.1 dev dependency +- Upgrade depedency logops from 1.0.0-alpha.7 to 2.1.0 +- Upgrade dev dependency istanbul from ~0.1.34 to ~0.4.5 +- Upgrade dev dependency mocha from 2.4.5 to to 5.2.0 +- Upgrade dev dependency chai from ~1.8.0 to ~4.1.2 +- Upgrade dev dependency sinon from ~1.7.3 to ~6.1.0 +- Upgrade dev dependency sinon-chai from 2.4.0 to ~3.2.0 +- Remove: old unused development dependencies + * grunt and grunt related module + * closure-linter-wrapper + +1.7.0 (September 20th, 2018) + +- Add: new parameter to updateAction card: actionType: APPEND (default) or UPDATE (#278) +- Using precise dependencies (~=) in packages.json +- Provide default value (false) for tls.rejectUnauthorized config option (#272, partially) + +1.6.0 (October 18th, 2017) + +- FEATURE update node version to 4.8.4 +- Fixed timer leak in HA-refresh scenarios [#253] +- Modify main section of package.json from lib/perseo to bin/perseo +- Add native SMPP support [#246] +- Add PERSEO_MONGO_ENDPOINT, PERSEO_MONGO_USER and PERSEO_MONGO_PASSWORD variables to compose a full mongo connection string [#243] +- Remove PERSEO_MONGO_HOST variable (use PERSEO_MONGO_ENDPOINT instead) [#243] +- Add smpp dependence to npm-shrinkwrap [#249] + +1.5.0 (February 2nd, 2017) + +- Fix: Blocked actions in queue when error (#221) +- Add: Retrieve loop detection, with mark (#226) +- Add: metrics REST API (#227) +- Fix: Alarms for database (replicaset) (#230) +- Change: Default value for refresh rules to core in config.js, now 5 minutes +- Change: Default value for DB checking in config.js, now 5 seconds +- Add: Several actions per rule (#197) + +1.4.0 (December 1st, 2016) + +- Add: Update axn with multiple attrs (#210) +- Change: Logs for alarms in ERROR level and use of ALARM-ON and ALARM-OFF prefixes to signal alarm raising/releasing in log (#218). See doc. +- Add: Admit several comma-separated servicepaths in header for notifications (#117) +- Remove (rollback feature introduced in 1.2.0): break rule execution loops (PR #225) + +1.3.0 (October 28th, 2016) + +- Add: Processing location attributes for EPL (#198) +- Add: Processing time attributes for EPL (#205) +- Fix: Post axn w/o template (#207) + +1.2.0 (October 3rd, 2016) + +- Add: propagate metadata to core (#182) +- Add: improved post action (#144) +- Fix: weird behaviour post action (#191) +- Add: break rule execution loops (#190) + +1.1.0 (September 7th, 2016) + +- Fix: modified the permissions of the PID file to be readable by third party SW +- Add: Allow notices and rules paths to be configured by environment variables (issue #161) +- Fix: align and fix log traces, add comp field (issue #166) +- Add: add 'from' field in log traces (issue #166) +- Add: GET /admin/log (issue #169) +- Fix: env var for next core bug (issue #171) +- Change: default value for next core to none (issue #172) +- Fix: false error log when action is executed (issue #176) +- Fix: saving invalid visual rule in updates (issue #177) + +1.0.0 (June 8th, 2016) + +- Fix: serialize actions execution +- Fix: Use current orion db model for no-signal rules (#128) +- Add: Change log level at run-time with PUT (#131) +- Add: Use srv and subsrv in log traces (#132) +- Add: Use 'fiware-correlator' instead of 'unica-correlator' (#133) +- Fix: Bug in update action when origin entity does not have type (#136) +- Fix: Verify checkInterval is valid even if coming from DB (#140) +- Fix: refreshing deleted no-signal rules (regular rules refreshing after deletion was already working) (#141) +- Change: do not lower subservice taken from header (#146) +- Fix: insert service/subservice into core events, taking them from header +- Change: make subject optional for email action +- Add: Take configuration for environment variables for STMP y SMPP Adapter (#153) + +0.7.0 (December 9th, 2015) + +- Modify Perseo's executable to add environment variable-based configuration. +- Add string subsitution for more action parameters (#114) +- Add configuration for secure SMTP servers (#122) + +0.6.0 (May 21st, 2015) + +- Fix entity's attributes in NSR action (#73) +- Fix #75 (undo #55) Params in updateAction is not an array +- Add auth for update action +- Fix Configuration for no HA (#86) +- Fix Use service/subservice instead of tenant/service (#39) +- Extract params for checkDB to config.js (#6) + +0.5.0 (February 26th, 2015) + +- Fiware-Service validation (#29) +- Fiware-ServicePath validation (#32) +- Change HA model for execution of actions +- Fix error if parameter "type" exist in Update entity action (#30) +- Added 'twitter' action +- Changed 'update' action, any entity +- Do not allow 'id' and 'type' as attribute names +- Change parameter for POST action from 'URL' to 'url' +- Fix error in VR for updateAction (#55) +- Fix validation rule name (#44, #15) +- Fix negative and zero check intervals for NSR (#53) +- Fix missing 'from' in SMS (#67) + +0.4.1 (January 19th, 2015) + +- Fix: using logops as logging library + +0.4.0 (December 18th, 2014) + +- Use EPL context again +- Show number of no-signal rules and checkers clearly in debug logs +- Take service/subservice from original event in actions +- Allow names of attributes to be any string +- Include propagation to next core in the main request, allowing it to fail with only a error log +- Remove service/subservice from examples/ +- Simplify names of rules and contexts at core +- Add action card for updateAttribute in VR +- Improve logs for alarm generation +- Add periodical check of databases + +0.2.0 (December 2nd, 2014) + +- Add non-signal cards +- Fix header fields not recognized +- Force lowercase for service and servicepath +- Show more characters of data in logs +- Refresh core after DB is setup +- Improve examples +- Add generic POST action \ No newline at end of file diff --git a/docker/Dockerfile b/docker/Dockerfile index 51d6bf35..ff7f64d7 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -87,7 +87,7 @@ RUN \ fi && \ RELEASE_CONCAT=$(echo "${RELEASE}" | tr / -); \ curl -s -L https://github.com/"${GITHUB_ACCOUNT}"/"${GITHUB_REPOSITORY}"/archive/"${RELEASE}".zip > source.zip && \ - unzip source.zip -x "*/test/**" "*/rpm/**" "*/docker/**" "*/documentation/**" "*/.*" && \ + unzip source.zip -x "*/test/**" "*/docker/**" "*/documentation/**" "*/.*" && \ rm source.zip && \ mv "${GITHUB_REPOSITORY}-${RELEASE_CONCAT}" /opt/perseo-fe && \ # Remove unzip and clean apt cache diff --git a/docs/admin/deployment.md b/docs/admin/deployment.md index 00e02326..b1c7e9c4 100644 --- a/docs/admin/deployment.md +++ b/docs/admin/deployment.md @@ -119,52 +119,6 @@ docker logs perseo_fe docker exec perseo_core tail -f /var/log/perseo/perseo-core.log ``` -### Installation from RPM - -This project provides the specs to create the RPM Package for the project, that may (in the future) be installed in a -package repository. - -To generate the RPM, checkout the project to a machine with the RPM Build Tools installed, and, from the `rpm/` folder, -execute the following command: - -```bash -./create-rpm.sh 0.1 1 -``` - -The create-rpm.sh script uses the following parameters: - -- CEP version (0.1 in the example above), which is the base version of the software -- CEP release (1 in the example above), tipically set with the commit number corresponding to the RPM. - -This command will generate some folders, including one called RPMS, holding the RPM created for every architecture -(x86_64 is currently generated). - -In order to install the generated RPM from the local file, use the following command: - -```bash -yum --nogpgcheck localinstall perseo-cep-0.1-1.x86_64.rpm -``` - -It should automatically download all the dependencies provided they are available (Node.js and npm may require the EPEL -repositories to be added). - -The RPM package can also be deployed in a artifact repository and the installed using: - -```bash -yum install perseo-cep -``` - -NOTE: Perseo CEP Core is not installed as part of the dependencies in the RPM, so the URL of an existing Perseo Core -must be provided and configured for Perseo to work properly. - -#### Activate service - -The perseo service is disabled once its installed. In order to enable it, use the following command: - -```bash -service perseo start -``` - ### Installation from Sources #### Installation @@ -183,10 +137,9 @@ In order to undeploy the proxy just kill the process and remove the directory. ### Log Rotation -Independently of how the service is installed, the log files will need an external rotation (e.g.: the `logrotate` -command) to avoid disk full problems. +Withing `etc` directory we can find some logrotate stuff (formerly used with RPM-based deployments, but probably not used at the present day), just in case they can be useful. -`logrotate` is installed as RPM dependency along with perseo. The system is configured to rotate every day and whenever +The configuration is set to rotate every day and whenever the log file size is greater than 100MB (checked very 30 minutes by default): - For daily rotation: `/etc/logrotate.d/logrotate-perseo-daily` : which enables daily log rotation diff --git a/docs/developer/contributing.md b/docs/developer/contributing.md index 1920f4c9..effd6f8d 100644 --- a/docs/developer/contributing.md +++ b/docs/developer/contributing.md @@ -157,7 +157,7 @@ The process of making a release consists of the following steps: 1. Create a new task branch changing the development version number in the package.json (with a sufix `-next`), to the new target version (without any sufix), and PR into `master`. Also, in this task, the contents of the Change log are - copied to the RPM spec. + copied to the Changelog file. 2. Create a tag from the last version of `master` named with the version number and push it to the repository. 3. Create the release in Github, from the created tag. In the description, add the contents of the Change log. 4. Create a release branch from the last version of `master` named with the version number. diff --git a/rpm/SOURCES/etc/cron.d/cron-logrotate-perseo-size b/etc/cron.d/cron-logrotate-perseo-size similarity index 100% rename from rpm/SOURCES/etc/cron.d/cron-logrotate-perseo-size rename to etc/cron.d/cron-logrotate-perseo-size diff --git a/rpm/SOURCES/etc/logrotate.d/logrotate-perseo.conf b/etc/logrotate.d/logrotate-perseo.conf similarity index 100% rename from rpm/SOURCES/etc/logrotate.d/logrotate-perseo.conf rename to etc/logrotate.d/logrotate-perseo.conf diff --git a/rpm/SOURCES/etc/sysconfig/logrotate-perseo-size b/etc/sysconfig/logrotate-perseo-size similarity index 100% rename from rpm/SOURCES/etc/sysconfig/logrotate-perseo-size rename to etc/sysconfig/logrotate-perseo-size diff --git a/rpm/SOURCES/etc/init.d/perseo b/rpm/SOURCES/etc/init.d/perseo deleted file mode 100755 index b0d33648..00000000 --- a/rpm/SOURCES/etc/init.d/perseo +++ /dev/null @@ -1,103 +0,0 @@ -#!/bin/bash -# -# perseo Start/Stop the PEP Proxy -# -# chkconfig: 2345 99 60 -# description: perseo-fe -### BEGIN INIT INFO -# Provides: perseo -# Required-Start: $local_fs $syslog -# Required-Stop: $local_fs $syslog -# Default-Start: 345 -# Default-Stop: 90 -# Short-Description: run perseo -# Description: Perseo is the Complex Event Process for IoT platform -### END INIT INFO - -# Copyright 2014 Telefonica Investigacion y Desarrollo, S.A.U -# -# This file is part of perseo-fe. -# -# perseo-fe is free software: you can redistribute it and/or -# modify it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# perseo-fe is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero -# General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with perseo-fe. If not, see http://www.gnu.org/licenses/. -# -# For those usages not covered by this license please contact with -# iot_support at tid dot es - - -. /etc/rc.d/init.d/functions - -PARAM=$1 -NAME=perseo -EXECUTABLE=bin/${NAME} -PROXY_PATH=/opt/perseo -PROXY_USER=cep -PIDFILE=$PROXY_PATH/$NAME.pid -LOG_PATH=/var/log/perseo/perseo.log - -perseo_start() -{ - printf "%-50s" "Starting ${NAME}..." - cd $PROXY_PATH - if [[ -x ${EXECUTABLE} ]]; then - cd $PROXY_PATH - su $PROXY_USER -c "cd $PROXY_PATH; nohup ${EXECUTABLE} &>> $LOG_PATH & echo \$! > $PIDFILE" - chmod 644 $PIDFILE - echo "Success" - else - printf "%s\n" "Fail - missing ${EXECUTABLE} executable" - exit 1 - fi -} - -perseo_stop() -{ - printf "%-50s" "Stopping $NAME..." - if [ -f "${PIDFILE}" ]; then - kill -9 $(cat ${PIDFILE}) - rm -f ${PIDFILE} - printf "%s\n" "$(success)" - else - printf "%s\n" "$(failure)" - fi -} - -perseo_status() -{ - status -p ${PIDFILE} ${EXECUTABLE} -} - -case ${PARAM} in - - 'start') - echo "Starting..." - status -p ${PIDFILE} ${EXECUTABLE} && exit 0 - perseo_start - ;; - - 'stop') - echo "Stopping..." - status -p ${PIDFILE} ${EXECUTABLE} || exit 0 - perseo_stop - ;; - - 'restart') - perseo_stop - perseo_start - ;; - - 'status') - perseo_status - ;; - -esac diff --git a/rpm/create-rpm.sh b/rpm/create-rpm.sh deleted file mode 100644 index e6f90ee6..00000000 --- a/rpm/create-rpm.sh +++ /dev/null @@ -1,42 +0,0 @@ -#!/bin/bash - -# Copyright 2015 Telefonica Investigacion y Desarrollo, S.A.U -# -# This file is part of perseo-fe. -# -# perseo-fe is free software: you can redistribute it and/or -# modify it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# perseo-fe is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero -# General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with perseo-fe. If not, see http://www.gnu.org/licenses/. -# -# For those usages not covered by this license please contact with -# iot_support at tid dot es - -CEP_VERSION=$2 -if [ -z "$CEP_VERSION" ]; then - CEP_VERSION=0.4.0_next -fi -CEP_RELEASE=$1 -if [ -z "$CEP_RELEASE" ]; then - CEP_RELEASE=0 -fi -FIWARE_VERSION=1.0 -FIWARE_RELEASE=1 -RPM_TOPDIR=$PWD -CEP_USER=cep - -rpmbuild -ba $RPM_TOPDIR/SPECS/cep.spec \ - --define "_topdir $RPM_TOPDIR" \ - --define "_project_user $CEP_USER" \ - --define "_product_version $CEP_VERSION" \ - --define "_product_release $CEP_RELEASE" \ - --define "fiware_version $FIWARE_VERSION" \ - --define "fiware_release $FIWARE_RELEASE" diff --git a/scripts/build/release.sh b/scripts/build/release.sh index cadb513a..2647929b 100755 --- a/scripts/build/release.sh +++ b/scripts/build/release.sh @@ -20,6 +20,10 @@ # For those usages not covered by this license please contact with # iot_support at tid dot es +# FIXME: this script is outdated. It is still using the rpm-based changelog. +# Have a look to same script at fiware-orion repo (which was adapted to use the new Changelog file) +# if we want to fix it + # ------------------------------------------------------------------------------ # # Example execution: diff --git a/sonar-project.properties b/sonar-project.properties deleted file mode 100644 index c1502854..00000000 --- a/sonar-project.properties +++ /dev/null @@ -1,15 +0,0 @@ -sonar.projectKey=com.telefonica.iot:perseo-fe -sonar.projectName=perseo-fe -sonar.projectVersion=0.1.0 - -sonar.sources=lib -sonar.tests=test -sonar.language=js - -sonar.dynamicAnalysis=reuseReports - -sonar.javascript.jstest.reportsPath=site/report -sonar.javascript.lcov.reportPath=site/coverage/lcov.info - -sonar.pdf.skip=true -sonar.scm.url=scm:git:fetch=git@github.com:telefonicaid/perseo-fe.git