Skip to main content

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

Project description

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

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 formated 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 environmet 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 did which particular change:

  1. Use basic authentication and maintain one userid and password per user. (For apache2 this can be done with the htpasswd tool.)
  2. Keep logs of the wsgi application at least at the INFO level.

Log entries will show the requested change together with the authenticated userid, search for remote_user =. Example for apache2:

pushd /var/log/apache2/
grep 'remote_user =' *
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']}; remote_user = 'bernhard.reiter'
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)]; remote_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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

intelmq-fody-backend-0.9.2.tar.gz (51.0 kB view hashes)

Uploaded Source

Built Distribution

intelmq_fody_backend-0.9.2-py2.py3-none-any.whl (55.9 kB view hashes)

Uploaded Python 2 Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page