Skip to main content

Documentation

A backend to serve intelmq-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

  • Python < 3.13
  • 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 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 interactively

For development purposes it is possible to run the backend interactively. The intelmq-fody frontend expects the backend at port 8002.

hug -f intelmq_fody_backend/serve.py -p 8002

It is also possible to only run a single backend, for example the events API:

hug -f events_api/events_api/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 authentication 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>

Same authentication as IntelMQ Manager

You can use the same authentication for IntelMQ Fody as for the IntelMQ Manager.

  1. From /etc/intelmq/api-config.json copy the value of the field session_store (on Debian/Ubuntu it is likely /var/lib/dbconfig-common/sqlite3/intelmq-api/intelmqapi). Short command: jq -r .session_store /etc/intelmq/api-config.json
  2. In /etc/intelmq/fody-session.conf set this value for the field session_store.
  3. Run sudo systemctl restart apache2 to make the change effective, restarting IntelMQ Fody's Backend.

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

History

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

Metadata

Release files for intelmq-fody-backend 0.11.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for intelmq-fody-backend 0.11.1
File Size Uploaded Provenance
intelmq_fody_backend-0.11.1.tar.gz 54.7 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for intelmq-fody-backend 0.11.1
File Interpreter ABI Platform
intelmq_fody_backend-0.11.1-py2.py3-none-any.whl Python 2, Python 3 none any Details

Total release size: 114.1 kB

Release files / intelmq_fody_backend-0.11.1.tar.gz

Download URL intelmq_fody_backend-0.11.1.tar.gz
Size 54.7 kB
Tags Source
SHA-256 checksum
How to use checksums
f916fe3265cc607ad6b3e08745ec7023a917cf0ce498def0287ca34f901ffb5a
BLAKE2b-256 checksum
How to use checksums
a40837a093b5a744f845380928918298d533954669cfe01a8a297e05f62b469b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / intelmq_fody_backend-0.11.1-py2.py3-none-any.whl

Download URL intelmq_fody_backend-0.11.1-py2.py3-none-any.whl
Size 59.4 kB
Tags Python 2 Python 3
SHA-256 checksum
How to use checksums
74dac8a33a7e5b81faf22e579e9376422449c166e0445fc120d2dc9a9f7d678c
BLAKE2b-256 checksum
How to use checksums
67e0fdc1c3d2d9cbb36cfc9da4ee2579518a69dafe6c82d84b4854129716b8df
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Security for intelmq-fody-backend 0.11.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page