Skip to main content

AA ACL Checker

A plugin app for Alliance Auth (AA) that pulls Access Control Lists (ACLs) from EVE's ESI API, stores them in the database, and flags characters that appear on an ACL but are not registered in Auth.

License python django pre-commit


Access Lists and Flagged Characters

Features

  • Periodically syncs ACLs from ESI and stores them in the database.
  • Flags characters that are granted access on an ACL but not registered in Auth.
  • Has its own menu item in the sidebar showing flagged characters.

Installing Into Your Dev AA

Make sure you're in your venv, then install it in editable mode:

pip install -e aa-acl-checker

Add acl_checker to INSTALLED_APPS in settings/local.py, then run:

python manage.py makemigrations
python manage.py check
python manage.py migrate

Finally, restart your AA server.

Installing Into Production AA

pip install git+https://github.com/Solar-Helix-Independent-Transport/aa-acl-checker

Then add acl_checker to INSTALLED_APPS in settings/local.py, run migrations and restart your allianceserver.

Usage

  • Link a character: someone with the add_owner permission clicks "Add / Refresh Character" and authorizes with the esi-access.read_lists.v1 scope. ESI only lets a character list Access Lists it is a Manager or Admin of, so the linked character must actually hold one of those roles on the ACLs you want tracked. Linking immediately queues a sync and re-authorizes an already-linked character if its token has expired or lost the scope.
  • Flagged Characters: the main page lists every character that ESI reports as Allowed/Manager/Admin on a tracked ACL but who has no linked, owned character in Auth - i.e. someone with structure/fleet access who was never (or is no longer) registered.

Post-install setup

Linking a character syncs its Access Lists once immediately, but nothing refreshes them after that unless a periodic task is scheduled. Run this once after installing/upgrading:

python manage.py acl_checker_setup

This registers an hourly PeriodicTask (via django-celery-beat) that calls acl_checker.tasks.update_all_acls for every tracked (active) owner character. It's safe to run again after upgrades - it just updates the existing schedule rather than duplicating it.

How syncing works

For each active Owner (a character with a valid esi-access.read_lists.v1 token):

  1. GET /characters/{character_id}/access-lists lists the Access Lists that character manages or administers.
  2. For each one, GET /characters/{character_id}/access-lists/{access_list_id} fetches its full membership - separate lists of characters, corporations, and alliances, each with an access level (Unspecified/Allowed/Blocked/ Manager/Admin).
  3. The ACL's local membership rows are fully replaced with what ESI just returned (ESI's detail response is always a complete snapshot, so a diff isn't needed).

ESI never includes a name alongside a character/corporation/alliance ID in the Access List detail, so none is cached locally - display names are resolved from Auth's own EveCharacter cache at read time instead.

Flagging is computed live, not stored: AclCharacterEntry.objects.flagged() checks whether a granted character_id has an owned EveCharacter in Auth. That means a character clears the flagged list the moment someone registers it, and a newly-added ACL character shows up as flagged immediately on the next sync - no separate reconciliation step required.

Writing Unit Tests

Write your unit tests in acl_checker/tests/ using the test_ filename prefix.

Metadata

Release files for aa-acl-checker 0.0.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 aa-acl-checker 0.0.1
File Size Uploaded
aa_acl_checker-0.0.1.tar.gz 42.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for aa-acl-checker 0.0.1
File Interpreter ABI Platform
aa_acl_checker-0.0.1-py3-none-any.whl Python 3 none any Details

Total release size: 91.8 kB

Release files / aa_acl_checker-0.0.1.tar.gz

Download URL aa_acl_checker-0.0.1.tar.gz
Size 42.4 kB
Tags Source
SHA-256 checksum
How to use checksums
f1387efcb517cd73d931ddcd6934c75f1ac93dea7e86456abb450fc4cc994353
BLAKE2b-256 checksum
How to use checksums
3537a437965d782361164bbbece1e16692a08406c2c0024d14cf63eb461b500b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 5, 2026.

Transparency log

Release files / aa_acl_checker-0.0.1-py3-none-any.whl

Download URL aa_acl_checker-0.0.1-py3-none-any.whl
Size 49.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
29a1378d12a480a9f8c7dfeaaf471bec85429ccf2408a46307a2776cc8aa46b3
BLAKE2b-256 checksum
How to use checksums
1e6dd2742b7f0184b15befb67310208dd73a397c7a1092596b1ec6d7a1321480
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 5, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.0.1 This release

2 release files

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