aa-bb 3.1.0b1__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.
Files changed (180) hide show
  1. aa_bb-3.1.0b1/.gitignore +16 -0
  2. aa_bb-3.1.0b1/LICENSE +7 -0
  3. aa_bb-3.1.0b1/PKG-INFO +356 -0
  4. aa_bb-3.1.0b1/README.md +314 -0
  5. aa_bb-3.1.0b1/aa_bb/__init__.py +4 -0
  6. aa_bb-3.1.0b1/aa_bb/admin.py +484 -0
  7. aa_bb-3.1.0b1/aa_bb/app_settings.py +1063 -0
  8. aa_bb-3.1.0b1/aa_bb/app_settings_2.py +319 -0
  9. aa_bb-3.1.0b1/aa_bb/apps.py +481 -0
  10. aa_bb-3.1.0b1/aa_bb/auth_hooks.py +209 -0
  11. aa_bb-3.1.0b1/aa_bb/celery.py +55 -0
  12. aa_bb-3.1.0b1/aa_bb/checks/__init__.py +8 -0
  13. aa_bb-3.1.0b1/aa_bb/checks/alliance_blacklist.py +19 -0
  14. aa_bb-3.1.0b1/aa_bb/checks/alpha_skills.json +757 -0
  15. aa_bb-3.1.0b1/aa_bb/checks/awox.py +293 -0
  16. aa_bb-3.1.0b1/aa_bb/checks/clone_state.py +182 -0
  17. aa_bb-3.1.0b1/aa_bb/checks/coalition_blacklist.py +42 -0
  18. aa_bb-3.1.0b1/aa_bb/checks/corp_blacklist.py +190 -0
  19. aa_bb-3.1.0b1/aa_bb/checks/corp_changes.py +258 -0
  20. aa_bb-3.1.0b1/aa_bb/checks/cyno.py +377 -0
  21. aa_bb-3.1.0b1/aa_bb/checks/hostile_assets.py +443 -0
  22. aa_bb-3.1.0b1/aa_bb/checks/hostile_clones.py +501 -0
  23. aa_bb-3.1.0b1/aa_bb/checks/roles_and_tokens.py +209 -0
  24. aa_bb-3.1.0b1/aa_bb/checks/skills.json +659 -0
  25. aa_bb-3.1.0b1/aa_bb/checks/skills.py +289 -0
  26. aa_bb-3.1.0b1/aa_bb/checks/sus_contacts.py +288 -0
  27. aa_bb-3.1.0b1/aa_bb/checks/sus_contracts.py +259 -0
  28. aa_bb-3.1.0b1/aa_bb/checks/sus_mails.py +338 -0
  29. aa_bb-3.1.0b1/aa_bb/checks/sus_trans.py +345 -0
  30. aa_bb-3.1.0b1/aa_bb/checks_cb/__init__.py +7 -0
  31. aa_bb-3.1.0b1/aa_bb/checks_cb/hostile_assets.py +160 -0
  32. aa_bb-3.1.0b1/aa_bb/checks_cb/sus_contracts.py +271 -0
  33. aa_bb-3.1.0b1/aa_bb/checks_cb/sus_trans.py +296 -0
  34. aa_bb-3.1.0b1/aa_bb/esi_cache.py +39 -0
  35. aa_bb-3.1.0b1/aa_bb/esi_client.py +75 -0
  36. aa_bb-3.1.0b1/aa_bb/forms.py +52 -0
  37. aa_bb-3.1.0b1/aa_bb/locale/.gitkeep +0 -0
  38. aa_bb-3.1.0b1/aa_bb/management/__init__.py +0 -0
  39. aa_bb-3.1.0b1/aa_bb/management/commands/__init__.py +0 -0
  40. aa_bb-3.1.0b1/aa_bb/management/commands/manual_notif_test.py +655 -0
  41. aa_bb-3.1.0b1/aa_bb/migrations/0001_initial.py +25 -0
  42. aa_bb-3.1.0b1/aa_bb/migrations/0002_bigbrotherconfig_userstatus.py +58 -0
  43. aa_bb-3.1.0b1/aa_bb/migrations/0003_alter_bigbrotherconfig_pingroleid.py +18 -0
  44. aa_bb-3.1.0b1/aa_bb/migrations/0004_alter_bigbrotherconfig_is_active_and_more.py +23 -0
  45. aa_bb-3.1.0b1/aa_bb/migrations/0005_alter_bigbrotherconfig_hostile_alliances.py +18 -0
  46. aa_bb-3.1.0b1/aa_bb/migrations/0006_alter_bigbrotherconfig_pingroleid.py +18 -0
  47. aa_bb-3.1.0b1/aa_bb/migrations/0007_alter_general_options.py +17 -0
  48. aa_bb-3.1.0b1/aa_bb/migrations/0008_alliance_names_corporation_names.py +41 -0
  49. aa_bb-3.1.0b1/aa_bb/migrations/0009_userstatus_sus_contacts_userstatus_sus_contracts_and_more.py +38 -0
  50. aa_bb-3.1.0b1/aa_bb/migrations/0010_alter_userstatus_awox_kill_links_and_more.py +48 -0
  51. aa_bb-3.1.0b1/aa_bb/migrations/0011_character_names.py +27 -0
  52. aa_bb-3.1.0b1/aa_bb/migrations/0012_id_types.py +27 -0
  53. aa_bb-3.1.0b1/aa_bb/migrations/0013_bigbrotherconfig_mail_keywords.py +18 -0
  54. aa_bb-3.1.0b1/aa_bb/migrations/0014_processedcontract_processedmail_and_more.py +74 -0
  55. aa_bb-3.1.0b1/aa_bb/migrations/0015_processedtransaction_sustransactionnote.py +42 -0
  56. aa_bb-3.1.0b1/aa_bb/migrations/0016_warmprogress.py +23 -0
  57. aa_bb-3.1.0b1/aa_bb/migrations/0017_entityinfocache.py +27 -0
  58. aa_bb-3.1.0b1/aa_bb/migrations/0018_userstatus_cyno_userstatus_has_skills_and_more.py +28 -0
  59. aa_bb-3.1.0b1/aa_bb/migrations/0019_bigbrotherconfig_whitelist_alliances_and_more.py +23 -0
  60. aa_bb-3.1.0b1/aa_bb/migrations/0020_messages_bigbrotherconfig_are_daily_messages_active_and_more.py +35 -0
  61. aa_bb-3.1.0b1/aa_bb/migrations/0021_alter_messages_id_alter_messages_text.py +23 -0
  62. aa_bb-3.1.0b1/aa_bb/migrations/0022_messages_sent_in_cycle.py +18 -0
  63. aa_bb-3.1.0b1/aa_bb/migrations/0023_optmessages1_optmessages2_optmessages3_optmessages4_and_more.py +103 -0
  64. aa_bb-3.1.0b1/aa_bb/migrations/0024_bigbrotherconfig_dailyschedule_and_more.py +45 -0
  65. aa_bb-3.1.0b1/aa_bb/migrations/0025_alter_messages_options_alter_optmessages1_options_and_more.py +37 -0
  66. aa_bb-3.1.0b1/aa_bb/migrations/0026_alter_general_options_alter_bigbrotherconfig_id_and_more.py +97 -0
  67. aa_bb-3.1.0b1/aa_bb/migrations/0027_alter_general_options_bigbrotherconfig_is_loa_active_and_more.py +27 -0
  68. aa_bb-3.1.0b1/aa_bb/migrations/0028_alter_bigbrotherconfig_is_loa_active.py +18 -0
  69. aa_bb-3.1.0b1/aa_bb/migrations/0029_leaverequest_main_character.py +18 -0
  70. aa_bb-3.1.0b1/aa_bb/migrations/0030_alter_general_options.py +17 -0
  71. aa_bb-3.1.0b1/aa_bb/migrations/0031_bigbrotherconfig_loa_max_logoff_days_and_more.py +88 -0
  72. aa_bb-3.1.0b1/aa_bb/migrations/0032_alter_leaverequest_status.py +18 -0
  73. aa_bb-3.1.0b1/aa_bb/migrations/0033_messagetype_bigbrotherconfig_pingroleid2_and_more.py +45 -0
  74. aa_bb-3.1.0b1/aa_bb/migrations/0034_rename_last_updated_userstatus_updated.py +18 -0
  75. aa_bb-3.1.0b1/aa_bb/migrations/0035_alter_userstatus_options.py +17 -0
  76. aa_bb-3.1.0b1/aa_bb/migrations/0036_alter_general_options.py +17 -0
  77. aa_bb-3.1.0b1/aa_bb/migrations/0037_corpstatus.py +32 -0
  78. aa_bb-3.1.0b1/aa_bb/migrations/0038_bigbrotherconfig_ignored_corporations.py +18 -0
  79. aa_bb-3.1.0b1/aa_bb/migrations/0039_alter_bigbrotherconfig_ignored_corporations.py +18 -0
  80. aa_bb-3.1.0b1/aa_bb/migrations/0040_sovereigntymapcache_corporationinfocache_and_more.py +49 -0
  81. aa_bb-3.1.0b1/aa_bb/migrations/0041_bigbrotherconfig_is_warmer_active.py +18 -0
  82. aa_bb-3.1.0b1/aa_bb/migrations/0042_alter_general_options_and_more.py +23 -0
  83. aa_bb-3.1.0b1/aa_bb/migrations/0043_bigbrotherconfig_bb_member_states_and_more.py +24 -0
  84. aa_bb-3.1.0b1/aa_bb/migrations/0044_bigbrotherconfig_character_scopes_and_more.py +23 -0
  85. aa_bb-3.1.0b1/aa_bb/migrations/0045_userstatus_sp_age_ratio_result.py +18 -0
  86. aa_bb-3.1.0b1/aa_bb/migrations/0046_bigbrotherconfig_member_corporations.py +18 -0
  87. aa_bb-3.1.0b1/aa_bb/migrations/0047_bigbrotherconfig_member_alliances.py +18 -0
  88. aa_bb-3.1.0b1/aa_bb/migrations/0048_characteraccountstate.py +21 -0
  89. aa_bb-3.1.0b1/aa_bb/migrations/0049_userstatus_clone_status.py +18 -0
  90. aa_bb-3.1.0b1/aa_bb/migrations/0050_alter_general_options_and_more.py +22 -0
  91. aa_bb-3.1.0b1/aa_bb/migrations/0051_monthlypapstats.py +34 -0
  92. aa_bb-3.1.0b1/aa_bb/migrations/0052_papsconfig_delete_monthlypapstats.py +30 -0
  93. aa_bb-3.1.0b1/aa_bb/migrations/0053_alter_papsconfig_corp_modifier_and_more.py +38 -0
  94. aa_bb-3.1.0b1/aa_bb/migrations/0054_alter_general_options.py +17 -0
  95. aa_bb-3.1.0b1/aa_bb/migrations/0055_papsconfig_group_paps_papsconfig_group_paps_modifier.py +24 -0
  96. aa_bb-3.1.0b1/aa_bb/migrations/0056_alter_papsconfig_group_paps.py +19 -0
  97. aa_bb-3.1.0b1/aa_bb/migrations/0057_papsconfig_excluded_groups_papsconfig_excluded_users_and_more.py +31 -0
  98. aa_bb-3.1.0b1/aa_bb/migrations/0058_papsconfig_excluded_groups_get_paps_and_more.py +30 -0
  99. aa_bb-3.1.0b1/aa_bb/migrations/0059_alter_papsconfig_excluded_groups_get_paps.py +18 -0
  100. aa_bb-3.1.0b1/aa_bb/migrations/0060_papsconfig_cap_group_papsconfig_cap_group_paps_and_more.py +49 -0
  101. aa_bb-3.1.0b1/aa_bb/migrations/0061_remove_papsconfig_cap_group_and_more.py +42 -0
  102. aa_bb-3.1.0b1/aa_bb/migrations/0062_complianceticket.py +28 -0
  103. aa_bb-3.1.0b1/aa_bb/migrations/0063_alter_complianceticket_user.py +21 -0
  104. aa_bb-3.1.0b1/aa_bb/migrations/0064_alter_complianceticket_reason.py +18 -0
  105. aa_bb-3.1.0b1/aa_bb/migrations/0065_alter_complianceticket_reason_and_more.py +26 -0
  106. aa_bb-3.1.0b1/aa_bb/migrations/0066_tickettoolconfig_papcompliance.py +53 -0
  107. aa_bb-3.1.0b1/aa_bb/migrations/0067_remove_tickettoolconfig_category_id_and_more.py +21 -0
  108. aa_bb-3.1.0b1/aa_bb/migrations/0068_tickettoolconfig_category_id_and_more.py +23 -0
  109. aa_bb-3.1.0b1/aa_bb/migrations/0069_tickettoolconfig_ticket_counter.py +18 -0
  110. aa_bb-3.1.0b1/aa_bb/migrations/0070_remove_tickettoolconfig_role_id_and_more.py +54 -0
  111. aa_bb-3.1.0b1/aa_bb/migrations/0071_tickettoolconfig_role_id.py +18 -0
  112. aa_bb-3.1.0b1/aa_bb/migrations/0072_alter_complianceticket_reason.py +18 -0
  113. aa_bb-3.1.0b1/aa_bb/migrations/0073_tickettoolconfig_starting_pap_compliance.py +18 -0
  114. aa_bb-3.1.0b1/aa_bb/migrations/0074_alter_bigbrotherconfig_hostile_alliances.py +18 -0
  115. aa_bb-3.1.0b1/aa_bb/migrations/0075_bbupdatestate_tickettoolconfig_afk_check_frequency_and_more.py +49 -0
  116. aa_bb-3.1.0b1/aa_bb/migrations/0076_id_types_last_accessed_frequentcorpchangescache_and_more.py +74 -0
  117. aa_bb-3.1.0b1/aa_bb/migrations/0077_complianceticket_ticket_id_and_more.py +28 -0
  118. aa_bb-3.1.0b1/aa_bb/migrations/0078_tickettoolconfig_awox_monitor_enabled.py +18 -0
  119. aa_bb-3.1.0b1/aa_bb/migrations/0079_helptext_guidance.py +57 -0
  120. aa_bb-3.1.0b1/aa_bb/migrations/0080_bigbrotherconfig_dlc_flags.py +65 -0
  121. aa_bb-3.1.0b1/aa_bb/migrations/0081_remove_papsconfig_imp_modifier_and_more.py +56 -0
  122. aa_bb-3.1.0b1/aa_bb/migrations/0082_remove_bigbrotherconfig_token_and_more.py +82 -0
  123. aa_bb-3.1.0b1/aa_bb/migrations/0083_alter_bigbrotherredditmessage_options_and_more.py +71 -0
  124. aa_bb-3.1.0b1/aa_bb/migrations/0084_bigbrotherconfig_consider_all_structures_hostile_and_more.py +43 -0
  125. aa_bb-3.1.0b1/aa_bb/migrations/0085_bigbrotherconfig_awox_notify_and_more.py +33 -0
  126. aa_bb-3.1.0b1/aa_bb/migrations/0086_bigbrotherconfig_are_recurring_stats_active_and_more.py +54 -0
  127. aa_bb-3.1.0b1/aa_bb/migrations/0087_bigbrotherconfig_dlc_are_recurring_stats_active.py +18 -0
  128. aa_bb-3.1.0b1/aa_bb/migrations/0088_bigbrotherconfig_cyno_notify.py +18 -0
  129. aa_bb-3.1.0b1/aa_bb/migrations/0089_bigbrotherconfig_asset_notify_and_more.py +58 -0
  130. aa_bb-3.1.0b1/aa_bb/migrations/__init__.py +0 -0
  131. aa_bb-3.1.0b1/aa_bb/models.py +1289 -0
  132. aa_bb-3.1.0b1/aa_bb/modelss.py +625 -0
  133. aa_bb-3.1.0b1/aa_bb/reddit.py +134 -0
  134. aa_bb-3.1.0b1/aa_bb/signals.py +66 -0
  135. aa_bb-3.1.0b1/aa_bb/static/aa_bb/.gitkeep +0 -0
  136. aa_bb-3.1.0b1/aa_bb/tasks.py +1267 -0
  137. aa_bb-3.1.0b1/aa_bb/tasks_bot.py +287 -0
  138. aa_bb-3.1.0b1/aa_bb/tasks_cb.py +1096 -0
  139. aa_bb-3.1.0b1/aa_bb/tasks_ct.py +348 -0
  140. aa_bb-3.1.0b1/aa_bb/tasks_other.py +237 -0
  141. aa_bb-3.1.0b1/aa_bb/tasks_reddit.py +180 -0
  142. aa_bb-3.1.0b1/aa_bb/tasks_tickets.py +425 -0
  143. aa_bb-3.1.0b1/aa_bb/templates/aa_bb/base.html +25 -0
  144. aa_bb-3.1.0b1/aa_bb/templates/aa_bb/disabled.html +20 -0
  145. aa_bb-3.1.0b1/aa_bb/templates/aa_bb/index.html +554 -0
  146. aa_bb-3.1.0b1/aa_bb/templates/aa_cb/base.html +26 -0
  147. aa_bb-3.1.0b1/aa_bb/templates/aa_cb/disabled.html +20 -0
  148. aa_bb-3.1.0b1/aa_bb/templates/aa_cb/index.html +398 -0
  149. aa_bb-3.1.0b1/aa_bb/templates/faq/base.html +19 -0
  150. aa_bb-3.1.0b1/aa_bb/templates/faq/cards.html +116 -0
  151. aa_bb-3.1.0b1/aa_bb/templates/faq/faq.html +42 -0
  152. aa_bb-3.1.0b1/aa_bb/templates/faq/menu.html +30 -0
  153. aa_bb-3.1.0b1/aa_bb/templates/faq/modules.html +66 -0
  154. aa_bb-3.1.0b1/aa_bb/templates/faq/settings_bigbrother.html +224 -0
  155. aa_bb-3.1.0b1/aa_bb/templates/faq/settings_nav.html +23 -0
  156. aa_bb-3.1.0b1/aa_bb/templates/faq/settings_paps.html +132 -0
  157. aa_bb-3.1.0b1/aa_bb/templates/faq/settings_tickets.html +226 -0
  158. aa_bb-3.1.0b1/aa_bb/templates/loa/_loa_subtabs.html +17 -0
  159. aa_bb-3.1.0b1/aa_bb/templates/loa/admin.html +112 -0
  160. aa_bb-3.1.0b1/aa_bb/templates/loa/base.html +22 -0
  161. aa_bb-3.1.0b1/aa_bb/templates/loa/disabled.html +19 -0
  162. aa_bb-3.1.0b1/aa_bb/templates/loa/index.html +62 -0
  163. aa_bb-3.1.0b1/aa_bb/templates/loa/menu.html +27 -0
  164. aa_bb-3.1.0b1/aa_bb/templates/loa/request.html +81 -0
  165. aa_bb-3.1.0b1/aa_bb/templates/paps/base.html +21 -0
  166. aa_bb-3.1.0b1/aa_bb/templates/paps/disabled.html +19 -0
  167. aa_bb-3.1.0b1/aa_bb/templates/paps/history.html +25 -0
  168. aa_bb-3.1.0b1/aa_bb/templates/paps/index.html +86 -0
  169. aa_bb-3.1.0b1/aa_bb/templates/paps/menu.html +20 -0
  170. aa_bb-3.1.0b1/aa_bb/tests/__init__.py +1 -0
  171. aa_bb-3.1.0b1/aa_bb/tests/test_example.py +31 -0
  172. aa_bb-3.1.0b1/aa_bb/urls.py +57 -0
  173. aa_bb-3.1.0b1/aa_bb/urls_cb.py +27 -0
  174. aa_bb-3.1.0b1/aa_bb/urls_loa.py +14 -0
  175. aa_bb-3.1.0b1/aa_bb/urls_paps.py +10 -0
  176. aa_bb-3.1.0b1/aa_bb/views.py +1113 -0
  177. aa_bb-3.1.0b1/aa_bb/views_cb.py +706 -0
  178. aa_bb-3.1.0b1/aa_bb/views_faq.py +918 -0
  179. aa_bb-3.1.0b1/aa_bb/views_paps.py +334 -0
  180. aa_bb-3.1.0b1/pyproject.toml +60 -0
@@ -0,0 +1,16 @@
1
+ /build/
2
+ /dist/
3
+ /*.egg-info/
4
+ .idea/
5
+ .tox/
6
+ htmlcov/
7
+ node_modules/
8
+
9
+ *.log
10
+ *.tmp
11
+ *.bak
12
+ *.old
13
+ __pycache__
14
+ .coverage
15
+ /coverage.xml
16
+ alliance_auth.sqlite3
aa_bb-3.1.0b1/LICENSE ADDED
@@ -0,0 +1,7 @@
1
+ Copyright 2025 Andrew Xadi
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
4
+
5
+ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
6
+
7
+ THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
aa_bb-3.1.0b1/PKG-INFO ADDED
@@ -0,0 +1,356 @@
1
+ Metadata-Version: 2.4
2
+ Name: aa_bb
3
+ Version: 3.1.0b1
4
+ Summary: BigBrother
5
+ Project-URL: Changelog, https://github.com/BroodLK/aa_bb/blob/main/CHANGELOG.md
6
+ Project-URL: Issue / Bug Reports, https://github.com/BroodLK/aa_bb/issues
7
+ Author-email: Andrew Xadi <andrewxadi@gmail.com>, BioBrute <broodlk@gmail.com>
8
+ License: Copyright 2025 Andrew Xadi
9
+
10
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
15
+ License-File: LICENSE
16
+ Keywords: aa_bb,allianceauth
17
+ Classifier: Environment :: Web Environment
18
+ Classifier: Framework :: Django
19
+ Classifier: Framework :: Django :: 4.2
20
+ Classifier: Intended Audience :: Developers
21
+ Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
22
+ Classifier: Operating System :: OS Independent
23
+ Classifier: Programming Language :: Python
24
+ Classifier: Programming Language :: Python :: 3 :: Only
25
+ Classifier: Programming Language :: Python :: 3.10
26
+ Classifier: Programming Language :: Python :: 3.11
27
+ Classifier: Programming Language :: Python :: 3.12
28
+ Classifier: Programming Language :: Python :: 3.13
29
+ Classifier: Topic :: Internet :: WWW/HTTP
30
+ Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content
31
+ Requires-Python: >=3.10
32
+ Requires-Dist: aa-charlink>=1.11.1
33
+ Requires-Dist: allianceauth-afat>=4.1.1
34
+ Requires-Dist: allianceauth-blacklist>=0.1.1
35
+ Requires-Dist: allianceauth-corptools>=2.12.0
36
+ Requires-Dist: allianceauth-discordbot>=4.1.0
37
+ Requires-Dist: allianceauth>=4.3.1
38
+ Requires-Dist: django-esi>=8.2.0
39
+ Requires-Dist: matplotlib>=3.7.2
40
+ Requires-Dist: psycopg2-binary>=2.9.9
41
+ Description-Content-Type: text/markdown
42
+
43
+
44
+ > [!CAUTION]
45
+ > 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.
46
+
47
+ # BigBrother
48
+ 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.
49
+ > [!IMPORTANT]
50
+ > 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.
51
+
52
+ To correct the above, see instructions [here](#fix-duplicated-tasks-error)
53
+
54
+ > [!WARNING]
55
+ > This is a **beta** release. Please report issues through GitHub.
56
+
57
+ ## Index
58
+
59
+ - [BigBrother](#bigbrother)
60
+ - [Core Requirements](#core-requirements)
61
+ - [Install Instructions](#install-instructions)
62
+ - [Features](#features)
63
+ - [Dashboard](#dashboard)
64
+ - [Corp Dashboard](#corp-dashboard)
65
+ - [Discord Notifications](#discord-notifications)
66
+ - [Ticket System](#ticket-system)
67
+ - [Automated Discord Messages](#automated-discord-messages)
68
+ - [Recurring stats](#recurring-stats)
69
+
70
+ ## Core Requirements
71
+ ### The following AllianceAuth plugins are **_required_**:
72
+
73
+ ```md
74
+ allianceauth-afat >= 4.1.1
75
+ allianceauth-blacklist >= 0.1.1
76
+ allianceauth-corptools >= 2.12.0 (this app will adopt 3.0.0 as soon as version 3 is out of beta)
77
+ allianceauth-discordbot >= 4.1.0
78
+ aa-charlink >= 1.11.1
79
+ django-esi >= 8.2.0
80
+ ```
81
+
82
+ You do not have to use afat, but it does need to be installed.
83
+
84
+ ## Install Instructions
85
+ After making sure to add the above prerequisite applications.
86
+ ```bash
87
+ source /home/allianceserver/venv/auth/bin/activate && cd /home/allianceserver/myauth/
88
+ ```
89
+ ```bash
90
+ pip install aa_bb
91
+ ```
92
+ ```bash
93
+ vi myauth/settings/local.py
94
+ ```
95
+ add `aa_bb` to installed apps.
96
+ ```bash
97
+ python manage.py migrate && python manage.py collectstatic
98
+ ```
99
+ > [!IMPORTANT]
100
+ > It is recommended to use a threaded worker setup with memmon for this application. The following is an example
101
+
102
+ In your supervisor.conf
103
+ ```bash
104
+ [program:worker]
105
+ command=/home/allianceserver/venv/auth/bin/celery -A myauth worker -P threads -c 10 -l INFO -n %(program_name)s_%(process_num)02d
106
+ directory=/home/allianceserver/myauth
107
+ user=allianceserver
108
+ numprocs=2
109
+ process_name=%(program_name)s_%(process_num)02d
110
+ stdout_logfile=/home/allianceserver/myauth/log/worker.log
111
+ stderr_logfile=/home/allianceserver/myauth/log/worker.log
112
+ autostart=true
113
+ autorestart=true
114
+ startsecs=10
115
+ stopwaitsecs = 600
116
+ killasgroup=true
117
+ priority=998
118
+
119
+ [eventlistener:memmon]
120
+ command=/home/allianceserver/venv/auth/bin/memmon -p worker_00=512MB -p worker_01=512MB -p -p gunicorn=512MB
121
+ directory=/home/allianceserver/myauth
122
+ events=TICK_60
123
+ stdout_logfile=/home/allianceserver/myauth/log/memmon.log
124
+ stderr_logfile=/home/allianceserver/myauth/log/memmon.log
125
+ ```
126
+
127
+ > [!IMPORTANT]
128
+ > Failure to follow the next steps before running the initial tasks can cause an undesired result
129
+
130
+ In your AA Admin navigate to AA_BB
131
+ - Navigate to Big Brother Config
132
+ - Under **_Core Activation_**
133
+ - Make sure Warmer Is Active is enabled
134
+ - Enable any features you plan to use
135
+ - paps,
136
+ - loa,
137
+ - daily messages (messages that repeat every 24 hours),
138
+ - recurring stats,
139
+ - optional messages 1-5
140
+ - Set the number of days for an LOA
141
+ - Under Notifications
142
+ - Select if you would like to opt out of any notifications sent to the main Discord Webhook for user changes
143
+ - By default, the app will not send a notification when a new user adds their audit; however, this can be enabled.
144
+ - When enabled, it will treat non-existent data as old data and send a notification to discord on all the user's stats, treating them as if they are changes.
145
+ - Under Ping / Messaging Rules
146
+ - Enter in your desired role ID that you wish to be pinged and select the conditions under which those roles will be pinged.
147
+ - Select any @here conditions
148
+ - Select any @everyone conditions
149
+ - Under Webhooks
150
+ - >Dont forget you can send it to a thread by using `https://discordapp.com/api/webhooks/<url>/<url>?thread_id=<threadid>`\
151
+ The thread must be in the same channel that the webhook is configured to.
152
+ - **The main "Webhook" This is used to send notifications of user and corp changes to Discord**
153
+ - LOA Webhook
154
+ - Daily Webhook
155
+ - Recurring Stats
156
+ - Optional Message Webhooks 1-5
157
+ - Under Schedules
158
+ - Configure specific schedules for daily messages, optional messages, and recurring stats.
159
+ - Under User State and Membership
160
+ >[!WARNING] Failure to configure this will result in AA_BB not working
161
+ - Configure what states you consider "members" you will receive updates on these in discord
162
+ - Configure what states you consider "guest" these will be preloaded into cache, but not notified in discord.
163
+ - Configure what corporations you consider to be members, these are friendly entities.
164
+ - You do not need to configure a corporation if your corporation is inside an alliance that is set as member
165
+ - Configure what alliances you consider to be members.
166
+ - Configure ignore corporations, such as alt corps, that will be ignored when checks are run
167
+ - Under Hostile / Whitelist Rules
168
+ - Configure Alliances you consider hostile
169
+ - Coming Soon(tm) the ability to consider anyone who isn't a member /ignored as hostile
170
+ - Configure Corporations you consider hostile
171
+ - Configure Whitelisted Alliance and Corporations, these act the same as ignored and are... ignored
172
+ - Configure if you consider all null sec, minus what you ignore/whitelist/member, as hostile.
173
+ - Configure if all player structures are hostile, minus what you ignore/whitelist/member.
174
+ - Configure if all npc stations are hostile, minus what you ignore/whitelist/member.
175
+ - Configure Excluded systems and stations, these will be ignored and can be considered the same as "member" "ignored" or "whitelisted"
176
+
177
+ 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.
178
+
179
+ Okay, but now you want it to actually do the things, go to `Periodic Tasks` and **Enable** `BB run regular updates`
180
+ That's it. Let the timer click over, and it will create any missing tasks and start the process.
181
+
182
+ # Features
183
+
184
+ > [!WARNING]
185
+ > **_Reddit Support_**:\
186
+ > Reddit functionality requires paid API access. Because of this requirement, Reddit posting and monitoring features have not been tested.\
187
+ > As such, a list of what it does do will not be included in this readme for now.
188
+
189
+ ## Dashboard
190
+
191
+ ### The BigBrother dashboard provides a unified view of any pilot in your organization.
192
+ Selecting a user displays a set of analytical cards that summarize compliance, risk factors, and suspicious activity signals.
193
+
194
+ Tracked metrics include:
195
+
196
+ - **Blacklist Status**
197
+ - Whether the pilot or any linked character appears on the blacklist.
198
+
199
+
200
+ - **Audit Completion**
201
+ - Whether all characters and corporations associated with the user have been fully audited.
202
+
203
+
204
+ - **Corporation Stability**
205
+ - Detection of short or erratic corporation history (“corp hopping”) that may indicate instability or intent to evade tracking.
206
+
207
+
208
+ - **AWOX Activity**
209
+ - Identification of kills against friendly entities that may indicate internal security risks.
210
+
211
+
212
+ - **Account State**
213
+ - Whether individual characters are Omega or Alpha, useful for evaluating cyno capability, skill progression, and account investment.
214
+
215
+
216
+ - **Hostile Jump Clone Placement**
217
+ - Detection of jump clones located in regions or structures considered hostile.
218
+
219
+
220
+ - **Hostile Asset Placement**
221
+ - Identification of assets located in hostile regions, including breakdown by character and location.
222
+
223
+
224
+ - **Hostile Contacts**
225
+ - Checks for contacts marked as hostile, which may indicate ties to enemy groups.
226
+
227
+
228
+ - **Hostile Contracts**
229
+ - Detection of contracts sent to or received from hostile entities, helping highlight supply-chain leaks or suspicious ISK movement.
230
+
231
+
232
+ - **Suspicious Mails**
233
+ - Detection of in-game mail to or from entities that we consider hostile.
234
+
235
+
236
+ - **Suspicious Transactions**
237
+ - Checks for transactions, such as player donations and trades, that may be related to hostile entity activity.
238
+
239
+
240
+ - **Cyno Check**
241
+ - Provides a breakdown of what each character belonging to the user is capable of when it comes to cynos.
242
+ - > This includes owning and being able to fly potentially interesting ships
243
+
244
+
245
+ - **Skill Check**
246
+ A breakdown of potentially interesting skills
247
+
248
+
249
+ ## Corp Dashboard
250
+ > [!WARNING]
251
+ > Corp Dashboard has not yet received much love
252
+
253
+ - **Suspicious Transactions**
254
+ - Checks for transactions, such as corporation donations, that may be related to hostile entity activity.
255
+
256
+ - **Hostile Contracts**
257
+ - Detection of contracts sent to or received from hostile entities, helping highlight supply-chain leaks or suspicious ISK movement.
258
+
259
+ - **Hostile Asset Placement**
260
+ - Identification of assets located in hostile regions or structures.
261
+
262
+
263
+ ## Discord Notifications
264
+ ### All outbound Discord notifications are serialized through a dedicated task to ensure messages never overlap and always arrive in chronological order.
265
+ - Get instant notifications about any corp or user changes that have been listed above under their respective categories, each part of a user's discord notification is adjustable in the settings.
266
+
267
+ ## Ticket System
268
+ ### BigBrother can automatically generate tickets to notify leadership when pilots violate compliance or operational rules.
269
+
270
+ - **Triggers include**:
271
+ - Charlink Compliance Filters
272
+ - Detects when users have not added required applications or connections via aa-charlink.
273
+ - PAP Compliance
274
+ - Flags users who fall below configured PAP or activity thresholds.
275
+ - Character Removal From Auth
276
+ - Creates a ticket when a user removes a character from AllianceAuth, potentially hiding assets or behavior.
277
+ - AWOX Activity
278
+ - Generates a ticket when a pilot AWOXs a friendly character.
279
+ - Missing Corporation Audit (Director Role)
280
+ - Detects directors who have not enabled or completed corporation audits.
281
+ - AFK Detection
282
+ - Flags users who go AFK without registering an LOA in Auth.
283
+ - Missing Discord Link
284
+ - Generates a ticket when a user has not connected their Discord account to Auth.
285
+ ### Non Specific Ticket Configuration
286
+ - Ping Targets
287
+ - Choose which roles to notify when a ticket is created.
288
+ - Ticket Category
289
+ - Tickets are created as new channels inside a category, deleting the channel will close the ticket
290
+ - Exemptions
291
+ - Users can be marked as exempt from specific checks to avoid ticket spam where it is unnecessary.
292
+
293
+ ## Automated Discord Messages
294
+ - Configure an unlimited number of messages to be sent to up to five different discord webhooks, each with their own individual schedules.
295
+
296
+ ## Recurring stats
297
+ - Send stats to a webhook that covers interesting statistics from AA
298
+
299
+
300
+ ### Fix Duplicated Tasks error
301
+ Find the duplicate
302
+ ```sql
303
+ SELECT
304
+ minute,
305
+ hour,
306
+ day_of_week,
307
+ day_of_month,
308
+ month_of_year,
309
+ timezone,
310
+ COUNT(*) AS cnt
311
+ FROM django_celery_beat_crontabschedule
312
+ GROUP BY
313
+ minute,
314
+ hour,
315
+ day_of_week,
316
+ day_of_month,
317
+ month_of_year,
318
+ timezone
319
+ HAVING COUNT(*) > 1;
320
+ ```
321
+ Get the ID, replace the cron with the duplicate values
322
+ ```sql
323
+ SELECT
324
+ id,
325
+ minute,
326
+ hour,
327
+ day_of_week,
328
+ day_of_month,
329
+ month_of_year,
330
+ timezone
331
+ FROM django_celery_beat_crontabschedule
332
+ WHERE
333
+ minute = '0'
334
+ AND hour = '12'
335
+ AND day_of_week = '0'
336
+ AND day_of_month = '*'
337
+ AND month_of_year = '*'
338
+ AND timezone = 'UTC';
339
+ ```
340
+ Find out if any tasks are using the schedules, replace the numbers with the proper IDs
341
+ ```sql
342
+ SELECT id, name, crontab_id
343
+ FROM django_celery_beat_periodictask
344
+ WHERE crontab_id IN (5, 12);
345
+ ```
346
+ If some tasks are using both, reassign one of them
347
+ ```sql
348
+ UPDATE django_celery_beat_periodictask
349
+ SET crontab_id = 5
350
+ WHERE crontab_id = 12;
351
+ ```
352
+ Finally delete the duplicate
353
+ ```sql
354
+ DELETE FROM django_celery_beat_crontabschedule
355
+ WHERE id IN (12);
356
+ ```
@@ -0,0 +1,314 @@
1
+
2
+ > [!CAUTION]
3
+ > 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.
4
+
5
+ # BigBrother
6
+ 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.
7
+ > [!IMPORTANT]
8
+ > 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.
9
+
10
+ To correct the above, see instructions [here](#fix-duplicated-tasks-error)
11
+
12
+ > [!WARNING]
13
+ > This is a **beta** release. Please report issues through GitHub.
14
+
15
+ ## Index
16
+
17
+ - [BigBrother](#bigbrother)
18
+ - [Core Requirements](#core-requirements)
19
+ - [Install Instructions](#install-instructions)
20
+ - [Features](#features)
21
+ - [Dashboard](#dashboard)
22
+ - [Corp Dashboard](#corp-dashboard)
23
+ - [Discord Notifications](#discord-notifications)
24
+ - [Ticket System](#ticket-system)
25
+ - [Automated Discord Messages](#automated-discord-messages)
26
+ - [Recurring stats](#recurring-stats)
27
+
28
+ ## Core Requirements
29
+ ### The following AllianceAuth plugins are **_required_**:
30
+
31
+ ```md
32
+ allianceauth-afat >= 4.1.1
33
+ allianceauth-blacklist >= 0.1.1
34
+ allianceauth-corptools >= 2.12.0 (this app will adopt 3.0.0 as soon as version 3 is out of beta)
35
+ allianceauth-discordbot >= 4.1.0
36
+ aa-charlink >= 1.11.1
37
+ django-esi >= 8.2.0
38
+ ```
39
+
40
+ You do not have to use afat, but it does need to be installed.
41
+
42
+ ## Install Instructions
43
+ After making sure to add the above prerequisite applications.
44
+ ```bash
45
+ source /home/allianceserver/venv/auth/bin/activate && cd /home/allianceserver/myauth/
46
+ ```
47
+ ```bash
48
+ pip install aa_bb
49
+ ```
50
+ ```bash
51
+ vi myauth/settings/local.py
52
+ ```
53
+ add `aa_bb` to installed apps.
54
+ ```bash
55
+ python manage.py migrate && python manage.py collectstatic
56
+ ```
57
+ > [!IMPORTANT]
58
+ > It is recommended to use a threaded worker setup with memmon for this application. The following is an example
59
+
60
+ In your supervisor.conf
61
+ ```bash
62
+ [program:worker]
63
+ command=/home/allianceserver/venv/auth/bin/celery -A myauth worker -P threads -c 10 -l INFO -n %(program_name)s_%(process_num)02d
64
+ directory=/home/allianceserver/myauth
65
+ user=allianceserver
66
+ numprocs=2
67
+ process_name=%(program_name)s_%(process_num)02d
68
+ stdout_logfile=/home/allianceserver/myauth/log/worker.log
69
+ stderr_logfile=/home/allianceserver/myauth/log/worker.log
70
+ autostart=true
71
+ autorestart=true
72
+ startsecs=10
73
+ stopwaitsecs = 600
74
+ killasgroup=true
75
+ priority=998
76
+
77
+ [eventlistener:memmon]
78
+ command=/home/allianceserver/venv/auth/bin/memmon -p worker_00=512MB -p worker_01=512MB -p -p gunicorn=512MB
79
+ directory=/home/allianceserver/myauth
80
+ events=TICK_60
81
+ stdout_logfile=/home/allianceserver/myauth/log/memmon.log
82
+ stderr_logfile=/home/allianceserver/myauth/log/memmon.log
83
+ ```
84
+
85
+ > [!IMPORTANT]
86
+ > Failure to follow the next steps before running the initial tasks can cause an undesired result
87
+
88
+ In your AA Admin navigate to AA_BB
89
+ - Navigate to Big Brother Config
90
+ - Under **_Core Activation_**
91
+ - Make sure Warmer Is Active is enabled
92
+ - Enable any features you plan to use
93
+ - paps,
94
+ - loa,
95
+ - daily messages (messages that repeat every 24 hours),
96
+ - recurring stats,
97
+ - optional messages 1-5
98
+ - Set the number of days for an LOA
99
+ - Under Notifications
100
+ - Select if you would like to opt out of any notifications sent to the main Discord Webhook for user changes
101
+ - By default, the app will not send a notification when a new user adds their audit; however, this can be enabled.
102
+ - When enabled, it will treat non-existent data as old data and send a notification to discord on all the user's stats, treating them as if they are changes.
103
+ - Under Ping / Messaging Rules
104
+ - Enter in your desired role ID that you wish to be pinged and select the conditions under which those roles will be pinged.
105
+ - Select any @here conditions
106
+ - Select any @everyone conditions
107
+ - Under Webhooks
108
+ - >Dont forget you can send it to a thread by using `https://discordapp.com/api/webhooks/<url>/<url>?thread_id=<threadid>`\
109
+ The thread must be in the same channel that the webhook is configured to.
110
+ - **The main "Webhook" This is used to send notifications of user and corp changes to Discord**
111
+ - LOA Webhook
112
+ - Daily Webhook
113
+ - Recurring Stats
114
+ - Optional Message Webhooks 1-5
115
+ - Under Schedules
116
+ - Configure specific schedules for daily messages, optional messages, and recurring stats.
117
+ - Under User State and Membership
118
+ >[!WARNING] Failure to configure this will result in AA_BB not working
119
+ - Configure what states you consider "members" you will receive updates on these in discord
120
+ - Configure what states you consider "guest" these will be preloaded into cache, but not notified in discord.
121
+ - Configure what corporations you consider to be members, these are friendly entities.
122
+ - You do not need to configure a corporation if your corporation is inside an alliance that is set as member
123
+ - Configure what alliances you consider to be members.
124
+ - Configure ignore corporations, such as alt corps, that will be ignored when checks are run
125
+ - Under Hostile / Whitelist Rules
126
+ - Configure Alliances you consider hostile
127
+ - Coming Soon(tm) the ability to consider anyone who isn't a member /ignored as hostile
128
+ - Configure Corporations you consider hostile
129
+ - Configure Whitelisted Alliance and Corporations, these act the same as ignored and are... ignored
130
+ - Configure if you consider all null sec, minus what you ignore/whitelist/member, as hostile.
131
+ - Configure if all player structures are hostile, minus what you ignore/whitelist/member.
132
+ - Configure if all npc stations are hostile, minus what you ignore/whitelist/member.
133
+ - Configure Excluded systems and stations, these will be ignored and can be considered the same as "member" "ignored" or "whitelisted"
134
+
135
+ 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.
136
+
137
+ Okay, but now you want it to actually do the things, go to `Periodic Tasks` and **Enable** `BB run regular updates`
138
+ That's it. Let the timer click over, and it will create any missing tasks and start the process.
139
+
140
+ # Features
141
+
142
+ > [!WARNING]
143
+ > **_Reddit Support_**:\
144
+ > Reddit functionality requires paid API access. Because of this requirement, Reddit posting and monitoring features have not been tested.\
145
+ > As such, a list of what it does do will not be included in this readme for now.
146
+
147
+ ## Dashboard
148
+
149
+ ### The BigBrother dashboard provides a unified view of any pilot in your organization.
150
+ Selecting a user displays a set of analytical cards that summarize compliance, risk factors, and suspicious activity signals.
151
+
152
+ Tracked metrics include:
153
+
154
+ - **Blacklist Status**
155
+ - Whether the pilot or any linked character appears on the blacklist.
156
+
157
+
158
+ - **Audit Completion**
159
+ - Whether all characters and corporations associated with the user have been fully audited.
160
+
161
+
162
+ - **Corporation Stability**
163
+ - Detection of short or erratic corporation history (“corp hopping”) that may indicate instability or intent to evade tracking.
164
+
165
+
166
+ - **AWOX Activity**
167
+ - Identification of kills against friendly entities that may indicate internal security risks.
168
+
169
+
170
+ - **Account State**
171
+ - Whether individual characters are Omega or Alpha, useful for evaluating cyno capability, skill progression, and account investment.
172
+
173
+
174
+ - **Hostile Jump Clone Placement**
175
+ - Detection of jump clones located in regions or structures considered hostile.
176
+
177
+
178
+ - **Hostile Asset Placement**
179
+ - Identification of assets located in hostile regions, including breakdown by character and location.
180
+
181
+
182
+ - **Hostile Contacts**
183
+ - Checks for contacts marked as hostile, which may indicate ties to enemy groups.
184
+
185
+
186
+ - **Hostile Contracts**
187
+ - Detection of contracts sent to or received from hostile entities, helping highlight supply-chain leaks or suspicious ISK movement.
188
+
189
+
190
+ - **Suspicious Mails**
191
+ - Detection of in-game mail to or from entities that we consider hostile.
192
+
193
+
194
+ - **Suspicious Transactions**
195
+ - Checks for transactions, such as player donations and trades, that may be related to hostile entity activity.
196
+
197
+
198
+ - **Cyno Check**
199
+ - Provides a breakdown of what each character belonging to the user is capable of when it comes to cynos.
200
+ - > This includes owning and being able to fly potentially interesting ships
201
+
202
+
203
+ - **Skill Check**
204
+ A breakdown of potentially interesting skills
205
+
206
+
207
+ ## Corp Dashboard
208
+ > [!WARNING]
209
+ > Corp Dashboard has not yet received much love
210
+
211
+ - **Suspicious Transactions**
212
+ - Checks for transactions, such as corporation donations, that may be related to hostile entity activity.
213
+
214
+ - **Hostile Contracts**
215
+ - Detection of contracts sent to or received from hostile entities, helping highlight supply-chain leaks or suspicious ISK movement.
216
+
217
+ - **Hostile Asset Placement**
218
+ - Identification of assets located in hostile regions or structures.
219
+
220
+
221
+ ## Discord Notifications
222
+ ### All outbound Discord notifications are serialized through a dedicated task to ensure messages never overlap and always arrive in chronological order.
223
+ - Get instant notifications about any corp or user changes that have been listed above under their respective categories, each part of a user's discord notification is adjustable in the settings.
224
+
225
+ ## Ticket System
226
+ ### BigBrother can automatically generate tickets to notify leadership when pilots violate compliance or operational rules.
227
+
228
+ - **Triggers include**:
229
+ - Charlink Compliance Filters
230
+ - Detects when users have not added required applications or connections via aa-charlink.
231
+ - PAP Compliance
232
+ - Flags users who fall below configured PAP or activity thresholds.
233
+ - Character Removal From Auth
234
+ - Creates a ticket when a user removes a character from AllianceAuth, potentially hiding assets or behavior.
235
+ - AWOX Activity
236
+ - Generates a ticket when a pilot AWOXs a friendly character.
237
+ - Missing Corporation Audit (Director Role)
238
+ - Detects directors who have not enabled or completed corporation audits.
239
+ - AFK Detection
240
+ - Flags users who go AFK without registering an LOA in Auth.
241
+ - Missing Discord Link
242
+ - Generates a ticket when a user has not connected their Discord account to Auth.
243
+ ### Non Specific Ticket Configuration
244
+ - Ping Targets
245
+ - Choose which roles to notify when a ticket is created.
246
+ - Ticket Category
247
+ - Tickets are created as new channels inside a category, deleting the channel will close the ticket
248
+ - Exemptions
249
+ - Users can be marked as exempt from specific checks to avoid ticket spam where it is unnecessary.
250
+
251
+ ## Automated Discord Messages
252
+ - Configure an unlimited number of messages to be sent to up to five different discord webhooks, each with their own individual schedules.
253
+
254
+ ## Recurring stats
255
+ - Send stats to a webhook that covers interesting statistics from AA
256
+
257
+
258
+ ### Fix Duplicated Tasks error
259
+ Find the duplicate
260
+ ```sql
261
+ SELECT
262
+ minute,
263
+ hour,
264
+ day_of_week,
265
+ day_of_month,
266
+ month_of_year,
267
+ timezone,
268
+ COUNT(*) AS cnt
269
+ FROM django_celery_beat_crontabschedule
270
+ GROUP BY
271
+ minute,
272
+ hour,
273
+ day_of_week,
274
+ day_of_month,
275
+ month_of_year,
276
+ timezone
277
+ HAVING COUNT(*) > 1;
278
+ ```
279
+ Get the ID, replace the cron with the duplicate values
280
+ ```sql
281
+ SELECT
282
+ id,
283
+ minute,
284
+ hour,
285
+ day_of_week,
286
+ day_of_month,
287
+ month_of_year,
288
+ timezone
289
+ FROM django_celery_beat_crontabschedule
290
+ WHERE
291
+ minute = '0'
292
+ AND hour = '12'
293
+ AND day_of_week = '0'
294
+ AND day_of_month = '*'
295
+ AND month_of_year = '*'
296
+ AND timezone = 'UTC';
297
+ ```
298
+ Find out if any tasks are using the schedules, replace the numbers with the proper IDs
299
+ ```sql
300
+ SELECT id, name, crontab_id
301
+ FROM django_celery_beat_periodictask
302
+ WHERE crontab_id IN (5, 12);
303
+ ```
304
+ If some tasks are using both, reassign one of them
305
+ ```sql
306
+ UPDATE django_celery_beat_periodictask
307
+ SET crontab_id = 5
308
+ WHERE crontab_id = 12;
309
+ ```
310
+ Finally delete the duplicate
311
+ ```sql
312
+ DELETE FROM django_celery_beat_crontabschedule
313
+ WHERE id IN (12);
314
+ ```