Skip to content

A backend to serve intelmq-cb-mailgen data for the webapp fody.

Notifications You must be signed in to change notification settings

Intevation/intelmq-fody-backend

Repository files navigation

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

  • hug
  • psycopg2 >=2.4.5
  • intelmq-mailgen
  • python-dateutil
  • typing
  • postgresql v>=9.5

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 #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
}
  • session_store: the location of the sqlite database that contains users and sessions.
  • session_duration: the maximal duration of a session.

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