From 9905fb1e64341822366b6ab1d414d2baa230af0a Mon Sep 17 00:00:00 2001 From: Karsten Hopp Date: Feb 05 2019 15:21:25 +0000 Subject: [PATCH 1/2] Fix calculation of days until API key expires and short the API key in the emails API key reminder should not send the API key in clear text. Shorten displayed key to 5 chars. Calculation of remaining days until a API key expires was wrong as it took into account only the days part of the date and ignored month or year. fixes #4230 fixes #4231 Signed-off-by: Karsten Hopp --- diff --git a/files/api_key_expire_mail.py b/files/api_key_expire_mail.py index d7bf8d8..c399af1 100755 --- a/files/api_key_expire_mail.py +++ b/files/api_key_expire_mail.py @@ -41,7 +41,7 @@ def main(check=False, debug=False): username = user.fullname or user.username user_email = user.default_email api_key = token.id - days_left = token.expiration.day - datetime.utcnow().day + days_left = (token.expiration - datetime.utcnow()).days subject = 'Pagure API key expiration date is near!' if token.project: text = '''Hi %s, @@ -50,14 +50,14 @@ will expire in %s day(s). Please get a new key for non-interrupted service. Thanks, -Your Pagure Admin. ''' % (username, api_key, token.project.fullname, days_left) +Your Pagure Admin. ''' % (username, api_key[:5], token.project.fullname, days_left) else: text = '''Hi %s, Your Pagure API key %s will expire in %s day(s). Please get a new key for non-interrupted service. Thanks, -Your Pagure Admin. ''' % (username, api_key, days_left) +Your Pagure Admin. ''' % (username, api_key[:5], days_left) if not check: msg = pagure.lib.notify.send_email(text, subject, user_email) else: From 6ce2d731af1b28b6ee1df8e477d903f7f1ec99f1 Mon Sep 17 00:00:00 2001 From: Karsten Hopp Date: Feb 05 2019 15:22:56 +0000 Subject: [PATCH 2/2] black fixes Signed-off-by: Karsten Hopp --- diff --git a/files/api_key_expire_mail.py b/files/api_key_expire_mail.py index c399af1..d4b0408 100755 --- a/files/api_key_expire_mail.py +++ b/files/api_key_expire_mail.py @@ -27,8 +27,13 @@ def main(check=False, debug=False): current_time = datetime.utcnow() day_diff_for_mail = [10, 5, 1] - email_dates = [email_day.date() for email_day in \ - [current_time + timedelta(days=i) for i in day_diff_for_mail]] + email_dates = [ + email_day.date() + for email_day in [ + current_time + timedelta(days=i) + for i in day_diff_for_mail + ] + ] session = pagure.lib.model_base.create_session(_config['DB_URL']) tokens = session.query(model.Token).all() @@ -50,19 +55,27 @@ will expire in %s day(s). Please get a new key for non-interrupted service. Thanks, -Your Pagure Admin. ''' % (username, api_key[:5], token.project.fullname, days_left) +Your Pagure Admin. ''' % ( + username, + api_key[:5], + token.project.fullname, + days_left + ) else: text = '''Hi %s, Your Pagure API key %s will expire in %s day(s). Please get a new key for non-interrupted service. Thanks, -Your Pagure Admin. ''' % (username, api_key[:5], days_left) +Your Pagure Admin. ''' % ( + username, + api_key[:5], + days_left) if not check: msg = pagure.lib.notify.send_email(text, subject, user_email) else: print('Sending email to %s (%s) about key: %s' % ( - username, user_emailk, token.id)) + username, user_email, token.id)) if debug: print('Sent mail to %s' % username) diff --git a/pagure/api/project.py b/pagure/api/project.py index 2ba4f91..2f3b159 100644 --- a/pagure/api/project.py +++ b/pagure/api/project.py @@ -2021,24 +2021,26 @@ def api_get_project_connector(repo, username=None, namespace=None): authorized_users = [project.user.username] authorized_users.extend( - [user.user for user in project.access_users['admin']]) + [user.user for user in project.access_users["admin"]] + ) if flask.g.fas_user.user not in authorized_users: raise pagure.exceptions.APIError( - 401, error_code=APIERROR.ENOTHIGHENOUGH) + 401, error_code=APIERROR.ENOTHIGHENOUGH + ) user_obj = pagure.lib.query.search_user( - flask.g.session, username=flask.g.fas_user.user) + flask.g.session, username=flask.g.fas_user.user + ) user_project_tokens = [ - token for token in user_obj.tokens if token.project_id == project.id] + token for token in user_obj.tokens if token.project_id == project.id + ] connector = { - 'hook_token': project.hook_token, - 'api_tokens': [ - {'description': t.description, - 'id': t.id, - 'expired': t.expired - } for t in user_project_tokens - ] + "hook_token": project.hook_token, + "api_tokens": [ + {"description": t.description, "id": t.id, "expired": t.expired} + for t in user_project_tokens + ], } return flask.jsonify({"connector": connector, "status": "ok"})