aa-securityaudit 1.0.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- aa_securityaudit-1.0.0/LICENSE +21 -0
- aa_securityaudit-1.0.0/PKG-INFO +299 -0
- aa_securityaudit-1.0.0/README.md +268 -0
- aa_securityaudit-1.0.0/aa_securityaudit.egg-info/PKG-INFO +299 -0
- aa_securityaudit-1.0.0/aa_securityaudit.egg-info/SOURCES.txt +99 -0
- aa_securityaudit-1.0.0/aa_securityaudit.egg-info/dependency_links.txt +1 -0
- aa_securityaudit-1.0.0/aa_securityaudit.egg-info/requires.txt +3 -0
- aa_securityaudit-1.0.0/aa_securityaudit.egg-info/top_level.txt +1 -0
- aa_securityaudit-1.0.0/allianceauth_securityaudit/__init__.py +1 -0
- aa_securityaudit-1.0.0/allianceauth_securityaudit/admin.py +62 -0
- aa_securityaudit-1.0.0/allianceauth_securityaudit/app_settings.py +10 -0
- aa_securityaudit-1.0.0/allianceauth_securityaudit/apps.py +24 -0
- aa_securityaudit-1.0.0/allianceauth_securityaudit/auth_hooks.py +32 -0
- aa_securityaudit-1.0.0/allianceauth_securityaudit/constants.py +37 -0
- aa_securityaudit-1.0.0/allianceauth_securityaudit/forms.py +525 -0
- aa_securityaudit-1.0.0/allianceauth_securityaudit/management/__init__.py +1 -0
- aa_securityaudit-1.0.0/allianceauth_securityaudit/management/commands/__init__.py +1 -0
- aa_securityaudit-1.0.0/allianceauth_securityaudit/management/commands/securityaudit_run_new_joins.py +11 -0
- aa_securityaudit-1.0.0/allianceauth_securityaudit/migrations/0001_initial.py +267 -0
- aa_securityaudit-1.0.0/allianceauth_securityaudit/migrations/0002_alter_auditpolicy_options.py +22 -0
- aa_securityaudit-1.0.0/allianceauth_securityaudit/migrations/0003_auditrun_progress_fields.py +25 -0
- aa_securityaudit-1.0.0/allianceauth_securityaudit/migrations/0004_alter_auditfinding_severity.py +25 -0
- aa_securityaudit-1.0.0/allianceauth_securityaudit/migrations/0005_alt_corp_history.py +42 -0
- aa_securityaudit-1.0.0/allianceauth_securityaudit/migrations/0006_auditpolicy_esi_throttle.py +22 -0
- aa_securityaudit-1.0.0/allianceauth_securityaudit/migrations/0007_auditsummaryview.py +36 -0
- aa_securityaudit-1.0.0/allianceauth_securityaudit/migrations/0008_auditrun_parent_run.py +21 -0
- aa_securityaudit-1.0.0/allianceauth_securityaudit/migrations/0009_permissions_and_summarylink.py +136 -0
- aa_securityaudit-1.0.0/allianceauth_securityaudit/migrations/0010_cleanup_securityaudit_permissions.py +88 -0
- aa_securityaudit-1.0.0/allianceauth_securityaudit/migrations/0011_summary_link_expiry_hours.py +20 -0
- aa_securityaudit-1.0.0/allianceauth_securityaudit/migrations/0012_remove_auditpolicy_included_corp_ids.py +14 -0
- aa_securityaudit-1.0.0/allianceauth_securityaudit/migrations/0013_auditrun_progress_details.py +15 -0
- aa_securityaudit-1.0.0/allianceauth_securityaudit/migrations/0014_auditrun_task_id.py +15 -0
- aa_securityaudit-1.0.0/allianceauth_securityaudit/migrations/0015_fix_child_automated.py +24 -0
- aa_securityaudit-1.0.0/allianceauth_securityaudit/migrations/0016_auditpolicy_killmail_max_attacker_count.py +19 -0
- aa_securityaudit-1.0.0/allianceauth_securityaudit/migrations/0017_auditrun_use_beta_disclosed_alt_detection.py +15 -0
- aa_securityaudit-1.0.0/allianceauth_securityaudit/migrations/0018_remove_auditrun_use_beta_disclosed_alt_detection.py +14 -0
- aa_securityaudit-1.0.0/allianceauth_securityaudit/migrations/0019_remove_auditpolicy_unused_fields.py +26 -0
- aa_securityaudit-1.0.0/allianceauth_securityaudit/migrations/0020_auditrun_policy_overrides.py +16 -0
- aa_securityaudit-1.0.0/allianceauth_securityaudit/migrations/0021_add_view_enemies_permission.py +25 -0
- aa_securityaudit-1.0.0/allianceauth_securityaudit/migrations/0021_financialexception.py +41 -0
- aa_securityaudit-1.0.0/allianceauth_securityaudit/migrations/0022_auditcapitalshipobservation.py +53 -0
- aa_securityaudit-1.0.0/allianceauth_securityaudit/migrations/0023_auditpolicy_zkill_settings.py +63 -0
- aa_securityaudit-1.0.0/allianceauth_securityaudit/migrations/0024_capital_asset_fields.py +20 -0
- aa_securityaudit-1.0.0/allianceauth_securityaudit/migrations/0025_corp_overlap_thresholds.py +37 -0
- aa_securityaudit-1.0.0/allianceauth_securityaudit/migrations/0026_awox_policy_fields.py +66 -0
- aa_securityaudit-1.0.0/allianceauth_securityaudit/migrations/0027_capital_contract_marketorder_fields.py +26 -0
- aa_securityaudit-1.0.0/allianceauth_securityaudit/migrations/__init__.py +1 -0
- aa_securityaudit-1.0.0/allianceauth_securityaudit/models.py +609 -0
- aa_securityaudit-1.0.0/allianceauth_securityaudit/permissions.py +7 -0
- aa_securityaudit-1.0.0/allianceauth_securityaudit/schedules.py +5 -0
- aa_securityaudit-1.0.0/allianceauth_securityaudit/services/__init__.py +1 -0
- aa_securityaudit-1.0.0/allianceauth_securityaudit/services/audit_analysis/__init__.py +0 -0
- aa_securityaudit-1.0.0/allianceauth_securityaudit/services/audit_analysis/alt.py +18 -0
- aa_securityaudit-1.0.0/allianceauth_securityaudit/services/audit_analysis/awox.py +500 -0
- aa_securityaudit-1.0.0/allianceauth_securityaudit/services/audit_analysis/base.py +41 -0
- aa_securityaudit-1.0.0/allianceauth_securityaudit/services/audit_analysis/blacklist.py +65 -0
- aa_securityaudit-1.0.0/allianceauth_securityaudit/services/audit_analysis/capital_ships.py +380 -0
- aa_securityaudit-1.0.0/allianceauth_securityaudit/services/audit_analysis/collusion.py +187 -0
- aa_securityaudit-1.0.0/allianceauth_securityaudit/services/audit_analysis/corp_history.py +621 -0
- aa_securityaudit-1.0.0/allianceauth_securityaudit/services/audit_analysis/enemy.py +210 -0
- aa_securityaudit-1.0.0/allianceauth_securityaudit/services/audit_analysis/financial.py +328 -0
- aa_securityaudit-1.0.0/allianceauth_securityaudit/services/audit_analysis/plus_ten.py +222 -0
- aa_securityaudit-1.0.0/allianceauth_securityaudit/services/audit_engine.py +529 -0
- aa_securityaudit-1.0.0/allianceauth_securityaudit/services/autogroups_adapter.py +81 -0
- aa_securityaudit-1.0.0/allianceauth_securityaudit/services/automation.py +88 -0
- aa_securityaudit-1.0.0/allianceauth_securityaudit/services/blacklist_adapter.py +184 -0
- aa_securityaudit-1.0.0/allianceauth_securityaudit/services/esi_client.py +347 -0
- aa_securityaudit-1.0.0/allianceauth_securityaudit/services/exceptions.py +4 -0
- aa_securityaudit-1.0.0/allianceauth_securityaudit/services/janice_client.py +138 -0
- aa_securityaudit-1.0.0/allianceauth_securityaudit/services/memberaudit_adapter.py +1201 -0
- aa_securityaudit-1.0.0/allianceauth_securityaudit/services/zkill_client.py +116 -0
- aa_securityaudit-1.0.0/allianceauth_securityaudit/tasks.py +160 -0
- aa_securityaudit-1.0.0/allianceauth_securityaudit/templates/allianceauth/base.html +1 -0
- aa_securityaudit-1.0.0/allianceauth_securityaudit/templates/securityaudit/audit_detail.html +1019 -0
- aa_securityaudit-1.0.0/allianceauth_securityaudit/templates/securityaudit/audit_jobs.html +60 -0
- aa_securityaudit-1.0.0/allianceauth_securityaudit/templates/securityaudit/base.html +44 -0
- aa_securityaudit-1.0.0/allianceauth_securityaudit/templates/securityaudit/dashboard.html +482 -0
- aa_securityaudit-1.0.0/allianceauth_securityaudit/templates/securityaudit/debug_audit_visibility.html +32 -0
- aa_securityaudit-1.0.0/allianceauth_securityaudit/templates/securityaudit/debug_permissions.html +69 -0
- aa_securityaudit-1.0.0/allianceauth_securityaudit/templates/securityaudit/enemy_add.html +139 -0
- aa_securityaudit-1.0.0/allianceauth_securityaudit/templates/securityaudit/enemy_list.html +59 -0
- aa_securityaudit-1.0.0/allianceauth_securityaudit/templates/securityaudit/financial_exception_add.html +26 -0
- aa_securityaudit-1.0.0/allianceauth_securityaudit/templates/securityaudit/financial_exception_edit.html +42 -0
- aa_securityaudit-1.0.0/allianceauth_securityaudit/templates/securityaudit/financial_exception_list.html +210 -0
- aa_securityaudit-1.0.0/allianceauth_securityaudit/templates/securityaudit/policy_edit.html +50 -0
- aa_securityaudit-1.0.0/allianceauth_securityaudit/templates/securityaudit/run_audit.html +11 -0
- aa_securityaudit-1.0.0/allianceauth_securityaudit/templates/securityaudit/run_audit_form.html +235 -0
- aa_securityaudit-1.0.0/allianceauth_securityaudit/templates/securityaudit/summary.html +502 -0
- aa_securityaudit-1.0.0/allianceauth_securityaudit/templatetags/__init__.py +0 -0
- aa_securityaudit-1.0.0/allianceauth_securityaudit/templatetags/securityaudit_extras.py +68 -0
- aa_securityaudit-1.0.0/allianceauth_securityaudit/tests/__init__.py +0 -0
- aa_securityaudit-1.0.0/allianceauth_securityaudit/tests/test_alt_beta_scoring.py +83 -0
- aa_securityaudit-1.0.0/allianceauth_securityaudit/tests/test_awox_detection.py +686 -0
- aa_securityaudit-1.0.0/allianceauth_securityaudit/tests/test_capital_asset_scan.py +199 -0
- aa_securityaudit-1.0.0/allianceauth_securityaudit/tests/test_capital_ships.py +92 -0
- aa_securityaudit-1.0.0/allianceauth_securityaudit/tests/test_esi_client_cache.py +115 -0
- aa_securityaudit-1.0.0/allianceauth_securityaudit/tests/test_zkill_client_cache.py +115 -0
- aa_securityaudit-1.0.0/allianceauth_securityaudit/urls.py +38 -0
- aa_securityaudit-1.0.0/allianceauth_securityaudit/views.py +2120 -0
- aa_securityaudit-1.0.0/pyproject.toml +47 -0
- aa_securityaudit-1.0.0/setup.cfg +4 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Triumvirate
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,299 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: aa-securityaudit
|
|
3
|
+
Version: 1.0.0
|
|
4
|
+
Summary: AllianceAuth plugin for security auditing using MemberAudit data
|
|
5
|
+
Author: Triumvirate
|
|
6
|
+
License: MIT
|
|
7
|
+
Project-URL: Homepage, https://github.com/OntoKoinon/aa-securityaudit
|
|
8
|
+
Project-URL: Repository, https://github.com/OntoKoinon/aa-securityaudit
|
|
9
|
+
Project-URL: Changelog, https://github.com/OntoKoinon/aa-securityaudit/blob/main/CHANGELOG.md
|
|
10
|
+
Project-URL: Issues, https://github.com/OntoKoinon/aa-securityaudit/issues
|
|
11
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
12
|
+
Classifier: Framework :: Django
|
|
13
|
+
Classifier: Framework :: Django :: 4.2
|
|
14
|
+
Classifier: Framework :: Django :: 5.0
|
|
15
|
+
Classifier: Intended Audience :: Developers
|
|
16
|
+
Classifier: Intended Audience :: End Users/Desktop
|
|
17
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
18
|
+
Classifier: Operating System :: OS Independent
|
|
19
|
+
Classifier: Programming Language :: Python :: 3
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
22
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
23
|
+
Classifier: Topic :: Games/Entertainment
|
|
24
|
+
Requires-Python: >=3.10
|
|
25
|
+
Description-Content-Type: text/markdown
|
|
26
|
+
License-File: LICENSE
|
|
27
|
+
Requires-Dist: Django<6,>=4.2
|
|
28
|
+
Requires-Dist: aa-memberaudit>=5.0.0
|
|
29
|
+
Requires-Dist: requests>=2.31
|
|
30
|
+
Dynamic: license-file
|
|
31
|
+
|
|
32
|
+
# AllianceAuth Security Audit
|
|
33
|
+
|
|
34
|
+
[](https://pypi.org/project/aa-securityaudit/)
|
|
35
|
+
[](https://pypi.org/project/aa-securityaudit/)
|
|
36
|
+
[](https://pypi.org/project/aa-securityaudit/)
|
|
37
|
+
[](LICENSE)
|
|
38
|
+
|
|
39
|
+
**The most comprehensive security audit tool for AllianceAuth.** Know exactly who you're recruiting — and what your existing members are really up to.
|
|
40
|
+
|
|
41
|
+
Every alliance loses ships, ISK, and morale to spies, awoxers, and thieves who slipped through recruitment. Security Audit stops that before it happens by running a full background check on every character — new recruits and veteran members alike — and surfacing the red flags that matter.
|
|
42
|
+
|
|
43
|
+
## Contents
|
|
44
|
+
|
|
45
|
+
- [Why Security Audit?](#why-security-audit)
|
|
46
|
+
- [What It Detects](#what-it-detects)
|
|
47
|
+
- [What It Tracks](#what-it-tracks)
|
|
48
|
+
- [How It Works](#how-it-works)
|
|
49
|
+
- [Installation](#installation)
|
|
50
|
+
- [Permissions](#permissions)
|
|
51
|
+
- [Policy Settings](#policy-settings)
|
|
52
|
+
- [AllianceAuth Compatibility](#allianceauth-compatibility)
|
|
53
|
+
- [Changelog](#changelog)
|
|
54
|
+
- [Contribute](#contribute)
|
|
55
|
+
- [License](#license)
|
|
56
|
+
|
|
57
|
+
## Why Security Audit?
|
|
58
|
+
|
|
59
|
+
- **Catch awoxers before they strike.** Don't find out someone's awoxing your supers after the fact. Security Audit detects deliberate friendly-fire patterns that other tools miss — including tackle-only awoxing, HIC infinipoint pilots, and blue-scouting with NPC-corp alts.
|
|
60
|
+
- **Spot spies on day one.** Automated new-join audits run the moment someone enters your alliance, checking for enemy connections, blacklist hits, and corp-history patterns that signal a plant.
|
|
61
|
+
- **Track the big assets.** Know who's sitting in titans, supercarriers, and dreadnoughts — and whether they're using them against your enemies or your allies.
|
|
62
|
+
- **Follow the money.** Large ISK donations, free contracts, and repeated transfers can signal bribery, asset extraction, or RMT. Security Audit flags them all.
|
|
63
|
+
- **Share findings with leadership.** Generate time-limited summary links so your FCs and directors can review audit results without needing dashboard access.
|
|
64
|
+
|
|
65
|
+
## What It Detects
|
|
66
|
+
|
|
67
|
+
### Awoxing / Friendly Fire
|
|
68
|
+
The most sophisticated awox detector available for AllianceAuth. It doesn't just flag killmail participation — it identifies **deliberate** friendly-fire patterns:
|
|
69
|
+
|
|
70
|
+
- **Damage ownership** — final blow or majority damage on a blue.
|
|
71
|
+
- **Tackle contribution** — warp scramblers, warp disruptors, and HIC infinipoints count even with zero damage. A tackle alt holding down a friendly for the enemy is an awox, not crossfire.
|
|
72
|
+
- **HIC pilots** — heavy interdiction cruiser pilots qualify regardless of damage or weapon, because a HIC's job is to hold the target.
|
|
73
|
+
- **Blue scouting** — catches the classic trick of using an NPC-corp alt to kill someone in the main's corp or alliance while the main stays blue to the victim.
|
|
74
|
+
|
|
75
|
+
It automatically excludes the noise that trips up crude detectors:
|
|
76
|
+
- Large-fleet crossfire with hostiles present
|
|
77
|
+
- Killmail whoring (low damage, no final blow, no tackle)
|
|
78
|
+
- Structure bashes
|
|
79
|
+
- Sparring in throwaway ships (rookie ships, corvettes, shuttles below a configurable ISK threshold — pods are always exempt)
|
|
80
|
+
|
|
81
|
+
Supercarrier and titan victims get extra scoring weight. Every finding names the type of awox and links directly to the zKill killmails so you can review the evidence in one click.
|
|
82
|
+
|
|
83
|
+
### Undisclosed Alts
|
|
84
|
+
Finds characters linked in Auth that aren't declared as expected for a main, plus undisclosed alt corporations with suspicious corp-history overlap. If someone's been hiding an alt in an enemy-adjacent corp, you'll know.
|
|
85
|
+
|
|
86
|
+
### Spy Activity / Enemy Collusion
|
|
87
|
+
Flags pilots appearing on the same side as blacklisted or enemy entities on killmails. If your member is consistently flying with your enemies, that's not a coincidence — and each finding links to the zKill kills so you can see exactly when and where it happened.
|
|
88
|
+
|
|
89
|
+
### Flight Risk
|
|
90
|
+
Detects corp-hopping behavior — pilots who bounce between corporations frequently within a configurable window. Someone who's joined and left five corps in 90 days is telling you something about themselves.
|
|
91
|
+
|
|
92
|
+
### Enemy Connections
|
|
93
|
+
Flags direct ties to enemy alliances, corporations, or characters on your enemy list. Build your enemy list once and every audit checks against it automatically.
|
|
94
|
+
|
|
95
|
+
### +10 Standing Contacts
|
|
96
|
+
Identifies pilots who have +10 standing to known hostiles or blacklisted entities. If someone's blued your enemies, that's worth a conversation.
|
|
97
|
+
|
|
98
|
+
### Blacklist Adjacency
|
|
99
|
+
Correlates mains, alts, and observed contacts against [allianceauth-blacklist](https://github.com/MemberAudit/allianceauth-blacklist) entries. Leverage the community's shared blacklist data to catch known bad actors before they're your problem.
|
|
100
|
+
|
|
101
|
+
### Suspicious ISK Movement
|
|
102
|
+
- **Large donations** — wallet transfers at or above a configurable ISK threshold.
|
|
103
|
+
- **Free contracts** — contracts handing over high-value assets for zero or near-zero ISK.
|
|
104
|
+
- **Repeated transfers** — patterns of small transfers that add up over time.
|
|
105
|
+
|
|
106
|
+
Financial exceptions let you whitelist legitimate transfers like corp reimbursements so you only see the real red flags.
|
|
107
|
+
|
|
108
|
+
## What It Tracks
|
|
109
|
+
|
|
110
|
+
### Capital Ship Observations
|
|
111
|
+
Tracks capital and supercapital hull usage — titans, supercarriers, force auxiliaries, dreadnoughts, and carriers — from zKill kill/loss history and MemberAudit asset and current-ship data. Know who's got the big sticks, who's actually using them, and who's been losing them.
|
|
112
|
+
|
|
113
|
+
## How It Works
|
|
114
|
+
|
|
115
|
+
### For New Recruits
|
|
116
|
+
Automated audits run on every new join within a configurable window (default: first 14 days). Set it and forget it — new members are vetted automatically, and findings appear on your dashboard ready for review.
|
|
117
|
+
|
|
118
|
+
### For Existing Members
|
|
119
|
+
Run a manual audit on any character or entire corporation at any time. Use the per-run option toggles to skip expensive checks when you just need a quick check, or enable everything for a full deep-dive:
|
|
120
|
+
|
|
121
|
+
- **Standard Audit** (always included)
|
|
122
|
+
- **Undisclosed Alt Check** — toggle off to skip corp-history overlap analysis
|
|
123
|
+
- **Capital Observations** — toggle off to skip capital ship tracking
|
|
124
|
+
- **Awoxing Check** — toggle off to skip friendly-fire analysis
|
|
125
|
+
|
|
126
|
+
Need to tighten or loosen a threshold for a single audit without changing global policy? The advanced overrides panel lets you adjust any threshold per-run.
|
|
127
|
+
|
|
128
|
+
### Sharing Results
|
|
129
|
+
Generate time-limited summary links to share audit findings with FCs, directors, or alliance leadership without granting them dashboard access. Links expire automatically based on your configured timeout.
|
|
130
|
+
|
|
131
|
+
### Real-Time Updates
|
|
132
|
+
Audit detail pages update live — no manual refresh needed. Watch the audit progress through each analysis stage as it happens.
|
|
133
|
+
|
|
134
|
+
### Built for Dark Mode
|
|
135
|
+
Every UI component is designed for dark and night themes by default. No blinding white panels in the middle of a late-night fleet op.
|
|
136
|
+
|
|
137
|
+
## Installation
|
|
138
|
+
|
|
139
|
+
### Prerequisites
|
|
140
|
+
|
|
141
|
+
> [!IMPORTANT]
|
|
142
|
+
> Please make sure you meet all prerequisites before you proceed!
|
|
143
|
+
|
|
144
|
+
- **[AllianceAuth](https://github.com/allianceauth/allianceauth)** — This is an AllianceAuth plugin; you need a working AllianceAuth installation (AllianceAuth 5 fully supported).
|
|
145
|
+
- **[MemberAudit](https://gitlab.com/ErikKalkoken/aa-memberaudit)** >= 5.0.0 — Required for wallet data, corporation history, character snapshots, asset/ship tracking, and contact standings. MemberAudit 5.x supports both AllianceAuth 4 and 5. Without MemberAudit installed and listed in `INSTALLED_APPS`, the plugin will log a warning at startup and most audit checks will be degraded or unavailable. If you're serious about security auditing, MemberAudit is non-negotiable.
|
|
146
|
+
- **[allianceauth-blacklist](https://github.com/MemberAudit/allianceauth-blacklist)** *(optional but recommended)* — Enables blacklist correlation findings. Leverage shared community blacklist data to catch known bad actors.
|
|
147
|
+
|
|
148
|
+
### Steps
|
|
149
|
+
|
|
150
|
+
1. Install the latest release directly from PyPI. Make sure you're in the virtual environment of your AllianceAuth installation:
|
|
151
|
+
```bash
|
|
152
|
+
pip install aa-securityaudit
|
|
153
|
+
```
|
|
154
|
+
For development:
|
|
155
|
+
```bash
|
|
156
|
+
pip install -e .
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
2. Add `allianceauth_securityaudit` to your `INSTALLED_APPS` in `local.py`, after `memberaudit` and any other dependencies:
|
|
160
|
+
```python
|
|
161
|
+
INSTALLED_APPS += [
|
|
162
|
+
"memberaudit",
|
|
163
|
+
"allianceauth_securityaudit",
|
|
164
|
+
]
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
3. Run migrations:
|
|
168
|
+
```bash
|
|
169
|
+
python manage.py migrate
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
4. Collect static files:
|
|
173
|
+
```bash
|
|
174
|
+
python manage.py collectstatic
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
5. Restart your AllianceAuth server.
|
|
178
|
+
|
|
179
|
+
### Finalizing the Installation
|
|
180
|
+
|
|
181
|
+
1. **Assign permissions** to your security team (see [Permissions](#permissions) below).
|
|
182
|
+
2. **Configure policy thresholds** via the Policy Editor page. The defaults are sensible for most alliances, but everything is tunable.
|
|
183
|
+
3. **Build your enemy list** — Add enemy alliances, corporations, and characters via the Enemy List page. Every audit checks against this list automatically.
|
|
184
|
+
4. **Add financial exceptions** for legitimate transfers (corp reimbursements, SRP payouts, etc.) so they don't trigger false positives.
|
|
185
|
+
|
|
186
|
+
## Permissions
|
|
187
|
+
|
|
188
|
+
| Permission | Description |
|
|
189
|
+
|---|---|
|
|
190
|
+
| `securityaudit.view_dashboard` | View the security audit dashboard and audit list |
|
|
191
|
+
| `securityaudit.view_summaries` | View shareable audit summary pages |
|
|
192
|
+
| `securityaudit.run_audit` | Run manual security audits on characters and corporations |
|
|
193
|
+
| `securityaudit.administrate` | Full admin access: policy editor, enemy list, financial exceptions, job management |
|
|
194
|
+
| `securityaudit.generate_link` | Generate shareable summary links for audit results |
|
|
195
|
+
| `securityaudit.manage_enemies` | Add and remove entries from the enemy list |
|
|
196
|
+
| `securityaudit.view_enemies` | View the enemy list |
|
|
197
|
+
|
|
198
|
+
## Policy Settings
|
|
199
|
+
|
|
200
|
+
All settings are configurable via the Policy Editor page in the AllianceAuth admin UI. The defaults work well for most alliances — adjust as needed for your security posture.
|
|
201
|
+
|
|
202
|
+
### Master Switches
|
|
203
|
+
|
|
204
|
+
| Setting | Default | Description |
|
|
205
|
+
|---|---|---|
|
|
206
|
+
| `enabled` | On | Globally enable or disable the plugin. |
|
|
207
|
+
| `automation_enabled` | On | Toggle automated new-join audits. |
|
|
208
|
+
| `new_join_window_days` | 14 days | How many days after a new join to automatically audit the member. |
|
|
209
|
+
|
|
210
|
+
### ISK / Wallet
|
|
211
|
+
|
|
212
|
+
| Setting | Default | Description |
|
|
213
|
+
|---|---|---|
|
|
214
|
+
| `large_donation_isk_threshold` | 1,000,000,000 ISK | Flag wallet donations at or above this amount. Lower this if you want to catch smaller transfers. |
|
|
215
|
+
|
|
216
|
+
### Contracts
|
|
217
|
+
|
|
218
|
+
| Setting | Default | Description |
|
|
219
|
+
|---|---|---|
|
|
220
|
+
| `free_contract_value_threshold` | 500,000,000 ISK | Flag contracts with zero or near-zero consideration at or above this value. |
|
|
221
|
+
|
|
222
|
+
### Corporation Movement (Flight Risk)
|
|
223
|
+
|
|
224
|
+
| Setting | Default | Description |
|
|
225
|
+
|---|---|---|
|
|
226
|
+
| `corp_hop_window_days` | 90 days | Lookback window for corp-hopping detection. |
|
|
227
|
+
| `corp_hop_count_threshold` | 3 | Number of corp joins within the window to flag as flight risk. |
|
|
228
|
+
|
|
229
|
+
### Undisclosed Alts (Corp History)
|
|
230
|
+
|
|
231
|
+
| Setting | Default | Description |
|
|
232
|
+
|---|---|---|
|
|
233
|
+
| `alt_corp_history_max_join_leave_diff_hours` | 24 hours | Max hours between an alt's and main's corp join/leave dates to count as suspicious overlap. |
|
|
234
|
+
| `corp_overlap_rule1_min_corps` | 1 | Min overlapping non-NPC corps for a strong alt signal (both join and leave dates close). |
|
|
235
|
+
| `corp_overlap_rule2_min_corps` | 3 | Min overlapping non-NPC corps for a moderate alt signal (either join or leave dates close). |
|
|
236
|
+
| `corp_overlap_rule3_min_corps` | 5 | Min overlapping non-NPC corps for a weak alt signal (no close date match). |
|
|
237
|
+
|
|
238
|
+
### Killmails
|
|
239
|
+
|
|
240
|
+
| Setting | Default | Description |
|
|
241
|
+
|---|---|---|
|
|
242
|
+
| `killmail_max_attacker_count` | 0 (no limit) | Skip killmails with more attackers than this. Useful to avoid processing huge fleet fights. Set to 0 for no limit. |
|
|
243
|
+
|
|
244
|
+
### Awox / Friendly Fire
|
|
245
|
+
|
|
246
|
+
| Setting | Default | Description |
|
|
247
|
+
|---|---|---|
|
|
248
|
+
| `awox_min_damage_share` | 0.50 (50%) | Minimum damage share (damage done / damage taken) for damage-ownership awox qualification. Below this, a pilot must have final blow, tackle, or be in a HIC to qualify. |
|
|
249
|
+
| `awox_lookback_days` | 180 days | How far back in kill history to look for awox kills. Older kills are ignored. |
|
|
250
|
+
| `awox_large_fleet_attacker_threshold` | 10 | Attacker count at which the large-fleet crossfire exclusion kicks in. In large fleets with hostiles present, low-damage non-final-blow participants without tackle or HIC are excluded as crossfire. |
|
|
251
|
+
| `awox_solo_attacker_threshold` | 3 | Attacker count at or below which a solo/small-gang bonus is applied to the awox score. Solo awoxing is more suspicious than fleet crossfire. |
|
|
252
|
+
| `awox_min_victim_value` | 10,000,000 ISK | Minimum zKill total value for rookie ship/corvette/shuttle victims to avoid being excluded as sparring. Pods are always exempt regardless of this setting. |
|
|
253
|
+
| `awox_blue_scouting_bonus` | 15 | Score bonus per kill qualified via the blue-scouting path (NPC-corp alt with main/other alts blue to the victim). Reflects premeditation. |
|
|
254
|
+
|
|
255
|
+
### zKill
|
|
256
|
+
|
|
257
|
+
| Setting | Default | Description |
|
|
258
|
+
|---|---|---|
|
|
259
|
+
| `zkill_throttle_seconds` | 0.10s | Delay between zKill API calls to avoid rate limiting. |
|
|
260
|
+
| `zkill_kill_pages` | 3 | Pages of kill history to fetch per character. |
|
|
261
|
+
| `zkill_loss_pages` | 3 | Pages of loss history to fetch per character. |
|
|
262
|
+
| `zkill_capital_kill_pages` | 5 | Pages per capital ship group to fetch for capital kill scans. |
|
|
263
|
+
| `zkill_capital_loss_pages` | 5 | Pages per capital ship group to fetch for capital loss scans. |
|
|
264
|
+
|
|
265
|
+
### Infrastructure
|
|
266
|
+
|
|
267
|
+
| Setting | Default | Description |
|
|
268
|
+
|---|---|---|
|
|
269
|
+
| `esi_throttle_seconds` | 0.10s | Delay between ESI API calls to avoid rate limiting. |
|
|
270
|
+
| `summary_link_expiry_hours` | 24 hours | Hours until shareable summary links expire. |
|
|
271
|
+
|
|
272
|
+
## AllianceAuth Compatibility
|
|
273
|
+
|
|
274
|
+
- AllianceAuth 5 is fully supported.
|
|
275
|
+
- The plugin ships a compatibility `allianceauth/base.html` template that forwards to `allianceauth/base-bs5.html` for AA5 environments where `allianceauth/base.html` is not present.
|
|
276
|
+
- Keep standard AllianceAuth app ordering in `INSTALLED_APPS` so core templates resolve as expected on older installations.
|
|
277
|
+
- If your AA5 build uses a different base template filename, update `allianceauth_securityaudit/templates/allianceauth/base.html` to extend that canonical base path.
|
|
278
|
+
- URL routing is auto-registered via the AllianceAuth hook (`url_hook`), so no manual project `urls.py` include is required.
|
|
279
|
+
|
|
280
|
+
## Changelog
|
|
281
|
+
|
|
282
|
+
See [CHANGELOG.md](CHANGELOG.md) for release history.
|
|
283
|
+
|
|
284
|
+
## Contribute
|
|
285
|
+
|
|
286
|
+
Found a bug or have a feature idea? Please open an issue or pull request on
|
|
287
|
+
[GitHub](https://github.com/OntoKoinon/aa-securityaudit).
|
|
288
|
+
|
|
289
|
+
If you've made a new app for AllianceAuth, please consider sharing it with the
|
|
290
|
+
rest of the community. For any questions on how to share your app, please
|
|
291
|
+
contact the AA devs on their
|
|
292
|
+
[Discord](https://discord.gg/Eve-Alliance-Auth). You can find the current
|
|
293
|
+
community creations
|
|
294
|
+
[here](https://gitlab.com/allianceauth/community-creations).
|
|
295
|
+
|
|
296
|
+
## License
|
|
297
|
+
|
|
298
|
+
This project is licensed under the MIT License — see the [LICENSE](LICENSE)
|
|
299
|
+
file for details.
|
|
@@ -0,0 +1,268 @@
|
|
|
1
|
+
# AllianceAuth Security Audit
|
|
2
|
+
|
|
3
|
+
[](https://pypi.org/project/aa-securityaudit/)
|
|
4
|
+
[](https://pypi.org/project/aa-securityaudit/)
|
|
5
|
+
[](https://pypi.org/project/aa-securityaudit/)
|
|
6
|
+
[](LICENSE)
|
|
7
|
+
|
|
8
|
+
**The most comprehensive security audit tool for AllianceAuth.** Know exactly who you're recruiting — and what your existing members are really up to.
|
|
9
|
+
|
|
10
|
+
Every alliance loses ships, ISK, and morale to spies, awoxers, and thieves who slipped through recruitment. Security Audit stops that before it happens by running a full background check on every character — new recruits and veteran members alike — and surfacing the red flags that matter.
|
|
11
|
+
|
|
12
|
+
## Contents
|
|
13
|
+
|
|
14
|
+
- [Why Security Audit?](#why-security-audit)
|
|
15
|
+
- [What It Detects](#what-it-detects)
|
|
16
|
+
- [What It Tracks](#what-it-tracks)
|
|
17
|
+
- [How It Works](#how-it-works)
|
|
18
|
+
- [Installation](#installation)
|
|
19
|
+
- [Permissions](#permissions)
|
|
20
|
+
- [Policy Settings](#policy-settings)
|
|
21
|
+
- [AllianceAuth Compatibility](#allianceauth-compatibility)
|
|
22
|
+
- [Changelog](#changelog)
|
|
23
|
+
- [Contribute](#contribute)
|
|
24
|
+
- [License](#license)
|
|
25
|
+
|
|
26
|
+
## Why Security Audit?
|
|
27
|
+
|
|
28
|
+
- **Catch awoxers before they strike.** Don't find out someone's awoxing your supers after the fact. Security Audit detects deliberate friendly-fire patterns that other tools miss — including tackle-only awoxing, HIC infinipoint pilots, and blue-scouting with NPC-corp alts.
|
|
29
|
+
- **Spot spies on day one.** Automated new-join audits run the moment someone enters your alliance, checking for enemy connections, blacklist hits, and corp-history patterns that signal a plant.
|
|
30
|
+
- **Track the big assets.** Know who's sitting in titans, supercarriers, and dreadnoughts — and whether they're using them against your enemies or your allies.
|
|
31
|
+
- **Follow the money.** Large ISK donations, free contracts, and repeated transfers can signal bribery, asset extraction, or RMT. Security Audit flags them all.
|
|
32
|
+
- **Share findings with leadership.** Generate time-limited summary links so your FCs and directors can review audit results without needing dashboard access.
|
|
33
|
+
|
|
34
|
+
## What It Detects
|
|
35
|
+
|
|
36
|
+
### Awoxing / Friendly Fire
|
|
37
|
+
The most sophisticated awox detector available for AllianceAuth. It doesn't just flag killmail participation — it identifies **deliberate** friendly-fire patterns:
|
|
38
|
+
|
|
39
|
+
- **Damage ownership** — final blow or majority damage on a blue.
|
|
40
|
+
- **Tackle contribution** — warp scramblers, warp disruptors, and HIC infinipoints count even with zero damage. A tackle alt holding down a friendly for the enemy is an awox, not crossfire.
|
|
41
|
+
- **HIC pilots** — heavy interdiction cruiser pilots qualify regardless of damage or weapon, because a HIC's job is to hold the target.
|
|
42
|
+
- **Blue scouting** — catches the classic trick of using an NPC-corp alt to kill someone in the main's corp or alliance while the main stays blue to the victim.
|
|
43
|
+
|
|
44
|
+
It automatically excludes the noise that trips up crude detectors:
|
|
45
|
+
- Large-fleet crossfire with hostiles present
|
|
46
|
+
- Killmail whoring (low damage, no final blow, no tackle)
|
|
47
|
+
- Structure bashes
|
|
48
|
+
- Sparring in throwaway ships (rookie ships, corvettes, shuttles below a configurable ISK threshold — pods are always exempt)
|
|
49
|
+
|
|
50
|
+
Supercarrier and titan victims get extra scoring weight. Every finding names the type of awox and links directly to the zKill killmails so you can review the evidence in one click.
|
|
51
|
+
|
|
52
|
+
### Undisclosed Alts
|
|
53
|
+
Finds characters linked in Auth that aren't declared as expected for a main, plus undisclosed alt corporations with suspicious corp-history overlap. If someone's been hiding an alt in an enemy-adjacent corp, you'll know.
|
|
54
|
+
|
|
55
|
+
### Spy Activity / Enemy Collusion
|
|
56
|
+
Flags pilots appearing on the same side as blacklisted or enemy entities on killmails. If your member is consistently flying with your enemies, that's not a coincidence — and each finding links to the zKill kills so you can see exactly when and where it happened.
|
|
57
|
+
|
|
58
|
+
### Flight Risk
|
|
59
|
+
Detects corp-hopping behavior — pilots who bounce between corporations frequently within a configurable window. Someone who's joined and left five corps in 90 days is telling you something about themselves.
|
|
60
|
+
|
|
61
|
+
### Enemy Connections
|
|
62
|
+
Flags direct ties to enemy alliances, corporations, or characters on your enemy list. Build your enemy list once and every audit checks against it automatically.
|
|
63
|
+
|
|
64
|
+
### +10 Standing Contacts
|
|
65
|
+
Identifies pilots who have +10 standing to known hostiles or blacklisted entities. If someone's blued your enemies, that's worth a conversation.
|
|
66
|
+
|
|
67
|
+
### Blacklist Adjacency
|
|
68
|
+
Correlates mains, alts, and observed contacts against [allianceauth-blacklist](https://github.com/MemberAudit/allianceauth-blacklist) entries. Leverage the community's shared blacklist data to catch known bad actors before they're your problem.
|
|
69
|
+
|
|
70
|
+
### Suspicious ISK Movement
|
|
71
|
+
- **Large donations** — wallet transfers at or above a configurable ISK threshold.
|
|
72
|
+
- **Free contracts** — contracts handing over high-value assets for zero or near-zero ISK.
|
|
73
|
+
- **Repeated transfers** — patterns of small transfers that add up over time.
|
|
74
|
+
|
|
75
|
+
Financial exceptions let you whitelist legitimate transfers like corp reimbursements so you only see the real red flags.
|
|
76
|
+
|
|
77
|
+
## What It Tracks
|
|
78
|
+
|
|
79
|
+
### Capital Ship Observations
|
|
80
|
+
Tracks capital and supercapital hull usage — titans, supercarriers, force auxiliaries, dreadnoughts, and carriers — from zKill kill/loss history and MemberAudit asset and current-ship data. Know who's got the big sticks, who's actually using them, and who's been losing them.
|
|
81
|
+
|
|
82
|
+
## How It Works
|
|
83
|
+
|
|
84
|
+
### For New Recruits
|
|
85
|
+
Automated audits run on every new join within a configurable window (default: first 14 days). Set it and forget it — new members are vetted automatically, and findings appear on your dashboard ready for review.
|
|
86
|
+
|
|
87
|
+
### For Existing Members
|
|
88
|
+
Run a manual audit on any character or entire corporation at any time. Use the per-run option toggles to skip expensive checks when you just need a quick check, or enable everything for a full deep-dive:
|
|
89
|
+
|
|
90
|
+
- **Standard Audit** (always included)
|
|
91
|
+
- **Undisclosed Alt Check** — toggle off to skip corp-history overlap analysis
|
|
92
|
+
- **Capital Observations** — toggle off to skip capital ship tracking
|
|
93
|
+
- **Awoxing Check** — toggle off to skip friendly-fire analysis
|
|
94
|
+
|
|
95
|
+
Need to tighten or loosen a threshold for a single audit without changing global policy? The advanced overrides panel lets you adjust any threshold per-run.
|
|
96
|
+
|
|
97
|
+
### Sharing Results
|
|
98
|
+
Generate time-limited summary links to share audit findings with FCs, directors, or alliance leadership without granting them dashboard access. Links expire automatically based on your configured timeout.
|
|
99
|
+
|
|
100
|
+
### Real-Time Updates
|
|
101
|
+
Audit detail pages update live — no manual refresh needed. Watch the audit progress through each analysis stage as it happens.
|
|
102
|
+
|
|
103
|
+
### Built for Dark Mode
|
|
104
|
+
Every UI component is designed for dark and night themes by default. No blinding white panels in the middle of a late-night fleet op.
|
|
105
|
+
|
|
106
|
+
## Installation
|
|
107
|
+
|
|
108
|
+
### Prerequisites
|
|
109
|
+
|
|
110
|
+
> [!IMPORTANT]
|
|
111
|
+
> Please make sure you meet all prerequisites before you proceed!
|
|
112
|
+
|
|
113
|
+
- **[AllianceAuth](https://github.com/allianceauth/allianceauth)** — This is an AllianceAuth plugin; you need a working AllianceAuth installation (AllianceAuth 5 fully supported).
|
|
114
|
+
- **[MemberAudit](https://gitlab.com/ErikKalkoken/aa-memberaudit)** >= 5.0.0 — Required for wallet data, corporation history, character snapshots, asset/ship tracking, and contact standings. MemberAudit 5.x supports both AllianceAuth 4 and 5. Without MemberAudit installed and listed in `INSTALLED_APPS`, the plugin will log a warning at startup and most audit checks will be degraded or unavailable. If you're serious about security auditing, MemberAudit is non-negotiable.
|
|
115
|
+
- **[allianceauth-blacklist](https://github.com/MemberAudit/allianceauth-blacklist)** *(optional but recommended)* — Enables blacklist correlation findings. Leverage shared community blacklist data to catch known bad actors.
|
|
116
|
+
|
|
117
|
+
### Steps
|
|
118
|
+
|
|
119
|
+
1. Install the latest release directly from PyPI. Make sure you're in the virtual environment of your AllianceAuth installation:
|
|
120
|
+
```bash
|
|
121
|
+
pip install aa-securityaudit
|
|
122
|
+
```
|
|
123
|
+
For development:
|
|
124
|
+
```bash
|
|
125
|
+
pip install -e .
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
2. Add `allianceauth_securityaudit` to your `INSTALLED_APPS` in `local.py`, after `memberaudit` and any other dependencies:
|
|
129
|
+
```python
|
|
130
|
+
INSTALLED_APPS += [
|
|
131
|
+
"memberaudit",
|
|
132
|
+
"allianceauth_securityaudit",
|
|
133
|
+
]
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
3. Run migrations:
|
|
137
|
+
```bash
|
|
138
|
+
python manage.py migrate
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
4. Collect static files:
|
|
142
|
+
```bash
|
|
143
|
+
python manage.py collectstatic
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
5. Restart your AllianceAuth server.
|
|
147
|
+
|
|
148
|
+
### Finalizing the Installation
|
|
149
|
+
|
|
150
|
+
1. **Assign permissions** to your security team (see [Permissions](#permissions) below).
|
|
151
|
+
2. **Configure policy thresholds** via the Policy Editor page. The defaults are sensible for most alliances, but everything is tunable.
|
|
152
|
+
3. **Build your enemy list** — Add enemy alliances, corporations, and characters via the Enemy List page. Every audit checks against this list automatically.
|
|
153
|
+
4. **Add financial exceptions** for legitimate transfers (corp reimbursements, SRP payouts, etc.) so they don't trigger false positives.
|
|
154
|
+
|
|
155
|
+
## Permissions
|
|
156
|
+
|
|
157
|
+
| Permission | Description |
|
|
158
|
+
|---|---|
|
|
159
|
+
| `securityaudit.view_dashboard` | View the security audit dashboard and audit list |
|
|
160
|
+
| `securityaudit.view_summaries` | View shareable audit summary pages |
|
|
161
|
+
| `securityaudit.run_audit` | Run manual security audits on characters and corporations |
|
|
162
|
+
| `securityaudit.administrate` | Full admin access: policy editor, enemy list, financial exceptions, job management |
|
|
163
|
+
| `securityaudit.generate_link` | Generate shareable summary links for audit results |
|
|
164
|
+
| `securityaudit.manage_enemies` | Add and remove entries from the enemy list |
|
|
165
|
+
| `securityaudit.view_enemies` | View the enemy list |
|
|
166
|
+
|
|
167
|
+
## Policy Settings
|
|
168
|
+
|
|
169
|
+
All settings are configurable via the Policy Editor page in the AllianceAuth admin UI. The defaults work well for most alliances — adjust as needed for your security posture.
|
|
170
|
+
|
|
171
|
+
### Master Switches
|
|
172
|
+
|
|
173
|
+
| Setting | Default | Description |
|
|
174
|
+
|---|---|---|
|
|
175
|
+
| `enabled` | On | Globally enable or disable the plugin. |
|
|
176
|
+
| `automation_enabled` | On | Toggle automated new-join audits. |
|
|
177
|
+
| `new_join_window_days` | 14 days | How many days after a new join to automatically audit the member. |
|
|
178
|
+
|
|
179
|
+
### ISK / Wallet
|
|
180
|
+
|
|
181
|
+
| Setting | Default | Description |
|
|
182
|
+
|---|---|---|
|
|
183
|
+
| `large_donation_isk_threshold` | 1,000,000,000 ISK | Flag wallet donations at or above this amount. Lower this if you want to catch smaller transfers. |
|
|
184
|
+
|
|
185
|
+
### Contracts
|
|
186
|
+
|
|
187
|
+
| Setting | Default | Description |
|
|
188
|
+
|---|---|---|
|
|
189
|
+
| `free_contract_value_threshold` | 500,000,000 ISK | Flag contracts with zero or near-zero consideration at or above this value. |
|
|
190
|
+
|
|
191
|
+
### Corporation Movement (Flight Risk)
|
|
192
|
+
|
|
193
|
+
| Setting | Default | Description |
|
|
194
|
+
|---|---|---|
|
|
195
|
+
| `corp_hop_window_days` | 90 days | Lookback window for corp-hopping detection. |
|
|
196
|
+
| `corp_hop_count_threshold` | 3 | Number of corp joins within the window to flag as flight risk. |
|
|
197
|
+
|
|
198
|
+
### Undisclosed Alts (Corp History)
|
|
199
|
+
|
|
200
|
+
| Setting | Default | Description |
|
|
201
|
+
|---|---|---|
|
|
202
|
+
| `alt_corp_history_max_join_leave_diff_hours` | 24 hours | Max hours between an alt's and main's corp join/leave dates to count as suspicious overlap. |
|
|
203
|
+
| `corp_overlap_rule1_min_corps` | 1 | Min overlapping non-NPC corps for a strong alt signal (both join and leave dates close). |
|
|
204
|
+
| `corp_overlap_rule2_min_corps` | 3 | Min overlapping non-NPC corps for a moderate alt signal (either join or leave dates close). |
|
|
205
|
+
| `corp_overlap_rule3_min_corps` | 5 | Min overlapping non-NPC corps for a weak alt signal (no close date match). |
|
|
206
|
+
|
|
207
|
+
### Killmails
|
|
208
|
+
|
|
209
|
+
| Setting | Default | Description |
|
|
210
|
+
|---|---|---|
|
|
211
|
+
| `killmail_max_attacker_count` | 0 (no limit) | Skip killmails with more attackers than this. Useful to avoid processing huge fleet fights. Set to 0 for no limit. |
|
|
212
|
+
|
|
213
|
+
### Awox / Friendly Fire
|
|
214
|
+
|
|
215
|
+
| Setting | Default | Description |
|
|
216
|
+
|---|---|---|
|
|
217
|
+
| `awox_min_damage_share` | 0.50 (50%) | Minimum damage share (damage done / damage taken) for damage-ownership awox qualification. Below this, a pilot must have final blow, tackle, or be in a HIC to qualify. |
|
|
218
|
+
| `awox_lookback_days` | 180 days | How far back in kill history to look for awox kills. Older kills are ignored. |
|
|
219
|
+
| `awox_large_fleet_attacker_threshold` | 10 | Attacker count at which the large-fleet crossfire exclusion kicks in. In large fleets with hostiles present, low-damage non-final-blow participants without tackle or HIC are excluded as crossfire. |
|
|
220
|
+
| `awox_solo_attacker_threshold` | 3 | Attacker count at or below which a solo/small-gang bonus is applied to the awox score. Solo awoxing is more suspicious than fleet crossfire. |
|
|
221
|
+
| `awox_min_victim_value` | 10,000,000 ISK | Minimum zKill total value for rookie ship/corvette/shuttle victims to avoid being excluded as sparring. Pods are always exempt regardless of this setting. |
|
|
222
|
+
| `awox_blue_scouting_bonus` | 15 | Score bonus per kill qualified via the blue-scouting path (NPC-corp alt with main/other alts blue to the victim). Reflects premeditation. |
|
|
223
|
+
|
|
224
|
+
### zKill
|
|
225
|
+
|
|
226
|
+
| Setting | Default | Description |
|
|
227
|
+
|---|---|---|
|
|
228
|
+
| `zkill_throttle_seconds` | 0.10s | Delay between zKill API calls to avoid rate limiting. |
|
|
229
|
+
| `zkill_kill_pages` | 3 | Pages of kill history to fetch per character. |
|
|
230
|
+
| `zkill_loss_pages` | 3 | Pages of loss history to fetch per character. |
|
|
231
|
+
| `zkill_capital_kill_pages` | 5 | Pages per capital ship group to fetch for capital kill scans. |
|
|
232
|
+
| `zkill_capital_loss_pages` | 5 | Pages per capital ship group to fetch for capital loss scans. |
|
|
233
|
+
|
|
234
|
+
### Infrastructure
|
|
235
|
+
|
|
236
|
+
| Setting | Default | Description |
|
|
237
|
+
|---|---|---|
|
|
238
|
+
| `esi_throttle_seconds` | 0.10s | Delay between ESI API calls to avoid rate limiting. |
|
|
239
|
+
| `summary_link_expiry_hours` | 24 hours | Hours until shareable summary links expire. |
|
|
240
|
+
|
|
241
|
+
## AllianceAuth Compatibility
|
|
242
|
+
|
|
243
|
+
- AllianceAuth 5 is fully supported.
|
|
244
|
+
- The plugin ships a compatibility `allianceauth/base.html` template that forwards to `allianceauth/base-bs5.html` for AA5 environments where `allianceauth/base.html` is not present.
|
|
245
|
+
- Keep standard AllianceAuth app ordering in `INSTALLED_APPS` so core templates resolve as expected on older installations.
|
|
246
|
+
- If your AA5 build uses a different base template filename, update `allianceauth_securityaudit/templates/allianceauth/base.html` to extend that canonical base path.
|
|
247
|
+
- URL routing is auto-registered via the AllianceAuth hook (`url_hook`), so no manual project `urls.py` include is required.
|
|
248
|
+
|
|
249
|
+
## Changelog
|
|
250
|
+
|
|
251
|
+
See [CHANGELOG.md](CHANGELOG.md) for release history.
|
|
252
|
+
|
|
253
|
+
## Contribute
|
|
254
|
+
|
|
255
|
+
Found a bug or have a feature idea? Please open an issue or pull request on
|
|
256
|
+
[GitHub](https://github.com/OntoKoinon/aa-securityaudit).
|
|
257
|
+
|
|
258
|
+
If you've made a new app for AllianceAuth, please consider sharing it with the
|
|
259
|
+
rest of the community. For any questions on how to share your app, please
|
|
260
|
+
contact the AA devs on their
|
|
261
|
+
[Discord](https://discord.gg/Eve-Alliance-Auth). You can find the current
|
|
262
|
+
community creations
|
|
263
|
+
[here](https://gitlab.com/allianceauth/community-creations).
|
|
264
|
+
|
|
265
|
+
## License
|
|
266
|
+
|
|
267
|
+
This project is licensed under the MIT License — see the [LICENSE](LICENSE)
|
|
268
|
+
file for details.
|