Added the auto removal of invalid keys and user api's deactivate services

This commit is contained in:
Raynaldo Rivera 2014-10-15 20:35:25 -07:00
parent 304c1d5109
commit c4801c8b42
4 changed files with 81 additions and 7 deletions

View File

@ -33,7 +33,7 @@ BROKER_URL = 'amqp://guest:guest@localhost:5672/'
CELERYBEAT_SCHEDULER = "djcelery.schedulers.DatabaseScheduler" CELERYBEAT_SCHEDULER = "djcelery.schedulers.DatabaseScheduler"
# EMAIL SETTINGS # EMAIL SETTINGS
# By default setup for gmail # By default uses the python smtpd server
DOMAIN = 'https://the99eve.com' DOMAIN = 'https://the99eve.com'
EMAIL_HOST = 'smtp.gmail.com' EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 587 EMAIL_PORT = 587

View File

@ -1,5 +1,5 @@
from models import SyncGroupCache from models import SyncGroupCache
from celery import task from django.conf import settings
from celery.task import periodic_task from celery.task import periodic_task
from celery.task.schedules import crontab from celery.task.schedules import crontab
from django.contrib.auth.models import User 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.mumble_manager import MumbleManager
from services.managers.forum_manager import ForumManager from services.managers.forum_manager import ForumManager
from authentication.models import AuthServicesInfo 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): def update_jabber_groups(user):
syncgroups = SyncGroupCache.objects.filter(user=user) syncgroups = SyncGroupCache.objects.filter(user=user)
@ -115,3 +116,33 @@ def run_databaseUpdate():
syncgroups = SyncGroupCache.objects.filter(user=user) syncgroups = SyncGroupCache.objects.filter(user=user)
add_to_databases(user, groups, syncgroups) add_to_databases(user, groups, syncgroups)
remove_from_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)

View File

@ -40,6 +40,19 @@ class EveManager:
chars.result[char]['alliance']['name'], chars.result[char]['alliance']['name'],
user, api_id) 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 @staticmethod
def create_api_keypair(api_id, api_key, user_id): def create_api_keypair(api_id, api_key, user_id):
if not EveApiKeyPair.objects.filter(api_id=api_id).exists(): if not EveApiKeyPair.objects.filter(api_id=api_id).exists():
@ -50,9 +63,9 @@ class EveManager:
api_pair.save() api_pair.save()
@staticmethod @staticmethod
def get_api_key_pairs(user_id): def get_api_key_pairs(user):
if EveApiKeyPair.objects.filter(user=user_id).exists(): if EveApiKeyPair.objects.filter(user=user).exists():
return EveApiKeyPair.objects.filter(user=user_id) return EveApiKeyPair.objects.filter(user=user)
@staticmethod @staticmethod
def delete_api_key_pair(api_id, user_id): def delete_api_key_pair(api_id, user_id):
@ -83,6 +96,11 @@ class EveManager:
return None 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 @staticmethod
def get_character_by_id(char_id): def get_character_by_id(char_id):
if EveCharacter.objects.filter(character_id=char_id).exists(): if EveCharacter.objects.filter(character_id=char_id).exists():

View File

@ -45,4 +45,29 @@ class EveApiManager():
except evelink.api.APIError as error: except evelink.api.APIError as error:
print 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 return False