Observed since 20 Oct, 16:48 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
aa-bb
BigBrother
[!CAUTION] Because this repository is public, anyone can read the detection logic for skills, cyno activity, injected SP, suspicious transactions, hostile assets and clones, and other monitored behaviors. Hostile groups may use this information to avoid detection. Operate with discretion.
BigBrother is an Alliance Auth plugin, originally written by Andrew Xadi, that performs continuous pilot auditing, compliance monitoring, intelligence gathering, and behavioral analysis. It monitors activity such as skills, cyno capabilities, SP injections, corporation movement, assets, clones, and more, then delivers structured leadership-focused reports.
All while invisible to the general membership unless you choose to expose it to them. No "adding chars" to it, it pulls relevant information from CorpTools.
allianceauth >= 4.13.1
allianceauth-corptools >= 3.0.0b13
django-esi >= 8.3.1
django-eveonline-sde >= 0.0.1b2
allianceauth-discordbot >= 4.1.0 # Required for Discord notifications and ticket system
aa-charlink >= 1.11.1 # Required for corp compliance filter checks
allianceauth-afat >= 4.1.1 # Required for PAP/Fleet participation compliance
allianceauth-blacklist >= 0.1.1 # Add / check for blacklisted characters
aa-contacts >= 0.10.2 # Automatic hostile/friendly contact syncing
[!CAUTION]
This MUST be installed if moving to 3.3.0+.
https://github.com/Solar-Helix-Independent-Transport/django-eveonline-sde
Add the following to your local.py:
INSTALLED_APPS = [
# ...
"eve_sde", # Only if not already added for another app
# ...
]
INSTALLED_APPS = ["modeltranslation",] + INSTALLED_APPS
if "eve_sde" in INSTALLED_APPS:
# Run at 12:00 UTC each day
CELERYBEAT_SCHEDULE["EVE SDE :: Check for SDE Updates"] = {
"task": "eve_sde.tasks.check_for_sde_updates",
"schedule": crontab(minute="0", hour="12"),
}
And run:
auth esde_load_sde
After making sure to add the above prerequisite applications.
source /home/allianceserver/venv/auth/bin/activate && cd /home/allianceserver/myauth/
pip install aa-bb
vi myauth/settings/local.py
Add aa_bb to your INSTALLED_APPS. Ensure that the prerequisite applications listed above are also present in INSTALLED_APPS.
python manage.py migrate && python manage.py collectstatic --noinput
restart the things exit your venv
sudo supervisorctl restart myauth:
[!IMPORTANT]
[Bare Metal Only]
It is recommended to use a threaded worker setup with memmon for this application. Also note that threaded workers are provided by default with allianceauth, this serves as a reminder that these values can be adjusted to suit your needs. The following is an example
In your supervisor.conf (baremetal only, skip if docker)
[program:worker]
command=/home/allianceserver/venv/auth/bin/celery -A myauth worker -P threads -c 10 -l INFO -n %(program_name)s_%(process_num)02d
directory=/home/allianceserver/myauth
user=allianceserver
numprocs=2
process_name=%(program_name)s_%(process_num)02d
stdout_logfile=/home/allianceserver/myauth/log/worker.log
stderr_logfile=/home/allianceserver/myauth/log/worker.log
autostart=true
autorestart=true
startsecs=10
stopwaitsecs = 600
killasgroup=true
priority=998
[eventlistener:memmon]
command=/home/allianceserver/venv/auth/bin/memmon -p worker_00=512MB -p worker_01=512MB -p gunicorn=512MB
directory=/home/allianceserver/myauth
events=TICK_60
stdout_logfile=/home/allianceserver/myauth/log/memmon.log
stderr_logfile=/home/allianceserver/myauth/log/memmon.log
It is also recommended to disable gunicorn timeout, an example can be seen here: (both docker and baremetal)
[program:gunicorn]
user = allianceserver
directory=/home/allianceserver/myauth
command=/home/allianceserver/venv/auth/bin/gunicorn myauth.wsgi --workers=3 --timeout 0
stdout_logfile=/home/allianceserver/myauth/log/gunicorn.log
stderr_logfile=/home/allianceserver/myauth/log/gunicorn.log
autostart=true
autorestart=true
stopsignal=INT
allianceauth_gunicorn:
ports:
- 8000:8000
container_name: allianceauth_gunicorn
<<: *allianceauth-base
entrypoint: [
"gunicorn",
"myauth.wsgi",
"--bind=0.0.0.0:8000",
"--workers=2",
"--timeout=0",
"--max-requests=500",
"--max-requests-jitter=50"
]
then reload supervisor and restart auth
sudo supervisorctl reload
sudo supervisorctl restart myauth:
[!IMPORTANT] Failure to follow the next steps before running the initial tasks can cause an undesired result
In your AA Admin navigate to AA_BB
Don't forget you can send it to a thread by using
https://discordapp.com/api/webhooks/<url>/<url>?thread_id=<threadid>
The thread must be in the same channel that the webhook is configured to.
[!WARNING]
Failure to configure this will result in AA_BB not working
Once you are satisfied with the configuration, you may explore the other configurations available, such as ticket tool configuration, recurring stats, and daily and optional messages.
Okay, but now you want it to actually do the things, go to Periodic Tasks and Run BB run regular updates
Once the task has run for the first time, it will post in the discord webhook when it has completed (about an hour) and will inform you to go back and enable the tasks, you must enable BB run regular updates but the other tasks are based on your needs.

Selecting a user displays a set of analytical cards that summarize compliance, risk factors, and suspicious activity signals.
Tracked metrics include:
Blacklist Status

Audit Completion

Corporation Stability

AWOX Activity

Account State

Hostile Jump Clone Placement

Hostile Asset Placement

Hostile Contacts

Hostile Contracts

Suspicious Mails

Suspicious Transactions

Cyno Check
This includes owning and being able to fly potentially interesting ships
Skill Check
A breakdown of potentially interesting skills

[!WARNING] Corp Dashboard has not yet received much love
Suspicious Transactions
Hostile Contracts
Hostile Asset Placement






BigBrother integrates directly with aa-contacts to provide continuous hostile contact monitoring.
Below is the full list of permissions exposed by the application:
| Permission | Description |
|---|---|
| basic_access | Can access Big Brother |
| full_access | Can view all main characters in Big Brother |
| recruiter_access | Can view main characters in Guest state only in Big Brother |
| basic_access_cb | Can access Corp Brother |
| full_access_cb | Can view all corps in Corp Brother |
| recruiter_access_cb | Can view guest’s corps only in Corp Brother (Guest State Configurable) |
| can_blacklist_characters | Can add characters to blacklist |
| can_access_loa | Can access and submit a Leave Of Absence request |
| can_view_all_loa | Can view all Leave Of Absence requests |
| can_manage_loa | Can manage Leave Of Absence requests |
| can_access_paps | Can access PAP Stats |
| can_generate_paps | Can generate PAP Stats |
[!IMPORTANT] Users who used this tool while it was private can safely upgrade but may run into a rare but serious complication where duplicate tasks are generated preventing the auth from starting.
To correct the above, see instructions here
Find the duplicate
SELECT
minute,
hour,
day_of_week,
day_of_month,
month_of_year,
timezone,
COUNT(*) AS cnt
FROM django_celery_beat_crontabschedule
GROUP BY
minute,
hour,
day_of_week,
day_of_month,
month_of_year,
timezone
HAVING COUNT(*) > 1;
Get the ID, replace the cron with the duplicate values
SELECT
id,
minute,
hour,
day_of_week,
day_of_month,
month_of_year,
timezone
FROM django_celery_beat_crontabschedule
WHERE
minute = '0'
AND hour = '12'
AND day_of_week = '0'
AND day_of_month = '*'
AND month_of_year = '*'
AND timezone = 'UTC';
Find out if any tasks are using the schedules, replace the numbers with the proper IDs
SELECT id, name, crontab_id
FROM django_celery_beat_periodictask
WHERE crontab_id IN (5, 12);
If some tasks are using both, reassign one of them
UPDATE django_celery_beat_periodictask
SET crontab_id = 5
WHERE crontab_id = 12;
Finally delete the duplicate
DELETE FROM django_celery_beat_crontabschedule
WHERE id IN (12);
Download counts and popularity will appear here as the collector receives them.
| Package / target | Requirement | Relationship |
|---|---|---|
allianceauth-corptoolsEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.10",
"evaluation": "NOT_EVALUATED"
} | allianceauth-corptools>=3 | runtime |
allianceauthEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.10",
"evaluation": "NOT_EVALUATED"
} | allianceauth>=5 | runtime |
django-esiEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.10",
"evaluation": "NOT_EVALUATED"
} | django-esi>=9 | runtime |
django-eveonline-sdeEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.10",
"evaluation": "NOT_EVALUATED"
} | django-eveonline-sde>=0.0.1b2 | runtime |
matplotlibEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.10",
"evaluation": "NOT_EVALUATED"
} | matplotlib>=3.7.2 | runtime |
bdist_wheel · 380.99 KB · Python py3
sdist · 265.4 KB · Python source
Observed since 20 Oct, 16:48 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package_version:1f29d8d1636e12d89da4f1fdd8df0aeb36dc2c167bdceae7bad33c3328a50417