Intevation / intelmq-fody-backend

A backend to serve intelmq-cb-mailgen data for the webapp fody.
2 stars 2 forks source link

Documentation

A backend to serve intelmq-cb-mailgen data or just events from an IntelMQ PostgreSQL database for the webapp Fody.

Each contained module has an additional README.md to follow.

Requirements

Locale

The encoding of the locale must be UTF-8. To do this, run dpkg-reconfigure locales and select, for example, en_US.UTF-8.

License

This software is Free Software available under the terms of the AGPL v3 or later versions of this license. See the file agpl-3.0.txt or https://www.gnu.org/licenses/agpl-3.0.en.html for details.

Operating manual

See events_api/README.md for usage hints for statistics.

Because of https://github.com/Intevation/intelmq-fody-backend/issues/12 make sure to restart the serving process(es) each time you have restarted postgresql.

Run with hug

hug -f intelmq_fody_backend/serve.py -p 8002

Run with Apache and WSGI

#as root
apt-get install libapache2-mod-wsgi-py3

You might want to use an Apache-Config similar to the example included as config/apache-example/001-fody.conf

Authentication

Authentication for the endpoints exposed by the fody-backend is configured in a json formatted file. The fody-backend tires to load the configuration file /etc/intelmq/fody-session.conf and ${PREFIX}/etc/intelmq/fody-session.conf. To override these paths set the environment variable FODY_SESSION_CONFIG to the path pointing to the config file.

If the config file is not found in the given locations the authenticion is disabled.

Example configuration

{
    "session_store": "/etc/intelmq/fody-session.sqlite",
    "session_duration": 86400
}

If you enable the session_store you will have to create user accounts to be able to access the API functionality. You can do this using fody-adduser:

fody-adduser --user <username> --password <password>

Track db changes by user

Only the module contactdb_api exposes the ability to write changes to the db.

If you want to be able to find out which user (see section above) did which particular change:

  1. Set the logging level to at least INFO.
  2. Keep the error logs of the wsgi application. In the default Apache configuration for fody, the file is /var/log/apache2/fody-backend-error.log

Log entries will show the requested change together with the username, search for user =. Example for Apache2:

pushd /var/log/apache2/
zgrep 'user =' fody-backend-error.log*
fody-backend-error.log:[Fri May 05 14:19:26.882299 2017] [:error] [pid 2075] 2017-05-05 14:19:26,882 contactdb_api.contactdb_api.serve INFO - Got commit_object = {'orgs': [{'comment': 'Testing', 'first_handle': '', 'name': 'Intevation', 'sector_id': None, 'contacts': [], 'ti_handle': '', 'ripe_org_hdl': '', 'asns': []}], 'commands': ['create']}; user = 'bernhard.reiter'
fody-backend-error.log:[Fri May 05 14:19:26.882299 2017] [:error] [pid 2075] 2017-05-05 14:19274,179 contactdb_api.contactdb_api.serve INFO - Commit successful, results = [('create', 126)]; user = 'bernhard.reiter'

Links

Development

How to release

Update the NEWS.md file and (usually) all setup.py files. Note the versioning scheme remark in the toplevel setup.py file.

Version number

Originally fody-backend had been designed with sub-modules that could potentially also be used separately. Example how to change all version numbers:

grep -r "^    version=" .
grep -rl "^    version=" . | xargs sed -i 's/0.4.4.dev0/0.5.0.dev0/'

debian/package

Update debian/changelog, e.g.

dch --newversion 0.7.0  --check-dirname-level 0 --distribution stable

Tag version

example

git tag -s v0.7.0 -m "Release v0.7.0"
git push origin v0.7.0

Prepare for following development

In the mentioned files above, set the version number to the following number as pre-version number for development, e.g. 0.7.1.dev0.

History

Most of the files within this repository originated from: https://github.com/Intevation/intelmq-mailgen/tree/master/extras