From a3de13f0555d30cd7791cba343038135917788d7 Mon Sep 17 00:00:00 2001 From: Adarnof Date: Sat, 31 Oct 2015 17:35:00 -0400 Subject: [PATCH] cleaned up settings descriptions incorporated alliance/corp check into main character change restored alliance text to forms returned optional alliance checking to periodic tasks (pray for me) deleted accidental inclusion of PID file this is gonna tickle. Signed-off-by: Adarnof --- alliance_auth/settings.py.example | 33 +++++++------ celerybeat.pid | 1 - celerytask/tasks.py | 81 ++++++++++++++++++++++--------- eveonline/forms.py | 2 +- eveonline/views.py | 2 +- 5 files changed, 76 insertions(+), 43 deletions(-) delete mode 100644 celerybeat.pid diff --git a/alliance_auth/settings.py.example b/alliance_auth/settings.py.example index 9d26f81b..9c7a6a2c 100755 --- a/alliance_auth/settings.py.example +++ b/alliance_auth/settings.py.example @@ -20,6 +20,7 @@ BASE_DIR = os.path.dirname(os.path.dirname(__file__)) # See https://docs.djangoproject.com/en/1.6/howto/deployment/checklist/ # SECURITY WARNING: keep the secret key used in production secret! +# Generate a new key here: http://www.miniwebtool.com/django-secret-key-generator/ SECRET_KEY = os.environ.get('AA_SECRET_KEY', '5xvh4e0x&@-$6(kj%4^80pdo1n5v-!mtx(e(1tw@kn-1le*ts@') # SECURITY WARNING: don't run with debug turned on in production! @@ -166,7 +167,7 @@ IS_CORP = 'False' == os.environ.get('AA_IS_CORP', 'True') # DOMAIN - The alliance auth domain_url # EMAIL_HOST - SMTP Server URL # EMAIL_PORT - SMTP Server PORT -# EMAIL_HOST_USER - Email Username +# EMAIL_HOST_USER - Email Username (for gmail, the part before @gmail.com) # EMAIL_HOST_PASSWORD - Email Password # EMAIL_USE_TLS - Set to use TLS encryption ################# @@ -203,11 +204,13 @@ ENABLE_AUTH_TEAMSPEAK3 = 'True' == os.environ.get('AA_ENABLE_AUTH_TEAMSPEAK3', ' ##################### # Blue service Setup ##################### +# BLUE_STANDING - The default lowest standings setting to consider blue # ENABLE_BLUE_FORUM - Enable forum support in the auth for blues # ENABLE_BLUE_JABBER - Enable jabber support in the auth for blues # ENABLE_BLUE_MUMBLE - Enable mumble support in the auth for blues # ENABLE_BLUE_IPBOARD - Enable IPBoard forum support in the auth for blues ##################### +BLUE_STANDING = float(os.environ.get('AA_BLUE_STANDING', '5.0')) ENABLE_BLUE_FORUM = 'True' == os.environ.get('AA_ENABLE_BLUE_FORUM', 'False') ENABLE_BLUE_JABBER = 'True' == os.environ.get('AA_ENABLE_BLUE_JABBER', 'False') ENABLE_BLUE_MUMBLE = 'True' == os.environ.get('AA_ENABLE_BLUE_MUMBLE', 'True') @@ -217,26 +220,23 @@ ENABLE_BLUE_TEAMSPEAK3 = 'True' == os.environ.get('AA_ENABLE_BLUE_TEAMSPEAK3', ' ######################### # Corp Configuration ######################### +# If running in alliance mode, the following should be for the executor corp# # CORP_ID - Set this to your corp ID (get this from https://zkillboard.com/corporation/#######) # CORP_NAME - Set this to your Corporation Name # CORP_API_ID - Set this to the api id for the corp API key # CORP_API_VCODE - Set this to the api vcode for the corp API key -# BLUE_STANDING - The default lowest standings setting to consider blue ######################## CORP_ID = os.environ.get('AA_CORP_ID', '') CORP_NAME = os.environ.get('AA_CORP_NAME', '') CORP_API_ID = os.environ.get('AA_CORP_API_ID', '') CORP_API_VCODE = os.environ.get('AA_CORP_API_VCODE', '') -BLUE_STANDING = float(os.environ.get('AA_BLUE_STANDING', '5.0')) + ######################### # Alliance Configuration ######################### -# ALLIANCE_ID - Set this to your corp ID (get this from https://zkillboard.com/corporation/#######) -# ALLIANCE_NAME - Set this to your Corporation Name -# ALLIANCE_API_ID - Set this to the api id for the corp API key -# ALLIANCE_API_VCODE - Set this to the api vcode for the corp API key -# BLUE_STANDING - The default lowest standings setting to consider blue +# ALLIANCE_ID - Set this to your Alliance ID (get this from https://zkillboard.com/alliance/#######) +# ALLIANCE_NAME - Set this to your Alliance Name ######################## ALLIANCE_ID = os.environ.get('AA_ALLIANCE_ID', '') ALLIANCE_NAME = os.environ.get('AA_ALLIANCE_NAME', '') @@ -258,7 +258,7 @@ JACK_KNIFE_URL = os.environ.get('AA_JACK_KNIFE_URL', 'http://ridetheclown.com/ev # IPBOARD_APIKEY - Api key to interact with ipboard # IPBOARD_APIMODULE - Module for alliance auth *leave alone* ##################### -FORUM_URL = os.environ.get('AA_FORUM_URL', "") +FORUM_URL = os.environ.get('AA_FORUM_URL', "http://someurl.com") IPBOARD_ENDPOINT = os.environ.get('AA_IPBOARD_ENDPOINT', 'someaddress.com/interface/board/index.php') IPBOARD_APIKEY = os.environ.get('AA_IPBOARD_APIKEY', 'somekeyhere') IPBOARD_APIMODULE = 'aa' @@ -269,15 +269,16 @@ IPBOARD_APIMODULE = 'aa' # JABBER_URL - Jabber address url # JABBER_PORT - Jabber service portal # JABBER_SERVER - Jabber server url -# OPENFIRE_ADDRESS - Address of the openfire admin console -# OPENFIRE_SECRET_KEY - Openfire userservice secret key +# OPENFIRE_ADDRESS - Address of the openfire admin console including port +# Please use http with 9090 or https with 9091 +# OPENFIRE_SECRET_KEY - Openfire REST API secret key # BROADCAST_USER - Broadcast user JID # BROADCAST_USER_PASSWORD - Broadcast user password ###################### -JABBER_URL = os.environ.get('AA_JABBER_URL', "") +JABBER_URL = os.environ.get('AA_JABBER_URL', "someurl.com") JABBER_PORT = int(os.environ.get('AA_JABBER_PORT', '5223')) -JABBER_SERVER = os.environ.get('AA_JABBER_SERVER', "") -OPENFIRE_ADDRESS = os.environ.get('AA_OPENFIRE_ADDRESS', "") +JABBER_SERVER = os.environ.get('AA_JABBER_SERVER', "someurl.com") +OPENFIRE_ADDRESS = os.environ.get('AA_OPENFIRE_ADDRESS', "http://someurl.com:9090") OPENFIRE_SECRET_KEY = os.environ.get('AA_OPENFIRE_SECRET_KEY', "somekey") BROADCAST_USER = os.environ.get('AA_BROADCAST_USER', "broadcast@") + JABBER_URL BROADCAST_USER_PASSWORD = os.environ.get('AA_BROADCAST_USER_PASSWORD', "somepassword") @@ -288,7 +289,7 @@ BROADCAST_USER_PASSWORD = os.environ.get('AA_BROADCAST_USER_PASSWORD', "somepass # MUMBLE_URL - Mumble server url # MUMBLE_SERVER_ID - Mumble server id ###################################### -MUMBLE_URL = os.environ.get('AA_MUMBLE_URL', "") +MUMBLE_URL = os.environ.get('AA_MUMBLE_URL', "someurl.com") MUMBLE_SERVER_ID = int(os.environ.get('AA_MUMBLE_SERVER_ID', '1')) ###################################### @@ -302,7 +303,7 @@ MUMBLE_SERVER_ID = int(os.environ.get('AA_MUMBLE_SERVER_ID', '1')) # TEAMSPEAK3_AUTHED_GROUP_ID - Default authed group id # TEAMSPEAK3_PUBLIC_URL - teamspeak3 public url used for link creation ###################################### -TEAMSPEAK3_SERVER_IP = os.environ.get('AA_TEAMSPEAK3_SERVER_IP', '') +TEAMSPEAK3_SERVER_IP = os.environ.get('AA_TEAMSPEAK3_SERVER_IP', '127.0.0.1') TEAMSPEAK3_SERVER_PORT = int(os.environ.get('AA_TEAMSPEAK3_SERVER_PORT', '10011')) TEAMSPEAK3_SERVERQUERY_USER = os.environ.get('AA_TEAMSPEAK3_SERVERQUERY_USER', 'serveradmin') TEAMSPEAK3_SERVERQUERY_PASSWORD = os.environ.get('AA_TEAMSPEAK3_SERVERQUERY_PASSWORD', 'passwordhere') diff --git a/celerybeat.pid b/celerybeat.pid deleted file mode 100644 index 7160aec0..00000000 --- a/celerybeat.pid +++ /dev/null @@ -1 +0,0 @@ -28392 diff --git a/celerytask/tasks.py b/celerytask/tasks.py index 38b9ae09..b2b38e36 100755 --- a/celerytask/tasks.py +++ b/celerytask/tasks.py @@ -225,7 +225,8 @@ def run_api_refresh(): character = EveManager.get_character_by_id(authserviceinfo.main_char_id) corp = EveManager.get_corporation_info_by_id(character.corporation_id) main_corp_id = EveManager.get_charater_corporation_id_by_id(authserviceinfo.main_char_id) - if main_corp_id == settings.CORP_ID: + main_alliance_id = EveManager.get_charater_alliance_id_by_id(authserviceinfo.main_char_id) + if (settings.IS_CORP and main_corp_id == settings.CORP_ID) or (not settings.IS_CORP and main_alliance_id == settings.ALLIANCE_ID): if not check_if_user_has_permission(user, "member"): #transition from blue to member if check_if_user_has_permission(user, "blue_member"): @@ -237,29 +238,38 @@ def run_api_refresh(): elif corp is not None: if corp.is_blue is not True: if check_if_user_has_permission(user, "member"): + #transition from member to nobody disable_alliance_member(user, authserviceinfo.main_char_id) elif check_if_user_has_permission(user, "blue_member"): + #transition from blue to nobody disable_blue_member(user) else: + #stay nobody, make sure no services deactivate_services(user) else: + change_status = False if check_if_user_has_permission(user, "member"): - remove_member_permission(user, "member") - remove_user_from_group(user, settings.DEFAULT_AUTH_GROUP) + #remove auth member to prepare for member to blue transition + disable_alliance_member(user, authserviceinfo.main_char_id) + change_status = True if not check_if_user_has_permission(user, "blue_member"): + #perform member to blue transition add_member_permission(user, "blue_member") add_user_to_group(user, settings.DEFAULT_BLUE_GROUP) - - #Fix mumble username ticker - MumbleManager.delete_user(authserviceinfo.mumble_username) - remove_all_syncgroups_for_service(user, "mumble") - AuthServicesInfoManager.update_user_mumble_info("", "", request.user) - - #make new user (how generous) - result = MumbleManager.create_blue_user(character.corporation_ticker, character.character_name) - AuthServicesInfoManager.update_user_mumble_info(result[0], result[1], user) - update_mumble_groups(request.user) + change_status = True + + #if user has mumble account, rename it with proper ticker + if (not authserviceinfo.mumble_username == "") and change_status: + #Fix mumble username ticker + MumbleManager.delete_user(authserviceinfo.mumble_username) + remove_all_syncgroups_for_service(user, "mumble") + AuthServicesInfoManager.update_user_mumble_info("", "", request.user) + #make new user (how generous) + result = MumbleManager.create_blue_user(character.corporation_ticker, character.character_name) + AuthServicesInfoManager.update_user_mumble_info(result[0], result[1], user) + update_mumble_groups(request.user) else: + # disable accounts with missing corp data if check_if_user_has_permission(user, "member"): disable_alliance_member(user, authserviceinfo.main_char_id) elif check_if_user_has_permission(user, "blue_member"): @@ -268,7 +278,7 @@ def run_api_refresh(): deactivate_services(user) else: - # nuke it + # disable accounts with invalid keys if check_if_user_has_permission(user, "member"): disable_alliance_member(user, authserviceinfo.main_char_id) elif check_if_user_has_permission(user, "blue_member"): @@ -286,12 +296,27 @@ def run_corp_update(): # I am not proud of this block of code if EveApiManager.check_if_api_server_online(): - # Create the corp - corpinfo = EveApiManager.get_corporation_information(settings.CORP_ID) - if not EveManager.check_if_corporation_exists_by_id(corpinfo['id']): - EveManager.create_corporation_info(corpinfo['id'], corpinfo['name'], corpinfo['ticker'], - corpinfo['members']['current'], False, None) - + if settings.IS_CORP: + # Create the corp + corpinfo = EveApiManager.get_corporation_information(settings.CORP_ID) + if not EveManager.check_if_corporation_exists_by_id(corpinfo['id']): + EveManager.create_corporation_info(corpinfo['id'], corpinfo['name'], corpinfo['ticker'], + corpinfo['members']['current'], False, None) + else: + # Updated alliance info + alliance_info = EveApiManager.get_alliance_information(settings.ALLIANCE_ID) + + # Populate alliance info + if not EveManager.check_if_alliance_exists_by_id(settings.ALLIANCE_ID): + EveManager.create_alliance_info(settings.ALLIANCE_ID, alliance_info['name'], alliance_info['ticker'], + alliance_info['executor_id'], alliance_info['member_count'], False) + alliance = EveManager.get_alliance_info_by_id(settings.ALLIANCE_ID) + # Create the corps in the alliance + for alliance_corp in alliance_info['member_corps']: + corpinfo = EveApiManager.get_corporation_information(alliance_corp) + if not EveManager.check_if_corporation_exists_by_id(corpinfo['id']): + EveManager.create_corporation_info(corpinfo['id'], corpinfo['name'], corpinfo['ticker'], + corpinfo['members']['current'], False, alliance) #determine what level of standings to check #refer to https://github.com/eve-val/evelink/blob/master/evelink/parsing/contact_list.py#L43 @@ -333,7 +358,10 @@ def run_corp_update(): # Update all allinace info's for all_alliance_info in EveManager.get_all_alliance_info(): all_alliance_api_info = EveApiManager.get_alliance_information(all_alliance_info.alliance_id) - if standing_level in corp_standings: + if (not settings.IS_CORP and all_alliance_info.alliance_id == settings.ALLIANCE_ID): + EveManager.update_alliance_info(all_alliance_api_info['id'], all_alliance_api_info['executor_id'], + all_alliance_api_info['member_count'], False) + elif standing_level in corp_standings: if int(all_alliance_info.alliance_id) in corp_standings[standing_level]: if int(corp_standings[standing_level][int(all_alliance_info.alliance_id)][ 'standing']) >= settings.BLUE_STANDING: @@ -362,7 +390,9 @@ def run_corp_update(): if alliance is not None and all_corp_info.alliance is not None: - if int(alliance.alliance_id) in corp_standings[standing_level]: + if (not settings.IS_CORP) and (all_corp_info.alliance.alliance_id == settings.ALLIANCE_ID): + EveManager.update_corporation_info(corpinfo['id'], corpinfo['members']['current'], alliance, False) + elif int(alliance.alliance_id) in corp_standings[standing_level]: if int(corp_standings[standing_level][int(alliance.alliance_id)][ 'standing']) >= settings.BLUE_STANDING: EveManager.update_corporation_info(corpinfo['id'], corpinfo['members']['current'], alliance, @@ -383,15 +413,18 @@ def run_corp_update(): else: EveManager.update_corporation_info(corpinfo['id'], corpinfo['members']['current'], None, False) - # Nuke the none believers + # Remove irrelevent corp and alliance models # Check the corps for all_corp_info in EveManager.get_all_corporation_info(): - if all_corp_info.corporation_id != settings.CORP_ID: + if (settings.IS_CORP and all_corp_info.corporation_id != settings.CORP_ID) or (not settings.IS_CORP and all_corp_info.alliance_id != settings.ALLIANCE_ID): if not all_corp_info.is_blue: all_corp_info.delete() # Check the alliances for all_alliance_info in EveManager.get_all_alliance_info(): + if (not settings.IS_CORP and all_alliance_info.alliance_id != settings.ALLIANCE_ID): + if all_alliance_info.is_blue is not True: + all_alliance_info.delete() if all_alliance_info.is_blue is not True: all_alliance_info.delete() diff --git a/eveonline/forms.py b/eveonline/forms.py index c0b6c17e..a4a9a43d 100644 --- a/eveonline/forms.py +++ b/eveonline/forms.py @@ -7,7 +7,7 @@ from eveonline.managers import EveManager class UpdateKeyForm(forms.Form): api_id = forms.CharField(max_length=254, required=True, label="Key ID") api_key = forms.CharField(max_length=254, required=True, label="Verification Code") - is_blue = forms.BooleanField(label="Blue to corp", required=False) + is_blue = forms.BooleanField(label="Blue to corp/alliance", required=False) def clean(self): if EveManager.check_if_api_key_pair_exist(self.cleaned_data['api_id']): diff --git a/eveonline/views.py b/eveonline/views.py index 3f98e3b6..d5b4ab58 100755 --- a/eveonline/views.py +++ b/eveonline/views.py @@ -104,7 +104,7 @@ def main_character_change(request, char_id): character_info = EveManager.get_character_by_id(char_id) corporation_info = EveManager.get_corporation_info_by_id(character_info.corporation_id) - if EveManager.get_charater_corporation_id_by_id(char_id) == settings.CORP_ID: + if (settings.IS_CORP and EveManager.get_charater_corporation_id_by_id(char_id) == settings.CORP_ID) or (not settings.IS_CORP and EveManager.get_charater_alliance_id_by_id(char_id) == settings.ALLIANCE_ID): add_member_permission(request.user, 'member') add_user_to_group(request.user, settings.DEFAULT_AUTH_GROUP) add_user_to_group(request.user,