mirror of
https://gitlab.com/allianceauth/allianceauth.git
synced 2025-07-09 20:40:17 +02:00
Added the auto removal of invalid keys and user api's deactivate services
This commit is contained in:
parent
304c1d5109
commit
c4801c8b42
@ -33,7 +33,7 @@ BROKER_URL = 'amqp://guest:guest@localhost:5672/'
|
||||
CELERYBEAT_SCHEDULER = "djcelery.schedulers.DatabaseScheduler"
|
||||
|
||||
# EMAIL SETTINGS
|
||||
# By default setup for gmail
|
||||
# By default uses the python smtpd server
|
||||
DOMAIN = 'https://the99eve.com'
|
||||
EMAIL_HOST = 'smtp.gmail.com'
|
||||
EMAIL_PORT = 587
|
||||
|
@ -1,5 +1,5 @@
|
||||
from models import SyncGroupCache
|
||||
from celery import task
|
||||
from django.conf import settings
|
||||
from celery.task import periodic_task
|
||||
from celery.task.schedules import crontab
|
||||
from django.contrib.auth.models import User
|
||||
@ -7,8 +7,9 @@ from services.managers.jabber_manager import JabberManager
|
||||
from services.managers.mumble_manager import MumbleManager
|
||||
from services.managers.forum_manager import ForumManager
|
||||
from authentication.models import AuthServicesInfo
|
||||
from django.utils.timezone import timedelta
|
||||
|
||||
from eveonline.managers import EveManager
|
||||
from services.managers.eve_api_manager import EveApiManager
|
||||
from util.common_task import deactivate_services
|
||||
|
||||
def update_jabber_groups(user):
|
||||
syncgroups = SyncGroupCache.objects.filter(user=user)
|
||||
@ -115,3 +116,33 @@ def run_databaseUpdate():
|
||||
syncgroups = SyncGroupCache.objects.filter(user=user)
|
||||
add_to_databases(user, groups, syncgroups)
|
||||
remove_from_databases(user, groups, syncgroups)
|
||||
|
||||
|
||||
@periodic_task(run_every=crontab(day="*/1"))
|
||||
def run_api_refresh():
|
||||
users = User.objects.all()
|
||||
for user in users:
|
||||
api_key_pairs = EveManager.get_api_key_pairs(user.id)
|
||||
if api_key_pairs:
|
||||
valid_key = False
|
||||
authserviceinfo = AuthServicesInfo.objects.get(user=user)
|
||||
for api_key_pair in api_key_pairs:
|
||||
if EveApiManager.api_key_is_valid(api_key_pair.api_id, api_key_pair.api_key):
|
||||
# Update characters
|
||||
characters = EveApiManager.get_characters_from_api(api_key_pair.api_id, api_key_pair.api_key)
|
||||
EveManager.update_characters_from_list(characters)
|
||||
valid_key = True
|
||||
else:
|
||||
EveManager.delete_characters_by_api_id(api_key_pair.api_id, api_key_pair.api_key)
|
||||
EveManager.delete_api_key_pair(api_key_pair.api_id, api_key_pair.api_key)
|
||||
|
||||
if valid_key:
|
||||
# Check our main character
|
||||
main_alliance_id = EveManager.get_charater_alliance_id_by_id(authserviceinfo.main_char_id)
|
||||
if main_alliance_id == settings.ALLIANCE_ID:
|
||||
pass
|
||||
else:
|
||||
deactivate_services(user)
|
||||
else:
|
||||
#nuke it
|
||||
deactivate_services(user)
|
@ -40,6 +40,19 @@ class EveManager:
|
||||
chars.result[char]['alliance']['name'],
|
||||
user, api_id)
|
||||
|
||||
@staticmethod
|
||||
def update_characters_from_list(chars):
|
||||
for char in chars.result:
|
||||
if EveManager.check_if_character_exist(chars.result[char]['name']):
|
||||
eve_char = EveManager.get_character_by_character_name(chars.result[char]['name'])
|
||||
eve_char.corporation_id = chars.result[char]['corp']['id']
|
||||
eve_char.corporation_name = chars.result[char]['corp']['name']
|
||||
eve_char.corporation_ticker = EveApiManager.get_corporation_ticker_from_id(chars.result[char]['corp']['id'])
|
||||
eve_char.alliance_id = chars.result[char]['alliance']['id']
|
||||
eve_char.alliance_name = chars.result[char]['alliance']['name']
|
||||
eve_char.save()
|
||||
|
||||
|
||||
@staticmethod
|
||||
def create_api_keypair(api_id, api_key, user_id):
|
||||
if not EveApiKeyPair.objects.filter(api_id=api_id).exists():
|
||||
@ -50,9 +63,9 @@ class EveManager:
|
||||
api_pair.save()
|
||||
|
||||
@staticmethod
|
||||
def get_api_key_pairs(user_id):
|
||||
if EveApiKeyPair.objects.filter(user=user_id).exists():
|
||||
return EveApiKeyPair.objects.filter(user=user_id)
|
||||
def get_api_key_pairs(user):
|
||||
if EveApiKeyPair.objects.filter(user=user).exists():
|
||||
return EveApiKeyPair.objects.filter(user=user)
|
||||
|
||||
@staticmethod
|
||||
def delete_api_key_pair(api_id, user_id):
|
||||
@ -83,6 +96,11 @@ class EveManager:
|
||||
|
||||
return None
|
||||
|
||||
@staticmethod
|
||||
def get_character_by_character_name(char_name):
|
||||
if EveCharacter.objects.filter(character_name=char_name).exists():
|
||||
return EveCharacter.objects.get(character_name=char_name)
|
||||
|
||||
@staticmethod
|
||||
def get_character_by_id(char_id):
|
||||
if EveCharacter.objects.filter(character_id=char_id).exists():
|
||||
|
@ -45,4 +45,29 @@ class EveApiManager():
|
||||
except evelink.api.APIError as error:
|
||||
print error
|
||||
|
||||
return False
|
||||
|
||||
@staticmethod
|
||||
def get_api_info(api_id, api_key):
|
||||
try:
|
||||
api = evelink.api.API(api_key=(api_id, api_key))
|
||||
account = evelink.account.Account(api=api)
|
||||
info = account.key_info()
|
||||
return info
|
||||
|
||||
except evelink.api.APIError as error:
|
||||
print error
|
||||
|
||||
return False
|
||||
|
||||
@staticmethod
|
||||
def api_key_is_valid(api_id, api_key):
|
||||
try:
|
||||
api = evelink.api.API(api_key=(api_id, api_key))
|
||||
account = evelink.account.Account(api=api)
|
||||
info = account.status()
|
||||
return True
|
||||
except evelink.api.APIError as error:
|
||||
return False
|
||||
|
||||
return False
|
Loading…
x
Reference in New Issue
Block a user